yep, more dotfiles
1name: { description, profile, keys ? [ ], user ? { } }:
2
3{ self
4, pkgs
5, lib
6, isDarwin
7, ...
8}:
9
10let
11 inherit (self.inputs) home-manager;
12 inherit (self.flake-lib) specialModuleArgs;
13in
14{
15 imports = [
16 (if isDarwin then home-manager.darwinModules.home-manager else home-manager.nixosModules.home-manager)
17 ];
18
19 options = {
20 local.user.username = lib.mkOption {
21 type = with lib.types; str;
22 description = "The name of the main user account";
23 };
24 };
25
26 config = {
27 local.user.username = name;
28
29 users.users.${name} = {
30 inherit description;
31 shell = pkgs.fish;
32
33 openssh.authorizedKeys.keys = keys;
34 } // (if isDarwin then {
35 home = "/Users/${name}";
36 } else {
37 home = "/home/${name}";
38 extraGroups = [
39 # TODO: remove or put under an condition
40 "wheel" # sudo access
41 "networkmanager" # needed for nm
42 ];
43 isNormalUser = true;
44 }) // user;
45
46 home-manager = {
47 extraSpecialArgs = specialModuleArgs pkgs;
48
49 useUserPackages = false;
50 useGlobalPkgs = true;
51
52 users.${name} = { ... }: {
53 imports = [
54 ../../home-manager/profiles/${profile}.nix
55 ../../home-manager/fragments/default.nix
56 ../../home-manager/options.nix
57 ];
58 };
59 };
60 };
61}