nix-config/pkgs/deployment.nix

42 lines
1.2 KiB
Nix
Raw Normal View History

{ self, pkgs, systems }:
2022-05-14 20:47:17 +02:00
let
installScript = (system:
2022-12-30 18:29:13 +01:00
let ip = "10.13.37.${toString (system.config.deployment-TLMS.systemNumber + 100)}";
2022-06-11 01:19:12 +02:00
in
(pkgs.writeScriptBin "deploy" ''
#!${pkgs.runtimeShell}
ssh root@${ip} "ps cax | grep \"nixos-rebuild\" > /dev/null"
if [ $? -eq 0 ]
then
echo "\e[1;31m [!] nixos-rebuild is already running on ${ip}"
exit 1
else
nix copy --to ssh://root@${ip} ${self}
ssh root@${ip} -- nixos-rebuild switch --option narinfo-cache-negative-ttl 0 --flake ${self} -L
fi
''));
2022-05-14 20:47:17 +02:00
2022-06-11 01:19:12 +02:00
installScripts = pkgs.lib.mapAttrs'
(name: system:
pkgs.lib.attrsets.nameValuePair ("deploy-" + name) (installScript system))
systems;
2022-05-14 20:47:17 +02:00
deployAllExecutablePathsConcatted =
pkgs.lib.strings.concatMapStringsSep " " (path: "${path}/bin/deploy")
2022-06-11 01:19:12 +02:00
(builtins.attrValues installScripts);
2022-05-14 20:47:17 +02:00
deployAllScript = (name:
2022-06-11 01:19:12 +02:00
pkgs.writeScriptBin name (
''
#!${pkgs.runtimeShell} -ex
${pkgs.parallel}/bin/parallel --will-cite -j10 ::: ${deployAllExecutablePathsConcatted} || echo "Some deployment failed"
''
));
2022-05-14 20:47:17 +02:00
2022-06-11 01:19:12 +02:00
in
{
deploy-all = deployAllScript "deploy-all";
nuke-all = deployAllScript "nuke-all";
} // installScripts