forked from Fediversity/Fediversity
Valentin Gagarin
3ae51fa545
- move the impure single-node deploy helper here it's not used anywhere else - reuse the pins from the website this needs to be cleaned up later - don't copy the config to the server it's impure (can't even build that without jumping through hoops), and useless when building via SSH Reviewed-on: Fediversity/Fediversity#1
47 lines
1.4 KiB
Nix
47 lines
1.4 KiB
Nix
{ sources ? import ../website/npins
|
|
, system ? builtins.currentSystem
|
|
, pkgs ? import sources.nixpkgs {
|
|
inherit system;
|
|
config = { };
|
|
overlays = [ ];
|
|
}
|
|
, lib ? import "${sources.nixpkgs}/lib"
|
|
}:
|
|
let
|
|
# TODO: don't hard code target hosts; wire all of it up with NixOps4
|
|
host = "vm02117.procolix.com";
|
|
deploy = pkgs.writeShellApplication {
|
|
name = "deploy-webserver";
|
|
text = ''
|
|
# HACK: decouple system evaluation from shell evaluation
|
|
# the structured way for using this hack is encoded in https://github.com/fricklerhandwerk/lazy-drv
|
|
result="$(nix-build ${toString ./.} -A machine --no-out-link --eval-store auto --store ssh-ng://${host})"
|
|
# shellcheck disable=SC2087
|
|
ssh ${host} << EOF
|
|
sudo nix-env -p /nix/var/nix/profiles/system --set "$result"
|
|
sudo "$result"/bin/switch-to-configuration switch
|
|
EOF
|
|
'';
|
|
};
|
|
nixos-configuration = config:
|
|
import "${pkgs.path}/nixos/lib/eval-config.nix" {
|
|
modules = [
|
|
config
|
|
];
|
|
system = null;
|
|
};
|
|
in
|
|
rec {
|
|
nixos = nixos-configuration ./configuration.nix;
|
|
machine = nixos.config.system.build.toplevel;
|
|
shell = pkgs.mkShellNoCC {
|
|
packages = with pkgs; [
|
|
deploy
|
|
];
|
|
env = {
|
|
# TODO: reusing other pins for now; wire up the whole repo to use the same dependencies
|
|
NPINS_DIRECTORY = toString ../website/npins;
|
|
};
|
|
};
|
|
}
|