{ config , lib , inputs , ... }: with lib; let cfg = config.my.programs.nix; in { options.my.programs.nix = { gc = { enable = mkEnableOption "nix-gc"; minimumFreedGB = mkOption { default = 32; type = types.int; apply = number: toString (number * 1024 * 1024 * 1024); }; }; optimise.enable = mkEnableOption "nix-optimise"; }; config.nix = { extraOptions = "experimental-features = nix-command flakes"; gc = { automatic = cfg.gc.enable; options = "--max-freed ${cfg.gc.minimumFreedGB} --delete-older-than 14d"; dates = "weekly"; }; optimise = { automatic = cfg.optimise.enable; dates = [ "weekly" ]; }; registry = { master-upstream.to = { type = "github"; owner = "nixos"; repo = "nixpkgs"; }; master.flake = inputs.master; nixpkgs.flake = inputs.nixpkgs; stable.flake = inputs.stable; }; settings = { substituters = [ "https://cache.nixos.org/" "https://jupyterwith.cachix.org" "https://nix-community.cachix.org" "https://pre-commit-hooks.cachix.org" "https://hyprland.cachix.org" ]; trusted-public-keys = [ "jupyterwith.cachix.org-1:/kDy2B6YEhXGJuNguG1qyqIodMyO4w8KwWH4/vAc7CI=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "pre-commit-hooks.cachix.org-1:Pkk3Panw5AW24TOv6kz3PvLhlH8puAsJTBbOPmBo7Rc=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; trusted-users = [ "root" "@wheel" ]; }; }; }