nixos/lib/user.nix

55 lines
1.1 KiB
Nix
Raw Normal View History

2024-03-12 18:28:24 +00:00
{ pkgs
, stdenv
, home-manager
, mkHomeRole
, ...
}:
2021-10-13 13:29:07 +01:00
{
2021-11-25 11:42:32 +00:00
mkUser = { name, roles ? [ ] }:
let
roles_mod = (map (r: mkHomeRole r) roles);
2023-02-11 02:29:48 +00:00
in
{
2021-11-25 11:42:32 +00:00
fileSystems."/home/${name}/Downloads" = {
device = "tmpfs";
fsType = "tmpfs";
options = [ "size=3G" ];
};
2021-10-13 13:29:07 +01:00
2023-05-28 21:45:49 +01:00
users = {
users.${name} = {
isNormalUser = name != "root";
extraGroups = [ "wheel" "plugdev" ];
2023-09-23 18:33:18 +01:00
shell = pkgs.zsh;
2023-05-28 21:45:49 +01:00
};
2021-11-25 11:42:32 +00:00
};
2022-10-13 23:41:18 +01:00
2023-09-23 18:33:18 +01:00
programs.zsh.enable = true;
2023-05-28 21:45:49 +01:00
home-manager.users.${name}.imports = [
(mkHomeRole "common")
2023-09-23 18:33:18 +01:00
(mkHomeRole "zsh")
2024-05-27 13:39:39 +01:00
(mkHomeRole "aichat")
2023-05-28 21:45:49 +01:00
] ++ roles_mod;
2022-10-13 23:41:18 +01:00
};
mkHMUser = { name, roles ? [ ] }:
2022-10-13 23:41:18 +01:00
let
roles_mod = (map (r: mkHomeRole r) roles);
2023-02-11 02:29:48 +00:00
in
home-manager.lib.homeManagerConfiguration {
2022-10-13 23:41:18 +01:00
inherit pkgs;
modules = [
{
home = {
username = name;
homeDirectory =
2023-12-02 17:41:15 +00:00
if stdenv.isLinux then "/home/${name}" else "/Users/${name}";
2022-10-13 23:41:18 +01:00
};
}
(mkHomeRole "common")
2022-10-13 23:41:18 +01:00
] ++ roles_mod;
2021-11-25 11:42:32 +00:00
};
2021-10-13 13:29:07 +01:00
}