about summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2021-03-05 22:45:50 +0100
committerProfpatsch <mail@profpatsch.de>2021-03-05 22:56:29 +0100
commitad93ce770eb5f25a06a8c5cc87aa7287edd04f3e (patch)
tree907c0ea38baea20bf153b4be9bbfe6bdd1ccf09c /modules
parentb79a8de38f9e3d2e48b3acb0e0264f1594f2fd60 (diff)
services/Profpatsch: add gonic server & enable on haku
gonic is a modern alternative to mpd, it indexes music directories and
provides a server with a protocol to request files and metadata.

It has an Android app.
Diffstat (limited to 'modules')
-rw-r--r--modules/module-list.nix1
-rw-r--r--modules/user/profpatsch/services/gonic.nix57
2 files changed, 58 insertions, 0 deletions
diff --git a/modules/module-list.nix b/modules/module-list.nix
index ded01dab..42543814 100644
--- a/modules/module-list.nix
+++ b/modules/module-list.nix
@@ -39,6 +39,7 @@
   ./user/profpatsch/programs/scanning.nix
   ./user/profpatsch/programs/weechat.nix
   ./user/profpatsch/services/bitlbee.nix
+  ./user/profpatsch/services/gonic.nix
   ./user/profpatsch/services/dunst.nix
   ./user/sternenseemann/documentation/mandoc.nix
   ./user/sternenseemann/services/sway.nix
diff --git a/modules/user/profpatsch/services/gonic.nix b/modules/user/profpatsch/services/gonic.nix
new file mode 100644
index 00000000..73ccde7c
--- /dev/null
+++ b/modules/user/profpatsch/services/gonic.nix
@@ -0,0 +1,57 @@
+{ config, lib, pkgs, ... }:
+
+let
+  cfg = config.vuizvui.services.profpatsch.gonic;
+  gonicDataDir = "/var/lib/gonic";
+  userName = "gonic";
+
+  inherit (pkgs.vuizvui.profpatsch)
+    writeExecline
+    lru-dir
+    getBins
+    ;
+
+  bins = getBins pkgs.gonic [ "gonic" ]
+    ;
+
+in {
+
+   options.vuizvui.services.profpatsch.gonic = {
+     enable = lib.mkEnableOption "gonic server";
+
+     musicDir = lib.mkOption {
+       description = "path to the music directory";
+       type = lib.types.path;
+     };
+     musicDirGroup = lib.mkOption {
+       description = "user group to access music directory";
+       type = lib.types.str;
+     };
+
+   };
+
+   config = lib.mkIf cfg.enable {
+     users.users.${userName} = {
+       isSystemUser = true;
+       createHome = true;
+       home = gonicDataDir;
+     };
+
+     systemd.services.gonic = {
+       wantedBy = [ "default.target" ];
+       serviceConfig = {
+         ExecStart = writeExecline "start-gonic" {} [
+           bins.gonic
+           "-listen-addr" "127.0.0.1:4747"
+           "-cache-path" "${gonicDataDir}/cache"
+           "-db-path" "${gonicDataDir}/db.sqlite"
+           "-music-path" cfg.musicDir
+         ];
+         StateDirectory = gonicDataDir;
+         User = userName;
+         SupplementaryGroups = cfg.musicDirGroup;
+       };
+     };
+
+   };
+}