1
0
forked from tribes/guix

Compare commits

...

181 Commits

Author SHA1 Message Date
Ricardo Wurmus 09ad7636e5 gnu: ant-bootstrap: Add hack to build on i686.
* gnu/packages/java-bootstrap.scm (ant-bootstrap)[arguments]: Conditionally
patch isFile checks.

Change-Id: If09594e301dc4691f564e197499acc7d7af71706
2026-04-16 14:18:34 +02:00
Ricardo Wurmus 425cb40fc2 gnu: r-seurat: Conditionally skip a test on 32-bit platforms.
* gnu/packages/cran.scm (r-seurat)[arguments]: On 32-bit platforms skip a
test.

Change-Id: I9c5eb3faed4bd3695fe81200447f201aa8081228
2026-04-16 14:18:34 +02:00
Ricardo Wurmus 508e4bafa6 gnu: r-bpcells: Build with SSE2 for on x86 32-bit platforms.
* gnu/packages/bioinformatics.scm (r-bpcells)[arguments]: Conditionally add
phase 'require-sse2.

Change-Id: I4927d9701e47dc34cc435d24c64a3043ad984f0d
2026-04-16 14:18:34 +02:00
Ricardo Wurmus c1ddc90bdf gnu: r-bpcells: Update to 0.3.1.
* gnu/packages/bioinformatics.scm (r-bpcells): Update to 0.3.1.
[arguments]: Do not patch r/configure.

Change-Id: Ia16297dc02bfecaf353de04452026df98ea5c826
2026-04-16 14:18:34 +02:00
Ricardo Wurmus fef2bae2b5 gnu: r-actuar: Conditionally skip some tests on 32-bit platforms.
* gnu/packages/cran.scm (r-actuar)[arguments]: On 32-bit platforms skip some
tests.

Change-Id: Iad305e0819f919ace9ab9fe7d20357981e2a226a
2026-04-16 14:18:33 +02:00
Ricardo Wurmus 60d405928e gnu: r-expint: Conditionally skip test on 32-bit platforms.
* gnu/packages/cran.scm (r-expint)[arguments]: On 32-bit platforms skip one
test.

Change-Id: Ifa97d90cfcf65fbdb9c920515f32c383c61d1ae6
2026-04-16 14:18:33 +02:00
Ricardo Wurmus 39c975659f gnu: r-lme4: Conditionally skip test on 32-bit platforms.
This is really questionable.  The test suite freezes in several places on
i686-linux, and it's not clear why.  It would be preferable to identify the
cause and fix that for good, but perhaps we can revisit this once the state of
R on i686-linux has improved.

* gnu/packages/cran.scm (r-lme4)[arguments]: On 32-bit platforms skip several
tests.

Change-Id: I67e963ec29cb00f66c122817898f0c6db330307f
2026-04-16 14:18:33 +02:00
Ricardo Wurmus 1129b721bd gnu: r-universalmotif: Conditionally skip test on 32-bit platforms.
* gnu/packages/bioconductor.scm (r-universalmotif)
[arguments]: On 32-bit platforms skip one test.

Change-Id: I66c046c20b0eefbaeb90c5fbf86233c175c096b4
2026-04-16 14:18:33 +02:00
Ricardo Wurmus 163d288dcf gnu: r-ballgown: Adjust for testthat compatibility.
* gnu/packages/bioconductor.scm (r-ballgown)[arguments]: Add phase
'testthat-compatibility.

Change-Id: Id8d931ee79b55b82e977eb3822537f80b55108bf
2026-04-16 14:18:33 +02:00
Ricardo Wurmus f2f6acc0c0 gnu: r-s2: Conditionally skip tests on 32-bit platforms.
* gnu/packages/cran.scm (r-s2)[arguments]: On 32-bit platforms skip some
tests.

Change-Id: Ie1ce57ad4def078c58f33ceec21338b3fb1176f7
2026-04-16 14:18:33 +02:00
Ricardo Wurmus cc58bae6e3 gnu: r-collapse: Conditionally skip tests on 32-bit platforms.
* gnu/packages/cran.scm (r-collapse)[arguments]: On 32-bit platforms skip some
tests.

Change-Id: Idd64fe930fba5b4599324ac0757bad7b0cba695f
2026-04-16 14:18:33 +02:00
Ricardo Wurmus b18d485cb5 gnu: r-cards: Conditionally skip one test.
* gnu/packages/cran.scm (r-cards)[arguments]: On 32-bit platforms skip one
test.

Change-Id: I7f0ade42f51290a862412dd3e280b6c42a81f654
2026-04-16 14:18:33 +02:00
Ricardo Wurmus d30e6043e7 gnu: r-ggplot2: Conditionally skip one test.
* gnu/packages/cran.scm (r-ggplot2)[arguments]: On 32-bit platforms skip one
test.

Change-Id: Icc6d0d6046a18ed24e91e15294c49fb28b4cc12e
2026-04-16 14:18:32 +02:00
Ricardo Wurmus 34c4e062e3 gnu: r-biocstyle: Do not build self-contained reports on 32-bit platforms.
* gnu/packages/bioconductor.scm (r-biocstyle)[arguments]: Conditionally add
phase 'prevent-pandoc-segfault.

Change-Id: I84ea57c44ceedb21e03050b4c48c9c05beedc7d7
2026-04-16 14:18:32 +02:00
Ricardo Wurmus 53dd0b21f4 gnu: proj-9.3: Fix build on 32-bit platforms.
* gnu/packages/geo.scm (proj-9.3)[arguments]: Conditionally add phase
'patch-tests to skip broken tests on 32-bit platforms.

Change-Id: I953489a7ac6a6c577d898e677df77d4acf4499c8
2026-04-16 14:18:32 +02:00
Ricardo Wurmus f7f133f29d gnu: proj: Fix build on 32-bit platforms.
* gnu/packages/geo.scm (proj)[arguments]: Conditionally add phase
'patch-tests to skip broken tests on 32-bit platforms.

Change-Id: Idf6339181f9bad128b060c2178a07735abba1e0b
2026-04-16 14:18:32 +02:00
Ricardo Wurmus e259e9401f gnu: netcdf: Fix build on 32-bit platforms.
* gnu/packages/maths.scm (netcdf)[arguments]: Conditionally pass CFLAGS to
ignore incompatible pointer types; conditionally update 'fix-tests phase to
skip two broken tests on 32-bit platforms.

Change-Id: Id5d149038275c152bbb30f0b155a2c2f7e05a76e
2026-04-16 14:18:32 +02:00
Ricardo Wurmus 26bf944f93 gnu: geos: Conditionally skip tests.
* gnu/packages/geo.scm (geos)[arguments]: Conditionally add phase
'disable-broken-tests on 32-bit platforms.

Change-Id: I9367519716ef309cb6f33e7455d4472ff5293478
2026-04-16 14:18:32 +02:00
Ricardo Wurmus c767b89d53 gnu: r-coro: Conditionally skip one test.
* gnu/packages/cran.scm (r-coro)[arguments]: On 32-bit platforms skip one
test.

Change-Id: I828ec4eae53df79ed476bd761905b78ae12e45ee
2026-04-16 14:18:32 +02:00
Ricardo Wurmus e5bc38ed46 gnu: r-timechange: Conditionally skip one test.
* gnu/packages/cran.scm (r-timechange)[arguments]: On 32-bit platforms skip one
test.

Change-Id: Idb8298941382bc2447f780e17a125ed39fe889f5
2026-04-16 14:18:32 +02:00
Ricardo Wurmus a5889682ea gnu: r-bit64: Conditionally skip two tests.
* gnu/packages/cran.scm (r-bit64)[arguments]: On 32-bit platforms skip two
tests.

Change-Id: Iac69d9b9ab479e3756977b6669e4a9f2802233a0
2026-04-16 14:18:31 +02:00
Ricardo Wurmus 771d3a8237 gnu: r-data-table: Fix a test on 32 bit machines.
* gnu/packages/cran.scm (r-data-table)[arguments]: Conditionally add phase
'fix-bad-test.

Change-Id: Iad9887debcb8a3e65e8495faae778266e42f1ead
2026-04-16 14:18:31 +02:00
Ricardo Wurmus 2c15d5dd96 gnu: r-bit64: Update home-page field.
The home page here was for the ff package, not bit64.

* gnu/packages/cran.scm (r-bit64)[home-page]: Update to CRAN project page.

Change-Id: Idcc1972bfe594185cdee29d8b4e4e0259941e784
2026-04-16 14:18:31 +02:00
Ricardo Wurmus 6038ca0133 gnu: r-accept: Update to 1.0.2.
* gnu/packages/cran.scm (r-accept): Update to 1.0.2.
[propagated-inputs]: Add r-hardhat, r-tibble, r-tidyselect, r-vctrs, and r-vetiver.
[native-inputs]: Add r-spelling and r-testthat.

Change-Id: I6b4782f8beb8e23f5e8987e1f00f34edec59c4b5
2026-04-16 14:18:31 +02:00
Ricardo Wurmus a0445cebab gnu: Add r-vetiver.
* gnu/packages/cran.scm (r-vetiver): New variable.

Change-Id: Ia60cb1ca09daf342a2b8df826ed5306ea51a284f
2026-04-16 14:18:31 +02:00
Ricardo Wurmus 682c9758ab gnu: Add r-rapidoc.
* gnu/packages/cran.scm (r-rapidoc): New variable.

Change-Id: Ia43f969774fbaf1bdff69767d872ab113583c5db
2026-04-16 14:18:31 +02:00
Ricardo Wurmus e8ea5be38b gnu: Add r-pins.
* gnu/packages/cran.scm (r-pins): New variable.

Change-Id: Ie69fde0b4252d7086a6dadab4645b7885b11f18f
2026-04-16 14:18:31 +02:00
Ricardo Wurmus 8e24b5c554 gnu: Add r-bundle.
* gnu/packages/cran.scm (r-bundle): New variable.

Change-Id: I7694f43e4aa4ebc421a0e946d5d3ddafd30aa3ef
2026-04-16 14:18:31 +02:00
Ricardo Wurmus f4d6e90ef0 gnu: r-bbotk: Update to 1.10.0.
* gnu/packages/cran.scm (r-bbotk): Update to 1.10.0.
[native-inputs]: Remove r-processx, r-redux, and r-rush.

Change-Id: I3add7f5c00d752277dfae3199a9b37509869485c
2026-04-16 14:18:31 +02:00
Ricardo Wurmus 46197b7631 gnu: Add r-embed.
* gnu/packages/cran.scm (r-embed): New variable.

Change-Id: I33d35f8c58545f53c346cd656782c4ed526d17b4
2026-04-16 14:18:30 +02:00
Ricardo Wurmus 8bfc6bcf6c gnu: r-yardstick: Update to 1.4.0.
* gnu/packages/cran.scm (r-yardstick): Update to 1.4.0.
[properties]: Record updater-ignored-native-inputs.
[native-inputs]: Add r-epir, r-handtill2001, and r-orf.

Change-Id: I27ce3c780b776ff985df7eb72473011cbd5e93d3
2026-04-16 14:18:30 +02:00
Ricardo Wurmus 0c1b7a1bc5 gnu: Add r-orf.
* gnu/packages/cran.scm (r-orf): New variable.

Change-Id: I422f1fa4341b6835d2fd57057c1e1df49a0ec335
2026-04-16 14:18:30 +02:00
Ricardo Wurmus cfb1e1e1ce gnu: Add r-epir.
* gnu/packages/cran.scm (r-epir): New variable.

Change-Id: Ic2eba444f2f3cdac8420bfa6b391e763f62c7b4d
2026-04-16 14:18:30 +02:00
Ricardo Wurmus dd4fdcf78b gnu: Add r-handtill2001.
* gnu/packages/cran.scm (r-handtill2001): New variable.

Change-Id: I09e71b5286356b8c6d0cda0b6914e6af07074145
2026-04-16 14:18:30 +02:00
Ricardo Wurmus 48ba359b1e gnu: Add r-cereal.
* gnu/packages/cran.scm (r-cereal): New variable.

Change-Id: I3b5c8854f49c732cc003529e8a82f4a37bd6c5bf
2026-04-16 14:18:30 +02:00
Ricardo Wurmus a0d0ebe117 gnu: r-s4vectors: Update to 0.48.1.
* gnu/packages/bioconductor.scm (r-s4vectors): Update to 0.48.1.

Change-Id: I8b856c0e0679262ec5be2a1ae655fd2aa9f6d263
2026-04-16 14:18:30 +02:00
Ricardo Wurmus c72541ebf1 gnu: r-biocviews: Update to 1.78.2.
* gnu/packages/bioconductor.scm (r-biocviews): Update to 1.78.2.

Change-Id: I3aa91454ea13045bb4f4ebe36700c5c36ee28816
2026-04-16 14:18:30 +02:00
Ricardo Wurmus 7e9aa9b851 gnu: r-wiggleplotr: Update to 1.34.1.
* gnu/packages/bioconductor.scm (r-wiggleplotr): Update to 1.34.1.

Change-Id: I3e9df308ff374a62d2ae41eed6df7297411ee665
2026-04-16 14:18:29 +02:00
Ricardo Wurmus 6784e48652 gnu: r-enmix: Update to 1.46.2.
* gnu/packages/bioconductor.scm (r-enmix): Update to 1.46.2.

Change-Id: I04675d3351d71cf7132918f3840a236ba64ad2c0
2026-04-16 14:18:29 +02:00
Ricardo Wurmus 577348891d gnu: r-delayedarray: Update to 0.36.1.
* gnu/packages/bioconductor.scm (r-delayedarray): Update to 0.36.1.

Change-Id: I36e6c48575213cbdac4c7351bfd5fc49d2ca1faf
2026-04-16 14:18:29 +02:00
Ricardo Wurmus 87cd5dab52 gnu: r-stars: Update to 0.7-2.
* gnu/packages/cran.scm (r-stars): Update to 0.7-2.

Change-Id: If5583378486a10f644dd7b9098c332f290d4a765
2026-04-16 14:18:29 +02:00
Ricardo Wurmus f887d7f5a7 gnu: r-pbdmpi: Update to 0.5-5.
* gnu/packages/cran.scm (r-pbdmpi): Update to 0.5-5.

Change-Id: I34ade16a4af9530a59aaf0698c1baf82262a1a9f
2026-04-16 14:18:29 +02:00
Ricardo Wurmus 4640210f65 gnu: r-mlr3: Update to 1.6.0.
* gnu/packages/cran.scm (r-mlr3): Update to 1.6.0.

Change-Id: I553b49832b9c56d43501edce7858abbd5c1062e7
2026-04-16 14:18:29 +02:00
Ricardo Wurmus 9e1463d608 gnu: r-lobstr: Update to 1.2.1.
* gnu/packages/cran.scm (r-lobstr): Update to 1.2.1.

Change-Id: If088ac344520b04407c7b6f0e32fa4fb02a4cda8
2026-04-16 14:18:29 +02:00
Ricardo Wurmus ab0c33e246 gnu: r-igraph: Update to 2.2.3.
* gnu/packages/cran.scm (r-igraph): Update to 2.2.3.

Change-Id: I23dfd5b2a7685014b7aa86cf46b0a999081cce3e
2026-04-16 14:18:29 +02:00
Ricardo Wurmus f3b5ecb37f gnu: r-cpp11: Update to 0.5.4.
* gnu/packages/cran.scm (r-cpp11): Update to 0.5.4.

Change-Id: Ib0f6d7898c26fa5b5a38a2da27161cd6e954f7cd
2026-04-16 14:18:28 +02:00
Ricardo Wurmus 6d7da84ecb gnu: r-spatstat: Update to 3.6-0.
* gnu/packages/cran.scm (r-spatstat): Update to 3.6-0.

Change-Id: I05e18e899f11b9ed3227fd0234d97274dfa8b291
2026-04-16 14:18:28 +02:00
Ricardo Wurmus 0df03cd67b gnu: r-hardhat: Update to 1.4.3.
* gnu/packages/cran.scm (r-hardhat): Update to 1.4.3.

Change-Id: I92526d995ef4913a20ff879e99b079e27c7d0ef4
2026-04-16 14:18:28 +02:00
Ricardo Wurmus 20b277789b gnu: r-quanteda: Update to 4.4.
* gnu/packages/cran.scm (r-quanteda): Update to 4.4.

Change-Id: I72e65e0d8a40b9a46a3353a87663c85b2dc7e4fb
2026-04-16 14:18:28 +02:00
Ricardo Wurmus d0f30763af gnu: r-sccore: Update to 1.0.7.
* gnu/packages/cran.scm (r-sccore): Update to 1.0.7.
[propagated-inputs]: Remove r-seurat.

Change-Id: Ib8b66b4c26c2f06965d64f14ac561b319a422b2f
2026-04-16 14:18:28 +02:00
Ricardo Wurmus 9215c2e4fe gnu: r-spamm: Update to 4.6.65.
* gnu/packages/cran.scm (r-spamm): Update to 4.6.65.

Change-Id: Id033c8d33ca69a7f44a7b6dd9806e534778b4cd0
2026-04-16 14:18:28 +02:00
Ricardo Wurmus 4bc5e6b7a0 gnu: r-rio: Update to 1.3.0.
* gnu/packages/cran.scm (r-rio): Update to 1.3.0.
[native-inputs]: Remove r-jpeg.

Change-Id: Ie60d8e73148286b9cb0f1f5f2405f76aa3d8d22b
2026-04-16 14:18:28 +02:00
Ricardo Wurmus 32bdc39622 gnu: r-nanonext: Update to 1.8.2.
* gnu/packages/cran.scm (r-nanonext): Update to 1.8.2.

Change-Id: I2587c0be9c892de4379e9f8b50eb9ec33df97f2f
2026-04-16 14:18:27 +02:00
Ricardo Wurmus 43cf547c88 gnu: r-ucminf: Update to 1.2.3.
* gnu/packages/cran.scm (r-ucminf): Update to 1.2.3.

Change-Id: I486976827be08ec03c45fef94b745befde3f6907
2026-04-16 14:18:27 +02:00
Ricardo Wurmus 8a258c6d3d gnu: r-statsexpressions: Update to 1.7.4.
* gnu/packages/cran.scm (r-statsexpressions): Update to 1.7.4.

Change-Id: I0b79a241393d26a8c026088b0e424b38e4472c9e
2026-04-16 14:18:27 +02:00
Ricardo Wurmus 0186ba19ff gnu: r-recipes: Update to 1.3.2.
* gnu/packages/cran.scm (r-recipes): Update to 1.3.2.

Change-Id: Id2e16bce4db896983b3185c1c5b2e23196a793b5
2026-04-16 14:18:27 +02:00
Ricardo Wurmus baea13f534 gnu: r-cvxr: Update to 1.8.2.
* gnu/packages/cran.scm (r-cvxr): Update to 1.8.2.

Change-Id: I2e8bda89edb439a667eb199abf7ae15b593b3071
2026-04-16 14:18:27 +02:00
Ricardo Wurmus c74520f47a gnu: r-circlize: Update to 0.4.18.
* gnu/packages/cran.scm (r-circlize): Update to 0.4.18.

Change-Id: I161c5eef8f7db52620ff87fc298ed5771cc914f8
2026-04-16 14:18:27 +02:00
Ricardo Wurmus 602cd07f0d gnu: r-geosphere: Update to 1.6-8.
* gnu/packages/cran.scm (r-geosphere): Update to 1.6-8.
[propagated-inputs]: Remove r-sp.

Change-Id: Ibb73b0b53cd78de120c604d75a0549820eb3200e
2026-04-16 14:18:27 +02:00
Ricardo Wurmus 1217281391 gnu: r-magrittr: Update to 2.0.5.
* gnu/packages/cran.scm (r-magrittr): Update to 2.0.5.
[native-inputs]: Add r-rlang.

Change-Id: Icd245b27401f4f0ba1c591ae1dd7a8e651201405
2026-04-16 14:18:27 +02:00
Ricardo Wurmus fa167200ac gnu: r-ellipsis: Update to 0.3.3.
* gnu/packages/cran.scm (r-ellipsis): Update to 0.3.3.

Change-Id: I098570b2c7e05c2a67c3a91e4be4e222cb7deb15
2026-04-16 14:18:26 +02:00
Ricardo Wurmus 8a96d0e080 gnu: r-lazyeval: Update to 0.2.3.
* gnu/packages/cran.scm (r-lazyeval): Update to 0.2.3.
[propagated-inputs]: Add r-rlang.

Change-Id: I29e122307aa6b2e67258af2ca96cfc873fca973d
2026-04-16 14:18:26 +02:00
Ricardo Wurmus a5c7de10dd gnu: r-fpeek: Update to 0.2.1.
* gnu/packages/cran.scm (r-fpeek): Update to 0.2.1.

Change-Id: I65cec23ef7def6a4dd07b10345a33ed87465be90
2026-04-16 14:18:26 +02:00
Ricardo Wurmus b7eb596b75 gnu: r-fingerprint: Update to 3.5.10.
* gnu/packages/cran.scm (r-fingerprint): Update to 3.5.10.

Change-Id: Id7412db399a6bf6254f2ee154e3150c78486acab
2026-04-16 14:18:26 +02:00
Ricardo Wurmus cfb14a79ef gnu: r-rush: Update to 1.0.1.
* gnu/packages/cran.scm (r-rush): Update to 1.0.1.

Change-Id: I8862fb80bbace1718d50a326220665519449d556
2026-04-16 14:18:26 +02:00
Ricardo Wurmus 77741f8a3d gnu: r-rlang: Update to 1.2.0.
* gnu/packages/cran.scm (r-rlang): Update to 1.2.0.

Change-Id: Ibc781c6de7a2e3c0bb0ca4e0b1242f6dd68ac590
2026-04-16 14:18:26 +02:00
Ricardo Wurmus eabb9f6b9f gnu: r-ggstatsplot: Update to 0.13.6.
* gnu/packages/cran.scm (r-ggstatsplot): Update to 0.13.6.

Change-Id: If4bf6c55a2bde9d629f7a9fc33456f256da8302d
2026-04-16 14:18:26 +02:00
Ricardo Wurmus d0a7a1f1f1 gnu: r-dplyr: Update to 1.2.1.
* gnu/packages/cran.scm (r-dplyr): Update to 1.2.1.

Change-Id: I3821473e4964b0d367915ad85c5b47927e35ee48
2026-04-16 14:18:26 +02:00
Ricardo Wurmus 00ccd3eeea gnu: r-cftime: Update to 1.7.3.
* gnu/packages/cran.scm (r-cftime): Update to 1.7.3.

Change-Id: I621d2a7cc6646369e963db137f089a0236b16199
2026-04-16 14:18:26 +02:00
Ricardo Wurmus f518b950c1 gnu: r-backports: Update to 1.5.1.
* gnu/packages/cran.scm (r-backports): Update to 1.5.1.

Change-Id: Ia363be468b5888a4d1b5d390a8a7c7eb07ea9cc1
2026-04-16 14:18:25 +02:00
Ricardo Wurmus 42a1a2172e gnu: r-ggplot2: Disable one failing test.
* gnu/packages/cran.scm (r-ggplot2)[arguments]: Disable a failing test.

Change-Id: I41c5ec8790148f7ffe1397d3b9694f1cd8e0c739
2026-04-16 14:18:25 +02:00
Ricardo Wurmus 9c11c794d8 gnu: Add r-timereg.
* gnu/packages/cran.scm (r-timereg): New variable.

Change-Id: Ifb43c8f624ac79bb16361912ccf9cbdb623356ab
2026-04-16 14:18:25 +02:00
Ricardo Wurmus 42ac4eb3fa gnu: r-lava: Update to 1.9.0.
* gnu/packages/cran.scm (r-lava): Update to 1.9.0.
[native-inputs]: Add r-vdiffr.
[arguments]: Disable some failing tests.

Change-Id: I6025e511e46f8d7aa6b3864b411e5aacd86a06d0
2026-04-16 14:18:25 +02:00
Ricardo Wurmus 1bf6dde0d8 gnu: r-flames: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-flames)[arguments]: Remove
phase 'disable-some-tests; specify #:skipped-tests instead.

Change-Id: I75024c6b9c5316e1b4bef80c5e60d77699b71e9b
2026-04-16 14:18:25 +02:00
Ricardo Wurmus c8c2f12858 gnu: r-ncdfflow: Enable all tests.
* gnu/packages/bioconductor.scm (r-ncdfflow)[arguments]: Remove phase
'delete-bad-tests.

Change-Id: I5c4c64f992b33af1ecaa42b833a8f2cb3f2b47d6
2026-04-16 14:18:25 +02:00
Ricardo Wurmus 83a6b8589e gnu: r-flowclust: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-flowclust)[arguments]: Remove
phase 'delete-bad-tests; specify #:skipped-tests instead; disable one more
test.

Change-Id: I18369d410ad9cff4db7afcb15fd5292b3c6c0177
2026-04-16 14:18:25 +02:00
Ricardo Wurmus bad269b657 gnu: r-variantfiltering: Enable all tests.
* gnu/packages/bioconductor.scm (r-variantfiltering)[arguments]: Remove phase
'delete-bad-tests.

Change-Id: I76ef169743ecbd5c75fb115ab5adf8c46128d068
2026-04-16 14:18:25 +02:00
Ricardo Wurmus 68adb129ed gnu: r-beachmat: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-beachmat)[arguments]: Remove
phase 'delete-bad-tests; specify #:skipped-tests
instead.

Change-Id: I17f4999f3747f4e72015ae64872e2c877a157267
2026-04-16 14:18:25 +02:00
Ricardo Wurmus 6e7ae215a8 gnu: r-rhdf5lib: Use G-expressions and fix test instead of disabling it.
* gnu/packages/bioconductor.scm (r-rhdf5lib)[arguments]: Use G-expressions;
fix library version check instead of disabling the test.

Change-Id: I78e8cfd9d2588517b0911dde5fc8aa53d4f67892
2026-04-16 14:18:24 +02:00
Ricardo Wurmus 321f4a6b8f gnu: r-sgseq: Enable all tests.
* gnu/packages/bioconductor.scm (r-sgseq)[arguments]: Remove phase
'delete-bad-tests.

Change-Id: I25cfd6620b6573057c161200bd5fad99a19e2bdd
2026-04-16 14:18:24 +02:00
Ricardo Wurmus 75c3255f9c gnu: r-metagenomeseq: Enable all tests.
* gnu/packages/bioconductor.scm (r-metagenomeseq)[arguments]: Remove phase
'delete-bad-tests.

Change-Id: I17d0d965b6d7702dfd6eb24eef288a51915aa3f6
2026-04-16 14:18:24 +02:00
Ricardo Wurmus 0b5f9d29ac gnu: r-graph: Enable tests.
* gnu/packages/bioconductor.scm (r-graph)[arguments]: Enable tests.

Change-Id: I9307f27a1e36e439b3d0c5680faa558981dc5d3a
2026-04-16 14:18:24 +02:00
Ricardo Wurmus 267dcb3fac gnu: r-summarizedexperiment: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-summarizedexperiment)[arguments]: Remove
phase 'delete-bad-tests; specify #:test-directory and #:skipped-tests
instead.

Change-Id: I6229ec548d21f30534f9d279b3aae8847e55a77e
2026-04-16 14:18:24 +02:00
Ricardo Wurmus 7ea19ce41b gnu: r-batchelor: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-batchelor)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead.

Change-Id: Icd8aaae97130eed2e3c1b1629ac1dd9d18287fee
2026-04-16 14:18:24 +02:00
Ricardo Wurmus 85f2e629ff gnu: r-biocsingular: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-biocsingular)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead.

Change-Id: I8b8f91562233c9cca180eeda50f5d6dc4bc1cd37
2026-04-16 14:18:24 +02:00
Ricardo Wurmus 235fc028b6 gnu: r-glmgampoi: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-glmgampoi)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead; enable tests.

Change-Id: I5de95bf59482d706bf80bb6fc4cdcf6da89d2afd
2026-04-16 14:18:24 +02:00
Ricardo Wurmus b10183d56c gnu: r-variantannotation: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-variantannotation)[arguments]: Remove phase
'delete-bad-tests; specify #:test-directory and #:skipped-tests instead.

Change-Id: I17532f8a6e23b52591f0593677e8cd88aacbfc23
2026-04-16 14:18:24 +02:00
Ricardo Wurmus fd70593d4d gnu: r-rhdf5: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-rhdf5)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead; enable tests.

Change-Id: I2a440a41b6d527c5c91786345db49532fdca5b2c
2026-04-16 14:18:23 +02:00
Ricardo Wurmus b342b5fed2 gnu: r-regioner: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-regioner)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead.

Change-Id: Ic90c620653ffa6d2ad6eab4ded05e4bbfe62d279
2026-04-16 14:18:23 +02:00
Ricardo Wurmus c28d458561 gnu: r-msnbase: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-msnbase)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead.

Change-Id: Icb2170c300d80dc5f955b4ff1b97f1e33385a7c2
2026-04-16 14:18:23 +02:00
Ricardo Wurmus 43ee8d6607 gnu: r-genomicdatacommons: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-genomicdatacommons)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead.

Change-Id: I02a6f73db89104c90e6a4301240a1fd20e35a636
2026-04-16 14:18:23 +02:00
Ricardo Wurmus 07683d78f7 gnu: r-escape: Enable all tests.
* gnu/packages/bioconductor.scm (r-escape)[arguments]: Remove phase
'delete-bad-tests.

Change-Id: I6d0af6daaed7b5c142ccfdfc162ba57968d1ce17
2026-04-16 14:18:23 +02:00
Ricardo Wurmus 9aaf1ee2de gnu: r-category: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-category)[arguments]: Remove phase
'delete-bad-tests; specify #:test-directory and #:skipped-tests instead.

Change-Id: If573e4ea497fdd1f3654433d2854f0a821455bd6
2026-04-16 14:18:23 +02:00
Ricardo Wurmus e2a7eded3f gnu: r-treeio: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-treeio)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead; enable more tests.

Change-Id: I55fccf144c233bfd4115b9201c1550e9d477e6a4
2026-04-16 14:18:23 +02:00
Ricardo Wurmus f9b627d13d gnu: r-derfinder: Enable all tests.
* gnu/packages/bioconductor.scm (r-derfinder)[arguments]: Remove phase
'delete-bad-tests.

Change-Id: Ib4e5e8557209b5a46b48e77c52c6355676b3e577
2026-04-16 14:18:23 +02:00
Ricardo Wurmus 2069c7f09e gnu: r-bumphunter: Disable tests instead of patching them.
After patching we didn't run any tests anyway.

* gnu/packages/bioconductor.scm (r-bumphunter)[arguments]: Remove phase
'delete-bad-tests; disable tests instead.

Change-Id: I6ba13013c6038b272204ae4191111714d835be05
2026-04-16 14:18:23 +02:00
Ricardo Wurmus 2b41447efd gnu: r-txdbmaker: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-txdbmaker)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead.

Change-Id: I35e1fb2dce920cb0a59a063eb2b511b636e46546
2026-04-16 14:18:22 +02:00
Ricardo Wurmus 6e7d1b5e4c gnu: r-scrapper: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-scrapper)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: I25b29604508732e64a7efb72b9635e7bc8685356
2026-04-16 14:18:22 +02:00
Ricardo Wurmus fb45558493 gnu: r-plyranges: Enable all tests.
* gnu/packages/bioconductor.scm (r-plyranges)[arguments]: Remove phase
'disable-bad-tests.

Change-Id: I7539e3c6f8ed26a66bf9d4ef65ecb11bee74421d
2026-04-16 14:18:22 +02:00
Ricardo Wurmus c2f81ec3cb gnu: r-transcriptr: Enable all tests.
* gnu/packages/bioconductor.scm (r-transcriptr)[arguments]: Remove phase
'disable-bad-tests.

Change-Id: Ic0781089808a2468797d03e968aa696553409801
2026-04-16 14:18:22 +02:00
Ricardo Wurmus 2aa8e98b8c gnu: r-tcgautils: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-tcgautils)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: I29a788dc229c599207d89d7f4dbd49c3c9f06f1e
2026-04-16 14:18:22 +02:00
Ricardo Wurmus 2dccc15f1d gnu: r-screpertoire: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-screpertoire)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: Ieac662ca919889a71861cb6b1f08febab2487f54
2026-04-16 14:18:22 +02:00
Ricardo Wurmus eb32d1bb83 gnu: r-chippeakanno: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-chippeakanno)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: Id7e7cd02d1b0b02f62022b9d55e69c867200e213
2026-04-16 14:18:22 +02:00
Ricardo Wurmus 16f703f4f3 gnu: r-msnid: Enable all tests.
* gnu/packages/bioconductor.scm (r-msnid)[arguments]: Remove phase
'disable-bad-tests.

