My NixOS and Home Manager configurations
10
fork

Configure Feed

Select the types of activity you want to include in your feed.

update flake to use unify host redesign

remove constants, make configs more flexible to allow for supporting multiple users

quasigod 9ad8f9d5 7531aa8b

+236 -264
+4 -4
flake.lock
··· 1038 1038 ] 1039 1039 }, 1040 1040 "locked": { 1041 - "lastModified": 1747505198, 1042 - "narHash": "sha256-Yi9dC+Si2hqbVNhtiZYCBl28RYGevYU1mARTxpWIWVo=", 1041 + "lastModified": 1748917966, 1042 + "narHash": "sha256-bTun3Y2ZuaQi7BArn/VEeKLFBVt4uz9mTCEm4gowrxs=", 1043 1043 "ref": "refs/heads/main", 1044 - "rev": "15afe60d16d4526d7c0e138f87e9a76f4ebf9c23", 1045 - "revCount": 24, 1044 + "rev": "ae47c971506ee5b58bb35f3326297b97e70d297e", 1045 + "revCount": 36, 1046 1046 "type": "git", 1047 1047 "url": "https://codeberg.org/quasigod/unify" 1048 1048 },
-1
flake.nix
··· 5 5 { flake-parts, import-tree, ... }@inputs: 6 6 flake-parts.lib.mkFlake { inherit inputs; } { 7 7 systems = [ "x86_64-linux" ]; 8 - unify.user = "quasi"; 9 8 imports = [ 10 9 inputs.unify.flakeModule 11 10 (import-tree [
+14 -11
hosts/hades/default.nix
··· 1 1 { inputs, config, ... }: 2 2 { 3 - unify.hosts.hades = { 4 - tags = [ 5 - "workstation" 6 - "gaming" 7 - "replays" 8 - "hacking" 9 - "virtualisation" 10 - "cachix" 11 - "localai" 12 - "zsa-kb" 3 + unify.hosts.nixos.hades = { 4 + modules = with config.unify.modules; [ 5 + workstation 6 + gaming 7 + replays 8 + hacking 9 + virtualisation 10 + cachix 11 + localai 12 + zsa-kb 13 + syncthing-client 13 14 ]; 14 15 15 - primaryDisplay = config.unify.hosts.hades.displays.DP-3; 16 + primaryDisplay = config.unify.hosts.nixos.hades.displays.DP-3; 16 17 displays = { 17 18 DP-3 = { 18 19 primary = true; ··· 27 28 x = -1920; 28 29 }; 29 30 }; 31 + 32 + users.quasi.modules = config.unify.hosts.nixos.hades.modules; 30 33 31 34 nixos = 32 35 { pkgs, ... }:
+1 -1
hosts/hades/filesystems.nix
··· 1 1 { 2 - unify.hosts.hades = { 2 + unify.hosts.nixos.hades = { 3 3 nixos = { 4 4 fileSystems."/" = { 5 5 device = "/dev/disk/by-label/NIXROOT";
+14 -11
hosts/zagreus/default.nix
··· 1 1 { inputs, config, ... }: 2 2 { 3 - unify.hosts.zagreus = { 4 - tags = [ 5 - "laptop" 6 - "workstation" 7 - "hacking" 8 - "remote" 9 - "gaming" 10 - "virtualisation" 11 - "plymouth" 12 - "secure-boot" 3 + unify.hosts.nixos.zagreus = { 4 + modules = with config.unify.modules; [ 5 + laptop 6 + workstation 7 + hacking 8 + remote 9 + gaming 10 + virtualisation 11 + plymouth 12 + secure-boot 13 + syncthing-client 13 14 ]; 14 15 15 - primaryDisplay = config.unify.hosts.zagreus.displays.eDP-1; 16 + primaryDisplay = config.unify.hosts.nixos.zagreus.displays.eDP-1; 16 17 displays = { 17 18 eDP-1 = { 18 19 refreshRate = 60; ··· 21 22 scaling = 1.50; 22 23 }; 23 24 }; 25 + 26 + users.quasi.modules = config.nixos.hosts.nixos.zagreus.modules; 24 27 25 28 nixos = 26 29 { pkgs, ... }:
+1 -1
hosts/zagreus/filesystems.nix
··· 1 1 { 2 - unify.hosts.zagreus = { 2 + unify.hosts.nixos.zagreus = { 3 3 nixos = { 4 4 fileSystems."/" = { 5 5 device = "/dev/disk/by-uuid/c3fde0b2-d7da-4109-b4cb-27c7a2e53e4b";
+16 -15
modules/desktops/default.nix
··· 1 - { constants, ... }: 2 1 { 3 2 unify.modules.workstation = { 4 3 nixos = ··· 24 23 }; 25 24 }; 26 25 27 - home = { 28 - qt.enable = true; 29 - gtk = { 30 - enable = true; 31 - gtk2.configLocation = "${constants.configHome}/gtk-2.0/gtkrc"; 32 - gtk3 = { 33 - bookmarks = [ 34 - "file:///home/quasi/Downloads Downloads" 35 - "file:///home/quasi/Documents Documents" 36 - "file:///home/quasi/Pictures Pictures" 37 - "file:///home/quasi/Videos Videos" 38 - "file:///home/quasi/Games Games" 39 - ]; 26 + home = 27 + { config, ... }: 28 + { 29 + qt.enable = true; 30 + gtk = { 31 + enable = true; 32 + gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; 33 + gtk3 = { 34 + bookmarks = [ 35 + "file:///home/quasi/Downloads Downloads" 36 + "file:///home/quasi/Documents Documents" 37 + "file:///home/quasi/Pictures Pictures" 38 + "file:///home/quasi/Videos Videos" 39 + "file:///home/quasi/Games Games" 40 + ]; 41 + }; 40 42 }; 41 43 }; 42 - }; 43 44 }; 44 45 }
+2 -2
modules/gaming/default.nix
··· 20 20 heroic 21 21 lunar-client 22 22 (lutris.override { 23 - extraPkgs = pkgs: [ umu-launcher ]; 24 - extraLibraries = pkgs: [ pkgs.latencyflex-vulkan ]; 23 + extraPkgs = _: [ umu-launcher ]; 24 + extraLibraries = _: [ latencyflex-vulkan ]; 25 25 }) 26 26 prismlauncher 27 27 umu-launcher
+2 -8
modules/gaming/replays.nix
··· 1 - { 2 - lib, 3 - config, 4 - ... 5 - }: 1 + { lib, ... }: 6 2 { 7 3 unify.modules.replays = { 8 4 # Allows gpu-screen-recorder to record screens without escalating ··· 24 20 Unit.Description = "gpu-screen-recorder replay service"; 25 21 Install.WantedBy = [ "graphical-session.target" ]; 26 22 Service = { 27 - ExecStart = "${lib.getExe pkgs.gpu-screen-recorder} -w ${ 28 - config.unify.hosts.${hostConfig.name}.primaryDisplay.name 29 - } -f 60 -r 60 -a 'default_output|default_input' -c mp4 -q very_high -o %h/Videos/Replays -restore-portal-session yes -v no"; 23 + ExecStart = "${lib.getExe pkgs.gpu-screen-recorder} -w ${hostConfig.primaryDisplay.name} -f 60 -r 60 -a 'default_output|default_input' -c mp4 -q very_high -o %h/Videos/Replays -restore-portal-session yes -v no"; 30 24 }; 31 25 }; 32 26 };
-16
modules/meta/constants.nix
··· 1 - { config, ... }: 2 - let 3 - inherit (config.unify) user; 4 - in 5 - { 6 - _module.args.constants = { 7 - inherit user; 8 - username = user; 9 - home = "/home/${user}"; 10 - configHome = "/home/${user}/.config"; 11 - cacheHome = "/home/${user}/.cache"; 12 - dataHome = "/home/${user}/.local/share"; 13 - stateHome = "/home/${user}/.local/state"; 14 - flakePath = "/home/${user}/.flake"; 15 - }; 16 - }
+7
modules/meta/user.nix
··· 1 + { lib,...}: 2 + { 3 + unify.options.primaryUser = lib.mkOption { 4 + type = lib.types.str; 5 + default = "quasi"; 6 + }; 7 + }
+16 -15
modules/programs/bash.nix
··· 1 - { constants, ... }: 2 1 { 3 2 unify = { 4 3 nixos = ··· 6 5 { 7 6 environment.shells = [ pkgs.bashInteractive ]; 8 7 }; 9 - home = { 10 - home.shellAliases = { 11 - cd = "z"; 12 - lj = "lazyjj"; 13 - lg = "lazygit"; 14 - o = "xdg-open"; 15 - mkdir = "mkdir -p"; 16 - tree = "eza -T"; 8 + home = 9 + { config, ... }: 10 + { 11 + home.shellAliases = { 12 + cd = "z"; 13 + lj = "lazyjj"; 14 + lg = "lazygit"; 15 + o = "xdg-open"; 16 + mkdir = "mkdir -p"; 17 + tree = "eza -T"; 18 + }; 19 + programs.bash = { 20 + enable = true; 21 + enableVteIntegration = true; 22 + historyFile = "${config.xdg.configHome}/bash/history"; 23 + }; 17 24 }; 18 - programs.bash = { 19 - enable = true; 20 - enableVteIntegration = true; 21 - historyFile = "${constants.configHome}/bash/history"; 22 - }; 23 - }; 24 25 }; 25 26 }
+25 -28
modules/programs/git.nix
··· 1 - { lib, ... }: 2 1 { 3 2 unify.home = { 4 - programs.git = lib.mkMerge [ 5 - { 6 - enable = true; 7 - lfs.enable = true; 8 - userName = "quasigod"; 9 - userEmail = "quasigod-io@proton.me"; 10 - difftastic.enable = true; 11 - aliases = { 12 - ci = "commit"; 13 - co = "checkout"; 14 - st = "status"; 15 - }; 16 - signing = { 17 - format = "ssh"; 18 - key = "~/.ssh/id_ed25519.pub"; 19 - signByDefault = true; 20 - }; 21 - extraConfig = { 22 - init.defaultBranch = "main"; 23 - pull.rebase = true; 24 - rerere.enabled = true; 25 - column.ui = "auto"; 26 - fetch.prune = true; 27 - interactive.singlekey = true; 28 - }; 29 - } 30 - ]; 3 + programs.git = { 4 + enable = true; 5 + lfs.enable = true; 6 + userName = "quasigod"; 7 + userEmail = "quasigod-io@proton.me"; 8 + difftastic.enable = true; 9 + aliases = { 10 + ci = "commit"; 11 + co = "checkout"; 12 + st = "status"; 13 + }; 14 + signing = { 15 + format = "ssh"; 16 + key = "~/.ssh/id_ed25519.pub"; 17 + signByDefault = true; 18 + }; 19 + extraConfig = { 20 + init.defaultBranch = "main"; 21 + pull.rebase = true; 22 + rerere.enabled = true; 23 + column.ui = "auto"; 24 + fetch.prune = true; 25 + interactive.singlekey = true; 26 + }; 27 + }; 31 28 }; 32 29 }
+9 -9
modules/programs/hacking.nix
··· 1 1 { 2 2 inputs, 3 - constants, 4 3 lib, 5 4 withSystem, 6 5 ... 7 6 }: 8 7 { 9 8 unify.modules.hacking = { 10 - nixos = { 11 - programs.wireshark.enable = true; 12 - users.users.${constants.user}.extraGroups = [ "wireshark" ]; 13 - environment.etc.hosts.mode = "0644"; 14 - }; 9 + nixos = 10 + { hostConfig, ... }: 11 + { 12 + programs.wireshark.enable = true; 13 + users.users.${hostConfig.primaryUser}.extraGroups = [ "wireshark" ]; 14 + environment.etc.hosts.mode = "0644"; 15 + }; 15 16 home = 16 - { pkgs, ... }: 17 + { pkgs, config, ... }: 17 18 { 18 19 home.packages = with pkgs; [ 19 20 # general ··· 54 55 netexec 55 56 metasploit 56 57 (withSystem pkgs.system (p: p.config.packages.xsstrike)) 57 - 58 58 59 59 (pkgs.writeScriptBin "cyberchef" '' 60 60 echo ${pkgs.cyberchef}/share/cyberchef/index.html ··· 65 65 modules = lib.singleton { 66 66 wrappers.rustscan = { 67 67 basePackage = pkgs.rustscan; 68 - flags = [ "-c ${constants.configHome}/rustscan.toml" ]; 68 + flags = [ "-c ${config.xdg.configHome}/rustscan.toml" ]; 69 69 }; 70 70 }; 71 71 })
+10 -9
modules/programs/nh.nix
··· 1 - { constants, ... }: 2 1 { 3 2 unify = { 4 - nixos.programs.nh = { 5 - enable = true; 6 - flake = constants.flakePath; 7 - }; 3 + nixos = 4 + { hostConfig, ... }: 5 + { 6 + programs.nh = { 7 + enable = true; 8 + flake = "/home/${hostConfig.primaryUser}/.flake"; 9 + }; 10 + }; 8 11 home = 9 - { pkgs, ... }: 12 + { pkgs, config, ... }: 10 13 { 11 14 home.packages = [ pkgs.nh ]; 12 - home.sessionVariables = { 13 - FLAKE = constants.flakePath; 14 - }; 15 + home.sessionVariables.FLAKE = "${config.home.homeDirectory}/.flake"; 15 16 }; 16 17 }; 17 18 }
+3 -3
modules/programs/nushell.nix
··· 1 - { lib, constants, ... }: 1 + { lib, ... }: 2 2 { 3 3 unify = { 4 4 nixos = 5 - { pkgs, ... }: 5 + { pkgs, hostConfig, ... }: 6 6 { 7 7 environment.shells = [ pkgs.nushell ]; 8 - users.users.${constants.user}.shell = pkgs.nushell; 8 + users.users.${hostConfig.primaryUser}.shell = pkgs.nushell; 9 9 }; 10 10 home = 11 11 { pkgs, ... }:
+8 -11
modules/programs/radicle.nix
··· 1 - { constants, ... }: 2 1 { 3 - unify = { 4 - home = 5 - { pkgs, ... }: 6 - { 7 - home = { 8 - shellAliases.jji = "jj --ignore-immutable"; 9 - packages = with pkgs; [ radicle-node ]; 10 - sessionVariables.RAD_HOME = "${constants.configHome}/radicle"; 11 - }; 2 + unify.home = 3 + { pkgs, config, ... }: 4 + { 5 + home = { 6 + shellAliases.jji = "jj --ignore-immutable"; 7 + packages = with pkgs; [ radicle-node ]; 8 + sessionVariables.RAD_HOME = "${config.xdg.configHome}/radicle"; 12 9 }; 13 - }; 10 + }; 14 11 }
+3 -3
modules/secrets/default.nix
··· 1 - { constants, inputs, ... }: 1 + { inputs, ... }: 2 2 let 3 3 sops_config = { 4 4 defaultSopsFile = ./secrets.yaml; 5 5 defaultSopsFormat = "yaml"; 6 - age.keyFile = "${constants.configHome}/sops/age/keys.txt"; 6 + age.keyFile = "/var/lib/secrets/sops/age/keys.txt"; 7 7 }; 8 8 in 9 9 { ··· 12 12 { 13 13 imports = [ inputs.sops-nix.homeManagerModules.sops ]; 14 14 sops = sops_config; 15 - home.sessionVariables.SOPS_AGE_KEY_FILE = "${constants.configHome}/sops/age/keys.txt"; 15 + home.sessionVariables.SOPS_AGE_KEY_FILE = sops_config.age.keyFile; 16 16 home.packages = [ pkgs.sops ]; 17 17 }; 18 18 unify.nixos = {
+27 -30
modules/services/syncthing.nix
··· 1 - { constants, ... }: 2 1 { 3 - unify = { 4 - nixos = { 5 - users.users.${constants.user}.extraGroups = [ "syncthing" ]; 6 - services.syncthing = 7 - let 8 - devices = { 9 - hades.id = "EI3OAYC-BEJG55M-AP5OIOR-ZVDT5UE-P2GBSEY-7UJIQEQ-2IJ5CZ2-FSG6EQF"; 10 - zagreus.id = "V3CJAAW-V5ZRINB-SIDYUZH-L6CRFTW-ZOOHA3W-KYMW5ZU-Q4IUMLS-47QSTQQ"; 11 - nyx.id = "T7ES5DM-TIODWXE-T2LME4T-3RKTD6S-WFVTSVS-QHU5WEW-Q6GDROS-46H2AQZ"; 2 + unify = 3 + let 4 + devices = { 5 + hades.id = "EI3OAYC-BEJG55M-AP5OIOR-ZVDT5UE-P2GBSEY-7UJIQEQ-2IJ5CZ2-FSG6EQF"; 6 + zagreus.id = "V3CJAAW-V5ZRINB-SIDYUZH-L6CRFTW-ZOOHA3W-KYMW5ZU-Q4IUMLS-47QSTQQ"; 7 + nyx.id = "T7ES5DM-TIODWXE-T2LME4T-3RKTD6S-WFVTSVS-QHU5WEW-Q6GDROS-46H2AQZ"; 8 + }; 9 + all_devices = builtins.attrNames devices; 10 + syncthing = { 11 + enable = true; 12 + settings = { 13 + inherit devices; 14 + folders."~/sync" = { 15 + id = "general"; 16 + devices = all_devices; 12 17 }; 13 - all_devices = builtins.attrNames devices; 14 - in 15 - { 16 - enable = true; 17 - openDefaultPorts = true; 18 - settings = { 19 - inherit devices; 20 - folders."~/sync" = { 21 - id = "general"; 22 - devices = all_devices; 23 - }; 24 - folders."~/projects" = { 25 - id = "projects"; 26 - devices = all_devices; 27 - }; 18 + folders."~/projects" = { 19 + id = "projects"; 20 + devices = all_devices; 28 21 }; 29 22 }; 30 - }; 31 - modules.workstation.nixos.services.syncthing = { 32 - inherit (constants) user; 33 - dataDir = constants.home; 23 + }; 24 + in 25 + { 26 + modules.syncthing-client.home.services = { 27 + inherit syncthing; 28 + }; 29 + modules.syncthing-server.nixos.services.syncthing = syncthing // { 30 + openDefaultPorts = true; 31 + }; 34 32 }; 35 - }; 36 33 }
+2 -5
modules/toplevel/home.nix
··· 1 - { constants, ... }: 2 1 { 3 2 unify = { 4 3 nixos = 5 - { config, ... }: 4 + { config, hostConfig, ... }: 6 5 { 7 - _module.args.homeConfig = config.home-manager.users.${constants.user}; 6 + _module.args.homeConfig = config.home-manager.users.${hostConfig.primaryUser}; 8 7 home-manager.useUserPackages = true; 9 8 home-manager.useGlobalPkgs = true; 10 9 }; 11 10 12 11 home = { 13 12 home = { 14 - inherit (constants) username; 15 - homeDirectory = "/home/${constants.user}"; 16 13 stateVersion = "22.05"; 17 14 sessionPath = [ "$HOME/.local/bin" ]; 18 15 sessionVariables.NIXPKGS_ALLOW_UNFREE = "1";
+23 -21
modules/toplevel/networking.nix
··· 1 - { lib, constants, ... }: 1 + { lib, ... }: 2 2 { 3 3 unify = { 4 4 modules.remote.nixos.services.tailscale = { ··· 7 7 "--accept-dns=false" 8 8 ]; 9 9 }; 10 - nixos = { 11 - services.tailscale = { 12 - enable = true; 13 - extraSetFlags = [ "--operator=${constants.username}" ]; 14 - }; 15 - networking = { 16 - nftables.enable = true; 17 - wireguard.enable = true; 18 - firewall.interfaces.tailscale0 = { 19 - allowedUDPPortRanges = lib.singleton { 20 - from = 0; 21 - to = 65535; 22 - }; 23 - allowedTCPPortRanges = lib.singleton { 24 - from = 0; 25 - to = 65535; 10 + nixos = 11 + { hostConfig, ... }: 12 + { 13 + services.tailscale = { 14 + enable = true; 15 + extraSetFlags = [ "--operator=${hostConfig.primaryUser}" ]; 16 + }; 17 + networking = { 18 + nftables.enable = true; 19 + wireguard.enable = true; 20 + firewall.interfaces.tailscale0 = { 21 + allowedUDPPortRanges = lib.singleton { 22 + from = 0; 23 + to = 65535; 24 + }; 25 + allowedTCPPortRanges = lib.singleton { 26 + from = 0; 27 + to = 65535; 28 + }; 26 29 }; 27 30 }; 31 + # nixpkgs #180175 32 + systemd.services.NetworkManager-wait-online.enable = false; 33 + systemd.network.wait-online.enable = false; 28 34 }; 29 - # nixpkgs #180175 30 - systemd.services.NetworkManager-wait-online.enable = false; 31 - systemd.network.wait-online.enable = false; 32 - }; 33 35 }; 34 36 }
+23 -18
modules/toplevel/users.nix
··· 1 - { constants, ... }: 2 1 { 3 2 unify = { 4 - modules.server.nixos.users.users.${constants.user}.linger = true; 5 - nixos = { 6 - users = { 7 - groups.${constants.user} = { }; 8 - users.${constants.user} = { 9 - isNormalUser = true; 10 - initialPassword = constants.user; 11 - extraGroups = [ 12 - "wheel" 13 - "video" 14 - "audio" 15 - "networkmanager" 16 - "lp" 17 - "scanner" 18 - "adbusers" 19 - ]; 3 + modules.server.nixos = 4 + { hostConfig, ... }: 5 + { 6 + users.users.${hostConfig.primaryUser}.linger = true; 7 + }; 8 + nixos = 9 + { hostConfig, ... }: 10 + { 11 + users = { 12 + groups.${hostConfig.primaryUser} = { }; 13 + users.${hostConfig.primaryUser} = { 14 + isNormalUser = true; 15 + initialPassword = hostConfig.primaryUser; 16 + extraGroups = [ 17 + "wheel" 18 + "video" 19 + "audio" 20 + "networkmanager" 21 + "lp" 22 + "scanner" 23 + "adbusers" 24 + ]; 25 + }; 20 26 }; 21 27 }; 22 - }; 23 28 }; 24 29 }
+3 -3
modules/toplevel/virtualisation.nix
··· 1 - { lib, constants, ... }: 1 + { lib, ... }: 2 2 { 3 3 unify = { 4 4 modules.virtualisation.nixos = 5 - { pkgs, ... }: 5 + { pkgs, hostConfig, ... }: 6 6 { 7 7 boot.kernelParams = [ "amd_iommu=on" ]; 8 - users.users.${constants.username}.extraGroups = [ "kvm" ]; 8 + users.users.${hostConfig.primaryUser}.extraGroups = [ "kvm" ]; 9 9 programs.virt-manager.enable = true; 10 10 environment.systemPackages = with pkgs; [ 11 11 gnome-boxes
+23 -39
modules/toplevel/xdg.nix
··· 1 - { constants, ... }: 2 - let 3 - inherit (constants) 4 - dataHome 5 - configHome 6 - cacheHome 7 - stateHome 8 - ; 9 - vars = { 10 - # cleaning up ~ 11 - ANDROID_USER_HOME = "${dataHome}/android"; 12 - CARGO_HOME = "${dataHome}/cargo"; 13 - CUDA_CACHE_PATH = "${cacheHome}/nv"; 14 - DOTNET_CLI_HOME = "${dataHome}/dotnet"; 15 - GOPATH = "${dataHome}/go"; 16 - GRADLE_USER_HOME = "${dataHome}/gradle"; 17 - LESSHISTFILE = "${cacheHome}/less/history"; 18 - MPLAYER_HOME = "${configHome}/mplayer"; 19 - NODE_REPL_HISTORY = "${stateHome}/node_repl_history"; 20 - NUGET_PACKAGES = "${cacheHome}/NuGetPackages"; 21 - OCTAVE_HISTFILE = "${cacheHome}/octave-hsts"; 22 - OCTAVE_SITE_INITFILE = "${configHome}/octave/octaverc"; 23 - STACK_ROOT = "${dataHome}/stack"; 24 - WINEPREFIX = "${dataHome}/wine"; 25 - XCOMPOSECACHE = "${cacheHome}/X11/xcompose"; 26 - _Z_DATA = "${dataHome}/z"; 27 - }; 28 - in 29 1 { 30 2 unify = { 31 - home = { 32 - home.sessionVariables = vars; 33 - xdg = { 34 - enable = true; 35 - inherit 36 - configHome 37 - dataHome 38 - cacheHome 39 - stateHome 40 - ; 3 + home = 4 + { config, ... }: 5 + { 6 + xdg.enable = true; 7 + home.sessionVariables = { 8 + # cleaning up ~ 9 + ANDROID_USER_HOME = "${config.xdg.dataHome}/android"; 10 + CARGO_HOME = "${config.xdg.dataHome}/cargo"; 11 + CUDA_CACHE_PATH = "${config.xdg.cacheHome}/nv"; 12 + DOTNET_CLI_HOME = "${config.xdg.dataHome}/dotnet"; 13 + GOPATH = "${config.xdg.dataHome}/go"; 14 + GRADLE_USER_HOME = "${config.xdg.dataHome}/gradle"; 15 + LESSHISTFILE = "${config.xdg.cacheHome}/less/history"; 16 + MPLAYER_HOME = "${config.xdg.configHome}/mplayer"; 17 + NODE_REPL_HISTORY = "${config.xdg.stateHome}/node_repl_history"; 18 + NUGET_PACKAGES = "${config.xdg.cacheHome}/NuGetPackages"; 19 + OCTAVE_HISTFILE = "${config.xdg.cacheHome}/octave-hsts"; 20 + OCTAVE_SITE_INITFILE = "${config.xdg.configHome}/octave/octaverc"; 21 + STACK_ROOT = "${config.xdg.dataHome}/stack"; 22 + WINEPREFIX = "${config.xdg.dataHome}/wine"; 23 + XCOMPOSECACHE = "${config.xdg.cacheHome}/X11/xcompose"; 24 + _Z_DATA = "${config.xdg.dataHome}/z"; 25 + }; 41 26 }; 42 - }; 43 27 modules.workstation = { 44 28 nixos.xdg = { 45 29 portal.enable = true;