{ inputs, lib, ... }: let flakes = lib.filterAttrs (name: value: value ? outputs) inputs; inherit (inputs.self.outputs) nixConfig; in { nix.gc = { automatic = true; dates = "04:00"; options = "--delete-older-than 30d"; }; nix.settings = { trusted-users = [ "@wheel" ]; auto-optimise-store = true; substituters = nixConfig.extra-substituters; trusted-public-keys = nixConfig.extra-trusted-public-keys; }; system.autoUpgrade = { enable = true; dates = "03:00"; flake = "/etc/nixos"; flags = with lib; flatten ( mapAttrsToList (n: _: [ "--update-input" n ]) flakes ); }; }