nichts/modules/other/users.mod.nix

81 lines
2 KiB
Nix
Raw Normal View History

2024-11-01 15:54:20 +01:00
{
config,
lib,
2024-11-01 15:54:20 +01:00
pkgs,
self,
...
}:
let
inherit (builtins) elemAt;
inherit (lib.options) mkOption;
inherit (lib.types) listOf str package;
2024-10-27 10:47:44 +01:00
inherit (config.meta.mainUser) username;
nushell = pkgs.callPackage (self + "/packages/nushell") { };
in
{
options.meta = {
users = mkOption {
type = listOf str;
default = [ "cr" ];
description = ''
A list of users on a system.
'';
};
mainUser = {
username = mkOption {
type = str;
default = elemAt config.meta.users 0;
description = ''
The main user for each system. This is the first element of the list of users by default.
'';
};
gitSigningKey = mkOption {
type = str;
description = ''
The main user's git signing key, used to automatically sing git commits with this key
'';
default = ''
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAWEDj/Yib6Mqs016jx7rtecWpytwfVl28eoHtPYCM9TVLq81VIHJSN37lbkc/JjiXCdIJy2Ta3A3CVV5k3Z37NbgAu23oKA2OcHQNaRTLtqWlcBf9fk9suOkP1A3NzAqzivFpBnZm3ytaXwU8LBJqxOtNqZcFVruO6fZxJtg2uE34mAw==
'';
};
# TODO: clean this up and move it somewhere else.
defaultShell = {
name = mkOption {
type = str;
default = "nushell";
description = ''
The default shell of a user. This is not the main system shell, but the shell used in terminals.
'';
};
package = mkOption {
type = package;
default = nushell;
};
};
};
};
config = {
2024-10-27 10:47:44 +01:00
users = {
mutableUsers = true;
users = {
${username} = {
isNormalUser = true;
extraGroups = [
"wheel"
"networking"
"video"
"networkmanager"
"audio"
"nix"
"docker"
];
shell = nushell;
};
2024-10-27 10:47:44 +01:00
};
};
};
}