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

@ -81,7 +81,7 @@
); );
}; };
in in
{ rec {
# custom pkgs # custom pkgs
packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system}); packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
@ -191,8 +191,9 @@
imports = [ imports = [
inputs.disko.nixosModules.disko inputs.disko.nixosModules.disko
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
inputs.self.nixosModules.namespaced-vpn nixosModules.namespaced-vpn
inputs.self.nixosModules.storagebox nixosModules.storagebox
nixosModules.wrtagweb
./hosts/servers/common.nix ./hosts/servers/common.nix
@ -214,7 +215,7 @@
meta = { meta = {
nixpkgs = import nixpkgs { nixpkgs = import nixpkgs {
system = "aarch64-linux"; system = "aarch64-linux";
overlays = [ ]; overlays = [ overlays.unstable-packages ];
}; };
}; };
} }

View file

@ -1,5 +1,6 @@
{ {
config, config,
pkgs,
... ...
}: }:
{ {
@ -56,7 +57,10 @@
users.groups.storage = { users.groups.storage = {
name = "storage"; name = "storage";
gid = 491729; gid = 491729;
members = [ "slskd" ]; members = [
"slskd"
"wrtagweb"
];
}; };
services.nginx.virtualHosts."sls.escapeangle.com" = { services.nginx.virtualHosts."sls.escapeangle.com" = {
@ -86,6 +90,15 @@
}; };
}; };
environment.systemPackages = with pkgs; [
unstable.wrtag
];
services.wrtagweb = {
enable = true;
settings.web-api-key = "test";
};
sops = { sops = {
defaultSopsFile = ./hosting-02.yaml; defaultSopsFile = ./hosting-02.yaml;
secrets = { secrets = {

View file

@ -2,4 +2,5 @@
# my-module = import ./my-module.nix # my-module = import ./my-module.nix
namespaced-vpn = import ./namespaced-vpn.nix; namespaced-vpn = import ./namespaced-vpn.nix;
storagebox = import ./storagebox.nix; storagebox = import ./storagebox.nix;
wrtagweb = import ./wrtagweb.nix;
} }

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}";
};
};
};
}