From ad93ce770eb5f25a06a8c5cc87aa7287edd04f3e Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Fri, 5 Mar 2021 22:45:50 +0100 Subject: 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. --- modules/user/profpatsch/services/gonic.nix | 57 ++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 modules/user/profpatsch/services/gonic.nix (limited to 'modules/user') 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; + }; + }; + + }; +} -- cgit 1.4.1