From 9d23692cf90707e1e1b46c80bcd241841a338a2b Mon Sep 17 00:00:00 2001 From: Andre Date: Mon, 2 Dec 2024 14:32:24 -0500 Subject: [PATCH] Services: add FreshRSS --- hosts/Hevana/default.nix | 10 ++ modules/secrets/default.nix | 220 ++++++++++++++++++------------------ modules/services/rss.nix | 69 +++++++++++ 3 files changed, 191 insertions(+), 108 deletions(-) create mode 100644 modules/services/rss.nix diff --git a/hosts/Hevana/default.nix b/hosts/Hevana/default.nix index 4850d7e..3cd7078 100644 --- a/hosts/Hevana/default.nix +++ b/hosts/Hevana/default.nix @@ -27,6 +27,7 @@ let languagetool.url netdata.url qbittorrent.url + rss.url ]; in { @@ -248,6 +249,15 @@ in ]; }; }; + rss = { + enable = true; + home = "${services-root}/freshrss"; + url = config.secrets.services.rss.url; + auth = with config.secrets.services.rss.auth; { + user = user; + password = password; + }; + }; ssh = { enable = true; ports = [ config.secrets.hosts.hevana.ssh.port ]; diff --git a/modules/secrets/default.nix b/modules/secrets/default.nix index f6b3fc7..a07003e 100644 --- a/modules/secrets/default.nix +++ b/modules/secrets/default.nix @@ -1,108 +1,112 @@ -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 -QIOv0aGXGLLkbC5f3WU+RA== +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 diff --git a/modules/services/rss.nix b/modules/services/rss.nix new file mode 100644 index 0000000..f77931a --- /dev/null +++ b/modules/services/rss.nix @@ -0,0 +1,69 @@ +{ + pkgs, + config, + lib, + ... +}: +let + cfg = config.aux.system.services.rss; +in +{ + options = { + aux.system.services.rss = { + enable = lib.mkEnableOption "Enables RSS hosting service via FreshRSS."; + auth = { + password = lib.mkOption { + default = ""; + type = lib.types.str; + description = "The password to use for the default user."; + example = "MySuperSecurePassword123"; + }; + user = lib.mkOption { + default = "ltuser"; + type = lib.types.str; + description = "The username to use for the default user."; + }; + }; + home = lib.mkOption { + default = ""; + type = lib.types.str; + description = "Where to store FreshRSS's files"; + example = "/home/freshrss"; + }; + url = lib.mkOption { + default = ""; + type = lib.types.str; + description = "The complete URL where FreshRSS is hosted."; + example = "https://rss.example.com"; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services = { + freshrss = { + enable = true; + baseUrl = cfg.url; + dataDir = cfg.home; + defaultUser = cfg.auth.user; + passwordFile = pkgs.writeText "rss-defaultpassword" '' + ${cfg.auth.password} + ''; + authType = "form"; + database.type = "sqlite"; + + virtualHost = cfg.url; + }; + + nginx.virtualHosts."${cfg.url}" = { + useACMEHost = pkgs.util.getDomainFromURL cfg.url; + forceSSL = true; + }; + }; + + systemd.services = { + freshrss.unitConfig.RequiresMountsFor = cfg.home; + nginx.wants = [ config.systemd.services.freshrss.name ]; + }; + }; +}