forked from Fediversity/Fediversity
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;
|
||
|
};
|
||
|
};
|
||
|
}
|