{ config, inputs, lib, pkgs, ... }: let inherit (builtins) toString; inherit (lib.modules) mkDefault mkIf mkAliasOptionModule; inherit (lib.my) mapModulesRec'; in { imports = [ inputs.home-manager.nixosModules.home-manager (mkAliasOptionModule ["hm"] ["home-manager" "users" config.user.name]) inputs.nix-colors.homeManagerModules.default # >home manager modules >in non-hm modules inputs.niri.nixosModules.niri ] ++ (mapModulesRec' (toString ./modules) import); environment.variables = { NIXPKGS_ALLOW_UNFREE = "1"; }; nix = { package = pkgs.nixVersions.latest; # flake registry and nix path pinning # might not be needed? see: https://github.com/NixOS/nixpkgs/commit/e456032addae76701eb17e6c03fc515fd78ad74f nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; registry.nixpkgs.flake = inputs.nixpkgs; settings = { experimental-features = [ "nix-command" "flakes" ]; auto-optimise-store = true; keep-outputs = true; keep-derivations = true; substituters = [ "https://nix-community.cachix.org" "https://nixpkgs-wayland.cachix.org" "https://wezterm.cachix.org" "https://niri.cachix.org" "https://cache.soopy.moe" ]; trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA=" "wezterm.cachix.org-1:kAbhjYUC9qvblTE+s7S+kl5XM1zVa4skO+E/1IDWdH0=" "niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964=" "cache.soopy.moe-1:0RZVsQeR+GOh0VQI9rvnHz55nVXkFardDqfm4+afjPo=" ]; }; optimise.automatic = true; gc = { automatic = true; dates = "weekly"; options = "--delete-older-than 14d"; }; }; programs.nix-ld.enable = mkDefault true; system.stateVersion = "23.11"; system.configurationRevision = with inputs; mkIf (self ? rev) self.rev; hm.home.stateVersion = config.system.stateVersion; boot = { kernelPackages = mkDefault pkgs.linuxPackages_latest; kernelParams = [ "pci_aspm.policy=performance" ]; }; # configure keymap in x11 services.xserver.xkb = { layout = "us"; variant = "qwerty"; }; console = { useXkbConfig = mkDefault true; }; services.automatic-timezoned.enable = mkDefault true; time.timeZone = mkDefault null; # handled by automatic-timezoned i18n = mkDefault { defaultLocale = "en_US.UTF-8"; supportedLocales = [ "en_US.UTF-8/UTF-8" ]; }; location.provider = mkDefault "geoclue2"; services.geoclue2 = { enable = mkDefault true; # the default provider is Geeked geoProviderUrl = "https://beacondb.net/v1/geolocate"; submissionUrl = "https://beacondb.net/v2/geosubmit"; submissionNick = "geoclue"; }; hardware.enableRedistributableFirmware = true; environment.systemPackages = with pkgs; [ openssh mosh unrar unzip micro curl wget desktop-file-utils shared-mime-info xdg-user-dirs xdg-utils git ]; }