dotfiles/modules/nixos/system/user.nix

73 lines
1.8 KiB
Nix
Raw Normal View History

2024-04-20 13:42:06 +00:00
{
config,
pkgs,
lib,
...
}:
{
2022-04-29 01:56:21 +00:00
options = {
2022-04-29 01:56:21 +00:00
passwordHash = lib.mkOption {
2022-10-02 14:48:51 +00:00
type = lib.types.nullOr lib.types.str;
description = "Password created with mkpasswd -m sha-512";
default = null;
2022-10-01 18:28:32 +00:00
# Test it by running: mkpasswd -m sha-512 --salt "PZYiMGmJIIHAepTM"
};
};
2023-07-31 00:26:23 +00:00
config = {
2022-05-15 02:51:57 +00:00
# Allows us to declaritively set password
users.mutableUsers = false;
# Define a user account. Don't forget to set a password with passwd.
users.users.${config.user} = {
# Create a home directory for human user
isNormalUser = true;
# Automatically create a password to start
hashedPassword = config.passwordHash;
extraGroups = [
"wheel" # Sudo privileges
];
};
2022-04-29 01:56:21 +00:00
# Allow writing custom scripts outside of Nix
# Probably shouldn't make this a habit
environment.localBinInPath = true;
2022-05-09 00:49:42 +00:00
home-manager.users.${config.user}.xdg = {
2023-03-09 03:56:07 +00:00
# Allow Nix to manage the default applications list
mimeApps.enable = true;
# Create a desktop option for Burp
desktopEntries.burp = lib.mkIf pkgs.stdenv.isLinux {
name = "Burp";
exec = "${config.homePath}/.local/bin/burp.sh";
categories = [ "Application" ];
};
2023-03-09 03:56:07 +00:00
# Set directories for application defaults
2022-05-09 00:49:42 +00:00
userDirs = {
enable = true;
createDirectories = true;
documents = "$HOME/documents";
2022-05-11 03:45:50 +00:00
download = config.userDirs.download;
2022-05-09 00:49:42 +00:00
music = "$HOME/media/music";
pictures = "$HOME/media/images";
videos = "$HOME/media/videos";
desktop = "$HOME/other/desktop";
publicShare = "$HOME/other/public";
templates = "$HOME/other/templates";
2024-04-20 13:42:06 +00:00
extraConfig = {
XDG_DEV_DIR = "$HOME/dev";
};
2022-05-09 00:49:42 +00:00
};
};
2022-04-29 01:56:21 +00:00
};
}