{ config, lib, osConfig, ... }: let cfg = config.my.nix; in { options.my.nix = { gc = lib.mkEnableOption null // { default = true; }; }; config = { xdg.configFile = { "nixpkgs/config.nix".text = lib.generators.toPretty {multiline = true;} { inherit (osConfig.nixpkgs.config) allowUnfree; }; }; systemd.user = lib.mkIf cfg.gc { services.nix-gc = { Unit = { Description = "Nix User Garbage Collector"; }; Service = { ExecStart = "${osConfig.nix.package}/bin/nix-collect-garbage ${osConfig.nix.gc.options}"; }; }; timers = { nix-gc = lib.mkIf osConfig.nix.gc.automatic { Timer = osConfig.systemd.timers.nix-gc.timerConfig; Install = { WantedBy = [ "timers.target" ]; }; }; }; }; }; }