blob: 5c22e0758e68f5a4a0a257e17f63ce1ab0127610 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#!/usr/bin/env bash
# Eventually convert to haskell, see:
# - https://github.com/awakesecurity/nix-deploy/blob/master/src/Main.hs
# - http://www.haskellforall.com/2018/08/nixos-in-production.html
prefix=${PWD/$CODEROOT}
if [[ "$prefix" == "" ]]
then
target="$1"
else
target="$prefix.$1"
fi
what=$(realpath "${CODEROOT:?}/_/nix/$target")
# hack: get the domain from the systemd service. there does not seem to be a way
# to get it from nix-instantiate. (or, maybe i should put this in bild --plan?)
where=$(rg --only-matching --replace '$2' --regexp '(domainname ")(.*)(")' \
"$what/etc/systemd/system/domainname.service")
nix copy --to ssh://"$USER"@"$where" "$what"
ssh "$USER"@"$where" sudo nix-env --profile /nix/var/nix/profiles/system --set "$what"
switch_cmd=(
systemd-run
-E LOCALE_ARCHIVE
--collect
--no-ask-password
--pipe
--quiet
--service-type=exec
--unit=push-switch-to-configuration
--wait
"$what/bin/switch-to-configuration"
"switch"
)
# shellcheck disable=SC2029
ssh "$USER"@"$where" sudo "${switch_cmd[@]}"
echo "${GRN}good: push: $target${NC}"
|