aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie
diff options
context:
space:
mode:
authorMx Kookie <kookie@spacekookie.de>2020-12-21 06:11:41 +0100
committerMx Kookie <kookie@spacekookie.de>2020-12-21 06:13:24 +0100
commit53e4aeed9ab362fb286bd814307773dbaf08b16e (patch)
treea4e3564ec2fba95eded2be5235fff7b335bb74ae /infra/libkookie
parent1c32b3da4c26d00b83b2dc274a7f445e2a01bf2e (diff)
libkookie: adding root building mechanism
Diffstat (limited to 'infra/libkookie')
-rwxr-xr-x[-rw-r--r--]infra/libkookie/build43
-rw-r--r--infra/libkookie/default.nix6
2 files changed, 49 insertions, 0 deletions
diff --git a/infra/libkookie/build b/infra/libkookie/build
index e69de29bb2d1..e79ae239967a 100644..100755
--- a/infra/libkookie/build
+++ b/infra/libkookie/build
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+set -eo pipefail
+
+HOST=$(hostname)
+DIR=$(realpath "$(dirname "$0")")
+OUT=$(mktemp -du)
+ROOT="$DIR/roots/$HOST.nix"
+
+echo Active tree: "$ROOT"
+
+## Build the libkookie tree
+function build {
+ NIXPKGS_ALLOW_UNFREE=1 \
+ nix build -f '<nixpkgs/nixos>' system \
+ -I nixos-config="$ROOT" \
+ -I "nixpkgs=$DIR" \
+ -I "nixpkgs-overlays=$DIR/overlays" \
+ -I "home-manager=$DIR/home-manager" \
+ --out-link "$OUT" "$@"
+}
+
+## Build and output build path for debugging
+function debug {
+ build
+ echo "Build path: $OUT"
+ exit 0
+}
+
+## Build and switch to the new configuration (requires root)
+function switch {
+ build
+ nix-env -p /nix/var/nix/profiles/system --set "$OUT"
+ "$OUT"/bin/switch-to-configuration switch
+}
+
+case "$1" in
+ -s* | --switch*) shift; switch ;;
+ -d* | --debug*) shift; debug ;;
+ *) build ;;
+esac
+
+rm -rf "$OUT"*
diff --git a/infra/libkookie/default.nix b/infra/libkookie/default.nix
new file mode 100644
index 000000000000..bfe795bf6f2b
--- /dev/null
+++ b/infra/libkookie/default.nix
@@ -0,0 +1,6 @@
+{ overlays ? [], ... } @ args:
+
+import ./nixpkgs (args // {
+ overlays = [ (import ./overlays) ] ++ overlays;
+})
+