diff --git a/home/apps/gpg.nix b/home/apps/gpg.nix index 5e722f5..86053ff 100644 --- a/home/apps/gpg.nix +++ b/home/apps/gpg.nix @@ -38,11 +38,6 @@ in { programs.gpg = { enable = true; - # NOTE: yet another workaround for gpgme on Darwin, since Firefox isn't aware of $GNUPGHOME - homedir = - if isDarwin - then "${config.home.homeDirectory}/.gnupg" - else "${config.xdg.configHome}/gnupg"; scdaemonSettings."disable-ccid" = true; settings = { # https://github.com/drduh/config/blob/master/gpg.conf diff --git a/home/apps/zsh.nix b/home/apps/zsh.nix index 83dfdb4..10387d2 100644 --- a/home/apps/zsh.nix +++ b/home/apps/zsh.nix @@ -64,7 +64,7 @@ in { ''; envExtra = '' - export PATH="$PATH:${config.xdg.dataHome}/krew/bin" + export PATH="$PATH:${config.xdg.dataHome}/krew/bin:$GOPATH/bin"; export ZVM_INIT_MODE=sourcing ''; diff --git a/home/default.nix b/home/default.nix index 3fa27ae..36ee447 100644 --- a/home/default.nix +++ b/home/default.nix @@ -25,6 +25,7 @@ in { ./apps/wezterm.nix ./apps/zsh.nix ./secrets/sops.nix + ./xdg.nix ] ++ ( if secretsAvailable @@ -69,42 +70,17 @@ in { unstable.heroic ]); - sessionVariables = - { - CARGO_HOME = "${config.xdg.dataHome}/cargo"; - CUDA_CACHE_PATH = "${config.xdg.dataHome}/nv"; - DOCKER_CONFIG = "${config.xdg.configHome}/docker"; - NPM_CONFIG_USERCONFIG = "${config.xdg.configHome}/npm/npmrc"; - PATH = "$PATH:${config.xdg.dataHome}/krew/bin:$GOPATH/bin"; - RUSTUP_HOME = "${config.xdg.dataHome}/rustup"; - XCOMPOSECACHE = "${config.xdg.cacheHome}/X11/xcompose"; - } - // ( - if isDarwin - then { - SSH_AUTH_SOCK = "${config.programs.gpg.homedir}/S.gpg-agent.ssh"; - } - else {} - ); + sessionVariables = lib.mkIf isDarwin { + SSH_AUTH_SOCK = "${config.programs.gpg.homedir}/S.gpg-agent.ssh"; + }; stateVersion = "22.11"; }; programs = { home-manager.enable = true; - go = { - enable = true; - goPath = "${config.xdg.dataHome}/go"; - }; + go.enable = true; man.enable = true; taskwarrior.enable = true; }; - - xdg = { - enable = true; - userDirs.enable = isLinux; - cacheHome = "${config.home.homeDirectory}/.cache"; - configHome = "${config.home.homeDirectory}/.config"; - dataHome = "${config.home.homeDirectory}/.local/share"; - }; } diff --git a/home/xdg.nix b/home/xdg.nix new file mode 100644 index 0000000..2d6cef4 --- /dev/null +++ b/home/xdg.nix @@ -0,0 +1,43 @@ +# assortment of random bs that's needed +# to make apps use XDG directories +{ + config, + pkgs, + ... +}: let + inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux; +in { + home.sessionVariables = { + CARGO_HOME = "${config.xdg.dataHome}/cargo"; + CUDA_CACHE_PATH = "${config.xdg.dataHome}/nv"; + DOCKER_CONFIG = "${config.xdg.configHome}/docker"; + GEM_HOME = "${config.xdg.dataHome}/gem"; + GEM_SPEC_CACHE = "${config.xdg.cacheHome}/gem"; + NPM_CONFIG_USERCONFIG = "${config.xdg.configHome}/npm/npmrc"; + RUSTUP_HOME = "${config.xdg.dataHome}/rustup"; + XCOMPOSECACHE = "${config.xdg.cacheHome}/X11/xcompose"; + }; + + home.activation.npmrc_xdg = '' + export NPM_CONFIG_USERCONFIG="${config.home.sessionVariables.NPM_CONFIG_USERCONFIG}" + ${pkgs.nodejs + "/bin/npm"} config set \ + prefix="${config.xdg.dataHome}/npm" \ + cache="${config.xdg.cacheHome}/npm" \ + init-module="${config.xdg.configHome}/npm/config/npm-init.js" + ''; + + programs.go.goPath = ".local/share/go"; + # NOTE: workaround for gpgme on Darwin, since GUI apps aren't aware of $GNUPGHOME + programs.gpg.homedir = + if isDarwin + then "${config.home.homeDirectory}/.gnupg" + else "${config.xdg.configHome}/gnupg"; + + xdg = { + enable = true; + userDirs.enable = isLinux; + cacheHome = "${config.home.homeDirectory}/.cache"; + configHome = "${config.home.homeDirectory}/.config"; + dataHome = "${config.home.homeDirectory}/.local/share"; + }; +}