dotfiles/modules/users.nix

79 lines
1.9 KiB
Nix
Raw Normal View History

2022-01-11 18:44:40 +01:00
{ options, config, lib, pkgs, ... }:
with lib;
{
options = {
defaultUsers = mkOption {
type = types.attrs;
default = {};
description = "Collection of users";
};
home = {
_ = mkOption {
type = types.attrs;
default = {};
description = "Universal home-level user configuration";
};
configFile = mkOption {
type = types.attrs;
default = {};
description = "(XDG) Configuration files managed by home-manager";
};
};
user = mkOption {
type = types.attrs;
default = {};
description = "Universal system-level user configuration";
2022-01-11 18:44:40 +01:00
};
configDir = mkOption {
type = types.path;
default = ../config;
};
};
config = {
home-manager.useUserPackages = true;
/*
user = {
packages = with pkgs; [ curl ];
extraGroups = [ "wheel" ];
shell = {};
home = "/home/default";
isNormalUser = false;
isSystemUser = false;
group = "";
};
*/
2022-01-11 18:44:40 +01:00
home._ = {
home.stateVersion = config.system.stateVersion;
# home.file = mkAliasDefinitions options.home.file;
xdg.enable = true;
xdg.configFile = mkAliasDefinitions options.home.configFile;
};
environment = {
sessionVariables = {
XDG_CACHE_HOME = "$HOME/.cache";
XDG_CONFIG_HOME = "$HOME/.config";
XDG_DATA_HOME = "$HOME/.local/share";
XDG_BIN_HOME = "$HOME/.local/bin";
XDG_DESKTOP_DIR = "$HOME";
};
};
users.users = mapAttrs (user: prop: /* (mkAliasDefinitions options.user) // */ {
packages = prop.packages;
extraGroups = prop.extraGroups;
2022-01-11 18:44:40 +01:00
shell = pkgs."${config.defaultUsers."${user}".shell}";
home = "/home/${user}";
2022-01-11 18:44:40 +01:00
isNormalUser = true;
group = user;
2022-01-11 18:44:40 +01:00
}) config.defaultUsers;
home-manager.users = mapAttrs (user: prop: mkAliasDefinitions options.home._
) config.defaultUsers;
};
}