diff --git a/modules/misc/news/2026/01/2026-01-02_00-03-48.nix b/modules/misc/news/2026/01/2026-01-02_00-03-48.nix new file mode 100644 index 00000000..72d6640a --- /dev/null +++ b/modules/misc/news/2026/01/2026-01-02_00-03-48.nix @@ -0,0 +1,10 @@ +{ config, ... }: +{ + time = "2026-01-02T00:03:48+00:00"; + condition = config.services.mpd.enable; + message = '' + `MPD_HOST` and `MPD_PORT` environment variables are now set automatically. + + This can be disabled with `services.mpd.enableSessionVariables = false`. + ''; +} diff --git a/modules/services/mpd.nix b/modules/services/mpd.nix index eba7d672..981fb6c2 100644 --- a/modules/services/mpd.nix +++ b/modules/services/mpd.nix @@ -22,6 +22,15 @@ in package = lib.mkPackageOption pkgs "mpd" { }; + enableSessionVariables = mkOption { + type = types.bool; + default = true; + description = '' + Whether to set {env}`MPD_HOST` {env}`MPD_PORT` environment variables + according to {option}`services.mpd.network`. + ''; + }; + musicDirectory = mkOption { type = with types; either path str; defaultText = lib.literalExpression '' @@ -155,7 +164,13 @@ in ); in mkIf cfg.enable { - home.packages = [ cfg.package ]; + home = { + packages = [ cfg.package ]; + sessionVariables = mkIf cfg.enableSessionVariables { + MPD_HOST = mkIf (cfg.network.listenAddress != "any") cfg.network.listenAddress; + MPD_PORT = builtins.toString cfg.network.port; + }; + }; services.mpd = lib.mkMerge [ (mkIf (lib.versionAtLeast config.home.stateVersion "22.11" && config.xdg.userDirs.enable) {