This is much safer and might also be faster. Passing `system` could still be hypothetically unsafe, but I doubt nixpkgs will ever have a system name with a dot in it for this specific reason.
83 lines
2.0 KiB
Bash
Executable File
83 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# shellcheck disable=SC2317
|
|
# ^ SC2317 (Command appears to be unreachable.)
|
|
|
|
set -Exo pipefail
|
|
|
|
err=0
|
|
|
|
set_error () {
|
|
err=1
|
|
pkill -s 0 -9 nix-eval-jobs || true
|
|
}
|
|
|
|
trap set_error ERR
|
|
|
|
system="$(nix eval --impure --raw --expr 'builtins.currentSystem')"
|
|
|
|
|
|
run_builds () {
|
|
for i in "$@" ; do
|
|
nix-fast-build --eval-workers 1 --no-nom --skip-cache --attic-cache main -f "$i"
|
|
pkill -s 0 -9 nix-eval-jobs || true
|
|
done
|
|
}
|
|
|
|
_build_systems () {
|
|
case "$system" in
|
|
# TODO this is messy and hard-coded, make an attribute set for
|
|
# each system containing the specializations as well as the nospec ver
|
|
x86_64-linux) run_builds \
|
|
.\#nixosConfigurations.nullbox.config.specialisation.hyprland.configuration.system.build.toplevel \
|
|
.\#nospec.nullbox.config.system.build.toplevel \
|
|
.\#nixosConfigurations.slab.config.specialisation.{hyprland,nvidia}.configuration.system.build.toplevel \
|
|
.\#nospec.slab.config.system.build.toplevel \
|
|
.\#nixosConfigurations.nixos-wsl.config.system.build.toplevel \
|
|
;;
|
|
|
|
aarch64-linux) run_builds \
|
|
.\#nixosConfigurations.rpi4.config.system.build.toplevel \
|
|
;;
|
|
esac
|
|
}
|
|
|
|
|
|
|
|
build_systems () {
|
|
# system should be set in `nix develop` but just in case
|
|
local system
|
|
system="${system:-$(nix eval --impure --raw --expr 'builtins.currentSystem')}"
|
|
#nix eval --json .#legacyPackages."${system}".specialisedNixosConfigurations --apply 'builtins.attrNames' \
|
|
# | jq -c '.[]' \
|
|
# | while read -r line ; do
|
|
# local build
|
|
# build="$(printf '%s' "$line" | jq -r)"
|
|
# run_builds ".#legacyPackages.${system}.specialisedNixosConfigurations.${build}"
|
|
# done
|
|
run_builds ".#legacyPackages.${system}.specialisedNixosConfigurations"
|
|
|
|
}
|
|
|
|
build_packages () {
|
|
run_builds .\#packages."${system}".redlib
|
|
}
|
|
|
|
|
|
if [[ "$#" -ne 0 ]] ; then
|
|
until [[ "$#" -le 0 ]]; do
|
|
case "$1" in
|
|
pkgs|packages) DO_PACKAGES=1;;
|
|
config) DO_CONFIG=1;;
|
|
esac
|
|
shift
|
|
done
|
|
else
|
|
DO_PACKAGES=1
|
|
DO_CONFIG=1
|
|
fi
|
|
|
|
if [[ -n "${DO_CONFIG:+x}" ]] ; then build_systems; fi
|
|
if [[ -n "${DO_PACKAGES:+x}" ]] ; then build_packages; fi
|
|
|
|
exit $err
|