From 52f450b4c5bb178533574dca2de193de9b66b4ba Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Mon, 25 Jan 2021 08:32:21 +0100
Subject: ma office-radio: init

---
 .../2configs/bureautomation/office-radio/mpd.nix   | 58 ++++++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100644 makefu/2configs/bureautomation/office-radio/mpd.nix

(limited to 'makefu/2configs/bureautomation/office-radio/mpd.nix')

diff --git a/makefu/2configs/bureautomation/office-radio/mpd.nix b/makefu/2configs/bureautomation/office-radio/mpd.nix
new file mode 100644
index 000000000..4fc31fff9
--- /dev/null
+++ b/makefu/2configs/bureautomation/office-radio/mpd.nix
@@ -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;
+  }
-- 
cgit v1.2.3