2222
2323 # Create parent directory if it does not exist
2424 ''
25- {{.REMOTE_COMMAND }} {{.REMOTE_SSH_OPTS}} {{.REMOTE_USER}}@{{.REMOTE_HOST}} 'umask 076; sudo -u ${ user } mkdir -p "$(dirname ${ lib . escapeShellArg secretConfig . path } )"'
25+ {{.REMOTE_RUN }} mkdir -m u=rwX,g=rX,o= -p "$(dirname ${ lib . escapeShellArg secretConfig . path } )"
2626 ''
2727 # Copy file
2828 ''
29- ${ secretConfig . cmd } | {{.REMOTE_COMMAND }} {{.REMOTE_SSH_OPTS}} {{.REMOTE_USER}}@{{.REMOTE_HOST}} "umask 077; cat > ${ lib . escapeShellArg secretConfig . path } "
29+ ${ secretConfig . cmd } | {{.REMOTE_RUN }} install -m u=rwX,go= /dev/stdin ${ lib . escapeShellArg secretConfig . path }
3030 ''
3131 # # Set group and owner
3232 ''
33- {{.REMOTE_COMMAND }} {{.REMOTE_SSH_OPTS}} {{.REMOTE_USER}}@{{.REMOTE_HOST}} " chown ${ secretConfig . owner } :${ secretConfig . group-name } $ {lib . escapeShellArg secretConfig . path } "
33+ {{.REMOTE_RUN }} chown ${ secretConfig . owner } :${ secretConfig . group-name } "$(dirname $ {lib . escapeShellArg secretConfig . path } )" ${ lib . escapeShellArg secretConfig . path }
3434 ''
3535 ] ) userconfig . lollypops . secrets . files
3636 ) )
5353 ] ;
5454
5555 vars = with hostConfig . config . lollypops ; {
56- REMOTE_USER = ''{{default "${ deployment . ssh . user } " .LP_REMOTE_USER}}'' ;
5756 REMOTE_HOST = ''{{default "${ deployment . ssh . host } " .LP_REMOTE_HOST}}'' ;
58- REMOTE_COMMAND = ''{{default "${ deployment . ssh . command } " .LP_REMOTE_COMMAND}}'' ;
57+ REMOTE_RUN = ''{{default "${ lib . getExe deployment . ssh . run } " .LP_REMOTE_COMMAND}}'' ;
5958 REMOTE_SSH_OPTS = ''{{default "${ lib . concatStringsSep " " deployment . ssh . opts } " .LP_REMOTE_SSH_OPTS}}'' ;
60- REMOTE_SUDO_COMMAND = ''{{default "${ deployment . sudo . command } " .LP_REMOTE_SUDO_COMMAND}}'' ;
61- REMOTE_SUDO_OPTS = ''{{default "${ lib . concatStringsSep " " deployment . sudo . opts } " .LP_REMOTE_SUDO_OPTS}}'' ;
6259 REBUILD_ACTION = ''{{default "switch" .REBUILD_ACTION}}'' ;
6360 REMOTE_CONFIG_DIR = deployment . config-dir ;
6461 LOCAL_FLAKE_SOURCE = configFlake ;
9390
9491 # Create parent directory if it does not exist
9592 ''
96- {{.REMOTE_COMMAND}} {{.REMOTE_SSH_OPTS}} {{.REMOTE_USER}}@{{.REMOTE_HOST}} \
97- 'umask 076; ${ lib . optionalString useSudo "{{.REMOTE_SUDO_COMMAND}} {{.REMOTE_SUDO_OPTS}} " } mkdir -p "$(dirname ${ path } )"'
93+ {{.REMOTE_RUN}} mkdir -m u=rwX,g=rX,o= -p "$(dirname ${ path } )"
9894 ''
9995
10096 # Copy file
10197 ''
10298 secret="$(${ x . cmd } )"
103- test $? -eq 0 || (echo "Failed to obtain secret" && exit $?)
104- echo "$secret" | {{.REMOTE_COMMAND}} {{.REMOTE_SSH_OPTS}} {{.REMOTE_USER}}@{{.REMOTE_HOST}} \
105- "${ lib . optionalString useSudo "{{.REMOTE_SUDO_COMMAND}} {{.REMOTE_SUDO_OPTS}}" } \
106- install -m 700 /dev/stdin ${ path } "
99+ test $? -eq 0 || (echo "Failed to obtain secret" >&2; exit 1)
100+ echo "$secret" | {{.REMOTE_RUN}} install -m u=rwX,go= /dev/stdin ${ path }
107101 ''
108102
109103 # Set group and owner
110104 ''
111- {{.REMOTE_COMMAND}} {{.REMOTE_SSH_OPTS}} {{.REMOTE_USER}}@{{.REMOTE_HOST}} \
112- "${ lib . optionalString useSudo "{{.REMOTE_SUDO_COMMAND}} {{.REMOTE_SUDO_OPTS}}" } \
113- chown ${ x . owner } :${ x . group-name } ${ path } "
105+ {{.REMOTE_RUN}} chown ${ x . owner } :${ x . group-name } ${ path }
114106 ''
115107 ]
116108 ) ( builtins . attrValues config . lollypops . secrets . files )
@@ -152,14 +144,14 @@ let
152144 ''
153145 ${ lib . optionalString useSudo ''NIX_SSHOPTS="{{.REMOTE_SSH_OPTS}}"'' } nixos-rebuild {{.REBUILD_ACTION}} \
154146 --flake '{{.LOCAL_FLAKE_SOURCE}}#{{.HOSTNAME}}' \
155- --target-host {{.REMOTE_USER}}@{{. REMOTE_HOST}} \
147+ --target-host {{.REMOTE_HOST}} \
156148 ${ lib . optionalString useSudo "--use-remote-sudo" }
157149 ''
158150 else
159151 ''
160- {{.REMOTE_COMMAND}} {{.REMOTE_SSH_OPTS}} {{.REMOTE_USER}}@{{.REMOTE_HOST }} \
161- ' ${ lib . optionalString useSudo "{{.REMOTE_SUDO_COMMAND}} {{.REMOTE_SUDO_OPTS}}" } nixos-rebuild {{.REBUILD_ACTION}} \
162- --flake "$(readlink -f {{.REMOTE_CONFIG_DIR}}/flake)#{{.HOSTNAME}}"'
152+ {{.REMOTE_RUN }} \
153+ nixos-rebuild {{.REBUILD_ACTION}} \
154+ --flake "$(readlink -f {{.REMOTE_CONFIG_DIR}}/flake)#{{.HOSTNAME}}"
163155 ''
164156 )
165157 ] ;
@@ -175,26 +167,24 @@ let
175167 if hostConfig . config . lollypops . deployment . deploy-method == "archive" then
176168 ''
177169 NIX_SSHOPTS="{{.REMOTE_SSH_OPTS}}" nix flake archive \
178- --to ssh://{{.REMOTE_USER}}@{{. REMOTE_HOST}} \
170+ --to ssh://{{.REMOTE_HOST}} \
179171 --option builders-use-substitutes true \
180172 {{.LOCAL_FLAKE_SOURCE}}
181173 ''
182174 else
183175 ''
184176 NIX_SSHOPTS="{{.REMOTE_SSH_OPTS}}" nix copy \
185- --to ssh://{{.REMOTE_USER}}@{{. REMOTE_HOST}} \
177+ --to ssh://{{.REMOTE_HOST}} \
186178 --substitute-on-destination \
187179 --option builders-use-substitutes true \
188180 {{.LOCAL_FLAKE_SOURCE}}
189181 ''
190182 )
191183 ''
192- {{.REMOTE_COMMAND}} {{.REMOTE_SSH_OPTS}} {{.REMOTE_USER}}@{{.REMOTE_HOST}} \
193- "${ lib . optionalString useSudo "{{.REMOTE_SUDO_COMMAND}} {{.REMOTE_SUDO_OPTS}}" } mkdir -p {{.REMOTE_CONFIG_DIR}}"
184+ {{.REMOTE_RUN}} mkdir -p {{.REMOTE_CONFIG_DIR}}
194185 ''
195186 ''
196- {{.REMOTE_COMMAND}} {{.REMOTE_SSH_OPTS}} {{.REMOTE_USER}}@{{.REMOTE_HOST}} \
197- "${ lib . optionalString useSudo "{{.REMOTE_SUDO_COMMAND}} {{.REMOTE_SUDO_OPTS}}" } ln -sfn {{.LOCAL_FLAKE_SOURCE}} {{.REMOTE_CONFIG_DIR}}/flake"
187+ {{.REMOTE_RUN}} ln -sfn {{.LOCAL_FLAKE_SOURCE}} {{.REMOTE_CONFIG_DIR}}/flake
198188 ''
199189 ] ;
200190 } ;
0 commit comments