1{
2 config,
3 lib,
4 pkgs,
5 inputs,
6 ...
7}: let
8 flakeInputs = lib.filterAttrs (name: value: (lib.isType "flake" value) && (name != "self")) inputs;
9in {
10 options.myNixOS.programs.nix.enable = lib.mkEnableOption "sane nix configuration";
11
12 config = lib.mkIf config.myNixOS.programs.nix.enable {
13 nix = {
14 package = pkgs.nixVersions.latest;
15
16 gc = {
17 automatic = true;
18
19 options = "--delete-older-than 3d";
20
21 persistent = true;
22 randomizedDelaySec = "60min";
23 };
24
25 optimise = {
26 automatic = true;
27 persistent = true;
28 randomizedDelaySec = "60min";
29 };
30
31 # https://github.com/isabelroses/dotfiles/blob/main/modules/base/nix/nix.nix#L34-L38
32 # pin the registry to avoid downloading and evaluating a new nixpkgs version everytime
33 registry =
34 (lib.mapAttrs (_: flake: {inherit flake;}) flakeInputs)
35 // {
36 # https://github.com/NixOS/nixpkgs/pull/388090
37 nixpkgs = lib.mkForce {flake = inputs.nixpkgs;};
38 };
39
40 inherit (config.mySnippets.nix) settings;
41 };
42 };
43}