about summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/default.nix24
-rw-r--r--modules/home/default.nix27
2 files changed, 50 insertions, 1 deletions
diff --git a/modules/default.nix b/modules/default.nix
index 67d8e83..e593055 100644
--- a/modules/default.nix
+++ b/modules/default.nix
@@ -1 +1,23 @@
-{ ... }: { imports = [ ./hardware ./system ./services ]; }
+{ lib, ... }:
+
+{
+  imports = [ ./hardware ./system ./services ./home ];
+
+  options.my = with lib; {
+    user = {
+      name = mkOption {
+        type = types.str;
+        default = "fcuny";
+        example = "franck";
+        description = "my username";
+      };
+
+      home = {
+        enable = mkEnableOption {
+          description = "home-manager configuration";
+          default = true;
+        };
+      };
+    };
+  };
+}
diff --git a/modules/home/default.nix b/modules/home/default.nix
new file mode 100644
index 0000000..0261128
--- /dev/null
+++ b/modules/home/default.nix
@@ -0,0 +1,27 @@
+{ config, inputs, lib, ... }:
+let
+  actualPath = [ "home-manager" "users" config.my.user.name "my" "home" ];
+  aliasPath = [ "my" "home" ];
+
+  cfg = config.my.user.home;
+in {
+  imports = [
+    inputs.home-manager.nixosModule # enable home-manager options
+    (lib.mkAliasOptionModule aliasPath
+      actualPath) # simplify setting home options
+  ];
+
+  config = {
+    home-manager = {
+      # Not a fan of out-of-directory imports, but this is a good exception
+      users.${config.my.user.name} = import ../../home;
+
+      # Nix Flakes compatibility
+      useGlobalPkgs = true;
+      useUserPackages = true;
+
+      # Forward inputs to home-manager configuration
+      extraSpecialArgs = { inherit inputs; };
+    };
+  };
+}