ma office-radio: init
This commit is contained in:
parent
dfcf2c4282
commit
52f450b4c5
6
makefu/2configs/bureautomation/office-radio/default.nix
Normal file
6
makefu/2configs/bureautomation/office-radio/default.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./mpd.nix
|
||||||
|
./webserver.nix
|
||||||
|
];
|
||||||
|
}
|
58
makefu/2configs/bureautomation/office-radio/mpd.nix
Normal file
58
makefu/2configs/bureautomation/office-radio/mpd.nix
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
mpds = import ./mpdconfig.nix;
|
||||||
|
systemd_mpd = name: value: let
|
||||||
|
path = "/var/lib/mpd-${name}";
|
||||||
|
num = lib.strings.fixedWidthNumber 2 value;
|
||||||
|
mpdconf = pkgs.writeText "mpd-config-${name}" ''
|
||||||
|
music_directory "${path}/music"
|
||||||
|
playlist_directory "${path}/playlists"
|
||||||
|
db_file "${path}/tag_cache"
|
||||||
|
state_file "${path}/state"
|
||||||
|
sticker_file "${path}/sticker.sql"
|
||||||
|
|
||||||
|
bind_to_address "127.0.0.1"
|
||||||
|
port "66${num}"
|
||||||
|
log_level "default"
|
||||||
|
auto_update "yes"
|
||||||
|
audio_output {
|
||||||
|
type "httpd"
|
||||||
|
name "Office Radio ${num} - ${name}"
|
||||||
|
encoder "vorbis" # optional
|
||||||
|
port "280${num}"
|
||||||
|
quality "5.0" # do not define if bitrate is defined
|
||||||
|
# bitrate "128" # do not define if quality is defined
|
||||||
|
format "44100:16:2"
|
||||||
|
always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped.
|
||||||
|
tags "yes" # httpd supports sending tags to listening streams.
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
after = [ "network.target" ];
|
||||||
|
description = "Office Radio MPD ${toString value} - ${name}";
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
serviceConfig = {
|
||||||
|
#User = "mpd";
|
||||||
|
DynamicUser = true;
|
||||||
|
ExecStart = "${pkgs.mpd}/bin/mpd --no-daemon ${mpdconf}";
|
||||||
|
LimitRTPRIO = 50;
|
||||||
|
LimitRTTIME = "infinity";
|
||||||
|
ProtectSystem = true;
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX AF_NETLINK";
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
Restart = "always";
|
||||||
|
StateDirectory = [ "mpd-${name}" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
systemd.services = lib.attrsets.mapAttrs' (name: value:
|
||||||
|
lib.attrsets.nameValuePair
|
||||||
|
("office-radio-" +name) (systemd_mpd name value))
|
||||||
|
mpds;
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"cybertisch1" = 0;
|
||||||
|
"cybertisch2" = 1;
|
||||||
|
"cyberklo" = 2;
|
||||||
|
"baellebad" = 3;
|
||||||
|
}
|
40
makefu/2configs/bureautomation/office-radio/webserver.nix
Normal file
40
makefu/2configs/bureautomation/office-radio/webserver.nix
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
mpds = import ./mpdconfig.nix;
|
||||||
|
pkg = pkgs.office-radio;
|
||||||
|
in {
|
||||||
|
systemd.services.office-radio-appsrv = {
|
||||||
|
after = [ "network.target" ];
|
||||||
|
description = "Office Radio Appserver";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkg}/bin/office-radio";
|
||||||
|
DynamicUser = true;
|
||||||
|
ProtectSystem = true;
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX AF_NETLINK";
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.services.office-radio-stopper = {
|
||||||
|
after = [ "network.target" ];
|
||||||
|
description = "Office Radio Script to stop idle streams";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkg}/bin/stop-idle-streams";
|
||||||
|
DynamicUser = true;
|
||||||
|
ProtectSystem = true;
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX AF_NETLINK";
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user