nixos/freshrss: add extensions

This commit is contained in:
Felix Buehler 2024-07-01 20:45:20 +02:00
parent bf3e0af6ba
commit bb33682f3a
2 changed files with 49 additions and 13 deletions

View File

@ -5,6 +5,15 @@ let
cfg = config.services.freshrss;
poolName = "freshrss";
extension-env = pkgs.buildEnv {
name = "freshrss-extensions";
paths = cfg.extensions;
};
env-vars = {
DATA_PATH = cfg.dataDir;
THIRDPARTY_EXTENSIONS_PATH = "${extension-env}/share/freshrss/";
};
in
{
meta.maintainers = with maintainers; [ etu stunkymonkey mattchrist ];
@ -14,6 +23,31 @@ in
package = mkPackageOption pkgs "freshrss" { };
extensions = mkOption {
type = types.listOf types.package;
default = [ ];
defaultText = literalExpression "[]";
example = literalExpression ''
with freshrss-extensions; [
youtube
] ++ [
(freshrss-extensions.buildFreshRssExtension {
FreshRssExtUniqueId = "ReadingTime";
pname = "reading-time";
version = "1.5";
src = pkgs.fetchFromGitLab {
domain = "framagit.org";
owner = "Lapineige";
repo = "FreshRSS_Extension-ReadingTime";
rev = "fb6e9e944ef6c5299fa56ffddbe04c41e5a34ebf";
hash = "sha256-C5cRfaphx4Qz2xg2z+v5qRji8WVSIpvzMbethTdSqsk=";
};
})
]
'';
description = "Additional extensions to be used.";
};
defaultUser = mkOption {
type = types.str;
default = "admin";
@ -214,9 +248,7 @@ in
"pm.max_spare_servers" = 5;
"catch_workers_output" = true;
};
phpEnv = {
DATA_PATH = "${cfg.dataDir}";
};
phpEnv = env-vars;
};
};
@ -259,9 +291,7 @@ in
RemainAfterExit = true;
};
restartIfChanged = true;
environment = {
DATA_PATH = cfg.dataDir;
};
environment = env-vars;
script =
let
@ -293,9 +323,7 @@ in
description = "FreshRSS feed updater";
after = [ "freshrss-config.service" ];
startAt = "*:0/5";
environment = {
DATA_PATH = cfg.dataDir;
};
environment = env-vars;
serviceConfig = defaultServiceConfig // {
ExecStart = "${cfg.package}/app/actualize_script.php";
};

View File

@ -3,6 +3,7 @@
, fetchFromGitHub
, nixosTests
, php
, writeText
}:
stdenvNoCC.mkDerivation rec {
@ -16,6 +17,16 @@ stdenvNoCC.mkDerivation rec {
hash = "sha256-AAOON1RdbG6JSnCc123jmIlIXHOE1PE49BV4hcASO/s=";
};
postPatch = ''
patchShebangs cli/*.php app/actualize_script.php
'';
# the thirdparty_extension_path can only be set by config, but should be read by an env-var.
overrideConfig = writeText "constants.local.php" ''
<?php
define('THIRDPARTY_EXTENSIONS_PATH', getenv('THIRDPARTY_EXTENSIONS_PATH') . '/extensions');
'';
buildInputs = [ php ];
# There's nothing to build.
@ -25,13 +36,10 @@ stdenvNoCC.mkDerivation rec {
runHook preInstall
mkdir -p $out
cp -vr * $out/
cp $overrideConfig $out/constants.local.php
runHook postInstall
'';
postPatch = ''
patchShebangs cli/*.php app/actualize_script.php
'';
passthru.tests = {
inherit (nixosTests) freshrss-sqlite freshrss-pgsql freshrss-http-auth freshrss-none-auth;
};