diff options
Diffstat (limited to 'home-manager/modules/targets')
-rw-r--r-- | home-manager/modules/targets/darwin.nix | 16 | ||||
-rw-r--r-- | home-manager/modules/targets/generic-linux.nix | 52 |
2 files changed, 68 insertions, 0 deletions
diff --git a/home-manager/modules/targets/darwin.nix b/home-manager/modules/targets/darwin.nix new file mode 100644 index 00000000000..cd7d8e289cf --- /dev/null +++ b/home-manager/modules/targets/darwin.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: + +{ + # Disabled for now due to conflicting behavior with nix-darwin. See + # https://github.com/rycee/home-manager/issues/1341#issuecomment-687286866 + config = lib.mkIf (false && pkgs.stdenv.hostPlatform.isDarwin) { + # Install MacOS applications to the user environment. + home.file."Applications/Home Manager Apps".source = let + apps = pkgs.buildEnv { + name = "home-manager-applications"; + paths = config.home.packages; + pathsToLink = "/Applications"; + }; + in "${apps}/Applications"; + }; +} diff --git a/home-manager/modules/targets/generic-linux.nix b/home-manager/modules/targets/generic-linux.nix new file mode 100644 index 00000000000..47fcc87b3c0 --- /dev/null +++ b/home-manager/modules/targets/generic-linux.nix @@ -0,0 +1,52 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + profileDirectory = config.home.profileDirectory; + +in { + options.targets.genericLinux = { + enable = mkEnableOption "" // { + description = '' + Whether to enable settings that make Home Manager work better on + GNU/Linux distributions other than NixOS. + ''; + }; + + extraXdgDataDirs = mkOption { + type = types.listOf types.str; + default = [ ]; + example = [ "/usr/share" "/usr/local/share" ]; + description = '' + List of directory names to add to <envar>XDG_DATA_DIRS</envar>. + ''; + }; + }; + + config = mkIf config.targets.genericLinux.enable { + home.sessionVariables = let + profiles = + [ "\${NIX_STATE_DIR:-/nix/var/nix}/profiles/default" profileDirectory ]; + dataDirs = concatStringsSep ":" + (map (profile: "${profile}/share") profiles + ++ config.targets.genericLinux.extraXdgDataDirs); + in { XDG_DATA_DIRS = "${dataDirs}\${XDG_DATA_DIRS:+:}$XDG_DATA_DIRS"; }; + + home.sessionVariablesExtra = '' + . "${pkgs.nix}/etc/profile.d/nix.sh" + ''; + + # We need to source both nix.sh and hm-session-vars.sh as noted in + # https://github.com/rycee/home-manager/pull/797#issuecomment-544783247 + programs.bash.initExtra = '' + . "${pkgs.nix}/etc/profile.d/nix.sh" + . "${profileDirectory}/etc/profile.d/hm-session-vars.sh" + ''; + + systemd.user.sessionVariables = { + NIX_PATH = "$HOME/.nix-defexpr/channels\${NIX_PATH:+:}$NIX_PATH"; + }; + }; +} |