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 "wheel" # sudo access
40 "networkmanager" # needed for nm
41 ];
42 isNormalUser = true;
43 }) // user;
44
45 home-manager = {
46 extraSpecialArgs = specialModuleArgs pkgs;
47
48 useUserPackages = false;
49 useGlobalPkgs = true;
50
51 users.${name} = { ... }: {
52 imports = [
53 ../../home-manager/profiles/${profile}.nix
54 ../../home-manager/fragments/default.nix
55 ../../home-manager/options.nix
56 ];
57 };
58 };
59 };
60}