From f29ddff912ddcd58a4726736702b24655505ce09 Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Sat, 17 Oct 2026 10:36:36 +0200 Subject: refactor: introduce nixos/default.nix The system prompt addition is to make it run `npins show ` rather than `npins show` when looking for a specific pin. `npins get-path` is mentioned because the model doesn't "know" it yet (the subcommand was introduced in 2025 Dec). --- nixos/rebuild | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) (limited to 'nixos/rebuild') diff --git a/nixos/rebuild b/nixos/rebuild index 3c675b2..395f78d 100755 --- a/nixos/rebuild +++ b/nixos/rebuild @@ -3,49 +3,17 @@ set -euo pipefail top=$(dirname "$(realpath "$0")") hostDir="$top/hosts/$HOSTNAME" -defaultConfigPath="$hostDir/default.nix" -privateConfigPath="$hostDir/private.nix" -case "${1:-}" in - --default) - configPath="$defaultConfigPath" - shift - ;; - *) - if [ -f "$privateConfigPath" ]; then - configPath="$privateConfigPath" - else - configPath="$defaultConfigPath" - fi - ;; -esac - -if [ ! -f "$configPath" ]; then - echo "aborting: $configPath doesn't exist" +if [ ! -d "$hostDir" ]; then + echo "aborting: host directory $hostDir doesn't exist" exit 1 fi -nixpkgsPath=$( - cd "$top" && - nix-instantiate --eval --raw \ - --argstr host "$HOSTNAME" \ - --expr ' - { host }: - let - toml = builtins.readFile ./hosts/${host}/metadata.toml; - channel = (builtins.fromTOML toml).channel; - in - (import ./npins).${channel}.outPath - ' -) - ( # The result symlink created in the current directory is registered as a root of the Nix # garbage collector, so it's important that we call nixos-rebuild from the host directory. # (nix-build has an --out-link option but that option cannot be set via nixos-rebuild). cd "$hostDir" && - # nixos-rebuild always reads Nixpkgs from the NIX_PATH, - # so we need to set it explicitly to our pinned version - exec nixos-rebuild "$@" --file "$top/system.nix" -I nixpkgs="$nixpkgsPath" -I nixos-config="$configPath" + exec nixos-rebuild "$@" --file "$top/default.nix" --attr "configurations.$HOSTNAME" ) -- cgit v1.3.1