mirror of
https://github.com/nix-community/home-manager
synced 2024-11-10 07:04:17 +00:00
home-manager: ignore hostname -f lookup errors
`hostname -f` could fail depending on the resolver. Discard any stderr and test for the exit status before using the value for flake attribute lookup. I was unable to repro the exact bad exit status in #5665. With - nscd disabled, - nsswitch.conf pointing to 'files', - hostname entry removed from /etc/hosts `hostname -f` from inetutils-2.5 fell back to showing just the nodename from `uname(2)`. Injecting an empty string into the `(struct utsname).nodename` field of `uname(2)` using strace still exited with empty output and 0 exit-status. Fixes #5665
This commit is contained in:
parent
792757f643
commit
89670e27e1
1 changed files with 11 additions and 1 deletions
|
@ -198,9 +198,19 @@ function setFlakeAttribute() {
|
|||
;;
|
||||
*)
|
||||
local name="$USER"
|
||||
|
||||
local hostnameArray=()
|
||||
# FQDN lookup can fail depending on the resolver.
|
||||
local fqdn
|
||||
fqdn="$(hostname -f 2> /dev/null)"
|
||||
if [[ $? -eq 0 ]]; then
|
||||
hostnameArray+=( "$USER@$fqdn" )
|
||||
fi
|
||||
# Check FQDN, long, and short hostnames; long first to preserve
|
||||
# pre-existing behaviour in case both happen to be defined.
|
||||
for n in "$USER@$(hostname -f)" "$USER@$(hostname)" "$USER@$(hostname -s)"; do
|
||||
hostnameArray+=( "$USER@$(hostname)" "$USER@$(hostname -s)" )
|
||||
|
||||
for n in "${hostnameArray[@]}"; do
|
||||
if [[ "$(nix eval "$flake#homeConfigurations" --apply "x: x ? \"$n\"")" == "true" ]]; then
|
||||
name="$n"
|
||||
if [[ -v VERBOSE ]]; then
|
||||
|
|
Loading…
Reference in a new issue