Commit 2e86b5d
Changed files (7)
modules
core
desktop
develop
hosts
kevin
modules/core/xdg-dir.nix
@@ -0,0 +1,33 @@
+{
+ den.aspects.core.xdg-dir = {
+ cacheHome = {config, ...}: {
+ directories = [
+ config.xdg.cacheHome
+ ];
+ };
+
+ nixos = {
+ environment.sessionVariables = {
+ XDG_CACHE_HOME = "\${HOME}/.cache";
+ XDG_CONFIG_HOME = "\${HOME}/.config";
+ XDG_DATA_HOME = "\${HOME}/.local/share";
+ XDG_STATE_HOME = "\${HOME}/.local/state";
+ XDG_BIN_HOME = "\${HOME}/.local/bin";
+ };
+ };
+
+ homeManager = {config, ...}: {
+ home.preferXdgDirectories = true;
+
+ xdg = {
+ enable = true;
+ # Use absolue path for persistence
+ binHome = "${config.home.homeDirectory}/.local/bin";
+ cacheHome = "${config.home.homeDirectory}/.cache";
+ configHome = "${config.home.homeDirectory}/.config";
+ dataHome = "${config.home.homeDirectory}/.local/share";
+ stateHome = "${config.home.homeDirectory}/.local/state";
+ };
+ };
+ };
+}
modules/desktop/xdg.nix
@@ -0,0 +1,50 @@
+{
+ den.aspects.desktop.xdg-user-dirs = {
+ persistHome = {config, ...}: {
+ directories = with config.xdg.userDirs; [
+ desktop
+ documents
+ music
+ pictures
+ projects
+ publicShare
+ templates
+ videos
+ ];
+ };
+ cacheHome = {config, ...}: let
+ in {
+ directories = [
+ config.xdg.userDirs.download
+ ];
+ };
+
+ nixos = {
+ environment.variables = {
+ XCOMPOSECACHE = "$XDG_CACHE_HOME/X11/xcompose";
+ };
+ };
+
+ homeManager = {config, ...}: {
+ xdg.userDirs = {
+ enable = true;
+ createDirectories = true;
+ setSessionVariables = true;
+
+ desktop = "${config.home.homeDirectory}/Desktop";
+ documents = "${config.home.homeDirectory}/Documents";
+ download = "${config.home.homeDirectory}/Downloads";
+ music = "${config.home.homeDirectory}/Musics";
+ pictures = "${config.home.homeDirectory}/Pictures";
+ projects = "${config.home.homeDirectory}/Development";
+ publicShare = "${config.home.homeDirectory}/Share";
+ templates = "${config.home.homeDirectory}/Templates";
+ videos = "${config.home.homeDirectory}/Videos";
+
+ extraConfig = {
+ SCREENSHOTS = "${config.xdg.userDirs.pictures}/Screenshots";
+ };
+ };
+ };
+ };
+}
modules/develop/xdg.nix
@@ -0,0 +1,47 @@
+{den, ...}: {
+ den.aspects.develop.xdg = {
+ includes = with den.aspects.develop.xdg; [
+ android
+ go
+ java
+ npm
+ ];
+
+ android = {
+ nixos.environment.variables = {
+ ANDROID_HOME = "$XDG_DATA_HOME/android";
+ ANDROID_USER_HOME = "$XDG_DATA_HOME/android";
+ };
+ };
+
+ go = {
+ nixos.environment.variables = {
+ GOPATH = "$XDG_DATA_HOME/go";
+ };
+ };
+
+ java = {
+ nixos.environment.variables = {
+ _JAVA_OPTIONS = "-Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java";
+ M2_HOME = "$XDG_DATA_HOME/m2";
+ GRADLE_USER_HOME = "$XDG_DATA_HOME/gradle";
+ };
+ };
+
+ npm = {
+ nixos = {
+ environment.variables = {
+ NPM_CONFIG_CACHE = "$XDG_CACHE_HOME/npm";
+ NPM_CONFIG_TMP = "$XDG_RUNTIME_DIR/npm";
+ NPM_CONFIG_USERCONFIG = "$XDG_CONFIG_HOME/npm/config";
+ };
+ environment.etc."npmrc".text = ''
+ prefix=$XDG_DATA_HOME/npm
+ cache=$XDG_CACHE_HOME/npm
+ tmp=$XDG_RUNTIME_DIR/npm
+ init-module=$XDG_CONFIG_HOME/npm/config/npm-init.js
+ '';
+ };
+ };
+ };
+}
modules/hosts/kevin/default.nix
@@ -24,6 +24,7 @@
den.aspects.kevin = {
includes = [
den.aspects.roles.default
+ den.aspects.roles.desktop
den.aspects.roles.develop
];
};
modules/roles/default.nix
@@ -22,6 +22,7 @@
core.systemd
core.time-sync
core.utils
+ core.xdg-dir
secrets.vaultix
];
modules/roles/desktop.nix
@@ -0,0 +1,7 @@
+{den, ...}: {
+ den.aspects.roles.desktop = {
+ includes = with den.aspects; [
+ desktop.xdg-user-dirs
+ ];
+ };
+}
modules/roles/develop.nix
@@ -3,6 +3,7 @@
includes = with den.aspects; [
develop.binfmt
develop.direnv
+ develop.xdg
services.podman
];