shell.nix: wrap nixos-rebuild with nix-output-monitor

\#nix-output-monitor-and-chill

nom is only used if the output is a tty, and I provide a escape hatch in the form of NIX_NO_NOM=1.
This solution sidesteps issues like `sudo nixos-rebuild ... |& nom` capturing the sudo password prompt.
This commit is contained in:
Peder Bergebakken Sundt 2025-05-31 19:32:56 +02:00
parent 1caa0cc7be
commit bce1f0e912
2 changed files with 13 additions and 1 deletions

View File

@ -26,7 +26,7 @@ run-vm machine=`just _a_machine` *_:
| xargs -d'\n' nix flake update "$@"
@repl $machine=`just _a_machine` *_:
set -v; nixos-rebuild --flake .#"$machine" repl "${@:2}"
set -v; NIX_NO_NOM=1 nixos-rebuild --flake .#"$machine" repl "${@:2}"
@eval $machine=`just _a_machine` $attrpath="system.build.toplevel.outPath" *_:
set -v; nix eval {{nix_eval_opts}} ".#nixosConfigurations.\"$machine\".config.$attrpath" --show-trace "${@:3}"

View File

@ -1,6 +1,18 @@
{ pkgs ? import <nixpkgs> {} }:
let
nixos-rebuild-nom = pkgs.writeScriptBin "nixos-rebuild" ''
if [[ -t 1 && -z "''${NIX_NO_NOM-}" ]]; then
exec ${pkgs.lib.getExe pkgs.nixos-rebuild} -L "$@" |& ${pkgs.lib.getExe pkgs.nix-output-monitor}
else
exec ${pkgs.lib.getExe pkgs.nixos-rebuild} -L "$@"
fi
'';
in
pkgs.mkShellNoCC {
packages = with pkgs; [
nixos-rebuild-nom
just
jq
gum