Skip to content

Commit b4fbd23

Browse files
authored
Merge pull request #60 from pinpox/reuse-run-in-taskfile
refactor(taskfile): reuse run attributes
2 parents fae9fb7 + aa65b91 commit b4fbd23

2 files changed

Lines changed: 17 additions & 27 deletions

File tree

checks/multiuser/default.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pkgs.testers.runNixOSTest {
3838
fr"""
3939
sudo -nu {user} -- ${lib.getExe nodes.target01.lollypops.deployment.ssh.login} whoami
4040
""",
41-
timeout=10,
41+
timeout=60,
4242
)
4343
t.assertEqual(output.strip(), user)
4444
'';

packages/taskfile.nix

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ let
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
))
@@ -53,12 +53,9 @@ let
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;
@@ -93,24 +90,19 @@ let
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

Comments
 (0)