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