Add declarative obsidian config base

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2024-07-10 23:05:10 +03:00
parent 8f41327eae
commit 62e062cd73
7 changed files with 355 additions and 28 deletions

View File

@@ -2,6 +2,9 @@
user ? throw "user argument is required",
}:
{ config, lib, ... }:
let
hmConfig = config.home-manager.users.${user.name};
in
{
home-manager.users.${user.name} = {
imports = [ ./options.nix ];
@@ -19,14 +22,14 @@
};
};
home.persistence."/persist${user.home}".directories = [
"Desktop" # userDirs.desktop
"Documents" # userDirs.documents
"Downloads" # userDirs.download
"Music" # userDirs.music
"Pictures" # userDirs.pictures
"Templates" # userDirs.templates
"Videos" # userDirs.videos
home.persistence."/persist${user.home}".directories = with hmConfig.xdg.userDirs; [
relativeDesktop
relativeDocuments
relativeDownload
relativeMusic
relativePictures
relativeTemplates
relativeVideos
"VMs"
"git"
];

View File

@@ -13,30 +13,83 @@ in
description = "Relative path to directory holding application caches.";
};
cacheHome = mkOption { default = "${config.home.homeDirectory}/${cfg.relativeCacheHome}"; };
relativeConfigHome = mkOption {
type = str;
default = ".config";
description = "Relative path to directory holding application configurations.";
};
configHome = mkOption { default = "${config.home.homeDirectory}/${cfg.relativeConfigHome}"; };
relativeDataHome = mkOption {
type = str;
default = ".local/share";
description = "Relative path to directory holding application data.";
};
dataHome = mkOption { default = "${config.home.homeDirectory}/${cfg.relativeDataHome}"; };
relativeStateHome = mkOption {
type = str;
default = ".local/state";
description = "Relative path to directory holding application states.";
};
stateHome = mkOption { default = "${config.home.homeDirectory}/${cfg.relativeStateHome}"; };
userDirs = {
relativeDesktop = mkOption {
type = str;
default = "Desktop";
description = "Relative path to the Desktop directory.";
};
relativeDocuments = mkOption {
type = str;
default = "Documents";
description = "Relative path to the Documents directory.";
};
relativeDownload = mkOption {
type = str;
default = "Downloads";
description = "Relative path to the Downloads directory.";
};
relativeMusic = mkOption {
type = str;
default = "Music";
description = "Relative path to the Music directory.";
};
relativePictures = mkOption {
type = str;
default = "Pictures";
description = "Relative path to the Pictures directory.";
};
relativeTemplates = mkOption {
type = str;
default = "Templates";
description = "Relative path to the Templates directory.";
};
relativeVideos = mkOption {
type = str;
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}";
};
};
}