#!/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 '' system \ -I nixos-config="$ROOT" \ -I "nixpkgs=$DIR/nixpkgs" \ -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"*