summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorMatthew Justin Bauer <mjbauer95@gmail.com>2018-03-22 11:11:17 -0500
committerGitHub <noreply@github.com>2018-03-22 11:11:17 -0500
commit779c25b2fe88e09c490925a85c00b1dacb98a829 (patch)
treedb64efe931e0a92a800b45c3da10c57ef0e525d4 /nixos
parente35105c7c872bb9708cfa1c24158a74f354ab5f8 (diff)
parent53682b90943e2b5387fcc92c1b7545ea52dbd527 (diff)
Merge pull request #34053 from thpham/serviio
serviio: init at 1.9
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/misc/serviio.nix92
2 files changed, 93 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index c7c99d0cd83d..d47600fbc61a 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -363,6 +363,7 @@
./services/misc/rippled.nix
./services/misc/ripple-data-api.nix
./services/misc/rogue.nix
+ ./services/misc/serviio.nix
./services/misc/siproxd.nix
./services/misc/snapper.nix
./services/misc/sonarr.nix
diff --git a/nixos/modules/services/misc/serviio.nix b/nixos/modules/services/misc/serviio.nix
new file mode 100644
index 000000000000..a6612e9c6adb
--- /dev/null
+++ b/nixos/modules/services/misc/serviio.nix
@@ -0,0 +1,92 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.services.serviio;
+
+ serviioStart = pkgs.writeScript "serviio.sh" ''
+ #!${pkgs.bash}/bin/sh
+
+ SERVIIO_HOME=${pkgs.serviio}
+
+ # Setup the classpath
+ SERVIIO_CLASS_PATH="$SERVIIO_HOME/lib/*:$SERVIIO_HOME/config"
+
+ # Setup Serviio specific properties
+ JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Dorg.restlet.engine.loggerFacadeClass=org.restlet.ext.slf4j.Slf4jLoggerFacade
+ -Dderby.system.home=${cfg.dataDir}/library -Dserviio.home=${cfg.dataDir} -Dffmpeg.location=${pkgs.ffmpeg}/bin/ffmpeg -Ddcraw.location=${pkgs.dcraw}/bin/dcraw"
+
+ # Execute the JVM in the foreground
+ exec ${pkgs.jre}/bin/java -Xmx512M -Xms20M -XX:+UseG1GC -XX:GCTimeRatio=1 -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 $JAVA_OPTS -classpath "$SERVIIO_CLASS_PATH" org.serviio.MediaServer "$@"
+ '';
+
+in {
+
+ ###### interface
+ options = {
+ services.serviio = {
+
+ enable = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Whether to enable the Serviio Media Server.
+ '';
+ };
+
+ dataDir = mkOption {
+ type = types.path;
+ default = "/var/lib/serviio";
+ description = ''
+ The directory where serviio stores its state, data, etc.
+ '';
+ };
+
+ };
+ };
+
+ ###### implementation
+
+ config = mkIf cfg.enable {
+ systemd.services.serviio = {
+ description = "Serviio Media Server";
+ after = [ "local-fs.target" "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+ path = [ pkgs.serviio ];
+ serviceConfig = {
+ User = "serviio";
+ Group = "serviio";
+ ExecStart = "${serviioStart}";
+ ExecStop = "${serviioStart} -stop";
+ };
+ };
+
+ users.extraUsers = [
+ {
+ name = "serviio";
+ group = "serviio";
+ home = cfg.dataDir;
+ description = "Serviio Media Server User";
+ createHome = true;
+ isSystemUser = true;
+ }
+ ];
+
+ users.extraGroups = [
+ { name = "serviio";}
+ ];
+
+ networking.firewall = {
+ allowedTCPPorts = [
+ 8895 # serve UPnP responses
+ 23423 # console
+ 23424 # mediabrowser
+ ];
+ allowedUDPPorts = [
+ 1900 # UPnP service discovey
+ ];
+ };
+ };
+}