aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/default.nix68
1 files changed, 44 insertions, 24 deletions
diff --git a/lib/default.nix b/lib/default.nix
index ac0a88a..16177fe 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -3,41 +3,61 @@
let
lib = inputs.nixpkgs.lib;
isDarwin = s: lib.strings.hasSuffix "-darwin" s;
-in rec {
+in
+rec {
mkSystem =
- { host
- , username
- , system
- , extraModules ? [ ]
- , extraArguments ? { }
+ {
+ host,
+ username,
+ system,
+ overlays ? [ ],
+ sharedModules ? [ ],
+ extraModules ? [ ],
+ extraArguments ? { },
}:
let
darwinHost = isDarwin system;
- builder = if darwinHost
- then inputs.nix-darwin.lib.darwinSystem
- else inputs.nixpkgs.lib.nixosSystem;
- hmModule = if darwinHost
- then inputs.home-manager.darwinModules.home-manager
- else inputs.home-manager.nixosModules.home-manager;
- hostDir = ../hosts/${host};
- hostCfg = hostDir + "/configuration.nix";
- hostHome = hostDir + "/home.nix";
+ builder = if darwinHost then inputs.nix-darwin.lib.darwinSystem else inputs.nixpkgs.lib.nixosSystem;
+ hmModule =
+ if darwinHost then
+ inputs.home-manager.darwinModules.home-manager
+ else
+ inputs.home-manager.nixosModules.home-manager;
+ pkgs = import inputs.nixpkgs {
+ inherit system overlays;
+ config.allowUnfree = true;
+ };
+ hostDir = ../hosts/${host};
+ hostCfg = hostDir + /configuration.nix;
+ hostHome = hostDir + /home.nix;
modules =
[ hostCfg ]
- ++ (lib.optional darwinHost inputs."mac-app-util".darwinModules.default)
+ ++ lib.optionals darwinHost [ inputs.mac-app-util.darwinModules.default ]
++ [
- hmModule {
- home-manager.useGlobalPkgs = true;
+ {
+ nix.settings.experimental-features = [
+ "nix-command"
+ "flakes"
+ ];
+ nixpkgs.overlays = overlays;
+ }
+
+ hmModule
+ {
+ home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
- home-manager.extraSpecialArgs = { inherit inputs; };
+ home-manager.extraSpecialArgs = { inherit inputs pkgs; };
home-manager.users.${username} = import hostHome;
+ home-manager.sharedModules = sharedModules;
}
]
++ extraModules;
in
- builder {
- inherit system modules;
- specialArgs = { inherit inputs username; } // extraArguments;
- };
+ builder {
+ system = system;
+ specialArgs = {
+ inherit inputs pkgs;
+ } // extraArguments;
+ modules = modules;
+ };
}
-