summaryrefslogtreecommitdiffstats
path: root/lass/krops.nix
diff options
context:
space:
mode:
authorlassulus <git@lassul.us>2023-09-07 12:26:31 +0200
committerlassulus <git@lassul.us>2023-09-07 13:50:26 +0200
commitf55307fd73af235069744dd5155fda0bc73fe613 (patch)
treef048d7750a50e48493505a08784c96d07d291f89 /lass/krops.nix
parent85ae348bf3f53125c8281669a32bf007dc0063be (diff)
lass: migrate away
Diffstat (limited to 'lass/krops.nix')
-rw-r--r--lass/krops.nix145
1 files changed, 0 insertions, 145 deletions
diff --git a/lass/krops.nix b/lass/krops.nix
deleted file mode 100644
index 407df3bc..00000000
--- a/lass/krops.nix
+++ /dev/null
@@ -1,145 +0,0 @@
-{ name }: let
- inherit (import ../krebs/krops.nix { inherit name; })
- krebs-source
- lib
- pkgs
- ;
-
- source = { test }: lib.evalSource ([
- (krebs-source { test = test; })
- {
- nixos-config.symlink = "stockholm/lass/1systems/${name}/physical.nix";
- nixpkgs = lib.mkForce (if test then {
- derivation = let
- rev = (lib.importJSON ../krebs/nixpkgs-unstable.json).rev;
- sha256 = (lib.importJSON ../krebs/nixpkgs-unstable.json).sha256;
- in ''
- with import (builtins.fetchTarball {
- url = "https://github.com/nixos/nixpkgs/archive/${rev}.tar.gz";
- sha256 = "${sha256}";
- }) {};
- pkgs.fetchFromGitHub {
- owner = "nixos";
- repo = "nixpkgs";
- rev = "${rev}";
- sha256 = "${sha256}";
- }
- '';
- } else {
- git = {
- ref = (lib.importJSON ../krebs/nixpkgs-unstable.json).rev;
- url = https://github.com/NixOS/nixpkgs;
- shallow = true;
- };
- });
- secrets = if test then {
- file = toString ./2configs/tests/dummy-secrets;
- } else {
- pass = {
- dir = "${lib.getEnv "HOME"}/sync/pwstore";
- name = "hosts/${name}";
- };
- };
- stockholm.file = lib.mkForce {
- path = toString ../.;
- useChecksum = true;
- };
- }
- (if lib.pathExists (./. + "/1systems/${name}/source.nix") then
- import (./. + "/1systems/${name}/source.nix") { inherit lib pkgs test; }
- else
- {}
- )
- ]);
-
-in {
-
- deploy = { target ? "root@${name}/var/src", offline ? false, command ? "switch" }: pkgs.krops.writeCommand "deploy" {
- command = targetPath: ''
-
- set -xfu
-
- outDir=$(mktemp -d)
- trap "rm -rf $outDir;" INT TERM EXIT
-
- build=$(command -v nom-build || echo "nix-build")
-
- $build \
- -I "${targetPath}" \
- '<nixpkgs/nixos>' -A config.system.build.toplevel \
- -o "$outDir/out" \
- ${lib.optionalString offline "--option substitute false"} \
- # -vvvvv --show-trace
-
- nix-env -p /nix/var/nix/profiles/system --set "$outDir/out"
-
- "$outDir/out/bin/switch-to-configuration" ${command}
- '';
- source = source { test = false; };
- allocateTTY = true;
- backup = false;
- inherit target;
- };
-
- deployWithFlake = { target ? "root@${name}/var/src", offline ? false }: pkgs.krops.writeCommand "deploy" {
- source = {
- inherit (source { test = false; }) stockholm secrets;
- };
- command = targetPath: ''
- '';
- allocateTTY = true;
- inherit target;
- };
-
- # usage: $(nix-build --no-out-link --argstr name HOSTNAME --argstr target PATH -A populate)
- populate = { target, force ? false }: pkgs.populate {
- inherit force;
- source = source { test = false; };
- target = lib.mkTarget target;
- };
-
- # usage: $(nix-build --no-out-link --argstr name HOSTNAME --argstr target PATH -A test)
- test = { target }: pkgs.krops.writeTest "${name}-test" {
- force = true;
- inherit target;
- source = source { test = true; };
- };
-
- deploy-with-diff = { target ? "root@${name}/var/src" }: pkgs.krops.writeCommand "${name}-deploy" {
- command = targetPath: ''
- set -xu
- deployScript=$(mktemp)
- cat << EOF > "$deployScript"
- #! /usr/bin/env nix-shell
- #! nix-shell -p nix-diff proot rsync -i bash
- set -xfu
-
- oldPath=\$(echo "${targetPath}" | sed 's/-new$//')
- oldSystemDrv=\$(nix show-derivation /run/current-system | jq -r 'keys[0]')
- newSystemDrv=\$(proot -b /var/src-new:/var/src nix-instantiate -I /var/src '<nixpkgs/nixos>' -A config.system.build.toplevel)
-
- (
- diff -rq -x '.git' "\$oldPath" "${targetPath}"
- nix-diff --color always --line-oriented "\$oldSystemDrv" "\$newSystemDrv"
- ) | less -R
- echo 'continue? [(Y)es]/(n)o'
- read yn
- case \$yn in
- [Nn]* ) exit;;
- esac
- rsync -ra --delete /var/src-new/ /var/src/
- nixos-rebuild -I /var/src switch
- EOF
-
- chmod +x "$deployScript"
- echo "$deployScript"
- cat "$deployScript"
- exec "$deployScript"
- rm "$deployScript"
- '';
- target = "${target}-new";
- source = source { test = false; };
- force = true;
- allocateTTY = true;
- };
-}