nix-home/module.nix

60 lines
1.4 KiB
Nix
Raw Normal View History

2021-09-30 17:54:04 -07:00
{ doom-emacs, niten-doom-config, ... }:
{ config, lib, pkgs, ... }:
with lib;
let
user-configs = {
niten = ./niten.nix;
2021-11-15 16:25:19 -08:00
root = ./root.nix;
2021-09-30 17:54:04 -07:00
viator = ./niten.nix;
xiaoxuan = ./xiaoxuan.nix;
};
hostname = config.instance.hostname;
enable-gui = config.fudo.hosts.${hostname}.enable-gui;
2021-10-02 16:30:31 -07:00
local-users = let
2021-11-15 16:13:28 -08:00
local-usernames = attrNames config.instance.local-users;
2021-10-02 16:30:31 -07:00
in filterAttrs
(username: userOpts: elem username local-usernames)
2021-11-15 16:26:38 -08:00
user-configs;
2021-10-02 16:30:31 -07:00
2021-09-30 17:54:04 -07:00
in {
config.home-manager = {
useGlobalPkgs = true;
users = let
generate-config = username: config-file: let
user-cfg = config.fudo.users.${username};
2021-10-03 10:19:12 -07:00
user-email = if (user-cfg.email != null) then
user-cfg.email else "${username}@${config.instance.local-domain}";
home-dir = config.users.users.${username}.home;
2021-10-02 16:30:31 -07:00
in (import user-configs.${username} {
inherit
config
lib
pkgs
doom-emacs
niten-doom-config
username
user-email
home-dir
enable-gui;
});
2021-11-15 16:13:28 -08:00
in (mapAttrs generate-config local-users) // {
root = import user-configs.root {
inherit
config
lib
pkgs
doom-emacs
niten-doom-config;
username = "root";
user-email = "root@${config.instance.local-domain}";
home-dir = "/root";
};
};
2021-09-30 17:54:04 -07:00
};
}