From 2f06b726061b7e1aa69f718e943da9ffcecd6397 Mon Sep 17 00:00:00 2001 From: bandithedoge Date: Fri, 2 Jan 2026 00:58:41 +0100 Subject: [PATCH] mpd: set network settings as environment variables https://mpd.readthedocs.io/en/stable/client.html#connecting-to-mpd These environment variables are picked up by, amongst others, clients based on libmpdclient: - https://github.com/MusicPlayerDaemon/libmpdclient/blob/2a42a100674bb85fdaa442e639bc20b0976df8b5/src/settings.c#L108 - https://github.com/MusicPlayerDaemon/libmpdclient/blob/2a42a100674bb85fdaa442e639bc20b0976df8b5/src/settings.c#L135 --- .../misc/news/2026/01/2026-01-02_00-03-48.nix | 10 ++++++++++ modules/services/mpd.nix | 17 ++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 modules/misc/news/2026/01/2026-01-02_00-03-48.nix 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) {