{ config, lib, namespace, ... }: { nix = { settings = { extra-sandbox-paths = [ config.programs.ccache.cacheDir ]; substituters = [ "https://cache.mjallen.dev/nas-cache" "https://nixos-raspberrypi.cachix.org" "https://nix-community.cachix.org" "https://cache.nixos.org/" ]; trusted-public-keys = [ "nas-cache:Y7PR+XTLr1bLIL85PKb9Tk9/BnE5HndTKvZYWVP1/48=" "nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; warn-dirty = lib.mkForce false; experimental-features = lib.mkForce [ "nix-command" "flakes" ]; trusted-users = [ "@wheel" ]; builders-use-substitutes = true; connect-timeout = lib.mkDefault 5; fallback = true; log-lines = lib.mkDefault 25; max-free = lib.mkDefault (3000 * 1024 * 1024); min-free = lib.mkDefault (512 * 1024 * 1024); }; daemonCPUSchedPolicy = lib.mkDefault "idle"; daemonIOSchedClass = lib.mkDefault "idle"; daemonIOSchedPriority = lib.mkDefault 7; # Garbage collect automatically every week gc = { automatic = lib.mkDefault true; options = lib.mkDefault "--delete-older-than 30d"; }; optimise.automatic = lib.mkDefault true; }; systemd.services.nix-gc.serviceConfig = { CPUSchedulingPolicy = "batch"; IOSchedulingClass = "idle"; IOSchedulingPriority = 7; }; nixpkgs = { config = { cudaSupport = lib.mkDefault config.${namespace}.hardware.nvidia.enable; rocmSupport = lib.mkDefault config.${namespace}.hardware.amd.enable; allowUnsupportedSystem = true; }; }; }