about summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2022-04-07 08:31:05 -0700
committerFranck Cuny <franck@fcuny.net>2022-04-07 08:31:05 -0700
commitdcc0315bba21b4efde7ffc0a6e50af24fdd0fbb4 (patch)
treed8b5aa68afc302a116dafa26f74fcdf73587a8f2 /modules
parentgitea: fix the module (diff)
downloadworld-dcc0315bba21b4efde7ffc0a6e50af24fdd0fbb4.tar.gz
initial attempt to reconfigure home-manager
All the modules that are needed for home-manager should be under
`home/`, and each host will have a `host.nix` where the modules are
enabled as needed. Later on we can create some profiles to make it
easier to consume the configuration.

I apply this only to tahoe for now, as the amount of packages needed for
my user are pretty limited.
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; };
+    };
+  };
+}