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.
71 lines
1.7 KiB
71 lines
1.7 KiB
#!/bin/sh
|
|
|
|
set -eo pipefail
|
|
|
|
if [ -z "$HOST" ]
|
|
then
|
|
HOST=$(hostname)
|
|
fi
|
|
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/nixpkgs" \
|
|
-I "nixpkgs-overlays=$DIR/overlays" \
|
|
-I "home-manager=$DIR/home-manager" \
|
|
-I "modules=$DIR/modules" \
|
|
-I "configuration=$DIR/configuration" \
|
|
--out-link "$OUT" "$@"
|
|
}
|
|
|
|
## Build and output build path for debugging
|
|
function debug {
|
|
build "$@"
|
|
echo "Build path: $OUT"
|
|
exec build "$@"
|
|
}
|
|
|
|
## 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
|
|
}
|
|
|
|
function vmimage {
|
|
RUN="$1"; shift
|
|
|
|
NIXPKGS_ALLOW_UNFREE=1 \
|
|
nix build -f '<nixpkgs/nixos>' vm \
|
|
-I nixos-config="$ROOT" \
|
|
-I "nixpkgs=$DIR" \
|
|
-I "nixpkgs-overlays=$DIR/overlays" \
|
|
-I "home-manager=$DIR/home-manager" \
|
|
-I "modules=$DIR/modules" \
|
|
-I "configuration=$DIR/configuration" \
|
|
--argstr system x86_64-linux "$@"
|
|
|
|
if [ "$RUN" -eq "1" ]; then
|
|
echo "Running VM image..."
|
|
./result/bin/run-$HOST-vm
|
|
fi
|
|
|
|
exit 0
|
|
}
|
|
|
|
case "$1" in
|
|
-s* | --switch*) shift; switch "$@" ;;
|
|
-d* | --debug*) shift; debug "$@" ;;
|
|
-vr*) shift; vmimage "1" "$@" ;;
|
|
-v*) shift; vmimage "0" "$@" ;;
|
|
*) build "$@" ;;
|
|
esac
|
|
|
|
rm -rf "$OUT"*
|
|
|