Browse Source

isLocalTarget: use "localhost" as default

This fixes an issue when trying to deploy using sudo from systems that
don't provide means to determine the real host name.
master v1.24.1
tv 8 months ago
parent
commit
c2fa48550f
  1. 17
      lib/default.nix

17
lib/default.nix

@ -28,13 +28,20 @@ let {
# This function's return value can be used as pkgs.populate input.
source: sanitize (eval source).config.source;
getHostName = let
maybeHostName = default: let
# We're parsing /etc/hostname here because reading
# /proc/sys/kernel/hostname yields ""
y = lib.filter lib.types.label.check (lib.splitString "\n" (lib.readFile /etc/hostname));
path = "/etc/hostname";
lines = lib.splitString "\n" (lib.readFile path);
hostNames = lib.filter lib.types.label.check lines;
in
if lib.length y != 1 then throw "malformed /etc/hostname" else
lib.elemAt y 0;
if lib.pathExists path then
if lib.length hostNames == 1 then
lib.head hostNames
else
lib.trace "malformed ${path}" default
else
default;
firstWord = s:
lib.head (lib.match "^([^[:space:]]*).*" s);
@ -51,7 +58,7 @@ let {
filterNull = lib.filterAttrs (n: v: v != null);
in {
user = lib.getEnv "LOGNAME";
host = lib.maybeEnv "HOSTNAME" lib.getHostName;
host = lib.maybeEnv "HOSTNAME" (lib.maybeHostName "localhost");
port = "22";
path = "/var/src";
sudo = false;

Loading…
Cancel
Save