summaryrefslogtreecommitdiff
path: root/modules/nixos/personal/user.nix
diff options
context:
space:
mode:
authorQuentin Aristote <quentin@aristote.fr>2023-02-22 22:39:56 +0100
committerQuentin Aristote <quentin@aristote.fr>2023-02-28 17:47:49 +0100
commit70d60e5ee6d1092f765807b8483c9c16d2afa678 (patch)
treeedeb7a91de348d6fc5dd0e43b9ca7bef794b322c /modules/nixos/personal/user.nix
parentbbb2f5e7cefb970b3e4994ee51bb2c3a18a073c2 (diff)
add home-manager modules
Diffstat (limited to 'modules/nixos/personal/user.nix')
-rw-r--r--modules/nixos/personal/user.nix47
1 files changed, 37 insertions, 10 deletions
diff --git a/modules/nixos/personal/user.nix b/modules/nixos/personal/user.nix
index 0d1585e..0cb308a 100644
--- a/modules/nixos/personal/user.nix
+++ b/modules/nixos/personal/user.nix
@@ -1,22 +1,49 @@
-{ config, lib, ... }:
+{ config, lib, ... }@extraArgs:
-let cfg = config.personal.user;
+let
+ cfg = config.personal.user;
+ importedHomeManager = extraArgs ? home-manager;
in {
+ imports = lib.optional importedHomeManager
+ extraArgs.home-manager.nixosModules.home-manager;
+
options.personal.user = {
enable = lib.mkEnableOption "main user";
name = lib.mkOption {
type = lib.types.str;
default = "qaristote";
};
+ homeManager = { enable = lib.mkEnableOption "home-manager"; };
};
- config.users.users."${cfg.name}" = lib.mkIf cfg.enable {
- isNormalUser = true;
- extraGroups = [ "wheel" ] ++ lib.optional config.sound.enable "sound"
- ++ lib.optional config.networking.networkmanager.enable "networkmanager";
- openssh.authorizedKeys.keys = [
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK4wGbl3++lqCjLUhoRyABBrVEeNhIXYO4371srkRoyq qaristote@latitude-7490"
- ];
+ config = lib.mkIf cfg.enable ({
+ users.users."${cfg.name}" = {
+ isNormalUser = true;
+ extraGroups = [ "wheel" ] ++ lib.optional config.sound.enable "sound"
+ ++ lib.optional config.networking.networkmanager.enable
+ "networkmanager";
+ openssh.authorizedKeys.keys = [
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK4wGbl3++lqCjLUhoRyABBrVEeNhIXYO4371srkRoyq qaristote@latitude-7490"
+ ];
+ };
- };
+ assertions = let
+ missingArgAssertion = name: {
+ assertion = lib.hasAttr name extraArgs || !cfg.homeManager.enable;
+ message =
+ "attribute ${name} missing: add it in lib.nixosSystem's specialArgs, or set config.personal.user.homeManager.enable to false";
+ };
+ in [
+ (missingArgAssertion "homeModules")
+ (missingArgAssertion "home-manager")
+ ];
+ } // lib.optionalAttrs (importedHomeManager && extraArgs ? homeModules) {
+ home-manager = lib.mkIf cfg.homeManager.enable {
+ users."${cfg.name}".imports = extraArgs.homeModules;
+ useGlobalPkgs = lib.mkDefault true;
+ useUserPackages = lib.mkDefault true;
+ # TODO fix this: only config.personal options seem to be passed (or not ?)
+ extraSpecialArgs.osConfig = lib.mkDefault config;
+ };
+ });
}