Files
nix/hosts/common/user/configs/console/xdg/options.nix
2024-08-01 01:03:05 +03:00

107 lines
3.3 KiB
Nix

{ config, lib, ... }:
let
cfg = config.xdg;
in
{
options.xdg =
with lib;
with types;
{
relativeCacheHome = mkOption {
type = str;
readOnly = true;
default = ".cache";
description = "Relative path to directory holding application caches.";
};
relativeConfigHome = mkOption {
type = str;
readOnly = true;
default = ".config";
description = "Relative path to directory holding application configurations.";
};
relativeDataHome = mkOption {
type = str;
readOnly = true;
default = ".local/share";
description = "Relative path to directory holding application data.";
};
relativeStateHome = mkOption {
type = str;
readOnly = true;
default = ".local/state";
description = "Relative path to directory holding application states.";
};
userDirs = {
relativeDesktop = mkOption {
type = str;
readOnly = true;
default = "Desktop";
description = "Relative path to the Desktop directory.";
};
relativeDocuments = mkOption {
type = str;
readOnly = true;
default = "Documents";
description = "Relative path to the Documents directory.";
};
relativeDownload = mkOption {
type = str;
readOnly = true;
default = "Downloads";
description = "Relative path to the Downloads directory.";
};
relativeMusic = mkOption {
type = str;
readOnly = true;
default = "Music";
description = "Relative path to the Music directory.";
};
relativePictures = mkOption {
type = str;
readOnly = true;
default = "Pictures";
description = "Relative path to the Pictures directory.";
};
relativeTemplates = mkOption {
type = str;
readOnly = true;
default = "Templates";
description = "Relative path to the Templates directory.";
};
relativeVideos = mkOption {
type = str;
readOnly = true;
default = "Videos";
description = "Relative path to the Videos directory.";
};
};
};
config.xdg = with lib; {
cacheHome = mkDefault "${config.home.homeDirectory}/${cfg.relativeCacheHome}";
configHome = mkDefault "${config.home.homeDirectory}/${cfg.relativeConfigHome}";
dataHome = mkDefault "${config.home.homeDirectory}/${cfg.relativeDataHome}";
stateHome = mkDefault "${config.home.homeDirectory}/${cfg.relativeStateHome}";
userDirs = {
desktop = mkDefault "${config.home.homeDirectory}/${cfg.userDirs.relativeDesktop}";
documents = mkDefault "${config.home.homeDirectory}/${cfg.userDirs.relativeDocuments}";
download = mkDefault "${config.home.homeDirectory}/${cfg.userDirs.relativeDownload}";
music = mkDefault "${config.home.homeDirectory}/${cfg.userDirs.relativeMusic}";
pictures = mkDefault "${config.home.homeDirectory}/${cfg.userDirs.relativePictures}";
templates = mkDefault "${config.home.homeDirectory}/${cfg.userDirs.relativeTemplates}";
videos = mkDefault "${config.home.homeDirectory}/${cfg.userDirs.relativeVideos}";
};
};
}