main
 1{den, ...}: {
 2  den.aspects.develop.xdg = {
 3    includes = with den.aspects.develop.xdg; [
 4      android
 5      go
 6      java
 7      npm
 8    ];
 9
10    android = {
11      nixos.environment.variables = {
12        ANDROID_HOME = "$XDG_DATA_HOME/android";
13        ANDROID_USER_HOME = "$XDG_DATA_HOME/android";
14      };
15    };
16
17    go = {
18      nixos.environment.variables = {
19        GOPATH = "$XDG_DATA_HOME/go";
20      };
21    };
22
23    java = {
24      nixos.environment.variables = {
25        _JAVA_OPTIONS = "-Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java";
26        M2_HOME = "$XDG_DATA_HOME/m2";
27        GRADLE_USER_HOME = "$XDG_DATA_HOME/gradle";
28      };
29    };
30
31    npm = {
32      nixos = {
33        environment.variables = {
34          NPM_CONFIG_CACHE = "$XDG_CACHE_HOME/npm";
35          NPM_CONFIG_TMP = "$XDG_RUNTIME_DIR/npm";
36          NPM_CONFIG_USERCONFIG = "$XDG_CONFIG_HOME/npm/config";
37        };
38        environment.etc."npmrc".text = ''
39          prefix=$XDG_DATA_HOME/npm
40          cache=$XDG_CACHE_HOME/npm
41          tmp=$XDG_RUNTIME_DIR/npm
42          init-module=$XDG_CONFIG_HOME/npm/config/npm-init.js
43        '';
44      };
45    };
46  };
47}