mirror of
https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git
synced 2025-06-05 21:25:22 +02:00

This is done by not depending on the flake itself, allowing the bits of a dirty tree to not affect the hash. This enables equivalence testing with `just eval-vm bob` and checking if the system closure hash changes or not.
40 lines
1.4 KiB
Nix
40 lines
1.4 KiB
Nix
{ config, inputs, pkgs, lib, ... }:
|
|
|
|
let
|
|
inputUrls = lib.mapAttrs (input: value: value.url) (import "${inputs.self}/flake.nix").inputs;
|
|
in
|
|
|
|
{
|
|
system.autoUpgrade = {
|
|
enable = true;
|
|
flake = "git+https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git";
|
|
flags = [
|
|
"--refresh"
|
|
"--no-write-lock-file"
|
|
# --update-input is deprecated since nix 2.22, and removed in lix 2.90
|
|
# as such we instead use --override-input combined with --refresh
|
|
# https://git.lix.systems/lix-project/lix/issues/400
|
|
] ++ (lib.pipe inputUrls [
|
|
(lib.intersectAttrs {
|
|
nixpkgs = { };
|
|
nixpkgs-unstable = { };
|
|
})
|
|
(lib.mapAttrsToList (input: url: ["--override-input" input url]))
|
|
lib.concatLists
|
|
]);
|
|
};
|
|
|
|
# workaround for https://github.com/NixOS/nix/issues/6895
|
|
# via https://git.lix.systems/lix-project/lix/issues/400
|
|
environment.etc = lib.mkIf (!config.virtualisation.isVmVariant) {
|
|
"current-system-flake-inputs.json".source
|
|
= pkgs.writers.writeJSON "flake-inputs.json" (
|
|
lib.flip lib.mapAttrs inputs (name: input:
|
|
# inputs.*.sourceInfo sans outPath, since writeJSON will otherwise serialize sourceInfo like a derivation
|
|
lib.removeAttrs (input.sourceInfo or {}) [ "outPath" ]
|
|
// { store-path = input.outPath; } # comment this line if you don't want to retain a store reference to the flake inputs
|
|
)
|
|
);
|
|
};
|
|
}
|