From 7522ff67d8cb1230ef67461faea197fd5c2d2fa9 Mon Sep 17 00:00:00 2001 From: Philipp Date: Thu, 24 Jul 2025 16:09:07 +0200 Subject: [PATCH 1/3] fix(linkwarden): fix prisma to stable nixpkgs, update package build --- overlays/prisma/default.nix | 6 +-- packages/linkwarden/01-localfont.patch | 42 ++++++++++++++++ packages/linkwarden/default.nix | 68 ++++++++++++++++++++------ 3 files changed, 95 insertions(+), 21 deletions(-) create mode 100644 packages/linkwarden/01-localfont.patch diff --git a/overlays/prisma/default.nix b/overlays/prisma/default.nix index bde091c..f25d0bd 100644 --- a/overlays/prisma/default.nix +++ b/overlays/prisma/default.nix @@ -5,9 +5,5 @@ }: final: prev: { - prisma = prev.prisma.overrideAttrs (_old: rec { - pname = "prisma"; - - meta.mainProgram = "prisma"; - }); + inherit (channels.stable) prisma; } diff --git a/packages/linkwarden/01-localfont.patch b/packages/linkwarden/01-localfont.patch new file mode 100644 index 0000000..459ccc3 --- /dev/null +++ b/packages/linkwarden/01-localfont.patch @@ -0,0 +1,42 @@ +diff --git i/apps/web/components/Preservation/ReadableView.tsx w/apps/web/components/Preservation/ReadableView.tsx +index 64f14186..daff3636 100644 +--- i/apps/web/components/Preservation/ReadableView.tsx ++++ w/apps/web/components/Preservation/ReadableView.tsx +@@ -20,13 +20,13 @@ import { + } from "@linkwarden/router/highlights"; + import { Highlight } from "@linkwarden/prisma/client"; + import { useUser } from "@linkwarden/router/user"; +-import { Caveat } from "next/font/google"; +-import { Bentham } from "next/font/google"; ++import localFont from "next/font/local"; + import { Separator } from "../ui/separator"; + import { Button } from "../ui/button"; + +-const caveat = Caveat({ subsets: ["latin"] }); +-const bentham = Bentham({ subsets: ["latin"], weight: "400" }); ++ ++const caveat = localFont({ src: "../../public/caveat.ttf" }); ++const bentham = localFont({ src: "../../public/bentham.ttf" }); + + type Props = { + link: LinkIncludingShortenedCollectionAndTags; +diff --git i/apps/web/components/TextStyleDropdown.tsx w/apps/web/components/TextStyleDropdown.tsx +index a84587d9..59a291e4 100644 +--- i/apps/web/components/TextStyleDropdown.tsx ++++ w/apps/web/components/TextStyleDropdown.tsx +@@ -13,12 +13,11 @@ import { + import { Button } from "@/components/ui/button"; + import { FitWidth, FormatLineSpacing, FormatSize } from "@/components/ui/icons"; + import { useUpdateUserPreference, useUser } from "@linkwarden/router/user"; +-import { Caveat } from "next/font/google"; +-import { Bentham } from "next/font/google"; ++import localFont from "next/font/local"; + import { useTranslation } from "next-i18next"; + +-const caveat = Caveat({ subsets: ["latin"] }); +-const bentham = Bentham({ subsets: ["latin"], weight: "400" }); ++const caveat = localFont({ src: "../public/caveat.ttf" }); ++const bentham = localFont({ src: "../public/bentham.ttf" }); + + const fontSizes = [ + "12px", diff --git a/packages/linkwarden/default.nix b/packages/linkwarden/default.nix index a262381..8258489 100644 --- a/packages/linkwarden/default.nix +++ b/packages/linkwarden/default.nix @@ -6,13 +6,14 @@ fetchYarnDeps, makeWrapper, nixosTests, - yarnBuildHook, yarnConfigHook, + fetchpatch, # dependencies bash, monolith, nodejs, openssl, + google-fonts, playwright-driver, prisma, prisma-engines, @@ -38,28 +39,42 @@ let cp -r lib $out/lib/node_modules/bcrypt/ ''; }; + + google-fonts' = google-fonts.override { + fonts = [ + "Caveat" + "Bentham" + ]; + }; in stdenvNoCC.mkDerivation rec { pname = "linkwarden"; - version = "2.10.0"; + version = "2.11.3"; src = fetchFromGitHub { owner = "linkwarden"; repo = "linkwarden"; tag = "v${version}"; - hash = "sha256-mtygHx09VqrVq5eiCm8UbVM+bjA6n4MbRRT1HcWnUAo="; + hash = "sha256-/ktAfloJBmXKAn7/Er7rloF5bWuKl/DnofRqHcIrHkg="; }; + patches = [ + ./01-localfont.patch + (fetchpatch { + url = "https://github.com/linkwarden/linkwarden/pull/1290.patch"; + hash = "sha256-kq1GIEW0chnPmzvg4eDSS/5WtRyWlrHlk41h4pSCMzg="; + }) + ]; + yarnOfflineCache = fetchYarnDeps { yarnLock = src + "/yarn.lock"; - hash = "sha256-D6iZp7O90ZwxyiwRZ1H67eUphh3kRplu3ucOEJIRR/w="; + hash = "sha256-dqkaTMQYufUjENteOeS82B+/vZxbvCMOcmaP6IODm1w="; }; nativeBuildInputs = [ makeWrapper nodejs prisma - yarnBuildHook yarnConfigHook ]; @@ -70,12 +85,10 @@ stdenvNoCC.mkDerivation rec { NODE_ENV = "production"; postPatch = '' - substituteInPlace package.json \ - --replace-fail "yarn worker:prod" "ts-node --transpile-only --skip-project scripts/worker.ts" - - for f in lib/api/storage/*Folder.ts lib/api/storage/*File.ts; do + for f in packages/filesystem/*Folder.ts packages/filesystem/*File.ts; do substituteInPlace $f \ - --replace-fail 'path.join(process.cwd(), storagePath + "/" + file' 'path.join(storagePath, file' + --replace-fail 'process.cwd(),' "" \ + --replace-fail '"../..",' "" done ''; @@ -84,7 +97,18 @@ stdenvNoCC.mkDerivation rec { export PRISMA_QUERY_ENGINE_LIBRARY="${prisma-engines}/lib/libquery_engine.node" export PRISMA_QUERY_ENGINE_BINARY="${prisma-engines}/bin/query-engine" export PRISMA_SCHEMA_ENGINE_BINARY="${prisma-engines}/bin/schema-engine" - prisma generate + ''; + + buildPhase = '' + runHook preBuild + + cp ${google-fonts'}/share/fonts/truetype/Bentham-* ./apps/web/public/bentham.ttf + cp ${google-fonts'}/share/fonts/truetype/Caveat* ./apps/web/public/caveat.ttf + + yarn prisma:generate + yarn web:build + + runHook postBuild ''; postBuild = '' @@ -97,14 +121,25 @@ stdenvNoCC.mkDerivation rec { rm -r node_modules/bcrypt node_modules/@next/swc-* ln -s ${bcrypt}/lib/node_modules/bcrypt node_modules/ - mkdir -p $out/share/linkwarden/.next $out/bin - cp -r * .next $out/share/linkwarden/ + mkdir -p $out/share/linkwarden/apps/web/.next $out/bin + cp -r apps/web/.next apps/web/* $out/share/linkwarden/apps/web + cp -r apps/worker $out/share/linkwarden/apps/worker + cp -r packages $out/share/linkwarden/ + cp -r node_modules $out/share/linkwarden/ + rm -r $out/share/linkwarden/node_modules/mobile-app echo "#!${lib.getExe bash} -e export DATABASE_URL=\''${DATABASE_URL-"postgresql://\$DATABASE_USER:\$POSTGRES_PASSWORD@\$DATABASE_HOST:\$DATABASE_PORT/\$DATABASE_NAME"} export npm_config_cache="\$LINKWARDEN_CACHE_DIR/npm" - ${lib.getExe prisma} migrate deploy --schema $out/share/linkwarden/prisma/schema.prisma \ - && ${lib.getExe' nodejs "npm"} start --prefix $out/share/linkwarden -- -H \$LINKWARDEN_HOST -p \$LINKWARDEN_PORT + + if [ \"\$1\" == \"worker\" ]; then + echo "Starting worker" + ${lib.getExe' nodejs "npm"} start --prefix $out/share/linkwarden/apps/worker + else + echo "Starting server" + ${lib.getExe prisma} migrate deploy --schema $out/share/linkwarden/packages/prisma/schema.prisma \ + && ${lib.getExe' nodejs "npm"} start --prefix $out/share/linkwarden/apps/web -- -H \$LINKWARDEN_HOST -p \$LINKWARDEN_PORT + fi " > $out/bin/start.sh chmod +x $out/bin/start.sh @@ -124,7 +159,8 @@ stdenvNoCC.mkDerivation rec { --set-default LINKWARDEN_CACHE_DIR /var/cache/linkwarden \ --set-default LINKWARDEN_HOST localhost \ --set-default LINKWARDEN_PORT 3000 \ - --set-default STORAGE_FOLDER /var/lib/linkwarden + --set-default STORAGE_FOLDER /var/lib/linkwarden \ + --set-default NEXT_TELEMETRY_DISABLED 1 runHook postInstall ''; From d61f52631aefb9a00c2adc7e013047a35a5c448f Mon Sep 17 00:00:00 2001 From: Philipp Date: Thu, 24 Jul 2025 16:09:47 +0200 Subject: [PATCH 2/3] update(cinny): bump cinny fork to newest version --- overlays/cinny/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/overlays/cinny/default.nix b/overlays/cinny/default.nix index 3b4c00e..3c04f0c 100644 --- a/overlays/cinny/default.nix +++ b/overlays/cinny/default.nix @@ -8,16 +8,16 @@ final: prev: { awesome-flake = (prev.awesome-flake or { }) // { cinny = prev.cinny-unwrapped.overrideAttrs (_old: rec { pname = "cinny-unwrapped"; - version = "325144d8b2ca53c32fc6e1eace0603968a5ddc40"; + version = "65475050d76d6e8da8c3402528215b1425e8ed4e"; src = final.fetchFromGitHub { owner = "GigiaJ"; repo = "cinny"; rev = version; - hash = "sha256-822P12rzSLzje7KuBF2RB70SPdfCaHZaPV/1Nr4CCnY="; + hash = "sha256-kJZDc53mcJrGIw3Dl4ANq+1O5O2p0tcO2btQGNGRg4A="; }; - npmDepsHash = "sha256-pP7JH/K9QSqyUVg0UFTDzZvRoL5CeP5pudv83eHVoTo="; + npmDepsHash = "sha256-GkD+CrblXBv7yPVrTBVIGkz7Wu5llWzlluNq7rmm3CE="; npmDeps = final.fetchNpmDeps { inherit src; name = "${pname}-${version}-npm-deps"; From 6fc0965e150965b7992400cfff56477a85fd6dda Mon Sep 17 00:00:00 2001 From: Philipp Date: Thu, 24 Jul 2025 16:09:55 +0200 Subject: [PATCH 3/3] update(flake.lock) --- flake.lock | 133 +++++++++++++++++++++-------------------------------- 1 file changed, 52 insertions(+), 81 deletions(-) diff --git a/flake.lock b/flake.lock index 48ac42e..e9f1306 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1751429002, - "narHash": "sha256-ihzv16jv0mx4yW64wXuJBnTKigRVsR+aY9i/5WvS+tA=", + "lastModified": 1753329806, + "narHash": "sha256-PxQVUrK1rJEQoUSp6vO7OUfvkoZZUtY98HoWUIYW69M=", "owner": "rycee", "repo": "nur-expressions", - "rev": "08812a6d58b96f717f9d4a8c3e5aa9db0554eb6f", + "rev": "87fd18a0002b8d63a8520dd569a99de509fc43c5", "type": "gitlab" }, "original": { @@ -23,6 +23,22 @@ } }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1751685974, + "narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=", + "ref": "refs/heads/main", + "rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1", + "revCount": 92, + "type": "git", + "url": "https://git.lix.systems/lix-project/flake-compat.git" + }, + "original": { + "type": "git", + "url": "https://git.lix.systems/lix-project/flake-compat.git" + } + }, + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1650374568, @@ -40,14 +56,17 @@ }, "flake-parts": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib" + "nixpkgs-lib": [ + "nvf", + "nixpkgs" + ] }, "locked": { - "lastModified": 1749398372, - "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "lastModified": 1753121425, + "narHash": "sha256-TVcTNvOeWWk1DXljFxVRp+E0tzG1LhrVjOGGoMHuXio=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "rev": "644e0fc48951a860279da645ba77fe4a6e814c5e", "type": "github" }, "original": { @@ -58,7 +77,10 @@ }, "flake-utils": { "inputs": { - "systems": "systems" + "systems": [ + "nvf", + "systems" + ] }, "locked": { "lastModified": 1731533236, @@ -95,7 +117,7 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems_3" + "systems": "systems_2" }, "locked": { "lastModified": 1694529238, @@ -118,11 +140,11 @@ ] }, "locked": { - "lastModified": 1751429452, - "narHash": "sha256-4s5vRtaqdNhVBnbOWOzBNKrRa0ShQTLoEPjJp3joeNI=", + "lastModified": 1753294394, + "narHash": "sha256-1Dfgq09lHZ8AdYB2Deu/mYP1pMNpob8CgqT5Mzo44eI=", "owner": "nix-community", "repo": "home-manager", - "rev": "df12269039dcf752600b1bcc176bacf2786ec384", + "rev": "1fde6fb1be6cd5dc513dc1c287d69e4eb2de973e", "type": "github" }, "original": { @@ -146,34 +168,13 @@ "type": "github" } }, - "nil": { - "inputs": { - "nixpkgs": [ - "nvf", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1750047244, - "narHash": "sha256-vluLARrk4485npdyHOj8XKr0yk6H22pNf+KVRNL+i/Y=", - "owner": "oxalica", - "repo": "nil", - "rev": "870a4b1b5f12004832206703ac15aa85c42c247b", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "nil", - "type": "github" - } - }, "nixos-hardware": { "locked": { - "lastModified": 1751432711, - "narHash": "sha256-136MeWtckSHTN9Z2WRNRdZ8oRP3vyx3L8UxeBYE+J9w=", + "lastModified": 1753122741, + "narHash": "sha256-nFxE8lk9JvGelxClCmwuJYftbHqwnc01dRN4DVLUroM=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "497ae1357f1ac97f1aea31a4cb74ad0d534ef41f", + "rev": "cc66fddc6cb04ab479a1bb062f4d4da27c936a22", "type": "github" }, "original": { @@ -184,11 +185,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751271578, - "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", + "lastModified": 1753250450, + "narHash": "sha256-i+CQV2rPmP8wHxj0aq4siYyohHwVlsh40kV89f3nw1s=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", + "rev": "fc02ee70efb805d3b2865908a13ddd4474557ecf", "type": "github" }, "original": { @@ -198,28 +199,13 @@ "type": "github" } }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1748740939, - "narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "656a64127e9d791a334452c6b6606d17539476e2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, "nixpkgs_2": { "locked": { - "lastModified": 1750215678, - "narHash": "sha256-Rc/ytpamXRf6z8UA2SGa4aaWxUXRbX2MAWIu2C8M+ok=", + "lastModified": 1752997324, + "narHash": "sha256-vtTM4oDke3SeDj+1ey6DjmzXdq8ZZSCLWSaApADDvIE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5395fb3ab3f97b9b7abca147249fa2e8ed27b192", + "rev": "7c688a0875df5a8c28a53fb55ae45e94eae0dddb", "type": "github" }, "original": { @@ -247,19 +233,19 @@ }, "nvf": { "inputs": { + "flake-compat": "flake-compat", "flake-parts": "flake-parts", "flake-utils": "flake-utils", "mnw": "mnw", - "nil": "nil", "nixpkgs": "nixpkgs_2", - "systems": "systems_2" + "systems": "systems" }, "locked": { - "lastModified": 1751186226, - "narHash": "sha256-Bt7jtmCW72JUPxOIrV73qBTAUOy4qvJXsls2ERDUcGo=", + "lastModified": 1753181140, + "narHash": "sha256-daKfPQnipcRnKnXknDzv+fzNKeEY3r/10y8YMVQ10vU=", "owner": "notashelf", "repo": "nvf", - "rev": "5bad5dd94ce5ea3b40b08d9e6802e69d02198d21", + "rev": "8fbecab446afe3454ecce6a4b817ec4f123a4a34", "type": "github" }, "original": { @@ -306,7 +292,7 @@ }, "snowfall-lib": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "flake-utils-plus": "flake-utils-plus", "nixpkgs": [ "nixpkgs" @@ -331,11 +317,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1750119275, - "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=", + "lastModified": 1752544651, + "narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=", "owner": "Mic92", "repo": "sops-nix", - "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2", + "rev": "2c8def626f54708a9c38a5861866660395bb3461", "type": "github" }, "original": { @@ -389,21 +375,6 @@ "repo": "default", "type": "github" } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root",