From f3dafc0ad9cc2797b6248e9a018a57afadc416bd Mon Sep 17 00:00:00 2001 From: Amadej Kastelic Date: Sun, 14 Sep 2025 09:34:51 +0200 Subject: [PATCH 1/4] folo: add nix-update-script (cherry picked from commit ba94a714ea2c71501bd47e876191613a166011d0) --- pkgs/by-name/fo/folo/package.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/by-name/fo/folo/package.nix b/pkgs/by-name/fo/folo/package.nix index c48cb706ac23..811774cfc4a0 100644 --- a/pkgs/by-name/fo/folo/package.nix +++ b/pkgs/by-name/fo/folo/package.nix @@ -1,6 +1,7 @@ { electron, fetchFromGitHub, + nix-update-script, imagemagick, lib, makeDesktopItem, @@ -120,6 +121,13 @@ stdenv.mkDerivation rec { runHook postInstall ''; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^desktop/v([0-9]+\\.[0-9]+\\.[0-9]+)$" + ]; + }; + meta = { description = "Next generation information browser"; homepage = "https://github.com/RSSNext/Folo"; From 9421fae9fc9b57d973d73023daf173a22797e1ee Mon Sep 17 00:00:00 2001 From: Amadej Kastelic Date: Sun, 14 Sep 2025 09:43:56 +0200 Subject: [PATCH 2/4] folo: 0.7.0 -> 1.10.0 https://github.com/RSSNext/Folo/releases/tag/desktop%2Fv1.10.0 (cherry picked from commit 3d49a50e1bd25deea860a6589de5d6f16fce91df) --- pkgs/by-name/fo/folo/package.nix | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/pkgs/by-name/fo/folo/package.nix b/pkgs/by-name/fo/folo/package.nix index 811774cfc4a0..2f8def3e036d 100644 --- a/pkgs/by-name/fo/folo/package.nix +++ b/pkgs/by-name/fo/folo/package.nix @@ -7,7 +7,7 @@ makeDesktopItem, makeWrapper, nodejs, - pnpm_10_29_2, + pnpm_11, fetchPnpmDeps, pnpmConfigHook, stdenv, @@ -15,19 +15,19 @@ stdenv.mkDerivation rec { pname = "folo"; - version = "0.6.3"; + version = "1.10.0"; src = fetchFromGitHub { owner = "RSSNext"; repo = "Folo"; - tag = "v${version}"; - hash = "sha256-huVk5KcsepDwtdWMm9pvn31GE1felbH1pR3mGqlSWRs="; + tag = "desktop/v${version}"; + hash = "sha256-+k09Psuf6Bvjoc9Z1O0u2v44IIsaSQF1QbjJM6cWlUw="; }; nativeBuildInputs = [ nodejs pnpmConfigHook - pnpm_10_29_2 + pnpm_11 makeWrapper imagemagick ]; @@ -37,10 +37,11 @@ stdenv.mkDerivation rec { pname version src + pnpmInstallFlags ; - pnpm = pnpm_10_29_2; + pnpm = pnpm_11; fetcherVersion = 3; - hash = "sha256-EP7bpbJUcKmHm7KMlKc0Fz2u0niQ3jC7YN/9pp7vucE="; + hash = "sha256-dF0nnBBpJaFq6MYCZVMMt4D85EWDv8zsGEbVnyhP0kE="; }; env = { @@ -68,6 +69,16 @@ stdenv.mkDerivation rec { dontCheckForBrokenSymlinks = true; + # Several build scripts import transitive dependencies directly (e.g. + # ast-kit from unplugin-ast). + pnpmInstallFlags = [ "--shamefully-hoist" ]; + + postPatch = '' + # pnpm 11 verifies node_modules before every `pnpm run` which conflicts + # with --shamefully-hoist + echo 'verifyDepsBeforeRun: false' >> pnpm-workspace.yaml + ''; + desktopItem = makeDesktopItem { name = "folo"; desktopName = "Folo"; @@ -87,13 +98,13 @@ stdenv.mkDerivation rec { # Build desktop app. cd apps/desktop - pnpm --offline --no-inline-css build:electron-vite + pnpm run build:electron-vite cd ../.. # Remove dev dependencies. CI=true pnpm --ignore-scripts prune --prod # Clean up broken symlinks left behind by `pnpm prune` - find node_modules/.bin -xtype l -delete + [ -d node_modules/.bin ] && find node_modules/.bin -xtype l -delete runHook postBuild ''; From 8fe8b62754627250740f95cc67c09ee6f0ae7c9a Mon Sep 17 00:00:00 2001 From: Amadej Kastelic Date: Sun, 28 Jun 2026 17:46:58 +0200 Subject: [PATCH 3/4] folo: add amadejkastelic to maintainers (cherry picked from commit 616539fe0e18948656ce14bc4380a27a9a7bce81) --- pkgs/by-name/fo/folo/package.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/fo/folo/package.nix b/pkgs/by-name/fo/folo/package.nix index 2f8def3e036d..097bbdf8a4fe 100644 --- a/pkgs/by-name/fo/folo/package.nix +++ b/pkgs/by-name/fo/folo/package.nix @@ -144,7 +144,10 @@ stdenv.mkDerivation rec { homepage = "https://github.com/RSSNext/Folo"; changelog = "https://github.com/RSSNext/Folo/releases/tag/${src.tag}"; license = lib.licenses.gpl3Only; - maintainers = with lib.maintainers; [ iosmanthus ]; + maintainers = with lib.maintainers; [ + amadejkastelic + iosmanthus + ]; platforms = [ "x86_64-linux" ]; mainProgram = "follow"; }; From a4da045b5d88ebb7d3a97aab5fe8cc9f696a43ec Mon Sep 17 00:00:00 2001 From: Amadej Kastelic Date: Sun, 28 Jun 2026 19:42:18 +0200 Subject: [PATCH 4/4] folo: modernize (cherry picked from commit 809e1fe00714eb4a03cda9e8362ec6029b43a372) --- pkgs/by-name/fo/folo/package.nix | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pkgs/by-name/fo/folo/package.nix b/pkgs/by-name/fo/folo/package.nix index 097bbdf8a4fe..d5c96e11b5ac 100644 --- a/pkgs/by-name/fo/folo/package.nix +++ b/pkgs/by-name/fo/folo/package.nix @@ -12,7 +12,7 @@ pnpmConfigHook, stdenv, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "folo"; version = "1.10.0"; @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "RSSNext"; repo = "Folo"; - tag = "desktop/v${version}"; + tag = "desktop/v${finalAttrs.version}"; hash = "sha256-+k09Psuf6Bvjoc9Z1O0u2v44IIsaSQF1QbjJM6cWlUw="; }; @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { ]; pnpmDeps = fetchPnpmDeps { - inherit + inherit (finalAttrs) pname version src @@ -44,6 +44,9 @@ stdenv.mkDerivation rec { hash = "sha256-dF0nnBBpJaFq6MYCZVMMt4D85EWDv8zsGEbVnyhP0kE="; }; + __structuredAttrs = true; + strictDeps = true; + env = { ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; @@ -89,7 +92,7 @@ stdenv.mkDerivation rec { mimeTypes = [ "x-scheme-handler/follow" ]; }; - icon = src + "/apps/desktop/resources/icon.png"; + icon = finalAttrs.src + "/apps/desktop/resources/icon.png"; buildPhase = '' runHook preBuild @@ -121,12 +124,12 @@ stdenv.mkDerivation rec { --add-flags $out/share/follow/apps/desktop \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" - install -m 444 -D "${desktopItem}/share/applications/"* \ + install -m 444 -D "${finalAttrs.desktopItem}/share/applications/"* \ -t $out/share/applications/ for size in 16 24 32 48 64 128 256 512; do mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps - convert -background none -resize "$size"x"$size" ${icon} $out/share/icons/hicolor/"$size"x"$size"/apps/follow.png + convert -background none -resize "$size"x"$size" ${finalAttrs.icon} $out/share/icons/hicolor/"$size"x"$size"/apps/follow.png done runHook postInstall @@ -142,7 +145,7 @@ stdenv.mkDerivation rec { meta = { description = "Next generation information browser"; homepage = "https://github.com/RSSNext/Folo"; - changelog = "https://github.com/RSSNext/Folo/releases/tag/${src.tag}"; + changelog = "https://github.com/RSSNext/Folo/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ amadejkastelic @@ -151,4 +154,4 @@ stdenv.mkDerivation rec { platforms = [ "x86_64-linux" ]; mainProgram = "follow"; }; -} +})