From 2cafddd78dc127ec3e66255808c5044893b261d3 Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Sat, 18 Apr 2020 23:05:18 +0200 Subject: [PATCH 1/2] add target.extraOptions --- lib/default.nix | 1 + pkgs/krops/default.nix | 1 + pkgs/populate/default.nix | 1 + 3 files changed, 3 insertions(+) diff --git a/lib/default.nix b/lib/default.nix index 9fdde0b..912a1c9 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -52,6 +52,7 @@ let { port = default "22" /* "ssh"? */ (elemAt' parse 5); path = default "/var/src" /* no default? */ (elemAt' parse 6); sudo = false; + extraOptions = []; } else s; shell = let diff --git a/pkgs/krops/default.nix b/pkgs/krops/default.nix index 07c7395..4760287 100644 --- a/pkgs/krops/default.nix +++ b/pkgs/krops/default.nix @@ -23,6 +23,7 @@ in (lib.optionals (target.user != "") ["-l" target.user]) "-p" target.port "-t" + target.extraOptions target.host (if target.sudo then "sudo ${command}" else command)])} ''; diff --git a/pkgs/populate/default.nix b/pkgs/populate/default.nix index 78bf3c8..36a97b3 100644 --- a/pkgs/populate/default.nix +++ b/pkgs/populate/default.nix @@ -194,6 +194,7 @@ let "-o" "ControlPersist=no" "-p" target.port "-T" + target.extraOptions ]); in From 8a8b2cf86197d4550c3bf2bee5f57ac1036c5ceb Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Sat, 18 Apr 2020 23:36:53 +0200 Subject: [PATCH 2/2] support default target attrs for attrSets --- lib/default.nix | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 912a1c9..5829250 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -43,17 +43,22 @@ let { lib.elem target.host [origin.host "localhost"]; mkTarget = s: let - default = defVal: val: if val != null then val else defVal; parse = lib.match "(([^@]*)@)?(([^:/]+))?(:([^/]+))?(/.*)?" s; elemAt' = xs: i: if lib.length xs > i then lib.elemAt xs i else null; - in if lib.isString s then { - user = default (lib.getEnv "LOGNAME") (elemAt' parse 1); - host = default (lib.maybeEnv "HOSTNAME" lib.getHostName) (elemAt' parse 3); - port = default "22" /* "ssh"? */ (elemAt' parse 5); - path = default "/var/src" /* no default? */ (elemAt' parse 6); + filterNull = lib.filterAttrs (n: v: v != null); + in { + user = lib.getEnv "LOGNAME"; + host = lib.maybeEnv "HOSTNAME" lib.getHostName; + port = "22"; + path = "/var/src"; sudo = false; extraOptions = []; - } else s; + } // (if lib.isString s then filterNull { + user = elemAt' parse 1; + host = elemAt' parse 3; + port = elemAt' parse 5; + path = elemAt' parse 6; + } else s); shell = let isSafeChar = lib.testString "[-+./0-9:=A-Z_a-z]";