54 lines
1.6 KiB
Nix
54 lines
1.6 KiB
Nix
# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
|
|
{ lib, config, pkgs, ... }:
|
|
|
|
let
|
|
cfg = config.xdg.userDirs;
|
|
in
|
|
{
|
|
options.xdg.userDirs = {
|
|
enable = lib.mkEnableOption "XDG User Directories";
|
|
|
|
directories = lib.mkOption {
|
|
type = lib.types.attrsOf lib.types.str;
|
|
default = {
|
|
DESKTOP = "Desktop";
|
|
DOWNLOAD = "Downloads";
|
|
TEMPLATES = "Templates";
|
|
PUBLICSHARE = "Public";
|
|
DOCUMENTS = "Documents";
|
|
MUSIC = "Music";
|
|
PICTURES = "Pictures";
|
|
VIDEOS = "Videos";
|
|
};
|
|
description = ''
|
|
XDG User Directories.
|
|
Specify the subdirectory names for each XDG user directory type.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
environment.sessionVariables = lib.genAttrs cfg.directories (
|
|
dirName: dirValue:
|
|
let
|
|
dirUpper = builtins.toUpper dirName;
|
|
dataHome = config.xdg.dataHome or ("/home/" + (config.defaultUser or "henrov"));
|
|
in
|
|
"XDG_${dirUpper}_DIR" -> "${dataHome}/${dirValue}"
|
|
);
|
|
|
|
system.activationScripts.xdgUserDirs = let
|
|
dataHome = config.xdg.dataHome or ("/home/" + (config.defaultUser or "henrov"));
|
|
userName = builtins.elemAt (builtins.attrNames config.users.users) 0 or "henrov";
|
|
in ''
|
|
mkdir -p ${builtins.toJSON (
|
|
builtins.attrValues (
|
|
builtins.mapAttrs (dirName: dirValue: "${dataHome}/${dirValue}")
|
|
cfg.directories
|
|
)
|
|
)}
|
|
chown -R ${userName}: "${dataHome}"
|
|
'';
|
|
};
|
|
}
|