Fediversity/paste

72 lines
2.2 KiB
Text

declare drv_path
host="root@fedi203.abundos.eu"
sshOpts=(
-o BatchMode=yes
-o StrictHostKeyChecking=no
)
command=(nix-instantiate --expr '
let
sources = import ./npins;
configuration = {
imports = [
./deployment/check/common/targetNode.nix
"${sources.nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
"${sources.disko}/module.nix"
];
disabledModules = [ "virtualisation/qemu-vm.nix" ];
config = {
nix.nixPath = lib.mapAttrsToList (k: v: k + "=" + v) sources;
networking = {
nameservers = [
"95.215.185.6"
"95.215.185.7"
"2a00:51c0::5fd7:b906"
"2a00:51c0::5fd7:b907"
];
interfaces.eth0.ipv4.addresses = [
{
address = "95.215.187.203";
prefixLength = 24;
}
];
interfaces.eth0.ipv6.addresses = [
{
address = "2a00:51c0:13:1305::203";
prefixLength = 64;
}
];
defaultGateway = {
address = "95.215.187.1";
interface = "eth0";
};
defaultGateway6 = {
address = "2a00:51c0:13:1305::1";
interface = "eth0";
};
};
};
};
eval = import "${sources.nixpkgs}/nixos/lib/eval-config.nix" {
system = builtins.currentSystem;
specialArgs = {
inherit sources;
};
modules = [ configuration ];
};
os = {
inherit (eval) pkgs config options;
system = eval.config.system.build.toplevel;
inherit (eval.config.system.build) vm vmWithBootLoader;
};
in
{
drv_path = os.config.system.build.toplevel.drvPath;
out_path = os.config.system.build.toplevel;
}
')
"${command[@]}" -A out_path
json="$("${command[@]}" --eval --strict --json)"
eval "export $(echo $json | jq -r 'to_entries | map("\(.key)=\(.value)") | @sh')"
outPath=$(nix-store --realize "$drv_path")
NIX_SSHOPTS="${sshOpts[*]}" nix-copy-closure --to "$host" "$outPath" --gzip --use-substitutes
ssh "${sshOpts[@]}" "$host" "nix-env --profile /nix/var/nix/profiles/system --set $outPath; $outPath/bin/switch-to-configuration switch"