aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/default.nix8
-rw-r--r--lib/home_configurations_as_packages.nix12
-rw-r--r--lib/mk_home.nix20
-rw-r--r--lib/mk_system.nix25
-rw-r--r--lib/nixos_configurations_as_packages.nix12
5 files changed, 77 insertions, 0 deletions
diff --git a/lib/default.nix b/lib/default.nix
new file mode 100644
index 0000000..b75be10
--- /dev/null
+++ b/lib/default.nix
@@ -0,0 +1,8 @@
+inputs:
+
+{
+ mkSystem = import ./mk_system.nix inputs;
+ mkHome = import ./mk_home.nix inputs;
+ nixosConfigurationsAsPackages = import ./nixos_configurations_as_packages.nix inputs;
+ homeConfigurationsAsPackages = import ./home_configurations_as_packages.nix inputs;
+}
diff --git a/lib/home_configurations_as_packages.nix b/lib/home_configurations_as_packages.nix
new file mode 100644
index 0000000..41fd7b4
--- /dev/null
+++ b/lib/home_configurations_as_packages.nix
@@ -0,0 +1,12 @@
+{ self, ... } @ inputs:
+
+let
+ pkgs = import inputs.nixpkgs { system = "x86_64-linux"; };
+
+ inherit (pkgs.lib) genAttrs mapAttrs';
+
+ hostNames = __attrNames self.homeConfigurations;
+ attrHostNames = genAttrs hostNames (name: "home/config/${name}");
+ configs = mapAttrs' (name: pname: { name = pname; value = self.homeConfigurations.${name}.activationPackage; }) attrHostNames;
+in
+{ x86_64-linux = configs; }
diff --git a/lib/mk_home.nix b/lib/mk_home.nix
new file mode 100644
index 0000000..e352f5f
--- /dev/null
+++ b/lib/mk_home.nix
@@ -0,0 +1,20 @@
+{ self, home-manager, ... } @ inputs:
+
+username: hostname: system: nixpkgs: version:
+let
+ args = inputs;
+ entrypoint = "${self}/home/configurations/${username}@${hostname}.nix";
+in
+ home-manager.lib.homeManagerConfiguration {
+ inherit username system;
+ homeDirectory = "/home/${username}";
+ stateVersion = version;
+ pkgs = nixpkgs.legacyPackages.${system};
+
+ configuration = { lib, ... }: {
+ _module = { inherit args; };
+ imports = [
+ entrypoint
+ ] ++ __attrValues self.homeModules;
+ };
+ }
diff --git a/lib/mk_system.nix b/lib/mk_system.nix
new file mode 100644
index 0000000..ee0037b
--- /dev/null
+++ b/lib/mk_system.nix
@@ -0,0 +1,25 @@
+{ self, ... } @ args:
+
+name: nixpkgs:
+nixpkgs.lib.nixosSystem (
+ let
+ configFolder = "${self}/nixos/configurations";
+ entryPoint = "${configFolder}/${name}.nix";
+ hardware = "${configFolder}/hardware/${name}.nix";
+ in
+ {
+ system = "x86_64-linux";
+
+ modules = [
+ {
+ _module.args = args;
+ networking.hostName = name;
+ nix.flakes.enable = true;
+ system.configurationRevision = self.rev or "dirty";
+ documentation.man = { enable = true; generateCaches = true; };
+ }
+ entryPoint
+ hardware
+ ] ++ __attrValues self.nixosModules;
+ }
+)
diff --git a/lib/nixos_configurations_as_packages.nix b/lib/nixos_configurations_as_packages.nix
new file mode 100644
index 0000000..f257c6d
--- /dev/null
+++ b/lib/nixos_configurations_as_packages.nix
@@ -0,0 +1,12 @@
+{ self, ... } @ inputs:
+
+let
+ pkgs = import inputs.nixpkgs { system = "x86_64-linux"; };
+
+ inherit (pkgs.lib) genAttrs mapAttrs';
+
+ hostNames = __attrNames self.nixosConfigurations;
+ attrHostNames = genAttrs hostNames (name: "nixos/config/${name}");
+ configs = mapAttrs' (name: pname: { name = pname; value = self.nixosConfigurations.${name}.config.system.build.toplevel; }) attrHostNames;
+in
+{ x86_64-linux = configs; }