overlays/nix-monitored: fix chained override

This commit is contained in:
Primrose 2026-01-04 20:05:28 +01:00
parent 5f665b4f55
commit 5946ddc87a
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA

View file

@ -13,31 +13,38 @@ let
withNotify = false;
};
keepNixOverride =
# * overrides the nix input as nix-monitored
# * any override changing the nix input will change that to nix-monitored
use-nix-monitored =
drv:
drv
// {
override = args: drv.override (builtins.removeAttrs args [ "nix" ]);
let
drv' = drv.override { nix = nix-monitored; };
in
drv'
// rec {
override =
args:
let
args' =
if args ? nix then
args
// {
nix = nix-monitored.override { inherit (args) nix; };
}
else
args;
in
(drv'.override args') // { inherit override; };
};
inherit (prev) lib;
in
lib.optionalAttrs (prev ? nixos-rebuild) {
nixos-rebuild = keepNixOverride (
prev.nixos-rebuild.override {
nix = nix-monitored;
}
);
nixos-rebuild = use-nix-monitored prev.nixos-rebuild;
}
// lib.optionalAttrs (prev ? nixos-rebuild-ng) {
nixos-rebuild-ng = keepNixOverride (
prev.nixos-rebuild-ng.override {
nix = nix-monitored;
}
);
nixos-rebuild-ng = use-nix-monitored prev.nixos-rebuild-ng;
}
// {
nix-direnv = prev.nix-direnv.override {
nix = nix-monitored;
};
nix-direnv = use-nix-monitored prev.nix-direnv;
}