From 95bf1530f50d71d6314a0cadaa61530b65766166 Mon Sep 17 00:00:00 2001 From: Lander Van den Bulcke Date: Mon, 22 Sep 2025 13:15:04 +0200 Subject: [PATCH] feat: add wrtag Signed-off-by: Lander Van den Bulcke --- flake.nix | 9 +++--- hosts/servers/hosting-02.nix | 15 +++++++++- modules/nixos/default.nix | 1 + modules/nixos/wrtagweb.nix | 53 ++++++++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 modules/nixos/wrtagweb.nix diff --git a/flake.nix b/flake.nix index b1fa3fe..8ee7a57 100644 --- a/flake.nix +++ b/flake.nix @@ -81,7 +81,7 @@ ); }; in - { + rec { # custom pkgs packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system}); @@ -191,8 +191,9 @@ imports = [ inputs.disko.nixosModules.disko inputs.sops-nix.nixosModules.sops - inputs.self.nixosModules.namespaced-vpn - inputs.self.nixosModules.storagebox + nixosModules.namespaced-vpn + nixosModules.storagebox + nixosModules.wrtagweb ./hosts/servers/common.nix @@ -214,7 +215,7 @@ meta = { nixpkgs = import nixpkgs { system = "aarch64-linux"; - overlays = [ ]; + overlays = [ overlays.unstable-packages ]; }; }; } diff --git a/hosts/servers/hosting-02.nix b/hosts/servers/hosting-02.nix index b6eb4d8..41757e0 100644 --- a/hosts/servers/hosting-02.nix +++ b/hosts/servers/hosting-02.nix @@ -1,5 +1,6 @@ { config, + pkgs, ... }: { @@ -56,7 +57,10 @@ users.groups.storage = { name = "storage"; gid = 491729; - members = [ "slskd" ]; + members = [ + "slskd" + "wrtagweb" + ]; }; 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 = { defaultSopsFile = ./hosting-02.yaml; secrets = { diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 9647026..7fda7c0 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -2,4 +2,5 @@ # my-module = import ./my-module.nix namespaced-vpn = import ./namespaced-vpn.nix; storagebox = import ./storagebox.nix; + wrtagweb = import ./wrtagweb.nix; } diff --git a/modules/nixos/wrtagweb.nix b/modules/nixos/wrtagweb.nix new file mode 100644 index 0000000..f998b64 --- /dev/null +++ b/modules/nixos/wrtagweb.nix @@ -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}"; + }; + }; + }; +}