My personal project and infrastructure archive
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nomicon/infra/libkookie/build

44 lines
938 B

#!/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"*