nixos/squeezelite: add support for PulseAudio version

This commit is contained in:
Peter Hoeg 2021-02-10 10:30:38 +08:00
parent 158211b6a1
commit d853dc52d8

View file

@ -1,50 +1,46 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib;
let let
inherit (lib) mkEnableOption mkIf mkOption optionalString types;
dataDir = "/var/lib/squeezelite"; dataDir = "/var/lib/squeezelite";
cfg = config.services.squeezelite; cfg = config.services.squeezelite;
pkg = if cfg.pulseAudio then pkgs.squeezelite-pulse else pkgs.squeezelite;
bin = "${pkg}/bin/${pkg.pname}";
in { in
{
###### interface ###### interface
options = { options.services.squeezelite = {
enable = mkEnableOption "Squeezelite, a software Squeezebox emulator";
services.squeezelite= { pulseAudio = mkEnableOption "pulseaudio support";
enable = mkEnableOption "Squeezelite, a software Squeezebox emulator";
extraArguments = mkOption {
default = "";
type = types.str;
description = ''
Additional command line arguments to pass to Squeezelite.
'';
};
extraArguments = mkOption {
default = "";
type = types.str;
description = ''
Additional command line arguments to pass to Squeezelite.
'';
}; };
}; };
###### implementation ###### implementation
config = mkIf cfg.enable { config = mkIf cfg.enable {
systemd.services.squeezelite = {
systemd.services.squeezelite= {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" "sound.target" ]; after = [ "network.target" "sound.target" ];
description = "Software Squeezebox emulator"; description = "Software Squeezebox emulator";
serviceConfig = { serviceConfig = {
DynamicUser = true; DynamicUser = true;
ExecStart = "${pkgs.squeezelite}/bin/squeezelite -N ${dataDir}/player-name ${cfg.extraArguments}"; ExecStart = "${bin} -N ${dataDir}/player-name ${cfg.extraArguments}";
StateDirectory = builtins.baseNameOf dataDir; StateDirectory = builtins.baseNameOf dataDir;
SupplementaryGroups = "audio"; SupplementaryGroups = "audio";
}; };
}; };
}; };
} }