feat: add wrtag

Signed-off-by: Lander Van den Bulcke <landervandenbulcke@gmail.com>
This commit is contained in:
Lander Van den Bulcke 2025-09-22 13:15:04 +02:00
parent a3bd66771e
commit 95bf1530f5
Signed by: lander
GPG key ID: 0142722B4B0C536F
4 changed files with 73 additions and 5 deletions

View file

@ -0,0 +1,53 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.wrtagweb;
settingsFormat = pkgs.formats.keyValue {
mkKeyValue = lib.generators.mkKeyValueDefault { } " ";
listsAsDuplicateKeys = true;
};
in
{
options = {
services.wrtagweb = {
enable = lib.mkEnableOption "wrtag web";
settings = lib.mkOption rec {
type = settingsFormat.type;
apply = lib.recursiveUpdate default;
default = {
web-listen-addr = "127.0.0.1:7373";
path-format = "/data/music/{{ artists .Release.Artists | sort | join \"; \" | safepath }}/({{ .Release.ReleaseGroup.FirstReleaseDate.Year }}) {{ .Release.Title | safepath }}{{ if not (eq .ReleaseDisambiguation \"\") }} ({{ .ReleaseDisambiguation | safepath }}){{ end }}/{{ pad0 2 .TrackNum }}.{{ len .Tracks | pad0 2 }} {{ if .IsCompilation }}{{ artistsString .Track.Artists | safepath }} - {{ end }}{{ .Track.Title | safepath }}{{ .Ext }}";
};
description = ''
Configuration for wrtagweb
'';
};
};
};
config = lib.mkIf cfg.enable {
users.users.wrtagweb = {
enable = true;
isSystemUser = true;
group = "wrtagweb";
};
users.groups.wrtagweb = { };
systemd.services.wrtagweb = {
description = "wrtagweb";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
User = "wrtagweb";
ExecStart = "${pkgs.unstable.wrtag}/bin/wrtagweb -config-path ${settingsFormat.generate "wrtagweb" cfg.settings}";
};
};
};
}