From 2d9ea0d27edebd81fb599d87167548e5365e9b69 Mon Sep 17 00:00:00 2001 From: Pacman99 Date: Sat, 24 Apr 2021 08:56:51 -0700 Subject: [PATCH] lib: init modules and move mkHosts modules there This helps to split up the code in mkHosts and creates a place where we can store modules relevent to devos. It will also be easier to remove unecessary parts of each module in the future when they are all compartmentalized. --- flake.lock | 2 +- lib/devos/mkHosts.nix | 74 +++++++------------------------------------ lib/flake.nix | 2 ++ lib/modules.nix | 74 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 88 insertions(+), 64 deletions(-) create mode 100644 lib/modules.nix diff --git a/flake.lock b/flake.lock index 0e3ada8b..a9e5e03c 100644 --- a/flake.lock +++ b/flake.lock @@ -81,7 +81,7 @@ "utils": "utils_2" }, "locked": { - "narHash": "sha256-7Y6SqdLWr/g8tqNjqakRbS0KVIA/yzRm3D/RnoTAuzE=", + "narHash": "sha256-9mdO1eRrHz/3EAr3M8Ugdc8T6qWu4UbogafqO4mruKo=", "path": "./lib", "type": "path" }, diff --git a/lib/devos/mkHosts.nix b/lib/devos/mkHosts.nix index 2316da33..2fe4ed36 100644 --- a/lib/devos/mkHosts.nix +++ b/lib/devos/mkHosts.nix @@ -4,70 +4,18 @@ let defaultSystem = "x86_64-linux"; - experimentalFeatures = [ - "flakes" - "nix-command" - "ca-references" - "ca-derivations" - ]; - - modules = { - modOverrides = { config, overrideModulesPath, ... }: - let - inherit (overrides) modules disabledModules; - in - { - disabledModules = modules ++ disabledModules; - imports = map - (path: "${overrideModulesPath}/${path}") - modules; - }; - - global = { config, pkgs, ... }: { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - - extraSpecialArgs = extern.userSpecialArgs // { suites = suites.user; }; - sharedModules = extern.userModules ++ (builtins.attrValues self.homeModules); - }; - users.mutableUsers = lib.mkDefault false; - - hardware.enableRedistributableFirmware = lib.mkDefault true; - - nix.nixPath = [ - "nixpkgs=${nixos}" - "nixos-config=${self}/lib/compat/nixos" - "home-manager=${inputs.home}" - ]; - - nixpkgs.pkgs = lib.mkDefault multiPkgs.${config.nixpkgs.system}; - - nix.registry = { - devos.flake = self; - nixos.flake = nixos; - override.flake = inputs.override; - }; - - nix.package = pkgs.nixFlakes; - - nix.extraOptions = '' - experimental-features = ${lib.concatStringsSep " " - experimentalFeatures - } - ''; - - system.configurationRevision = lib.mkIf (self ? rev) self.rev; + modules = with lib.modules; { + modOverrides = modOverrides { inherit overrides; }; + hmDefaults = hmDefaults { + inherit extern; + inherit (self) homeModules; + userSuites = suites.user; }; - - # Everything in `./modules/list.nix`. - flakeModules = { imports = builtins.attrValues self.nixosModules ++ extern.modules; }; - - cachix = let rootCachix = "${self}/cachix.nix"; in - if builtins.pathExists rootCachix - then rootCachix - else { } - ; + globalDefaults = globalDefaults { + inherit self nixos inputs multiPkgs; + }; + cachix = cachix { inherit self; }; + flakeModules = flakeModules { inherit self extern; }; }; specialArgs = extern.specialArgs // { suites = suites.system; }; diff --git a/lib/flake.nix b/lib/flake.nix index c6941695..8e6063ce 100644 --- a/lib/flake.nix +++ b/lib/flake.nix @@ -16,6 +16,7 @@ attrs = import ./attrs.nix { lib = nixpkgs.lib // self; }; lists = import ./lists.nix { lib = nixpkgs.lib // self; }; strings = import ./strings.nix { lib = nixpkgs.lib // self; }; + modules = import ./modules.nix { lib = nixpkgs.lib // self; }; in utils.lib @@ -51,6 +52,7 @@ filterPackages; inherit (lists) pathsIn; inherit (strings) rgxToString; + inherit modules; } ); diff --git a/lib/modules.nix b/lib/modules.nix new file mode 100644 index 00000000..1e5b8a8a --- /dev/null +++ b/lib/modules.nix @@ -0,0 +1,74 @@ +{ lib }: +{ + modOverrides = { overrides }: + { config, overrideModulesPath, ... }: + let + inherit (overrides) modules disabledModules; + in + { + disabledModules = modules ++ disabledModules; + imports = map + (path: "${overrideModulesPath}/${path}") + modules; + }; + + hmDefaults = { userSuites, extern, homeModules }: { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + + extraSpecialArgs = extern.userSpecialArgs // { suites = userSuites; }; + sharedModules = extern.userModules ++ (builtins.attrValues homeModules); + }; + }; + + globalDefaults = { self, nixos, inputs, multiPkgs }: + let + experimentalFeatures = [ + "flakes" + "nix-command" + "ca-references" + "ca-derivations" + ]; + in + { config, pkgs, ... }: { + users.mutableUsers = lib.mkDefault false; + + hardware.enableRedistributableFirmware = lib.mkDefault true; + + nix.nixPath = [ + "nixpkgs=${nixos}" + "nixos-config=${self}/lib/compat/nixos" + "home-manager=${inputs.home}" + ]; + + nixpkgs.pkgs = lib.mkDefault multiPkgs.${config.nixpkgs.system}; + + nix.registry = { + devos.flake = self; + nixos.flake = nixos; + override.flake = inputs.override; + }; + + nix.package = pkgs.nixFlakes; + + nix.extraOptions = '' + experimental-features = ${lib.concatStringsSep " " + experimentalFeatures + } + ''; + + system.configurationRevision = lib.mkIf (self ? rev) self.rev; + }; + + cachix = { self }: + let rootCachix = "${self}/cachix.nix"; in + if builtins.pathExists rootCachix + then rootCachix + else { }; + + flakeModules = { self, extern }: { imports = builtins.attrValues self.nixosModules ++ extern.modules; }; + + +} +