diff --git a/features/home-env.nix b/features/home-env.nix new file mode 100644 index 0000000..49948f0 --- /dev/null +++ b/features/home-env.nix @@ -0,0 +1,47 @@ +{ + config, + lib, + pkgs, + osConfig, + ... +}: +let + home = config.home.homeDirectory; + isLinux = pkgs.stdenv.hostPlatform.isLinux; + runtimeDir = "/run/user/${toString osConfig.users.users.${config.home.username}.uid}"; + + vars = { + XDG_CACHE_HOME = "${home}/.cache"; + XDG_CONFIG_HOME = "${home}/.config"; + XDG_DATA_HOME = "${home}/.local/share"; + XDG_STATE_HOME = "${home}/.local/state"; + + ANDROID_USER_HOME = "${home}/.local/share/android"; + AZURE_CONFIG_DIR = "${home}/.local/share/azure"; + + NPM_CONFIG_INIT_MODULE = "${home}/.config/npm/config/npm-init.js"; + NPM_CONFIG_CACHE = "${home}/.cache/npm"; + + _JAVA_OPTIONS = "-Djava.util.prefs.userRoot=${home}/.config/java"; + + PYTHON_HISTORY = "${home}/.local/state/python_history"; + + HISTFILE = "${home}/.local/state/bash/history"; + + DOTNET_ROOT = "${pkgs.dotnet-sdk}/share/dotnet"; + DOTNET_CLI_HOME = "${home}/.local/share/dotnet"; + + GTK2_RC_FILES = "${home}/.config/gtk-2.0/gtkrc"; + + WINEPREFIX = "${home}/.local/share/wine"; + }; + + linuxVars = { + NPM_CONFIG_TMP = "${runtimeDir}/npm"; + }; +in +{ + home.sessionVariables = vars // lib.optionalAttrs isLinux linuxVars; + + systemd.user.sessionVariables = lib.mkIf isLinux (vars // linuxVars); +} diff --git a/features/users.nix b/features/users.nix index 031cdb7..0c3cd19 100644 --- a/features/users.nix +++ b/features/users.nix @@ -5,6 +5,7 @@ users.frank = { isNormalUser = true; + uid = 1000; description = "Frank LoTurco"; hashedPasswordFile = config.sops.secrets.password_hash.path; diff --git a/features/wine.nix b/features/wine.nix index 8e127de..de2e885 100644 --- a/features/wine.nix +++ b/features/wine.nix @@ -16,7 +16,6 @@ sessionVariables = { WINE = "${pkgs.wineWow64Packages.full}/bin/.wine"; - WINEPREFIX = "$XDG_DATA_HOME/wine"; WINEDEBUG = "-all"; }; }; diff --git a/features/xdg.nix b/features/xdg.nix index a794d01..b2fef2e 100644 --- a/features/xdg.nix +++ b/features/xdg.nix @@ -1,40 +1,8 @@ # Enforce XDG directory spec for configuration files { pkgs }: -rec { - XDG_CACHE_HOME = "$HOME/.cache"; - XDG_CONFIG_HOME = "$HOME/.config"; - XDG_DATA_HOME = "$HOME/.local/share"; - XDG_STATE_HOME = "$HOME/.local/state"; - +{ XDG_DATA_DIRS = [ "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}" "${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}" ]; - - # Android - ANDROID_USER_HOME = "$XDG_DATA_HOME/android"; - - # Azure - AZURE_CONFIG_DIR = "$XDG_DATA_HOME/azure"; - - # NodeJS / npm - NPM_CONFIG_INIT_MODULE = "$XDG_CONFIG_HOME/npm/config/npm-init.js"; - NPM_CONFIG_CACHE = "$XDG_CACHE_HOME/npm"; - NPM_CONFIG_TMP = "$XDG_RUNTIME_DIR/npm"; - - # Java - _JAVA_OPTIONS = "-Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java"; - - # Python - PYTHON_HISTORY = "$XDG_STATE_HOME/python_history"; - - # BASH - HISTFILE = "$XDG_STATE_HOME/bash/history"; - - # .NET - DOTNET_ROOT = "${pkgs.dotnet-sdk}/share/dotnet"; - DOTNET_CLI_HOME = "$XDG_DATA_HOME/dotnet"; - - # GTK - GTK2_RC_FILES = "$XDG_CONFIG_HOME/gtk-2.0/gtkrc"; } diff --git a/home/frank.nix b/home/frank.nix index 5e69bf2..c9bc8cd 100644 --- a/home/frank.nix +++ b/home/frank.nix @@ -8,6 +8,7 @@ imports = [ inputs.lazyvim.homeManagerModules.default ../features/starship.nix + ../features/home-env.nix ]; home.shellAliases = import ../features/aliases.nix { inherit pkgs; };