{ nix-index-database, nixpkgs-unstable, nixpkgs, ... }: { imports = [ nix-index-database.nixosModules.nix-index ]; nix = { # https://nixos.wiki/wiki/Storage_optimization gc = { # Automatically run the nix garbage collector, removing files from # the store that are not referenced by any generation. # https://nixos.org/manual/nix/stable/package-management/garbage-collection automatic = true; dates = "weekly"; options = "--delete-older-than 7d"; }; settings = { # Automatically optimise the store after each build. Store optimisation # reduces nix store space by 25-35% by finding identical files and # hard-linking them to each other. # https://nixos.org/manual/nix/unstable/command-ref/nix-store/optimise.html auto-optimise-store = true; # Enable flakes experimental-features = ["nix-command" "flakes"]; # Timeout connections to the binary cache instead of waiting forever connect-timeout = 5; }; # The nix registry is used to refer to flakes using symbolic identifiers # when running commands such as `nix run nixpkgs#hello`. By default, # the global registry from [1] is used, which aliases `nixpkgs` to the # nixpkgs-unstable branch. We overwrite the default global `nixpkgs` # registry with one which refers to the same nixpkgs as the rest of # the system, aligning it with flake.lock. # [1] https://github.com/NixOS/flake-registry/blob/master/flake-registry.json registry = { nixpkgs.flake = nixpkgs; nixpkgs-unstable.flake = nixpkgs-unstable; }; }; # The system-wide garbage collection service configured above does not know # about our user profile. TODO: 24.04 # home-manager.users.caspervk.nix.gc = config.nix.gc; # https://github.com/nix-community/comma programs.nix-index-database.comma.enable = true; programs.command-not-found.enable = false; }