nix-config/pkgs/deployment.nix

42 lines
1.2 KiB
Nix

{ self, pkgs, systems }:
let
installScript = (system:
let ip = "10.13.37.${toString (system.config.deployment-TLMS.systemNumber + 100)}";
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
''));
installScripts = pkgs.lib.mapAttrs'
(name: system:
pkgs.lib.attrsets.nameValuePair ("deploy-" + name) (installScript system))
systems;
deployAllExecutablePathsConcatted =
pkgs.lib.strings.concatMapStringsSep " " (path: "${path}/bin/deploy")
(builtins.attrValues installScripts);
deployAllScript = (name:
pkgs.writeScriptBin name (
''
#!${pkgs.runtimeShell} -ex
${pkgs.parallel}/bin/parallel --will-cite -j10 ::: ${deployAllExecutablePathsConcatted} || echo "Some deployment failed"
''
));
in
{
deploy-all = deployAllScript "deploy-all";
nuke-all = deployAllScript "nuke-all";
} // installScripts