Commit 5ac8ff4

HPCesia <me@hpcesia.com>
2026-09-28 16:55:00
yarr: init
1 parent 0f9b32e
Changed files (4)
.secrets
modules
hosts
hyacine
services
services
.secrets/cache/hyacine/ce28f5dfe2cdea78e51b01bb65c8709d1f1ae987841798a034213c1707752589
@@ -0,0 +1,7 @@
+age-encryption.org/v1
+-> ssh-ed25519 diaafw x9ni5OfEqvljUNNToVvjSCtpadG17DXIweDIC94CJU4
+aLAKQUqLv+s5kWr/bA9lwyinbWHTqsBAavRq9sEm65I
+-> *|#ZC}yy-grease Kzy5Kl+ W(#GIv
+rD5a0dkVdB1be1ggeF8v2hk0ZXEIzXQN1/BGoWmRJipxiT/V
+--- Ey53ElfWllXwQZIoGsXagK+MHagMQmauSm9GFtG0UYI
+�ߕ�I����N����<����Q�"F�m����R[]���C)o�ҕK�H���O���T�CV`a'���=ܷ
\ No newline at end of file
modules/hosts/hyacine/services/default.nix
@@ -13,6 +13,8 @@
         privateKeyFileAged = ./xray-private-key.age;
         pubKeyFileAged = ./xray-pub-key.age;
       };
+
+      services.yarr.domain = "rss.hpcesia.com";
     };
   };
 
@@ -23,5 +25,7 @@
 
     services.caddy.reality
     services.xray
+
+    services.yarr
   ];
 }
modules/services/yarr/auth.age
Binary file
modules/services/yarr/default.nix
@@ -0,0 +1,55 @@
+{lib, ...}: {
+  den.aspects.services.yarr = {
+    settings.host = {
+      domain = lib.mkOption {
+        type = lib.types.str;
+      };
+      address = lib.mkOption {
+        type = lib.types.str;
+        default = "127.0.0.1";
+      };
+      port = lib.mkOption {
+        type = lib.types.port;
+        default = 5932;
+      };
+    };
+
+    persist = {
+      directories = [
+        {
+          directory = "/var/lib/private/yarr";
+          user = "nobody";
+          group = "nogroup";
+          mode = "0700";
+        }
+      ];
+    };
+
+    reverseProxy = {host, ...}: let
+      cfg = host.settings.services.yarr;
+    in {
+      ${cfg.domain} = {
+        port = cfg.port;
+      };
+    };
+
+    nixos = {
+      host,
+      config,
+      ...
+    }: let
+      cfg = host.settings.services.yarr;
+    in {
+      services.yarr = {
+        enable = true;
+
+        inherit (cfg) address port;
+        baseUrl = "https://${cfg.domain}";
+
+        authFilePath = config.vaultix.secrets.yarr-auth.path;
+      };
+
+      vaultix.secrets.yarr-auth.file = ./auth.age;
+    };
+  };
+}