push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
{
stdenvNoCC,
lib,
fetchFromGitHub,
nixosTests,
php,
writeText,
}:
stdenvNoCC.mkDerivation rec {
pname = "FreshRSS";
version = "1.27.1";
src = fetchFromGitHub {
owner = "FreshRSS";
repo = "FreshRSS";
rev = version;
hash = "sha256-EpszwgYzobRA7LohtJJtgTefFAEmCXvcP3ilfsu+obo=";
};
postPatch = ''
patchShebangs cli/*.php app/actualize_script.php
'';
# THIRDPARTY_EXTENSIONS_PATH can only be set by config, but should be read from an env-var.
overrideConfig = writeText "constants.local.php" ''
<?php
$thirdpartyExtensionsPath = getenv('THIRDPARTY_EXTENSIONS_PATH');
if (is_string($thirdpartyExtensionsPath) && $thirdpartyExtensionsPath !== "") {
define('THIRDPARTY_EXTENSIONS_PATH', $thirdpartyExtensionsPath . '/extensions');
}
'';
buildInputs = [ php ];
# There's nothing to build.
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out
cp -vr * $out/
cp $overrideConfig $out/constants.local.php
runHook postInstall
'';
passthru.tests = {
inherit (nixosTests) freshrss;
};
meta = with lib; {
description = "FreshRSS is a free, self-hostable RSS aggregator";
homepage = "https://www.freshrss.org/";
license = licenses.agpl3Plus;
maintainers = with maintainers; [
stunkymonkey
];
};
}

View File

@@ -0,0 +1,140 @@
{
config,
lib,
fetchFromGitHub,
fetchFromGitLab,
callPackage,
}:
let
buildFreshRssExtension = (callPackage ./freshrss-utils.nix { }).buildFreshRssExtension;
official_extensions_version = "unstable-2024-04-27";
official_extensions_src = fetchFromGitHub {
owner = "FreshRSS";
repo = "Extensions";
rev = "71de129744ba37fd4cf363b78445f5345bc6d0b7";
hash = "sha256-A+hOjbGNfhwTOAMeo08MUdqfWxxetzLz865oQQDsQlg=";
};
baseExtensions =
_self:
lib.mapAttrs (_n: lib.recurseIntoAttrs) {
auto-ttl = buildFreshRssExtension rec {
FreshRssExtUniqueId = "AutoTTL";
pname = "auto-ttl";
version = "0.5.0";
src = fetchFromGitHub {
owner = "mgnsk";
repo = "FreshRSS-AutoTTL";
rev = "v${version}";
hash = "sha256-OiTiLZ2BjQD1W/BD8EkUt7WB2wOjL6GMGJ+APT4YpwE=";
};
meta = {
description = "FreshRSS extension for automatic feed refresh TTL based on the average frequency of entries";
homepage = "https://github.com/mgnsk/FreshRSS-AutoTTL";
license = lib.licenses.agpl3Only;
maintainers = [ lib.maintainers.stunkymonkey ];
};
};
demo = buildFreshRssExtension {
FreshRssExtUniqueId = "Demo";
pname = "demo";
version = "unstable-2023-12-22";
src = fetchFromGitHub {
owner = "FreshRSS";
repo = "xExtension-Demo";
rev = "8d60f71a2f0411f5fbbb1f88a57791cee0848f35";
hash = "sha256-5fe8TjefSiGMaeZkurxSJjX8qEEa1ArhJxDztp7ZNZc=";
};
meta = {
description = "FreshRSS Extension for the demo version";
homepage = "https://github.com/FreshRSS/xExtension-Demo";
license = lib.licenses.agpl3Only;
maintainers = [ lib.maintainers.stunkymonkey ];
};
};
reading-time = buildFreshRssExtension {
FreshRssExtUniqueId = "ReadingTime";
pname = "reading-time";
version = "1.5";
src = fetchFromGitLab {
domain = "framagit.org";
owner = "Lapineige";
repo = "FreshRSS_Extension-ReadingTime";
rev = "fb6e9e944ef6c5299fa56ffddbe04c41e5a34ebf";
hash = "sha256-C5cRfaphx4Qz2xg2z+v5qRji8WVSIpvzMbethTdSqsk=";
};
meta = {
description = "FreshRSS extension adding a reading time estimation next to each article";
homepage = "https://framagit.org/Lapineige/FreshRSS_Extension-ReadingTime";
license = lib.licenses.agpl3Only;
maintainers = [ lib.maintainers.stunkymonkey ];
};
};
reddit-image = buildFreshRssExtension rec {
FreshRssExtUniqueId = "RedditImage";
pname = "reddit-image";
version = "1.2.0";
src = fetchFromGitHub {
owner = "aledeg";
repo = "xExtension-RedditImage";
rev = "v${version}";
hash = "sha256-H/uxt441ygLL0RoUdtTn9Q6Q/Ois8RHlhF8eLpTza4Q=";
};
meta = {
description = "FreshRSS extension to process Reddit feeds";
homepage = "https://github.com/aledeg/xExtension-RedditImage";
license = lib.licenses.agpl3Only;
maintainers = [ lib.maintainers.stunkymonkey ];
};
};
title-wrap = buildFreshRssExtension {
FreshRssExtUniqueId = "TitleWrap";
pname = "title-wrap";
version = official_extensions_version;
src = official_extensions_src;
sourceRoot = "${official_extensions_src.name}/xExtension-TitleWrap";
meta = {
description = "FreshRSS extension instead of truncating the title is wrapped";
homepage = "https://github.com/FreshRSS/Extensions/tree/master/xExtension-TitleWrap";
license = lib.licenses.agpl3Only;
maintainers = [ lib.maintainers.stunkymonkey ];
};
};
youtube = buildFreshRssExtension {
FreshRssExtUniqueId = "YouTube";
pname = "youtube";
version = official_extensions_version;
src = official_extensions_src;
sourceRoot = "${official_extensions_src.name}/xExtension-YouTube";
meta = {
description = "FreshRSS extension allows you to directly watch YouTube/PeerTube videos from within subscribed channel feeds";
homepage = "https://github.com/FreshRSS/Extensions/tree/master/xExtension-YouTube";
license = lib.licenses.agpl3Only;
maintainers = [ lib.maintainers.stunkymonkey ];
};
};
};
# add possibility to define aliases
aliases = super: {
# example: RedditImage = super.reddit-image;
};
# overlays will be applied left to right, overrides should come after aliases.
overlays = lib.optionals config.allowAliases [
(_self: super: lib.recursiveUpdate super (aliases super))
];
toFix = lib.foldl' (lib.flip lib.extends) baseExtensions overlays;
in
(lib.fix toFix)
// {
inherit buildFreshRssExtension;
}

View File

@@ -0,0 +1,57 @@
{ stdenv, unzip }:
let
buildFreshRssExtension =
args@{
pname,
version,
src,
FreshRssExtUniqueId,
configurePhase ? ''
runHook preConfigure
runHook postConfigure
'',
buildPhase ? ''
runHook preBuild
runHook postBuild
'',
dontPatchELF ? true,
dontStrip ? true,
passthru ? { },
sourceRoot ? "source",
...
}:
stdenv.mkDerivation (
(removeAttrs args [ "FreshRssExtUniqueId" ])
// {
pname = "freshrss-extension-${pname}";
inherit
version
src
configurePhase
buildPhase
dontPatchELF
dontStrip
sourceRoot
;
installPrefix = "share/freshrss/extensions/xExtension-${FreshRssExtUniqueId}";
installPhase = ''
runHook preInstall
mkdir -p "$out/$installPrefix"
find . -mindepth 1 -maxdepth 1 | xargs -d'\n' mv -t "$out/$installPrefix/"
runHook postInstall
'';
passthru = passthru // {
inherit FreshRssExtUniqueId;
};
}
);
in
{
inherit buildFreshRssExtension;
}