mirror of
https://github.com/dump-dvb/nix-config.git
synced 2024-06-14 11:56:57 +02:00
42 lines
1.2 KiB
Nix
42 lines
1.2 KiB
Nix
{ self, pkgs, systems }:
|
|
let
|
|
|
|
installScript = (system:
|
|
let ip = "10.13.37.${toString (system.config.dump-dvb.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
|