mpd: systemd socket activation

wip/yesman
arcnmx 4 years ago committed by Robert Helgesson
parent 99fbae0ec5
commit c8746fb588
No known key found for this signature in database
GPG Key ID: 36BDAA14C2797E89
  1. 30
      modules/services/mpd.nix

@ -50,7 +50,7 @@ in {
''; '';
}; };
musicDirectory = mkOption { musicDirectory = mkOption {
type = with types; either path str; type = with types; either path str;
default = "${config.home.homeDirectory}/music"; default = "${config.home.homeDirectory}/music";
defaultText = "$HOME/music"; defaultText = "$HOME/music";
@ -96,7 +96,14 @@ in {
''; '';
}; };
network = { network = {
startWhenNeeded = mkOption {
type = types.bool;
default = false;
description = ''
Enable systemd socket activation.
'';
};
listenAddress = mkOption { listenAddress = mkOption {
type = types.str; type = types.str;
@ -143,7 +150,7 @@ in {
Description = "Music Player Daemon"; Description = "Music Player Daemon";
}; };
Install = { Install = mkIf (!cfg.network.startWhenNeeded) {
WantedBy = [ "default.target" ]; WantedBy = [ "default.target" ];
}; };
@ -154,6 +161,23 @@ in {
ExecStartPre = ''${pkgs.bash}/bin/bash -c "${pkgs.coreutils}/bin/mkdir -p '${cfg.dataDir}' '${cfg.playlistDirectory}'"''; ExecStartPre = ''${pkgs.bash}/bin/bash -c "${pkgs.coreutils}/bin/mkdir -p '${cfg.dataDir}' '${cfg.playlistDirectory}'"'';
}; };
}; };
systemd.user.sockets.mpd = mkIf cfg.network.startWhenNeeded {
Socket = {
ListenStream = let
listen =
if cfg.network.listenAddress == "any"
then toString cfg.network.port
else "${cfg.network.listenAddress}:${toString cfg.network.port}";
in [ listen "%t/mpd/socket" ];
Backlog = 5;
KeepAlive = true;
};
Install = {
WantedBy = [ "sockets.target" ];
};
};
}; };
} }

Loading…
Cancel
Save