Change-Id: Iaf459f89d1f6d82a486a0dcd860cff746ee140a0
2026-04-16 14:18:22 +02:00
Ricardo Wurmus 7118c74599 gnu: r-mosdef: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-mosdef)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: Iadf53cbebf8e30b1cd8a4a793a7853b01318de39
2026-04-16 14:18:22 +02:00
Ricardo Wurmus 96d10fcf05 gnu: r-h5mread: Enable all tests.
* gnu/packages/bioconductor.scm (r-h5mread)[arguments]: Remove phase
'disable-bad-tests.

Change-Id: I8a20a311a4c8c2177c07ab5d0b59c8ea5e369c73
2026-04-16 14:18:21 +02:00
Ricardo Wurmus 025efb94b5 gnu: r-immapex: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-immapex)[arguments]: Remove phase
'skip-bad-tests; specify #:skipped-tests instead.

Change-Id: Icb90decad077e6e2b9f68b618a983b8251954791
2026-04-16 14:18:21 +02:00
Ricardo Wurmus eb8e45a644 gnu: r-rcas: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-rcas)[arguments]: Remove phase
'skip-bad-tests; specify #:skipped-tests instead.

Change-Id: Ib4497fa70e0b61267b61d4fdf70e3e5abd0c1af9
2026-04-16 14:18:21 +02:00
Ricardo Wurmus c81b2b1e2f gnu: r-karyoploter: Enable all tests.
* gnu/packages/bioconductor.scm (r-karyoploter)[arguments]: Remove phase
'disable-bad-tests.

Change-Id: I3d5727327d1da4ba30bd8cd8d9251100329e4cac
2026-04-16 14:18:21 +02:00
Ricardo Wurmus 67c8823b19 gnu: r-sanssouci: Update to 0.16.2-1.fcd60da.
* gnu/packages/bioconductor.scm (r-sanssouci): Update to 0.16.2-1.fcd60da.
[arguments]: Remove phase 'delete-bad-tests.
[propagated-inputs]: Remove r-rcpp and r-rcpparmadillo; add r-matrixtests and
r-rlang.
[native-inputs]: Remove r-ggplot2; add r-knitr.

Change-Id: I30fa708d0a1873d78fa2350e5933e807ccaae821
2026-04-16 14:18:21 +02:00
Ricardo Wurmus 004fe76b40 gnu: r-cicero-monocle3: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-cicero-monocle3)[arguments]: Remove phase
'skip-bad-tests; specify #:skipped-tests instead.

Change-Id: I3ab92000982c97e95e4b157dcf3cfe1d49f056f3
2026-04-16 14:18:21 +02:00
Ricardo Wurmus c36844c511 gnu: r-mutationalpatterns: Enable all tests.
* gnu/packages/bioconductor.scm (r-mutationalpatterns)[arguments]: Remove
phase 'skip-bad-tests.

Change-Id: I51ee4d02fd12e34100a6823a8ba71e117bc618a1
2026-04-16 14:18:21 +02:00
Ricardo Wurmus 3fef246625 gnu: r-bamsignals: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-bamsignals)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: Ifbb26ef31debc2ad43eb1265c7916b24bfa140ae
2026-04-16 14:18:21 +02:00
Ricardo Wurmus 014493dac3 gnu: r-biomart: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-biomart)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead.

Change-Id: I98c167685c07453fd8fa8b8c7700c21591d043af
2026-04-16 14:18:21 +02:00
Ricardo Wurmus 9afe3041c7 gnu: r-biocset: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-biocset)[arguments]: Remove phase
'delete-bad-tests; specify #:skipped-tests instead.

Change-Id: Ibcdfdca6e35869e260a8f02deddacaa59002c7f1
2026-04-16 14:18:20 +02:00
Ricardo Wurmus e74e74a2c5 gnu: r-zellkonverter: Enable tests by bypassing Conda.
* gnu/packages/bioconductor.scm (r-zellkonverter)[arguments]: Enable all tests
but one; add phase 'basilisk-configuration.
[inputs]: Add python-anndata, python-h5py, python-natsort, python-numpy,
python-pandas, python-scipy, and python-wrapper.

Change-Id: I4eb5e34ab540bdeea64f6b8629bb8f17d24c3663
2026-04-16 14:18:20 +02:00
Ricardo Wurmus fa64b9d32f gnu: r-hdf5array: Update comment.
* gnu/packages/bioconductor.scm (r-hdf5array)[arguments]: Update comment on
why we delete a test.

Change-Id: Ibefbe960a12969337a63329d511d6c0891895c94
2026-04-16 14:18:20 +02:00
Ricardo Wurmus dfcf958b81 gnu: r-basilisk: Patch to bypass Conda.
* gnu/packages/bioconductor.scm (r-basilisk)[arguments]: Add phase
'patch-for-guix.

Change-Id: I8bcfd78da0818235a3ab1c00aae8dafdc8aa57aa
2026-04-16 14:18:20 +02:00
Ricardo Wurmus a6451cbd8b gnu: r-decoupler: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-decoupler)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: I40e3ba1539ee4dc5d471c547a5208317f2a7600e
2026-04-16 14:18:20 +02:00
Ricardo Wurmus 38967414c8 gnu: r-cner: Remove custom phases, enable all tests.
* gnu/packages/bioconductor.scm (r-cner)[arguments]: Remove phases
'disable-bad-tests and 'fix-gcc-14-strictness.

Change-Id: I116538acce4dacad5550727dba14bb72bb8905f4
2026-04-16 14:18:20 +02:00
Ricardo Wurmus c37180cda7 gnu: r-chromvar: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-chromvar)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: Ia5419e9be986c9600372de103c0ee5353a194346
2026-04-16 14:18:20 +02:00
Ricardo Wurmus 64713e8899 gnu: r-mscoreutils: Enable all tests.
* gnu/packages/bioconductor.scm (r-mscoreutils)[arguments]: Remove phase
'disable-bad-tests.

Change-Id: I6fa331a8110d3923f7f1394023cfa81aa2a1b837
2026-04-16 14:18:20 +02:00
Ricardo Wurmus e115142ef4 gnu: r-abn: Enable all tests.
* gnu/packages/bioconductor.scm (r-abn)[arguments]: Remove phase
'delete-bad-tests.

Change-Id: I78978dfc6e606c90d24c6ef6b4cf0ed5f1af3492
2026-04-16 14:18:20 +02:00
Ricardo Wurmus 870a1e0f53 gnu: r-posterior: Update to 1.7.0.
* gnu/packages/cran.scm (r-posterior): Update to 1.7.0.

Change-Id: I7053e29e54d42cbb82a45d19831accc849df796a
2026-04-16 14:18:19 +02:00
Ricardo Wurmus 22cc7ac54a gnu: r-processx: Update to 3.8.7.
* gnu/packages/cran.scm (r-processx): Update to 3.8.7.

Change-Id: I69d8e6a7d8627f851b066b00e4e74340767facfb
2026-04-16 14:18:19 +02:00
Ricardo Wurmus b50b65cf1b gnu: r-pkgload: Update to 1.5.1.
* gnu/packages/cran.scm (r-pkgload): Update to 1.5.1.

Change-Id: Ib774f4e6a77be5d7358673485337248e47388700
2026-04-16 14:18:19 +02:00
Ricardo Wurmus 99bd3c90c5 gnu: r-ps: Update to 1.9.2.
* gnu/packages/cran.scm (r-ps): Update to 1.9.2.

Change-Id: I44542f83ac5880a79f940ab6702805812d3414e1
2026-04-16 14:18:19 +02:00
Ricardo Wurmus b7383c7929 gnu: r-conos: Update to 1.5.3.
* gnu/packages/bioconductor.scm (r-conos): Update to 1.5.3.

Change-Id: I1f2b0773ab03051dd4c82f991196c0c7ac77063f
2026-04-16 14:18:19 +02:00
Ricardo Wurmus f185250466 gnu: r-barcodetrackr: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-barcodetrackr)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: Ibe719fb6a2395c31c67788255d7df95988962b4c
2026-04-16 14:18:19 +02:00
Ricardo Wurmus f81dbc1d9d gnu: r-basics: Replace custom phase with SKIPPED-TESTS argument.
* gnu/packages/bioconductor.scm (r-basics)[arguments]: Remove phase
'disable-bad-tests; specify #:skipped-tests instead.

Change-Id: I2948991cebaab753c496ec272a9f82c5f359ca2d
2026-04-16 14:18:16 +02:00
Peter Polidoro 0cd40ba2ab gnu: freecad: Update to 1.1.1.
* gnu/packages/engineering.scm (freecad): Update to 1.1.1.

Change-Id: I0b6d872a907f46979a5d102c244835d7af7f11ec
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-16 12:43:38 +02:00
Andreas Enge 857540e6cb gnu: python-geventhttpclient: Update to 2.3.9.
* gnu/packages/python-web.scm (python-geventhttpclient): Update to 2.3.9.

Change-Id: I83ff865b8ae052d24f9920b3d5c029e7c91373cc
2026-04-16 12:43:38 +02:00
Hilton Chain 0d16098802 gnu: fcitx5: Add GUIX_GTK2_IM_MODULE_FILE search path.
* gnu/packages/fcitx5.scm (fcitx5) [native-search-paths]: Add
GUIX_GTK2_IM_MODULE_FILE.

Merges guix/guix!7826
Change-Id: I1ab296cfa7b424196bd7383fd86e69c8fed0355f
Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
2026-04-16 18:37:11 +08:00
Sharlatan Hellseher eb2482a352 gnu: libftdi: Fix build on python-3.12.
* gnu/packages/libftdi.scm (libftdi)[native-inputs]: Remove swig-4.0;
add python-setuptools and swig.

Change-Id: Idd7c1c616191778c7176ef50007404d1628c914e
2026-04-16 10:35:42 +01:00
Sharlatan Hellseher 3ffa9e2742 gnu: fdroidserver: Update to 2.4.3.
* gnu/packages/android.scm (fdroidserver): Update to 2.4.3.
[source]: Switch to git-fetch.
[propagated-inputs]: Remove python-argcomplete, python-docker,
python-mwclient, python-pyasn1, and python-pyasn1-modules.

Change-Id: I5f184eb4df48ee160091ffa55bb1e9a0ca8c0c40
2026-04-16 10:35:10 +01:00
Sharlatan Hellseher 7a4e3229f7 gnu: sdkmanager: Adjust inputs and test backend.
* gnu/packages/android.scm (sdkmanager):
[arguments] <test-backend>: Use unittest.
[phases]{check}: Use default phase.
[inputs]:  Move from here ...
[propagated-inputs]: ... to here.

Change-Id: I6d976dbf7cee39beda89ea9719dcc1e340da66d9
2026-04-16 10:35:10 +01:00
Sharlatan Hellseher a8103c1b7c gnu: python-asyncinject: Update to 0.6.1.
* gnu/packages/python-xyz.scm (python-asyncinject): Update to 0.6.1.
[source]: Switch to git-fetch.
[native-inputs]: Remove python-wheel.

Change-Id: I097308d486aa6dc0a60f696389413dba2fd79b09
2026-04-16 10:34:50 +01:00
John Kehayias f77bbf8016 gnu: steam-devices-udev-rules: Update to 1.0.0.61-2.7dde9ec.
* gnu/packages/games.scm (steam-devices-udev-rules): Update to 1.0.0.61-2.7dde9ec.

Change-Id: If5931e836978b27d09e128cb5b581292eebcde96
2026-04-15 23:47:42 -04:00
Ian Eure c26c3d0f53 gnu: autofs-service: Fix computing Shepherd requirements.
Handling of non-NFS/SMB mounts was buggy and did not work at all.

* gnu/services/nfs.scm (autofs-configuration->requirements): Add an `else' to
prevent losing the accumulator in the fold.
(autofs-configuration->requirements): Call `delete-duplicates' on the input,
not the output.

Fixes #7927.

Change-Id: I0cccde431d0bd19dc63be8754fb6dfa35a6f8a49
2026-04-15 15:06:05 -07:00
jgart 0d11c221b8 guix: scripts: gc: Give better error reporting when attempting to vacuum.
* guix/scripts/gc.scm (%options): Error out when a non-root user tries
to vacuum the database.

Change-Id: Iee7d626c43980640aa91a3ceeb95675016932c55
Signed-off-by: jgart <jgart@dismail.de>
2026-04-15 17:56:23 -04:00
bdunahu 6abb7bc422 gnu: emacs-xelb: Patch call to xauth with store path.
This ensures login cookies used to authenticate with the X server can be found
at runtime without requiring xauth be in the user's profile.

