#!/bin/sh set -eo pipefail HOST=$(hostname) DIR=$(realpath $(dirname $0)) OUT=$(mktemp -du) ROOT="$DIR/roots/$HOST.nix" echo Active tree: $DIR ## 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" $ARGV } ## Build and output build path for debugging function debug { build $ROOT echo "Build path: $D-18" exit 0 } ## Build and switch to the new configuration (requires root) function switch { build $ROOT 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*