113 lines
3.1 KiB
Nix
113 lines
3.1 KiB
Nix
{
|
|
home ? throw "home argument is required",
|
|
}:
|
|
{ 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;
|
|
with cfg;
|
|
{
|
|
cacheHome = mkDefault "${home}/${relativeCacheHome}";
|
|
configHome = mkDefault "${home}/${relativeConfigHome}";
|
|
dataHome = mkDefault "${home}/${relativeDataHome}";
|
|
stateHome = mkDefault "${home}/${relativeStateHome}";
|
|
|
|
userDirs = with userDirs; {
|
|
desktop = mkDefault "${home}/${relativeDesktop}";
|
|
documents = mkDefault "${home}/${relativeDocuments}";
|
|
download = mkDefault "${home}/${relativeDownload}";
|
|
music = mkDefault "${home}/${relativeMusic}";
|
|
pictures = mkDefault "${home}/${relativePictures}";
|
|
templates = mkDefault "${home}/${relativeTemplates}";
|
|
videos = mkDefault "${home}/${relativeVideos}";
|
|
};
|
|
};
|
|
}
|