* gnu/packages/emacs-xyz.scm (emacs-xelb)[#:phases]: Add ‘patch-xauth-path’.
[inputs]: Add xauth.

Change-Id: Ic24cb12d6103a3f6dc24c89f2dd43c1e1f7dc95c
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:11:05 +02:00
Liliana Marie Prikler 03937c8724 gnu: Add papers.
* gnu/packages/gnome.scm (papers): New variable.
* gnu/packages/rust-crates.scm (rust-ashpd-0.12.1)
(rust-float-next-after-1.0.0, rust-formatx-0.2.4, rust-geo-0.30.0)
(rust-geo-types-0.7.18, rust-geographiclib-rs-0.2.5, rust-i-float-1.7.0)
(rust-i-key-sort-0.2.0, rust-i-overlay-2.0.5, rust-i-shape-1.7.0)
(rust-i-tree-0.8.3, rust-ink-stroke-modeler-rs-0.1.0, rust-oo7-0.5.0)
(rust-robust-1.2.0): New variables.
(lookup-cargo-inputs): Add ‘papers’.
2026-04-15 23:10:35 +02:00
Liliana Marie Prikler 7ff2ca1b5c gnu: Add poppler-next.
* gnu/packages/pdf.scm (poppler-next): New variable.
2026-04-15 23:10:25 +02:00
λx.x 380efb7408 gnu: emacs-bqn-mode: Update to 2026-02-08
* gnu/packages/emacs-xyz.scm (emacs-bqn-mode): Update to 2026-02-08.

Change-Id: I6e52ba929ba962832c96422f48e8b1aed447a3cf
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:25 +02:00
Nguyễn Gia Phong 589f4cc655 gnu: Add libfossil.
* gnu/packages/version-control.scm (libfossil): New variable.
* gnu/packages/patches/libfossil-skip-amalgamation.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Register it.

Change-Id: I6e19c074587e17446ac213386a9143d503ebba57
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:25 +02:00
Nguyễn Gia Phong 05e669ac50 guix: Implement fossil-download.
* guix/fossil-download.scm: New file.
* guix/build/fossil.scm: New file.
* Makefile.am (MODULES): Add them.
* etc/teams.scm (core)[#:scope]: Add "guix/fossil-download.scm".
(vcs)[#:scope]: Add "guix/build/fossil.scm".
* CODEOWNERS: Regenerate file.
* doc/guix.texi (origin Reference): Document fossil-fetch
and fossil-reference.
* NEWS: Add entry about fossil-fetch.

Change-Id: Ia252bcbbb417159a842d5092a937e2aad55a1656
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:25 +02:00
coopi 08341ec277 gnu: Add emacs-nerd-icons-mode-line.
* gnu/packages/emacs-xyz.scm (emacs-nerd-icons-mode-line): New variable.

Change-Id: Id3f80fe2c094b1e0e3eead99cb9e3083b062319b
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:25 +02:00
coopi b725619636 gnu: Add emacs-nerd-icons-corfu.
* gnu/packages/emacs-xyz.scm (emacs-nerd-icons-corfu): New variable.

Change-Id: I487dc25bad6d0536a670c13626c1e18f4364c147
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:24 +02:00
coopi a3f6d396cd gnu: Add emacs-nerd-icons-completion.
* gnu/packages/emacs-xyz.scm (emacs-nerd-icons-completion): New variable.

Change-Id: Ib5b07704689f8a1af6e0dec7e0370d3afde4f7d6
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:24 +02:00
coopi 7d67cacad1 gnu: Add emacs-nerd-icons-ibuffer.
* gnu/packages/emacs-xyz.scm (emacs-nerd-icons-ibuffer): New variable.

Change-Id: Ia25dd10b7d3950cefec3ad4301cfebacdd4b8c74
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:24 +02:00
coopi 333d61cf5b gnu: Add emacs-nerd-icons-ivy-rich.
* gnu/packages/emacs-xyz.scm (emacs-nerd-icons-ivy-rich): New variable.

Change-Id: I2266c559c225d1f0bb499734eb6eef4a613436e9
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:24 +02:00
coopi 21a4d649b2 gnu: Add emacs-nerd-icons-dired.
* gnu/packages/emacs-xyz.scm (emacs-nerd-icons-dired): New variable.

Change-Id: Ib8b192a07e7acbd52cb1705f237ec5a1976b3060
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:24 +02:00
coopi 5ff9ca0339 gnu: emacs-nerd-icons: Patch out font installer.
* gnu/packages/emacs-xyz.scm (emacs-nerd-icons)[#:phases]: Add
‘disable-font-installer’.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-04-15 23:10:24 +02:00
Artyom V. Poptsov c4657c774b gnu: guile-pnm: Update to 0.2.0.
* gnu/packages/guile-xyz.scm (guile-pnm): Update to 0.2.0.

Change-Id: Icc2c71565e0100f82d22f57bfed3bba8d36ba353
2026-04-16 00:00:42 +03:00
Cayetano Santos b559fd6938 gnu: Add fsviewer.
* gnu/packages/gnustep.scm (fsviewer): New variable.

Merges guix/guix!7829

Change-Id: Ie9bc5f3eaed7a507c9aa031ab96e65ddaf69e6ad
2026-04-15 16:17:15 +02:00
Andreas Enge fa38888348 gnu: libnl: Update to 3.12.0.
* gnu/packages/linux.scm (libnl): Update to 3.12.0.

Change-Id: I3bfc0e8b6e63f43addf28966abd49fd42588888c
2026-04-15 13:52:09 +02:00
André Batista 10ea4f874e gnu: ungoogled-chromium: Update to 147.0.7727.55.
Fixes various CVEs, too many to list.

* gnu/packages/chromium.scm (%preserved-third-party-files): Add
  base/third_party/nspr,
  buildtools/third_party/libc++,
  buildtools/third_party/libc++abi,
  third_party/catapult/third_party/beautifulsoup4-4.9.3,
  third_party/catapult/third_party/html5lib-1.1,
  third_party/catapult/third_party/typ,
  third_party/dawn/third_party/renderdoc,
  third_party/dawn/third_party/webgpu-headers,
  third_party/devscripts,
  third_party/devtools-frontend/src/front_end/third_party/csp_evaluator,
  third_party/devtools-frontend/src/front_end/third_party/legacy-javascript,
  third_party/devtools-frontend/src/front_end/third_party/source-map-scopes-codec,
  third_party/federated_compute/chromium/fcp/confidentialcompute,
  third_party/freetype,
  third_party/fxdiv,
  third_party/hyphenation-patterns,
  third_party/icu,
  third_party/libc++,
  third_party/libpfm4,
  third_party/libpng,
  third_party/libx11,
  third_party/libxcb-keysyms,
  third_party/llvm-libc,
  third_party/neon_2_sse,
  third_party/opus,
  third_party/pdfium/third_party/lcms,
  third_party/pdfium/third_party/libopenjpeg,
  third_party/perfetto/protos/third_party/pprof,
  third_party/perfetto/protos/third_party/primes,
  third_party/perfetto/protos/third_party/simpleperf,
  third_party/pyyaml,
  third_party/sentencepiece,
  third_party/sentencepiece/src/third_party/darts_clone,
  third_party/six and
  third_party/skia/include/third_party/vulkan.
Remove:
  net/third_party/nss,
  third_party/compiler-rt/src/lib,
  third_party/libaom/source/libaom/third_party/SVT-AV1,
  third_party/skia/third_party/vulkanmemoryallocator and
  third_party/webrtc/rtc_base/third_party/sigslot.

(%chromium-version): Update to 147.0.7727.55.
(%ungoogled-origin, %debian-origin): Update hashes.
(%debian-patches): Add debianization/safe-libcxx.patch,
  disable/enterprise-tests.patch,
  disable/rustc-allow-features.patch,
  fixes/bytemuck.patch,
  fixes/libpng-testonly.patch,
  llvm-19/clang19.patch (move from bookwork),
  llvm-19/clone-traits.patch,
  llvm-19/keyfactory.patch,
  llvm-19/value-or.patch,
  llvm-22/ignore-for-ubsan.patch,
  trixie/cookie-string-view.patch and
  trixie/nodejs-main.patch.
Remove trixie/rust-no-alloc-shim.patch.

(%guix-patches): Add ungoogled-chromium-custom-compiler.patch and
ungoogled-chromium-empty-parsed-rustc-args.patch.  Remove
ungoogled-chromium-unbundle-icu-target.patch which was merged upstream.
(ungoogled-chromium-snippet): Remove icu from replace_gn_files args.  Our
icu does not have ucmndata.h, umapfile.h and putilimp.h which are required
to build now.
(ungoogled-chromium) [arguments] <#:configure-flags>: Add is_component_build,
webnn_use_tflite, fatal_linker_warnings, enable_perfetto_unittests,
skia_enable_skshapper_tests, tint_build_unittests, enable_nocompile_tests,
enable_screen_ai_browsertests flags and set them to false.  Set
use_system_icu to false.  Remove enable_glic, enable_js_type_check and
removed_rust_stdlib_libs.  The first two were removed and the last one is
not necessary any longer.  Add blink_symbol_level and v8_symbol_level and
set them to zero.
[arguments] <#:phases> {patch-stuff}: Remove compiler substitution which
is not needed anymore.  Adjust rustfmt_path to guix.
{include-pthreadpool}: New phase.
{adjust-CPLUS_INCLUDE_PATH}: Help clang find gcc's bits/c++config.h.
[inputs]: icu-77 is required now, even though we're not using it this time.

* gnu/packages/patches/ungoogled-chromium-custom-compiler.patch: Add it.
* gnu/packages/patches/ungoogled-chromium-empty-parsed-rustc-args.patch: Same.
* gnu/packages/patches/ungoogled-chromium-unbundle-icu-target.patch: Remove it.
* gnu/local.mk: (Un)register the above patches.

Change-Id: I597b69b15368e9b410fa3d29342700d9ea0b0d82
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-15 13:10:02 +02:00
André Batista c5280fd612 gnu: gn: Update to 0.0-2354.6e8dcde.
* gnu/packages/build-tools.scm (gn): Update to 0.0-2354.6e8dcde.

Change-Id: Idc9f52ae9f4a758d47413922de742409d9fee4c7
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-15 13:09:55 +02:00
Efraim Flashner ed63c9e8f7 gnu: rust-crates: Sort alphabetically.
* gnu/packages/rust-crates.scm: Sort rust crates alphabetically.

Change-Id: I2d793ef07dc9aff97216be21714c3bd180935ba3
2026-04-15 13:25:53 +03:00
Efraim Flashner 297b593f62 gnu: zed: Remove a prebuilt binary.
* gnu/packages/text-editors.scm (zed)[source]: Add a snippet to remove a
bundled binary.

Change-Id: Ie4d94807c51d71d8199195225a6e019512021719
2026-04-15 13:25:53 +03:00
Cayetano Santos 07ecb050c0 gnu: coreboot.scm: Update to 26.03.
* gnu/packages/coreboot.scm (%coreboot-version): Update to 26.03.
(%coreboot-origin): Update sha256.

Merges guix/guix!7862

Change-Id: I0cafb9431afeab0cb5a3ce80c3ffaf99ab27b0f6
2026-04-15 11:52:33 +02:00
Cayetano Santos ac316e522a gnu: coreboot.scm: Use local variables.
* gnu/packages/coreboot.scm (%coreboot-version, %coreboot-origin): New
variables.
* gnu/packages/coreboot.scm (bincfg, ifdtool, intelmetool,
nvramtool)[version]: Replace by %coreboot-version.
[source]: Replace by %coreboot-source.

Merges guix/guix!7862

Change-Id: I9b586347823729680a1958524985abadfa67ab09
2026-04-15 11:52:22 +02:00
Ryan Campbell 99fdbdef6a gnu: python-pynvim: Fix test_command_error with neovim 0.12.x.
Neovim 0.12.0 changed the error message for invalid cursor positions
from "Cursor position outside buffer" to "Invalid cursor line: out of
range", causing test_command_error to fail.

This applies the upstream patch temporarily until a new pynvim release
is created.

Merges guix/guix!7755

* gnu/packages/patches/python-pynvim-fix-test-command-error.patch: New
patch.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/vim.scm (python-pynvim)[source]: Use it.

Change-Id: Ibff0545a60948c946c420fe7118a37d161d93a30
Signed-off-by: Cayetano Santos <csantosb@inventati.org>
2026-04-15 11:42:50 +02:00
Ryan Campbell 101b12a54a gnu: neovim: Update to 0.12.1.
* gnu/packages/vim.scm (neovim): Update to 0.12.1.

Merges guix/guix!7755

Change-Id: I56afc43fff966720e80d6c85003bdb15a87d339f
Signed-off-by: Cayetano Santos <csantosb@inventati.org>
2026-04-15 11:42:48 +02:00
Andreas Enge aafdf7ecf7 gnu: Remove python-pydantic-1.
* gnu/packages/python-xyz.scm (python-pydantic-1): Delete variable.

Fixes: guix/guix#7186
Change-Id: I75088c0eaa764fc6dd499801da64124eb7fbecf4
2026-04-15 11:07:31 +02:00
Ada Stevenson 0999b3268c gnu: icedove: Update to 140.9.1.
Follow-up to 6ab6e5b75d

* gnu/packages/gnuzilla.scm (%icedove-build-id, %icedove-version,
thunderbird-comm-source): Update to 140.9.1.

Change-Id: Id8f6ecb30138b6e36b3856ec795d77f8ca796df1
Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
2026-04-15 15:08:34 +09:00
Andy Tai e296f3f012 gnu: libmicrohttpd: Update to 1.0.3.
* gnu/packages/gnunet.scm (libmicrohttpd): Update to 1.0.3.

Change-Id: I018d6b06ebab5440cfc7a4fa919228a7d3c4e04e
Merges: https://codeberg.org/guix/guix/pulls/7676
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 14:07:42 +09:00
Patrick Norton 759bdcb469 gnu: fuzzel: Update to 1.14.1.
* gnu/packages/xdisorg.scm (fuzzel): 1.14.1.

Change-Id: Ib5c29af4b9bcc19013e3be2b0a698266f0a32066
Merges: https://codeberg.org/guix/guix/pulls/7675
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 14:05:01 +09:00
Foster Hangdaan ee985ff4d6 gnu: wesnoth: Update to 1.18.7.
* gnu/packages/games.scm (wesnoth): Update to 1.18.7.

Change-Id: I61040ae6417afa851c51799aef1f6245bf0c5dd0
Merges: https://codeberg.org/guix/guix/pulls/7721
Reviewed-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 13:30:48 +09:00
Danylo Kondratiev 4fdaa6e2f2 gnu: gkrellm: Update to 2.5.1.
* gnu/packages/gkrellm.scm (gkrellm): Update to 2.5.1.
  [inputs]: Drop libice.

Change-Id: Ie907b82395607dfa856000c69ea45569d4fe3266
Merges: https://codeberg.org/guix/guix/pulls/7876
Reviewed-by: Nicolas Graves <ngraves@ngraves.fr>
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 13:25:55 +09:00
Danylo Kondratiev 445e61337e gnu: gkrellm: Improve style.
* gnu/packages/gkrellm.scm (gkrellm): Run guix style.
  [inputs]: Drop input labels, remove gettext-minimal.
  [native-inputs]: Add gettext-minimal.
  [source]: Set https URL scheme.
  [arguments]<#:phases>: Convert to GExps.
  [arguments]<#:make-flags>: Set CC to (cc-for-target).
  [home-page]: Set https URL scheme.

Change-Id: I854cc3cd4537dd2ed64fa34500a6b280d6573cad
Reviewed-by: Nicolas Graves <ngraves@ngraves.fr>
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 13:25:13 +09:00
Daniel Martins d632b423d5 gnu: Add rtcqs.
* gnu/packages/audio.scm (rtcqs): New variable.

Change-Id: If0a28098773e3daa106830d69a87666d3fe14368
Merges: https://codeberg.org/guix/guix/pulls/7858
Reviewed-by: Hugo Buddelmeijer <hugo@buddelmeijer.nl>
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 13:20:08 +09:00
aecepoglu 4a4ef229e6 gnu: sbcl-coalton: Update to 0.0.1-5.bf475c8.
* gnu/packages/lisp-xyz.scm (sbcl-coalton): Update to 0.0.1-5.bf475c8.

Change-Id: I92c6a057b982500ba0629ed663c5a86c0616e358
Signed-off-by: jgart <jgart@dismail.de>
2026-04-14 22:03:56 -04:00
Danny Milosavljevic 2c51b803e3 gnu: Add zed.
* gnu/packages/patches/zed-0.225.10-add-guix-container-support.patch: New file.
* gnu/packages/patches/zed-0.225.10-collapse-multiline-git-deps.patch: New
file.
* gnu/packages/patches/zed-0.225.10-disable-dlopen.patch: New file.
* gnu/packages/patches/zed-0.225.10-exclude-libwebrtc-from-audio.patch: New
file.
* gnu/packages/patches/zed-0.225.10-fix-sqlite-memory-mode.patch: New file.
* gnu/packages/patches/zed-0.225.10-fix-test-db-isolation.patch: New file.
* gnu/packages/patches/zed-0.225.10-fix-workspace-race.patch: New file.
* gnu/packages/patches/zed-0.225.10-keep-regular-file-workspaces.patch: New file.
* gnu/packages/patches/zed-0.225.10-remove-patch-crates-io.patch: New file.
* gnu/packages/patches/zed-0.225.10-use-mock-livekit-on-linux.patch: New file.
* gnu/packages/patches/rust-candle-0.9.1-add-candle-onnx-to-workspace.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Register them.
* gnu/packages/rust-sources.scm (rust-alacritty-0.25.1.9d9640d,
rust-candle-0.9.1.724d75e, rust-dap-types-0.0.1.1b461b3,
rust-gh-workflow-0.8.0.c9eac0e, rust-livekit-0.7.8.5f04705,
rust-notify-8.2.0.ce58c24, rust-pet-0.1.0.d5b5bb0,
rust-tiktoken-rs-0.9.1.2570c43, rust-zed-xim-0.4.0-zed.16f35a2): New
variables.
* gnu/packages/rust-crates.scm (lookup-cargo-inputs): Modify.
* gnu/packages/text-editors.scm (zed): New variable.

Change-Id: I16d4c5431e3398261ac4eb74483747c09cf74449
2026-04-15 03:19:10 +02:00
jgart 6690bf46c6 gnu: trealla: Update to 2.92.30.
* gnu/packages/prolog.scm (trealla): Update to 2.92.30.
[inputs]: Add libedit.

Change-Id: Ica510ab3eed3f79a5333dda8b5f2a460780467e7
2026-04-14 19:16:11 -04:00
Igorj Gorjaĉev 58266bb4ba gnu: jpm: Update to 1.2.0.
* gnu/packages/lisp.scm (jpm): Update to 1.2.0.

Change-Id: Ib8c7c9ac1e66a767b9e280761ae48140f866a443
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-14 22:58:15 +02:00
Foster Hangdaan 69f512e520 gnu: skopeo: Update to 1.22.2.
* gnu/packages/virtualization.scm (skopeo): Update to 1.22.2.

Change-Id: I7c860a205c40cd5efd329770f6262b80716b2e4d
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-14 22:38:26 +02:00
Foster Hangdaan 83e5fe437f gnu: podman: Update to 5.8.2.
* gnu/packages/containers.scm (podman): Update to 5.8.2.

Change-Id: I681067e7c2ac11f4e12c94db5898e121b6a1e0f2
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-14 22:21:25 +02:00
Nicolas Goaziou ef81d340cd gnu: dvisvgm: Deprecate in favor of texlive-dvisvgm.
* gnu/packages/tex.scm (dvisvgm): Deprecate.
* etc/teams/tex/tex-manifest.scm (%sundry-texlive-packages): Do not monitor
dvisvgm anymore.
* gnu/packages/statistics.scm (python-openturns): Use texlive-dvisvgm.

Change-Id: I1903a0bdd4e66f9f2a49d21029371e87924435ac
2026-04-14 22:17:55 +02:00
André Batista 5ce1b4a3e3 gnu: ublock-origin: Update to 1.70.0.
* gnu/packages/browser-extensions.scm (ublock-origin): Update to 1.70.0.
(ublock-main-assets): Update to 0-6.004af606e6a0e.
(ublock-prod-assets): Update to 0-6.6c15e4ef91888.

Change-Id: I730ef9d4623a9abe972d82c5700458f6c888077c
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-14 21:19:44 +02:00
Artyom V. Poptsov e155ef7c4b gnu: Add guile-pnm.
* gnu/packages/guile-xyz.scm (guile-pnm): New variable.

Change-Id: I0e5e2fa77c6d75567983ab61c61880bef34f3e30
2026-04-14 20:03:58 +03:00
68 changed files with 12181 additions and 994 deletions
+2
View File
@@ -68,6 +68,7 @@ guix/discovery\.scm @guix/core
guix/docker\.scm @guix/core
guix/download\.scm @guix/core
guix/elf\.scm @guix/core
guix/fossil-download\.scm @guix/core
guix/ftp-client\.scm @guix/core
guix/gexp\.scm @guix/core
guix/git-authenticate\.scm @guix/core
@@ -484,6 +485,7 @@ gnu/services/version-control\.scm @guix/vcs
gnu/tests/version-control\.scm @guix/vcs
guix/build/bzr\.scm @guix/vcs
guix/build/cvs\.scm @guix/vcs
guix/build/fossil\.scm @guix/vcs
guix/build/git\.scm @guix/vcs
guix/build/hg\.scm @guix/vcs
guix/build/svn\.scm @guix/vcs
+2
View File
@@ -104,6 +104,7 @@ MODULES = \
guix/discovery.scm \
guix/android-repo-download.scm \
guix/bzr-download.scm \
guix/fossil-download.scm \
guix/git-download.scm \
guix/hg-download.scm \
guix/hash.scm \
@@ -236,6 +237,7 @@ MODULES = \
guix/build/asdf-build-system.scm \
guix/build/bzr.scm \
guix/build/copy-build-system.scm \
guix/build/fossil.scm \
guix/build/git.scm \
guix/build/hg.scm \
guix/build/glib-or-gtk-build-system.scm \
+3
View File
@@ -20,6 +20,9 @@ Please send Guix bug reports to bug-guix@gnu.org.
*** New service for Fossil SCM
*** TeX Live updated to 2026.1
** Programming interfaces
*** New (guix fossil-download) module, for fetching Fossil repositories
* Changes in 1.5.0 (since 1.4.0)
** Package management
*** New rpm format for the guix pack command
+46
View File
@@ -8737,6 +8737,52 @@ The example below denotes a version of gnu-standards to fetch:
@end deftp
For Fossil repositories, the module @code{(guix fossil-download)} defines
the @code{fossil-fetch} origin method and @code{fossil-reference} data type
for support of the Fossil @abbr{SCM, software configuration management} system.
@deffn {Procedure} fossil-fetch ref hash-algo hash [name]
Return a fixed-output derivation that fetches @var{ref}, a
@code{<fossil-reference>} object. The output is expected to have recursive
hash @var{hash} of type @var{hash-algo} (a symbol). Use @var{name} as
the file name, or a generic name if @code{#f}.
@end deffn
@deftp {Data Type} fossil-reference
This data type represents a Fossil reference
for @code{fossil-fetch} to retrieve.
@table @asis
@item @code{uri} (type: string)
The URI of a Fossil repository to clone, in one of the following forms,
in which @code{[...]} denotes optional elements:
@table @code
@item http[s]://[userid[:password]@@]host[:port][/path]
A HTTP/HTTPS URL.
@item [file://]path/to/repo.fossil
A file URI, where the path must have an extra leading @code{/}
to use an absolute path (without the URI scheme, the repository
is opened directly without cloning).
@end table
@item @code{check-in} (type: string)
A @url{https://fossil-scm.org/home/doc/trunk/www/checkin_names.wiki,
name of the check-in} to fetch, e.g.@: its canonical hexadecimal identifier,
associated tag and/or timestamp.
@end table
The example below denotes the @code{version-3.51.1} tag
of the SQLite repository:
@lisp
(fossil-reference
(uri "https://sqlite.org/src")
(check-in "version-3.51.1"))
@end lisp
@end deftp
@node Defining Package Variants
@section Defining Package Variants
+2
View File
@@ -565,6 +565,7 @@ challenges"))
"guix/docker.scm"
"guix/download.scm"
"guix/elf.scm"
"guix/fossil-download.scm"
"guix/ftp-client.scm"
"guix/gexp.scm"
"guix/git-authenticate.scm"
@@ -1214,6 +1215,7 @@ the \"texlive\" importer."
"gnu/tests/version-control.scm"
"guix/build/bzr.scm"
"guix/build/cvs.scm"
"guix/build/fossil.scm"
"guix/build/git.scm"
"guix/build/hg.scm"
"guix/build/svn.scm")))
-1
View File
@@ -26,7 +26,6 @@
(define %sundry-texlive-packages
(list bibtool
dvisvgm
rubber
texmaker
texstudio
+16 -1
View File
@@ -1698,6 +1698,7 @@ dist_patch_DATA = \
%D%/packages/patches/libcss-check-format.patch \
%D%/packages/patches/libeb-gcc-14.patch \
%D%/packages/patches/libextractor-tidy-support.patch \
%D%/packages/patches/libfossil-skip-amalgamation.patch \
%D%/packages/patches/libftdi-fix-paths-when-FTDIPP-set.patch \
%D%/packages/patches/libgeotiff-fix-tests-with-proj-9.1.1.patch \
%D%/packages/patches/libgeotiff-fix-tests-with-proj-9.3.0.patch \
@@ -2114,6 +2115,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-random2-getrandbits-test.patch \
%D%/packages/patches/python-pillow-use-zlib-1.3.patch \
%D%/packages/patches/python-pydocstyle-add-support-for-pep701.patch \
%D%/packages/patches/python-pynvim-fix-test-command-error.patch \
%D%/packages/patches/python-pypytools-python-3-fixes.patch \
%D%/packages/patches/python-pyreadstat-link-libiconv.patch \
%D%/packages/patches/python-sip-include-dirs.patch \
@@ -2386,6 +2388,7 @@ dist_patch_DATA = \
%D%/packages/patches/rust-1.70-fix-rustix-build.patch \
%D%/packages/patches/rust-1.78-unwinding-fix.patch \
%D%/packages/patches/rust-1.81-fix-riscv64-bootstrap.patch \
%D%/packages/patches/rust-candle-0.9.1-add-candle-onnx-to-workspace.patch \
%D%/packages/patches/rust-codex-0.98.0-core-remove-self-dep.patch \
%D%/packages/patches/rust-codex-0.98.0-test-shebangs.patch \
%D%/packages/patches/rust-codex-0.98.0-test-timeout.patch \
@@ -2520,10 +2523,11 @@ dist_patch_DATA = \
%D%/packages/patches/ultrastar-deluxe-no-freesans.patch \
%D%/packages/patches/unity-test-set-subdir-correctly.patch \
%D%/packages/patches/unity-test-support-int64.patch \
%D%/packages/patches/ungoogled-chromium-custom-compiler.patch \
%D%/packages/patches/ungoogled-chromium-empty-parsed-rustc-args.patch \
%D%/packages/patches/ungoogled-chromium-extension-search-path.patch \
%D%/packages/patches/ungoogled-chromium-RUNPATH.patch \
%D%/packages/patches/ungoogled-chromium-system-nspr.patch \
%D%/packages/patches/ungoogled-chromium-unbundle-icu-target.patch \
%D%/packages/patches/unknown-horizons-python-3.8-distro.patch \
%D%/packages/patches/unknown-horizons-python-3.9.patch \
%D%/packages/patches/unknown-horizons-python-3.10.patch \
@@ -2624,6 +2628,17 @@ dist_patch_DATA = \
%D%/packages/patches/yggdrasil-extra-config.patch \
%D%/packages/patches/ypsilon-Use-GNU-toolchain-as-default.patch \
%D%/packages/patches/zabbix-agent2-test-timezone-fix.patch \
%D%/packages/patches/zed-0.225.10-add-message-notification-action.patch \
%D%/packages/patches/zed-0.225.10-add-guix-container-support.patch \
%D%/packages/patches/zed-0.225.10-collapse-multiline-git-deps.patch \
%D%/packages/patches/zed-0.225.10-exclude-libwebrtc-from-audio.patch \
%D%/packages/patches/zed-0.225.10-disable-dlopen.patch \
%D%/packages/patches/zed-0.225.10-fix-sqlite-memory-mode.patch \
%D%/packages/patches/zed-0.225.10-fix-test-db-isolation.patch \
%D%/packages/patches/zed-0.225.10-fix-workspace-race.patch \
%D%/packages/patches/zed-0.225.10-keep-regular-file-workspaces.patch \
%D%/packages/patches/zed-0.225.10-remove-patch-crates-io.patch \
%D%/packages/patches/zed-0.225.10-use-mock-livekit-on-linux.patch \
%D%/packages/patches/zig-0.9-build-respect-PKG_CONFIG-env-var.patch \
%D%/packages/patches/zig-0.9-fix-runpath.patch \
%D%/packages/patches/zig-0.9-riscv-support.patch \
+12 -20
View File
@@ -765,7 +765,7 @@ file system.")
(sha256
(base32 "0r3xwk8xsfxvmxyw3d57sy2i9by24g0l1jl40735jiac9mypcg7n"))))
(build-system pyproject-build-system)
(inputs (list python-requests python-argcomplete python-urllib3
(propagated-inputs (list python-requests python-argcomplete python-urllib3
python-looseversion gnupg))
(native-inputs (list python-setuptools python-wheel python-requests-cache
python-defusedxml))
@@ -773,8 +773,7 @@ file system.")
(list $SSL_CERT_FILE))
(arguments
(list
#:test-flags
#~(list "-k" "test_*")
#:test-backend #~'unittest
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-tests
@@ -793,11 +792,7 @@ file system.")
(lambda _
(substitute* "sdkmanager.py"
(("gpgv")
(string-append #$(this-package-input "gnupg") "/bin/gpgv")))))
(replace 'check
(lambda* (#:key tests? test-flags #:allow-other-keys)
(when tests?
(apply invoke "python" "-m" "unittest" test-flags)))))))
(string-append #$(this-package-input "gnupg") "/bin/gpgv"))))))))
(home-page "https://gitlab.com/fdroid/sdkmanager")
(synopsis "Replacement for Android sdkmanager written in Python")
(description
@@ -1182,14 +1177,16 @@ for communicating with Xiaomi smart appliances over miIO and MIoT protocols.")
(define-public fdroidserver
(package
(name "fdroidserver")
(version "2.4.2")
(version "2.4.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "fdroidserver" version))
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/fdroid/fdroidserver")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"06xybginrwi5c7bw000wz5s5hzi0aqrxskzwh8qc6wv463w2djax"))))
(base32 "1745fqxr2qfrls4wr6x9w1262b9pxmw9yvzd9b71ya2qmj74q17n"))))
(build-system pyproject-build-system)
(arguments
(list
@@ -1200,22 +1197,17 @@ for communicating with Xiaomi smart appliances over miIO and MIoT protocols.")
(lambda _
(setenv "HOME" "/tmp"))))))
(propagated-inputs
(list python-androguard
(list python-platformdirs
python-androguard
python-apache-libcloud
python-argcomplete
python-asn1crypto
python-clint
python-defusedxml
python-docker
python-gitpython
python-mwclient
python-oscrypto
python-paramiko
python-pillow
python-platformdirs
python-puremagic
python-pyasn1
python-pyasn1-modules
python-pyyaml
python-qrcode
python-requests
+39
View File
@@ -62,6 +62,7 @@
;;; Copyright © 2026 Luis Guilherme Coelho <lgcoelho@disroot.org>
;;; Copyright © 2026 Noé Lopez <noelopez@free.fr>
;;; Copyright © 2026 Carlos Durán Domínguez <wurt@wurt.eu>
;;; Copyright © 2026 Daniel Martins <email@danielfm.me>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -3703,6 +3704,44 @@ compensation, (de)interleaving, and byte-swapping
;; original developer.
(license license:expat)))
(define-public rtcqs
(package
(name "rtcqs")
(version "0.6.7")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://codeberg.org/rtcqs/rtcqs")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1kc3niyaq4m8di68832pgfb1b0m54q5gm68dwlzwwilgxi61ifzc"))))
(build-system pyproject-build-system)
(arguments
(list
#:tests? #f ;no test suite
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'remove-gui
(lambda _
(substitute* "pyproject.toml"
(("\"FreeSimpleGUI\",?")
"")
(("rtcqs_gui = \"rtcqs\\.rtcqs_gui:main\"")
""))
(delete-file "src/rtcqs/rtcqs_gui.py")
(delete-file "src/rtcqs/rtcqs_qt_gui.py"))))))
(native-inputs (list python-setuptools))
(home-page "https://codeberg.org/rtcqs/rtcqs")
(synopsis "Linux audio real-time performance analyzer")
(description
"rtcqs analyzes a Linux system to detect possible bottlenecks that could
have a negative impact on real-time audio performance. It checks kernel
configuration, IRQ priorities, CPU governor, swappiness, and other settings
relevant to low-latency audio work.")
(license license:expat)))
(define-public rtosc
(package
(name "rtosc")
File diff suppressed because it is too large Load Diff
+10 -8
View File
@@ -913,7 +913,7 @@ suite native in R.")
(define-public r-bpcells
(package
(name "r-bpcells")
(version "0.3.0")
(version "0.3.1")
(source
(origin
(method git-fetch)
@@ -922,7 +922,7 @@ suite native in R.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "12h1di45fg06nhsliii7v0h1z567pkpis1xm4ar1qr8ns1n8iljw"))
(base32 "0yqgcajq83g25mznwcngaw7pi6vcqxqdnynpgb95yci57k3wrp6j"))
(modules '((guix build utils)))
(snippet
'(delete-file-recursively "r/src/vendor/highway"))))
@@ -931,13 +931,15 @@ suite native in R.")
(arguments
(list
#:phases
'(modify-phases %standard-phases
`(modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _
(substitute* "r/configure"
(("tools/hwy-test.cpp" m)
(string-append m " $HWY_LIBS $HWY_CFLAGS")))
(chdir "r"))))))
(lambda _ (chdir "r")))
,@(if (target-x86-32?)
'((add-after 'chdir 'require-sse2
;; This avoids falling back to the scalar backend in
;; highway, which fails to build.
(lambda _ (setenv "CFLAGS" "-msse2"))))
'()))))
(propagated-inputs
(list r-dplyr
r-ggplot2
+8 -8
View File
@@ -95,8 +95,8 @@ supported content to the Kodi media center.")
;; Arbitrary commit of branch master,
;; Update when updating uBlockOrigin.
(let* ((name "ublock-main-assets")
(commit "011eef4a5b36a7ebf4adedc486d96b77cfa25c54")
(revision "5")
(commit "004af606e6a0efc22bc65ab1016b553441cacb71")
(revision "6")
(version (git-version "0" revision commit)))
(origin
(method git-fetch)
@@ -105,14 +105,14 @@ supported content to the Kodi media center.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0ng8a88zdvrxg30fz83gswjy27b3hfx9q11n2i715id7az7kqf9x")))))
(base32 "1bfd2d53flrkgvjcr1kj9nbxj4y9a4pcr7m3dycccdhd21x6k0ln")))))
(define ublock-prod-assets
;; Arbitrary commit of branch gh-pages,
;; Update when updating uBlockOrigin.
(let* ((name "ublock-prod-assets")
(commit "6844322800de647da0c4fe06dd6a0b212a3942e4")
(revision "5")
(commit "6c15e4ef91888c610caf73829dc78ae9549ed24a")
(revision "6")
(version (git-version "0" revision commit)))
(origin
(method git-fetch)
@@ -121,12 +121,12 @@ supported content to the Kodi media center.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "13vxq4z1wxivz5xklncxd2sj5aqkyhq919vzbbfp0fgh0imhikib")))))
(base32 "0n2h6drqh44b1zgl729bfr70n08mkm536a2vqgivw7dm5dmi8zd3")))))
(define ublock-origin
(package
(name "ublock-origin")
(version "1.66.2")
(version "1.70.0")
(home-page "https://github.com/gorhill/uBlock")
(source (origin
(method git-fetch)
@@ -136,7 +136,7 @@ supported content to the Kodi media center.")
(file-name (git-file-name name version))
(sha256
(base32
"16ph031hb8bf4rxyxvm6jr0bxmy0snza11jfrbjgfb390gax9r63"))))
"0j1m80nz86yc69c42hv5di5zza0vkycqmjaydb9jgx0abcvi19x5"))))
(build-system gnu-build-system)
(outputs '("xpi" "firefox" "chromium"))
(properties '((addon-id . "uBlock0@raymondhill.net")))
+5 -4
View File
@@ -345,8 +345,8 @@ programs and other files depend.")
(license license:bsd-3)))
(define-public gn
(let ((commit "ee5b7e32b961a9da1933e9f46a018ba6cac8ef60")
(revision "2277")) ;as returned by `git describe`, used below
(let ((commit "6e8dcdebbadf4f8aa75e6a4b6e0bdf89dce1513a")
(revision "2354")) ;as returned by `git describe`, used below
(package
(name "gn")
(version (git-version "0.0" revision commit))
@@ -356,7 +356,7 @@ programs and other files depend.")
(uri (git-reference (url home-page) (commit commit)))
(sha256
(base32
"19kkvwxl66vlzlfppbq03fmi59i5g8a1yc71fsfgwqqmx4wywd6w"))
"0yz38czmbc72q1hkiv3cwxqh2i8ji2vkkvvk5ws2cjplmn2vj0x9"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
@@ -366,7 +366,8 @@ programs and other files depend.")
(lambda _
(setenv "CC" "gcc")
(setenv "CXX" "g++")
(setenv "CXXFLAGS" "-g -O2 -Wno-error=redundant-move")
(setenv "CXXFLAGS"
"-g -O2 -Wno-error=redundant-move -Wno-error=comment")
(setenv "AR" "ar")))
(replace 'configure
(lambda _
+108 -66
View File
@@ -79,11 +79,13 @@
'("base/third_party/cityhash" ;Expat
"base/third_party/double_conversion" ;BSD-3
"base/third_party/icu" ;Unicode, X11-style
"base/third_party/nspr" ;MPL-2.0
"base/third_party/superfasthash" ;BSD-3
"base/third_party/symbolize" ;BSD-3
"base/third_party/xdg_user_dirs" ;Expat
"buildtools/third_party/libc++" ;BSD
"buildtools/third_party/libc++abi" ;BSD
"net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
"net/third_party/nss" ;MPL-2.0
"net/third_party/quiche" ;BSD-3
"net/third_party/uri_template" ;ASL2.0
"third_party/abseil-cpp" ;ASL2.0
@@ -104,8 +106,11 @@
"third_party/catapult" ;BSD-3
"third_party/catapult/common/py_vulcanize/third_party/rcssmin" ;ASL2.0
"third_party/catapult/common/py_vulcanize/third_party/rjsmin" ;ASL2.0
"third_party/catapult/third_party/beautifulsoup4-4.9.3" ;Expat
"third_party/catapult/third_party/html5lib-1.1" ;Expat
"third_party/catapult/third_party/polymer" ;BSD-3
"third_party/catapult/third_party/six" ;Expat
"third_party/catapult/third_party/typ" ;ASL2.0
;; XXX: This is a minified version of <https://d3js.org/>.
"third_party/catapult/tracing/third_party/d3" ;BSD-3
"third_party/catapult/tracing/third_party/gl-matrix" ;Expat
@@ -120,19 +125,12 @@
"third_party/cld_3" ;ASL2.0
"third_party/closure_compiler" ;ASL2.0
"third_party/compiler-rt" ;ASL2.0
"third_party/compiler-rt/src/lib" ;ASL2.0
"third_party/compiler-rt/src/lib/builtins" ;ASL2.0
"third_party/content_analysis_sdk" ;BSD-3
"third_party/cpuinfo" ;BSD-2
"third_party/crabbyavif" ;ASL2.0
"third_party/crabbyavif/src/sys/dav1d-sys" ;ASL2.0
"third_party/crabbyavif/src/sys/aom-sys" ;ASL2.0
"third_party/crabbyavif/src/sys/libgav1-sys" ;ASL2.0
"third_party/crabbyavif/src/sys/libyuv-sys" ;ASL2.0
"third_party/crabbyavif/src/sys/ndk-sys" ;ASL2.0
"third_party/crashpad" ;ASL2.0
"third_party/crashpad/crashpad/third_party/lss" ;ASL2.0
"third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h" ;Zlib
"third_party/crashpad/crashpad/third_party/zlib" ;Zlib
"third_party/crc32c" ;BSD-3
"third_party/cros_system_api" ;BSD-3
"third_party/dav1d" ;BSD-2
@@ -140,19 +138,25 @@
;; TODO: can likely be unbundled when Vulkan is updated.
"third_party/dawn/third_party/khronos" ;ASL2.0
"third_party/dawn/third_party/gn/webgpu-cts" ;BSD-3
"third_party/dawn/third_party/renderdoc" ;Expat
"third_party/dawn/third_party/webgpu-headers" ;BSD-3
"third_party/depot_tools" ;BSD-3
"third_party/devscripts" ;GPL2.0
"third_party/devtools-frontend" ;BSD-3
"third_party/devtools-frontend/src/front_end"
"third_party/devtools-frontend/src/front_end/third_party"
"third_party/devtools-frontend/src/front_end/third_party/acorn" ;Expat
"third_party/devtools-frontend/src/front_end/third_party\
/additional_readme_paths.json" ;no explicit license; trivial
"third_party/devtools-frontend/src/front_end/third_party/json5" ;Expat
"third_party/devtools-frontend/src/front_end/third_party/axe-core" ;MPL2.0
"third_party/devtools-frontend/src/front_end/third_party/chromium" ;BSD-3
"third_party/devtools-frontend/src/front_end/third_party/codemirror" ;Expat
"third_party/devtools-frontend/src/front_end/third_party/csp_evaluator" ;BSD-3
"third_party/devtools-frontend/src/front_end/third_party/diff" ;ASL2.0
"third_party/devtools-frontend/src/front_end/third_party/i18n" ;ASL2.0
"third_party/devtools-frontend/src/front_end/third_party/intl-messageformat" ;BSD-3
"third_party/devtools-frontend/src/front_end/third_party/json5" ;Expat
"third_party/devtools-frontend/src/front_end/third_party/legacy-javascript" ;ASL-2.0
"third_party/devtools-frontend/src/front_end/third_party/lighthouse" ;ASL2.0
"third_party/devtools-frontend/src/front_end/third_party/lit" ;BSD-3
"third_party/devtools-frontend/src/front_end/third_party/marked" ;Expat, BSD-3
@@ -164,10 +168,12 @@
"third_party/devtools-frontend/src/front_end/third_party/puppeteer/third_party/parsel" ; Expat
"third_party/devtools-frontend/src/front_end/third_party/puppeteer/third_party/rxjs" ; ASL2.0
"third_party/devtools-frontend/src/front_end/third_party/puppeteer-replay" ;ASL2.0
"third_party/devtools-frontend/src/front_end/third_party/source-map-scopes-codec" ;BSD-3
"third_party/devtools-frontend/src/front_end/third_party\
/vscode.web-custom-data" ;Expat
"third_party/devtools-frontend/src/front_end/third_party/third-party-web" ;Expat
"third_party/devtools-frontend/src/front_end/third_party/wasmparser" ;ASL2.0
"third_party/devtools-frontend/src/front_end/third_party/web-vitals" ;Expat
"third_party/devtools-frontend/src/third_party/i18n" ;ASL2.0
"third_party/devtools-frontend/src/third_party/pyjson5" ;ASL2.0
@@ -179,6 +185,7 @@
"third_party/farmhash" ;Expat
"third_party/fast_float" ;ASL2.0, Boost1.0, Expat
"third_party/fdlibm" ;non-copyleft
"third_party/federated_compute/chromium/fcp/confidentialcompute" ;ASL2.0
"third_party/federated_compute/src/fcp/base" ;ASL2.0
"third_party/federated_compute/src/fcp/confidentialcompute" ;ASL2.0
"third_party/federated_compute/src/fcp/protos/confidentialcompute" ;ASL2.0
@@ -187,7 +194,9 @@
"third_party/fft2d" ;non-copyleft
"third_party/flatbuffers" ;ASL2.0
"third_party/fp16" ;Expat
"third_party/freetype" ;GPL2.0
"third_party/fusejs" ;ASL2.0
"third_party/fxdiv" ;Expat
"third_party/gemmlowp" ;ASL2.0
"third_party/google_input_tools" ;ASL2.0
"third_party/google_input_tools/third_party/closure_library" ;ASL2.0
@@ -196,6 +205,9 @@
"third_party/harfbuzz-ng" ;Expat
"third_party/highway" ;ASL2.0
"third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
"third_party/hyphenation-patterns" ;Expat
;; FIXME: Our icu does not have some headers such as udatamem.h.
"third_party/icu" ;Unicode3.0
"third_party/ink" ;ASL2.0
"third_party/ink_stroke_modeler" ;ASL2.0
"third_party/inspector_protocol" ;BSD-3
@@ -208,12 +220,14 @@
"third_party/libaddressinput" ;ASL2.0
"third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0"
"third_party/libaom/source/libaom/third_party/fastfeat" ;BSD-3
"third_party/libaom/source/libaom/third_party/SVT-AV1" ;BSD-3
"third_party/libaom/source/libaom/third_party/vector" ;Expat
"third_party/libaom/source/libaom/third_party/x86inc" ;ISC
"third_party/libc++" ;Expat
"third_party/libdrm" ; Expat
"third_party/libgav1" ;ASL2.0
"third_party/libjingle_xmpp" ;BSD-3
"third_party/libpfm4" ;BSD
"third_party/libpng" ;PNG2.0
"third_party/libphonenumber" ;ASL2.0
"third_party/libsecret" ;LGPL2.1+
"third_party/libsrtp" ;BSD-3
@@ -227,11 +241,15 @@
"third_party/libvpx/source/libvpx/third_party/x86inc" ;Expat
"third_party/libwebm" ;BSD-3
"third_party/libx11" ;BSD
"third_party/libxcb-keysyms" ;BSD
"third_party/libxml/chromium" ;BSD-3
"third_party/libyuv" ;BSD-3
"third_party/libzip" ;BSD-3
"third_party/lit" ;BSD-3
"third_party/lit/v3_0" ;BSD-3
"third_party/llvm-libc" ;ASL2.0
"third_party/llvm-libc/src/shared" ;ASL2.0
"third_party/lottie" ;Expat
"third_party/lss" ;BSD-3
"third_party/lzma_sdk" ;public domain
@@ -244,6 +262,7 @@
"third_party/modp_b64" ;BSD-3
"third_party/nasm" ;BSD-2
"third_party/nearby" ;ASL2.0
"third_party/neon_2_sse" ;BSD-2
"third_party/node" ;Expat
"third_party/oak/chromium/proto" ;ASL2.0
"third_party/oak/chromium/proto/attestation" ;ASL2.0
@@ -251,14 +270,20 @@
"third_party/one_euro_filter" ;BSD-3
"third_party/openscreen" ;BSD-3
"third_party/openscreen/src/third_party/tinycbor" ;Expat
"third_party/opus" ;BSD-3
"third_party/ots" ;BSD-3
"third_party/pdfium" ;BSD-3
"third_party/pdfium/third_party/agg23" ;Expat
"third_party/pdfium/third_party/bigint" ;Public domain, BSD-3
"third_party/pdfium/third_party/lcms" ;Expat
"third_party/pdfium/third_party/libopenjpeg" ;BDS-2
"third_party/pdfium/third_party/libtiff" ;non-copyleft
"third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType
"third_party/perfetto" ;ASL2.0
"third_party/perfetto/protos/third_party/chromium" ;BSD-3
"third_party/perfetto/protos/third_party/pprof" ;ASL2.0
"third_party/perfetto/protos/third_party/primes" ;ASL2.0
"third_party/perfetto/protos/third_party/simpleperf" ;ASL2.0
"third_party/pffft" ;the "FFTPACK" license
"third_party/ply" ;BSD-3
"third_party/polymer" ;BSD-3
@@ -268,6 +293,7 @@
"third_party/protobuf/third_party/utf8_range" ; Expat
"third_party/pthreadpool" ;BSD-2
"third_party/puffin" ;Non-copyleft
"third_party/pyyaml" ;Expat
"third_party/pyjson5" ;ASL2.0
"third_party/rapidhash" ;BSD-2
"third_party/readability" ;ASL2.0
@@ -279,11 +305,14 @@
"third_party/search_engines_data" ;BSD-3
"third_party/securemessage" ;ASL2.0
"third_party/selenium-atoms" ;ASL2.0
"third_party/sentencepiece" ;ASL2.0
"third_party/sentencepiece/src/third_party/darts_clone" ;BSD-3
"third_party/shell-encryption" ;ASL2.0
"third_party/simdutf" ;Non-copyleft
"third_party/simplejson" ; Non-copyleft
"third_party/six" ;Expat
"third_party/skia" ;BSD-3
"third_party/skia/third_party/vulkanmemoryallocator" ;BSD-3, Expat
"third_party/skia/include/third_party/vulkan" ;BSD-3
"third_party/smhasher" ;Expat, public domain
;; FIXME: the snappy "replacement" shim (see replace_gn_files.py below) does
@@ -338,7 +367,6 @@
"third_party/webrtc/modules/third_party/fft" ;Non-copyleft
"third_party/webrtc/modules/third_party/g711" ;Public domain
"third_party/webrtc/modules/third_party/g722" ;Public domain
"third_party/webrtc/rtc_base/third_party/sigslot" ;Public domain
"third_party/widevine/cdm/widevine_cdm_common.h" ;BSD-3
"third_party/woff2" ;ASL2.0
"third_party/wuffs" ;ASL2.0
@@ -372,7 +400,7 @@
;; run the Blink performance tests, just remove everything to save ~70MiB.
'("third_party/blink/perf_tests"))
(define %chromium-version "141.0.7390.65")
(define %chromium-version "147.0.7727.55")
(define %ungoogled-revision (string-append %chromium-version "-1"))
(define %debian-revision (string-append "debian/" %ungoogled-revision))
@@ -384,7 +412,7 @@
(file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
(sha256
(base32
"1hk4rww2gccly1qv0xnswd77haj02rlza82403dxdjm8fkdfndy6"))))
"0l6v4wf16067igawjlh90f3d287mkw0cq4j5lvrxxy17y1skynzc"))))
(define %debian-origin
(origin
@@ -397,7 +425,7 @@
((_ version) version))))
(sha256
(base32
"06s3kvwb3490xb28n6r3q5n1c0ylsvchiw6s4h1rrp8jqzwjbmc6"))))
"0gqarll08i7rcs1amapciv263xvzglc8p44ikavq3xd12yyvcd98"))))
(define (origin-file origin file)
(computed-file
@@ -410,26 +438,38 @@
(define %debian-patches
(map debian-patch
'("bookworm/clang19.patch"
"bookworm/foreach.patch"
'("bookworm/foreach.patch"
"debianization/safe-libcxx.patch"
"disable/enterprise-tests.patch"
"disable/node-version-ck.patch"
"disable/rustc-allow-features.patch"
"fixes/bytemuck.patch"
"fixes/gentoo-stylesheet.patch"
"fixes/libcpp-headers.patch"
"fixes/libpng-testonly.patch"
"fixes/rust-clanglib.patch"
"llvm-19/clang19.patch"
"llvm-19/clone-traits.patch"
"llvm-19/keyfactory.patch"
"llvm-19/value-or.patch"
"llvm-22/ignore-for-ubsan.patch"
"system/openjpeg.patch"
;; Remove after rust is past
;; <https://github.com/rust-lang/rust/pull/141061>.
"trixie/rust-no-alloc-shim.patch")))
"trixie/cookie-string-view.patch"
"trixie/nodejs-main.patch")))
(define %guix-patches
(list (local-file
(assume-valid-file-name
(search-patch
"ungoogled-chromium-extension-search-path.patch")))
"ungoogled-chromium-custom-compiler.patch")))
(local-file
(assume-valid-file-name
(search-patch
"ungoogled-chromium-unbundle-icu-target.patch")))
"ungoogled-chromium-empty-parsed-rustc-args.patch")))
(local-file
(assume-valid-file-name
(search-patch
"ungoogled-chromium-extension-search-path.patch")))
(local-file
(assume-valid-file-name
(search-patch
@@ -500,9 +540,8 @@
"#if 0"))
(invoke "python" "build/linux/unbundle/replace_gn_files.py"
"--system-libraries" "flac" "fontconfig" "freetype"
"harfbuzz-ng" "icu" "libjpeg"
"libpng" "libwebp" "libxml" "libxslt" "openh264" "opus"
"zlib")))))
"harfbuzz-ng" "libjpeg" "libpng" "libwebp" "libxml"
"libxslt" "openh264" "opus" "zlib")))))
(define opus+custom
(package/inherit opus
@@ -531,7 +570,7 @@
%chromium-version "-lite.tar.xz"))
(sha256
(base32
"09iwglswnr6d45zz3zsjw7jpm1xlwwkxlz9h5nlhqxyd933a04fq"))
"1salvlw5sykx3zmsbp7cgmf7y8yy6jlgb4b4zswzsbjrprk4jnap"))
(modules '((guix build utils)))
(snippet (force ungoogled-chromium-snippet))))
(build-system gnu-build-system)
@@ -548,6 +587,7 @@
;; directory for an exhaustive list of supported flags.
;; (Note: The 'configure' phase will do that for you.)
#~(list "is_debug=false"
"is_component_build=false"
;; Use the "official" release optimizations, as opposed to
;; a developer build.
"is_official_build=true"
@@ -555,6 +595,7 @@
"use_clang_modules=false"
"use_custom_libcxx=false" ; support for this is deprecated and to be removed.
"optimize_webui=false"
"webnn_use_tflite=false"
"safe_browsing_use_unrar=false"
"chrome_pgo_phase=0"
"use_sysroot=false"
@@ -572,12 +613,10 @@
"enable_service_discovery=false"
"enable_vr=false"
"enable_enterprise_companion=false"
"enable_glic=false"
"enable_iterator_debugging=false"
"enable_hangout_services_extension=false"
"enable_widevine=false"
;; Disable type-checking for the Web UI to avoid a Java dependency.
"enable_js_type_check=false"
"fatal_linker_warnings=false"
;; Disable code using TensorFlow until it has been scrutinized
;; by the ungoogled project.
"build_with_tflite_lib=false"
@@ -589,6 +628,11 @@
"angle_has_histograms=false"
"angle_build_tests=false"
"build_angle_perftests=false"
"enable_perfetto_unittests=false"
"skia_enable_skshapper_tests=false"
"tint_build_unittests=false"
"enable_nocompile_tests=false"
"enable_screen_ai_browsertests=false"
"clang_warning_suppression_file=\"\""
@@ -597,6 +641,8 @@
"is_cfi=false"
"symbol_level=0"
"blink_symbol_level=0"
"v8_symbol_level=0"
"v8_enable_backtrace=false"
;; Define a custom toolchain that simply looks up CC, AR and
@@ -628,26 +674,10 @@
;; invokation and fails if it's just the version number.
" (f6e511eec 2024-10-15) (built from a source tarball)\"")
;; Chromium's build/rust/std/BUILD.gn has a hardcoded
;; list of stdlib rlibs (stdlib_files) that GN uses to
;; declare build outputs. GN requires static output
;; declarations, so the list must exactly match what
;; rlibs exist in the Rust sysroot. Chromium's list
;; includes unicode_width because their bundled
;; toolchain (Rust 1.89) ships it as a dependency of
;; getopts 0.2.23. Our Rust 1.93 has getopts 0.2.24
;; which dropped that dependency, so unicode_width is
;; not in our sysroot. This GN arg removes it from
;; the list. (Chromium's own use of unicode_width via
;; codespan-reporting is a separate vendored copy under
;; third_party/rust/chromium_crates_io/ and is
;; unaffected.)
"removed_rust_stdlib_libs=[\"unicode_width\"]"
;; Prefer system libraries.
"use_system_freetype=true"
"use_system_harfbuzz=true"
"use_system_icu=true"
"use_system_icu=false"
"use_system_lcms2=true"
"use_system_libffi=true"
"use_system_libjpeg=true"
@@ -713,9 +743,9 @@
;; Many files try to include ICU headers from "third_party/icu/...".
;; Remove the "third_party/" prefix to use system headers instead.
(substitute* (find-files "chrome" "\\.cc$")
(("third_party/icu/source/(common|i18n)/")
""))
;(substitute* (find-files "chrome" "\\.cc$")
; (("third_party/icu/source/(common|i18n)/")
; ""))
;; XXX: Should be unnecessary when use_system_lcms2=true.
(substitute* "third_party/pdfium/core/fxcodec/icc/icc_transform.h"
@@ -732,16 +762,19 @@
(("include \"third_party/curl")
"include \"curl"))
;; Unknown flags as of clang-19, can be removed when building with
;; newer clang.
(substitute* "build/config/compiler/BUILD.gn"
(("-gsimple-template-names") ""))
;; Clang libs are not under bindgen root directory.
(substitute* "build/rust/rust_bindgen_generator.gni"
;; Our clang libs and rustfmt are not under bindgen root directory.
(substitute* '("build/rust/rust_bindgen_generator.gni"
"build/rust/rust_bindgen.gni")
(("(_libclang_path = )rust_bindgen_root" _ libclang)
(string-append libclang "clang_base_path"))))))
(add-after 'patch-stuff 'add-absolute-references
(string-append libclang "clang_base_path"))
(("(_rustfmt_path = \")\\$\\{rust_bindgen_root\\}" _ rustfmt)
(string-append rustfmt "${rust_sysroot_absolute}"))))))
(add-after 'patch-stuff 'include-pthreadpool
;; FIXME: Somehow the build system cannot locate this header.
(lambda _
(copy-file "third_party/pthreadpool/src/include/pthreadpool.h"
"pthreadpool.h")))
(add-after 'include-pthreadpool 'add-absolute-references
(lambda* (#:key inputs #:allow-other-keys)
(let ((cups-config (search-input-file inputs "/bin/cups-config"))
(libnssckbi.so (search-input-file inputs
@@ -763,13 +796,22 @@
(add-after 'add-absolute-references 'adjust-CPLUS_INCLUDE_PATH
;; The libcxx include/c++/v1 directory is not exposed via
;; CPLUS_INCLUDE_PATH by default, causing errors like
;; "fatal error: 'format' file not found".
;; "fatal error: 'format' file not found". Also clang is
;; unable to find gcc's bits/c++config.h which is machine
;; dependent.
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(setenv "CPLUS_INCLUDE_PATH"
(string-append
(search-input-directory inputs
"/include/c++/v1")
":" (getenv "CPLUS_INCLUDE_PATH")))))
(let* ((libcxx-v1 (search-input-directory inputs
"include/c++/v1"))
(target-system #$(nix-system->gnu-triplet
(or (%current-target-system)
(%current-system))))
(target-include (string-append "include/c++/"
target-system))
(gcc-bits (search-input-directory inputs
target-include)))
(setenv "CPLUS_INCLUDE_PATH"
(string-append libcxx-v1 ":" gcc-bits ":"
(getenv "CPLUS_INCLUDE_PATH"))))))
(add-before 'configure 'prepare-build-environment
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(let ((node (search-input-file (or native-inputs inputs)
@@ -955,7 +997,7 @@
glib
gtk+
harfbuzz
icu4c
icu4c-77
lcms
libcxx
libffi
+2 -2
View File
@@ -714,7 +714,7 @@ Its main purpose is to support the key usage by @code{docker-init}:
(define-public podman
(package
(name "podman")
(version "5.8.1")
(version "5.8.2")
(outputs '("out" "docker"))
(properties
`((output-synopsis "docker" "docker alias for podman")
@@ -727,7 +727,7 @@ Its main purpose is to support the key usage by @code{docker-init}:
(url "https://github.com/containers/podman")
(commit (string-append "v" version))))
(sha256
(base32 "1wdsdc0nj4m1v8mn95dhavi87ad0adqmld70da59gvp2abff5f0f"))
(base32 "12bmzbfyjsf0mwnam38cw9ib54wj1znh5b7lxzdyll9cvvkhqisr"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
+21 -43
View File
@@ -42,20 +42,24 @@
#:use-module (guix utils)
#:use-module (srfi srfi-26))
(define %coreboot-version "26.03")
(define %coreboot-origin
(origin
(method git-fetch)
(uri (git-reference
(url "https://review.coreboot.org/coreboot")
(commit %coreboot-version)))
(file-name (git-file-name "coreboot" %coreboot-version))
(sha256
(base32
"0436rr0vibh35phvkxrc939njvrmnfq9xw87y1b0nlllglvq07kk"))))
(define-public bincfg
(package
(name "bincfg")
(version "25.09")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://review.coreboot.org/coreboot")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1a1n64dwr5fzdnaj45bjci85ap5yra5gwz4x056zn6481xwvbsmv"))))
(version %coreboot-version)
(source %coreboot-origin)
(build-system gnu-build-system)
(arguments
(list
@@ -126,17 +130,8 @@ It also comes with example files generated by bincfg.")
(define-public ifdtool
(package
(name "ifdtool")
(version "25.09")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://review.coreboot.org/coreboot")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1a1n64dwr5fzdnaj45bjci85ap5yra5gwz4x056zn6481xwvbsmv"))))
(version %coreboot-version)
(source %coreboot-origin)
(build-system gnu-build-system)
(arguments
(list
@@ -160,16 +155,8 @@ dump Intel Firmware Descriptor data of an image file.")
(define-public intelmetool
(package
(name "intelmetool")
(version "25.09")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://review.coreboot.org/coreboot")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1a1n64dwr5fzdnaj45bjci85ap5yra5gwz4x056zn6481xwvbsmv"))))
(version %coreboot-version)
(source %coreboot-origin)
(build-system gnu-build-system)
(arguments
(list
@@ -201,17 +188,8 @@ Management Engine (ME). You need to @code{sudo rmmod mei_me} and
(define-public nvramtool
(package
(name "nvramtool")
(version "25.09")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://review.coreboot.org/coreboot")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1a1n64dwr5fzdnaj45bjci85ap5yra5gwz4x056zn6481xwvbsmv"))))
(version %coreboot-version)
(source %coreboot-origin)
(build-system gnu-build-system)
(arguments
(list
+625 -101
View File
File diff suppressed because it is too large Load Diff
+198 -3
View File
@@ -784,7 +784,7 @@ reading the extensive documentation about BookmarkPlus on the Emacs Wiki.")
(package
(name "emacs-bqn-mode")
;; Upstream releases are tagged by date.
(version "2025-07-06")
(version "2026-02-08")
(source
(origin
(method git-fetch)
@@ -793,7 +793,7 @@ reading the extensive documentation about BookmarkPlus on the Emacs Wiki.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1b25k66nn4qa4ryhm8mzc53qvsvhgjzdngisw28cpdh109627iz3"))))
(base32 "1m9l4if3a9i6r76v370gh6azgj2lwqcnpavfv2bkvm9ad56f3pa8"))))
(build-system emacs-build-system)
(arguments
(list #:tests? #f)) ;No tests found in source.
@@ -24580,6 +24580,13 @@ Meows motions.")
#:tests? #f ; no test suite
#:phases
#~(modify-phases %standard-phases
(add-before 'patch-el-files 'patch-xauth-path
;; Uses xauth directly at runtime to authenticate with the X server.
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "xcb.el"
(("xauth list")
(string-append (search-input-file inputs "/bin/xauth")
" list")))))
(add-after 'expand-load-path 'regenerate-el-files
(lambda* (#:key inputs native-inputs #:allow-other-keys)
(substitute* "xelb-gen"
@@ -24587,6 +24594,7 @@ Meows motions.")
(invoke "make"
(format #f "PROTO_PATH=~a/share/xcb"
#$(this-package-native-input "xcb-proto"))))))))
(inputs (list xauth))
(native-inputs (list xcb-proto))
(propagated-inputs (list emacs-compat))
(home-page "https://github.com/emacs-exwm/xelb")
@@ -35412,12 +35420,199 @@ files are easily readable and they work nicely with version control systems.")
(build-system emacs-build-system)
(arguments
(list #:include #~(cons "^data\\/" %default-include)
#:tests? #f)) ; no tests
#:tests? #f ; no tests
#:phases
#~(modify-phases %standard-phases
;; The nerd-icons-install-fonts function would otherwise
;; download fonts from the network. Replace it with a stub
;; that instructs the user to install the font via Guix.
(add-after 'unpack 'disable-font-installer
(lambda _
(emacs-batch-edit-file "nerd-icons.el"
'(progn
(search-forward "(defun nerd-icons-install-fonts")
(beginning-of-line)
(kill-sexp)
(insert "\
(defun nerd-icons-install-fonts (&optional pfx)
(interactive \"P\")
(message \"To use nerd-icons fonts, install `font-nerd-symbols' using
`guix package -i font-nerd-symbols' or add it to your manifest or home config.
Remember, that you may have to run `fc-cache -rv' to refresh the font cache.\
\"))")
(basic-save-buffer))))))))
(synopsis "Library for easily using nerd font icons inside Emacs")
(description "Nerd-icons an alternative to all-the-icons. It works on both
GUI and terminal, and requires a nerd font installed on your system.")
(license license:gpl3+))))
(define-public emacs-nerd-icons-dired
;; No tags provided upstream
(let ((commit "adf9a2bb5f3f13be7a676923639337f3fcc5d8c3")
(revision "0"))
(package
(name "emacs-nerd-icons-dired")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rainstormstudio/nerd-icons-dired")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0x1xmwlfjgbk5kk4bxvgz4ykwwgiwmdbzhgsw49kpzz678a3qzrp"))))
(build-system emacs-build-system)
(arguments
(list
#:tests? #f)) ;no tests
(propagated-inputs (list emacs-nerd-icons))
(home-page "https://github.com/rainstormstudio/nerd-icons-dired")
(synopsis "Icons for Dired via Nerd Icons")
(description
"This package adds icons to Dired, using the @code{nerd-icons} package.")
(license license:gpl3+))))
(define-public emacs-nerd-icons-ivy-rich
;; Tagged release is not up-to-date, according to the "Version:" keyword in
;; main file.
(let ((commit "5006f91b49e86e232cdc1a628501b76124c41dac")
(revision "0"))
(package
(name "emacs-nerd-icons-ivy-rich")
(version (git-version "1.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/seagle0128/nerd-icons-ivy-rich")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0m62l4cl9j3ssd25rz40vgrv99bmwn6l4ig2sf8zzi0fpzm8axgh"))))
(build-system emacs-build-system)
(arguments
(list
#:tests? #f)) ;tests require Cask
(propagated-inputs
(list emacs-ivy-rich
emacs-nerd-icons))
(home-page "https://github.com/seagle0128/nerd-icons-ivy-rich")
(synopsis "Icons for Ivy via Nerd Icons")
(description
"This package adds icons to Ivy, using the @code{ivy-rich} and
@code{nerd-icons} packages.")
(license license:gpl3+))))
(define-public emacs-nerd-icons-ibuffer
(package
(name "emacs-nerd-icons-ibuffer")
(version "1.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/seagle0128/nerd-icons-ibuffer")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1wj6kcgvh700maj9i5pmgzc48lbj0dbxx849a8w519m4anr7b23s"))))
(build-system emacs-build-system)
(arguments
(list
#:tests? #f)) ;tests require Cask
(propagated-inputs
(list emacs-nerd-icons))
(home-page "https://github.com/seagle0128/nerd-icons-ibuffer")
(synopsis "Icons for Ibuffer via Nerd Icons")
(description
"This package adds icons to ibuffer in Emacs, using the @code{nerd-icons}
package.")
(license license:gpl3+)))
(define-public emacs-nerd-icons-completion
;; No tags provided upstream
(let ((commit "63a6b3f1eb98bb381c86a1658ac401c8967079b8")
(revision "0"))
(package
(name "emacs-nerd-icons-completion")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rainstormstudio/nerd-icons-completion")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "08p361rh5mv3ng10av1381kzl9s4msdjyca96hsgsh05qwq5pdrf"))))
(build-system emacs-build-system)
(arguments
(list
#:tests? #f)) ;no tests
(propagated-inputs (list emacs-nerd-icons))
(home-page "https://github.com/rainstormstudio/nerd-icons-completion")
(synopsis "Icons for Emacs minibuffer completion via Nerd Icons")
(description
"This package adds icons to minibuffer completion in Emacs, using the
@code{nerd-icons} package. It supports @code{vertico} and @code{marginalia}.")
(license license:gpl3+))))
(define-public emacs-nerd-icons-corfu
(package
(name "emacs-nerd-icons-corfu")
(version "1.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/LuigiPiucco/nerd-icons-corfu")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "036p45wqwrqhn5xv5sn3gsm2mb79gj6fk24zpkfa7wrv45qqgb21"))))
(build-system emacs-build-system)
(arguments
(list
#:tests? #f)) ;no tests
(propagated-inputs
(list emacs-corfu
emacs-nerd-icons))
(home-page "https://github.com/LuigiPiucco/nerd-icons-corfu")
(synopsis "Icons for Corfu via Nerd Icons")
(description
"This package adds icons to @code{corfu}, using the @code{nerd-icons}
package.")
(license license:gpl3+)))
(define-public emacs-nerd-icons-mode-line
;; No tags provided upstream
(let ((commit "23eca8e16799524889d661f4140355e81b8f929c")
(revision "0"))
(package
(name "emacs-nerd-icons-mode-line")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/grolongo/nerd-icons-mode-line")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0l2bg22cllab9wz5wxd6zhrywavqrlvv1a6y49ij63qhlsfncy6s"))))
(build-system emacs-build-system)
(arguments
(list
#:tests? #f)) ;no tests
(propagated-inputs (list emacs-nerd-icons))
(home-page "https://github.com/grolongo/nerd-icons-mode-line")
(synopsis "Icons for the Emacs modeline via Nerd Icons")
(description
"This package adds icons to the modeline in Emacs, using the
@code{nerd-icons} package.")
(license license:gpl3+))))
(define-public emacs-all-the-icons
;; The latest release was on 3 June 2021.
(let ((commit "4778632b29c8c8d2b7cd9ce69535d0be01d846f9")
+2 -2
View File
@@ -2730,7 +2730,7 @@ dynamics is used by FreeCAD 1.0.0 for its new Assembly workbench.")
(define-public freecad
(package
(name "freecad")
(version "1.1.0")
(version "1.1.1")
(source
(origin
(method git-fetch)
@@ -2740,7 +2740,7 @@ dynamics is used by FreeCAD 1.0.0 for its new Assembly workbench.")
(recursive? #t))) ;needed for the AddonManager
(file-name (git-file-name name version))
(sha256
(base32 "029ndw1dypx0xhs4fyiinf7gpk8am0vm9b24idvdsx9x7ghrqz4j"))
(base32 "05dx7ifx33705mxb0vc82j0mzzkazakgadfgq5bws30qrxp49xgg"))
(snippet
#~(begin
(use-modules (guix build utils))
+5
View File
@@ -148,6 +148,11 @@ client.")
(list (search-path-specification
(variable "FCITX_ADDON_DIRS")
(files '("lib/fcitx5")))
(search-path-specification
(variable "GUIX_GTK2_IM_MODULE_FILE")
(file-type 'regular)
(separator #f)
(files '("lib/gtk-2.0/2.10.0/immodules-gtk2.cache")))
(search-path-specification
(variable "GUIX_GTK3_IM_MODULE_FILE")
(file-type 'regular)
+5 -5
View File
@@ -5521,7 +5521,7 @@ falling, themeable graphics and sounds, and replays.")
(name "wesnoth")
;; Even-numbered minor versions indicate stable versions:
;; https://wiki.wesnoth.org/ReleasingWesnoth#Version_numbering
(version "1.18.6")
(version "1.18.7")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -5530,7 +5530,7 @@ falling, themeable graphics and sounds, and replays.")
(file-name (git-file-name name version))
(sha256
(base32
"0cdlczxczqgzdaqwydb9gfgi7d9jc39li72p2rb5nk1rlgfff79s"))))
"0hdrp4xm9d8kj8id2g5q0wwdwykx4a0f1cs8a7fghmv0czryfv7f"))))
(build-system cmake-build-system)
(arguments
(list #:tests? #f ;no test target
@@ -13508,8 +13508,8 @@ rules to solve permissions issues.")
(define-public steam-devices-udev-rules
;; Last release from 2019-04-10
(let ((commit "13443480a64fe8f10676606bd57da6de89f8ccb1")
(revision "1"))
(let ((commit "7dde9ecb3c386363ecd9bd0a3b77e4756d200704")
(revision "2"))
(package
(name "steam-devices-udev-rules")
(version (git-version "1.0.0.61" revision commit))
@@ -13521,7 +13521,7 @@ rules to solve permissions issues.")
(file-name (git-file-name name version))
(sha256
(base32
"0i086gmnk93q76sw1laa9br6b7zj2r6nrrw7d64y4q9wcrlxw2bi"))))
"0w0xkgi9fpvdbpl57f8fy2nwy2icm6iag39b8ifpkijlxgclx1p3"))))
(build-system copy-build-system)
(arguments
'(#:install-plan '(("./" "lib/udev/rules.d"
+74 -9
View File
@@ -425,14 +425,29 @@ hierarchical hexagonal geospatial indexing system")
(base32
"00qdk9a4048pzfj2rhzkfw3lvm642znf6kr4x29i3d94494pxsnn"))))
(build-system cmake-build-system)
(arguments `(#:phases
(modify-phases %standard-phases
(add-after
'unpack 'patch-test-shebangs
(lambda _
(substitute* '("tests/xmltester/testrunner.sh"
"tests/xmltester/safe_to_xml.sh")
(("/bin/sh") (which "sh"))))))))
(arguments
`(#:phases
(modify-phases %standard-phases
,@(if (or (target-x86-32?) (target-arm32?))
'((add-after 'unpack 'disable-broken-tests
(lambda _
;; This test fails due to limited accuracy.
(delete-file "tests/xmltester/tests/general/TestCentroid.xml")
(with-directory-excursion "tests/unit"
;; These also fail due to limited accuracy.
(delete-file "algorithm/MinimumAreaRectangleTest.cpp")
(delete-file "capi/GEOSMinimumRotatedRectangleTest.cpp")
;; It is unclear why these fail, but I'm guessing:
;; limited accuracy.
(delete-file "linearref/LengthIndexedLineTest.cpp")
(delete-file "math/DDTest.cpp")))))
'())
(add-after
'unpack 'patch-test-shebangs
(lambda _
(substitute* '("tests/xmltester/testrunner.sh"
"tests/xmltester/safe_to_xml.sh")
(("/bin/sh") (which "sh"))))))))
(inputs
(list glib))
(home-page "https://libgeos.org/")
@@ -955,6 +970,29 @@ hydrology and waste deposition.")
(base32
"03r6mspfv22fs4x4jcgv25v9gsj5k6zy8incvyf94qf50g47s2bc"))))
(build-system cmake-build-system)
(arguments
(if (target-32bit?)
(list
#:phases
'(modify-phases %standard-phases
(add-after 'unpack 'patch-tests
(lambda _
;; These regression tests fail due to accuracy problems.
(substitute* "test/unit/test_factory.cpp"
(("^TEST\\(factory, AuthorityFactory_createUnitOfMeasure_linear_us_survey_foot\\) \\{" m)
(string-append m "\nGTEST_SKIP();\n")))
(substitute* "test/unit/test_grids.cpp"
(("^TEST_F\\(GridTest, VerticalShiftGridSet_gtx\\) \\{" m)
(string-append m "\nGTEST_SKIP();\n")))
(substitute* "test/unit/test_defmodel.cpp"
(("^TEST\\(defmodel, evaluator_horizontal_unit_metre\\) \\{" m)
(string-append m "\nGTEST_SKIP();\n")))
;; These regression tests fail due to accuracy problems.
(substitute* "test/CMakeLists.txt"
(("proj_add_gie_test\\(\"4D-API-cs2cs-style\".+") "")
(("proj_add_gie_test\\(\"Builtins\".+") "")
(("proj_add_gie_test\\(\"peirce_q\".+") ""))))))
'()))
(native-inputs (list googletest pkg-config))
(propagated-inputs (list curl libtiff sqlite)) ;required by proj.pc
(home-page "https://proj.org/")
@@ -984,7 +1022,34 @@ lets developers use the functionality of Proj in their own software.")
version ".tar.gz"))
(sha256
(base32
"1g0hkpiablvhsmw0kn5frwgdir3q7avc45p6lc1zhhhzkv5ikydh"))))))
"1g0hkpiablvhsmw0kn5frwgdir3q7avc45p6lc1zhhhzkv5ikydh"))))
(arguments
(if (target-32bit?)
(list
#:phases
'(modify-phases %standard-phases
(add-after 'unpack 'patch-tests
(lambda _
;; These regression tests fail due to accuracy problems.
(substitute* "test/unit/test_factory.cpp"
(("^TEST\\(factory, AuthorityFactory_createUnitOfMeasure_linear_us_survey_foot\\) \\{" m)
(string-append m "\nGTEST_SKIP();\n")))
(substitute* "test/unit/test_grids.cpp"
(("^TEST_F\\(GridTest, VerticalShiftGridSet_gtx\\) \\{" m)
(string-append m "\nGTEST_SKIP();\n")))
(substitute* "test/unit/test_defmodel.cpp"
(("^TEST\\(defmodel, evaluator_horizontal_unit_metre\\) \\{" m)
(string-append m "\nGTEST_SKIP();\n")))
;; These regression tests fail due to accuracy problems.
(substitute* "test/CMakeLists.txt"
(("proj_add_gie_test\\(\"4D-API-cs2cs-style\".+") "")
(("proj_add_gie_test\\(\"Builtins\".+") "")
(("proj_add_gie_test\\(\"peirce_q\".+") "")
(("proj_add_gie_test\\(\"adams_ws2\".+") ""))
(substitute* "test/cli/CMakeLists.txt"
(("proj_add_test_script_sh\\(\"testvarious\" CS2CS_BIN\\)") ""))))))
'()))))
(define-public python-obspy
(package
+21 -24
View File
@@ -19,10 +19,12 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages gkrellm)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix utils)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gtk)
#:use-module (gnu packages pkg-config)
@@ -31,32 +33,27 @@
(define-public gkrellm
(package
(name "gkrellm")
(version "2.3.11")
(version "2.5.1")
(source
(origin
(method url-fetch)
(uri (string-append "http://gkrellm.srcbox.net/releases/gkrellm-"
version ".tar.bz2"))
(sha256
(base32 "01lccz4fga40isv09j8rjgr0qy10rff9vj042n6gi6gdv4z69q0y"))))
(method url-fetch)
(uri (string-append "https://gkrellm.srcbox.net/releases/gkrellm-"
version ".tar.bz2"))
(sha256
(base32 "0qvy2xmwmfy5f0g09yn9lr262shnx82ba04r5il2wj4qscg3r7h8"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,gettext-minimal)
("gtk+" ,gtk+-2)
("libice" ,libice)
("libsm" ,libsm)))
(native-inputs
(list pkg-config))
(inputs (list gtk+-2 libsm))
(native-inputs (list gettext-minimal pkg-config))
(arguments
`(#:tests? #f ; there is no check target
#:phases
(modify-phases %standard-phases
(delete 'configure)) ; no configure script
#:make-flags
(let ((out (assoc-ref %outputs "out")))
(list (string-append "INSTALLROOT=" out)
"CC=gcc"))))
(home-page "http://gkrellm.srcbox.net/")
(list
#:tests? #f ;there is no check target
#:phases
#~(modify-phases %standard-phases
(delete 'configure)) ;no configure script
#:make-flags
#~(list (string-append "INSTALLROOT=" #$output)
(string-append "CC=" #$(cc-for-target)))))
(home-page "https://gkrellm.srcbox.net/")
(synopsis "System monitors")
(description
"GKrellM is a single process stack of system monitors which supports
+86
View File
@@ -2598,6 +2598,92 @@ of Evince is to replace the multiple document viewers that exist
on the GNOME Desktop with a single simple application.")
(license license:gpl2+)))
(define-public papers
(package
(name "papers")
(version "50.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/papers/"
(version-major version) "/"
"papers-" version ".tar.xz"))
(sha256
(base32 "01dws72fb19i9jwp3r0khr7ym2ns51fifdzafb5dcr5w8vmj06rh"))))
(build-system meson-build-system)
(arguments
(list
#:glib-or-gtk? #t
#:configure-flags
#~(list (string-append "-Dc_link_args=-Wl,-rpath=" #$output "/lib"))
#:imported-modules `(,@%meson-build-system-modules
,@%cargo-build-system-modules)
#:modules `(((guix build cargo-build-system) #:prefix cargo:)
(guix build meson-build-system)
(guix build utils))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'prepare-for-build
(lambda _
(substitute* "meson.build"
(("gtk_update_icon_cache: true")
"gtk_update_icon_cache: false")
(("update_desktop_database: true")
"update_desktop_database: false"))
(substitute* "meson.build"
(("'Cargo.lock',")
""))
(delete-file "Cargo.lock")))
(add-after 'configure 'prepare-cargo-build-system
(lambda args
(for-each
(lambda (phase)
(format #t "Running cargo phase: ~a~%" phase)
(apply (assoc-ref cargo:%standard-phases phase)
#:vendor-dir "vendor"
#:cargo-target #$(cargo-triplet)
args))
'(unpack-rust-crates
configure
check-for-pregenerated-files
patch-cargo-checksums))
(setenv "RUSTFLAGS"
(string-append (or (getenv "RUSTFLAGS") "")
" -C link-arg=-Wl,-rpath,"
#$output "/lib")))))))
(native-inputs
(cons* blueprint-compiler
gettext-minimal
`(,glib "bin")
gobject-introspection
gi-docgen
itstool
pkg-config
rust
`(,rust "cargo")
(or (and=> (%current-target-system)
(compose list make-rust-sysroot))
'())))
(inputs
(cons* appstream
djvulibre
exempi
gtk
libadwaita
libarchive
libspelling
libtiff
nautilus ; for nautilus extension
poppler-next
zlib
(cargo-inputs 'papers)))
(home-page "https://apps.gnome.org/Papers")
;; TODO: drop “new” when updating to GNOME 49 or newer.
(synopsis "GNOME's new document viewer")
(description "Papers is a document viewer capable of displaying multiple
and single page document formats like PDF and DejaVu.")
(license license:gpl2+)))
(define-public gsettings-desktop-schemas
(package
(name "gsettings-desktop-schemas")
+2 -2
View File
@@ -165,14 +165,14 @@ tool to extract metadata from a file and print the results.")
(define-public libmicrohttpd
(package
(name "libmicrohttpd")
(version "1.0.2")
(version "1.0.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
version ".tar.gz"))
(sha256
(base32
"1ix843yqhcl8d5gh5652pw2scx4p5n836ca80ymms5rl136lycnz"))))
"0shj6kk4xp3k45vv696bzgx4s2jzpvhp11syck1zb70rmrxba5kq"))))
(build-system gnu-build-system)
(arguments
(list #:configure-flags
+28
View File
@@ -48,6 +48,34 @@
#:use-module (gnu packages xml)
#:use-module (ice-9 match))
(define-public fsviewer
(package
(name "fsviewer")
(version "0.2.7")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/roblillack/fsviewer")
(commit (string-append "v" version))))
(sha256
(base32
"067fvbq7b4lbnn1flmwf8lm0vq4n6qz5yz6hhab30l4gksfk51cg"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments (list #:tests? #f)) ;no tests
(inputs
(list windowmaker libxmu libxpm))
(native-inputs
(list pkg-config))
(home-page "https://github.com/roblillack/fsviewer")
(synopsis "File viewer for Window Maker")
(description "FSViewer is a NeXT FileViewer lookalike for Window
Maker supporting browser mode and list mode. This version is a fork of
FSViewer.app originally written by George Clernon (1998-99) and later
maintained by Guido Scholz (2002-07).")
(license license:gpl2)))
(define-public gnustep-make
(package
(name "gnustep-make")
+4 -4
View File
@@ -1249,13 +1249,13 @@ testing.")
(cpe-name . "firefox_esr")
(cpe-version . ,(first (string-split version #\-)))))))
(define %icedove-build-id "20260324000000") ;must be of the form YYYYMMDDhhmmss
(define %icedove-build-id "20260403000000") ;must be of the form YYYYMMDDhhmmss
;;; See <https://product-details.mozilla.org/1.0/thunderbird_versions.json>
;;; for the source of truth regarding Thunderbird releases.
;;; Please keep these version numbers in sync with icecat.
;;; Please also update thunderbird-comm-source and thunderbird-comm-l10n to
;;; the icedove version.
(define %icedove-version "140.9.0")
(define %icedove-version "140.9.1")
;; Provides the "comm" folder which is inserted into the icecat source.
;; Avoids the duplication of Icecat's source tarball. Pick the changeset that
@@ -1267,11 +1267,11 @@ testing.")
(method hg-fetch)
(uri (hg-reference
(url "https://hg.mozilla.org/releases/comm-esr140")
(changeset "8be9f2d3072c225a1e5f153745a18984c2babf8f")))
(changeset "427d792f23672fc4adbe9436ce7dddbb2bfb287a")))
(file-name (string-append "thunderbird-" %icedove-version "-checkout"))
(sha256
(base32
"04j35957x03m5x7mhh8zxa86mwjy0is2vb614sr4inkvvz4rs2hg"))
"09fj375a0zb5kgvw94f13997zhcj67a4g5ylpdbjzfql0chh572p"))
(patches (search-patches "icedove-observer-fix.patch"))))
;;; To regenerate, see the `format-locales' helper defined above.
+37
View File
@@ -5787,6 +5787,43 @@ reading and writing PNG data, as well as some graphic primitives and basic image
processing filters.")
(license license:gpl3+)))
(define-public guile-pnm
(package
(name "guile-pnm")
(version "0.2.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/artyom-poptsov/guile-pnm")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "06kgp1gh8hdj1j6w7i981prx93wfjpayrnjlydlzs7l5j04l4m3a"))))
(build-system gnu-build-system)
(arguments
(list
#:make-flags
#~(list "GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
(native-inputs (list autoconf
automake
pkg-config
texinfo
;; needed when cross-compiling.
guile-3.0
guile-lib
guile-smc))
(inputs (list guile-3.0 guile-lib))
(propagated-inputs (list guile-smc))
(home-page "https://github.com/artyom-poptsov/guile-pnm")
(synopsis "NetBPM (PNM) library for GNU Guile")
(description
"@code{guile-pnm} is a GNU Guile library for working with the
@url{https://en.wikipedia.org/wiki/Netpbm, NetPBM} format (also known as PNM),
including portable bitmap (PBM), portable graymap (PGM) and portable
pixel (PPM) variants.")
(license license:gpl3+)))
(define-public guile-cv
(package
(name "guile-cv")
+13 -1
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2014-2019, 2021, 2026 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021, 2026 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017, 2022 Marius Bakke <marius@gnu.org>
@@ -226,6 +226,18 @@ JNI.")
(setenv "JAVACMD" (search-input-file inputs "/bin/jamvm"))
(setenv "JAVAC" (search-input-file inputs "/bin/jikes"))
(setenv "CLASSPATH" (search-input-file inputs "/lib/rt.jar"))))
,@(if (target-x86-32?)
;; XXX: On i686 isFile() always seems to return true. Patching
;; this here is very ugly, but the effects are limited. None
;; of these changes remain by the time we've built Icedtea and
;; the other JDKs.
'((add-after 'unpack 'disable-isFile-checks
(lambda _
(substitute* "src/main/org/apache/tools/ant/util/ResourceUtils.java"
(("destFile = \\(\\(FileProvider\\).*") ""))
(substitute* "src/main/org/apache/tools/ant/taskdefs/Mkdir.java"
(("dir.isFile\\(\\)") "false")))))
'())
(replace 'build
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Ant complains if this file doesn't exist.
+2 -1
View File
@@ -33,6 +33,7 @@
#:use-module (gnu packages libusb)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages swig)
#:use-module (gnu packages textutils))
@@ -95,7 +96,7 @@
"/html"))))))
#:tests? #f)) ; tests fail without access to USB
(native-inputs
(list doxygen graphviz pkg-config python swig-4.0))
(list doxygen graphviz pkg-config python python-setuptools swig))
(inputs
(list boost libconfuse))
(propagated-inputs
+3 -3
View File
@@ -4914,7 +4914,7 @@ transparently through a bridge.")
(define-public libnl
(package
(name "libnl")
(version "3.7.0")
(version "3.12.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -4923,7 +4923,7 @@ transparently through a bridge.")
"/libnl-" version ".tar.gz"))
(sha256
(base32
"0faryrbvp0x4s2zhg5d78vd5q4w34lrr736gpm9wcwpaxv5krr4z"))))
"066xq01y2mx0xi7bwa5y6ciw1ygla15qdlzzyvyzb8zijrqwllgw"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)
@@ -4938,7 +4938,7 @@ transparently through a bridge.")
(string-join (string-split version #\.) "_")
"/libnl-doc-" version ".tar.gz"))
(sha256
(base32 "1ra8xdf06q9hlsrnc1yz67xkp4kd9sd27ff02mlixixnyyjp32sp"))))))
(base32 "18f14pdycghy6fcd27faqgh19zpam6b45s8bgsk85kb9wwzq3yd4"))))))
(outputs `("out" "doc"))
(arguments
`(#:phases
+3 -3
View File
@@ -12982,8 +12982,8 @@ score. When evaluated, the musical score is rendered to an image.")
(sbcl-package->ecl-package sbcl-cmn))
(define-public sbcl-coalton
(let ((commit "939342495f55991812c2c2767322c5e51e755216")
(revision "4"))
(let ((commit "bf475c8c53e02a2e0cb29deab4d101d25743bfca")
(revision "5"))
(package
(name "sbcl-coalton")
(version (git-version "0.0.1" revision commit))
@@ -12995,7 +12995,7 @@ score. When evaluated, the musical score is rendered to an image.")
(commit commit)))
(file-name (git-file-name "cl-coalton" version))
(sha256
(base32 "08qzj3v4fvn9h87whyqg650rpap8lva7jr94d1akv6m2z62l5q68"))))
(base32 "0zrp2s82n2mxx7knbnbsdj64zar21nnnf8iwzrqzs4g3v6xpyz9z"))))
(build-system asdf-build-system/sbcl)
(native-inputs
(list sbcl-fiasco))
+3 -2
View File
@@ -33,6 +33,7 @@
;;; Copyright © 2024 Suhail Singh <suhail@bayesians.ca>
;;; Copyright © 2024 David Pflug <david@pflug.io>
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2026 Igorj Gorjaĉev <igor@goryachev.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -912,7 +913,7 @@ assembler, PEG) is less than 1MB.")
(define-public jpm
(package
(name "jpm")
(version "1.1.0")
(version "1.2.0")
(source
(origin
(method git-fetch)
@@ -921,7 +922,7 @@ assembler, PEG) is less than 1MB.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "05rdxigmiy7vf93s16a8n2029lq33073jccz1rjl4iisxj6piw4l"))))
(base32 "06ywq1ajvqx3lfpldwbakc21hxhb313r0196xnmrrbb6k1f8hsfx"))))
(build-system copy-build-system)
(arguments
(list
+12 -1
View File
@@ -2475,6 +2475,9 @@ similar to MATLAB, GNU Octave or SciPy.")
;; "--enable-doxygen"
"--enable-dot"
"--enable-netcdf-4"
#$@(if (or (target-x86-32?) (target-arm32?))
'("CFLAGS=-Wno-error=incompatible-pointer-types")
'())
(string-append "--with-plugin-dir=" #$output "/lib/hdf5-plugins"))
#:phases
#~(modify-phases %standard-phases
@@ -2486,7 +2489,15 @@ similar to MATLAB, GNU Octave or SciPy.")
(("testurl.sh") ""))
(substitute* "nczarr_test/Makefile.in"
(("/bin/bash")
(search-input-file inputs "bin/bash")))))
(search-input-file inputs "bin/bash")))
;; This test fails on 32 bit platforms.
#$@(if (or (target-x86-32?) (target-arm32?))
'((substitute* '("ncdump/tst_netcdf4_4.sh"
"ncdump/tst_nccopy4.sh")
(("#!/bin/sh" m) (string-append m "\nexit 0\n")))
(substitute* "ncdump/Makefile.in"
(("tst_netcdf4_4.log") "")))
'())))
(add-before 'configure 'fix-source-date
(lambda _
;; As we ${SOURCE_DATE_EPOCH} evaluates to "1" in the build
@@ -0,0 +1,43 @@
--- a/Makefile.in
+++ b/Makefile.in
@@ -265,15 +265,11 @@
amal.flags = -nc
amal.run = TOPDIR="$(DIR.top)" $(SHELL.bash) $(bin.make-amal) --quiet
libfossil.c: $(amal.deps)
$(amal.run) $(amal.flags)
-libfossil.h: libfossil.c
-all: libfossil.c
@if ENABLE_CXX
-libfossil.hpp: libfossil.c
-libfossil.c++: libfossil.c
amal.flags += -c++
@endif
.PHONY: amal
amal: libfossil.c
@@ -287,19 +283,16 @@
fossil uv sync
@endif
@endif
install: install-headers
-install-headers: libfossil.h $(install-dir.include)
- $(INSTALL.noexec) libfossil.h $(install-dir.include)
+install-headers: include/libfossil.h $(install-dir.include)
+ $(INSTALL.noexec) $< $(install-dir.include)
@if ENABLE_CXX
-libfossil++.hpp: libfossil.h
-libfossil++.cpp: libfossil++.hpp
-all: libfossil++.cpp
install-headers: install-headers++
-install-headers++: libfossil++.hpp $(install-dir.include)
- $(INSTALL.noexec) libfossil++.hpp $(install-dir.include)
+install-headers++: include/libfossil.hpp $(install-dir.include)
+ $(INSTALL.noexec) $< $(install-dir.include)
@endif # ENABLE_CXX
clean: clean-amalgamation
clean-amalgamation:
rm -f libfossil.c libfossil.h libfossil++.cpp libfossil++.hpp
rm -f libfossil-config.h libfossil-amalgamation.zip VERSION.h
@@ -0,0 +1,29 @@
Fix test_command_error for neovim 0.12.x.
In neovim 0.12.0, the error message for an invalid cursor position changed from
"Cursor position outside buffer" to "Invalid cursor line: out of range". Update
the test to accept both messages.
Taken from upstream commit d89b62ed622976c8d6dbc7733a99dac371b01cbf.
diff --git a/test/test_vim.py b/test/test_vim.py
index 8a76f5e..26e2fce 100644
--- a/test/test_vim.py
+++ b/test/test_vim.py
@@ -1,6 +1,7 @@
"""Tests interaction with neovim via Nvim API (with child process)."""
import os
+import re
import sys
import tempfile
from pathlib import Path
@@ -50,7 +51,7 @@ def test_command_output(vim: Nvim) -> None:
def test_command_error(vim: Nvim) -> None:
with pytest.raises(vim.error) as excinfo:
vim.current.window.cursor = -1, -1
- assert excinfo.value.args == ('Cursor position outside buffer',)
+ assert re.search(r"Cursor position outside buffer|Invalid cursor line", excinfo.value.args[0])
def test_eval(vim: Nvim) -> None:
@@ -0,0 +1,21 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Subject: Move candle-onnx from exclude to members so cargo package can build it.
Date: 2026-03-01
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,6 +4,7 @@
"candle-datasets",
"candle-examples",
"candle-nn",
+ "candle-onnx",
"candle-pyo3",
"candle-transformers",
"candle-wasm-examples/*",
@@ -15,7 +16,6 @@
"candle-flash-attn",
"candle-kernels",
"candle-metal-kernels",
- "candle-onnx",
]
resolver = "2"
@@ -0,0 +1,299 @@
From 7a372a6914e9d9d6f0c914a1ca8cdff592c40593 Mon Sep 17 00:00:00 2001
From: Matt Jolly <kangie@gentoo.org>
Date: Thu, 12 Mar 2026 11:57:11 +1000
Subject: [PATCH] Update compiler patch for M147 beta
Signed-off-by: Matt Jolly <kangie@gentoo.org>
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -367,9 +367,6 @@ config("compiler") {
configs += [
# See the definitions below.
- ":clang_revision",
- ":rustc_revision",
- ":compiler_cpu_abi",
":compiler_codegen",
":compiler_deterministic",
":clang_warning_suppression",
@@ -1690,43 +1687,6 @@ config("compiler_deterministic") {
}
}
- # Makes builds independent of absolute file path.
- if (is_clang && strip_absolute_paths_from_debug_symbols) {
- # If debug option is given, clang includes $cwd in debug info by default.
- # For such build, this flag generates reproducible obj files even we use
- # different build directory like "out/feature_a" and "out/feature_b" if
- # we build same files with same compile flag.
- # Other paths are already given in relative, no need to normalize them.
-
- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
- # and -fcoverage-compilation-dir=.
- cflags += [ "-ffile-compilation-dir=." ]
-
- # Convert absolute paths to relative paths. Expands to, for example:
- # -file-prefix-map /path/to/chromium/src=../..
- swiftflags += [
- "-file-prefix-map",
- rebase_path("//.", "") + "=" + rebase_path("//.", root_build_dir),
- ]
- if (!is_win) {
- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
- asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
- }
-
- if (is_win && use_lld) {
- if (symbol_level == 2 || (is_clang && using_sanitizer)) {
- # Absolutize source file paths for PDB. Pass the real build directory
- # if the pdb contains source-level debug information and if linker
- # reproducibility is not critical.
- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
- } else {
- # Use a fake fixed base directory for paths in the pdb to make the pdb
- # output fully deterministic and independent of the build directory.
- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
- }
- }
- }
-
# Tells the compiler not to use absolute paths when passing the default
# paths to the tools it invokes. We don't want this because we don't
# really need it and it can mess up the RBE cache entries.
@@ -1759,88 +1719,6 @@ config("compiler_deterministic") {
}
}
-config("clang_revision") {
- if (is_clang && clang_base_path == default_clang_base_path &&
- current_os != "zos") {
- _perform_consistency_checks = current_toolchain == default_toolchain
- if (llvm_force_head_revision) {
- _head_revision_stamp_path = "//third_party/llvm-build/force_head_revision"
- _head_revision = ""
- if (path_exists(_head_revision_stamp_path)) {
- _head_revision = read_file(_head_revision_stamp_path, "trim string")
- }
- assert(
- _head_revision != "",
- "llvm_force_head_revision=true, but no locally built version was detected.")
- _clang_revision = _head_revision
- } else {
- _clang_revision = read_file(
- "//third_party/llvm-build/Release+Asserts/cr_build_revision",
- "trim string")
-
- # Ensure that the synced clang version matches what's in git.
- if (_perform_consistency_checks) {
- # Parse the clang version from the Python script.
- _clang_version_lines = filter_include(
- read_file("//tools/clang/scripts/update.py", "list lines"),
- [ "CLANG_*REVISION = *" ])
- _py_revision =
- string_replace(_clang_version_lines[0], "CLANG_REVISION = '", "")
- _py_revision = string_replace(_py_revision, "'", "")
- _py_subrevision =
- string_replace(_clang_version_lines[1], "CLANG_SUB_REVISION = ", "")
- _expected_clang_revision = "$_py_revision-$_py_subrevision"
-
- # TODO(agrieve): Change filter_include to _clang_revision ==
- # _expected_clang_revision once angle & webrtc use a GCS DEPS entry
- # rather than a update.py runhook.
- assert(
- filter_include([ _clang_revision ],
- [
- _expected_clang_revision,
- "$_expected_clang_revision,*",
- ]) != [],
- "clang_revision=\"$_clang_revision\" but update.py expected \"$_expected_clang_revision\". Did you forget to gclient sync?")
- }
- }
-
- if (_perform_consistency_checks) {
- # Ensure that the revision matches the version major expected by GN.
- _versions_match = filter_include([ _clang_revision ],
- [ "llvmorg-$clang_version-*" ]) != []
- assert(
- _versions_match,
- "clang_revision=\"$_clang_revision\" but clang_version=\"$clang_version\". clang_version in build/toolchain/toolchain.gni is likely outdated.")
- }
-
- if (toolchain_has_rust && _perform_consistency_checks &&
- !rust_force_head_revision) {
- # Ensure that the synced rust version matches what's in git.
- _rust_revision_lines =
- filter_include(read_file("//tools/rust/update_rust.py", "list lines"),
- [ "RUST_*REVISION = *" ])
- _py_revision =
- string_replace(_rust_revision_lines[0], "RUST_REVISION = '", "")
- _py_revision = string_replace(_py_revision, "'", "")
- _py_subrevision =
- string_replace(_rust_revision_lines[1], "RUST_SUB_REVISION = ", "")
- _expected_rust_revision = "$_py_revision-$_py_subrevision"
-
- # Ensure the rust version matches the clang version.
- assert(
- filter_include([ rustc_revision ],
- [ "*-$_expected_rust_revision-*" ]) != [],
- "rustc_revision=\"$rustc_revision\" but update_rust.py expected \"$_expected_rust_revision\". Run \"gclient sync\"?")
- }
-
- # This is here so that all files get recompiled after a clang roll and
- # when turning clang on or off. (defines are passed via the command line,
- # and build system rebuild things when their commandline changes). Nothing
- # should ever read this define.
- defines = [ "CR_CLANG_REVISION=\"$_clang_revision\"" ]
- }
-}
-
# Controls the usage of a warning suppression mapping (WSM) file to suppress
# warnings based on the path of the file they come from. It's controlled by the
# `clang_warning_suppression_file` gn argument , which points to a text file
@@ -1896,18 +1774,6 @@ config("sanitize_c_array_bounds") {
}
}
-config("rustc_revision") {
- if (rustc_revision != "") {
- # Similar to the `clang_revision` config, this is here so that all `.rs`
- # sources get recompiled after a rustc roll. Nothing should ever read this
- # cfg. This will not be set if a custom toolchain is used.
- rustflags = [
- "--cfg",
- "cr_rustc_revision=\"$rustc_revision\"",
- ]
- }
-}
-
config("compiler_arm_fpu") {
if (current_cpu == "arm" && !is_ios) {
cflags = [ "-mfpu=neon" ]
@@ -2386,11 +2252,7 @@ config("chromium_code") {
defines = [ "_HAS_NODISCARD" ]
}
} else {
- cflags = [ "-Wall" ]
- if (is_clang) {
- # Enable extra warnings for chromium_code when we control the compiler.
- cflags += [ "-Wextra" ]
- }
+ cflags = []
# In Chromium code, we define __STDC_foo_MACROS in order to get the
# C99 macros on Mac and Linux.
@@ -2399,32 +2261,6 @@ config("chromium_code") {
"__STDC_FORMAT_MACROS",
]
- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
- current_cpu != "ppc64" && current_cpu != "mips" &&
- current_cpu != "mips64" && current_cpu != "riscv64" &&
- current_cpu != "loong64") {
- # Non-chromium code is not guaranteed to compile cleanly with
- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
- # disabled, so only do that for Release build.
- fortify_level = "2"
-
- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
- # implementation with a few custom glibc patches. Use that if it's
- # available.
- if (is_chromeos_device) {
- fortify_level = "3"
- }
-
- # _FORTIFY_SOURCE=3 is available in glibc 2.34+. Enable it when building
- # with the sysroot where support is guaranteed. Clang is also required since
- # the system gcc is often patched to add _FORTIFY_SOURCE=2 which would conflict
- # with our definition.
- if (use_sysroot && is_clang) {
- fortify_level = "3"
- }
- defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
- }
-
if (is_apple) {
cflags_objc = [ "-Wimplicit-retain-self" ]
cflags_objcc = [ "-Wimplicit-retain-self" ]
@@ -2848,7 +2684,8 @@ config("default_stack_frames") {
# [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
# [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
# [2]: https://crrev.com/c/5447532
-config("optimize") {
+config("optimize") { }
+config("xoptimize") {
if (is_win) {
# clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for
# consistency with the other platforms.
@@ -2897,7 +2734,8 @@ config("optimize") {
}
# Turn off optimizations.
-config("no_optimize") {
+config("no_optimize") { }
+config("xno_optimize") {
if (is_win) {
cflags = [
"/Od", # Disable optimization.
@@ -2932,7 +2770,8 @@ config("no_optimize") {
# Turns up the optimization level. Used to explicitly enable -O2 instead of
# -Os for select targets on platforms that use optimize_for_size. No-op
# elsewhere.
-config("optimize_max") {
+config("optimize_max") { }
+config("xoptimize_max") {
ldflags = common_optimize_on_ldflags
if (is_win) {
# Favor speed over size, /O2 must be before the common flags.
@@ -2953,7 +2792,8 @@ config("optimize_max") {
#
# TODO(crbug.com/41259697) - rework how all of these configs are related
# so that we don't need this disclaimer.
-config("optimize_speed") {
+config("optimize_speed") { }
+config("xoptimize_speed") {
ldflags = common_optimize_on_ldflags
if (is_win) {
# Favor speed over size, /O2 must be before the common flags.
@@ -2970,7 +2810,8 @@ config("optimize_speed") {
rustflags = [ "-Copt-level=3" ]
}
-config("optimize_fuzzing") {
+config("optimize_fuzzing") { }
+config("xoptimize_fuzzing") {
cflags = [ "-O1" ] + common_optimize_on_cflags
rustflags = [ "-Copt-level=1" ]
ldflags = common_optimize_on_ldflags
@@ -3115,7 +2956,8 @@ config("split_dwarf") {
}
# Full symbols.
-config("symbols") {
+config("symbols") { }
+config("xsymbols") {
rustflags = []
configs = []
if (is_win) {
@@ -3275,7 +3117,8 @@ config("symbols") {
# Minimal symbols.
# This config guarantees to hold symbol for stack trace which are shown to user
# when crash happens in unittests running on buildbot.
-config("minimal_symbols") {
+config("minimal_symbols") { }
+config("xminimal_symbols") {
configs = []
rustflags = []
if (is_win) {
@@ -3355,7 +3198,8 @@ config("minimal_symbols") {
# This configuration contains function names only. That is, the compiler is
# told to not generate debug information and the linker then just puts function
# names in the final debug information.
-config("no_symbols") {
+config("no_symbols") { }
+config("xno_symbols") {
if (is_win) {
ldflags = [ "/DEBUG" ]
--
2.52.0
@@ -0,0 +1,46 @@
From da37bd781c0371e02ffc4877c3ac1b5f2020c207 Mon Sep 17 00:00:00 2001
From: Matt Jolly <kangie@gentoo.org>
Date: Tue, 17 Feb 2026 15:45:01 +1000
Subject: [PATCH] Handle case where `parsed_rustc_args.cfg` is empty
This may occur when (for example) using the unbundle toolchain
Signed-off-by: Matt Jolly <kangie@gentoo.org>
--- a/third_party/rust/cxx/chromium_integration/run_cxxbridge.py
+++ b/third_party/rust/cxx/chromium_integration/run_cxxbridge.py
@@ -44,18 +44,20 @@ def calculate_cxxbridge_args(unrecognized_script_args, rustc_print_cfg_path):
parser.add_argument("--cfg", action="append"),
parsed_rustc_args, _other_args = parser.parse_known_args(
args=unrecognized_script_args[:rustflags_separator])
- for cfg_arg in parsed_rustc_args.cfg:
- if "=" not in cfg_arg: # `buildflag_header.gni` only supports bool flags.
- # TODO(https://crbug.com/436606652): Stop using `_BUILDFLAG_NOT_SET_`
- # prefix and instead use `--check-cfg` in `run_cxxbridge.py` to
- # detect buildflag names.
- FALSE_PREFIX = "_BUILDFLAG_NOT_SET_"
- if cfg_arg.startswith(FALSE_PREFIX):
- flagname = cfg_arg[len(FALSE_PREFIX):]
- cxxbridge_args.append(f"--cfg={flagname}=false")
- else:
- flagname = cfg_arg
- cxxbridge_args.append(f"--cfg={flagname}=true")
+ # Unbundled toolchain may not have any `--cfg` flags
+ if parsed_rustc_args.cfg:
+ for cfg_arg in parsed_rustc_args.cfg:
+ if "=" not in cfg_arg: # `buildflag_header.gni` only supports bool flags.
+ # TODO(https://crbug.com/436606652): Stop using `_BUILDFLAG_NOT_SET_`
+ # prefix and instead use `--check-cfg` in `run_cxxbridge.py` to
+ # detect buildflag names.
+ FALSE_PREFIX = "_BUILDFLAG_NOT_SET_"
+ if cfg_arg.startswith(FALSE_PREFIX):
+ flagname = cfg_arg[len(FALSE_PREFIX):]
+ cxxbridge_args.append(f"--cfg={flagname}=false")
+ else:
+ flagname = cfg_arg
+ cxxbridge_args.append(f"--cfg={flagname}=true")
with open(rustc_print_cfg_path, 'r') as file:
for line in file:
--
2.52.0
@@ -1,21 +0,0 @@
From a665875b4013eed997bd042326a038e24f3296e7 Mon Sep 17 00:00:00 2001
From: Matt Jolly <kangie@gentoo.org>
Date: Thu, 10 Oct 2024 14:36:51 +1000
Subject: [PATCH] unbundle: add missing icu target
--- a/build/linux/unbundle/icu.gn
+++ b/build/linux/unbundle/icu.gn
@@ -65,6 +65,10 @@ group("icuuc_public") {
public_deps = [ ":icuuc" ]
}
+group("icui18n_hidden_visibility") {
+ public_deps = [ ":icuuc" ]
+}
+
shim_headers("icui18n_shim") {
root_path = "source/i18n"
headers = [
--
2.46.2
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,107 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Subject: Add non-dismissing notification action hooks.
Date: 2026-03-08
License: gpl3+
MessageNotification only supports primary and secondary buttons that always
dismiss the notification after running their handlers. That is too restrictive
for flows where the user needs to inspect something first and then return to the
same prompt.
Add a generic non-dismissing `more_info_on_click` action alongside the existing
URL-based more-info button. This keeps the notification component reusable for
"inspect first, decide second" workflows without forcing every caller to build a
custom notification view.
diff --git a/crates/workspace/src/notifications.rs b/crates/workspace/src/notifications.rs
index 84f479b77e..9e210cb554 100644
--- a/crates/workspace/src/notifications.rs
+++ b/crates/workspace/src/notifications.rs
@@ -714,6 +714,7 @@ pub mod simple_message_notification {
secondary_icon_color: Option<Color>,
secondary_on_click: Option<Arc<dyn Fn(&mut Window, &mut Context<Self>)>>,
more_info_message: Option<SharedString>,
+ more_info_on_click: Option<Arc<dyn Fn(&mut Window, &mut Context<Self>)>>,
more_info_url: Option<Arc<str>>,
show_close_button: bool,
show_suppress_button: bool,
@@ -758,6 +759,7 @@ pub mod simple_message_notification {
secondary_icon_color: None,
secondary_on_click: None,
more_info_message: None,
+ more_info_on_click: None,
more_info_url: None,
show_close_button: true,
show_suppress_button: true,
@@ -843,6 +845,22 @@ pub mod simple_message_notification {
self
}
+ pub fn more_info_on_click<F>(mut self, on_click: F) -> Self
+ where
+ F: 'static + Fn(&mut Window, &mut Context<Self>),
+ {
+ self.more_info_on_click = Some(Arc::new(on_click));
+ self
+ }
+
+ pub fn more_info_on_click_arc<F>(mut self, on_click: Arc<F>) -> Self
+ where
+ F: 'static + Fn(&mut Window, &mut Context<Self>),
+ {
+ self.more_info_on_click = Some(on_click);
+ self
+ }
+
pub fn more_info_url<S>(mut self, url: S) -> Self
where
S: Into<Arc<str>>,
@@ -946,20 +964,36 @@ pub mod simple_message_notification {
}))
.child(
h_flex().w_full().justify_end().children(
- self.more_info_message
- .iter()
- .zip(self.more_info_url.iter())
- .map(|(message, url)| {
- let url = url.clone();
- Button::new(message.clone(), message.clone())
- .label_size(LabelSize::Small)
- .icon(IconName::ArrowUpRight)
- .icon_size(IconSize::Indicator)
- .icon_color(Color::Muted)
- .on_click(cx.listener(move |_, _, _, cx| {
+ self.more_info_message.iter().filter_map(|message| {
+ let more_info_on_click = self.more_info_on_click.clone();
+ let more_info_url = self.more_info_url.clone();
+
+ if more_info_on_click.is_none() && more_info_url.is_none() {
+ return None;
+ }
+
+ let mut button = Button::new(message.clone(), message.clone())
+ .label_size(LabelSize::Small)
+ .icon(IconName::ArrowUpRight)
+ .icon_size(IconSize::Indicator)
+ .icon_color(Color::Muted);
+
+ button = match (more_info_on_click, more_info_url) {
+ (Some(on_click), _) => button.on_click(cx.listener(
+ move |_, _, window, cx| {
+ (on_click)(window, cx);
+ },
+ )),
+ (None, Some(url)) => button.on_click(cx.listener(
+ move |_, _, _, cx| {
cx.open_url(&url);
- }))
- }),
+ },
+ )),
+ (None, None) => button,
+ };
+
+ Some(button)
+ }),
),
),
)
@@ -0,0 +1,65 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Subject: Collapse multi-line git dependency entries to single lines
Date: 2026-03-01
License: expat
Collapse multi-line git dependency entries to single lines so that
line-based substitute* patterns can process them.
--- a/Cargo.toml 2026-03-01 19:09:53.710020628 +0000
+++ b/Cargo.toml 2026-03-01 19:20:31.697337662 +0000
@@ -626,15 +626,7 @@
rayon = "1.8"
regex = "1.5"
# WARNING: If you change this, you must also publish a new version of zed-reqwest to crates.io
-reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "c15662463bda39148ba154100dd44d3fba5873a4", default-features = false, features = [
- "charset",
- "http2",
- "macos-system-configuration",
- "multipart",
- "rustls-tls-native-roots",
- "socks",
- "stream",
-], package = "zed-reqwest", version = "0.12.15-zed" }
+reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "c15662463bda39148ba154100dd44d3fba5873a4", default-features = false, features = ["charset", "http2", "macos-system-configuration", "multipart", "rustls-tls-native-roots", "socks", "stream"], package = "zed-reqwest", version = "0.12.15-zed" }
rsa = "0.9.6"
runtimelib = { version = "1.2.0", default-features = false, features = [
"async-dispatcher-runtime", "aws-lc-rs"
--- a/crates/gpui/Cargo.toml 2026-03-01 19:12:33.129039363 +0000
+++ b/crates/gpui/Cargo.toml 2026-03-01 19:20:33.133327405 +0000
@@ -167,9 +167,7 @@
cosmic-text = { version = "0.17.0", optional = true }
swash = { version = "0.2.6" }
# WARNING: If you change this, you must also publish a new version of zed-font-kit to crates.io
-font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", features = [
- "source-fontconfig-dlopen",
-], optional = true }
+font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", features = ["source-fontconfig-dlopen"], optional = true }
calloop = "0.14.3"
filedescriptor = { version = "0.8.2", optional = true }
open = { version = "5.2.0", optional = true }
@@ -207,10 +205,7 @@
"sync",
], optional = true }
# WARNING: If you change this, you must also publish a new version of zed-xim to crates.io
-xim = { git = "https://github.com/zed-industries/xim-rs.git", rev = "16f35a2c881b815a2b6cdfd6687988e84f8447d8" , features = [
- "x11rb-xcb",
- "x11rb-client",
-], package = "zed-xim", version = "0.4.0-zed", optional = true }
+xim = { git = "https://github.com/zed-industries/xim-rs.git", rev = "16f35a2c881b815a2b6cdfd6687988e84f8447d8" , features = ["x11rb-xcb", "x11rb-client"], package = "zed-xim", version = "0.4.0-zed", optional = true }
x11-clipboard = { version = "0.9.3", optional = true }
[target.'cfg(target_os = "windows")'.dependencies]
--- a/crates/livekit_client/Cargo.toml 2026-03-01 19:12:33.133661336 +0000
+++ b/crates/livekit_client/Cargo.toml 2026-03-01 19:20:33.893321975 +0000
@@ -46,9 +46,7 @@
[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))'.dependencies]
libwebrtc = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks" }
-livekit = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks", features = [
- "__rustls-tls"
-] }
+livekit = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks", features = ["__rustls-tls"] }
[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "windows"))'.dependencies]
scap.workspace = true
@@ -0,0 +1,31 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Subject: Disable dlopen for wayland-backend and fontconfig in gpui.
Date: 2026-03-01
License: ASL2.0
Remove the "dlopen" feature from wayland-backend and the
"source-fontconfig-dlopen" feature from zed-font-kit so that libwayland
and libfontconfig are linked directly rather than loaded at runtime via
dlopen. This ensures these dependencies are visible to the package
manager and avoids runtime failures when the libraries are not in the
dlopen search path.
--- a/crates/gpui/Cargo.toml 2026-03-01 21:21:38.661240897 +0000
+++ b/crates/gpui/Cargo.toml 2026-03-01 21:23:00.282205935 +0000
@@ -167,7 +167,7 @@
cosmic-text = { version = "0.17.0", optional = true }
swash = { version = "0.2.6" }
# WARNING: If you change this, you must also publish a new version of zed-font-kit to crates.io
-font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", features = ["source-fontconfig-dlopen"], optional = true }
+font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", optional = true }
calloop = "0.14.3"
filedescriptor = { version = "0.8.2", optional = true }
open = { version = "5.2.0", optional = true }
@@ -177,7 +177,6 @@
calloop-wayland-source = { version = "0.4.1", optional = true }
wayland-backend = { version = "0.3.3", features = [
"client_system",
- "dlopen",
], optional = true }
wayland-client = { version = "0.31.11", optional = true }
wayland-cursor = { version = "0.31.11", optional = true }
@@ -0,0 +1,113 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Subject: Exclude libwebrtc dependency from audio crate on Linux.
Date: 2026-03-01
The audio crate conditionally depends on libwebrtc for echo cancellation
on platforms that have it. It already cfg-guards the libwebrtc usage for
Windows-GNU and FreeBSD. Add target_os = "linux" to those cfg conditions
so libwebrtc is not required on Linux either. The rest of the audio crate
(sound playback, output streams, end_call) continues to work without it.
--- a/crates/audio/Cargo.toml 2026-03-01 21:21:38.652107544 +0000
+++ b/crates/audio/Cargo.toml 2026-03-01 21:22:20.494478427 +0000
@@ -29,5 +29,5 @@
thiserror.workspace = true
util.workspace = true
-[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))'.dependencies]
+[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))'.dependencies]
libwebrtc = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks" }
--- a/crates/audio/src/audio.rs 2026-03-01 21:21:38.656793329 +0000
+++ b/crates/audio/src/audio.rs 2026-03-01 21:40:18.939230433 +0000
@@ -6,7 +6,7 @@
};
use gpui::{App, AsyncApp, BackgroundExecutor, BorrowAppContext, Global};
-#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
+#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
mod non_windows_and_freebsd_deps {
pub(super) use cpal::Sample;
pub(super) use libwebrtc::native::apm;
@@ -15,7 +15,7 @@
pub(super) use std::sync::Arc;
}
-#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
+#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
use non_windows_and_freebsd_deps::*;
use rodio::{
@@ -102,7 +102,7 @@
pub struct Audio {
output_handle: Option<MixerDeviceSink>,
- #[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
+ #[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
pub echo_canceller: Arc<Mutex<apm::AudioProcessingModule>>,
source_cache: HashMap<Sound, Buffered<Decoder<Cursor<Vec<u8>>>>>,
replays: replays::Replays,
@@ -114,7 +114,7 @@
output_handle: Default::default(),
#[cfg(not(any(
all(target_os = "windows", target_env = "gnu"),
- target_os = "freebsd"
+ target_os = "freebsd", target_os = "linux"
)))]
echo_canceller: Arc::new(Mutex::new(apm::AudioProcessingModule::new(
true, false, false, false,
@@ -140,13 +140,13 @@
// The webrtc apm is not yet compiling for windows & freebsd
#[cfg(not(any(
any(all(target_os = "windows", target_env = "gnu")),
- target_os = "freebsd"
+ target_os = "freebsd", target_os = "linux"
)))]
let echo_canceller = Arc::clone(&self.echo_canceller);
#[cfg(not(any(
any(all(target_os = "windows", target_env = "gnu")),
- target_os = "freebsd"
+ target_os = "freebsd", target_os = "linux"
)))]
{
let source = rodio::source::Zero::new(CHANNEL_COUNT, SAMPLE_RATE)
@@ -166,10 +166,10 @@
#[cfg(any(
any(all(target_os = "windows", target_env = "gnu")),
- target_os = "freebsd"
+ target_os = "freebsd", target_os = "linux"
))]
{
- let source = rodio::source::Zero::<f32>::new(CHANNEL_COUNT, SAMPLE_RATE);
+ let source = rodio::source::Zero::new(CHANNEL_COUNT, SAMPLE_RATE);
output_handle.mixer().add(source);
}
@@ -190,7 +190,7 @@
self.replays.replays_to_tar(executor)
}
- #[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
+ #[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
pub fn open_microphone(voip_parts: VoipParts) -> anyhow::Result<impl Source> {
let stream = open_input_stream(voip_parts.input_audio_device)?;
let stream = stream
@@ -319,7 +319,7 @@
}
}
-#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
+#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
pub struct VoipParts {
echo_canceller: Arc<Mutex<apm::AudioProcessingModule>>,
replays: replays::Replays,
@@ -327,7 +327,7 @@
input_audio_device: Option<DeviceId>,
}
-#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
+#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
impl VoipParts {
pub fn new(cx: &AsyncApp) -> anyhow::Result<Self> {
let (apm, replays) = cx.read_default_global::<Audio, _>(|audio, _| {
@@ -0,0 +1,320 @@
From: Danny Milosavljevic <dannym@friendly-machines.com>
Date: Fri, 6 Mar 2026 21:06:00 +0000
Subject: [PATCH] sqlez: Fix named in-memory SQLite mode
License: expat
Zed's named "in-memory" SQLite databases were being opened with
URI-looking paths such as `file:DB?mode=memory&cache=shared` but without
`SQLITE_OPEN_URI`. SQLite therefore treated those strings as literal
filenames, which leaked test databases to disk and defeated the intended
shared-memory behavior.
Fix that by opening named in-memory databases with `SQLITE_OPEN_URI` so
`mode=memory&cache=shared` is interpreted correctly, and add coverage to
ensure no literal backing files are created.
That URI fix makes shared-cache schema locking real, which in turn
exposes a second bug in `ThreadSafeConnection`: per-thread connection
initialization can race schema setup on another connection to the same
named in-memory database and fail while preparing `PRAGMA foreign_keys`.
Fix that by retrying connection initialization queries when SQLite
reports a transient schema/database lock, and add a regression test for
that case.
diff --git a/crates/sqlez/src/connection.rs b/crates/sqlez/src/connection.rs
index 53f0d4e261..3dc530757a 100644
--- a/crates/sqlez/src/connection.rs
+++ b/crates/sqlez/src/connection.rs
@@ -18,7 +18,7 @@ pub struct Connection {
unsafe impl Send for Connection {}
impl Connection {
- pub(crate) fn open(uri: &str, persistent: bool) -> Result<Self> {
+ fn open_with_flags(uri: &str, persistent: bool, flags: i32) -> Result<Self> {
let mut connection = Self {
sqlite3: ptr::null_mut(),
persistent,
@@ -26,7 +26,6 @@ impl Connection {
_sqlite: PhantomData,
};
- let flags = SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_READWRITE;
unsafe {
sqlite3_open_v2(
CString::new(uri)?.as_ptr(),
@@ -44,6 +43,14 @@ impl Connection {
Ok(connection)
}
+ pub(crate) fn open(uri: &str, persistent: bool) -> Result<Self> {
+ Self::open_with_flags(
+ uri,
+ persistent,
+ SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_READWRITE,
+ )
+ }
+
/// Attempts to open the database at uri. If it fails, a shared memory db will be opened
/// instead.
pub fn open_file(uri: &str) -> Self {
@@ -51,13 +58,20 @@ impl Connection {
}
pub fn open_memory(uri: Option<&str>) -> Self {
- let in_memory_path = if let Some(uri) = uri {
- format!("file:{}?mode=memory&cache=shared", uri)
+ if let Some(uri) = uri {
+ let in_memory_path = format!("file:{}?mode=memory&cache=shared", uri);
+ return Self::open_with_flags(
+ &in_memory_path,
+ false,
+ SQLITE_OPEN_CREATE
+ | SQLITE_OPEN_NOMUTEX
+ | SQLITE_OPEN_READWRITE
+ | SQLITE_OPEN_URI,
+ )
+ .expect("Could not create fallback in memory db");
} else {
- ":memory:".to_string()
- };
-
- Self::open(&in_memory_path, false).expect("Could not create fallback in memory db")
+ Self::open(":memory:", false).expect("Could not create fallback in memory db")
+ }
}
pub fn persistent(&self) -> bool {
@@ -265,9 +279,50 @@ impl Drop for Connection {
mod test {
use anyhow::Result;
use indoc::indoc;
+ use std::{
+ fs,
+ sync::atomic::{AtomicUsize, Ordering},
+ };
use crate::connection::Connection;
+ static NEXT_NAMED_MEMORY_DB_ID: AtomicUsize = AtomicUsize::new(0);
+
+ fn unique_named_memory_db(prefix: &str) -> String {
+ format!(
+ "{prefix}_{}_{}",
+ std::process::id(),
+ NEXT_NAMED_MEMORY_DB_ID.fetch_add(1, Ordering::Relaxed)
+ )
+ }
+
+ fn literal_named_memory_paths(name: &str) -> [String; 3] {
+ let main = format!("file:{name}?mode=memory&cache=shared");
+ [main.clone(), format!("{main}-wal"), format!("{main}-shm")]
+ }
+
+ struct NamedMemoryPathGuard {
+ paths: [String; 3],
+ }
+
+ impl NamedMemoryPathGuard {
+ fn new(name: &str) -> Self {
+ let paths = literal_named_memory_paths(name);
+ for path in &paths {
+ let _ = fs::remove_file(path);
+ }
+ Self { paths }
+ }
+ }
+
+ impl Drop for NamedMemoryPathGuard {
+ fn drop(&mut self) {
+ for path in &self.paths {
+ let _ = fs::remove_file(path);
+ }
+ }
+ }
+
#[test]
fn string_round_trips() -> Result<()> {
let connection = Connection::open_memory(Some("string_round_trips"));
@@ -382,6 +437,41 @@ mod test {
assert_eq!(read_blobs, vec![blob]);
}
+ #[test]
+ fn named_memory_connections_do_not_create_literal_backing_files() {
+ let name = unique_named_memory_db("named_memory_connections_do_not_create_backing_files");
+ let guard = NamedMemoryPathGuard::new(&name);
+
+ let connection1 = Connection::open_memory(Some(&name));
+ connection1
+ .exec(indoc! {"
+ CREATE TABLE shared (
+ value INTEGER
+ )"})
+ .unwrap()()
+ .unwrap();
+ connection1
+ .exec("INSERT INTO shared (value) VALUES (7)")
+ .unwrap()()
+ .unwrap();
+
+ let connection2 = Connection::open_memory(Some(&name));
+ assert_eq!(
+ connection2
+ .select_row::<i64>("SELECT value FROM shared")
+ .unwrap()()
+ .unwrap(),
+ Some(7)
+ );
+
+ for path in &guard.paths {
+ assert!(
+ fs::metadata(path).is_err(),
+ "named in-memory database unexpectedly created backing file {path}"
+ );
+ }
+ }
+
#[test]
fn multi_step_statement_works() {
let connection = Connection::open_memory(Some("multi_step_statement_works"));
diff --git a/crates/sqlez/src/thread_safe_connection.rs b/crates/sqlez/src/thread_safe_connection.rs
index 966f14a9c2..9d868fcba4 100644
--- a/crates/sqlez/src/thread_safe_connection.rs
+++ b/crates/sqlez/src/thread_safe_connection.rs
@@ -7,12 +7,15 @@ use std::{
ops::Deref,
sync::{Arc, LazyLock},
thread,
+ time::Duration,
};
use thread_local::ThreadLocal;
use crate::{connection::Connection, domain::Migrator, util::UnboundedSyncSender};
const MIGRATION_RETRIES: usize = 10;
+const CONNECTION_INITIALIZE_RETRIES: usize = 50;
+const CONNECTION_INITIALIZE_RETRY_DELAY: Duration = Duration::from_millis(1);
type QueuedWrite = Box<dyn 'static + Send + FnOnce()>;
type WriteQueue = Box<dyn 'static + Send + Sync + Fn(QueuedWrite)>;
@@ -197,21 +200,50 @@ impl ThreadSafeConnection {
Self::open_shared_memory(uri)
};
+ if let Some(initialize_query) = connection_initialize_query {
+ let mut last_error = None;
+ let initialized = (0..CONNECTION_INITIALIZE_RETRIES).any(|attempt| {
+ match connection.exec(initialize_query).and_then(|mut statement| statement()) {
+ Ok(()) => true,
+ Err(err)
+ if is_schema_lock_error(&err)
+ && attempt + 1 < CONNECTION_INITIALIZE_RETRIES =>
+ {
+ last_error = Some(err);
+ thread::sleep(CONNECTION_INITIALIZE_RETRY_DELAY);
+ false
+ }
+ Err(err) => {
+ panic!(
+ "Initialize query failed to execute: {}\n\nCaused by:\n{err:#}",
+ initialize_query
+ )
+ }
+ }
+ });
+
+ if !initialized {
+ let err = last_error.expect("connection initialization retries should record the last error");
+ panic!(
+ "Initialize query failed to execute after retries: {}\n\nCaused by:\n{err:#}",
+ initialize_query
+ );
+ }
+ }
+
// Disallow writes on the connection. The only writes allowed for thread safe connections
// are from the background thread that can serialize them.
*connection.write.get_mut() = false;
- if let Some(initialize_query) = connection_initialize_query {
- connection.exec(initialize_query).unwrap_or_else(|_| {
- panic!("Initialize query failed to execute: {}", initialize_query)
- })()
- .unwrap()
- }
-
connection
}
}
+fn is_schema_lock_error(err: &anyhow::Error) -> bool {
+ let message = format!("{err:#}");
+ message.contains("database schema is locked") || message.contains("database is locked")
+}
+
impl ThreadSafeConnection {
/// Special constructor for ThreadSafeConnection which disallows db initialization and migrations.
/// This allows construction to be infallible and not write to the db.
@@ -282,7 +314,7 @@ mod test {
use indoc::indoc;
use std::ops::Deref;
- use std::thread;
+ use std::{thread, time::Duration};
use crate::{domain::Domain, thread_safe_connection::ThreadSafeConnection};
@@ -318,38 +350,21 @@ mod test {
}
#[test]
- #[should_panic]
- fn wild_zed_lost_failure() {
- enum TestWorkspace {}
- impl Domain for TestWorkspace {
- const NAME: &str = "workspace";
-
- const MIGRATIONS: &[&str] = &["
- CREATE TABLE workspaces(
- workspace_id INTEGER PRIMARY KEY,
- dock_visible INTEGER, -- Boolean
- dock_anchor TEXT, -- Enum: 'Bottom' / 'Right' / 'Expanded'
- dock_pane INTEGER, -- NULL indicates that we don't have a dock pane yet
- timestamp TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL,
- FOREIGN KEY(dock_pane) REFERENCES panes(pane_id),
- FOREIGN KEY(active_pane) REFERENCES panes(pane_id)
- ) STRICT;
-
- CREATE TABLE panes(
- pane_id INTEGER PRIMARY KEY,
- workspace_id INTEGER NOT NULL,
- active INTEGER NOT NULL, -- Boolean
- FOREIGN KEY(workspace_id) REFERENCES workspaces(workspace_id)
- ON DELETE CASCADE
- ON UPDATE CASCADE
- ) STRICT;
- "];
- }
+ fn connection_initialize_query_retries_transient_schema_lock() {
+ let name = "connection_initialize_query_retries_transient_schema_lock";
+ let locking_connection = crate::connection::Connection::open_memory(Some(name));
+ locking_connection.exec("BEGIN IMMEDIATE").unwrap()().unwrap();
+ locking_connection
+ .exec("CREATE TABLE test(col TEXT)")
+ .unwrap()()
+ .unwrap();
- let builder =
- ThreadSafeConnection::builder::<TestWorkspace>("wild_zed_lost_failure", false)
- .with_connection_initialize_query("PRAGMA FOREIGN_KEYS=true");
+ let releaser = thread::spawn(move || {
+ thread::sleep(Duration::from_millis(10));
+ locking_connection.exec("ROLLBACK").unwrap()().unwrap();
+ });
- smol::block_on(builder.build()).unwrap();
+ ThreadSafeConnection::create_connection(false, name, Some("PRAGMA FOREIGN_KEYS=true"));
+ releaser.join().unwrap();
}
}
@@ -0,0 +1,328 @@
From: Danny Milosavljevic <dannym@friendly-machines.com>
Date: Fri, 6 Mar 2026 21:22:41 +0000
Subject: [PATCH] db: Scope default test databases to the current test
License: expat
In test builds, the default database statics use fixed names such as
`DB` and `KEY_VALUE_STORE`. That makes unrelated tests in the same test
binary share the same named in-memory databases, which leaks state
across tests and makes failures depend on execution order and
concurrency.
A first attempt at isolating those statics by thread is not sufficient:
one test can legitimately use multiple threads, and splitting the test's
workspace state across separate databases breaks parent-child foreign key
relationships.
Fix this by scoping the default test databases by the current test name
instead. The `gpui::test` harness now installs the current test name on
the executing thread, the test dispatcher propagates that scope to its
realtime worker threads, and the default test statics resolve one shared
database wrapper per test scope rather than per thread.
That keeps sharing within a single test where it is intentional, while
stopping hidden cross-test state leakage.
diff --git a/crates/db/src/db.rs b/crates/db/src/db.rs
index 36f0365af9..3ff8499c1d 100644
--- a/crates/db/src/db.rs
+++ b/crates/db/src/db.rs
@@ -19,6 +19,12 @@ use std::future::Future;
use std::path::Path;
use std::sync::atomic::AtomicBool;
use std::sync::{LazyLock, atomic::Ordering};
+#[cfg(any(test, feature = "test-support"))]
+use std::collections::HashMap;
+#[cfg(any(test, feature = "test-support"))]
+use std::sync::Mutex;
+#[cfg(any(test, feature = "test-support"))]
+use std::{borrow::Cow, ops::Deref};
use util::{ResultExt, maybe};
use zed_env_vars::ZED_STATELESS;
@@ -97,7 +103,8 @@ async fn open_fallback_db<M: Migrator>() -> ThreadSafeConnection {
pub async fn open_test_db<M: Migrator>(db_name: &str) -> ThreadSafeConnection {
use sqlez::thread_safe_connection::locking_queue;
- ThreadSafeConnection::builder::<M>(db_name, false)
+ let db_name = scoped_test_db_name(db_name);
+ ThreadSafeConnection::builder::<M>(&db_name, false)
.with_db_initialization_query(DB_INITIALIZE_QUERY)
.with_connection_initialize_query(CONNECTION_INITIALIZE_QUERY)
// Serialize queued writes via a mutex and run them synchronously
@@ -107,6 +114,69 @@ pub async fn open_test_db<M: Migrator>(db_name: &str) -> ThreadSafeConnection {
.unwrap()
}
+#[cfg(any(test, feature = "test-support"))]
+fn scoped_test_db_name(db_name: &str) -> Cow<'_, str> {
+ let Some(test_name) = current_test_scope_name() else {
+ return Cow::Borrowed(db_name);
+ };
+
+ let mut scoped_name = String::with_capacity(db_name.len() + test_name.len() + 2);
+ scoped_name.push_str(db_name);
+ scoped_name.push('@');
+ for ch in test_name.chars() {
+ if ch.is_ascii_alphanumeric() || matches!(ch, '-' | '_' | '.') {
+ scoped_name.push(ch);
+ } else {
+ scoped_name.push('_');
+ }
+ }
+
+ Cow::Owned(scoped_name)
+}
+
+#[cfg(any(test, feature = "test-support"))]
+fn current_test_scope_name() -> Option<String> {
+ if let Some(test_name) = gpui::current_test_name() {
+ return Some(test_name.to_string());
+ }
+
+ let current_thread = std::thread::current();
+ if let Some(test_name) = current_thread.name() {
+ return Some(test_name.to_string());
+ }
+
+ Some(format!("thread_{:?}", current_thread.id()))
+}
+
+#[cfg(any(test, feature = "test-support"))]
+pub struct TestScopedStatic<T: Send + Sync + 'static> {
+ initializer: fn() -> T,
+ values: Mutex<HashMap<String, &'static T>>,
+}
+
+#[cfg(any(test, feature = "test-support"))]
+impl<T: Send + Sync + 'static> TestScopedStatic<T> {
+ pub fn new(initializer: fn() -> T) -> Self {
+ Self {
+ initializer,
+ values: Mutex::new(HashMap::new()),
+ }
+ }
+}
+
+#[cfg(any(test, feature = "test-support"))]
+impl<T: Send + Sync + 'static> Deref for TestScopedStatic<T> {
+ type Target = T;
+
+ fn deref(&self) -> &Self::Target {
+ let scope_name = current_test_scope_name().unwrap_or_else(|| "default".to_string());
+ let mut values = self.values.lock().unwrap();
+ *values
+ .entry(scope_name)
+ .or_insert_with(|| Box::leak(Box::new((self.initializer)())))
+ }
+}
+
/// Implements a basic DB wrapper for a given domain
///
/// Arguments:
@@ -126,16 +196,23 @@ macro_rules! static_connection {
impl $t {
#[cfg(any(test, feature = "test-support"))]
- pub async fn open_test_db(name: &'static str) -> Self {
+ pub async fn open_test_db(name: &str) -> Self {
$t($crate::open_test_db::<$t>(name).await)
}
}
#[cfg(any(test, feature = "test-support"))]
- pub static $id: std::sync::LazyLock<$t> = std::sync::LazyLock::new(|| {
- #[allow(unused_parens)]
- $t($crate::smol::block_on($crate::open_test_db::<($($d,)* $t)>(stringify!($id))))
- });
+ pub static $id: std::sync::LazyLock<$crate::TestScopedStatic<$t>> =
+ std::sync::LazyLock::new(|| {
+ fn initializer() -> $t {
+ #[allow(unused_parens)]
+ $t($crate::smol::block_on(
+ $crate::open_test_db::<($($d,)* $t)>(stringify!($id))
+ ))
+ }
+
+ $crate::TestScopedStatic::new(initializer)
+ });
#[cfg(not(any(test, feature = "test-support")))]
pub static $id: std::sync::LazyLock<$t> = std::sync::LazyLock::new(|| {
@@ -161,9 +238,10 @@ where
#[cfg(test)]
mod tests {
+ use anyhow::Result;
use std::thread;
- use sqlez::domain::Domain;
+ use sqlez::{domain::Domain, thread_safe_connection::ThreadSafeConnection};
use sqlez_macros::sql;
use crate::open_db;
@@ -295,4 +373,64 @@ mod tests {
assert!(guard.join().is_ok());
}
}
+
+ pub struct ScopedStaticDb(ThreadSafeConnection);
+
+ impl Domain for ScopedStaticDb {
+ const NAME: &str = "test_scoped_static_db";
+ const MIGRATIONS: &[&str] = &[sql!(
+ CREATE TABLE IF NOT EXISTS scoped_values(
+ value INTEGER NOT NULL
+ ) STRICT;
+ )];
+ }
+
+ crate::static_connection!(SCOPED_STATIC_DB, ScopedStaticDb, []);
+
+ impl ScopedStaticDb {
+ fn replace_value(&self, value: i64) -> Result<()> {
+ smol::block_on(self.write(move |connection| {
+ connection.exec("DELETE FROM scoped_values")?()?;
+ connection
+ .exec_bound("INSERT INTO scoped_values(value) VALUES (?)")
+ ?(value)?;
+ anyhow::Ok(())
+ }))
+ }
+
+ fn read_value(&self) -> Result<Option<i64>> {
+ self.select_row::<i64>("SELECT value FROM scoped_values").unwrap()()
+ }
+ }
+
+ #[test]
+ fn static_test_connections_are_scoped_by_test_name() {
+ gpui::with_test_name(Some("static_test_connections_are_scoped_by_test_name_a"), || {
+ assert_eq!(SCOPED_STATIC_DB.read_value().unwrap(), None);
+ SCOPED_STATIC_DB.replace_value(7).unwrap();
+ assert_eq!(SCOPED_STATIC_DB.read_value().unwrap(), Some(7));
+ });
+
+ gpui::with_test_name(Some("static_test_connections_are_scoped_by_test_name_b"), || {
+ assert_eq!(SCOPED_STATIC_DB.read_value().unwrap(), None);
+ SCOPED_STATIC_DB.replace_value(11).unwrap();
+ assert_eq!(SCOPED_STATIC_DB.read_value().unwrap(), Some(11));
+ });
+ }
+
+ #[test]
+ fn static_test_connections_share_state_across_threads_with_same_test_name() {
+ gpui::with_test_name(
+ Some("static_test_connections_share_state_across_threads_with_same_test_name"),
+ || {
+ SCOPED_STATIC_DB.replace_value(13).unwrap();
+
+ let test_name = gpui::current_test_name();
+ let thread = std::thread::spawn(move || {
+ gpui::with_test_name(test_name, || SCOPED_STATIC_DB.read_value().unwrap())
+ });
+ assert_eq!(thread.join().unwrap(), Some(13));
+ },
+ );
+ }
}
diff --git a/crates/gpui/src/platform/test/dispatcher.rs b/crates/gpui/src/platform/test/dispatcher.rs
index fc3f7f253a..0d98b082ca 100644
--- a/crates/gpui/src/platform/test/dispatcher.rs
+++ b/crates/gpui/src/platform/test/dispatcher.rs
@@ -136,8 +136,9 @@ impl PlatformDispatcher for TestDispatcher {
}
fn spawn_realtime(&self, f: Box<dyn FnOnce() + Send>) {
+ let test_name = crate::current_test_name();
std::thread::spawn(move || {
- f();
+ crate::with_test_name(test_name, f);
});
}
}
diff --git a/crates/gpui/src/test.rs b/crates/gpui/src/test.rs
index 9f8fd8b198..469affdc1c 100644
--- a/crates/gpui/src/test.rs
+++ b/crates/gpui/src/test.rs
@@ -29,11 +29,44 @@ use crate::{Entity, Subscription, TestAppContext, TestDispatcher};
use futures::StreamExt as _;
use smol::channel;
use std::{
+ cell::Cell,
env,
panic::{self, RefUnwindSafe},
pin::Pin,
};
+thread_local! {
+ static CURRENT_TEST_NAME: Cell<Option<&'static str>> = const { Cell::new(None) };
+}
+
+/// Returns the test name currently associated with this thread, if any.
+pub fn current_test_name() -> Option<&'static str> {
+ CURRENT_TEST_NAME.with(Cell::get)
+}
+
+/// Runs the closure with the given test name installed for the current thread.
+pub fn with_test_name<R>(name: Option<&'static str>, f: impl FnOnce() -> R) -> R {
+ CURRENT_TEST_NAME.with(|current_name| {
+ struct RestoreTestName<'a> {
+ current_name: &'a Cell<Option<&'static str>>,
+ previous_name: Option<&'static str>,
+ }
+
+ impl Drop for RestoreTestName<'_> {
+ fn drop(&mut self) {
+ self.current_name.set(self.previous_name);
+ }
+ }
+
+ let previous_name = current_name.replace(name);
+ let _restore = RestoreTestName {
+ current_name,
+ previous_name,
+ };
+ f()
+ })
+}
+
/// Run the given test function with the configured parameters.
/// This is intended for use with the `gpui::test` macro
/// and generally should not be used directly.
diff --git a/crates/gpui_macros/src/test.rs b/crates/gpui_macros/src/test.rs
index 490ea07fee..3abcaad3ae 100644
--- a/crates/gpui_macros/src/test.rs
+++ b/crates/gpui_macros/src/test.rs
@@ -191,10 +191,12 @@ fn generate_test_function(
&[#seeds],
#max_retries,
&mut |dispatcher, _seed| {
- let foreground_executor = gpui::ForegroundExecutor::new(std::sync::Arc::new(dispatcher.clone()));
- #cx_vars
- foreground_executor.block_test(#inner_fn_name(#inner_fn_args));
- #cx_teardowns
+ gpui::with_test_name(Some(stringify!(#outer_fn_name)), || {
+ let foreground_executor = gpui::ForegroundExecutor::new(std::sync::Arc::new(dispatcher.clone()));
+ #cx_vars
+ foreground_executor.block_test(#inner_fn_name(#inner_fn_args));
+ #cx_teardowns
+ })
},
#on_failure_fn_name
);
@@ -274,9 +276,11 @@ fn generate_test_function(
&[#seeds],
#max_retries,
&mut |dispatcher, _seed| {
- #cx_vars
- #inner_fn_name(#inner_fn_args);
- #cx_teardowns
+ gpui::with_test_name(Some(stringify!(#outer_fn_name)), || {
+ #cx_vars
+ #inner_fn_name(#inner_fn_args);
+ #cx_teardowns
+ })
},
#on_failure_fn_name,
);
@@ -0,0 +1,310 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Subject: Fix workspace persistence races during restoration.
Date: 2026-03-01
License: expat
In 0.225.10, workspace persistence has three separate ordering problems.
First, newly allocated workspace IDs could be used for item persistence before a
parent row had been inserted into the workspaces table. That made editor
persistence race with workspace creation and could fail with a foreign key
constraint error.
Second, workspace layout persistence and per-item persistence run on separate
asynchronous paths. That allowed the workspace layout to be saved with item IDs
before the background item-serialization worker had finished writing the
corresponding per-item rows. On restore, deserializers that require persisted
item state could then fail with "No entry in database for item_id ...", which
could drop restored state and break restoration features that depend on that
persisted item state, including edited-window restoration.
Third, restore-side cleanup assumed that deserialized items had already been
saved under their new runtime item IDs after being added to panes. In reality,
adding a deserialized item only enqueues that serialization work. Cleanup could
therefore delete the old persisted rows before the new rows existed, leaving the
next reopen with a pane/item layout that still referenced state that had just
been deleted.
This change fixes all three issues:
- eagerly create the parent workspaces row as soon as a new workspace ID is
allocated, before any item serializer can write child rows
- keep item persistence on the existing serialization queue, but add an
ordering barrier before saving workspace layout so the layout is never
published ahead of the item state it references
- during restore, wait for the queued serialization of newly added
deserialized items before cleaning up stale persisted item IDs, and skip
that cleanup pass if the barrier cannot be established or awaited so stale
rows are kept rather than deleting still-needed state
See also <https://github.com/zed-industries/zed/pull/50873>.
diff --git a/crates/workspace/src/persistence.rs b/crates/workspace/src/persistence.rs
index e0ad046e8d..aeb4c3ba39 100644
--- a/crates/workspace/src/persistence.rs
+++ b/crates/workspace/src/persistence.rs
@@ -2124,6 +2124,13 @@ impl WorkspaceDb {
}
}
+ query! {
+ pub(crate) async fn ensure_workspace_row(workspace_id: WorkspaceId) -> Result<()> {
+ INSERT OR IGNORE INTO workspaces(workspace_id)
+ VALUES (?1)
+ }
+ }
+
query! {
pub(crate) async fn set_window_open_status(workspace_id: WorkspaceId, bounds: SerializedWindowBounds, display: Uuid) -> Result<()> {
UPDATE workspaces
diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs
index 4141952cc7..3ea631ed6f 100644
--- a/crates/workspace/src/workspace.rs
+++ b/crates/workspace/src/workspace.rs
@@ -1175,6 +1175,11 @@ enum WorkspaceLocation {
None,
}
+enum SerializableItemMessage {
+ Item(Box<dyn SerializableItemHandle>),
+ Barrier(oneshot::Sender<()>),
+}
+
type PromptForNewPath = Box<
dyn Fn(
&mut Workspace,
@@ -1253,7 +1258,7 @@ pub struct Workspace {
on_prompt_for_open_path: Option<PromptForOpenPath>,
terminal_provider: Option<Box<dyn TerminalProvider>>,
debugger_provider: Option<Arc<dyn DebuggerProvider>>,
- serializable_items_tx: UnboundedSender<Box<dyn SerializableItemHandle>>,
+ serializable_items_tx: UnboundedSender<SerializableItemMessage>,
_items_serializer: Task<Result<()>>,
session_id: Option<String>,
scheduled_tasks: Vec<Task<()>>,
@@ -1554,7 +1559,7 @@ impl Workspace {
}
let (serializable_items_tx, serializable_items_rx) =
- mpsc::unbounded::<Box<dyn SerializableItemHandle>>();
+ mpsc::unbounded::<SerializableItemMessage>();
let _items_serializer = cx.spawn_in(window, async move |this, cx| {
Self::serialize_items(&this, serializable_items_rx, cx).await
});
@@ -1759,6 +1764,7 @@ impl Workspace {
} else {
DB.next_id().await.unwrap_or_else(|_| Default::default())
};
+ DB.ensure_workspace_row(workspace_id).await?;
let toolchains = DB.toolchains(workspace_id).await?;
@@ -6036,8 +6042,16 @@ impl Workspace {
window_id: Some(window.window_handle().window_id().as_u64()),
user_toolchains,
};
+ let item_serialization_barrier = self.item_serialization_barrier();
window.spawn(cx, async move |_| {
+ let Some(item_serialization_barrier) = item_serialization_barrier.log_err()
+ else {
+ return;
+ };
+ if item_serialization_barrier.await.log_err().is_none() {
+ return;
+ }
persistence::DB.save_workspace(serialized_workspace).await;
})
}
@@ -6108,31 +6122,49 @@ impl Workspace {
async fn serialize_items(
this: &WeakEntity<Self>,
- items_rx: UnboundedReceiver<Box<dyn SerializableItemHandle>>,
+ mut items_rx: UnboundedReceiver<SerializableItemMessage>,
cx: &mut AsyncWindowContext,
) -> Result<()> {
const CHUNK_SIZE: usize = 200;
- let mut serializable_items = items_rx.ready_chunks(CHUNK_SIZE);
+ while let Some(message) = items_rx.next().await {
+ let mut unique_items = HashMap::default();
+ let mut barrier = None;
+ let mut channel_closed = false;
- while let Some(items_received) = serializable_items.next().await {
- let unique_items =
- items_received
- .into_iter()
- .fold(HashMap::default(), |mut acc, item| {
- acc.entry(item.item_id()).or_insert(item);
- acc
- });
+ Self::push_serializable_item_message(message, &mut unique_items, &mut barrier);
- // We use into_iter() here so that the references to the items are moved into
- // the tasks and not kept alive while we're sleeping.
- for (_, item) in unique_items.into_iter() {
- if let Ok(Some(task)) = this.update_in(cx, |workspace, window, cx| {
- item.serialize(workspace, false, window, cx)
- }) {
- cx.background_spawn(async move { task.await.log_err() })
- .detach();
+ while barrier.is_none() && unique_items.len() < CHUNK_SIZE {
+ match items_rx.try_next() {
+ Ok(Some(message)) => {
+ Self::push_serializable_item_message(
+ message,
+ &mut unique_items,
+ &mut barrier,
+ );
+ }
+ Ok(None) => {
+ channel_closed = true;
+ break;
+ }
+ Err(_) => break,
+ }
+ }
+
+ let batch_succeeded = Self::serialize_item_batch(this, unique_items, cx)
+ .await
+ .log_err()
+ .is_some();
+
+ if let Some(barrier) = barrier {
+ if batch_succeeded {
+ let _ = barrier.send(());
}
+ continue;
+ }
+
+ if channel_closed {
+ break;
}
cx.background_executor()
@@ -6143,12 +6175,54 @@ impl Workspace {
Ok(())
}
+ fn push_serializable_item_message(
+ message: SerializableItemMessage,
+ unique_items: &mut HashMap<EntityId, Box<dyn SerializableItemHandle>>,
+ barrier: &mut Option<oneshot::Sender<()>>,
+ ) {
+ match message {
+ SerializableItemMessage::Item(item) => {
+ unique_items.entry(item.item_id()).or_insert(item);
+ }
+ SerializableItemMessage::Barrier(sender) => {
+ *barrier = Some(sender);
+ }
+ }
+ }
+
+ async fn serialize_item_batch(
+ this: &WeakEntity<Self>,
+ unique_items: HashMap<EntityId, Box<dyn SerializableItemHandle>>,
+ cx: &mut AsyncWindowContext,
+ ) -> Result<()> {
+ let serialize_tasks = match this.update_in(cx, move |workspace, window, cx| {
+ unique_items
+ .into_values()
+ .filter_map(|item| item.serialize(workspace, false, window, cx))
+ .collect::<Vec<_>>()
+ }) {
+ Ok(serialize_tasks) => serialize_tasks,
+ Err(_) => return Ok(()),
+ };
+
+ try_join_all(serialize_tasks).await?;
+ Ok(())
+ }
+
+ fn item_serialization_barrier(&self) -> Result<oneshot::Receiver<()>> {
+ let (sender, receiver) = oneshot::channel();
+ self.serializable_items_tx
+ .unbounded_send(SerializableItemMessage::Barrier(sender))
+ .map_err(|err| anyhow!("failed to send item serialization barrier: {err}"))?;
+ Ok(receiver)
+ }
+
pub(crate) fn enqueue_item_serialization(
&mut self,
item: Box<dyn SerializableItemHandle>,
) -> Result<()> {
self.serializable_items_tx
- .unbounded_send(item)
+ .unbounded_send(SerializableItemMessage::Item(item))
.map_err(|err| anyhow!("failed to send serializable item over channel: {err}"))
}
@@ -6252,24 +6326,42 @@ impl Workspace {
// after loading the items, we might have different items and in order to avoid
// the database filling up, we delete items that haven't been loaded now.
//
- // The items that have been loaded, have been saved after they've been added to the workspace.
- let clean_up_tasks = workspace.update_in(cx, |_, window, cx| {
- item_ids_by_kind
- .into_iter()
- .map(|(item_kind, loaded_items)| {
- SerializableItemRegistry::cleanup(
- item_kind,
- serialized_workspace.id,
- loaded_items,
- window,
- cx,
- )
- .log_err()
- })
- .collect::<Vec<_>>()
- })?;
+ // Newly deserialized items only enqueue serialization when they are added to their panes.
+ // Wait for that queued work to finish before deleting the old persisted item ids.
+ let item_serialization_barrier = workspace
+ .update_in(cx, |workspace, _, _| {
+ workspace.item_serialization_barrier().log_err()
+ })
+ .log_err()
+ .flatten();
+
+ let item_serialization_flushed = if let Some(item_serialization_barrier) =
+ item_serialization_barrier
+ {
+ item_serialization_barrier.await.log_err().is_some()
+ } else {
+ false
+ };
- futures::future::join_all(clean_up_tasks).await;
+ if item_serialization_flushed {
+ let clean_up_tasks = workspace.update_in(cx, |_, window, cx| {
+ item_ids_by_kind
+ .into_iter()
+ .map(|(item_kind, loaded_items)| {
+ SerializableItemRegistry::cleanup(
+ item_kind,
+ serialized_workspace.id,
+ loaded_items,
+ window,
+ cx,
+ )
+ .log_err()
+ })
+ .collect::<Vec<_>>()
+ })?;
+
+ futures::future::join_all(clean_up_tasks).await;
+ }
workspace
.update_in(cx, |workspace, window, cx| {
@@ -9001,6 +9093,7 @@ fn deserialize_remote_project(
} else {
persistence::DB.next_id().await?
};
+ persistence::DB.ensure_workspace_row(workspace_id).await?;
Ok((workspace_id, serialized_workspace))
})
@@ -0,0 +1,163 @@
From: Danny Milosavljevic <dannym@friendly-machines.com>
Date: Fri, 6 Mar 2026 20:20:00 +0000
Subject: [PATCH] workspace: Keep local workspaces whose roots are only regular files
License: expat
Zed persists local workspaces for standalone regular files as well as
directory-backed projects. Recent-workspace cleanup and last-session
restoration were using a helper that only kept local workspaces if all
saved paths existed and at least one of them was a directory.
That made local workspaces whose roots were only regular files look
invalid. A background recent-workspaces pass could then delete the
workspace row, which in turn cascaded to item-specific state such as
editors. In the window edited-state restore test, reopening a
standalone regular file could therefore fail because the saved editor
row had been deleted by that cleanup path.
Fix this by treating a local workspace as valid whenever all of its
saved paths still exist, whether those paths are directories or
regular files. Apply the same rule to last-session workspace
restoration, and add regression coverage for both code paths.
diff --git a/crates/workspace/src/persistence.rs b/crates/workspace/src/persistence.rs
--- a/crates/workspace/src/persistence.rs
+++ b/crates/workspace/src/persistence.rs
@@ -1783,19 +1783,13 @@ impl WorkspaceDb {
}
}
- async fn all_paths_exist_with_a_directory(paths: &[PathBuf], fs: &dyn Fs) -> bool {
- let mut any_dir = false;
+ async fn all_paths_exist(paths: &[PathBuf], fs: &dyn Fs) -> bool {
for path in paths {
- match fs.metadata(path).await.ok().flatten() {
- None => return false,
- Some(meta) => {
- if meta.is_dir {
- any_dir = true;
- }
- }
+ if fs.metadata(path).await.ok().flatten().is_none() {
+ return false;
}
}
- any_dir
+ true
}
// Returns the recent locations which are still valid on disk and deletes ones which no longer
@@ -1843,7 +1837,11 @@ impl WorkspaceDb {
// If a local workspace points to WSL, this check will cause us to wait for the
// WSL VM and file server to boot up. This can block for many seconds.
// Supported scenarios use remote workspaces.
- if !has_wsl_path && Self::all_paths_exist_with_a_directory(paths.paths(), fs).await {
+ //
+ // Local workspaces may legitimately contain only regular files (for example, a
+ // standalone file opened outside any worktree). Those should be preserved as
+ // long as all of their saved paths still exist.
+ if !has_wsl_path && Self::all_paths_exist(paths.paths(), fs).await {
result.push((id, SerializedWorkspaceLocation::Local, paths, timestamp));
} else {
delete_tasks.push(self.delete_workspace_by_id(id));
@@ -1903,7 +1901,7 @@ impl WorkspaceDb {
window_id,
});
} else {
- if Self::all_paths_exist_with_a_directory(paths.paths(), fs).await {
+ if Self::all_paths_exist(paths.paths(), fs).await {
workspaces.push(SessionWorkspace {
workspace_id,
location: SerializedWorkspaceLocation::Local,
@@ -3425,6 +3423,91 @@ mod tests {
);
}
+ #[gpui::test]
+ async fn test_recent_workspaces_on_disk_keeps_regular_file_only_workspace(
+ cx: &mut gpui::TestAppContext,
+ ) {
+ let dir = tempfile::TempDir::with_prefix("regular-file-workspace").unwrap();
+ let regular_file = dir.path().join("a");
+
+ let fs = fs::FakeFs::new(cx.executor());
+ fs.insert_tree(dir.path(), json!({"a": "hey"})).await;
+
+ let db = WorkspaceDb::open_test_db("test_recent_workspaces_keeps_regular_file_only")
+ .await;
+ let workspace = SerializedWorkspace {
+ id: WorkspaceId(1),
+ paths: PathList::new(&[regular_file.clone()]),
+ location: SerializedWorkspaceLocation::Local,
+ center_group: Default::default(),
+ window_bounds: Default::default(),
+ display: Default::default(),
+ docks: Default::default(),
+ centered_layout: false,
+ breakpoints: Default::default(),
+ session_id: None,
+ window_id: Some(1),
+ user_toolchains: Default::default(),
+ };
+
+ db.save_workspace(workspace.clone()).await;
+
+ let recent = db.recent_workspaces_on_disk(fs.as_ref()).await.unwrap();
+ assert_eq!(
+ recent,
+ vec![(
+ workspace.id,
+ SerializedWorkspaceLocation::Local,
+ workspace.paths.clone(),
+ recent[0].3,
+ )]
+ );
+ assert_eq!(db.workspace_for_roots(&[regular_file]).unwrap().id, workspace.id);
+ }
+
+ #[gpui::test]
+ async fn test_last_session_workspace_locations_keeps_regular_file_only_workspace(
+ cx: &mut gpui::TestAppContext,
+ ) {
+ let dir = tempfile::TempDir::with_prefix("regular-file-workspace-session").unwrap();
+ let regular_file = dir.path().join("a");
+
+ let fs = fs::FakeFs::new(cx.executor());
+ fs.insert_tree(dir.path(), json!({"a": "hey"})).await;
+
+ let db = WorkspaceDb::open_test_db("test_last_session_keeps_regular_file_only").await;
+ let workspace = SerializedWorkspace {
+ id: WorkspaceId(1),
+ paths: PathList::new(&[regular_file.clone()]),
+ location: SerializedWorkspaceLocation::Local,
+ center_group: Default::default(),
+ window_bounds: Default::default(),
+ display: Default::default(),
+ docks: Default::default(),
+ centered_layout: false,
+ breakpoints: Default::default(),
+ session_id: Some("one-session".to_owned()),
+ window_id: Some(7),
+ user_toolchains: Default::default(),
+ };
+
+ db.save_workspace(workspace.clone()).await;
+
+ let locations = db
+ .last_session_workspace_locations("one-session", None, fs.as_ref())
+ .await
+ .unwrap();
+ assert_eq!(
+ locations,
+ vec![SessionWorkspace {
+ workspace_id: workspace.id,
+ location: SerializedWorkspaceLocation::Local,
+ paths: workspace.paths,
+ window_id: Some(WindowId::from(7u64)),
+ }]
+ );
+ }
+
#[gpui::test]
async fn test_get_or_create_ssh_project() {
let db = WorkspaceDb::open_test_db("test_get_or_create_ssh_project").await;
@@ -0,0 +1,24 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Subject: Remove the [patch.crates-io] section from Cargo.toml.
Date: 2026-03-01
License: expat
These overrides redirect crates-io dependencies to git sources, which cannot be
fetched in an offline build. With vendored sources the overrides are unnecessary.
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -804,13 +804,6 @@
"Win32_Media",
]
-[patch.crates-io]
-async-task = { git = "https://github.com/smol-rs/async-task.git", rev = "b4486cd71e4e94fbda54ce6302444de14f4d190e" }
-notify = { git = "https://github.com/zed-industries/notify.git", rev = "ce58c24cad542c28e04ced02e20325a4ec28a31d" }
-notify-types = { git = "https://github.com/zed-industries/notify.git", rev = "ce58c24cad542c28e04ced02e20325a4ec28a31d" }
-windows-capture = { git = "https://github.com/zed-industries/windows-capture.git", rev = "f0d6c1b6691db75461b732f6d5ff56eed002eeb9" }
-calloop = { git = "https://github.com/zed-industries/calloop" }
-
[profile.dev]
split-debuginfo = "unpacked"
incremental = true
@@ -0,0 +1,75 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Subject: Use mock livekit client on Linux to avoid libwebrtc dependency.
Date: 2026-03-01
License: GPL3+
libwebrtc is not packaged in Guix and is difficult to build from source.
Zed already has a mock_client fallback for FreeBSD and Windows-GNU which
lack libwebrtc. Add target_os = "linux" to those cfg conditions so Linux
also uses mock_client, and exclude the libwebrtc/livekit dependencies from
Cargo.toml on Linux. This disables voice/video calls but allows the rest
of Zed to build.
--- a/crates/livekit_client/Cargo.toml 2026-03-01 21:21:38.647599342 +0000
+++ b/crates/livekit_client/Cargo.toml 2026-03-01 21:22:19.846482866 +0000
@@ -44,7 +44,7 @@
ui.workspace = true
util.workspace = true
-[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))'.dependencies]
+[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))'.dependencies]
libwebrtc = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks" }
livekit = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks", features = ["__rustls-tls"] }
--- a/crates/livekit_client/src/lib.rs 2026-03-01 21:21:44.752291052 +0000
+++ b/crates/livekit_client/src/lib.rs 2026-03-01 21:22:37.234363786 +0000
@@ -15,7 +15,8 @@
test,
feature = "test-support",
all(target_os = "windows", target_env = "gnu"),
- target_os = "freebsd"
+ target_os = "freebsd",
+ target_os = "linux"
))
))]
mod livekit_client;
@@ -25,7 +26,8 @@
test,
feature = "test-support",
all(target_os = "windows", target_env = "gnu"),
- target_os = "freebsd"
+ target_os = "freebsd",
+ target_os = "linux"
))
))]
pub use livekit_client::*;
@@ -36,7 +38,8 @@
test,
feature = "test-support",
all(target_os = "windows", target_env = "gnu"),
- target_os = "freebsd"
+ target_os = "freebsd",
+ target_os = "linux"
)
))]
mod mock_client;
@@ -46,7 +49,8 @@
test,
feature = "test-support",
all(target_os = "windows", target_env = "gnu"),
- target_os = "freebsd"
+ target_os = "freebsd",
+ target_os = "linux"
)
))]
pub mod test;
@@ -56,7 +60,8 @@
test,
feature = "test-support",
all(target_os = "windows", target_env = "gnu"),
- target_os = "freebsd"
+ target_os = "freebsd",
+ target_os = "linux"
)
))]
pub use mock_client::*;
+28
View File
@@ -472,6 +472,34 @@ Poppler gives access to the following binary programs:
(license license:gpl2+)
(home-page "https://poppler.freedesktop.org/")))
(define-public poppler-next
(package
(inherit poppler)
(name "poppler-next")
(version "26.04.0")
(source (origin
(method url-fetch)
(uri (string-append "https://poppler.freedesktop.org/poppler-"
version ".tar.xz"))
(sha256
(base32
"14q69q6ipy3m4ywdhlr48qlscwzrv8jcns3g2306pyaa25im35dh"))))
(arguments (substitute-keyword-arguments arguments
((#:configure-flags flags)
#~(cons*
"-DENABLE_GPGME=OFF"
"-DENABLE_QT5=OFF"
"-DENABLE_QT6=OFF"
#$flags))
((#:phases phases)
#~(modify-phases #$phases
(add-after 'install 'sanitize-pkg-config-files
(lambda _
(substitute* (find-files #$output "\\.pc$")
(("^Requires.private:.*" all)
(string-append "# " all)))))))))
(inputs (modify-inputs inputs (prepend curl)))))
(define-public poppler-data
(package
(name "poppler-data")
+5 -3
View File
@@ -4,7 +4,7 @@
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2021, 2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2024-2025 jgart <jgart@dismail.de>
;;; Copyright © 2024-2026 jgart <jgart@dismail.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -39,6 +39,7 @@
#:use-module (gnu packages fontutils)
#:use-module (gnu packages game-development)
#:use-module (gnu packages image)
#:use-module (gnu packages libedit)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages maths)
@@ -236,7 +237,7 @@ it.")
(define-public trealla
(package
(name "trealla")
(version "2.92.29")
(version "2.92.30")
(source
(origin
(method git-fetch)
@@ -245,12 +246,13 @@ it.")
(url "https://github.com/trealla-prolog/trealla")
(commit (string-append "v" version))))
(sha256
(base32 "1032pza07dzyrsjrbh355h3cyrkwsg2vbzwwaaxcvfirjhn8zdam"))
(base32 "1vbjv2nf3c2npf349i9y0zknc2g0hizksv0yhgscdpwzvzfp6n9m"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(inputs
(list curl
gsl
libedit
libffi
openssl
raylib
+2 -2
View File
@@ -7883,7 +7883,7 @@ basic TCP/IP protocols.")
(define-public python-geventhttpclient
(package
(name "python-geventhttpclient")
(version "2.3.3")
(version "2.3.9")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -7893,7 +7893,7 @@ basic TCP/IP protocols.")
(file-name (git-file-name name version))
(sha256
(base32
"1ya0i0fbx054mfx5d1k75fcf64xzp7vva8lkwwzan41xbnc56nyj"))))
"1diq6n9sr92rsqbpxlbhbn1d22hrlzp6swykz9bfzh7sxpywa6j8"))))
(build-system pyproject-build-system)
(arguments
(list
+11 -33
View File
@@ -10497,33 +10497,6 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
errors when data is invalid.")
(license license:expat)))
(define-public python-pydantic-1
(package
(inherit python-pydantic)
(name "python-pydantic")
(version "1.10.19")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/samuelcolvin/pydantic")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0swcpfq1y0h5dcj82idls8k5la4xh4c0vz47y7jci2qass8gjffc"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
;; One test fails with not equal assertion.
#~(list "--deselect=tests/test_validators.py::test_assert_raises_validation_error")))
(native-inputs
(list python-pytest
python-pytest-mock
python-setuptools))
(propagated-inputs
(list python-typing-extensions))))
;; It may be removed after 2026-01-05.
(define-deprecated/public-alias python-pydantic-2 python-pydantic)
@@ -23082,16 +23055,21 @@ completes.")
(define-public python-asyncinject
(package
(name "python-asyncinject")
(version "0.6")
(version "0.6.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "asyncinject" version))
(method git-fetch)
(uri (git-reference
(url "https://github.com/simonw/asyncinject")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0x57idiy19lzyn32klgm06r223z8gr2aqqk91gysbshq7jg8g3pf"))))
(base32 "127ahb32x2qqjk17a667adrvrl63ima8khifq6dfm0q3vlfslxnn"))))
(build-system pyproject-build-system)
(native-inputs (list python-pytest python-pytest-asyncio
python-setuptools python-wheel))
(native-inputs
(list python-pytest
python-pytest-asyncio
python-setuptools))
(home-page "https://github.com/simonw/asyncinject")
(synopsis
"Run async workflows using pytest-fixtures-style dependency injection")
File diff suppressed because it is too large Load Diff
+551
View File
@@ -59,6 +59,128 @@
(base32
"1yhs9lj9gnzbvimv0y5f1a4my0slbvygkcjjkaxd4wkkyfvfbkxy")))))
;; Workspace dependency of zed.
;;
;; Cargo side: Cargo unifies dependency versions across zed's
;; workspace, including this package's transitive dependencies,
;; and records them in zed's Cargo.lock.
;;
;; Guix side: zed's cargo-inputs entry (generated from zed's
;; Cargo.lock) already contains all of this package's transitive
;; dependencies, so this package reuses zed's cargo-inputs.
(define-public rust-alacritty-0.25.1.9d9640d
(hidden-package
(package
(name "rust-alacritty")
(version "0.25.1")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/zed-industries/alacritty")
(commit "9d9640d4e56d67a09d049f9c0a300aae08d4f61e")))
(file-name
(git-file-name "rust-alacritty" "0.25.1.9d9640d"))
(sha256
(base32 "16g4jdbwdhqihc2x403fdaxf6m9gcj44cm53dyk68b3wl7chh29s"))))
(build-system cargo-build-system)
(arguments
(list #:skip-build? #t
#:install-source? #t
#:cargo-package-crates ''("alacritty_terminal")
#:cargo-package-flags ''("--no-metadata" "--no-verify"
"--exclude-lockfile")))
(inputs (cargo-inputs 'rust-alacritty-0.25.1.9d9640d))
(home-page "https://github.com/zed-industries/alacritty")
(synopsis "Terminal emulator library")
(description
"This package provides a terminal emulator library.")
(license license:asl2.0))))
;; Workspace dependency of zed.
;;
;; Cargo side: Cargo unifies dependency versions across zed's
;; workspace, including this package's transitive dependencies,
;; and records them in zed's Cargo.lock.
;;
;; Guix side: zed's cargo-inputs entry (generated from zed's
;; Cargo.lock) already contains all of this package's transitive
;; dependencies, so this package reuses zed's cargo-inputs.
(define-public rust-candle-0.9.1.724d75e
(hidden-package
(package
(name "rust-candle")
(version "0.9.1")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/zed-industries/candle")
(commit "724d75eb3deebefe83f2a7381a45d4fac6eda383")))
(file-name
(git-file-name "rust-candle" "0.9.1.724d75e"))
(sha256
(base32 "1n9g84g0ikldw42f0j3ad975vjvx6ildwqh8dw3zi3rps518hx14"))
(patches
(search-patches
"rust-candle-0.9.1-add-candle-onnx-to-workspace.patch"))))
(build-system cargo-build-system)
(arguments
(list #:skip-build? #t
#:install-source? #t
#:cargo-package-crates ''("candle-core"
"candle-nn"
"candle-onnx")
#:cargo-package-flags ''("--no-metadata" "--no-verify"
"--exclude-lockfile")))
(inputs (cargo-inputs 'rust-candle-0.9.1.724d75e))
(home-page "https://github.com/huggingface/candle")
(synopsis "Minimalist ML framework for Rust")
(description
"This package provides a minimalist ML framework for Rust.")
(license (list license:asl2.0 license:expat)))))
;; Workspace dependency of zed.
;;
;; Cargo side: Cargo unifies dependency versions across zed's
;; workspace, including this package's transitive dependencies,
;; and records them in zed's Cargo.lock.
;;
;; Guix side: zed's cargo-inputs entry (generated from zed's
;; Cargo.lock) already contains all of this package's transitive
;; dependencies, so this package reuses zed's cargo-inputs.
(define-public rust-dap-types-0.0.1.1b461b3
(hidden-package
(package
(name "rust-dap-types")
(version "0.0.1")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/zed-industries/dap-types")
(commit "1b461b310481d01e02b2603c16d7144b926339f8")))
(file-name
(git-file-name "rust-dap-types" "0.0.1.1b461b3"))
(sha256
(base32 "0snc05ia4jvykajavsvyxcyn24s2jxbw7k9wmby23r1aqxf31i0z"))))
(build-system cargo-build-system)
(arguments
(list #:skip-build? #t
#:install-source? #t
#:cargo-package-crates ''("dap-types")
#:cargo-package-flags ''("--no-metadata" "--no-verify"
"--exclude-lockfile")))
(inputs (cargo-inputs 'rust-dap-types-0.0.1.1b461b3))
(home-page "https://github.com/zed-industries/dap-types")
(synopsis "Rust types for the Debug Adapter Protocol")
(description
"This package provides Rust types for the Debug Adapter Protocol.")
(license (list license:asl2.0 license:expat)))))
(define-public rust-deunicode-1
(hidden-package
(package
@@ -102,6 +224,46 @@
transliterating them. It supports Emoji and Chinese.")
(license license:bsd-3))))
;; Workspace dependency of zed.
;;
;; Cargo side: Cargo unifies dependency versions across zed's
;; workspace, including this package's transitive dependencies,
;; and records them in zed's Cargo.lock.
;;
;; Guix side: zed's cargo-inputs entry (generated from zed's
;; Cargo.lock) already contains all of this package's transitive
;; dependencies, so this package reuses zed's cargo-inputs.
(define-public rust-gh-workflow-0.8.0.c9eac0e
(hidden-package
(package
(name "rust-gh-workflow")
(version "0.8.0")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/zed-industries/gh-workflow")
(commit "c9eac0ed361583e1072860d96776fa52775b82ac")))
(file-name
(git-file-name "rust-gh-workflow" "0.8.0.c9eac0e"))
(sha256
(base32 "172bn9b16f7qj3mn0h8r8bwiiiw2awgqlzj5n6f2gjcgk5nmh1hp"))))
(build-system cargo-build-system)
(arguments
(list #:skip-build? #t
#:install-source? #t
#:cargo-package-crates ''("gh-workflow-macros"
"gh-workflow")
#:cargo-package-flags ''("--no-metadata" "--no-verify"
"--exclude-lockfile")))
(inputs (cargo-inputs 'rust-gh-workflow-0.8.0.c9eac0e))
(home-page "https://github.com/tailcallhq/gh-workflow")
(synopsis "Type-safe GitHub Actions workflow generation")
(description
"This package provides type-safe GitHub Actions workflow generation.")
(license license:expat))))
(define-public rust-hypher-0.1
(hidden-package
(package
@@ -145,6 +307,191 @@ transliterating them. It supports Emoji and Chinese.")
(description "@code{hypher} is a Rust library for syllabification.")
(license (list license:expat license:asl2.0)))))
;; Workspace dependency of zed.
;;
;; Cargo side: Cargo unifies dependency versions across zed's
;; workspace, including this package's transitive dependencies,
;; and records them in zed's Cargo.lock.
;;
;; Guix side: zed's cargo-inputs entry (generated from zed's
;; Cargo.lock) already contains all of this package's transitive
;; dependencies, so this package reuses zed's cargo-inputs.
;;
;; Only livekit-protocol, livekit-runtime, and livekit-api are
;; packaged. The libwebrtc, webrtc-sys, and livekit crates are
;; disabled on Linux by our zed-use-mock-livekit-on-linux patch
;; (which adds target_os = "linux" to the cfg gate), but their
;; Cargo.toml files must remain for workspace resolution; their
;; source is replaced with empty stubs. The snippet also deletes
;; unused workspace members (livekit-ffi, soxr-sys, yuv-sys,
;; imgproc, examples) and the 1.6 MiB generated livekit.serde.rs
;; (guarded by a nonexistent "serde" feature, so never compiled).
;;
;; TODO: Regenerate livekit-protocol/src/livekit.rs (5650 lines)
;; from the .proto source in the livekit-protocol/protocol
;; submodule (github.com/livekit/protocol) using prost-build and
;; pbjson-build as native-inputs, then delete the shipped copy.
(define-public rust-livekit-0.7.8.5f04705
(hidden-package
(package
(name "rust-livekit")
(version "0.7.8")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/zed-industries/livekit-rust-sdks")
(commit "5f04705ac3f356350ae31534ffbc476abc9ea83d")))
(file-name
(git-file-name "rust-livekit" "0.7.8.5f04705"))
(sha256
(base32 "1irnw9dax0nl8rl7jxdxs5vw6hg166jj4gf1s5cza6igvmrkl6y9"))
(modules '((guix build utils)))
(snippet
'(begin
(for-each delete-file-recursively
'(".github" "examples" "imgproc"
"livekit-ffi" "soxr-sys" "yuv-sys"
;; Keep Cargo.toml for workspace resolution
;; but replace source with stubs.
"libwebrtc/src"
"livekit/src"
"webrtc-sys/src"
"webrtc-sys/include"
"webrtc-sys/libwebrtc"))
(for-each (lambda (f)
(mkdir-p (dirname f))
(call-with-output-file f (const #t)))
'("libwebrtc/src/lib.rs"
"livekit/src/lib.rs"
"webrtc-sys/src/lib.rs"))
(delete-file
"livekit-protocol/src/livekit.serde.rs")
(substitute* "Cargo.toml"
(("\"livekit-ffi\",") "")
(("\"soxr-sys\",") "")
(("\"yuv-sys\",") "")
(("\"imgproc\",") ""))))))
(build-system cargo-build-system)
(arguments
(list #:skip-build? #t
#:install-source? #t
#:cargo-package-crates ''("livekit-protocol"
"livekit-runtime"
"livekit-api"
"webrtc-sys-build"
"webrtc-sys"
"libwebrtc"
"livekit")
#:cargo-package-flags ''("--no-metadata" "--no-verify"
"--exclude-lockfile")
#:phases
#~(modify-phases %standard-phases
(replace 'package
(lambda* (#:key source (cargo-package-crates '())
(cargo-package-flags '("--no-metadata" "--no-verify"))
(vendor-dir "guix-vendor")
#:allow-other-keys)
(use-modules (ice-9 ftw))
;; Same as the standard package phase, but deletes
;; cargo's target/package/tmp-crate/ scratch directory
;; between the packaging loop and the repacking step.
;; Cargo copies .crate files there during packaging and
;; does not clean up. The repacking step's recursive
;; find-files picks them up, and scandir confuses the
;; tmp-crate directory with an extracted crate when
;; names sort after "tmp-crate" alphabetically.
(when (file-exists? "Cargo.toml.orig")
(delete-file "Cargo.toml.orig"))
(for-each
(lambda (pkg)
(apply invoke "cargo" "package" "--offline"
"--package" pkg cargo-package-flags)
(for-each
(lambda (crate)
(invoke "tar" "xzf" crate "-C" vendor-dir))
(find-files "target/package" "\\.crate$"))
((assoc-ref %standard-phases 'patch-cargo-checksums)
#:vendor-dir vendor-dir))
cargo-package-crates)
;; Delete cargo's scratch directory.
(when (file-exists? "target/package/tmp-crate")
(delete-file-recursively "target/package/tmp-crate"))
;; Repack crates with deterministic timestamps.
(with-directory-excursion "target/package"
(for-each
(lambda (crate)
(invoke "tar" "xf" crate)
(delete-file crate)
(let ((dir
(car (scandir
"."
(lambda (file)
(and (not (member file '("." "..")))
(not (string-suffix?
".crate" file))))))))
(for-each
(lambda (file)
(let ((s (lstat file)))
(unless (eq? (stat:type s) 'symlink)
(utime file 0 0 0 0))))
(find-files dir #:directories? #t))
(apply invoke "tar" "czf"
(string-append dir ".crate")
"--sort=name" "--mtime=@0"
"--owner=root:0" "--group=root:0"
(find-files dir #:directories? #t))
(delete-file-recursively dir)))
(find-files "." "\\.crate$"))))))))
(inputs (cargo-inputs 'rust-livekit-0.7.8.5f04705))
(home-page "https://github.com/livekit/rust-sdks")
(synopsis "LiveKit real-time communication SDK for Rust")
(description
"This package provides a LiveKit real-time communication SDK for Rust.")
(license license:asl2.0))))
;; Workspace dependency of zed.
;;
;; Cargo side: Cargo unifies dependency versions across zed's
;; workspace, including this package's transitive dependencies,
;; and records them in zed's Cargo.lock.
;;
;; Guix side: zed's cargo-inputs entry (generated from zed's
;; Cargo.lock) already contains all of this package's transitive
;; dependencies, so this package reuses zed's cargo-inputs.
(define-public rust-notify-8.2.0.ce58c24
(hidden-package
(package
(name "rust-notify")
(version "8.2.0")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/zed-industries/notify.git")
(commit "ce58c24cad542c28e04ced02e20325a4ec28a31d")))
(file-name
(git-file-name "rust-notify" "8.2.0.ce58c24"))
(sha256
(base32 "09zn3ll1vlsblgrdacyw3zx58xzdxlab8ba7h22bbb57n76dmkl0"))))
(build-system cargo-build-system)
(arguments
(list #:skip-build? #t
#:install-source? #t
#:cargo-package-crates ''("notify-types"
"notify")
#:cargo-package-flags ''("--no-metadata" "--no-verify"
"--exclude-lockfile")))
(inputs (cargo-inputs 'rust-notify-8.2.0.ce58c24))
(home-page "https://github.com/notify-rs/notify")
(synopsis "Cross-platform filesystem notification library")
(description
"This package provides a cross-platform filesystem notification library
for Rust.")
(license (list license:asl2.0 license:expat)))))
(define-public rust-pcre2-utf32-0.2
(hidden-package
(package
@@ -227,6 +574,77 @@ UTF-32 support.")
"0zgqklzmyk893n82zq8d0is57npvy9lsfpqb83h1bbx9c42fl35p"))))
(inputs (cargo-inputs 'rust-pipewire-0.8.0.93138d0))))))
;; Workspace dependency of zed.
;;
;; Cargo side: Cargo unifies dependency versions across zed's
;; workspace, including this package's transitive dependencies,
;; and records them in zed's Cargo.lock.
;;
;; Guix side: zed's cargo-inputs entry (generated from zed's
;; Cargo.lock) already contains all of this package's transitive
;; dependencies, so this package reuses zed's cargo-inputs.
(define-public rust-pet-0.1.0.d5b5bb0
(hidden-package
(package
(name "rust-pet")
(version "0.1.0")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/microsoft/python-environment-tools.git")
(commit "d5b5bb0c4558a51d8cc76b514bc870fd1c042f16")))
(file-name
(git-file-name "rust-pet" "0.1.0.d5b5bb0"))
(sha256
(base32 "01djr1761l7c889v9lng7igjqxiz208r2vrwij661cn2fy5xcm5f"))))
(build-system cargo-build-system)
(arguments
(list #:skip-build? #t
#:install-source? #t
#:cargo-package-crates ''("pet-fs"
"pet-core"
"pet-python-utils"
"pet-jsonrpc"
"pet-reporter"
"pet-conda"
"pet-virtualenv"
"pet-virtualenvwrapper"
"pet-env-var-path"
"pet-global-virtualenvs"
"pet-homebrew"
"pet-linux-global-python"
"pet-mac-commandlinetools"
"pet-mac-python-org"
"pet-mac-xcode"
"pet-pipenv"
"pet-pixi"
"pet-poetry"
"pet-pyenv"
"pet-telemetry"
"pet-uv"
"pet-venv"
"pet-windows-store"
"pet-windows-registry"
"pet")
#:cargo-package-flags ''("--no-metadata" "--no-verify"
"--exclude-lockfile")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'fix-versions
(lambda _
(let ((version #$(package-version this-package)))
(substitute* (find-files "." "^Cargo[.]toml$")
(("^(pet-[a-z-]*) = [{] path = \"([^\"]*)\" [}]" x pkg path)
(string-append pkg " = { version = \"" version "\", path = \"" path "\" }")))))))))
(inputs (cargo-inputs 'rust-pet-0.1.0.d5b5bb0))
(home-page "https://github.com/microsoft/python-environment-tools")
(synopsis "Python environment tools")
(description
"This package provides Python environment tools.")
(license license:expat))))
(define-public rust-pubgrub-0.3.0.b70cf70
(let ((commit "b70cf707aa43f21b32f3a61b8a0889b15032d5c4")
(revision "0"))
@@ -677,6 +1095,47 @@ intelligence.")
(inputs (cons oniguruma
(cargo-inputs 'rust-syntect-5.3))))))
;; Workspace dependency of zed.
;;
;; Cargo side: Cargo unifies dependency versions across zed's
;; workspace, including this package's transitive dependencies,
;; and records them in zed's Cargo.lock.
;;
;; Guix side: zed's cargo-inputs entry (generated from zed's
;; Cargo.lock) already contains all of this package's transitive
;; dependencies, so this package reuses zed's cargo-inputs.
(define-public rust-tiktoken-rs-0.9.1.2570c43
(hidden-package
(package
(name "rust-tiktoken-rs")
(version "0.9.1")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/zed-industries/tiktoken-rs")
(commit "2570c4387a8505fb8f1d3f3557454b474f1e8271")))
(file-name
(git-file-name "rust-tiktoken-rs" "0.9.1.2570c43"))
(sha256
(base32 "0yki1whx16xqgsrnr6gjsxakj6qzyvz958g6c9h15xp154kw6573"))))
(build-system cargo-build-system)
(arguments
(list #:skip-build? #t
#:install-source? #t
#:cargo-package-crates ''("tiktoken-rs")
#:cargo-package-flags ''("--no-metadata" "--no-verify"
"--exclude-lockfile")))
(inputs (cargo-inputs 'rust-tiktoken-rs-0.9.1.2570c43))
(home-page "https://github.com/zurawiki/tiktoken-rs")
(synopsis "Rust library for OpenAI's BPE tokenizer")
(description
"This package provides Rust bindings for OpenAI's @acronym{BPE, byte
pair encoding} tokenizer, used to count and manage tokens for OpenAI
language models.")
(license license:expat))))
(define-public rust-tikv-jemallocator-for-polars
(let ((commit "c7991e5bb6b3e9f79db6b0f48dcda67c5c3d2936")
(revision "0"))
@@ -960,3 +1419,95 @@ and runtime for AI-assisted coding.")
(description "Glycin is a sandbox image decoder for image viewers and
thumbnails to display untrusted content safely.")
(license (list license:mpl2.0 license:lgpl2.1+))))
;; Workspace dependency of zed.
;;
;; Cargo side: Cargo unifies dependency versions across zed's
;; workspace, including this package's transitive dependencies,
;; and records them in zed's Cargo.lock.
;;
;; Guix side: zed's cargo-inputs entry (generated from zed's
;; Cargo.lock) already contains all of this package's transitive
;; dependencies, so this package reuses zed's cargo-inputs.
(define-public rust-zed-xim-0.4.0-zed.16f35a2
(hidden-package
(package
(name "rust-zed-xim")
(version "0.4.0-zed")
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/zed-industries/xim-rs.git")
(commit "16f35a2c881b815a2b6cdfd6687988e84f8447d8")))
(file-name
(git-file-name "rust-zed-xim" "0.4.0-zed.16f35a2"))
(sha256
(base32 "14cyxxdgjpbkf8ny4c46cfqjinavi2cyxzwfngldlls97m5zh555"))))
(build-system cargo-build-system)
(arguments
(list #:skip-build? #t
#:install-source? #t
#:cargo-package-crates ''("xim-ctext"
"xim-parser"
"zed-xim")
#:cargo-package-flags ''("--no-metadata" "--no-verify"
"--exclude-lockfile")
#:phases
#~(modify-phases %standard-phases
(replace 'package
(lambda* (#:key source (cargo-package-crates '())
(cargo-package-flags '("--no-metadata" "--no-verify"))
(vendor-dir "guix-vendor")
#:allow-other-keys)
(use-modules (ice-9 ftw))
;; Same as the standard package phase, but deletes
;; cargo's target/package/tmp-crate/ scratch directory
;; between the packaging loop and the repacking step.
(when (file-exists? "Cargo.toml.orig")
(delete-file "Cargo.toml.orig"))
(for-each
(lambda (pkg)
(apply invoke "cargo" "package" "--offline"
"--package" pkg cargo-package-flags)
(for-each
(lambda (crate)
(invoke "tar" "xzf" crate "-C" vendor-dir))
(find-files "target/package" "\\.crate$"))
((assoc-ref %standard-phases 'patch-cargo-checksums)
#:vendor-dir vendor-dir))
cargo-package-crates)
(when (file-exists? "target/package/tmp-crate")
(delete-file-recursively "target/package/tmp-crate"))
(with-directory-excursion "target/package"
(for-each
(lambda (crate)
(invoke "tar" "xf" crate)
(delete-file crate)
(let ((dir
(car (scandir
"."
(lambda (file)
(and (not (member file '("." "..")))
(not (string-suffix?
".crate" file))))))))
(for-each
(lambda (file)
(let ((s (lstat file)))
(unless (eq? (stat:type s) 'symlink)
(utime file 0 0 0 0))))
(find-files dir #:directories? #t))
(apply invoke "tar" "czf"
(string-append dir ".crate")
"--sort=name" "--mtime=@0"
"--owner=root:0" "--group=root:0"
(find-files dir #:directories? #t))
(delete-file-recursively dir)))
(find-files "." "\\.crate$"))))))))
(inputs (cargo-inputs 'rust-zed-xim-0.4.0-zed.16f35a2))
(home-page "https://github.com/XDeme1/xim-rs")
(synopsis "X input method client and server")
(description
"This package provides a library for @code{xim}, the X input method.")
(license license:expat))))
+2 -2
View File
@@ -1465,12 +1465,12 @@ inference for statistical models.")
"|"))))))))
(native-inputs
(list bison
dvisvgm
flex
python-numpydoc
python-sphinx
;; python-sphinx-gallery ;; Currently broken
swig-4.0))
swig-4.0
texlive-dvisvgm))
(inputs
(list openblas ; the only required dependency
;; The dependencies below are all optional.
+1 -40
View File
@@ -77776,46 +77776,7 @@ documents. It makes writing LaTeX comfortable by providing features such as
syntax-highlighting, an integrated viewer and reference checking.")
(license license:gpl3)))
(define-public dvisvgm
(package
(name "dvisvgm")
(version "3.0.3")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/mgieseki/dvisvgm")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"11r401yqbw61n1mwsfk5qmwx2c92djwpl0q756qkds5kh25l9ci8"))))
(native-inputs (list pkg-config
autoconf
autoconf-archive
automake
python-wrapper
libtool))
(inputs (list texlive-libkpathsea
freetype
fontforge
clipper
ghostscript
xxhash
brotli
woff2
zlib))
(build-system gnu-build-system)
(synopsis "Command-line utility for generating SVG from DVI, EPS and PDF
files")
(description
"Dvisvgm converts TeX DVI, EPS and PDF files into an
SVG (Scalable Vector Graphics) image. It provides full font support including
virtual fonts, font maps and sub-fonts. The embedded SVG fonts can optionally
be replaced with graphics paths for applications that do not support SVG
fonts. Dvisvgm supports also colors, emTeX, tpic, papersize, PDF mapfile
and PostScript specials. A working TeX installation is needed.")
(home-page "https://dvisvgm.de/")
(license license:gpl3+)))
(define-deprecated-package dvisvgm texlive-dvisvgm) ;14/04/26
(define-public teximpatient
;; The homepage seems to be distributing this version which is currently the
+175
View File
@@ -121,6 +121,7 @@
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-web)
@@ -133,7 +134,10 @@
#:use-module (gnu packages sqlite)
#:use-module (gnu packages terminals)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages vulkan)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg))
@@ -2018,3 +2022,174 @@ with full unicode support and antialiased text rendering.")
syntax highlighting, customizable color scheme (including support for 24-bit true
colours), kitty keyboard protocol, editorconfig support, amongst other features.")
(license license:gpl2)))
(define-public zed
(package
(name "zed")
(version "0.225.10")
(outputs '("out" ; editor, cli, icons, desktop file
"remote" ; zed-remote-server for remote development
"server" ; collab server daemon
"tools")) ; extension_cli
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/zed-industries/zed")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1d6zr88s4nj4fw01gw908aw2mqgjj25baj4gx7qnm6rsbxqrp500"))
(patches
(search-patches "zed-0.225.10-add-message-notification-action.patch"
"zed-0.225.10-add-guix-container-support.patch"
"zed-0.225.10-collapse-multiline-git-deps.patch"
"zed-0.225.10-disable-dlopen.patch"
"zed-0.225.10-exclude-libwebrtc-from-audio.patch"
"zed-0.225.10-fix-sqlite-memory-mode.patch"
"zed-0.225.10-fix-test-db-isolation.patch"
"zed-0.225.10-fix-workspace-race.patch"
"zed-0.225.10-keep-regular-file-workspaces.patch"
"zed-0.225.10-remove-patch-crates-io.patch"
"zed-0.225.10-use-mock-livekit-on-linux.patch"))
(snippet
#~(begin (delete-file
"crates/zed/resources/windows/bin/x64/OpenConsole.exe")))))
(build-system cargo-build-system)
(arguments
(list #:install-source? #f
#:cargo-build-flags ''("--release" "-p" "zed")
;; Not installed:
;; auto_update_helper - Windows-only (empty main on Linux)
;; eval - internal AI agent benchmarking tool
;; edit_prediction_cli - internal edit prediction training pipeline
;; storybook - GPUI component viewer for Zed UI development
;; docs_preprocessor - mdbook preprocessor for Zed's docs website
;; zed_visual_test_runner - visual regression tests, macOS-only
#:cargo-install-paths ''("crates/zed"
"crates/cli" ; opens files in running Zed
;;; Install remote_server via its own cargo invocation
;;; to avoid feature unification with the zed build.
"crates/remote_server" ; installs as zed-remote-server
"crates/collab" ; self-hostable collaboration server
"crates/extension_cli") ; builds extensions from source
#:phases
#~(modify-phases %standard-phases
(add-after 'install 'install-extras
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(libexec (string-append out "/libexec"))
(icons512 (string-append out "/share/icons/hicolor/512x512/apps"))
(icons1024 (string-append out "/share/icons/hicolor/1024x1024/apps"))
(apps (string-append out "/share/applications"))
(remote-bin (string-append (assoc-ref outputs "remote") "/bin"))
(server-bin (string-append (assoc-ref outputs "server") "/bin"))
(tools-bin (string-append (assoc-ref outputs "tools") "/bin")))
;;; The cli binary is the user-facing launcher that finds
;;; and delegates to zed-editor via ../libexec/zed-editor.
(mkdir-p libexec)
(rename-file (string-append bin "/zed")
(string-append libexec "/zed-editor"))
(rename-file (string-append bin "/cli")
(string-append bin "/zed"))
;;; Move remote_server to "remote" output as zed-remote-server.
(mkdir-p remote-bin)
(rename-file (string-append bin "/remote_server")
(string-append remote-bin "/zed-remote-server"))
;;; Move collab to "server" output.
(mkdir-p server-bin)
(rename-file (string-append bin "/collab")
(string-append server-bin "/collab"))
(rename-file (string-append bin "/dotenv")
(string-append server-bin "/dotenv"))
;;; Move zed-extension to "tools" output.
(mkdir-p tools-bin)
(rename-file (string-append bin "/zed-extension")
(string-append tools-bin "/zed-extension"))
;;; Icons.
(mkdir-p icons512)
(mkdir-p icons1024)
(copy-file "crates/zed/resources/app-icon.png"
(string-append icons512 "/zed.png"))
(copy-file "crates/zed/resources/app-icon@2x.png"
(string-append icons1024 "/zed.png"))
;;; Desktop file.
(mkdir-p apps)
(copy-file "crates/zed/resources/zed.desktop.in"
(string-append apps "/dev.zed.Zed.desktop"))
(substitute* (string-append apps "/dev.zed.Zed.desktop")
(("\\$APP_NAME") "Zed")
(("\\$APP_CLI") "zed")
(("\\$APP_ARGS") "%U")
(("\\$APP_ICON") "zed")
(("\\$DO_STARTUP_NOTIFY") "true")))))
(add-after 'unpack 'set-env
(lambda _
(setenv "LIBGIT2_NO_VENDOR" "1")
(setenv "LIBSQLITE3_SYS_USE_PKG_CONFIG" "1")))
(add-after 'set-env 'patch-git-deps
(lambda _
;; All multi-line entries are collapsed to single
;; lines by the patch. reqwest and scap already
;; carry version fields; just strip the git source.
(substitute* "Cargo.toml"
(("(reqwest = \\{) git = \"[^\"]+\", rev = \"[^\"]+\", " _ prefix)
(string-append prefix " "))
(("(scap = \\{) git = \"[^\"]+\", rev = \"[^\"]+\", " _ prefix)
(string-append prefix " ")))
;; Replace all remaining git fields with version = "*"
;; and strip rev/branch.
(substitute* "Cargo.toml"
(("git = \"https://[^\"]+\"")
"version = \"*\"")
((", rev = \"[^\"]+\"") "")
((", branch = \"[^\"]+\"") ""))
;; Sub-crate Cargo.toml files also have git deps.
(for-each
(lambda (file)
;; rev-before-git deps: replace pair with version = "*".
(substitute* file
(("rev = \"[^\"]+\", git = \"[^\"]+\"")
"version = \"*\""))
;; git-before-rev deps that already carry a version
;; field: strip git+rev, keep everything else.
(substitute* file
(("git = \"[^\"]+\" *, rev = \"[^\"]+\" *, ") "")
((", git *= *\"[^\"]+\"") "")
((", branch = \"[^\"]+\"") "")))
(find-files "crates" "^Cargo\\.toml$"))
;; nvim-rs has no version field; add one.
(substitute* "crates/vim/Cargo.toml"
(("(nvim-rs = \\{) " _ prefix)
(string-append prefix " version = \"*\", "))))))))
(native-inputs (list cmake-minimal pkg-config protobuf))
(inputs
(cons* alsa-lib
bzip2
dbus
fontconfig
freetype
libgit2-1.9
libx11
libxcb
libxkbcommon
openssl
sqlite
vulkan-loader
wayland
wayland-protocols
xcb-util-cursor
zlib
(list zstd "lib")
(cargo-inputs 'zed)))
(home-page "https://zed.dev")
(synopsis "High-performance, multiplayer code editor")
(description
"Zed is a high-performance, multiplayer code editor written in Rust.
Note: This build disables WebRTC (libwebrtc) support because libwebrtc is
not yet packaged in Guix. As a result, voice and video calls in collaborative
sessions are not available. Text-based collaboration, editing, and all other
features work normally.")
(license license:gpl3+)))
+71
View File
@@ -68,6 +68,7 @@
;;; Copyright © 2025 Matthew Elwin <elwin@northwestern.edu>
;;; Copyright © 2025 Roman Scherer <roman@burningswell.com>
;;; Copyright © 2026 Ingar <ingar@onionmail.info>
;;; Copyright © 2026 Nguyễn Gia Phong <cnx@loang.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -91,6 +92,7 @@
#:use-module (guix deprecation)
#:use-module (guix gexp)
#:use-module (guix download)
#:use-module (guix fossil-download)
#:use-module (guix git-download)
#:use-module (guix hg-download)
#:use-module (guix build-system cargo)
@@ -111,6 +113,7 @@
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
#:use-module (gnu packages crypto)
#:use-module (gnu packages curl)
@@ -3519,6 +3522,74 @@ output of the @code{git} command.")
modification time.")
(license license:bsd-2)))
(define-public libfossil
(let ((ci "914ed6dcaff13bf7209c9f27ccfb77c2d8fdf36b8d2133aa1590258b0708f035")
(revision "0"))
(package
(name "libfossil")
(version (fossil-version "0.6.0" revision ci))
(source
(origin
(method fossil-fetch)
(uri (fossil-reference
(uri "https://fossil.wanderinghorse.net/r/libfossil")
(check-in ci)))
(file-name (fossil-file-name name version))
(sha256
(base32 "0a0ycnnba2izmiqjj8hgvjgjdwhpn0x36lhy3vmw4j7bhny0df52"))
(patches (search-patches "libfossil-skip-amalgamation.patch"))
(modules '((guix build utils)
(ice-9 ftw)
(srfi srfi-26)))
(snippet
#~(begin
(define (delete-all-but directory . preserve)
(with-directory-excursion directory
(let* ((pred (negate (cut member <>
(cons* "." ".." preserve))))
(items (scandir "." pred)))
(for-each (cut delete-file-recursively <>) items))))
(delete-all-but "autosetup" "proj.tcl" "wh-common.tcl")
(delete-file-recursively "extsrc")
;; Re-create Fossil check-out manifests,
;; whose content does not affect in semantics.
(for-each
(lambda (file)
(call-with-output-file file (const #t)))
'("manifest" "manifest.uuid"))))))
(build-system gnu-build-system)
(arguments
(list #:configure-flags
#~(list "--no-debug" "--no-fnc" ;TODO: C++ and Tcl binding?
(string-append "--with-sqlite="
#$(this-package-input "sqlite"))
(string-append "--soname=libfossil.so"))
#:phases
#~(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key configure-flags #:allow-other-keys)
(apply invoke "autosetup"
(string-append "--prefix=" #$output)
configure-flags)))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(substitute* "sanity-checks.sh"
;; FIXME: these tests requires a Fossil checkout.
(("\\./f-sanity.*") "")
(("\\./f-parseparty.*") ""))
(setenv "LD_LIBRARY_PATH" (getcwd))
(invoke "./sanity-checks.sh")))))))
(native-inputs (list autosetup))
(inputs (list sqlite-next zlib))
(home-page "https://fossil.wanderinghorse.net/r/libfossil")
(synopsis "Unofficial Fossil SCM Library API")
(description
"@code{libfossil} is an alternative interface into Fossil repositories,
as opposed to a replacement for the core fossil application,
intended for new ways to access and manipulate fossil repositories.")
(license license:bsd-2))))
(define-public fnc
(package
(name "fnc")
+6 -3
View File
@@ -792,7 +792,7 @@ is based on Vim's builtin plugin support.")
(define-public neovim
(package
(name "neovim")
(version "0.11.5")
(version "0.12.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -801,7 +801,7 @@ is based on Vim's builtin plugin support.")
(file-name (git-file-name name version))
(sha256
(base32
"1b524vi44gkcsyy8w4jggvprwdsgy0gjprgxpyhh0dmqm47c0c48"))
"1lydhvm4abh2y3336nyqqbwiszllnw63c98wdna2mrhi44gfh2jf"))
(patches (search-patches "neovim-tree-sitter-grammar-path.patch"))))
(build-system cmake-build-system)
(arguments
@@ -1017,7 +1017,10 @@ With the package comes a plugin to use vifm as a vim file selector.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0k98c0i14z3adx6l4ncf2zmzk9aykqkdnws6qw4m0yj5z61zh6av"))))
(base32 "0k98c0i14z3adx6l4ncf2zmzk9aykqkdnws6qw4m0yj5z61zh6av"))
;; This patch can be removed when the next pynvim version after 0.6.0 is
;; released.
(patches (search-patches "python-pynvim-fix-test-command-error.patch"))))
(build-system pyproject-build-system)
(native-inputs
(list neovim
+2 -2
View File
@@ -2560,7 +2560,7 @@ Open Container Initiative (OCI) image layout and its tagged images.")
(define-public skopeo
(package
(name "skopeo")
(version "1.22.1")
(version "1.22.2")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2569,7 +2569,7 @@ Open Container Initiative (OCI) image layout and its tagged images.")
(file-name (git-file-name name version))
(sha256
(base32
"0h32h02dvh6dx587idqi11938k293kawvd4d3xk5hwdi6cmpabri"))))
"05ag8rj2w6p78llhiwb2h460nf0vn7mppaara6l1dcb84sycj8jg"))))
(build-system gnu-build-system)
(native-inputs
(list go-1.24
+2 -2
View File
@@ -3863,7 +3863,7 @@ using @command{dmenu}.")
(define-public fuzzel
(package
(name "fuzzel")
(version "1.14.0")
(version "1.14.1")
(home-page "https://codeberg.org/dnkl/fuzzel")
(source (origin
(method git-fetch)
@@ -3871,7 +3871,7 @@ using @command{dmenu}.")
(file-name (git-file-name name version))
(sha256
(base32
"1fx1y430iwdjzba1rb6m56k3phvjn8di5v7d6rnxdqvm30085vpl"))))
"1bk49fq66a0fr9danpj7vnq3dcfmrw1hdcc2ygqkld9z5lv1h5an"))))
(build-system meson-build-system)
(arguments
(list #:build-type "release"
+12 -10
View File
@@ -895,16 +895,18 @@ requirements.
If @var{config} contains SMB mounts, adds samba-nmbd and samba-winbindd to the
service requirements.
"
(delete-duplicates
(fold
(lambda (fs-type acc)
(cond
((string= "nfs" fs-type)
(append acc '(rpc.statd)))
((string= "smb" fs-type)
(append acc '(samba-nmbd samba-winbindd)))))
'()
(map autofs-map-entry-type (autofs-configuration->raw-entries config)))))
(fold
(lambda (fs-type acc)
(cond
((string= "nfs" fs-type)
(append acc '(rpc.statd)))
((string= "smb" fs-type)
(append acc '(samba-nmbd samba-winbindd)))
(else acc)))
'()
(delete-duplicates
(map autofs-map-entry-type
(autofs-configuration->raw-entries config)))))
(define (autofs-shepherd-service config)
(match-record config <autofs-configuration> (autofs timeout)
+59
View File
@@ -0,0 +1,59 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2025 Nguyễn Gia Phong <cnx@loang.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; Commentary:
;;;
;;; This is the build-side support code of (guix fossil-download).
;;; It allows a Fossil repository to be opened at a specific revision.
;;;
;;; Code:
(define-module (guix build fossil)
#:use-module (guix build utils)
#:use-module (ice-9 match)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (web uri)
#:export (fossil-fetch))
(define* (fossil-fetch uri check-in file #:key (fossil-command "fossil"))
"Fetch CHECK-IN from URI into DIRECTORY. CHECK-IN must be a valid
Fossil check-in name. Return #t on success, else raise an exception."
(setenv "FOSSIL_HOME" "/tmp")
(invoke fossil-command
"tarball" check-in file "-R"
(case (uri-scheme (string->uri-reference uri))
((file https) ;clone the repository first
(match-let ((repository (simple-format #f "/tmp/~a.fossil"
(basename file ".tar.gz")))
((input . output) (pipe)))
;; Trust the TLS certificate of the server,
;; since we'll later verify the tarball's checksum.
(display "y" output)
(close-port output)
(with-input-from-port input
(cut invoke fossil-command "clone"
"--no-open" "--once" uri repository))
(close-port input)
repository))
((ssh) ;TODO: authentication for SSH
(let ((message (string-append "fetching a Fossil repository through SSH"
" is not supported: " uri)))
(raise (condition (&message (message message))))))
((#f) uri)))) ;local file
+125
View File
@@ -0,0 +1,125 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2025 Nguyễn Gia Phong <cnx@loang.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; Commentary:
;;;
;;; An <origin> method that open Fossil checkout at a specific version.
;;; The repository URI and version are specified
;;; with a <fossil-reference> object.
;;;
;;; Code:
(define-module (guix fossil-download)
#:use-module (guix build-system)
#:use-module (guix gexp)
#:use-module (guix modules)
#:use-module (guix monads)
#:use-module (guix packages)
#:use-module (guix records)
#:use-module (guix store)
#:use-module (ice-9 match)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (web uri)
#:export (fossil-reference
fossil-reference?
fossil-reference-uri
fossil-reference-check-in
fossil-fetch
fossil-version
fossil-file-name))
(define-record-type* <fossil-reference>
fossil-reference make-fossil-reference fossil-reference?
(uri fossil-reference-uri)
(check-in fossil-reference-check-in))
(define (fossil-version version revision check-in)
"Return the version string for packages using fossil-download."
;; fossil-version is almost exclusively executed while modules
;; are being loaded, leading to any errors hiding their backtrace.
;; Avoid the mysterious error "Value out of range 0 to N: 10"
;; when the check-in ID is too short, which can happen, for example,
;; when the user swapped the revision and check-in arguments by mistake.
(when (< (string-length check-in) 10)
(raise
(condition
(&message (message "fossil-version: check-in ID unexpectedly short")))))
(string-append version "-" revision "." (string-take check-in 10)))
(define (fossil-file-name name version)
"Return the file-name for packages using fossil-download."
(string-append name "-" version ".tar.gz"))
(define* (fossil-fetch ref hash-algo hash
#:optional name
#:key (system (%current-system))
(guile (default-guile))
(fossil (@* (gnu packages version-control)
fossil)))
"Return a fixed-output derivation that fetches REF, a <fossil-reference>
object. The output is expected to have recursive hash HASH of type
HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
(let* ((modules (source-module-closure '((guix build fossil)
(guix build download)
(guix build download-nar))))
(uri (fossil-reference-uri ref))
(scheme-of-uri (uri-scheme (string->uri-reference uri)))
(check-in (fossil-reference-check-in ref))
(tarball-name (or name (fossil-file-name (basename uri) check-in)))
(tarball-url (and (eq? 'https scheme-of-uri)
(simple-format #f "~a/tarball/~a/~a"
uri check-in tarball-name)))
(guile-json (@* (gnu packages guile) guile-json-4))
(gnutls (@* (gnu packages tls) guile-gnutls))
(guile-lzlib (@* (gnu packages guile) guile-lzlib))
(build
(with-imported-modules modules
(with-extensions (list guile-json gnutls ;for (guix swh)
guile-lzlib)
#~(begin
(use-modules (guix build fossil)
((guix build download)
#:select (download-method-enabled? url-fetch))
(guix build download-nar))
(or (and (download-method-enabled? 'upstream)
(or (and #$tarball-url
(url-fetch #$tarball-url #$output))
(fossil-fetch
#$(if scheme-of-uri uri (local-file uri))
#$check-in
#$output
#:fossil-command
#+(file-append fossil "/bin/fossil"))))
(and (download-method-enabled? 'nar)
(download-nar #$output))))))))
(mlet %store-monad ((guile (package->derivation guile system)))
(gexp->derivation tarball-name build
#:leaked-env-vars '("http_proxy" "https_proxy"
"COLUMNS" "USER")
#:env-vars (match (getenv "GUIX_DOWNLOAD_METHODS")
(#f '())
(value
`(("GUIX_DOWNLOAD_METHODS" . ,value))))
#:system system
#:hash-algo hash-algo
#:hash hash
#:recursive? #t
#:guile-for-build guile
#:local-build? #t))))
+4
View File
@@ -2,6 +2,7 @@
;;; Copyright © 2012-2013, 2015-2020, 2022, 2025 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net>
;;; Copyright © 2026 jgart <jgart@dismail.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -140,6 +141,9 @@ current one."
(option '("vacuum-database") #f #f
(lambda args
(unless (zero? (getuid))
(leave
(G_ "vacuuming the database can only be used by root~%")))
(vacuum-database)
(exit 0)))