mirror of
https://github.com/nix-community/home-manager
synced 2024-11-23 11:39:46 +01: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 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
|
# Check FQDN, long, and short hostnames; long first to preserve
|
||||||
# pre-existing behaviour in case both happen to be defined.
|
# 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
|
if [[ "$(nix eval "$flake#homeConfigurations" --apply "x: x ? \"$n\"")" == "true" ]]; then
|
||||||
name="$n"
|
name="$n"
|
||||||
if [[ -v VERBOSE ]]; then
|
if [[ -v VERBOSE ]]; then
|
||||||
|
|
Loading…
Reference in a new issue