{ 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.base16.nixosModule inputs.nix-index-database.nixosModules.default inputs.t2fanrd.nixosModules.t2fanrd inputs.niri.nixosModules.niri ] ++ (mapModulesRec' (toString ./modules) import); hm.imports = [ inputs.vicinae.homeManagerModules.default ]; # i mostly disagree with state versions, just use the oldest one i have set up # they seem reasonable at first but are so messy across multiple hosts # a lot of the time they're used for stuff that isn't even state (looking at you, home-manager) system.stateVersion = mkDefault "23.11"; system.configurationRevision = with inputs; mkIf (self ? rev) self.rev; hm.home.stateVersion = config.system.stateVersion; # TODO: drop geoclue entirely. too lazy 2 to that now services.automatic-timezoned.enable = mkDefault true; time.timeZone = mkDefault null; # handled by automatic-timezoned 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"; }; # git is needed for flakes, yet, isn't in `environment.corePackages` environment.systemPackages = with pkgs; [ git ]; }