initial liquidsoap service expression
This commit is contained in:
parent
c1f458eb85
commit
21e4ff5624
@ -162,6 +162,7 @@
|
|||||||
systemd-network = 152;
|
systemd-network = 152;
|
||||||
systemd-resolve = 153;
|
systemd-resolve = 153;
|
||||||
systemd-timesync = 154;
|
systemd-timesync = 154;
|
||||||
|
liquidsoap = 155;
|
||||||
|
|
||||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
||||||
|
|
||||||
@ -290,6 +291,7 @@
|
|||||||
systemd-network = 152;
|
systemd-network = 152;
|
||||||
systemd-resolve = 153;
|
systemd-resolve = 153;
|
||||||
systemd-timesync = 154;
|
systemd-timesync = 154;
|
||||||
|
liquidsoap = 155;
|
||||||
|
|
||||||
# When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399!
|
# When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399!
|
||||||
|
|
||||||
|
@ -89,6 +89,7 @@
|
|||||||
./services/audio/alsa.nix
|
./services/audio/alsa.nix
|
||||||
# Disabled as fuppes it does no longer builds.
|
# Disabled as fuppes it does no longer builds.
|
||||||
# ./services/audio/fuppes.nix
|
# ./services/audio/fuppes.nix
|
||||||
|
./services/audio/liquidsoap.nix
|
||||||
./services/audio/mpd.nix
|
./services/audio/mpd.nix
|
||||||
./services/audio/mopidy.nix
|
./services/audio/mopidy.nix
|
||||||
./services/backup/almir.nix
|
./services/backup/almir.nix
|
||||||
|
74
nixos/modules/services/audio/liquidsoap.nix
Normal file
74
nixos/modules/services/audio/liquidsoap.nix
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
streams = builtins.attrNames config.services.liquidsoap.streams;
|
||||||
|
|
||||||
|
streamService =
|
||||||
|
name:
|
||||||
|
let stream = builtins.getAttr name config.services.liquidsoap.streams; in
|
||||||
|
{ inherit name;
|
||||||
|
value = {
|
||||||
|
after = [ "network-online.target" "sound.target" ];
|
||||||
|
description = "${name} liquidsoap stream";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = [ pkgs.wget ];
|
||||||
|
preStart =
|
||||||
|
''
|
||||||
|
mkdir -p /var/log/liquidsoap
|
||||||
|
chown liquidsoap -R /var/log/liquidsoap
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
PermissionsStartOnly="true";
|
||||||
|
ExecStart = "${pkgs.liquidsoap}/bin/liquidsoap ${stream}";
|
||||||
|
User = "liquidsoap";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
##### interface
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
services.liquidsoap.streams = mkOption {
|
||||||
|
|
||||||
|
description =
|
||||||
|
''
|
||||||
|
Set of Liquidsoap streams to start,
|
||||||
|
one systemd service per stream.
|
||||||
|
'';
|
||||||
|
|
||||||
|
default = {};
|
||||||
|
|
||||||
|
example = {
|
||||||
|
myStream1 = literalExample "\"/etc/liquidsoap/myStream1.liq\"";
|
||||||
|
myStream2 = literalExample "./myStream2.liq";
|
||||||
|
myStream3 = literalExample "\"out(playlist(\"/srv/music/\"))\"";
|
||||||
|
};
|
||||||
|
|
||||||
|
type = types.attrsOf (types.either types.path types.str);
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
##### implementation
|
||||||
|
|
||||||
|
config = mkIf (builtins.length streams != 0) {
|
||||||
|
|
||||||
|
users.extraUsers.liquidsoap = {
|
||||||
|
uid = config.ids.uids.liquidsoap;
|
||||||
|
group = "liquidsoap";
|
||||||
|
extraGroups = [ "audio" ];
|
||||||
|
description = "Liquidsoap streaming user";
|
||||||
|
home = "/var/lib/liquidsoap";
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.extraGroups.liquidsoap.gid = config.ids.gids.liquidsoap;
|
||||||
|
|
||||||
|
systemd.services = builtins.listToAttrs ( map streamService streams );
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user