Compare commits

..

648 Commits

Author SHA1 Message Date
jopejoe1
871b9fd269 update references for 25.11
(cherry picked from commit 3badd7b688)
2025-11-30 17:49:22 +01:00
Maximilian Bosch
637b03c85f [Backport release-25.11] spotify: 1.2.63.394.g126b0d89 -> 1.2.74.477.g3be53afe (#466409) 2025-11-30 16:43:12 +00:00
Maximilian Bosch
386c68998c [Backport release-25.11] meshcentral: 1.1.53 -> 1.1.54 (#466413) 2025-11-30 16:43:09 +00:00
Maximilian Bosch
928d841874 [Backport release-25.11] matrix-synapse: 1.142.1 -> 1.143.0 (#466494) 2025-11-30 16:42:26 +00:00
Maximilian Bosch
05e38dcb0a [Backport release-25.11] nixos/nextcloud: Fix services.nextcloud.settings.mail_smtpstreamoptions option type (#466415) 2025-11-30 16:42:21 +00:00
Aleksana
e9f8538978 [Backport release-25.11] treewide: fix missing dollar symbol when referencing version (#466581) 2025-11-30 14:52:16 +00:00
aleksana
8a1baabcc6 treewide: fix missing dollar symbol when referencing version
(cherry picked from commit 2ac15cf667)
2025-11-30 14:45:21 +00:00
nixpkgs-ci[bot]
7905ee2abf [Backport release-25.11] fflogs: 8.17.85 -> 8.17.101 (#466263) 2025-11-30 13:11:18 +00:00
nixpkgs-ci[bot]
9fe2805a71 [Backport release-25.11] local-content-share: 35 -> 36 (#466528) 2025-11-30 13:11:16 +00:00
Aleksana
e872fd2228 [Backport release-25.11] neothesia: pin ffmpeg to ffmpeg_7 (#466550) 2025-11-30 12:38:57 +00:00
Naxdy
e7509ac32b neothesia: pin ffmpeg to ffmpeg_7
fixes a build issue caused by bumping to ffmpeg 8.0

(cherry picked from commit 24943fa78d)
2025-11-30 12:24:52 +00:00
Niklas Korz
cfa939a432 [Backport release-25.11] zed-editor: 0.214.6 -> 0.214.7 (#466519) 2025-11-30 11:57:34 +00:00
Aleksana
3502abb89b [Backport release-25.11] {ebtks,n3,inormalize}: update and fix build with CMake >= 4 (#466531) 2025-11-30 11:05:42 +00:00
Aleksana
a62fea28cb [Backport release-25.11] pywal16: 3.8.11 -> 3.8.12 (#466530) 2025-11-30 10:54:29 +00:00
Ben Darwin
dbc4502919 inormalize: unstable-2014-10-21 -> 1.2.00-unstable-2023-01-19
(cherry picked from commit 8f29f5abb6)
2025-11-30 10:52:08 +00:00
Ben Darwin
bef541f84f n3: unstable-2018-08-09 -> 1.12.00-unstable-2023-01-19
(cherry picked from commit 65222790e0)
2025-11-30 10:52:08 +00:00
Ben Darwin
9eb632b96f ebtks: unstable-2017-09-23 -> 1.6.40-unstable-2025-05-06
(cherry picked from commit 6f79134a20)
2025-11-30 10:52:07 +00:00
Ben Darwin
3cf424d5c0 arguments: unstable-2015-11-30 -> 1.4.60-unstable-2023-01-18
(cherry picked from commit b0939cee74)
2025-11-30 10:52:07 +00:00
Aleksana
9000b3c875 [Backport release-25.11] nixos/frp: guard server-only systemd options (#466527) 2025-11-30 10:48:03 +00:00
Aleksana
2ca09c3c7b [Backport release-25.11] nixos/anki-sync-server: fix NixOS test (#466524) 2025-11-30 10:47:38 +00:00
Aleksana
2a8bedcf14 [Backport release-25.11] pythonPackages.dvc: fix typo (#466521) 2025-11-30 10:47:29 +00:00
Aleksana
7cc57dc6f0 [Backport release-25.11] gpio-utils: fix makeFlags (#466523) 2025-11-30 10:47:22 +00:00
Moraxyc
ec5869b0ce pywal16: 3.8.11 -> 3.8.12
(cherry picked from commit 14d5f64412)
2025-11-30 10:46:46 +00:00
R. Ryantm
8c9742b7ff local-content-share: 35 -> 36
(cherry picked from commit 4a16341a00)
2025-11-30 10:35:40 +00:00
zeus
8ac42e95c4 nixos/frp: satisfy treefmt
(cherry picked from commit 0ced15beb8)
2025-11-30 10:32:37 +00:00
zeus
bdfa501d06 nixos/frp: format
(cherry picked from commit 79e17b64a8)
2025-11-30 10:32:37 +00:00
zeus
61a402a7e5 nixos/frp: guard server-only systemd options
(cherry picked from commit 9c9b748d4f)
2025-11-30 10:32:37 +00:00
Arnout Engelen
13388b380d nixos/anki-sync-server: fix NixOS test
(cherry picked from commit 6ad70c1746)
2025-11-30 10:30:20 +00:00
Majiir Paktu
356dff7aa6 gpio-utils: fix makeFlags
(cherry picked from commit 6ae51273dd)
2025-11-30 10:29:39 +00:00
Aliaksandr
72efb17fcb pythonPackages.dvc: fix typo
(cherry picked from commit 90c3994f3a)
2025-11-30 10:28:25 +00:00
botnk
8bbbbc3d53 zed-editor: 0.214.6 -> 0.214.7
Changelog: https://github.com/zed-industries/zed/releases/tag/v0.214.7
(cherry picked from commit f0a64c3159)
2025-11-30 10:23:56 +00:00
Leona Maroni
d542db7453 [Backport release-25.11] discord-screenaudio: drop (#466510) 2025-11-30 09:18:54 +00:00
Robert Schütz
5cf83de9d2 discord-screenaudio: drop
(cherry picked from commit e923fe910f)
2025-11-30 09:14:34 +00:00
nixpkgs-ci[bot]
54f09efd2c [Backport release-25.11] vacuum-tube: 1.4.0 -> 1.4.1 (#466501) 2025-11-30 08:31:16 +00:00
R. Ryantm
e0f9694612 vacuum-tube: 1.4.0 -> 1.4.1
(cherry picked from commit 3da9c75c49)
2025-11-30 08:05:42 +00:00
transcaffeine
f6c38cc87b matrix-synapse: 1.142.1 -> 1.143.0
Release notes: https://github.com/element-hq/synapse/releases/tag/v1.143.0
Full changelog: https://github.com/element-hq/synapse/compare/v1.142.1...v1.143.0

(cherry picked from commit 8a7822e536)
2025-11-30 07:15:38 +00:00
Vincent Laporte
bbec6ac56b [Backport release-25.11] ocamlPackages.{mirage-bootvar-unix,mirage-device,samplerate,semaphore-compat,trie}: small cleaning (#466407) 2025-11-30 06:32:17 +00:00
Winter
0ee3f3123f [Backport release-25.11] nodePackages: discourage in documentation (#466486) 2025-11-30 05:28:15 +00:00
Tomodachi94
ff52f8241e nodePackages: update docs to discourage adding new packages
(cherry picked from commit a8ea7b38da)
2025-11-30 05:23:48 +00:00
Tomodachi94
43a7b34fad doc/javascript: move nodePackages information back to README.md
Adding new packages here is discouraged, for reasons enumerated in
https://github.com/NixOS/nixpkgs/issues/229475, so let's move this
(mostly developer-facing) documentation back into its original location
in pkgs/development/node-packages/README.md.

(cherry picked from commit 7bf3aa9d0d)
2025-11-30 05:23:48 +00:00
dotlambda
da7e49844b [Backport release-25.11] nixos/miniflux: don't require DATABASE_URL if not createDatabaseLocally (#466476) 2025-11-30 04:43:20 +00:00
Adam C. Stephens
6bf2bfa273 nixos/miniflux: don't require DATABASE_URL if not createDatabaseLocally
For example, if providing through EnvironmentFile due to secrets then we
need to allow the env to build without this config.

Fixes this error:

    error: The option `services.miniflux.config.DATABASE_URL' was accessed but has no value defined. Try setting the option.

(cherry picked from commit fd3a8eddcb)
2025-11-30 04:30:59 +00:00
nixpkgs-ci[bot]
0b9b52b21c [Backport release-25.11] bottles-unwrapped: 52.1 -> 60.1 (#466447) 2025-11-30 02:57:59 +00:00
Aleksana
592d1d305d [Backport release-25.11] calligraplan: fix build for CMake 4 (#466453) 2025-11-30 02:05:22 +00:00
Aleksana
cb92637209 [Backport release-25.11] libirc: fix build for cmake4 (#466452) 2025-11-30 02:05:18 +00:00
naash
89d28f807d calligraplan: fix build for CMake 4
(cherry picked from commit 1e72a6b3bc)
2025-11-30 01:52:52 +00:00
Jappie3
e1d49b3de5 libirc: fix build for cmake4
(cherry picked from commit 385979548c)
2025-11-30 01:52:22 +00:00
Gliczy
9031f0ac8b bottles: add support for wine-wayland
(cherry picked from commit acff77306f)
2025-11-30 01:47:38 +00:00
Gliczy
bf1cc1bde8 bottles-unwrapped: 52.1 -> 60.1
(cherry picked from commit a66fa14050)
2025-11-30 01:47:37 +00:00
Aleksana
42c41ebb7e [Backport release-25.11] binserve: mark vulnerable (#466445) 2025-11-30 01:43:18 +00:00
Aleksana
c830ab261d [Backport release-25.11] telegram-desktop: add missing runtime geo deps (#466439) 2025-11-30 01:42:33 +00:00
Aleksana
87a6b5cc6f [Backport release-25.11] {encfs,pdfsam-basic,razergenie,tytools,vc}: migrate to by-name (#466418) 2025-11-30 01:34:05 +00:00
Michael Daniels
3f59e08b91 binserve: mark vulnerable
See https://redirect.github.com/mufeedvh/binserve/issues/49

Web servers are quite security-sensitive, so we should warn our users that
this one is unmaintained.

(cherry picked from commit dbacbfb117)
2025-11-29 20:32:09 -05:00
Ilya Fedin
137e8e78e2 telegram-desktop: add missing runtime geo deps
This solves the following error when opening location picker:

```
Could not load 'libgeoclue-2.so.0'! Error: libgeoclue-2.so.0: cannot open shared object file: No such file or directory
```

(cherry picked from commit b7e4c0b382)
2025-11-30 01:20:11 +00:00
Aleksana
a9847c0834 [Backport release-25.11] multipass: remove unmaintained package and module (#466436) 2025-11-30 01:17:31 +00:00
Adam C. Stephens
b7d8b699fc multipass: remove unmaintained package and module
(cherry picked from commit 71cb937c51)
2025-11-30 01:11:11 +00:00
nixpkgs-ci[bot]
d0a3530afb [Backport release-25.11] rumdl: 0.0.181 -> 0.0.185 (#466424) 2025-11-30 00:43:53 +00:00
Seth Flynn
fb7b12a191 [Backport release-25.11] nixos/doc/rl-2511: cleanup (#466422) 2025-11-29 23:50:53 +00:00
R. Ryantm
ddfffb85e5 rumdl: 0.0.181 -> 0.0.185
(cherry picked from commit cc5d956715)
2025-11-29 23:46:50 +00:00
Seth Flynn
479d574bf0 nixos/doc/rl-2511: move nixpkgs entries to nixpkgs manual
(cherry picked from commit 51afe72e52)
2025-11-29 23:39:41 +00:00
Seth Flynn
2f932b1fcc nixos/doc/rl-2511: cleanup
This includes grammar/spelling corrections, re-categorization of some
entries, formatting changes, and rewordings

(cherry picked from commit 0eea1c75d3)
2025-11-29 23:39:40 +00:00
dotlambda
44398774bf [Backport release-25.11] ceph: remove unused dependency from httpcore (#466357) 2025-11-29 23:37:01 +00:00
Adam C. Stephens
63b44bac09 [Backport release-25.11] mimir: 3.0.0 -> 3.0.1 (#466387) 2025-11-29 23:26:43 +00:00
Gaétan Lepage
c4f00dedc5 [Backport release-25.11] pyrefly: skip failing test till upstream fix (#466419) 2025-11-29 23:24:45 +00:00
cybardev
a085808bbd pyrefly: skip failing test till upstream fix
(cherry picked from commit c03cb83e9d)
2025-11-29 23:18:54 +00:00
Gaétan Lepage
73ed51f8a3 [Backport release-25.11] pyrefly: add versionProgramArg (#466416) 2025-11-29 23:16:56 +00:00
Michael Daniels
e2e98ff4ef {encfs,pdfsam-basic,razergenie,tytools,vc}: migrate to by-name
(cherry picked from commit 001afb80b7)
2025-11-29 23:10:12 +00:00
Gaetan Lepage
54581206e9 pyrefly: add versionProgramArg
(cherry picked from commit f050ec84be)
2025-11-29 23:08:22 +00:00
provokateurin
5f63e1e64a nixos/nextcloud: Fix services.nextcloud.settings.mail_smtpstreamoptions option type
The option is not a list, but an associative array: https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/email_configuration.html#how-can-i-send-mail-using-self-signed-certificates-or-use-starttls-with-self-signed-certificates

(cherry picked from commit 178b07716d)
2025-11-29 23:08:02 +00:00
Gaétan Lepage
1c88dfb152 [Backport release-25.11] pyrefly: 0.34.0 -> 0.43.1 (#466410) 2025-11-29 23:05:10 +00:00
R. Ryantm
c56e957816 meshcentral: 1.1.53 -> 1.1.54
(cherry picked from commit b9fcc45027)
2025-11-29 23:04:43 +00:00
cybardev
38cecfaa14 pyrefly: 0.34.0 -> 0.43.1
(cherry picked from commit 733d193c29)
2025-11-29 22:56:50 +00:00
Jaco Malan
5dc4457c80 spotify: 1.2.63.394.g126b0d89 -> 1.2.74.477.g3be53afe
(cherry picked from commit b681aee6a9)
2025-11-29 22:56:41 +00:00
Vincent Laporte
72cd9dac60 ocamlPackages.trie: small cleaning
(cherry picked from commit d66b9b57a0)
2025-11-29 22:29:31 +00:00
Vincent Laporte
7c46b3ed8a ocamlPackages.semaphore-compat: small cleaning
(cherry picked from commit 6bfa08651e)
2025-11-29 22:29:30 +00:00
Vincent Laporte
cb633495d6 ocamlPackages.samplerate: small cleaning
(cherry picked from commit 6716139151)
2025-11-29 22:29:30 +00:00
Vincent Laporte
83b1fd5b46 ocamlPackages.mirage-device: small cleaning
(cherry picked from commit 2ba2bb8170)
2025-11-29 22:29:30 +00:00
Vincent Laporte
f4102b9808 ocamlPackages.mirage-bootvar-unix: small cleaning
(cherry picked from commit 7ea00b11c0)
2025-11-29 22:29:30 +00:00
nixpkgs-ci[bot]
e0e385b4f9 [Backport release-25.11] tutanota-desktop: 314.251111.0 -> 315.251125.0 (#466383) 2025-11-29 22:14:12 +00:00
dotlambda
9d5cb93ceb [Backport release-25.11] python313Packages.splinter: fix build with lxml 6 (#466391) 2025-11-29 22:01:53 +00:00
Robert Scott
c14687c541 [Backport release-25.11] python313Packages.optype: 0.14.0 -> 0.14.0-unstable-2025-11-10 (#465001) 2025-11-29 21:42:18 +00:00
Tom Hunze
895b5f732b python313Packages.splinter: modernize
(cherry picked from commit 98d1634423)
2025-11-29 21:39:38 +00:00
Tom Hunze
3c2193b393 python313Packages.splinter: fix build with lxml 6
lxml 6 doesn't find a `<body>` tag via the XPath expression `//body`
anymore when the parsed HTML doesn't contain any tags at all. This
causes some of splinter's tests to fail when lxml 6 is used.

(cherry picked from commit b055793dde)
2025-11-29 21:39:38 +00:00
Adam C. Stephens
5e3bbcfc90 mimir: 3.0.0 -> 3.0.1
Changelog: https://github.com/grafana/mimir/releases/tag/mimir-3.0.1
(cherry picked from commit e95261d831)
2025-11-29 21:27:34 +00:00
Mauricio Collares
4497abeca3 [Backport release-25.11] giac: disable libc++ hardening (#466379) 2025-11-29 21:25:54 +00:00
R. Ryantm
bdfc206fac tutanota-desktop: 314.251111.0 -> 315.251125.0
(cherry picked from commit a5dc2ce7b0)
2025-11-29 21:25:30 +00:00
Seth Flynn
9151a45443 [Backport release-25.11] doc/rl-2511: cleanup (#466378) 2025-11-29 21:22:23 +00:00
George Huebner
5eaedc38d6 giac: disable libc++ hardening
(cherry picked from commit aa528432f4)
2025-11-29 21:21:26 +00:00
dotlambda
6a09811633 [Backport release-25.11] tcp_wrappers: 7.6.q-33 -> 7.6.q-36 and fetch patches from salsa (#466371) 2025-11-29 21:18:47 +00:00
Seth Flynn
c7a75b0dc9 doc/rl-2511: move nixos entries to nixos release notes
(cherry picked from commit 931c0373d0)
2025-11-29 21:16:25 +00:00
Seth Flynn
f22a1714f7 doc/rl-2511: cleanup
This includes a few grammar corrections, formatting changes, and
rewordings

(cherry picked from commit b9f19184d8)
2025-11-29 21:16:25 +00:00
conatsera
ce32e161b8 tcp_wrappers: 7.6.q-33 -> 7.6.q-36 and fetch patches from salsa
(cherry picked from commit 1df3a50dbb)
2025-11-29 20:53:26 +00:00
Robert Schütz
71a3190273 ceph: remove unused dependency from httpcore
This fixes the build of ceph and can be reverted once
https://github.com/NixOS/nixpkgs/pull/462435 reaches master.

(cherry picked from commit ea34eac61b)
2025-11-29 20:16:40 +00:00
Gaétan Lepage
953e37fded [Backport release-25.11] cudaPackages.tensorrt: 10.9.0 -> 10.14.1 (for non-Jetson and Thor) (#465955) 2025-11-29 19:17:13 +00:00
Gaétan Lepage
83537ecac4 [Backport release-25.11] cudaPackages.cuda_nvcc: wrap binary so NVCC can always find compiler (#465957) 2025-11-29 19:17:08 +00:00
Sefa Eyeoglu
0c8ca2a41d [Backport release-25.11] pnpm_10: 10.23.0 -> 10.24.0 (#465959) 2025-11-29 19:02:56 +00:00
numinit
94508e7a4e [Backport release-25.11] s2geometry: fix build with abseil-cpp_202407 pin (#466326) 2025-11-29 18:40:35 +00:00
aware70
a9f95be452 s2geometry: fix build with abseil-cpp_202407 pin
(cherry picked from commit 8d882e002f)
2025-11-29 17:48:56 +00:00
Adam C. Stephens
7de4488868 [Backport release-25.11] incus: 6.19.0 -> 6.19.1 (#466314) 2025-11-29 17:48:41 +00:00
Adam C. Stephens
0320155401 incus: 6.19.0 -> 6.19.1
Changelog: https://github.com/lxc/incus/releases/tag/v6.19.1
(cherry picked from commit 6a26d0bf19)
2025-11-29 16:57:43 +00:00
Luke Granger-Brown
7ff3d770e1 [Backport release-25.11] python3Packages.hg-evolve: 11.1.9 -> 11.1.10 (#466294) 2025-11-29 15:53:25 +00:00
R. Ryantm
8eb2eb6bfd python3Packages.hg-evolve: 11.1.9 -> 11.1.10
(cherry picked from commit 660623876f)
2025-11-29 15:40:25 +00:00
Adam C. Stephens
673d2a9934 [Backport release-25.11] elixir_1_19: 1.19.3 -> 1.19.4 (#466153) 2025-11-29 15:13:29 +00:00
Adam C. Stephens
fb2ecdd788 [Backport release-25.11] kanidm_1_8: 1.8.1 -> 1.8.3 (#466098) 2025-11-29 15:12:18 +00:00
Adam C. Stephens
491f657c71 [Backport release-25.11] incus: 6.18.0 -> 6.19.0 (#466285) 2025-11-29 15:10:57 +00:00
Bruno Bigras
1276c414f3 incus: 6.18.0 -> 6.19.0
(cherry picked from commit 0886a04cd9)
2025-11-29 14:48:53 +00:00
Aleksana
b6fd276019 [Backport release-25.11] openboardview: 9.95.0 -> 9.95.2; unbreak CI (#466277) 2025-11-29 14:21:36 +00:00
Felix Singer
194892eacd openboardview: 9.95.0 -> 9.95.2
Signed-off-by: Felix Singer <felixsinger@posteo.net>
(cherry picked from commit ece3cb2677)
2025-11-29 14:14:21 +00:00
Aleksana
6cefa2c4bc [Backport release-25.11] preload: drop package/module (#466272) 2025-11-29 14:09:24 +00:00
Aleksana
925a2bad28 [Backport release-25.11] btanks: drop (#466275) 2025-11-29 14:09:14 +00:00
Marcin Serwin
9fa71c61e6 btanks: drop
Fails to build, no upstream updates since 2010, no nixpkgs maintainer.

Signed-off-by: Marcin Serwin <marcin@serwin.dev>
(cherry picked from commit 301f71e03f)
2025-11-29 14:00:06 +00:00
Aleksana
ea89d6efec [Backport release-25.11] niri: 25.08 -> 25.11 (#466265) 2025-11-29 13:58:30 +00:00
éclairevoyant
cf68efe3af preload: drop
fixes #465407

(cherry picked from commit 184a093b0b)
2025-11-29 13:57:47 +00:00
éclairevoyant
b3bb2d9e63 nixos/preload: drop
(cherry picked from commit 9482ff9cb0)
2025-11-29 13:57:47 +00:00
sternenseemann
02878ab0e3 niri: 25.08 -> 25.11
https://github.com/YaLTeR/niri/releases/tag/v25.11
(cherry picked from commit e28d3257f6)
2025-11-29 13:26:44 +00:00
ash
1aa4886827 fflogs: 8.17.85 -> 8.17.101
(cherry picked from commit 3a0c2bb120)
2025-11-29 13:18:33 +00:00
rewine
036adbcbe5 [Backport release-25.11] vivaldi: 7.7.3851.54 -> 7.7.3851.56 (#466220) 2025-11-29 13:18:27 +00:00
Aleksana
8144c20658 [Backport release-25.11] gitlogue: 0.3.0 -> 0.4.1 (#466259) 2025-11-29 13:13:24 +00:00
R. Ryantm
6efa0cd6f5 gitlogue: 0.3.0 -> 0.4.1
(cherry picked from commit 46e76d70c6)
2025-11-29 13:02:35 +00:00
Aleksana
45f36d652f [Backport release-25.11] xarchiver: use xz and zstd from nixpkgs in env path instead of use it from host (#466247) 2025-11-29 12:48:46 +00:00
Minegame YTB
d58f63bd9c xarchiver: use xz and zstd from nixpkgs in env path instead of use it from host
(cherry picked from commit aa84102fcd)
2025-11-29 12:33:39 +00:00
Bobby Rong
72bdea2fac [Backport release-25.11] gnome-control-center: 49.2.1 → 49.2.2 (#466246) 2025-11-29 12:30:35 +00:00
Bobby Rong
59e12f6159 gnome-control-center: 49.2.1 → 49.2.2
https://gitlab.gnome.org/GNOME/gnome-control-center/-/compare/49.2.1...49.2.2
(cherry picked from commit 547ba39171)
2025-11-29 12:26:02 +00:00
nixpkgs-ci[bot]
fe5a4fcdb9 [Backport release-25.11] dprint-plugins.dprint-plugin-biome: 0.11.6 -> 0.11.7 (#466200) 2025-11-29 11:54:28 +00:00
Bobby Rong
d062649415 [Backport release-25.11] glycin: 2.0.5 -> 2.0.7 (#466194) 2025-11-29 11:41:15 +00:00
Florian Klink
299d6ebf1b [Backport release-25.11] oauth2c: 1.17.2 -> 1.18.0 (#466232) 2025-11-29 11:39:17 +00:00
Luke Granger-Brown
a39bb5e36a [Backport release-25.11] envoy: 1.35.2 -> 1.36.2 (#466145) 2025-11-29 11:38:44 +00:00
Aleksana
91eced6545 [Backport release-25.11] code-cursor: 2.0.64 -> 2.1.39 (#466230) 2025-11-29 11:23:18 +00:00
Aleksana
b366ca828d [Backport release-25.11] nixos/roundcube: fix wrong error log location (#466229) 2025-11-29 11:23:05 +00:00
Aleksana
1251de7243 [Backport release-25.11] python313Packages.pylit: drop (#466228) 2025-11-29 11:23:02 +00:00
R. Ryantm
db2c56d76c oauth2c: 1.17.2 -> 1.18.0
(cherry picked from commit adbf9c12ff)
2025-11-29 11:18:52 +00:00
Sizhe Zhao
029ae610c5 code-cursor: 2.0.64 -> 2.1.39
(cherry picked from commit 282106beed)
2025-11-29 11:16:16 +00:00
Gary Guo
903906b891 nixos/roundcube: fix wrong error log location
'stderr' here means log to a file named 'stderr', and thus /stderr is
being created. This probably is intended to be /dev/stderr.

(cherry picked from commit 5e58fb0ba5)
2025-11-29 11:16:12 +00:00
Tom Hunze
2a5b003651 python313Packages.pylit: drop
This package has been broken since August 2025 [1] and its last release
was in July 2022 [2].

[1] https://hydra.nixos.org/build/314261033
[2] https://codeberg.org/milde/pylit/tags

(cherry picked from commit ccced07889)
2025-11-29 11:15:24 +00:00
Aleksana
0968807b46 [Backport release-25.11] nixos/undervolt: fix argument conversion (#466223) 2025-11-29 11:14:02 +00:00
Aleksana
26f38d6208 [Backport release-25.11] treewide: fix wrong github releases/tag page url (#466224) 2025-11-29 11:11:56 +00:00
Bobby Rong
37bcf17e61 [Backport release-25.11] vte: 0.82.1 → 0.82.2, backport fix for backspace in QEMU (#465635) 2025-11-29 11:11:37 +00:00
Florian Klink
c494bdfb8d [Backport release-25.11] netron: 8.7.3 -> 8.7.5 (#465981) 2025-11-29 11:09:34 +00:00
Aleksana
a7a6a5f8da [Backport release-25.11] contour: fix build on darwin (#466210) 2025-11-29 11:02:12 +00:00
aleksana
103142d2f0 treewide: fix wrong github releases/tag page url
(cherry picked from commit 453e068ca0)
2025-11-29 10:56:49 +00:00
Aleksana
4d400448cd [Backport release-25.11] shikane: Install all man pages in ./build/man/ (#466221) 2025-11-29 10:55:42 +00:00
Lukas Wurzinger
2602b909cb nixos/undervolt: fix argument conversion
(cherry picked from commit 6433d954da)
2025-11-29 10:53:46 +00:00
Wolfgang Walther
5bd523cd07 [Backport release-25.11] postgresqlPackages.plpgsql_check: 2.8.3 -> 2.8.5 (#466216) 2025-11-29 10:50:32 +00:00
Wolfgang Walther
668e60a9b0 [Backport release-25.11] ci/github-script/commits: clarify commit hash not found message (#466219) 2025-11-29 10:49:39 +00:00
Hendrik Wolff
454ea1b74d shikane: Install all man pages in ./build/man/
(cherry picked from commit 569ca5d779)
2025-11-29 10:49:12 +00:00
R. Ryantm
6289f7a081 vivaldi: 7.7.3851.54 -> 7.7.3851.56
(cherry picked from commit 22b7318c92)
2025-11-29 10:48:02 +00:00
Michael Daniels
4efc382873 ci/github-script/commits: clarify commit hash not found message
Per matrix.

(cherry picked from commit 3b4575c8c9)
2025-11-29 10:46:54 +00:00
R. Ryantm
75c77d4a8d postgresqlPackages.plpgsql_check: 2.8.3 -> 2.8.5
(cherry picked from commit 5de532a4ab)
2025-11-29 10:43:35 +00:00
moni-dz
ae90bba15e contour: fix build on darwin
(cherry picked from commit 92b163cbc9)
2025-11-29 10:18:08 +00:00
nixpkgs-ci[bot]
384f05fd5d [Backport release-25.11] hmcl: 3.7.6 -> 3.8.1 (#466205) 2025-11-29 10:02:44 +00:00
Moraxyc
9115e41f8c hmcl: 3.7.6 -> 3.8.1
(cherry picked from commit ee53e87c93)
2025-11-29 09:57:50 +00:00
R. Ryantm
a83bfd0bec dprint-plugins.dprint-plugin-biome: 0.11.6 -> 0.11.7
(cherry picked from commit f085fde0b4)
2025-11-29 09:31:54 +00:00
Leona Maroni
61160fa4f5 [Backport release-25.11] percona-server_8_0: 8.0.43-34 -> 8.0.44-35 (#466193) 2025-11-29 09:27:18 +00:00
Gwendal Beaumont
264a395e7f glycin-loaders: 2.0.5 -> 2.0.7
https://gitlab.gnome.org/GNOME/glycin/-/compare/2.0.5...2.0.7
(cherry picked from commit f1b99c1479)
2025-11-29 09:01:50 +00:00
Gwendal Beaumont
42e18215c4 libglycin: 2.0.5 -> 2.0.7
https://gitlab.gnome.org/GNOME/glycin/-/compare/2.0.5...2.0.7
(cherry picked from commit b059b67c1f)
2025-11-29 09:01:50 +00:00
Bobby Rong
6d1d59e0fa [Backport release-25.11] GNOME updates 2025-11-27 (#465736) 2025-11-29 08:59:09 +00:00
Bobby Rong
3ab2145325 nixos/tests/terminal-emulators: Kill mlterm
Without any investigation hopefully this can make the
mlterm test less flaky.

(cherry picked from commit dbb6bf91db)
2025-11-29 16:56:40 +08:00
Bobby Rong
4e1925984c vte: 0.82.1 → 0.82.2
https://gitlab.gnome.org/GNOME/vte/-/compare/0.82.1...0.82.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 356c0281e7)
2025-11-29 16:56:32 +08:00
nixpkgs-ci[bot]
6f58fcde8f [Backport release-25.11] signal-desktop: 7.80.0 -> 7.80.1 (#466191) 2025-11-29 08:55:26 +00:00
R. Ryantm
69ebb5e1db percona-server_8_0: 8.0.43-34 -> 8.0.44-35
(cherry picked from commit b33a64073f)
2025-11-29 08:51:52 +00:00
Vladimír Čunát
9561691c9f mesa: 25.3.0 -> 25.2.6 (#466009) 2025-11-29 08:48:05 +00:00
R. Ryantm
ed965deaae signal-desktop: 7.80.0 -> 7.80.1
(cherry picked from commit 56bdac672a)
2025-11-29 08:40:08 +00:00
Connor Baker
04931f3a00 [Backport release-25.11] cudaPackages.cudnn-frontend: 1.9.0 -> 1.16.0 (#465956) 2025-11-29 07:23:59 +00:00
Adam C. Stephens
40be6bee58 elixir_1_19: 1.19.3 -> 1.19.4
Changelog: https://github.com/elixir-lang/elixir/releases/tag/v1.19.4
(cherry picked from commit ffd43209df)
2025-11-29 03:58:21 +00:00
Aleksana
2d56b0f795 [Backport release-25.11] surrealist: fix node_modules hashes (#465473) 2025-11-29 03:36:46 +00:00
Aleksana
4b5a79f4b3 [Backport release-25.11] lib/strings.nix: Fix cmakeOptionType argument order in docs (#466149) 2025-11-29 03:34:21 +00:00
Jacob Abel
64401cdf3c lib/strings.nix: Fix cmakeOptionType argument order in docs
Arguments were listed out of order in the documentation. Fixes that.

Signed-off-by: Jacob Abel <jacobabel@nullpo.dev>
(cherry picked from commit c137fe9433)
2025-11-29 03:27:49 +00:00
Cheng Shao
0494319110 envoy: 1.35.2 -> 1.36.2
This patch bumps envoy to 1.36.2 and fixes build failure caused by
unstable deps tarball hash due to including system go and the bump of
go in nixpkgs (#438433).

(cherry picked from commit cf2410d85a)
2025-11-29 03:06:08 +00:00
Aleksana
1724368be1 [Backport release-25.11] jq-lsp: 0.1.14 -> 0.1.15 (#466144) 2025-11-29 03:04:50 +00:00
R. Ryantm
91f4d49866 jq-lsp: 0.1.14 -> 0.1.15
(cherry picked from commit 02d14adc20)
2025-11-29 02:54:43 +00:00
Aleksana
7c9fc45479 [Backport release-25.11] distrobox: 1.8.2.0 -> 1.8.2.2 (#466135) 2025-11-29 02:36:41 +00:00
Aleksana
b43f0d6680 [Backport release-25.11] doc/rl-2511: fix missed line (#466139) 2025-11-29 02:36:20 +00:00
dish
ea6feef5b4 doc/rl-2511: fix missed line
(cherry picked from commit 09d827b1d8)
2025-11-29 02:16:41 +00:00
Aleksana
9700baf3ac [Backport release-25.11] treewide: replace networking.target with network.target (#466129) 2025-11-29 02:10:23 +00:00
R. Ryantm
0031e5ea37 distrobox: 1.8.2.0 -> 1.8.2.2
(cherry picked from commit db1ee289d0)
2025-11-29 02:08:11 +00:00
Aleksana
7ec371bf5d [Backport release-25.11] readeck: 0.21.2 -> 0.21.3 (#465942) 2025-11-29 02:06:15 +00:00
Tobias M
2c56140012 treewide: replace networking.target with network.target
We do not create networking.target anywhere ourselves and it is not one
of the default targets defined in systemd.special(7).
References to networking.target are therefore most likely typos and
meant to refer to network.target, which does exist.

(cherry picked from commit e45b6bb9dd)
2025-11-29 01:35:43 +00:00
Aleksana
ed7e12ae96 [25.11] python313Packages.vxi11: disable for python ≥3.13 (#465971) 2025-11-29 01:09:48 +00:00
nixpkgs-ci[bot]
bc594c047b [Backport release-25.11] cargo-binstall: 1.16.1 -> 1.16.2 (#466106) 2025-11-29 00:37:18 +00:00
R. Ryantm
ae287d37f6 cargo-binstall: 1.16.1 -> 1.16.2
(cherry picked from commit 4605f02efb)
2025-11-29 00:05:06 +00:00
numinit
90311c2551 [Backport release-25.11] libcupsfilters: apply patches for CVE-2025-64503 and CVE-2025-57812 (#466096) 2025-11-28 23:47:47 +00:00
Tom Herbers
4af2c935c0 kanidm_1_8: 1.8.1 -> 1.8.3
Changelog: https://github.com/kanidm/kanidm/releases/tag/v1.8.3
(cherry picked from commit de3adbe08a)
2025-11-28 23:40:12 +00:00
Thomas Gerbet
d9bd6dc3d0 libcupsfilters: apply patches CVE-2025-64503 and CVE-2025-57812
https://github.com/OpenPrinting/libcupsfilters/security/advisories/GHSA-jpxg-qc2c-hgv4
https://github.com/OpenPrinting/libcupsfilters/security/advisories/GHSA-rc6w-jmvv-v7gx
https://github.com/OpenPrinting/libcupsfilters/security/advisories/GHSA-fmvr-45mx-43c6
https://github.com/OpenPrinting/cups-filters/security/advisories/GHSA-893j-2wr2-wrh9
(cherry picked from commit 98fbc45e13)
2025-11-28 23:30:12 +00:00
Guillaume Girol
ae9f8be0d2 [Backport release-25.11] bitwuzla: fix by using CaDiCaL 2.1.3 (#466024) 2025-11-28 22:26:00 +00:00
Leona Maroni
29fac11836 [Backport release-25.11] doc/rl-2511: alphabetize (#466056) 2025-11-28 21:56:22 +00:00
dish
6b4187ff0b nixos/doc/rl-2511: alphabetize
(cherry picked from commit 094336052a)
2025-11-28 21:01:17 +00:00
dish
240599e84f doc/rl-2511: alphabetize
(cherry picked from commit 3307380e6c)
2025-11-28 21:01:17 +00:00
Gaétan Lepage
b5df5b778a [Backport release-25.11] nvme-rs: 0.2.0 -> 0.2.1 (#466051) 2025-11-28 20:48:33 +00:00
Gaétan Lepage
08d6e62d78 [Backport release-25.11] hot-resize: 0.1.4 -> 0.1.5 (#466048) 2025-11-28 20:45:05 +00:00
Wolfgang Walther
ccfb2faf6a [Backport release-25.11] eslint: add mdaniels5757 as comaintainer (#466050) 2025-11-28 20:44:29 +00:00
liberodark
ae21a52601 nvme-rs: 0.2.0 -> 0.2.1
(cherry picked from commit 19860d6c69)
2025-11-28 20:41:07 +00:00
Michael Daniels
9a98a587ea eslint: add mdaniels5757 as comaintainer
(cherry picked from commit 08eeb6c1fb)
2025-11-28 20:39:43 +00:00
jade
846d826b2a [Backport release-25.11] rust-analyzer-unwrapped: describe as a language server (#465998) 2025-11-28 20:37:16 +00:00
liberodark
631b5be816 hot-resize: 0.1.4 -> 0.1.5
(cherry picked from commit 81fdb4f1fc)
2025-11-28 20:36:08 +00:00
nixpkgs-ci[bot]
d181b04c4c [Backport release-25.11] pinact: 3.4.4 -> 3.4.5 (#466016) 2025-11-28 19:00:10 +00:00
Nicky Mouha
c3da5d5613 bitwuzla: fix by using CaDiCaL 2.1.3
bitwuzla: fix by using CaDiCaL 2.1.3
(cherry picked from commit 709333cd2e)
2025-11-28 18:56:54 +00:00
numinit
cb6b5f2bb4 [Backport release-25.11] dwarf-fortress-packages: DF 53.05 -> DF 53.06 (#465765) 2025-11-28 18:43:46 +00:00
numinit
dfd4baa53f [Backport release-25.11] mattermostLatest: 11.0.5 -> 11.1.1 (#465764) 2025-11-28 18:43:03 +00:00
R. Ryantm
abb6c22263 pinact: 3.4.4 -> 3.4.5
(cherry picked from commit 7b12f118ac)
2025-11-28 18:38:18 +00:00
Vladimír Čunát
4ad09cd8dc Revert "mesa: 25.2.6 -> 25.3.0"
This reverts commit ae921d60d3.
2025-11-28 18:58:24 +01:00
Vladimír Čunát
6fd4679bc0 Revert "mesa: gate NPU drivers on 64-bit targets only"
This reverts commit 1aa23f2e1b.
2025-11-28 18:58:23 +01:00
Vladimír Čunát
7e2f15af8e Revert "mesa: fix build on Darwin after 25.3"
This reverts commit d1b40fe8a2.
2025-11-28 18:58:22 +01:00
Vladimír Čunát
b738f75334 Revert "mesa: move pco_clc to cross_tools output"
This reverts commit 4264f487ee.
2025-11-28 18:58:20 +01:00
Vladimír Čunát
0011617cd5 Revert "mesa: fix build for musl"
This reverts commit cbe068324d.
2025-11-28 18:58:14 +01:00
K900
850208aed0 [Backport release-25.11] kdePackages.kdeconnect-kde: fix CVE-2025-66270 (#466001) 2025-11-28 17:45:53 +00:00
Felix Bargfeldt
bbd1dcc1ba [Backport release-25.11] obfs4: 0.6.2 -> 0.7.0 (#465983) 2025-11-28 17:40:59 +00:00
Mrmaxmeier
8ff9c2ed10 kdePackages.kdeconnect-kde: fix CVE-2025-66270
(cherry picked from commit b86a7917bf)
2025-11-28 17:30:28 +00:00
Rowenna Emma
4b327144f5 rust-analyzer-unwrapped: describe as a language server
(cherry picked from commit 46f4c6ad1a)
2025-11-28 17:22:42 +00:00
nixpkgs-ci[bot]
fabfdb79c3 [Backport release-25.11] y-cruncher: 0.8.6.9545 -> 0.8.7.9547 (#465988) 2025-11-28 17:06:55 +00:00
dotlambda
07ff1df877 [Backport release-25.11] postfix: 3.10.5 -> 3.10.6 (#465379) 2025-11-28 17:00:51 +00:00
Adam C. Stephens
7f13a57396 [Backport release-25.11] {ovn,evolution}: Fix command not found (#465975) 2025-11-28 16:53:53 +00:00
R. Ryantm
49549fe7c9 y-cruncher: 0.8.6.9545 -> 0.8.7.9547
(cherry picked from commit b8f255ae1c)
2025-11-28 16:50:20 +00:00
R. Ryantm
88e92a7f14 obfs4: 0.6.2 -> 0.7.0
(cherry picked from commit af543ce386)
2025-11-28 16:34:12 +00:00
R. Ryantm
17a1e6db68 netron: 8.7.3 -> 8.7.5
(cherry picked from commit 495f2ee98d)
2025-11-28 16:26:27 +00:00
Artturin
4c037c3030 evolution: Fix command not found in the backup restore
Fixes https://www.github.com/NixOS/nixpkgs/issues/465392

There are many uses of these thus a wrapper is better than substituting

https://gitlab.gnome.org/search?group_id=8&nav_source=navbar&page=2&project_id=1604&repository_ref=master&search=gzip&search_code=true
(cherry picked from commit d4c5ec6fe3)
2025-11-28 16:21:32 +00:00
Artturin
643f06f9f1 ovn: Fix command not found
Fixes https://www.github.com/NixOS/nixpkgs/issues/464825

(cherry picked from commit 8c8c5abaa0)
2025-11-28 16:21:32 +00:00
Tom Hunze
b59805c3fb python313Packages.vxi11: disable for python ≥3.13
This package relies on xdrlib, a standard library module that was
deprecated since Python 3.11 and removed in 3.13.

https://docs.python.org/3.14/library/xdrlib.html
2025-11-28 17:09:24 +01:00
Gutyina Gergő
c963fa7d04 pnpm_10: 10.23.0 -> 10.24.0
(cherry picked from commit 3c974f1b89)
2025-11-28 14:54:06 +00:00
Martin Weinelt
0e58d907f7 [Backport release-25.11] esphome: 2025.11.1 -> 2025.11.2 (#465928) 2025-11-28 14:48:37 +00:00
Connor Baker
a5335c04ef cudaPackages.cuda_nvcc: wrap binary so NVCC can always find compiler
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
(cherry picked from commit 2fe0be4dab)
2025-11-28 14:34:24 +00:00
Connor Baker
6626d4f072 onnxruntime: correct cudnn-frontend usage
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
(cherry picked from commit bfff3cfa16)
2025-11-28 14:30:38 +00:00
Connor Baker
7bd2601c3d cudaPackages.cudnn-frontend: 1.9.0 -> 1.16.0
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
(cherry picked from commit 3803d65740)
2025-11-28 14:30:37 +00:00
Connor Baker
ff6ae0d06b katago: patch outdated TensorRT version detection
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
(cherry picked from commit 36fada3a67)
2025-11-28 14:27:18 +00:00
Connor Baker
0d814c0670 cudaPackages.tensorrt: 10.9.0 -> 10.14.1 (for non-Jetson and Thor)
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
(cherry picked from commit 2fa699ca66)
2025-11-28 14:27:18 +00:00
Connor Baker
7eb6ea8e65 python3Packages.tensorrt: clean up expression
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
(cherry picked from commit d02eb46bfb)
2025-11-28 14:27:18 +00:00
Connor Baker
a57d63c4dc cudaPackages.tensorrt: use package expression from nixos-cuda/cuda-legacy
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
(cherry picked from commit d75e88de4f)
2025-11-28 14:27:18 +00:00
Connor Baker
5ae37d4217 _cuda.manifests.tensorrt: use full manifests from nixos-cuda/cuda-legacy
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
(cherry picked from commit a8c0e03e8b)
2025-11-28 14:27:18 +00:00
Aleksana
ba9b83e5fb [Backport release-25.11] nixos/zram-as-tmp: fix boot failure caused by e2fsprogs not available (#465934) 2025-11-28 13:53:53 +00:00
nixpkgs-ci[bot]
961a346062 [Backport release-25.11] atuin-desktop: 0.1.11 -> 0.2.3 (#465939) 2025-11-28 13:38:47 +00:00
linsui
ae2f1a2bfd readeck: 0.21.2 -> 0.21.3
(cherry picked from commit 86b331863f)
2025-11-28 13:26:18 +00:00
Sandro
a515f8db5e [Backport release-25.11] virtualisation/rosetta: Perserve ArgvZero to fix python virtualenv creation (#465308) 2025-11-28 13:25:14 +00:00
Aleksana
844458df6e [Backport release-25.11] ghdl-llvm: re-pin LLVM to latest compatible version (#465306) 2025-11-28 13:24:52 +00:00
David Chocholatý
aa83400838 atuin-desktop: 0.1.11 -> 0.2.3
(cherry picked from commit bb5cd4c0a1)
2025-11-28 13:15:44 +00:00
MidAutumnMoon
4c13c93322 nixos/zram-as-tmp: fix boot failure caused by e2fsprogs not available
This module made the assumption that `e2fsprogs` will always be
available in `system.fsPackages`, whereas on my system with tmpfs as
root+btrfs setup, e2fsprogs is not added to `fsPackages`, causing zram-generator
failed to find mkfs.ext4.

Related log:

```
systemd-makefs[555]: mkfs binary for ext4 is not available.
```

(cherry picked from commit fb093b46b5)
2025-11-28 13:05:20 +00:00
Martin Weinelt
2b20883e4c esphome: 2025.11.1 -> 2025.11.2
https://github.com/esphome/esphome/releases/tag/2025.11.2
(cherry picked from commit 26247107fd)
2025-11-28 12:31:07 +00:00
Aleksana
726f74044e [Backport release-25.11] {_64gram,kotatogram-desktop}: fix dependency conditions (#465905) 2025-11-28 12:13:57 +00:00
Niklas Korz
329bb55c34 [Backport release-25.11] boringssl: 0.20251110.0 -> 0.20251124.0 (#465924) 2025-11-28 12:10:13 +00:00
nixpkgs-ci[bot]
d1a5cb10bb [Backport release-25.11] jsonschema-cli: 0.37.1 -> 0.37.2 (#465919) 2025-11-28 12:01:00 +00:00
R. Ryantm
45f4123f34 boringssl: 0.20251110.0 -> 0.20251124.0
(cherry picked from commit 8e98da55bc)
2025-11-28 11:55:34 +00:00
R. Ryantm
89bf4f9238 jsonschema-cli: 0.37.1 -> 0.37.2
(cherry picked from commit 102d8f5090)
2025-11-28 11:37:06 +00:00
Aleksana
166c9bd4e7 [Backport release-25.11] doc/stdenv/platform-notes: update Darwin documentation for SDK changes (#465902) 2025-11-28 10:33:18 +00:00
Ilya Fedin
464e54f0ad kotatogram-desktop: fix build with clang
(cherry picked from commit 9d6b7d5185)
2025-11-28 10:32:39 +00:00
Ilya Fedin
b9b7268e4a kotatogram-desktop: fix dependency conditions
This returns Darwin build which stopped to happen since b7af891bce.

(cherry picked from commit c953590cfe)
2025-11-28 10:32:39 +00:00
Ilya Fedin
c8fadc3e98 _64gram: remove unneeded overrides
There's no practical need to derivate in cmake arguments or build inputs since 64gram is based on recent enough tdesktop.

This returns Darwin build which stopped to happen since b7af891bce.

(cherry picked from commit 8401748366)
2025-11-28 10:32:39 +00:00
Randy Eckenrode
367c040e7a doc/stdenv/platform-notes: update default minimum and SDK versions
(cherry picked from commit 8cb151b37a)
2025-11-28 10:25:47 +00:00
Randy Eckenrode
8b11147e08 doc/stdenv/platform-notes: add Xcode 26 to the SDK version table
(cherry picked from commit ad49226f57)
2025-11-28 10:25:47 +00:00
Aleksana
18cdd72568 [Backport release-25.11] licensed: regenerate lockfiles (#465133) 2025-11-28 10:08:43 +00:00
Aleksana
00b41821f8 [Backport release-25.11] python313Packages.succulent: 0.4.2 -> 0.4.3 (#465757) 2025-11-28 10:08:11 +00:00
Aleksana
9453f9368d [Backport release-25.11] python313Packages.typical: drop (#465897) 2025-11-28 10:02:35 +00:00
Jenny
89aacc0eef [Backport release-25.11] nxwitness-client: 6.0.3.40736 -> 6.0.6.41837 (#465895) 2025-11-28 10:00:34 +00:00
Tom Hunze
69563e01e3 python313Packages.typical: drop
This package is broken [1] and has been archived upstream [2].

[1] https://hydra.nixos.org/build/314267018
[2] https://github.com/seandstewart/typical

(cherry picked from commit bbf69abd11)
2025-11-28 09:57:47 +00:00
Jennifer Graul
a9ca5fcf66 nxwitness-client: 6.0.3.40736 -> 6.0.6.41837
(cherry picked from commit 4b535522a6)
2025-11-28 09:48:08 +00:00
Aleksana
fd09a022b2 [Backport release-25.11] devenv: 1.10 -> 1.11.1 (#465837) 2025-11-28 09:32:27 +00:00
nixpkgs-ci[bot]
f6736cee05 [Backport release-25.11] tandoor-recipes: 2.3.3 -> 2.3.6, fix update script (#465754) 2025-11-28 09:30:05 +00:00
Niklas Korz
f285874351 [Backport release-25.11] zed-editor: 0.214.5 -> 0.214.6 (#465873) 2025-11-28 09:21:22 +00:00
nixpkgs-ci[bot]
8374860d17 [Backport release-25.11] imv: 5.0.0 -> 5.0.1 and modernize (#465831) 2025-11-28 08:32:51 +00:00
nixpkgs-ci[bot]
9e77918814 [Backport release-25.11] dprint-plugins.dprint-plugin-typescript: 0.95.12 -> 0.95.13 (#465871) 2025-11-28 08:32:50 +00:00
botnk
1541904c15 zed-editor: 0.214.5 -> 0.214.6
Changelog: https://github.com/zed-industries/zed/releases/tag/v0.214.6
(cherry picked from commit 07ab467a68)
2025-11-28 07:57:24 +00:00
R. Ryantm
b69ec0f0a9 dprint-plugins.dprint-plugin-typescript: 0.95.12 -> 0.95.13
(cherry picked from commit 0dc6f06225)
2025-11-28 07:50:05 +00:00
Aleksana
b8125da721 [Backport release-25.11] av1an: fix build, pin ffmpeg_7 (#465841) 2025-11-28 05:58:32 +00:00
Aleksana
4012059e75 [Backport release-25.11] dolphin-emu-primehack: fix build on release 25.11 (#465842) 2025-11-28 05:58:24 +00:00
Arturo
68626d5caf dolphin-emu-primehack: fix build on release 25.11
(cherry picked from commit ffdb734969)
2025-11-28 05:19:29 +00:00
Aleksana
6f4f375a4a [Backport release-25.11] flowblade: set GDK_BACKEND=x11 and SDL_VIDEODRIVER=x11 as it doesn't support wayland (#465839) 2025-11-28 05:19:03 +00:00
Mynacol
97f5905196 av1an: fix build, pin ffmpeg_7
(cherry picked from commit 2d22fdcc27)
2025-11-28 05:17:30 +00:00
Bin Li
255cb9c9b6 flowblade: set GDK_BACKEND=x11 and SDL_VIDEODRIVER=x11 as it doesn't support wayland. (#465601)
(cherry picked from commit d10a3b1ea6)
2025-11-28 05:12:28 +00:00
Domen Kožar
c04bdfc784 devenv: 1.10 -> 1.11.1
https://github.com/cachix/devenv/releases/tag/v1.11
https://github.com/cachix/devenv/releases/tag/v1.11.1
(cherry picked from commit 964f91a1cd)
2025-11-28 05:09:20 +00:00
Aleksana
a5fcc7d410 [Backport release-25.11] mathematica: 14.2.1 -> 14.3.0 (#464902) 2025-11-28 05:08:55 +00:00
Aleksana
65f341d66e [Backport release-25.11] tuios: init at 0.3.4 (#464904) 2025-11-28 05:08:41 +00:00
Aleksana
858ef7ca23 [Backport release-25.11] refine: 0.6.0 -> 0.6.3 (#465465) 2025-11-28 05:07:23 +00:00
Marcin Serwin
16528e8ab6 imv: add version check hook
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
(cherry picked from commit 2ab3e41514)
2025-11-28 04:59:45 +00:00
Marcin Serwin
2ca5afd2a9 imv: move cmocka to checkInputs
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
(cherry picked from commit b732e7fbbb)
2025-11-28 04:59:45 +00:00
Marcin Serwin
9820e2e685 imv: use lib.mesonEnable consistently
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
(cherry picked from commit 8b969c0bae)
2025-11-28 04:59:45 +00:00
Marcin Serwin
e53429393e imv: fix libGL dependency
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
(cherry picked from commit a0f58333b6)
2025-11-28 04:59:45 +00:00
Marcin Serwin
40e4977bf5 imv: 5.0.0 -> 5.0.1
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
(cherry picked from commit 0f68e62057)
2025-11-28 04:59:45 +00:00
Aleksana
3c8c14d57a [Backport release-25.11] ascii-draw: 1.1.0 -> 1.2.0 (#465827) 2025-11-28 04:56:34 +00:00
Aleksana
10c6e692dd [Backport release-25.11] python313Packages.yaramod: fix build with cmake 4 (#465826) 2025-11-28 04:56:27 +00:00
nixpkgs-ci[bot]
e5de40163b [Backport release-25.11] parabolic: 2025.11.0 -> 2025.11.1 (#465821) 2025-11-28 04:54:44 +00:00
Aleksana
f714ea1120 [Backport release-25.11] cartero: 0.2.4 -> 25.0 (#465829) 2025-11-28 04:51:52 +00:00
Aleksana
19248b73b6 [Backport release-25.11] dvdstyler: fix build, pin to ffmpeg_7 (#465822) 2025-11-28 04:46:01 +00:00
Ignacio Perez
adbb931348 cartero: 0.2.4 -> 25.0
(cherry picked from commit d486879773)
2025-11-28 04:46:00 +00:00
Aleksana
87a31f0867 [Backport release-25.11] python313Packages.typesystem: drop (#465825) 2025-11-28 04:45:46 +00:00
R. Ryantm
6241e1ab24 ascii-draw: 1.1.0 -> 1.2.0
(cherry picked from commit 90d7e784c5)
2025-11-28 04:45:23 +00:00
Tom Hunze
556fc14187 python313Packages.yaramod: refactor
(cherry picked from commit f066a321c2)
2025-11-28 04:41:52 +00:00
Tom Hunze
15be66c9fb python313Packages.yaramod: fix build with cmake 4
(cherry picked from commit da9058f2a3)
2025-11-28 04:41:52 +00:00
Tom Hunze
64fbd6b9d1 python313Packages.typesystem: drop
This package is broken [1], unmaintained in nixpkgs, and has been
archived upstream [2].

[1] https://hydra.nixos.org/build/314267007
[2] https://github.com/encode/typesystem

(cherry picked from commit 17db69bd0a)
2025-11-28 04:40:38 +00:00
Aleksana
a17cc2a129 [Backport release-25.11] cartero: 0.2.2 -> 0.2.4 (#465705) 2025-11-28 04:34:22 +00:00
Mynacol
ac32bbf97d dvdstyler: fix build, pin to ffmpeg_7
(cherry picked from commit 73dab14c3d)
2025-11-28 04:29:01 +00:00
R. Ryantm
7586c97c90 parabolic: 2025.11.0 -> 2025.11.1
(cherry picked from commit 0c75cb9c82)
2025-11-28 04:21:38 +00:00
Aleksana
1b87732320 [Backport release-25.11] mktxp: Add missing pyyaml dependency (#465802) 2025-11-28 04:14:28 +00:00
Doridian
409223f946 mktxp: Add missing pyyaml dependency
(cherry picked from commit e620037869)
2025-11-28 03:18:33 +00:00
Tomodachi94
114c56718e [Backport release-25.11] darklua: 0.17.2 -> 0.17.3 (#465798) 2025-11-28 02:57:20 +00:00
R. Ryantm
5acd7805de darklua: 0.17.2 -> 0.17.3
(cherry picked from commit ee288cc958)
2025-11-28 02:13:19 +00:00
rewine
c9bf37b26e [Backport release-25.11] vivaldi: 7.6.3797.63 -> 7.7.3851.54 (#465780) 2025-11-28 01:42:38 +00:00
Marcus Ramberg
c941f32f8a vivaldi: 7.6.3797.63 -> 7.7.3851.54
(cherry picked from commit f3d512ed5e)
2025-11-28 00:21:35 +00:00
Gaétan Lepage
2cbd1cf715 [Backport release-25.11] protobuf_29: fix darwin build (#465766) 2025-11-27 23:13:50 +00:00
Gaétan Lepage
49f47d9923 [Backport release-25.11] python3Packages.gradio: 5.38.2 -> 5.49.1 (#465710) 2025-11-27 22:59:21 +00:00
Mathieu Rene
c6c6a3fc6e protobuf_29: fix darwin tests that would fail due to the temporary
directory being deleted by a forked child process created by death
tests.

- Backports a commit from a future protobuf version which uses a different
temporary directory for each test process.

- Sets the death test mode to "threadsafe", causing gtest to fork and
exec instead of just forking, making it create a new temporary directory
for this specific test.

(cherry picked from commit a1318763c2)
2025-11-27 22:55:45 +00:00
Morgan Jones
0baff0ecb7 dwarf-fortress-packages: DF 53.05 -> DF 53.06
Performed the following automatic DF updates:

- DF 53.05 -> DF 53.06

(cherry picked from commit 121cd8a8a8)
2025-11-27 22:55:06 +00:00
Morgan Jones
d288a0b26b mattermostLatest: 11.0.5 -> 11.1.1
(cherry picked from commit 434c073c5a)
2025-11-27 22:54:29 +00:00
Jenny
f8d3af603e [Backport release-25.11] vbam: fix build by downgrading to ffmpeg_7 (#465761) 2025-11-27 22:51:54 +00:00
Mynacol
582e4070fe vbam: fix build by downgrading to ffmpeg_7
(cherry picked from commit 39e620e8c0)
2025-11-27 22:45:23 +00:00
Tom Hunze
264d1457b8 python313Packages.succulent: refactor
(cherry picked from commit c200b14893)
2025-11-27 22:42:03 +00:00
Tom Hunze
6d58ed174f python313Packages.succulent: 0.4.2 -> 0.4.3
https://github.com/firefly-cpp/succulent/releases/tag/0.4.3
(cherry picked from commit a8f51370af)
2025-11-27 22:42:03 +00:00
Ryan Omasta
6285a8e610 tandoor-recipes: 2.3.3 -> 2.3.6
https://github.com/TandoorRecipes/recipes/releases/tag/2.3.6
Diff: https://github.com/TandoorRecipes/recipes/compare/2.3.3...2.3.6
(cherry picked from commit 4b716021dc)
2025-11-27 22:20:35 +00:00
Ryan Omasta
88dc71c83d tandoor-recipes: fix update script
(cherry picked from commit 563f10c0bb)
2025-11-27 22:20:35 +00:00
Doron Behar
f1e4f656b4 mutter: no with lib; in meta
(cherry picked from commit e7cf76b9e0)
2025-11-27 20:56:04 +00:00
Bobby Rong
5dfc97e333 showtime: 49.0 → 49.1
https://gitlab.gnome.org/GNOME/showtime/-/compare/49.0...49.1

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 5ef4b433e8)
2025-11-27 20:56:04 +00:00
Bobby Rong
adf20ab9cf quadrapassel: 49.1 → 49.2.1
https://gitlab.gnome.org/GNOME/quadrapassel/-/compare/49.1...49.2.1

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 193a0f4c62)
2025-11-27 20:56:04 +00:00
Doron Behar
96274899f4 papers: 49.1 → 49.2
https://gitlab.gnome.org/GNOME/papers/-/compare/49.1...49.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 35da008867)
2025-11-27 20:56:04 +00:00
Bobby Rong
b786facd34 orca: 49.4 → 49.5
https://gitlab.gnome.org/GNOME/orca/-/compare/49.4...49.5

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit cfc86ec765)
2025-11-27 20:56:04 +00:00
Doron Behar
f2cad655e3 nautilus: 49.1 → 49.2
https://gitlab.gnome.org/GNOME/nautilus/-/compare/49.1...49.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 84f8202b41)
2025-11-27 20:56:04 +00:00
Doron Behar
fab6e086a6 mutter: 49.1.1 → 49.2
https://gitlab.gnome.org/GNOME/mutter/-/compare/49.1.1...49.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 5cd16501f5)
2025-11-27 20:56:04 +00:00
Doron Behar
c7a0bf21bb gnome-user-share: 48.1 → 48.2
https://gitlab.gnome.org/GNOME/gnome-user-share/-/compare/48.1...48.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit d5bb8a9fee)
2025-11-27 20:56:04 +00:00
Doron Behar
07c5210964 gnome-shell: 49.1 → 49.2
https://gitlab.gnome.org/GNOME/gnome-shell/-/compare/49.1...49.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 4aa7d2c67e)
2025-11-27 20:56:04 +00:00
Bobby Rong
ea74a2fd0d evolution-ews: 3.58.1 → 3.58.2
https://gitlab.gnome.org/GNOME/evolution-ews/-/compare/3.58.1...3.58.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 0809e85a3b)
2025-11-27 20:56:04 +00:00
Bobby Rong
b64dc9105f evolution-data-server: 3.58.1 → 3.58.2
https://gitlab.gnome.org/GNOME/evolution-data-server/-/compare/3.58.1...3.58.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit ba064be934)
2025-11-27 20:56:03 +00:00
Bobby Rong
54913e3e50 evolution: 3.58.1 → 3.58.2
https://gitlab.gnome.org/GNOME/evolution/-/compare/3.58.1...3.58.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit df533261eb)
2025-11-27 20:56:03 +00:00
Fabián Heredia Montiel
a65c5584e4 [Backport release-25.11] GNOME updates 2025-11-26 (#465596) 2025-11-27 20:51:46 +00:00
dotlambda
6902a5bfdb [Backport release-25.11] home-assistant: remove xmltodict override (#465478) 2025-11-27 20:01:56 +00:00
Yiyu Zhou
3bb4d9a277 python3Packages.gradio: 5.38.2 -> 5.49.1
(cherry picked from commit defcf8cb9c)
2025-11-27 19:23:29 +00:00
Yiyu Zhou
13a0076c57 python3Packages.gradio-client: 1.11.0 -> 1.12.1
(cherry picked from commit 75aeb2bb63)
2025-11-27 19:23:28 +00:00
Ignacio Perez
22d9260cd4 cartero: 0.2.2 -> 0.2.4
(cherry picked from commit 049c1e483f)
2025-11-27 18:59:10 +00:00
misuzu
60e823f43c [Backport release-25.11] nixos/clickhouse: tests: ui: Increase memory for Java (#465666) 2025-11-27 18:14:24 +00:00
isabel
9c20fe1d6d [Backport release-25.11] mullvad-vpn: 2025.7 -> 2025.13, fix update.sh (#465690) 2025-11-27 17:49:33 +00:00
mchar7
f7b4dbb7b7 mullvad-vpn: 2025.7 -> 2025.13
Also fixes update.sh to reference package.nix instead of default.nix and use nix-prefetch-scripts for proper hash generation.

(cherry picked from commit 71dcd83ced)
2025-11-27 17:43:14 +00:00
nixpkgs-ci[bot]
c0021445fb [Backport release-25.11] kimai: 2.43.0 -> 2.44.0 (#465656) 2025-11-27 17:00:37 +00:00
Martin Weinelt
a699ae31b4 [Backport release-25.11] esphome: 2025.11.0 -> 2025.11.1 (#465657) 2025-11-27 17:25:05 +01:00
Jonathan Davies
28924d4821 nixos/clickhouse: tests: ui: Increase memory for Java
(cherry picked from commit 8ccf988c1a)
2025-11-27 16:23:56 +00:00
Ivan Mincik
e156d6e736 [Backport release-25.11] mapserver: fix mapscript library reference on Darwin (#465204) 2025-11-27 16:11:55 +00:00
Martin Weinelt
2393d8b150 esphome: 2025.11.0 -> 2025.11.1
https://github.com/esphome/esphome/releases/tag/2025.11.1
(cherry picked from commit 00c940af29)
2025-11-27 15:59:35 +00:00
R. Ryantm
5e811c18b1 kimai: 2.43.0 -> 2.44.0
(cherry picked from commit 3508e3e1e9)
2025-11-27 15:59:30 +00:00
K900
26a746babc [Backport release-25.11] opentimelineio: 0.17 -> 0.18.1 (#465632) 2025-11-27 15:16:51 +00:00
nixpkgs-ci[bot]
786a25ca90 [Backport release-25.11] uv: 0.9.12 -> 0.9.13 (#465631) 2025-11-27 15:14:02 +00:00
Alyssa Ross
f49ee1f599 vte: backport fix for backspace in QEMU
Fixes: 7a24e8bdb6 ("vte: 0.80.3 → 0.81.90")
(cherry picked from commit 4b7fab5e08)
2025-11-27 15:00:22 +00:00
nixpkgs-ci[bot]
06faed5059 [Backport release-25.11] ty: 0.0.1-alpha.27 -> 0.0.1-alpha.28 (#465630) 2025-11-27 15:00:05 +00:00
K900
33efc8aa5d otio: drop
Duplicates opentimelineio, unused.

(cherry picked from commit 9d1ba324cc)
2025-11-27 14:54:07 +00:00
K900
e4e32a8601 opentimelineio: 0.17.0 -> 0.18.1
Diff: https://github.com/AcademySoftwareFoundation/OpenTimelineIO/compare/v0.17.0...v0.18.1
(cherry picked from commit b6fa9a24d1)
2025-11-27 14:54:07 +00:00
Sizhe Zhao
725ea48eca uv: 0.9.12 -> 0.9.13
(cherry picked from commit 5c5b74b037)
2025-11-27 14:54:03 +00:00
Benjamin Sparks
cf6ac863e6 ty: 0.0.1-alpha.27 -> 0.0.1-alpha.28
(cherry picked from commit d6483df284)
2025-11-27 14:52:36 +00:00
Martin Weinelt
526da4ef86 [Backport release-25.11] pretix: 2025.9.0 -> 2025.9.2 (#465617) 2025-11-27 14:17:11 +00:00
Yaya
0b6bd625bc [Backport release-25.11] gitlab: 18.6.0 -> 18.6.1 (#465577) 2025-11-27 14:13:31 +00:00
Martin Weinelt
d367441a2a pretix: 2025.9.0 -> 2025.9.2
https://pretix.eu/about/en/blog/20251127-release-2025-9-2/

Fixes: CVE-2025-13742
(cherry picked from commit fbad460b42)
2025-11-27 14:10:53 +00:00
Niklas Korz
c6dcde42ee [Backport release-25.11] zed-editor: 0.213.8 -> 0.214.5 (#465540) 2025-11-27 13:30:38 +00:00
Aleksana
ba25843fcc [Backport release-25.11] nixos/oink: fix eval (#465595) 2025-11-27 13:10:01 +00:00
Bobby Rong
ed0d889560 gtranslator: 48.0 → 49.0
https://gitlab.gnome.org/GNOME/gtranslator/-/compare/48.0...49.0

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 7ee9c50b89)
2025-11-27 13:03:36 +00:00
Bobby Rong
5861620dd7 gnome-software: 49.1 → 49.2
https://gitlab.gnome.org/GNOME/gnome-software/-/compare/49.1...49.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit f51637549b)
2025-11-27 13:03:36 +00:00
Bobby Rong
a578f4a57d gnome-session: 49.1 → 49.2
https://gitlab.gnome.org/GNOME/gnome-session/-/compare/49.1...49.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit f64c0ce505)
2025-11-27 13:03:36 +00:00
Bobby Rong
d62f436eea gnome-online-accounts: 3.56.1 → 3.56.2
https://gitlab.gnome.org/GNOME/gnome-online-accounts/-/compare/3.56.1...3.56.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 152c8af9fd)
2025-11-27 13:03:36 +00:00
Bobby Rong
e3dac21722 gnome-control-center: 49.1 → 49.2.1
https://gitlab.gnome.org/GNOME/gnome-control-center/-/compare/49.1...49.2.1

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 04ef65e2e7)
2025-11-27 13:03:36 +00:00
Bobby Rong
9832ad4779 gnome-calculator: 49.1.1 → 49.2
https://gitlab.gnome.org/GNOME/gnome-calculator/-/compare/49.1.1...49.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit c30e560641)
2025-11-27 13:03:36 +00:00
Bobby Rong
5ea844d713 gnome-boxes: 49.0 → 49.1
https://gitlab.gnome.org/GNOME/gnome-boxes/-/compare/49.0...49.1

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 197fdf9b0e)
2025-11-27 13:03:36 +00:00
Bobby Rong
5d0dbcad75 gdm: 49.1 → 49.2
https://gitlab.gnome.org/GNOME/gdm/-/compare/49.1...49.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 63663c447e)
2025-11-27 13:03:36 +00:00
Bobby Rong
91d061d0a4 epiphany: 49.1 → 49.2
https://gitlab.gnome.org/GNOME/epiphany/-/compare/49.1...49.2

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit 40c020d9e0)
2025-11-27 13:03:36 +00:00
Bobby Rong
a88ce589d0 baobab: 49.0 → 49.1
https://gitlab.gnome.org/GNOME/baobab/-/compare/49.0...49.1

Changelog-Reviewed-By: Bobby Rong <rjl931189261@126.com>
(cherry picked from commit be5fcb2117)
2025-11-27 13:03:36 +00:00
éclairevoyant
44f22c674c nixos/oink: fix eval
(cherry picked from commit 8188520c42)
2025-11-27 12:59:28 +00:00
nixpkgs-ci[bot]
c6dcab6051 [Backport release-25.11] eigenwallet: change name to pname (#465575) 2025-11-27 12:42:59 +00:00
Leona Maroni
8a86eed045 gitlab: 18.6.0 -> 18.6.1
https://about.gitlab.com/releases/2025/11/26/patch-release-gitlab-18-6-1-released/
(cherry picked from commit 0d3f8ff0a7)
2025-11-27 12:17:18 +00:00
Jaco Malan
ad50f9a521 eigenwallet: change name to pname
(cherry picked from commit adee619975)
2025-11-27 12:14:33 +00:00
Jo
13980d3d80 [Backport release-25.11] openasar: 0-unstable-2025-09-17 -> 0-unstable-2025-11-21 (#465561) 2025-11-27 10:55:24 +00:00
R. Ryantm
855a8ae461 openasar: 0-unstable-2025-09-17 -> 0-unstable-2025-11-21
(cherry picked from commit 67d153a5a4)
2025-11-27 10:48:14 +00:00
Jo
b02a8e1c83 [Backport release-25.11] discord: 0.0.115 -> 0.0.116 (#465547) 2025-11-27 10:46:28 +00:00
Vincent Laporte
1249bb645b [Backport release-25.11] ocamlPackages.{markup,opti,ptmap,ptset,vector}: small cleaning (#465554) 2025-11-27 10:38:22 +00:00
Vincent Laporte
31c64ec802 [Backport release-25.11] ocamlPackages.{either,hashcons,irmin-watcher,lacaml,ladspa}: small cleaning (#465553) 2025-11-27 10:28:10 +00:00
Vincent Laporte
5b12127892 [Backport release-25.11] ocamlPackages.repr: 0.7.0 → 0.8.0 (#465552) 2025-11-27 10:13:52 +00:00
Vincent Laporte
bcd099a64a ocamlPackages.vector: small cleaning
(cherry picked from commit 8e47ff9991)
2025-11-27 10:04:01 +00:00
Vincent Laporte
c07327640c ocamlPackages.ptset: small cleaning
(cherry picked from commit 256a78f4df)
2025-11-27 10:04:01 +00:00
Vincent Laporte
c310e8aba7 ocamlPackages.ptmap: small cleaning
(cherry picked from commit ed09646e90)
2025-11-27 10:04:01 +00:00
Vincent Laporte
1e8a7dbd83 ocamlPackages.opti: small cleaning
(cherry picked from commit e38f06740a)
2025-11-27 10:04:01 +00:00
Vincent Laporte
920b55163e ocamlPackages.markup: small cleaning
(cherry picked from commit dc0e174bbb)
2025-11-27 10:04:01 +00:00
Vincent Laporte
e13c2bfbad ocamlPackages.ladspa: small cleaning
(cherry picked from commit e4bea0f1c3)
2025-11-27 10:03:22 +00:00
Vincent Laporte
5d8dda5c68 ocamlPackages.lacaml: small cleaning
(cherry picked from commit dd704b8b20)
2025-11-27 10:03:22 +00:00
Vincent Laporte
7c71812641 ocamlPackages.irmin-watcher: small cleaning
(cherry picked from commit 2146823fd7)
2025-11-27 10:03:22 +00:00
Vincent Laporte
7e5f5876bf ocamlPackages.hashcons: small cleaning
(cherry picked from commit f5acb63359)
2025-11-27 10:03:22 +00:00
Vincent Laporte
17fd13a331 ocamlPackages.either: small cleaning
(cherry picked from commit 7a32e0d87e)
2025-11-27 10:03:22 +00:00
Vincent Laporte
fb9082e4b8 ocamlPackages.repr: 0.7.0 → 0.8.0
(cherry picked from commit c527642f3c)
2025-11-27 10:01:48 +00:00
R. Ryantm
21f9a40620 discord: 0.0.115 -> 0.0.116
(cherry picked from commit ac8fb25664)
2025-11-27 09:52:50 +00:00
Aleksana
a925bfa4a6 [Backport release-25.11] cosmic-ext-calculator: 0.1.1 -> 0.2.0 (#465487) 2025-11-27 09:41:15 +00:00
Felix Bargfeldt
d79bc5cb3c [Backport release-25.11] radicle-ci-broker: 0.22.0 -> 0.23.0 (#465539) 2025-11-27 09:31:13 +00:00
zowoq
f83aec6310 terraform-providers.sap-cloud-infrastructure_sci: init at 2.2.0 (#465531) 2025-11-27 09:30:43 +00:00
Jo
ec79c01cc1 [Backport release-25.11] doc: update 25.11 release notes to say ffmpeg defaults to v8 (#465535) 2025-11-27 09:27:18 +00:00
Hans Joachim Kliemeck
e7b59ec031 terraform-providers.sap-cloud-infrastructure_sci: init at 2.2.0
(cherry picked from commit 38c914080d)
2025-11-27 09:24:46 +00:00
botnk
f4dde898d3 zed-editor: 0.213.8 -> 0.214.5
Changelog: https://github.com/zed-industries/zed/releases/tag/v0.214.5
(cherry picked from commit 073a3c1a27)
2025-11-27 09:17:12 +00:00
Defelo
77d8b02d77 radicle-ci-broker: 0.22.0 -> 0.23.0
Changelog: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/tree/NEWS.md
(cherry picked from commit 6a1f58e6b3)
2025-11-27 09:09:01 +00:00
M. Ian Graham
0ab615dfdc doc: update 25.11 release notes to say ffmpeg defaults to v8
Default changed as of https://github.com/NixOS/nixpkgs/pull/450436

(cherry picked from commit d67cc481e6)
2025-11-27 08:45:15 +00:00
nixpkgs-ci[bot]
ef13020601 [Backport release-25.11] onedrivegui: 1.2.2 -> 1.3.0 (#465519) 2025-11-27 07:51:25 +00:00
dotlambda
2325ecba02 [Backport release-25.11] uv: 0.9.9 -> 0.9.12 (#465468) 2025-11-27 07:42:46 +00:00
dotlambda
7b62da032f [Backport release-25.11] home-assistant: don't depend on uv (#465471) 2025-11-27 07:42:36 +00:00
R. Ryantm
c9374e3fac onedrivegui: 1.2.2 -> 1.3.0
(cherry picked from commit a5724ce8d6)
2025-11-27 07:36:07 +00:00
Aleksana
41401dd388 [Backport release-25.11] unicode-emoji: update url path, version, and hashes (#465466) 2025-11-27 06:24:43 +00:00
nixpkgs-ci[bot]
e6272a1281 [Backport release-25.11] eigenwallet: 3.3.6 -> 3.3.7 (#465504) 2025-11-27 05:52:39 +00:00
R. Ryantm
c4f6247540 eigenwallet: 3.3.6 -> 3.3.7
(cherry picked from commit 5946746495)
2025-11-27 05:45:19 +00:00
nixpkgs-ci[bot]
fa4642c6d7 [Backport release-25.11] hmcl: add patch jar to fix terracotta (#465496) 2025-11-27 05:09:30 +00:00
nixpkgs-ci[bot]
8c70df843d [Backport release-25.11] bookstack: 25.11.2 -> 25.11.4 (#465481) 2025-11-27 04:55:43 +00:00
aleksana
31c840313a hmcl: refactor and make available on darwin
(cherry picked from commit 0e3b99e22e)
2025-11-27 04:52:15 +00:00
aleksana
b1092feaa2 hmcl: add patch jar to fix terracotta
(cherry picked from commit ab9788d65b)
2025-11-27 04:52:15 +00:00
nixpkgs-ci[bot]
d50431f53c [Backport release-25.11] hmcl: 3.6.18 -> 3.7.6 (#465491) 2025-11-27 04:44:58 +00:00
Daniels Šatcs
fcbfd77fce hmcl: 3.6.18 -> 3.7.6
Co-authored-by: Moraxyc Xu <i@moraxyc.com>
(cherry picked from commit b99f95e158)
2025-11-27 04:35:01 +00:00
Gliczy
0ccd582f5a cosmic-ext-calculator: 0.1.1 -> 0.2.0
(cherry picked from commit cfec04fa0f)
2025-11-27 04:19:15 +00:00
R. Ryantm
71c748f7cc bookstack: 25.11.2 -> 25.11.4
(cherry picked from commit 0aca05a4c8)
2025-11-27 03:43:21 +00:00
Robert Schütz
28ee428039 home-assistant: remove xmltodict override
This breks some components that depend (aio-)georss-client but xmltodict
is vulnerable to CVE-2025-9375 before version 1.0.0.

(cherry picked from commit 170685da9c)
2025-11-27 03:32:25 +00:00
Robert Schütz
00b325c37e python3Packages.georss-client: mark broken
(cherry picked from commit 4cedbdbf29)
2025-11-27 03:32:25 +00:00
Robert Schütz
47c9c0c93e python3Packages.aio-georss-client: mark broken
(cherry picked from commit b0f76f96c8)
2025-11-27 03:32:25 +00:00
Tom Hunze
eded4640be surrealist: fix node_modules hashes
(cherry picked from commit afd4165bbd)
2025-11-27 02:36:44 +00:00
Aleksana
d4ab9e9210 [Backport release-25.11] typora: 1.12.3 -> 1.12.4 (#465464) 2025-11-27 02:34:26 +00:00
Aleksana
78ec47fd86 [Backport release-25.11] pihole-ftl: fix useDnsmasqConfig = true and add test (#465276) 2025-11-27 02:33:04 +00:00
Aleksana
ffc5c458e9 [Backport release-25.11] octavePackages.video: Fix build & install (#465277) 2025-11-27 02:32:21 +00:00
Aleksana
ca327614fb [Backport release-25.11] drawpile: fix build (#465311) 2025-11-27 02:31:59 +00:00
Robert Schütz
58d8eaff67 home-assistant: don't depend on uv
(cherry picked from commit cfb5277c8a)
2025-11-27 02:26:59 +00:00
Benjamin Sparks
2ceb8bb868 uv: 0.9.11 -> 0.9.12
Changelog: https://github.com/astral-sh/uv/releases/tag/0.9.12
(cherry picked from commit ca0a0d8a4c)
2025-11-27 02:20:49 +00:00
Sizhe Zhao
2c76e708b0 uv: 0.9.10 -> 0.9.11
(cherry picked from commit ab9b7a428e)
(cherry picked from commit 5647b5cff7)
2025-11-27 02:20:49 +00:00
Benjamin Sparks
7fe537afb9 uv: 0.9.9 -> 0.9.10
Changelog: https://github.com/astral-sh/uv/releases/tag/0.9.10
(cherry picked from commit 14e2270069)
(cherry picked from commit c8b071cff4)
2025-11-27 02:20:49 +00:00
conatsera
2cff1a5a30 unicode-emoji: update url path, version, and hashes
https://www.unicode.org/Public/emoji/ReadMe.txt
> Starting with Unicode 17.0.0, the data files for Unicode Emoji are published in https://www.unicode.org/Public/<version>/emoji/

hashes for emoji-sequences.txt and emoji-test.txt have also been updated

(cherry picked from commit a27dc62ce2)
2025-11-27 02:09:46 +00:00
R. Ryantm
eb1fbe3640 refine: 0.6.0 -> 0.6.3
(cherry picked from commit 981a193275)
2025-11-27 02:07:40 +00:00
R. Ryantm
6c6313ddf9 typora: 1.12.3 -> 1.12.4
(cherry picked from commit bb2a50b3c0)
2025-11-27 02:05:20 +00:00
Aleksana
df2e90491e [Backport release-25.11] wlr-randr: build man pages (#465450) 2025-11-27 02:04:54 +00:00
Martin Weinelt
cff86c82d5 [Backport release-25.11] nixos/firefox-syncserver: fix local database access, add a nixos test (#465458) 2025-11-27 01:50:06 +00:00
Aleksana
b50477922e [Backport release-25.11] discord: rehaul update script (#465284) 2025-11-27 01:48:10 +00:00
Martin Weinelt
8823f20ee3 [Backport release-25.11] treewide: remove remaining nginxQuic mentions (#465457) 2025-11-27 01:46:40 +00:00
Martin Weinelt
eddabc6099 syncstorage-rs: link up firefox-syncserver test
(cherry picked from commit 67af782e11)
2025-11-27 01:45:21 +00:00
Martin Weinelt
394d76a5e2 nixos/firefox-syncserver: init
Regular tests of this service make it easier to notice when and why it
broke.

(cherry picked from commit 83b9440abb)
2025-11-27 01:45:21 +00:00
Martin Weinelt
51f3d77a37 nixos/firefox-syncserver: fix local database access
Local database creation always assumed UNIX socket accces. During the
25.11 release cycle this seemingly changed and we now need to be
explicit.

(cherry picked from commit 59e79d64ff)
2025-11-27 01:45:21 +00:00
Aleksana
6bfd3a8bfb [Backport release-25.11] http-prompt: drop (#465451) 2025-11-27 01:45:12 +00:00
Sandro Jäckel
8cc3cf1f4c treewide: remove remaining nginxQuic mentions
(cherry picked from commit 434002683c)
2025-11-27 01:42:09 +00:00
Tom Hunze
b4971de94e http-prompt: drop
http-prompt is broken [1] due to a dependency on an ancient version of
prompt-toolkit and the latest release was in March 2021 [2].

[1] https://hydra.nixos.org/build/313846008/nixlog/2
[2] https://github.com/httpie/http-prompt

(cherry picked from commit 21a69f50c7)
2025-11-27 01:27:42 +00:00
tea
214c0a80c8 wlr-randr: build man pages
(cherry picked from commit f816f79b28)
2025-11-27 01:21:06 +00:00
Kerstin
d8c4c665ff [Backport release-25.11] weblate: add missing typelib for cairo (#465416) 2025-11-26 23:03:00 +00:00
Leona Maroni
a0f9c8c801 [Backport release-25.11] Revert "gitlab-runner: 18.5.0 -> 18.6.0" (#465383) 2025-11-26 22:55:20 +00:00
Marcel
7259d7b2d8 nixos/weblate: add gunicorn preloading
(cherry picked from commit 1c878b17cc)
2025-11-26 22:46:23 +00:00
Marcel
4cfd70109f weblate: add missing typelib for cairo
(cherry picked from commit 91d3482f24)
2025-11-26 22:46:23 +00:00
Cosima Neidahl
dcab162b6c [Backport release-25.11] open-watcom-v2-unwrapped: 0-unstable-2025-05-07 -> 0-unstable-2025-11-15, housekeeping, init full variant (#465255) 2025-11-26 21:36:06 +00:00
Leona Maroni
292a62685d Revert "gitlab-runner: 18.5.0 -> 18.6.0"
GitLab Runner 18.6 introduces quite a few regreissions including

- submodule (no fix available)
- variable handling (fix available)

This reverts commit dbb3a08e6f.

(cherry picked from commit a6b72720c5)
2025-11-26 21:32:09 +00:00
Leona Maroni
aa35f6328c Revert "gitlab-runner: apply patch for file variable handling"
This reverts commit f99787269a.

(cherry picked from commit c4e4d9b3ea)
2025-11-26 21:32:08 +00:00
Jenny
1bcb754fdd [Backport release-25.11] vbam: 2.1.11 -> 2.2.3 (#465380) 2025-11-26 21:27:08 +00:00
nixpkgs-ci[bot]
dea1b6e0ba [Backport release-25.11] i18next-cli: 1.20.4 -> 1.24.21, link to CHANGELOG.md instead of github release page (#465134) 2025-11-26 21:26:52 +00:00
R. Ryantm
751d518b91 vbam: 2.1.11 -> 2.2.3
(cherry picked from commit 025abe86c8)
2025-11-26 21:21:04 +00:00
Robert Schütz
268b6f6539 postfix: 3.10.5 -> 3.10.6
Changelog: https://www.postfix.org/announcements/postfix-3.10.6.html
(cherry picked from commit 4c48e9ea8e)
2025-11-26 21:20:02 +00:00
misuzu
d64d3c37ac [Backport release-25.11] clickhouse: 25.10.2.65-stable -> 25.10.3.100-stable (#465325) 2025-11-26 19:58:25 +00:00
nixpkgs-ci[bot]
43a711102b [Backport release-25.11] vpp: 25.06 -> 25.10, cleanup (#465315) 2025-11-26 18:33:15 +00:00
R. Ryantm
b9005ce72e clickhouse: 25.10.2.65-stable -> 25.10.3.100-stable
(cherry picked from commit 68b2606269)
2025-11-26 18:30:47 +00:00
misuzu
ffccb46f98 [Backport release-25.11] qsvlite: 9.1.0 -> 10.0.0 (#465321) 2025-11-26 18:25:52 +00:00
R. Ryantm
7463e207b6 qsvlite: 9.1.0 -> 10.0.0
(cherry picked from commit 723b3b8cc3)
2025-11-26 18:15:37 +00:00
azey
13c0a0690e vpp: 25.06 -> 25.10, cleanup
(cherry picked from commit 0a019aa16f)
2025-11-26 17:18:36 +00:00
Qubic
1621038656 drawpile: fix build
(cherry picked from commit 058334f5bc)
2025-11-26 17:06:42 +00:00
Martin Häcker
c60c7c645c virtualisation/rosetta: Perserve ArgvZero to fix python virtualenv creation
Preserving ArgvZero is supported from MacOS 14 Sonoma forward, which is
the current minimum supported version of nixpkgs. See
https://developer.apple.com/documentation/virtualization/running-intel-binaries-in-linux-vms-with-rosetta#Mount-the-Shared-Directory-and-Register-Rosetta

The necessity of this fix came up with python virtual environments,
because python uses the path of the executable (argv zero) to determine
if it should load a virtual environment or not. In the past this was
overriden with NIX_PYTHONEXECUTABLE, NIX_PYTHONPATH and
NIX_PYTHONPREFIX, but we stopped doing that for the python interpreter
so it works more like a normal python interpreter in nix.

Without those variables, in the rosetta emulated case, python was no
longer able to determine where it was called from, and thus could not
correctly activate virtual environments in that case.

(cherry picked from commit f5eb10b52c)
2025-11-26 17:00:13 +00:00
flexxyfluxx
e626f3f210 ghdl-llvm: re-pin LLVM
Supports only up to LLVM version 20 (see their [`configure` script]: <https://github.com/ghdl/ghdl/blob/v5.1.1/configure#L312-L327>), but un-pinned version in nixpkgs is version 21.

(cherry picked from commit 8ea70323b9)
2025-11-26 16:58:35 +00:00
Niklas Korz
2fecba9952 [Backport release-25.11] librechat: v0.7.9 -> v0.8.0 (#465292) 2025-11-26 16:09:25 +00:00
Simao Gomes Viana
76f036e3b5 librechat: 0.7.9 -> 0.8.0
(cherry picked from commit e75998fe12)
2025-11-26 16:00:32 +00:00
Simao Gomes Viana
2cd94c5049 librechat: 0.7.8 -> 0.7.9
(cherry picked from commit 22f6fb046d)
2025-11-26 16:00:32 +00:00
Sefa Eyeoglu
25255d8466 discord{,-ptb,-canary,-development}: update various
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
(cherry picked from commit ef16b72d68)
2025-11-26 15:14:56 +00:00
Sefa Eyeoglu
66385ed8f4 discord: rework sources and update script
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
(cherry picked from commit ec1d2d44e6)
2025-11-26 15:14:56 +00:00
Karl Hallsby
468942df19 octavePackages.video: Fix build & install
video uses a slightly different build system from other packages. It
uses an autotools bootstrap script to generate a configure script that
detects the ffmpeg necessities.

HOWEVER, we notably do not actually run the Makefile that the
configure script generates! This pre-build step only creates a
"release tarball"! Octave compiles this "release tarball" in
buildOctavePackage's normal buildPhase with
"octave-cli --eval 'pkg build ...'".

(cherry picked from commit 6600862e02)
2025-11-26 14:45:31 +00:00
Ryan Horiguchi
0a75b5ec0d pihole-ftl: fix useDnsmasqConfig = true and add test
(cherry picked from commit 42097fb389)
2025-11-26 14:43:56 +00:00
David McFarland
ba4f4e74ef [Backport release-25.11] cygwin.w32api: limit platforms to cygwin (#465270) 2025-11-26 14:06:28 +00:00
David McFarland
6fefac5a6b cygwin.w32api: limit platforms to cygwin
This is currently failing on linux, and isn't needed outside of Cygwin
at the moment.

(cherry picked from commit 9dd0669e49)
2025-11-26 13:58:49 +00:00
Maciej Krüger
595035eb6f [Backport release-25.11] odoo16: drop (#465267) 2025-11-26 13:48:27 +00:00
Aleksana
1e8b959290 [Backport release-25.11] palettum: fix ffmpeg dependancy (#465260) 2025-11-26 13:44:28 +00:00
Alexander Sieg
bbe492f150 odoo16: drop
Odoo 16 is end of support as of September 2025.
https://www.odoo.com/documentation/19.0/administration/supported_versions.html

(cherry picked from commit 8787981d3b)
2025-11-26 13:43:30 +00:00
Hikiru
feb88d58da palettum: fix ffmpeg dependancy
(cherry picked from commit 4cc78919f5)
2025-11-26 13:31:17 +00:00
Aleksana
2a5052366a [Backport release-25.11] python3Packages.flask-security: 5.7.0 -> 5.7.1 (#465197) 2025-11-26 13:30:12 +00:00
OPNA2608
7767c77843 open-watcom-v2-unwrapped: Only pull in DOSBox when building docs, fix docs build
We were doing it like this in the past, only changed to unconditionally pulling in DOSBox cus upstream said it
might be necessary.

Turns out that the docs build hasn't worked in awhile cus DOSBox doesn't launch without OpenGL available to it.
Since the docsless variant is unaffected, DOSBox does only seem necessary when building the docs.

Also, fix the docs build by using llvmpipe for OpenGL.

(cherry picked from commit 48886168b3)
2025-11-26 13:13:00 +00:00
OPNA2608
f887c5b408 {open-watcom-v2-full-unwrapped,open-watcom-v2-full}: init at 0-unstable-2025-11-15
To allow testing of docs & GUI building, to make sure this doesn't *completely* bitrot...

(cherry picked from commit 791e9025d3)
2025-11-26 13:13:00 +00:00
OPNA2608
495569a6bf open-watcom-v2-unwrapped: Do abit of housekeeping
- rec -> finalAttrs
- Drop meta-wide with lib
- GUI tool building can default to stdenv.hostPlatform.isWindows, prolly closer to correct than defaulting to false
- substituteInPlace accepts multiple files, for loop not necessary
- Just to be safe, reject non-GNU & non-Clang compilers. Who knows what Watcom needs to build on those...
- Use lib functions for path-related stuff (makeBinPath, getExe)

(cherry picked from commit 13b7a967c8)
2025-11-26 13:13:00 +00:00
OPNA2608
bca8055d7f {open-watcom-v2,open-watcom-bin}: Adjust looked-for strings in file output
(cherry picked from commit fe7ee79571)
2025-11-26 13:13:00 +00:00
OPNA2608
1a1ce7d182 open-watcom-v2-unwrapped: 0-unstable-2025-05-07 -> 0-unstable-2025-11-15
(cherry picked from commit d08fb84387)
2025-11-26 13:13:00 +00:00
Aleksana
6556c59571 [Backport release-25.11] certstream-server-go: 1.8.1 -> 1.8.2 (#465247) 2025-11-26 13:06:17 +00:00
Aleksana
8b510f9f0c [Backport release-25.11] lsp-plugins: fix build options (#465249) 2025-11-26 13:02:28 +00:00
mrtnvgr
addbb46f50 lsp-plugins: fix build options
(cherry picked from commit dcb8c748d6)
2025-11-26 12:56:49 +00:00
R. Ryantm
5db2f612cd certstream-server-go: 1.8.1 -> 1.8.2
(cherry picked from commit 7995012668)
2025-11-26 12:51:53 +00:00
Aleksana
69bbc3a582 [Backport release-25.11] ifstate: 2.2.0 -> 2.2.1 (#465238) 2025-11-26 12:49:42 +00:00
Marcel
c02f9591c9 ifstate: 2.2.0 -> 2.2.1
(cherry picked from commit 442ad3f8e5)
2025-11-26 12:31:17 +00:00
Martin Weinelt
e8fcedf62c [Backport release-25.11] python315: 3.15.0a1 -> 3.15.0a2 (#465152) 2025-11-26 12:03:39 +00:00
Grimmauld
e939a439b4 [Backport release-25.11] librewolf-unwrapped: 144.0.2 -> 145.0.1 (#465221) 2025-11-26 11:31:04 +00:00
R. Ryantm
67292fdd7a librewolf-unwrapped: 144.0.2 -> 145.0.1
(cherry picked from commit 4e537a3f7f)
2025-11-26 10:53:37 +00:00
Aleksana
91341cd735 [Backport release-25.11] umami: 3.0.0 -> 3.0.1 (#465211) 2025-11-26 10:15:29 +00:00
Aleksana
c6cbc11405 [Backport release-25.11] vicinae: 0.16.8 → 0.16.10, fix build with strictDeps (#465207) 2025-11-26 10:15:09 +00:00
Aleksana
2ab2c07835 [Backport release-25.11] impression: 3.5.3 -> 3.5.4 (#465200) 2025-11-26 10:14:22 +00:00
Diogo Correia
82162894cb umami: 3.0.0 -> 3.0.1
(cherry picked from commit 0e4a63c79b)
2025-11-26 10:10:00 +00:00
whispers
cca4100ff4 vicinae: fix build with strictDeps
(cherry picked from commit baa38f15a7)
2025-11-26 09:59:59 +00:00
whispers
aae2294548 vicinae: 0.16.8 → 0.16.10
Release notes:
- https://github.com/vicinaehq/vicinae/releases/tag/v0.16.9
- https://github.com/vicinaehq/vicinae/releases/tag/v0.16.10

(cherry picked from commit 31097b8ede)
2025-11-26 09:59:59 +00:00
Ivan Mincik
a6b73eb410 mapserver: fix mapscript library reference on Darwin
Fix

```
    from . import _mapscript
ImportError:
dlopen(/nix/store/av8n3hrg1rs2akhi7b3x3rhn2ksap9fd-mapserver-8.4.1/lib/python3.13/site-packages/mapscript/_mapscript.so,
0x0002): Library not loaded: @rpath/libmapserver.2.dylib
  Referenced from: <9D2B480C-B82F-3E1F-93A8-E72C4A175236>
/nix/store/av8n3hrg1rs2akhi7b3x3rhn2ksap9fd-mapserver-8.4.1/lib/python3.13/site-packages/mapscript/_mapscript.so
  Reason: no LC_RPATH's found
```

(cherry picked from commit f1165f8e40)
2025-11-26 09:55:42 +00:00
Robert Schütz
be41a064b0 impression: 3.5.3 -> 3.5.4
Diff: https://gitlab.com/adhami3310/Impression/-/compare/v3.5.3...v3.5.4

Changelog: https://gitlab.com/adhami3310/Impression/-/releases/v3.5.4
(cherry picked from commit 7e082df4ac)
2025-11-26 09:52:36 +00:00
Fabian Affolter
7e4a2e664f python313Packages.flask-security: remove disabled
(cherry picked from commit 935a4d91db)
2025-11-26 09:24:44 +00:00
R. Ryantm
12721c8660 python3Packages.flask-security: 5.7.0 -> 5.7.1
(cherry picked from commit 27e7d3007f)
2025-11-26 09:24:43 +00:00
kirillrdy
53fc713e23 [Backport release-25.11] dolibarr: 22.0.2 -> 22.0.3 (#465101) 2025-11-26 09:16:32 +00:00
Niklas Korz
f9a9557fb9 [Backport release-25.11] zed-editor: 0.213.7 -> 0.213.8 (#465181) 2025-11-26 09:05:36 +00:00
botnk
201d9ca379 zed-editor: 0.213.7 -> 0.213.8
Changelog: https://github.com/zed-industries/zed/releases/tag/v0.213.8
(cherry picked from commit 5d3c652fd5)
2025-11-26 08:09:30 +00:00
Atemu
6700ae1299 [Backport release-25.11] linux_xanmod, linux_xanmod_latest: 2025-11-24 (#464913) 2025-11-26 07:57:04 +00:00
Martin Weinelt
c3cccda61a python315: 3.15.0a1 -> 3.15.0a2
https://docs.python.org/3.15/whatsnew/changelog.html#python-3-15-0-alpha-2
(cherry picked from commit 3f07d3c307)
2025-11-26 05:11:48 +00:00
nixpkgs-ci[bot]
b0b1163d76 [Backport release-25.11] intelephense: 1.14.4 -> 1.16.1 (#465132) 2025-11-26 05:00:27 +00:00
Artturin
1dffd7255f [Backport release-25.11] flashfocus: relax cffi dep (#465098) 2025-11-26 03:01:55 +00:00
Michael Daniels
c4036e1402 i18next-cli: link to CHANGELOG.md instead of github release page
Easier to view multiple releases' changelogs this way.

(cherry picked from commit 6fbc1cea0a)
2025-11-26 02:58:50 +00:00
Michael Daniels
52f453de12 i18next-cli: 1.20.4 -> 1.24.21
Fixes: GHSA-5j98-mcp5-4vw2, GHSA-mh29-5h37-fv8m

Changelog: https://github.com/i18next/i18next-cli/blob/v1.24.21/CHANGELOG.md
(cherry picked from commit 81e5939e0c)
2025-11-26 02:58:50 +00:00
Michael Daniels
da399a9cca licensed: regenerate lockfiles
Fixes: GHSA-353f-x4gh-cqq8
(cherry picked from commit c2367e068c)
2025-11-26 02:58:23 +00:00
Michael Daniels
80cae34fa6 intelephense: 1.14.4 -> 1.16.1
Diff: https://npmdiff.dev/intelephense/1.14.4/1.16.1
(cherry picked from commit 5b00d2d6b2)
2025-11-26 02:58:18 +00:00
Philip Taron
5cbade0e39 [Backport release-25.11] tailscale: 1.90.8 -> 1.90.9 (#465119) 2025-11-26 01:43:41 +00:00
Aleksana
ae85bcaf3b [Backport release-25.11] libcosmicAppHook: use RUSTFLAGS instead of platform specific flags (#465118) 2025-11-26 01:32:09 +00:00
Philip Taron
1a63bf4653 tailscale: 1.90.8 -> 1.90.9
Diff: https://github.com/tailscale/tailscale/compare/v1.90.8...v1.90.9

Changelog: https://tailscale.com/changelog#client

Two fixes:

* `tailscaled` no longer deadlocks during event bursts.
* The client no longer hangs after wake up when [port mapping](https://tailscale.com/kb/1411/device-connectivity#port-mapping) is in use and interfaces are slow to become available.

(cherry picked from commit 13cf9b94f2)
2025-11-26 01:25:40 +00:00
aleksana
27e07b0580 libcosmicAppHook: use RUSTFLAGS instead of platform specific flags
This ensures these flags are picked up correctly, after latest rust
update. We can revert this if we solve the root cause later.

See https://github.com/NixOS/nixpkgs/issues/464392

(cherry picked from commit d2c62217d3)
2025-11-26 01:25:40 +00:00
Martin Weinelt
330fc1a93e [Backport release-25.11] Firefox: 145.0.1 -> 145.0.2 (#465109) 2025-11-26 00:43:09 +00:00
Martin Weinelt
3cb910d8c6 firefox-bin-unwrapped: 145.0.1 -> 145.0.2
https://www.firefox.com/en-US/firefox/145.0.2/releasenotes/
(cherry picked from commit 8ea880309d)
2025-11-26 00:38:22 +00:00
Martin Weinelt
4768062c34 firefox-unwrapped: 145.0.1 -> 145.0.2
https://www.firefox.com/en-US/firefox/145.0.2/releasenotes/
(cherry picked from commit a44c79caa2)
2025-11-26 00:38:22 +00:00
R. Ryantm
988bd5769d dolibarr: 22.0.2 -> 22.0.3
(cherry picked from commit d94efbe583)
2025-11-26 00:15:57 +00:00
quantenzitrone
3b69cb7807 flashfocus: relax cffi dep
(cherry picked from commit 8e52649bc2)
2025-11-26 00:11:47 +00:00
dish
a3d9a73350 [Backport release-25.11] nixos/tiddlywiki: use top-level tiddlywiki package (#465094) 2025-11-26 00:04:07 +00:00
Tomodachi94
9bdfd7357e nixos/tiddlywiki: use top-level tiddlywiki package
`nodePackages.tiddlywiki` is an alias.

Also, let's use `lib.getExe`, since that's more idiomatic.

(cherry picked from commit 1507a8ada6)
2025-11-25 23:56:21 +00:00
Nick Cao
dc8beec4aa [Backport release-25.11] quill-log: 11.0.0 -> 11.0.1 (#465071) 2025-11-25 23:53:44 +00:00
Nick Cao
8edf367466 [Backport release-25.11] scooter: 0.8.3 -> 0.8.4 (#465069) 2025-11-25 23:53:17 +00:00
Mauricio Collares
29592dd029 [Backport release-25.11] pari: 2.17.2 -> 2.17.3 (#465076) 2025-11-25 23:27:41 +00:00
K900
20fbac5522 [Backport release-25.11] linux-firmware: 20251111 -> 20251125 (#465082) 2025-11-25 23:08:55 +00:00
K900
4a46dd7b9d linux-firmware: 20251111 -> 20251125
Diff: 20251111...20251125
(cherry picked from commit ad44d985b7)
2025-11-25 23:04:08 +00:00
R. Ryantm
2de470a6cf pari: 2.17.2 -> 2.17.3
(cherry picked from commit a212da0e15)
2025-11-25 22:37:40 +00:00
StepBroBD
c3bbe09ec3 [Backport release-25.11] floorp-bin: 12.6.0 -> 12.7.0 (#464973) 2025-11-25 22:17:05 +00:00
R. Ryantm
2d048eaec1 quill-log: 11.0.0 -> 11.0.1
(cherry picked from commit 7292e19fc8)
2025-11-25 21:59:42 +00:00
Jost Alemann
0ca87d3b5d scooter: 0.8.3 -> 0.8.4
Changelog: https://github.com/thomasschafer/scooter/releases/tag/v0.8.4
Diff: https://github.com/thomasschafer/scooter/compare/v0.8.3...v0.8.4
(cherry picked from commit 049dff2097)
2025-11-25 21:52:25 +00:00
Fabian Affolter
740856ac7f [Backport release-25.11] python313Packages.timezonefinder: 8.0.0 -> 8.1.0 (#464862) 2025-11-25 21:10:34 +00:00
Martin Weinelt
bdc8c440db [Backport release-25.11] quictls: remove; nginx/angie: remove quic flavors; haproxy: migrate to openssl (#465011) 2025-11-25 21:07:50 +00:00
Felix Bargfeldt
bc9e64ef2c [Backport release-25.11] olivetin: 2025.11.11 -> 2025.11.25 (#465010) 2025-11-25 18:27:08 +00:00
Alyssa Ross
0f1531cb39 [Backport release-25.11] linuxKernel.kernels.linux_lqx: 6.17.7 -> 6.17.9 (#464979) 2025-11-25 18:18:18 +00:00
Martin Weinelt
7413e8e7c4 quictls: drop
This OpenSSL fork reached its end of life when QUIC support was merged
upstream.

Closes: #464720
(cherry picked from commit 6df31c1a4c)
2025-11-25 18:12:23 +00:00
Martin Weinelt
94201defa9 haproxy: remove quictls support
QuicTLS was a fork of OpenSSL which ended development in April 2025 and
is stuck at an OpenSSL 3.3.0 base commit.

The resulting QUIC functionality has been merged into and released in
OpenSSL 3.5.0.

(cherry picked from commit c557ebe0db)
2025-11-25 18:12:23 +00:00
Martin Weinelt
2d88be7007 nixos/nginx: add support for PQ key exchanges in TLS1.3
The Mozilla Server-Side TLS guide is lagging quite a bit, because since
OpenSSL 3.5.0 we can provide hybrid key exchanges, that hopefully protect
against "store now, decrypt later" attacks, that could be applied once
capable quantum computers eventually come into existance.

(cherry picked from commit 788e084c85)
2025-11-25 18:12:23 +00:00
Martin Weinelt
a457926018 nixosTests.nginx-http3: fix test
The network-online.target was never configured for the client.

(cherry picked from commit 97d904551f)
2025-11-25 18:12:23 +00:00
Martin Weinelt
c4206c3980 nginxQuic, angieQuic: retire
> The ngx_http_v3_module module (1.25.0) provides experimental support
> for HTTP/3.

Yes, still experimental, at least in nginx. No mention in angie.

> 0-RTT support requires the OpenSSL library version 3.5.1 or higher.
> Alternatively, BoringSSL, LibreSSL, or QuicTLS libraries can be used to
>  build and run this module.

But OpenSSL gets the first mention and our OpenSSL version right now is
3.6.0.

That means we don't need two more packages to ship nginx built with
QuicTLS which does not yet support PQ crypto right.

(cherry picked from commit 6d95c0c8b6)
2025-11-25 18:12:23 +00:00
Defelo
4d29689240 olivetin: 2025.11.11 -> 2025.11.25
Changelog: https://github.com/OliveTin/OliveTin/releases/tag/2025.11.25
Diff: https://github.com/OliveTin/OliveTin/compare/2025.11.11...2025.11.25
(cherry picked from commit d9cd6390fe)
2025-11-25 18:09:26 +00:00
Tom Hunze
77dcdbb680 python313Packages.optype: 0.14.0 -> 0.14.0-unstable-2025-11-10
Upstream updated `uv_build` on `master`.

(cherry picked from commit 555fb582e1)
2025-11-25 17:42:37 +00:00
Tom Hunze
8d9f359993 python313Packages.numpy-typing-compat: relax uv_build constraint
(cherry picked from commit 71bb729391)
2025-11-25 17:42:36 +00:00
Felix Bargfeldt
c49f223d06 [Backport release-25.11] tokei: 13.0.0-alpha.9 -> 13.0.0 (#464994) 2025-11-25 17:42:33 +00:00
Wolfgang Walther
4ecce935c7 [Backport release-25.11] workflows/merge-group: make check & build required (#464997) 2025-11-25 17:36:07 +00:00
Felix Bargfeldt
dca82c3162 [Backport release-25.11] hurl: 7.0.0 -> 7.1.0 (#464989) 2025-11-25 17:33:49 +00:00
Wolfgang Walther
a75f6101f3 workflows/merge-group: make check & build required
These jobs were recently introduced into the merge queue - but I forgot
to make them actually required. They sometimes fail - but the PR is
still merged. Dumb.

(cherry picked from commit 2dd1eca32b)
2025-11-25 17:32:51 +00:00
Niklas Korz
a7be1956c9 [Backport release-25.11] zed-editor: 0.213.4 -> 0.213.7 (#464933) 2025-11-25 17:29:25 +00:00
Defelo
a093b9f31f tokei: 13.0.0-alpha.9 -> 13.0.0
Changelog: https://github.com/XAMPPRocky/tokei/blob/v13.0.0/CHANGELOG.md
Diff: https://github.com/XAMPPRocky/tokei/compare/v13.0.0-alpha.9...v13.0.0
(cherry picked from commit e36057a72f)
2025-11-25 17:26:22 +00:00
R. Ryantm
2de0145464 hurl: 7.0.0 -> 7.1.0
(cherry picked from commit fb34ec9e8e)
2025-11-25 17:15:07 +00:00
R. Ryantm
03358d6f9c linuxKernel.kernels.linux_lqx: 6.17.7 -> 6.17.9
(cherry picked from commit 74d368c0ad)
2025-11-25 16:27:22 +00:00
Christoph Heiss
afa2c2227d floorp-bin: 12.6.0 -> 12.7.0
Release notes: https://blog.floorp.app/en/release/12.7.0/
Git changelog: https://github.com/Floorp-Projects/Floorp/compare/v12.6.0...v12.7.0

Signed-off-by: Christoph Heiss <christoph@c8h4.io>
(cherry picked from commit 0db091037c)
2025-11-25 16:04:00 +00:00
nixpkgs-ci[bot]
da2f7eae3b [Backport release-25.11] unison: 2.53.7 -> 2.53.8 (#464960) 2025-11-25 15:43:38 +00:00
Yongun Seong
f20afb881e unison: patch to to correctly inject env into ocamlfind
(cherry picked from commit 562c635fb7)
2025-11-25 15:26:40 +00:00
R. Ryantm
bb9d3f20bd unison: 2.53.7 -> 2.53.8
(cherry picked from commit 724b87a46a)
2025-11-25 15:26:40 +00:00
StepBroBD
5058b1eda5 [Backport release-25.11] caddy: Add versionCheckHook (#464956) 2025-11-25 15:24:43 +00:00
StepBroBD
495db8cff8 [Backport release-25.11] ocamlPackages.graphics: 5.1.2 → 5.2.0 (#464954) 2025-11-25 15:24:17 +00:00
Vincent Laporte
d62be50b20 [Backport release-25.11] ocamlPackages.{ezxmlm,mparser,ocaml-print-intf,safepass}: small cleaning (#464953) 2025-11-25 15:17:59 +00:00
Jonathan Davies
804d072bf4 caddy: Add changelog
(cherry picked from commit bf9f78f87d)
2025-11-25 15:14:04 +00:00
Jonathan Davies
b741d90719 caddy: Add finalAttrs
(cherry picked from commit 9449efacb1)
2025-11-25 15:14:03 +00:00
Jonathan Davies
745126aeca caddy: Add versionCheckHook
(cherry picked from commit 8a985abbe8)
2025-11-25 15:14:03 +00:00
Vincent Laporte
268faffad9 [Backport release-25.11] coqPackages.mkCoqDerivation: add support for release.<version>.hash (#464952) 2025-11-25 15:09:31 +00:00
Gaétan Lepage
d53b1b542b [Backport release-25.11] luaPackages: update on 2025-11-24 (#464773) 2025-11-25 15:08:21 +00:00
Vincent Laporte
a3c90d6221 ocamlPackages.graphics: 5.1.2 → 5.2.0
(cherry picked from commit 7641c499ec)
2025-11-25 15:03:08 +00:00
Vincent Laporte
06b6e6670d ocamlPackages.ocaml-print-intf: small cleaning
(cherry picked from commit a72350e9ea)
2025-11-25 15:02:55 +00:00
Vincent Laporte
403f5d1a81 ocamlPackages.ezxmlm: small cleaning
(cherry picked from commit b176013024)
2025-11-25 15:02:55 +00:00
Vincent Laporte
8121f7b3b1 ocamlPackages.safepass: small cleaning
(cherry picked from commit 68bd08d01a)
2025-11-25 15:02:55 +00:00
Vincent Laporte
d66d93392d ocamlPackages.mparser: small cleaning
(cherry picked from commit 6f7a8a63fa)
2025-11-25 15:02:55 +00:00
Yifei Sun
b5b3a88cd3 coqPackages.mkCoqDerivation: add support for release.<version>.hash
Per https://github.com/NixOS/nixpkgs/pull/436779 review comment.

This is the first step to support SRI hashes for Rocq packages.

Co-authored-by: Vincent Laporte <Vincent.Laporte@gmail.com>
(cherry picked from commit f289f9c97f)
2025-11-25 14:58:30 +00:00
botnk
85504d1e24 zed-editor: 0.213.4 -> 0.213.7
Changelog: https://github.com/zed-industries/zed/releases/tag/v0.213.7
(cherry picked from commit c7becfe726)
2025-11-25 13:31:42 +00:00
eljamm
76b149063d linux_xanmod_latest: 6.17.8 -> 6.17.9
- Changelog: https://dl.xanmod.org/changelog/6.17/ChangeLog-6.17.9-xanmod1.gz
- Diff: https://gitlab.com/xanmod/linux/-/compare/6.17.8-xanmod1..6.17.9-xanmod1?from_project_id=51590166

(cherry picked from commit bf9d8fe36e)
2025-11-25 12:01:31 +00:00
eljamm
8cffb05c1b linux_xanmod: 6.12.58 -> 6.12.59
- Changelog: https://dl.xanmod.org/changelog/6.12/ChangeLog-6.12.59-xanmod1.gz
- Diff: https://gitlab.com/xanmod/linux/-/compare/6.12.58-xanmod1..6.12.59-xanmod1?from_project_id=51590166

(cherry picked from commit e831558c73)
2025-11-25 12:01:31 +00:00
Wolfgang Walther
d5b1ebbd15 [Backport release-25.11] workflows: run smaller jobs on ubuntu-slim (#464898) 2025-11-25 11:56:20 +00:00
Wolfgang Walther
508a2cb9e3 Revert "workflows: run smaller jobs on ubuntu-slim"
This partially reverts commit 1289456d3b.

The external action we use to merge branches runs in a docker container,
which is not possible with the ubuntu-slim runner.

(cherry picked from commit 48a39281ff)
2025-11-25 12:51:32 +01:00
kpbaks
a5f12d2430 tuios: init at 0.3.4
(cherry picked from commit a330b01dc5)
2025-11-25 11:34:16 +00:00
Aleksana
a73309858b [Backport release-25.11] weechat-unwrapped: 4.7.1 -> 4.7.2 (#464892) 2025-11-25 11:31:56 +00:00
Aleksana
ac2e05cdfa [Backport release-25.11] acsccid: 1.1.12 -> 1.1.13 (#464895) 2025-11-25 11:31:53 +00:00
Aleksana
fd160c9885 [Backport release-25.11] dnsproxy: 0.77.0 -> 0.78.1 (#464894) 2025-11-25 11:31:42 +00:00
Alex Epelde
016d5b11ed mathematica: 14.2.1 -> 14.3.0
https://writings.stephenwolfram.com/2025/08/new-features-everywhere-launching-version-14-3-of-wolfram-language-mathematica/
(cherry picked from commit 79120803c6)
2025-11-25 11:27:42 +00:00
Aleksana
74a87ba6ae [Backport release-25.11] antigravity: 1.11.3 -> 1.11.5 (#464875) 2025-11-25 11:14:32 +00:00
Wolfgang Walther
b627bd0c5e workflows: run smaller jobs on ubuntu-slim
This is in public preview now. These runners run in a docker container
with only a single vCPU instead of 4 like the other jobs. For most of
our jobs, this should be plenty, except for eval and linting.

(cherry picked from commit 1289456d3b)
2025-11-25 11:05:11 +00:00
R. Ryantm
eba1ec2a52 acsccid: 1.1.12 -> 1.1.13
(cherry picked from commit 718427668b)
2025-11-25 11:01:50 +00:00
Aleksana
4e0d357100 [Backport release-25.11] unicode-paracode: use unicode-character-database for UnicodeData.txt (#464887) 2025-11-25 11:01:25 +00:00
Ashish SHUKLA
f1799399da dnsproxy: 0.77.0 -> 0.78.1
Changes: https://github.com/AdguardTeam/dnsproxy/releases/tag/v0.78.0
         https://github.com/AdguardTeam/dnsproxy/releases/tag/v0.78.1
(cherry picked from commit bdc439acb6)
2025-11-25 11:00:47 +00:00
Aleksana
e1fb02882c [Backport release-25.11] services.self-deploy: fix nix-build argument format (#464886) 2025-11-25 10:56:46 +00:00
Aleksana
02ca97329a [Backport release-25.11] tdf: Remove profiling script (#464883) 2025-11-25 10:56:41 +00:00
Martin Weinelt
e3df51101a weechat-unwrapped: 4.7.1 -> 4.7.2
https://github.com/weechat/weechat/releases/tag/v4.7.2
(cherry picked from commit 1167f68a8a)
2025-11-25 10:55:54 +00:00
Wolfgang Walther
d0bc0e719b [Backport release-25.11] cups-kyocera-ecosys-m552x-p502x: fix URL & change maintainer (#464885) 2025-11-25 10:55:49 +00:00
Wolfgang Walther
ff50be96e8 [Backport release-25.11] ci/pinned: update (#464879) 2025-11-25 10:55:21 +00:00
ash
dbfaec8673 unicode-paracode: use unicode-character-database for UnicodeData.txt
(cherry picked from commit d0412c717a)
2025-11-25 10:51:28 +00:00
Kylie McClain
a68b2cbfb8 services.self-deploy: fix nix-build argument format
nix-build doesn't accept `--attr=<attribute>` as a valid way to
build a specific attribute; it needs to be passed without the
equal sign, as two separate arguments.

(cherry picked from commit 708b85acca)
2025-11-25 10:50:51 +00:00
Marco "Capypara" Köpcke
9daa914a7e cups-kyocera-ecosys-m552x-p502x: change maintainer
(cherry picked from commit 9584d36448)
2025-11-25 10:50:03 +00:00
Marco "Capypara" Köpcke
ff072fae52 cups-kyocera-ecosys-m552x-p502x: fix URL
(cherry picked from commit e04687d8ee)
2025-11-25 10:50:03 +00:00
Aleksana
3098e61caf [Backport release-25.11] bazaar: init at 0.5.10 (#464880) 2025-11-25 10:49:45 +00:00
Max Dexheimer
6bfe1ddfa3 tdf: Remove profiling script
(cherry picked from commit 5df421ee1e)
2025-11-25 10:48:13 +00:00
Tom van Dijk
daa7fafd9e bazaar: init at 0.5.10
Co-authored-by: Jasi <normalc@posteo.net>
(cherry picked from commit 9a59118428)
2025-11-25 10:41:04 +00:00
Wolfgang Walther
e0af765cfb ci/pinned: update
This gives us:
- actionlint 1.7.9 to support ubuntu-slim runners
- editorconfig-checker 3.5.0
- Nix 2.32.4 to fix the performance regression for Eval from 2.32.2

From the nixpkgs-unstable channel:
https://hydra.nixos.org/build/314568999#tabs-buildinputs

Changes for treefmt-nix:
4ef3dfdbb5...5b4ee75aee

(cherry picked from commit 1f29081055)
2025-11-25 10:36:12 +00:00
ZHAO Jin-Xiang
5c4076bedd antigravity: 1.11.3 -> 1.11.5
(cherry picked from commit bb3085b09b)
2025-11-25 10:32:12 +00:00
ZHAO Jin-Xiang
7bb8ccfb84 antigravity: simplify update script and add typedefs for update scripts
(cherry picked from commit 73ddae7224)
2025-11-25 10:32:11 +00:00
Wolfgang Walther
bce026f06f [25.11] .github/labeler-no-sync: remove release-25.05 label for CI stuff (#464874) 2025-11-25 10:29:39 +00:00
Aleksana
820257e52a [Backport release-25.11] libxinerama: resolve license todo (#464872) 2025-11-25 10:27:39 +00:00
Wolfgang Walther
ce49026364 .github/labeler-no-sync: remove release-25.05 label for CI stuff
This is done via master directly now.
2025-11-25 11:25:54 +01:00
quantenzitrone
98a85d16e1 libxinerama: resolve license todo
X11-no-permit-persons got accepted upstream:
https://github.com/spdx/license-list-XML/pull/2877

(cherry picked from commit 37a749b64a)
2025-11-25 10:19:15 +00:00
quantenzitrone
166cc07179 lib.licenses.x11NoPermitPersons: add
(cherry picked from commit 7e68960d7c)
2025-11-25 10:19:15 +00:00
Niklas Korz
f7437c5e42 [Backport release-25.11] erlang_28: 28.1.1 -> 28.2 (#464772) 2025-11-25 09:27:38 +00:00
Fabian Affolter
d45bd7690a python313Packages.timezonefinder: 8.0.0 -> 8.1.0
Changelog: https://github.com/jannikmi/timezonefinder/blob/8.1.0/CHANGELOG.rst
(cherry picked from commit 477742d2c1)
2025-11-25 09:27:31 +00:00
Niklas Korz
e08a8b2c83 [Backport release-25.11] trayscale: 0.18.4 -> 0.18.5 (#464858) 2025-11-25 09:26:16 +00:00
Niklas Korz
60a91a020f [Backport release-25.11] automatic-timezoned: 2.0.102 -> 2.0.103 (#464857) 2025-11-25 09:26:03 +00:00
Niklas Korz
fdcd7afc27 [Backport release-25.11] tbox: 1.7.8 -> 1.7.9 (#464856) 2025-11-25 09:25:53 +00:00
Niklas Korz
4db9694fda [Backport release-25.11] snipe-it: 8.3.5 -> 8.3.6 (#464845) 2025-11-25 09:25:44 +00:00
Niklas Korz
585ad5b93b [Backport release-25.11] python3Packages.molecule: 25.11.0 -> 25.11.1 (#464824) 2025-11-25 09:25:33 +00:00
Niklas Korz
4e9a35942c [Backport release-25.11] openbao: 2.4.3 -> 2.4.4 (#464793) 2025-11-25 09:25:08 +00:00
Niklas Korz
1b75c2cb36 [Backport release-25.11] terminal-typeracer: 2.1.3 -> 2.1.5 (#464780) 2025-11-25 09:24:45 +00:00
Niklas Korz
24b5592065 [Backport release-25.11] rs-tftpd: 0.5.0 -> 0.5.1 (#464774) 2025-11-25 09:24:33 +00:00
Niklas Korz
70f63fdcd8 [Backport release-25.11] mpris-notifier: 0.2.0 -> 0.2.1 (#464754) 2025-11-25 09:24:11 +00:00
Niklas Korz
916f49aaae [Backport release-25.11] ab-av1: 0.10.1 -> 0.10.2 (#464731) 2025-11-25 09:24:03 +00:00
Niklas Korz
630b756445 [Backport release-25.11] kubectl-view-secret: 0.15.0 -> 0.15.1 (#464729) 2025-11-25 09:23:53 +00:00
Niklas Korz
9d2d4f784c [Backport release-25.11] gowitness: 3.1.0 -> 3.1.1 (#464728) 2025-11-25 09:23:41 +00:00
Niklas Korz
0778b7db42 [Backport release-25.11] sshocker: 0.3.8 -> 0.3.9 (#464727) 2025-11-25 09:23:33 +00:00
Niklas Korz
9e11b13ef7 [Backport release-25.11] checkov: 3.2.494 -> 3.2.495 (#464726) 2025-11-25 09:23:22 +00:00
Niklas Korz
cdf1376e72 [Backport release-25.11] cdncheck: 1.2.10 -> 1.2.11 (#464725) 2025-11-25 09:23:08 +00:00
Niklas Korz
69a55b238d [Backport release-25.11] terraform-ls: 0.38.2 -> 0.38.3 (#464723) 2025-11-25 09:22:50 +00:00
R. Ryantm
adcad5431d trayscale: 0.18.4 -> 0.18.5
(cherry picked from commit 5c32cb2ace)
2025-11-25 09:18:13 +00:00
R. Ryantm
306f881478 automatic-timezoned: 2.0.102 -> 2.0.103
(cherry picked from commit f109030d2b)
2025-11-25 09:18:06 +00:00
R. Ryantm
861b1c8f61 tbox: 1.7.8 -> 1.7.9
(cherry picked from commit e42bdd4f6f)
2025-11-25 09:17:59 +00:00
Aleksana
f7d20db998 [Backport release-25.11] qqmusic: 1.1.7 -> 1.1.8 (#464850) 2025-11-25 09:16:39 +00:00
Lan Tian
e1146432ce qqmusic: 1.1.7 -> 1.1.8
(cherry picked from commit 14bdba52f9)
2025-11-25 08:56:22 +00:00
transcaffeine
0ccf1a17d5 snipe-it: 8.3.5 -> 8.3.6
Release notes: https://github.com/grokability/snipe-it/releases/tag/v8.3.6
Full changelog: https://github.com/grokability/snipe-it/compare/v8.3.5...v8.3.6

(cherry picked from commit 9d7d827b29)
2025-11-25 08:38:12 +00:00
nixpkgs-ci[bot]
95030367d0 [Backport release-25.11] yq-go: 4.49.1 -> 4.49.2 (#464817) 2025-11-25 07:51:03 +00:00
R. Ryantm
6991cde1bc python3Packages.molecule: 25.11.0 -> 25.11.1
(cherry picked from commit 1529149958)
2025-11-25 06:49:16 +00:00
nixpkgs-ci[bot]
3e8d007554 [Backport release-25.11] files-cli: 2.15.139 -> 2.15.152 (#464732) 2025-11-25 06:41:11 +00:00
Sizhe Zhao
bcb3a43c2a yq-go: 4.49.1 -> 4.49.2
(cherry picked from commit 3e0895287b)
2025-11-25 06:13:03 +00:00
misuzu
0941ab5d94 [Backport release-25.11] clickhouse, clickhouse-lts: fix darwin builds (#464694) 2025-11-25 04:49:40 +00:00
emilylange
bfdca8191e openbao: 2.4.3 -> 2.4.4
https://github.com/openbao/openbao/releases/tag/v2.4.4

diff: https://github.com/openbao/openbao/compare/v2.4.3...v2.4.4
(cherry picked from commit b7dc0ca6c9)
2025-11-25 03:28:43 +00:00
Aleksana
8f23b3f917 [Backport release-25.11] rnp: 0.18.0 -> 0.18.1 (#463801) (#464757) 2025-11-25 02:55:08 +00:00
Aleksana
7480c1f9f4 [Backport release-25.11] gemini-cli: prevent reference to npmDeps (#464777) 2025-11-25 02:41:05 +00:00
Pui Yong Qing
95cab9cc9f terminal-typeracer: 2.1.3 -> 2.1.5
(cherry picked from commit 4df2ede0b3)
2025-11-25 02:37:28 +00:00
Marie Ramlow
5fc2d310be gemini-cli: prevent reference to npmDeps
(cherry picked from commit 17df084030)
2025-11-25 02:32:10 +00:00
R. Ryantm
d62e1330fc rs-tftpd: 0.5.0 -> 0.5.1
(cherry picked from commit 480bb3b87a)
2025-11-25 02:11:42 +00:00
Austin Horstman
cdbf199c04 luaPackages: update on 2025-11-24
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
(cherry picked from commit 91c199b875)
2025-11-25 02:10:31 +00:00
Adam C. Stephens
f5b46c287d erlang_28: 28.1.1 -> 28.2
Changelog: https://github.com/erlang/otp/releases/tag/OTP-28.2
(cherry picked from commit fea32a68d1)
2025-11-25 02:09:21 +00:00
Aleksana
60d8b32a4f [Backport release-25.11] komikku: 1.92.0 -> 1.94.0 (#464756) 2025-11-25 02:03:38 +00:00
Aleksana
47cf94e2ca [Backport release-25.11] committed: fix build on darwin (#464758) 2025-11-25 02:03:10 +00:00
Aleksana
1a351a6fd6 [Backport release-25.11] amp-cli: disable update check (#464763) 2025-11-25 01:29:35 +00:00
Keegan Carruthers-Smith
ba58fe66c8 amp-cli: disable update check
amp tries to run an npm update but it fails due to /nix/store being
immutable.

(cherry picked from commit 219b474628)
2025-11-25 01:22:33 +00:00
Jonas Fierlings
979309e09b committed: fix build on darwin
The libz workaround was added in #376192 so that the package built on
darwin. Since upstream has updated their dependency on the `libz-sys`
crate we can build libz from source again.

(cherry picked from commit 4849874f9d)
2025-11-25 00:56:02 +00:00
Jeffrey Lau
01e7542e32 rnp: 0.18.0 -> 0.18.1 (#463801)
(cherry picked from commit e91a9d611e)
2025-11-25 00:55:03 +00:00
Gliczy
e2a1e20d3c komikku: 1.92.0 -> 1.94.0
(cherry picked from commit f0093c26d0)
2025-11-25 00:47:22 +00:00
R. Ryantm
eb7358bdbf mpris-notifier: 0.2.0 -> 0.2.1
(cherry picked from commit 0eb4d37056)
2025-11-25 00:34:33 +00:00
Philip Taron
eb7ae6faf5 [Backport release-25.11] claude-code: 2.0.50 -> 2.0.51 (#464724) 2025-11-24 23:20:22 +00:00
R. Ryantm
6abd17d61b files-cli: 2.15.139 -> 2.15.152
(cherry picked from commit f4768073aa)
2025-11-24 23:12:50 +00:00
R. Ryantm
45dd9a37fc ab-av1: 0.10.1 -> 0.10.2
(cherry picked from commit 1e980371e8)
2025-11-24 23:12:44 +00:00
R. Ryantm
7fd05dab7e kubectl-view-secret: 0.15.0 -> 0.15.1
(cherry picked from commit b7bf496a7d)
2025-11-24 23:10:02 +00:00
R. Ryantm
2811e46cc3 gowitness: 3.1.0 -> 3.1.1
(cherry picked from commit 4f84609cd6)
2025-11-24 23:08:40 +00:00
R. Ryantm
59d1f69048 sshocker: 0.3.8 -> 0.3.9
(cherry picked from commit 52722fc8cb)
2025-11-24 23:08:30 +00:00
Fabian Affolter
438b914b06 checkov: 3.2.494 -> 3.2.495
Diff: https://github.com/bridgecrewio/checkov/compare/3.2.494...3.2.495

Changelog: https://github.com/bridgecrewio/checkov/releases/tag/3.2.495
(cherry picked from commit 410e6879bf)
2025-11-24 23:08:29 +00:00
Fabian Affolter
196064e2dd cdncheck: 1.2.10 -> 1.2.11
Diff: https://github.com/projectdiscovery/cdncheck/compare/v1.2.10...v1.2.11

Changelog: https://github.com/projectdiscovery/cdncheck/releases/tag/v1.2.11
(cherry picked from commit a7a52fc6e1)
2025-11-24 23:08:27 +00:00
R. Ryantm
61ca01a35d terraform-ls: 0.38.2 -> 0.38.3
(cherry picked from commit 8178930fb8)
2025-11-24 23:07:54 +00:00
Philip Taron
8cd5406da4 claude-code: 2.0.50 -> 2.0.51
(cherry picked from commit c38131dc4c)
2025-11-24 23:07:54 +00:00
Leona Maroni
a320ce8e6e nixos/release: fix versionSuffix (#464703) 2025-11-24 21:38:16 +00:00
Leona Maroni
3916a96d0d nixos/release: fix versionSuffix
Error in branch-off. This broke the `tested` job.
2025-11-24 22:31:48 +01:00
Konstantin Bogdanov
6d72c9613b clickhouse, clickhouse-lts: fix darwin builds
(cherry picked from commit 8a196836aa)
2025-11-24 23:17:23 +02:00
Leona Maroni
d4b2c13f1e nixos/release: fix formatting (#464697) 2025-11-24 21:08:01 +00:00
Leona Maroni
7909a84a0a nixos/release: fix formatting 2025-11-24 21:54:42 +01:00
jopejoe1
1dcdcf9efc 25.11 beta release 2025-11-24 20:21:29 +01:00
40220 changed files with 893118 additions and 1191867 deletions

View File

@@ -1,11 +1,13 @@
{
"name": "nixpkgs",
"image": "mcr.microsoft.com/devcontainers/universal:5-linux",
"image": "mcr.microsoft.com/devcontainers/universal:2-linux",
"features": {
"ghcr.io/devcontainers/features/nix:1": {
// fails in the devcontainer sandbox, enable sandbox via config instead
"multiUser": false,
"packages": "nixpkgs.nixd,nixpkgs.nixfmt",
// TODO: nixfmt-rfc-style → nixfmt (once it's in a stable release)
// https://github.com/NixOS/nixpkgs/issues/425583
"packages": "nixpkgs.nixd,nixpkgs.nixfmt-rfc-style",
"useAttributePath": true,
"extraNixConfig": "experimental-features = nix-command flakes,sandbox = true"
}

View File

@@ -64,9 +64,6 @@ insert_final_newline = unset
end_of_line = unset
trim_trailing_whitespace = unset
[*.json]
insert_final_newline = unset
[*.lock]
indent_size = unset

View File

@@ -307,9 +307,3 @@ c283f32d296564fd649ef3ed268c1f1f7b199c49 # !autorebase nix-shell --run treefmt
# aliases: keep-sorted
48ce0739044bd6eba83c3a43bd4ad1046399cdad # !autorebase nix-shell --run treefmt
# treewide: clean up 'meta = with' pattern
567e8dfd8eddc5468e6380fc563ab8a27422ab1d
# nixfmt 1.2.0
28096cc5e3d8334fbe1845925f000f8c8c5e0aac # !autorebase nix-shell --run treefmt

23
.gitattributes vendored
View File

@@ -1,26 +1,7 @@
# node/js lock files
**/package-lock.json linguist-generated
**/yarn.nix linguist-generated
**/yarn.lock linguist-generated
# Rust lock files
**/Cargo.lock linguist-generated
pkgs/build-support/rust/**/Cargo.lock -linguist-generated
# NuGet, Gradle and others
**/deps.json linguist-generated
# Ruby lock files
**/gemset.nix linguist-generated
**/Gemfile.lock linguist-generated
# PHP lock files
**/composer.lock linguist-generated
# various package managers and tools
**/deps.nix linguist-generated
**/deps.json linguist-generated
**/deps.toml linguist-generated
**/node-packages.nix linguist-generated
pkgs/applications/editors/emacs-modes/*-generated.nix linguist-generated
pkgs/development/r-modules/*-packages.nix linguist-generated

6
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,6 @@
<!--
Please note: This blank issue template is meant for extraordinary issues
that do not fit the templates. Unless you know your issue is relevant to
Nixpkgs and requires the free-form blank issue, please use the issue
templates instead.
-->

View File

@@ -35,8 +35,8 @@ body:
If you are using an older version, please update to the latest stable version and check if the issue persists before continuing this bug report.
options:
- "Please select a version."
- "- Unstable (26.11)"
- "- Stable (26.05)"
- "- Unstable (25.11)"
- "- Stable (25.05)"
default: 0
validations:
required: true
@@ -54,7 +54,7 @@ body:
description: "Please include a step-by-step guide for reproducing this issue. Consider writing in concise, numbered bullet points to ensure that Nixpkgs developers can retrace your steps."
validations:
required: true
- type: "textarea"
- type: "input"
id: "expected-behaviour"
attributes:
label: "Expected behaviour"
@@ -117,12 +117,10 @@ body:
options:
- label: "I assert that this is a bug and not a support request."
required: true
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+label%3A%220.kind%3A+bug%22+-label%3A%226.topic%3A+darwin%22+-label%3A%226.topic%3A+nixos%22). "
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+label%3A%220.kind%3A+bug%22+-label%3A%226.topic%3A+darwin%22+-label%3A%226.topic%3A+nixos%22). "
required: true
- label: "I assert that I have read the [NixOS Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) and agree to abide by it."
required: true
- label: "I assert that I have read the [automation/AI policy](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy) and that this issue report complies with it."
required: true
- type: "markdown"
attributes:
value: |

View File

@@ -35,8 +35,8 @@ body:
If you are using an older version, please update to the latest stable version and check if the issue persists before continuing this bug report.
options:
- "Please select a version."
- "- Unstable (26.11)"
- "- Stable (26.05)"
- "- Unstable (25.11)"
- "- Stable (25.05)"
default: 0
validations:
required: true
@@ -54,7 +54,7 @@ body:
description: "Please include a step-by-step guide for reproducing this issue. Consider writing in concise, numbered bullet points to ensure that Nixpkgs developers can retrace your steps."
validations:
required: true
- type: "textarea"
- type: "input"
id: "expected-behaviour"
attributes:
label: "Expected behaviour"
@@ -99,7 +99,7 @@ body:
attributes:
label: "Are you using nix-darwin?"
description: |
[`nix-darwin`](https://github.com/nix-darwin/nix-darwin) is a set of NixOS-like modules for macOS systems. Depending on your issue, this information may be relevant.
[`nix-darwin`](https://github.com/LnL7/nix-darwin) is a set of NixOS-like modules for macOS systems. Depending on your issue, this information may be relevant.
options:
- "Yes, I am using nix-darwin."
- "No, I am not using nix-darwin."
@@ -131,12 +131,10 @@ body:
options:
- label: "I assert that this is a bug and not a support request."
required: true
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+label%3A%220.kind%3A+bug%22+label%3A%226.topic%3A+darwin%22). "
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+label%3A%220.kind%3A+bug%22+label%3A%226.topic%3A+darwin%22). "
required: true
- label: "I assert that I have read the [NixOS Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) and agree to abide by it."
required: true
- label: "I assert that I have read the [automation/AI policy](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy) and that this issue report complies with it."
required: true
- type: "markdown"
attributes:
value: |

View File

@@ -35,8 +35,8 @@ body:
If you are using an older version, please update to the latest stable version and check if the issue persists before continuing this bug report.
options:
- "Please select a version."
- "- Unstable (26.11)"
- "- Stable (26.05)"
- "- Unstable (25.11)"
- "- Stable (25.05)"
default: 0
validations:
required: true
@@ -54,7 +54,7 @@ body:
description: "Please include a step-by-step guide for reproducing this issue. Consider writing in concise, numbered bullet points to ensure that Nixpkgs developers can retrace your steps."
validations:
required: true
- type: "textarea"
- type: "input"
id: "expected-behaviour"
attributes:
label: "Expected behaviour"
@@ -121,12 +121,10 @@ body:
options:
- label: "I assert that this is a bug and not a support request."
required: true
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+label%3A%220.kind%3A+bug%22+label%3A%226.topic%3A+nixos%22). "
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+label%3A%220.kind%3A+bug%22+label%3A%226.topic%3A+nixos%22). "
required: true
- label: "I assert that I have read the [NixOS Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) and agree to abide by it."
required: true
- label: "I assert that I have read the [automation/AI policy](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy) and that this issue report complies with it."
required: true
- type: "markdown"
attributes:
value: |

View File

@@ -37,8 +37,8 @@ body:
If you are purposefully trying to build an ancient version of a package in an older Nixpkgs, please coordinate with the [NixOS Archivists](https://matrix.to/#/#archivists:nixos.org).
options:
- "Please select a version."
- "- Unstable (26.11)"
- "- Stable (26.05)"
- "- Unstable (25.11)"
- "- Stable (25.05)"
default: 0
validations:
required: true
@@ -127,12 +127,10 @@ body:
options:
- label: "I assert that this is a bug and not a support request."
required: true
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+label%3A%220.kind%3A+build+failure%22)."
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+label%3A%220.kind%3A+build+failure%22). "
required: true
- label: "I assert that I have read the [NixOS Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) and agree to abide by it."
required: true
- label: "I assert that I have read the [automation/AI policy](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy) and that this issue report complies with it."
required: true
- type: "markdown"
attributes:
value: |

View File

@@ -37,8 +37,8 @@ body:
If the package has been updated in unstable, but you believe the update should be backported to the stable release of Nixpkgs, please file the '**Request: backport to stable**' form instead.
options:
- "Please select a version."
- "- Unstable (26.11)"
- "- Stable (26.05)"
- "- Unstable (25.11)"
- "- Stable (25.05)"
default: 0
validations:
required: true
@@ -100,12 +100,10 @@ body:
options:
- label: "I assert that this package update does not yet exist in an [open pull request](https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+is%3Apr+label%3A%228.has%3A+package+%28update%29%22) or in [Nixpkgs Unstable](https://search.nixos.org/packages?channel=unstable)."
required: true
- label: "I assert that this is not a [duplicate of any known issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+label%3A%229.needs%3A+package+%28update%29%22)."
- label: "I assert that this is not a [duplicate of any known issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+label%3A%229.needs%3A+package+%28update%29%22)."
required: true
- label: "I assert that I have read the [NixOS Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) and agree to abide by it."
required: true
- label: "I assert that I have read the [automation/AI policy](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy) and that this issue report complies with it."
required: true
- type: "markdown"
attributes:
value: |

View File

@@ -35,8 +35,8 @@ body:
If you are using an older or stable version, please update to the latest **unstable** version and check if the module still does not exist before continuing this request.
options:
- "Please select a version."
- "- Unstable (26.11)"
- "- Stable (26.05)"
- "- Unstable (25.11)"
- "- Stable (25.05)"
default: 0
validations:
required: true
@@ -75,12 +75,10 @@ body:
options:
- label: "I assert that this module does not yet exist in an [open pull request](https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+is%3Apr+label%3A%228.has%3A+module+%28new%29%22) or in [NixOS Unstable](https://search.nixos.org/options?channel=unstable)."
required: true
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+label%3A%229.needs%3A+module+%28new%29%22). "
- label: "I assert that this is not a [duplicate of an existing issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+label%3A%229.needs%3A+module+%28new%29%22). "
required: true
- label: "I assert that I have read the [NixOS Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) and agree to abide by it."
required: true
- label: "I assert that I have read the [automation/AI policy](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy) and that this issue report complies with it."
required: true
- type: "markdown"
attributes:
value: |

View File

@@ -81,12 +81,10 @@ body:
options:
- label: "I assert that this backport does not yet exist in an [open pull request](https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+in%3Atitle+backport)."
required: true
- label: "I assert that this is not a [duplicate of any known issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+label%3A%229.needs%3A+port+to+stable%22+)."
- label: "I assert that this is not a [duplicate of any known issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+is%3Aopen+label%3A%229.needs%3A+port+to+stable%22+)."
required: true
- label: "I assert that I have read the [NixOS Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) and agree to abide by it."
required: true
- label: "I assert that I have read the [automation/AI policy](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy) and that this issue report complies with it."
required: true
- type: "markdown"
attributes:
value: |

View File

@@ -63,12 +63,10 @@ body:
options:
- label: "I assert that this request is not already implemented in the latest [NixOS](https://nixos.org/manual/nixos/unstable/) or [Nixpkgs](https://nixos.org/manual/nixpkgs/unstable/) manuals."
required: true
- label: "I assert that this is not a [duplicate of an existing documentation issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+label%3A%229.needs%3A+documentation%22)."
- label: "I assert that this is not a [duplicate of an existing documentation issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+is%3Aopen+label%3A%229.needs%3A+documentation%22)."
required: true
- label: "I assert that I have read the [NixOS Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) and agree to abide by it."
required: true
- label: "I assert that I have read the [automation/AI policy](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy) and that this issue report complies with it."
required: true
- type: "markdown"
attributes:
value: |

View File

@@ -133,12 +133,10 @@ body:
attributes:
label: "I assert that this issue is relevant for Nixpkgs"
options:
- label: "I assert that this is not a [duplicate of any known issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+label%3A%226.topic%3A+reproducible+builds%22)."
- label: "I assert that this is not a [duplicate of any known issue](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+label%3A%226.topic%3A+reproducible+builds%22)."
required: true
- label: "I assert that I have read the [NixOS Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) and agree to abide by it."
required: true
- label: "I assert that I have read the [automation/AI policy](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy) and that this issue report complies with it."
required: true
- type: "markdown"
attributes:
value: |

View File

@@ -27,16 +27,21 @@ For new packages please briefly describe the package or provide a link to its ho
- [ ] Module addition: when adding a new NixOS module.
- [ ] Module update: when the change is significant.
- [ ] Fits [CONTRIBUTING.md], [pkgs/README.md], [maintainers/README.md] and other READMEs.
- [ ] Follows the [automation/AI policy].
[NixOS tests]: https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests
[Package tests]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-tests
[nixpkgs-review usage]: https://github.com/Mic92/nixpkgs-review#usage
[CONTRIBUTING.md]: https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md
[automation/AI policy]: https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#automationai-policy
[lib/tests]: https://github.com/NixOS/nixpkgs/blob/master/lib/tests
[maintainers/README.md]: https://github.com/NixOS/nixpkgs/blob/master/maintainers/README.md
[nixos/tests]: https://github.com/NixOS/nixpkgs/blob/master/nixos/tests
[pkgs/README.md]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md
[pkgs/test]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/test
---
Add a :+1: [reaction] to [pull requests you find important].
[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc

View File

@@ -7,20 +7,16 @@ inputs:
description: "Whether and which SHA to checkout for the merge commit in the ./nixpkgs/untrusted folder."
target-as-trusted-at:
description: "Whether and which SHA to checkout for the target commit in the ./nixpkgs/trusted folder."
untrusted-pin-bump:
description: "Commit that bumps ci/pinned.json; when set, ./nixpkgs/untrusted and ./nixpkgs/untrusted-pinned are derived from this commit."
runs:
using: composite
steps:
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
MERGED_SHA: ${{ inputs.merged-as-untrusted-at }}
TARGET_SHA: ${{ inputs.target-as-trusted-at }}
PIN_BUMP_SHA: ${{ inputs.untrusted-pin-bump }}
with:
script: |
const { rm, writeFile } = require('node:fs/promises')
const { spawn } = require('node:child_process')
const { join } = require('node:path')
@@ -56,27 +52,13 @@ runs:
return pinned.pins.nixpkgs.revision
}
// Getting the pin-bump diff via the API avoids issues with `git fetch`
// thin-packs not having enough base objects to be applied locally.
// Returns a unified diff suitable for `git apply`.
async function getPinBumpDiff(ref) {
const { data } = await github.rest.repos.getCommit({
mediaType: { format: 'diff' },
...context.repo,
ref,
})
return data
}
const pin_bump_sha = process.env.PIN_BUMP_SHA
const commits = [
{
sha: process.env.MERGED_SHA,
path: 'untrusted',
},
{
sha: await getPinnedSha(pin_bump_sha || process.env.MERGED_SHA),
sha: await getPinnedSha(process.env.MERGED_SHA),
path: 'untrusted-pinned'
},
{
@@ -95,42 +77,20 @@ runs:
// This would fail without --refetch, because the we had a partial clone before, but changed it above.
await run('git', 'fetch', '--depth=1', '--refetch', 'origin', ...(commits.map(({ sha }) => sha)))
// On Linux, checking out onto tmpfs takes 1s and is faster by at least 10x.
// Currently, on Darwin we can only allocate 3.5GB, which isn't enough.
// See https://github.com/NixOS/nixpkgs/pull/506437
// Checking out onto tmpfs takes 1s and is faster by at least factor 10x.
await run('mkdir', 'nixpkgs')
if (process.env.RUNNER_OS === 'Linux') {
await run('sudo', 'mount', '-t', 'tmpfs', 'tmpfs', 'nixpkgs')
switch (process.env.RUNNER_OS) {
case 'macOS':
await run('sudo', 'mount_tmpfs', 'nixpkgs')
break
case 'Linux':
await run('sudo', 'mount', '-t', 'tmpfs', 'tmpfs', 'nixpkgs')
break
}
// Git worktree setup can race when multiple worktrees are created and
// initialized at the same time against one repository. See #511286.
// Keep the setup sequential so shared repo config updates cannot contend.
for (const { sha, path } of commits) {
// Create all worktrees in parallel.
await Promise.all(commits.map(async ({ sha, path }) => {
await run('git', 'worktree', 'add', join('nixpkgs', path), sha, '--no-checkout')
await run('git', '-C', join('nixpkgs', path), 'sparse-checkout', 'disable')
await run('git', '-C', join('nixpkgs', path), 'checkout', '--progress')
}
// Apply pin bump to untrusted worktree
if (pin_bump_sha) {
console.log('Fetching ci/pinned.json bump commit:', pin_bump_sha)
await writeFile('pin-bump.patch', await getPinBumpDiff(pin_bump_sha))
console.log('Applying untrusted ci/pinned.json bump to ./nixpkgs/untrusted')
try {
await run('git', '-C', join('nixpkgs', 'untrusted'), 'apply', '--3way', join('..', '..', 'pin-bump.patch'))
} catch {
core.setFailed([
`Failed to apply ci/pinned.json bump commit ${pin_bump_sha}.`,
`This commit does not apply cleanly onto the untrusted base ${process.env.MERGED_SHA}.`,
`Please rebase the PR or ensure the pin bump is standalone.`
].join(' '))
return
} finally {
await rm('pin-bump.patch')
}
}
console.log('final disk usage:')
await run('df', '-h')
}))

View File

@@ -5,5 +5,3 @@ updates:
schedule:
interval: "weekly"
labels: []
commit-message:
prefix: ".github"

View File

@@ -22,26 +22,4 @@
- doc/**/*
- nixos/doc/**/*
"backport release-25.11":
- all:
- changed-files:
- any-glob-to-any-file:
- .github/actions/**/*
- .github/workflows/*
- .github/labeler*.yml
- ci/**/*.*
- maintainers/github-teams.json
- base-branch: ['master']
"backport release-26.05":
- all:
- changed-files:
- any-glob-to-any-file:
- .github/actions/**/*
- .github/workflows/*
- .github/labeler*.yml
- ci/**/*.*
- maintainers/github-teams.json
- base-branch: ['master']
# keep-sorted end

38
.github/labeler.yml vendored
View File

@@ -9,7 +9,6 @@
- '^release-'
- '^staging-\d'
- '^staging-next-\d'
- '^staging-nixos-\d'
# NOTE: bsd, darwin and cross-compilation labels are handled by ofborg
"6.topic: agda":
@@ -264,21 +263,15 @@
- any-glob-to-any-file:
- nixos/modules/services/cluster/rancher/default.nix
- nixos/modules/services/cluster/rancher/k3s.nix
- nixos/tests/rancher/**/*
- nixos/tests/k3s/**/*
- pkgs/applications/networking/cluster/k3s/**/*
"6.topic: kernel":
- any:
- changed-files:
- any-glob-to-any-file:
- doc/packages/linux.section.md
- lib/kernel.nix
- nixos/doc/manual/configuration/linux-kernel.chapter.md
- nixos/modules/system/boot/kernel.nix
- nixos/tests/kernel-generic/**/*
- pkgs/build-support/kernel/**/*
- pkgs/os-specific/linux/kernel/**/*
- pkgs/top-level/linux-kernels.nix
"6.topic: lib":
- any:
@@ -323,13 +316,6 @@
- nixos/modules/services/x11/desktop-managers/mate.nix
- nixos/tests/mate.nix
- pkgs/desktops/mate/**/*
- pkgs/by-name/ca/caja/**/*
- pkgs/by-name/ca/caja-*/**/*
- pkgs/by-name/li/libmatekbd/**/*
- pkgs/by-name/li/libmatemixer/**/*
- pkgs/by-name/li/libmateweather/**/*
- pkgs/by-name/ma/marco/**/*
- pkgs/by-name/ma/mate-*/**/*
"6.topic: module system":
- any:
@@ -346,7 +332,6 @@
- changed-files:
- any-glob-to-any-file:
- pkgs/os-specific/linux/musl/**/*
- pkgs/by-name/mu/musl/**/*
"6.topic: nim":
- any:
@@ -541,18 +526,6 @@
- pkgs/test/texlive/**
- pkgs/tools/typesetting/tex/**/*
"6.topic: tree-sitter":
- any:
- changed-files:
- any-glob-to-any-file:
- doc/packages/python-tree-sitter.section.md
- pkgs/applications/editors/emacs/elisp-packages/manual-packages/tree-sitter-langs/**/*
- pkgs/applications/editors/emacs/elisp-packages/manual-packages/treesit-grammars/**/*
- pkgs/applications/editors/vim/plugins/nvim-treesitter/**/*
- pkgs/by-name/*/*tree-sitter*/**/*
- pkgs/by-name/ne/neovim-unwrapped/treesitter-parsers.nix
- pkgs/development/python-modules/*tree-sitter*/**/*
"6.topic: updaters":
- any:
- changed-files:
@@ -602,15 +575,6 @@
- nixos/modules/services/x11/desktop-managers/xfce.nix
- nixos/tests/xfce.nix
- pkgs/desktops/xfce/**/*
- pkgs/by-name/ga/garcon/**/*
- pkgs/by-name/li/libxfce4*/**/*
- pkgs/by-name/th/thunar/**/*
- pkgs/by-name/th/thunar-*/**/*
- pkgs/by-name/tu/tumbler/**/*
- pkgs/by-name/xf/xfce4-*/**/*
- pkgs/by-name/xf/xfconf/**/*
- pkgs/by-name/xf/xfdesktop/**/*
- pkgs/by-name/xf/xfwm4/**/*
"6.topic: zig":
- any:

View File

@@ -10,18 +10,18 @@ Some architectural notes about key decisions and concepts in our workflows:
Thus they should be lowered to the minimum with `permissions: {}` in every workflow by default.
- By definition `pull_request_target` runs in the context of the **base** of the pull request.
This means that the workflow files to run will be taken from the base branch, not the PR, and actions/checkout will not checkout the PR, but the base branch, by default.
This means, that the workflow files to run will be taken from the base branch, not the PR, and actions/checkout will not checkout the PR, but the base branch, by default.
To protect our secrets, we need to make sure to **never execute code** from the pull request and always evaluate or build nix code from the pull request with the **sandbox enabled**.
- To test the pull request's contents, we checkout the "test merge commit".
This is a temporary commit that GitHub creates automatically as "what would happen if this PR was merged into the base branch now?".
This is a temporary commit that GitHub creates automatically as "what would happen, if this PR was merged into the base branch now?".
The checkout could be done via the virtual branch `refs/pull/<pr-number>/merge`, but doing so would cause failures when this virtual branch doesn't exist (anymore).
This can happen when the PR has conflicts, in which case the virtual branch is not created, or when the PR is getting merged while workflows are still running, in which case the branch won't exist anymore at the time of checkout.
Thus, we use the `prepare` job to check whether the PR is mergeable and the test merge commit exists and only then run the relevant jobs.
- Various workflows need to make comparisons against the base branch.
In this case, we checkout the parent of the "test merge commit" for best results.
Note that this is not necessarily the same as the default commit that actions/checkout would use, which is also a commit from the base branch (see above), but might be older.
Note, that this is not necessarily the same as the default commit that actions/checkout would use, which is also a commit from the base branch (see above), but might be older.
## Terminology

View File

@@ -11,8 +11,8 @@ on:
permissions:
contents: read
issues: write # adding the 'has: port to stable' and 'has: backport failed' label
pull-requests: write # creating backport pull requests
issues: write
pull-requests: write
defaults:
run:
@@ -21,22 +21,22 @@ defaults:
jobs:
backport:
name: Backport Pull Request
if: vars.NIXPKGS_CI_CLIENT_ID && github.event.pull_request.merged == true && (github.event.action != 'labeled' || startsWith(github.event.label.name, 'backport'))
if: vars.NIXPKGS_CI_APP_ID && github.event.pull_request.merged == true && (github.event.action != 'labeled' || startsWith(github.event.label.name, 'backport'))
runs-on: ubuntu-slim
timeout-minutes: 3
steps:
# Use a GitHub App to create the PR so that CI gets triggered
# The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
- uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
id: app-token
with:
client-id: ${{ vars.NIXPKGS_CI_CLIENT_ID }}
app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
permission-contents: write
permission-pull-requests: write
permission-workflows: write
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
ref: ${{ github.event.pull_request.head.sha }}
token: ${{ steps.app-token.outputs.token }}
@@ -49,10 +49,9 @@ jobs:
- name: Create backport PRs
id: backport
uses: korthout/backport-action@66065406958f46e82238fd59546f5a99e69e22aa # v4.5.2
uses: korthout/backport-action@d07416681cab29bf2661702f925f020aaa962997 # v3.4.1
with:
# Config README: https://github.com/korthout/backport-action#backport-action
add_author_as_reviewer: true
copy_labels_pattern: 'severity:\ssecurity'
github_token: ${{ steps.app-token.outputs.token }}
pull_description: |-
@@ -62,9 +61,6 @@ jobs:
Even as a non-committer, if you find that it is not acceptable, leave a comment.
> [!TIP]
> If you maintain all packages touched by this pull request, and they are all located under `pkgs/by-name/*`, you can comment **`@NixOS/nixpkgs-merge-bot merge`** to automatically merge this PR using the [`nixpkgs-merge-bot`](https://github.com/NixOS/nixpkgs/blob/master/ci/README.md#nixpkgs-merge-bot).
- name: Log current API rate limits
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
@@ -72,7 +68,7 @@ jobs:
- name: "Add 'has: port to stable' label"
if: steps.backport.outputs.created_pull_numbers != ''
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
# Not using the app on purpose to avoid triggering another workflow run after adding this label.
script: |
@@ -82,16 +78,3 @@ jobs:
issue_number: context.payload.pull_request.number,
labels: [ '8.has: port to stable' ]
})
- name: "Add 'has: failed backport' label"
if: steps.backport.outputs.was_successful == 'false'
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
# Not using the app on purpose to avoid triggering another workflow run after adding this label.
script: |
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
labels: [ '8.has: failed backport' ]
})

View File

@@ -30,8 +30,8 @@ concurrency:
# This is used as fallback without app only.
# This happens when testing in forks without setting up that app.
permissions:
issues: write # managing issue labels and comments
pull-requests: write # managing pull request labels and comments
issues: write
pull-requests: write
defaults:
run:
@@ -46,21 +46,21 @@ jobs:
# https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: |
ci/github-script
- name: Install dependencies
run: npm install @actions/artifact@6.2.1 bottleneck@2.19.5
run: npm install @actions/artifact bottleneck
# Use a GitHub App, because it has much higher rate limits: 12,500 instead of 5,000 req / hour.
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
if: github.event_name != 'pull_request' && vars.NIXPKGS_CI_CLIENT_ID
- uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
if: github.event_name != 'pull_request' && vars.NIXPKGS_CI_APP_ID
id: app-token
with:
client-id: ${{ vars.NIXPKGS_CI_CLIENT_ID }}
app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
permission-administration: read
permission-contents: write
@@ -74,7 +74,7 @@ jobs:
run: gh api /rate_limit | jq
- name: Run bot
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.app-token.outputs.token || github.token }}
retries: 3
@@ -91,27 +91,27 @@ jobs:
GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }}
run: gh api /rate_limit | jq
- uses: actions/labeler@f27b608878404679385c85cfa523b85ccb86e213 # v6.1.0
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
name: Labels from touched files
if: |
github.event_name == 'pull_request_target' &&
!contains(fromJSON(inputs.headBranch).type, 'development')
with:
repo-token: ${{ steps.app-token.outputs.token || github.token }}
repo-token: ${{ steps.app-token.outputs.token }}
configuration-path: .github/labeler.yml # default
sync-labels: true
- uses: actions/labeler@f27b608878404679385c85cfa523b85ccb86e213 # v6.1.0
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
name: Labels from touched files (no sync)
if: |
github.event_name == 'pull_request_target' &&
!contains(fromJSON(inputs.headBranch).type, 'development')
with:
repo-token: ${{ steps.app-token.outputs.token || github.token }}
repo-token: ${{ steps.app-token.outputs.token }}
configuration-path: .github/labeler-no-sync.yml
sync-labels: false
- uses: actions/labeler@f27b608878404679385c85cfa523b85ccb86e213 # v6.1.0
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
name: Labels from touched files (development branches)
# Development branches like staging-next, haskell-updates and python-updates get special labels.
# This is to avoid the mass of labels there, which is mostly useless - and really annoying for
@@ -120,7 +120,7 @@ jobs:
github.event_name == 'pull_request_target' &&
contains(fromJSON(inputs.headBranch).type, 'development')
with:
repo-token: ${{ steps.app-token.outputs.token || github.token }}
repo-token: ${{ steps.app-token.outputs.token }}
configuration-path: .github/labeler-development-branches.yml
sync-labels: true

View File

@@ -41,7 +41,7 @@ jobs:
- runner: ubuntu-24.04-arm
name: aarch64-linux
systems: aarch64-linux
builds: [shell, manual-nixos, manual-nixpkgs]
builds: [shell, manual-nixos, manual-nixpkgs, manual-nixpkgs-tests]
desc: shell, docs
- runner: macos-14
name: darwin
@@ -52,7 +52,7 @@ jobs:
runs-on: ${{ matrix.runner }}
timeout-minutes: 60
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: .github/actions
@@ -62,12 +62,12 @@ jobs:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
target-as-trusted-at: ${{ inputs.targetSha }}
- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
- uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31
with:
# Sandbox is disabled on MacOS by default.
extra_nix_config: sandbox = true
- uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
continue-on-error: true
with:
# The nixpkgs-gha cache should not be trusted or used outside of Nixpkgs and its forks' CI.
@@ -85,14 +85,16 @@ jobs:
- name: Build NixOS manual
if: |
contains(matrix.builds, 'manual-nixos') && !cancelled() &&
(contains(fromJSON(inputs.baseBranch).type, 'primary')
|| startsWith(fromJSON(inputs.baseBranch).branch, 'staging-nixos')
)
contains(fromJSON(inputs.baseBranch).type, 'primary')
run: nix-build-uncached nixpkgs/untrusted/ci --arg nixpkgs ./nixpkgs/untrusted-pinned -A manual-nixos --out-link nixos-manual
- name: Build Nixpkgs manual
if: contains(matrix.builds, 'manual-nixpkgs') && !cancelled()
run: nix-build-uncached nixpkgs/untrusted/ci --arg nixpkgs ./nixpkgs/untrusted-pinned -A manual-nixpkgs
run: nix-build-uncached nixpkgs/untrusted/ci --arg nixpkgs ./nixpkgs/untrusted-pinned -A manual-nixpkgs -A manual-nixpkgs-tests
- name: Build Nixpkgs manual tests
if: contains(matrix.builds, 'manual-nixpkgs-tests') && !cancelled()
run: nix-build-uncached nixpkgs/untrusted/ci --arg nixpkgs ./nixpkgs/untrusted-pinned -A manual-nixpkgs-tests
- name: Build lib tests
if: contains(matrix.builds, 'lib-tests') && !cancelled()
@@ -106,7 +108,7 @@ jobs:
if: |
contains(matrix.builds, 'manual-nixos') && !cancelled() &&
contains(fromJSON(inputs.baseBranch).type, 'primary')
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: ${{ inputs.artifact-prefix }}nixos-manual-${{ matrix.name }}
path: nixos-manual

View File

@@ -16,14 +16,6 @@ on:
required: true
type: string
secrets:
# Can be provided in pull requests because the job it is used in does
# not evaluate untrusted code.
NIXPKGS_COMMIT_CHECK_APP_PRIVATE_KEY:
required: false
# Can be provided in pull requests because the job it is used in does
# not evaluate untrusted code.
NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY:
required: false
# Should only be provided in the merge queue, not in pull requests,
# where we're evaluating untrusted code.
CACHIX_AUTH_TOKEN_GHA:
@@ -39,11 +31,11 @@ jobs:
commits:
if: inputs.baseBranch && inputs.headBranch
permissions:
pull-requests: write # submitting PR reviews
pull-requests: write
runs-on: ubuntu-slim
timeout-minutes: 3
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
path: trusted
@@ -51,28 +43,19 @@ jobs:
ci/github-script
- name: Install dependencies
run: npm install bottleneck@2.19.5
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
if: github.event_name != 'pull_request' && vars.NIXPKGS_COMMIT_CHECK_CLIENT_ID
id: app-token
with:
client-id: ${{ vars.NIXPKGS_COMMIT_CHECK_CLIENT_ID }}
private-key: ${{ secrets.NIXPKGS_COMMIT_CHECK_APP_PRIVATE_KEY }}
permission-pull-requests: write
run: npm install bottleneck
- name: Log current API rate limits
env:
GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }}
GH_TOKEN: ${{ github.token }}
run: gh api /rate_limit | jq
- name: Check commits
id: check
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
TARGETS_STABLE: ${{ fromJSON(inputs.baseBranch).stable && !contains(fromJSON(inputs.headBranch).type, 'development') }}
with:
github-token: ${{ steps.app-token.outputs.token || github.token }}
script: |
const targetsStable = JSON.parse(process.env.TARGETS_STABLE)
require('./trusted/ci/github-script/commits.js')({
@@ -85,59 +68,14 @@ jobs:
- name: Log current API rate limits
env:
GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }}
run: gh api /rate_limit | jq
manual-file-edits:
if: inputs.baseBranch && inputs.headBranch
permissions:
pull-requests: write
runs-on: ubuntu-slim
timeout-minutes: 3
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
path: trusted
sparse-checkout: |
ci/github-script
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
if: github.event_name != 'pull_request' && vars.NIXPKGS_MANUAL_EDIT_CHECK_CLIENT_ID
id: app-token
with:
client-id: ${{ vars.NIXPKGS_MANUAL_EDIT_CHECK_CLIENT_ID }}
private-key: ${{ secrets.NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY }}
permission-pull-requests: write
- name: Log current API rate limits
env:
GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }}
run: gh api /rate_limit | jq
- name: Discourage manual edits to certain files
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
github-token: ${{ steps.app-token.outputs.token || github.token }}
script: |
require('./trusted/ci/github-script/manual-file-edits.js')({
github,
context,
core,
dry: context.eventName == 'pull_request',
repoPath: 'trusted',
})
- name: Log current API rate limits
env:
GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }}
GH_TOKEN: ${{ github.token }}
run: gh api /rate_limit | jq
owners:
runs-on: ubuntu-24.04-arm
timeout-minutes: 5
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: .github/actions
@@ -147,9 +85,9 @@ jobs:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
target-as-trusted-at: ${{ inputs.targetSha }}
- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
- uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31
- uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
continue-on-error: true
with:
# The nixpkgs-gha cache should not be trusted or used outside of Nixpkgs and its forks' CI.

View File

@@ -7,7 +7,7 @@ on:
# This is used as fallback without app only.
# This happens when testing in forks without setting up that app.
permissions:
pull-requests: write # adding reactions to comments
pull-requests: write
defaults:
run:
@@ -23,22 +23,22 @@ jobs:
timeout-minutes: 2
if: contains(github.event.comment.body, '@NixOS/nixpkgs-merge-bot merge')
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: |
ci/github-script
# Use the GitHub App to make sure the reaction happens with the same user who will later merge.
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
if: github.event_name != 'pull_request' && vars.NIXPKGS_CI_CLIENT_ID
- uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
if: github.event_name != 'pull_request' && vars.NIXPKGS_CI_APP_ID
id: app-token
with:
client-id: ${{ vars.NIXPKGS_CI_CLIENT_ID }}
app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
permission-pull-requests: write
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.app-token.outputs.token || github.token }}
retries: 3

View File

@@ -36,14 +36,14 @@ jobs:
# Use a GitHub App to create the PR so that CI gets triggered
# The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs
# We only need Pull Requests: write here, but the app is also used for backports.
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
- uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
id: app-token
with:
client-id: ${{ vars.NIXPKGS_CI_CLIENT_ID }}
app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
permission-pull-requests: write
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |

View File

@@ -9,11 +9,7 @@ on:
mergedSha:
required: true
type: string
headSha:
required: false # only required when testVersions is true
type: string
targetSha:
required: true
type: string
systems:
required: true
@@ -23,10 +19,6 @@ on:
default: false
type: boolean
secrets:
# Can be provided in pull requests because the job it is used in does
# not evaluate untrusted code.
NIXPKGS_BRANCH_CHECK_APP_PRIVATE_KEY:
required: false
# Should only be provided in the merge queue, not in pull requests,
# where we're evaluating untrusted code.
CACHIX_AUTH_TOKEN_GHA:
@@ -44,10 +36,8 @@ jobs:
runs-on: ubuntu-slim
outputs:
versions: ${{ steps.versions.outputs.versions }}
ciPinBumpCommit: ${{ steps.find-pinned-commit.outputs.ciPinBumpCommit }}
ciPinBumpCommitShort: ${{ steps.find-pinned-commit.outputs.ciPinBumpCommitShort }}
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
path: trusted
@@ -55,7 +45,7 @@ jobs:
ci/supportedVersions.nix
- name: Check out the PR at the test merge commit
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
ref: ${{ inputs.mergedSha }}
@@ -63,80 +53,8 @@ jobs:
sparse-checkout: |
ci/pinned.json
- name: Find commit that touched ci/pinned.json
id: find-pinned-commit
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
env:
TARGET_SHA: ${{ inputs.targetSha }}
HEAD_SHA: ${{ inputs.headSha }}
with:
script: |
const targetSha = process.env.TARGET_SHA
const headSha = process.env.HEAD_SHA
if (!targetSha || !headSha) {
core.setFailed('Error: Both targetSha and headSha inputs are required when testVersions is true.')
return
}
// Compare the two commits to get the list of commits in between
const comparison = await github.rest.repos.compareCommitsWithBasehead({
...context.repo,
basehead: `${targetSha}...${headSha}`,
})
if(comparison.data.commits.length > 50) {
core.setFailed('Error: Too many commits in comparison, cannot reliably find pinned.json change.')
return
}
const logRateLimit = async (label) => {
const { data } = await github.rest.rateLimit.get()
const { remaining, limit, used } = data.rate
core.info(`[Rate Limit ${label}] ${remaining}/${limit} remaining (${used} used)`)
}
await logRateLimit('before commit filtering')
// Filter commits that modified ci/pinned.json
const commitsModifyingPinned = (
await Promise.all(
comparison.data.commits.map(async (commit) => {
const commitDetails = await github.rest.repos.getCommit({
...context.repo,
ref: commit.sha,
})
const modifiesPinned = commitDetails.data.files?.some(
(file) => file.filename === "ci/pinned.json"
)
return modifiesPinned ? commit.sha : null
})
)
).filter((sha) => sha !== null)
await logRateLimit('after commit filtering')
if (commitsModifyingPinned.length === 0) {
// This should not happen as testVersions should only be true
// when ci/pinned.json was modified in the PR.
core.setFailed("Error: ci/pinned.json was not modified in this PR")
return
} else if (commitsModifyingPinned.length > 1) {
core.setFailed([
"Error: Multiple commits touch ci/pinned.json in this PR:",
...commitsModifyingPinned,
"Please ensure only a single commit modifies ci/pinned.json for accurate version matrix evaluation."
].join("\n"))
return
}
const ciPinBumpCommit = commitsModifyingPinned[0]
core.setOutput("ciPinBumpCommit", ciPinBumpCommit)
core.setOutput("ciPinBumpCommitShort", ciPinBumpCommit.substring(0, 7))
core.info(`Found pinned.json commit: ${ciPinBumpCommit}`)
- name: Install Nix
uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31
- name: Load supported versions
id: versions
@@ -157,8 +75,8 @@ jobs:
# Failures for versioned Evals will be collected in a separate job below
# to not interrupt main Eval's compare step.
continue-on-error: ${{ matrix.version != '' }}
name: ${{ matrix.system }}${{ matrix.version && format(' @ {0} ({1})', matrix.version, needs.versions.outputs.ciPinBumpCommitShort) || '' }}
timeout-minutes: 20
name: ${{ matrix.system }}${{ matrix.version && format(' @ {0}', matrix.version) || '' }}
timeout-minutes: 15
steps:
# This is not supposed to be used and just acts as a fallback.
# Without swap, when Eval runs OOM, it will fail badly with a
@@ -171,22 +89,20 @@ jobs:
sudo mkswap /swap
sudo swapon /swap
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: .github/actions
- name: Check out the PR at merged and target commits
uses: ./.github/actions/checkout
with:
# For versioned evals, use the target as the untrusted base and apply the pin-bump commit
merged-as-untrusted-at: ${{ matrix.version && inputs.targetSha || inputs.mergedSha }}
untrusted-pin-bump: ${{ matrix.version && needs.versions.outputs.ciPinBumpCommit }}
merged-as-untrusted-at: ${{ inputs.mergedSha }}
target-as-trusted-at: ${{ inputs.targetSha }}
- name: Install Nix
uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31
- uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
continue-on-error: true
with:
# The nixpkgs-gha cache should not be trusted or used outside of Nixpkgs and its forks' CI.
@@ -242,7 +158,7 @@ jobs:
--out-link diff
- name: Upload outpaths diff and stats
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: ${{ inputs.artifact-prefix }}${{ matrix.version && format('{0}-', matrix.version) || '' }}diff-${{ matrix.system }}
path: diff/*
@@ -252,11 +168,10 @@ jobs:
needs: [eval]
if: ${{ !cancelled() && !failure() }}
permissions:
pull-requests: write # submitting 'wrong branch' reviews
statuses: write # creating 'Eval Summary' commit statuses
statuses: write
timeout-minutes: 5
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: .github/actions
@@ -267,14 +182,14 @@ jobs:
target-as-trusted-at: ${{ inputs.targetSha }}
- name: Download output paths and eval stats for all systems
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
pattern: ${{ inputs.artifact-prefix }}diff-*
path: diff
merge-multiple: true
- name: Install Nix
uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31
- name: Combine all output paths and eval stats
run: |
@@ -283,7 +198,7 @@ jobs:
--out-link combined
- name: Upload the maintainer list
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: ${{ inputs.artifact-prefix }}maintainers
path: combined/maintainers.json
@@ -304,24 +219,18 @@ jobs:
cat comparison/step-summary.md >> "$GITHUB_STEP_SUMMARY"
- name: Upload the comparison results
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: ${{ inputs.artifact-prefix }}comparison
path: comparison/*
- name: Add eval summary to commit statuses
if: ${{ github.event_name == 'pull_request_target' }}
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const { readFile } = require('node:fs/promises')
const changed = JSON.parse(await readFile('comparison/changed-paths.json', 'utf-8'))
const removedByKernel = Object.fromEntries(
Object.entries(changed.attrdiffByKernel ?? {}).map(([kernel, diff]) => [
kernel,
diff.removed.length,
]),
)
const description =
'Package: ' + [
`added ${changed.attrdiff.added.length}`,
@@ -331,15 +240,7 @@ jobs:
' — Rebuild: ' + [
`linux ${changed.rebuildCountByKernel.linux}`,
`darwin ${changed.rebuildCountByKernel.darwin}`
].join(', ') +
(
Object.values(removedByKernel).some((count) => count > 0)
? ' — Removed: ' + [
`linux ${removedByKernel.linux ?? 0}`,
`darwin ${removedByKernel.darwin ?? 0}`
].join(', ')
: ''
)
].join(', ')
const { serverUrl, repo, runId, payload } = context
const target_url =
@@ -354,47 +255,23 @@ jobs:
target_url
})
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
if: github.event_name == 'pull_request_target' && vars.NIXPKGS_BRANCH_CHECK_CLIENT_ID
id: app-token
with:
client-id: ${{ vars.NIXPKGS_BRANCH_CHECK_CLIENT_ID }}
private-key: ${{ secrets.NIXPKGS_BRANCH_CHECK_APP_PRIVATE_KEY }}
permission-pull-requests: write
# It's fine to reuse this app in the 'pull-request-target / prepare' job,
# because that job has to run before this one.
- name: Request changes if PR is against an inappropriate branch
if: ${{ github.event_name == 'pull_request_target' }}
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
github-token: ${{ steps.app-token.outputs.token || github.token }}
script: |
require('./nixpkgs/trusted/ci/github-script/check-target-branch.js')({
github,
context,
core,
dry: context.eventName == 'pull_request',
})
# Creates a matrix of Eval performance for various versions and systems.
report:
runs-on: ubuntu-slim
needs: [versions, eval]
steps:
- name: Download output paths and eval stats for all versions
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
pattern: "*-diff-*"
path: versions
- name: Add version comparison table to job summary
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
ARTIFACT_PREFIX: ${{ inputs.artifact-prefix }}
SYSTEMS: ${{ inputs.systems }}
VERSIONS: ${{ needs.versions.outputs.versions }}
CI_PIN_BUMP_COMMIT: ${{ needs.versions.outputs.ciPinBumpCommit }}
with:
script: |
const { readFileSync } = require('node:fs')
@@ -403,10 +280,8 @@ jobs:
const prefix = process.env.ARTIFACT_PREFIX
const systems = JSON.parse(process.env.SYSTEMS)
const versions = JSON.parse(process.env.VERSIONS)
const ciPinBumpCommit = process.env.CI_PIN_BUMP_COMMIT
core.summary.addHeading('Lix/Nix version comparison')
core.summary.addRaw(`\n*Evaluated at commit: \`${ciPinBumpCommit}\` (commit that modified ci/pinned.json)*\n`, true)
core.summary.addTable(
[].concat(
[
@@ -437,11 +312,7 @@ jobs:
.filter((attr) => attr.split('.').length > 1)
if (attrs.length > 0) {
core.setFailed(
`${version} on ${system} has changed outpaths!\n` +
`Note: This indicates that commit ${ciPinBumpCommit} ` +
`(which modified ci/pinned.json) also contains other ` +
`changes affecting package outputs. ` +
`Please ensure ci/pinned.json is updated in a standalone commit.`
`${version} on ${system} has changed outpaths!\nNote: Please make sure to update ci/pinned.json separately from changes to other packages.`,
)
return { data: ':x:' }
}
@@ -471,7 +342,7 @@ jobs:
runs-on: ubuntu-24.04-arm
timeout-minutes: 10
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: .github/actions
@@ -481,15 +352,12 @@ jobs:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
- name: Install Nix
uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31
- name: Ensure flake outputs on all systems still evaluate
run: nix flake check --all-systems --no-build './nixpkgs/untrusted?shallow=1'
- name: Query nixpkgs with aliases enabled to check for basic syntax errors
- name: Run misc eval tasks in parallel
run: |
time nix-env -I ./nixpkgs/untrusted -f ./nixpkgs/untrusted -qa '*' --option restrict-eval true --option allow-import-from-derivation false >/dev/null
- name: Ensure NixOS modules meta is valid
run: |
time nix-instantiate -I ./nixpkgs/untrusted --strict --eval --json ./nixpkgs/untrusted/nixos --arg configuration '{}' --attr config.meta --option restrict-eval true --option allow-import-from-derivation false
# Ensure flake outputs on all systems still evaluate
nix flake check --all-systems --no-build './nixpkgs/untrusted?shallow=1' &
# Query nixpkgs with aliases enabled to check for basic syntax errors
nix-env -I ./nixpkgs/untrusted -f ./nixpkgs/untrusted -qa '*' --option restrict-eval true --option allow-import-from-derivation false >/dev/null &
wait

View File

@@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-24.04-arm
timeout-minutes: 10
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: .github/actions
@@ -35,7 +35,7 @@ jobs:
with:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
- uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31
# TODO: Figure out how to best enable caching for the treefmt job. Cachix won't work well,
# because the cache would be invalidated on every commit - treefmt checks every file.
@@ -61,7 +61,7 @@ jobs:
runs-on: ubuntu-24.04-arm
timeout-minutes: 10
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: .github/actions
@@ -70,9 +70,9 @@ jobs:
with:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
- uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31
- uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
continue-on-error: true
with:
# The nixpkgs-gha cache should not be trusted or used outside of Nixpkgs and its forks' CI.
@@ -90,7 +90,7 @@ jobs:
runs-on: ubuntu-24.04-arm
timeout-minutes: 10
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: .github/actions
@@ -100,9 +100,9 @@ jobs:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
target-as-trusted-at: ${{ inputs.targetSha }}
- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
- uses: cachix/install-nix-action@0b0e072294b088b73964f1d72dfdac0951439dbd # v31
- uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
continue-on-error: true
with:
# The nixpkgs-gha cache should not be trusted or used outside of Nixpkgs and its forks' CI.
@@ -124,29 +124,3 @@ jobs:
echo "If you're having trouble, ping @NixOS/nixpkgs-vet"
exit "$exitCode"
fi
commits:
# Only check commits if we have access to the pull_request context.
#
# Luckily there's no need to lint commit messages in the Merge Queue, because
# changes to the target branch can't change commit messages on the base branch.
if: ${{ github.event.pull_request.number }}
runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: true # Needed to run git fetch for large PRs.
path: trusted
- name: Check commit messages
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const checkCommitMessages = require('./trusted/ci/github-script/lint-commits.js')
checkCommitMessages({
github,
context,
core,
repoPath: 'trusted',
})

View File

@@ -25,22 +25,20 @@ jobs:
targetSha: ${{ steps.prepare.outputs.targetSha }}
systems: ${{ steps.prepare.outputs.systems }}
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: |
ci/github-script/supportedSystems.js
ci/supportedSystems.json
- id: prepare
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
MERGED_SHA: ${{ inputs.mergedSha }}
TARGET_SHA: ${{ inputs.targetSha }}
with:
script: |
const { classify } = require('./ci/supportedBranches.js')
const supportedSystems = require('./ci/github-script/supportedSystems.js')
const baseBranch = (
context.payload.merge_group?.base_ref ??
context.payload.pull_request.base.ref
@@ -49,23 +47,19 @@ jobs:
core.setOutput('base', baseClassification)
core.info('base classification:', baseClassification)
const mergedSha = context.payload.merge_group?.head_sha ?? process.env.MERGED_SHA
core.setOutput('mergedSha', mergedSha)
core.info(`mergedSha: ${mergedSha}`)
const targetSha = context.payload.merge_group?.base_sha ?? process.env.TARGET_SHA
core.setOutput('targetSha', targetSha)
core.info(`targetSha: ${targetSha}`)
const systems = await supportedSystems({ github, context, targetSha })
core.setOutput('systems', systems)
core.setOutput('mergedSha', context.payload.merge_group?.head_sha ?? process.env.MERGED_SHA)
core.info(`mergedSha: ${context.payload.merge_group?.head_sha ?? process.env.MERGED_SHA}`)
core.setOutput('targetSha', context.payload.merge_group?.base_sha ?? process.env.TARGET_SHA)
core.info(`targetSha: ${context.payload.merge_group?.base_sha ?? process.env.TARGET_SHA}`)
core.setOutput('systems', require('./ci/supportedSystems.json'))
check:
name: Check
needs: [prepare]
uses: ./.github/workflows/check.yml
permissions:
pull-requests: write # cherry-picks: unused in merge queue but required for check workflow
# cherry-picks; formality right now, but unused
pull-requests: write
secrets:
CACHIX_AUTH_TOKEN_GHA: ${{ secrets.CACHIX_AUTH_TOKEN_GHA }}
with:
@@ -89,8 +83,8 @@ jobs:
# The eval workflow requests these permissions so we must explicitly allow them,
# even though they are unused when working with the merge queue.
permissions:
pull-requests: write # compare: unused in merge queue but required by eval workflow
statuses: write # compare: unused in merge queue but required by eval workflow
# compare
statuses: write
secrets:
CACHIX_AUTH_TOKEN_GHA: ${{ secrets.CACHIX_AUTH_TOKEN_GHA }}
with:
@@ -123,9 +117,9 @@ jobs:
- build
runs-on: ubuntu-slim
permissions:
statuses: write # creating 'no PR failures' commit status
statuses: write
steps:
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
RESULTS: ${{ toJSON(needs.*.result) }}
with:

View File

@@ -22,7 +22,7 @@ defaults:
jobs:
periodic-merge:
if: github.repository_owner == 'NixOS' || github.event_name == 'workflow_dispatch'
if: github.repository_owner == 'NixOS'
strategy:
# don't fail fast, so that all pairs are tried
fail-fast: false
@@ -31,18 +31,14 @@ jobs:
max-parallel: 1
matrix:
pairs:
- from: release-25.11
- from: release-25.05
into: staging-next-25.05
- from: staging-next-25.05
into: staging-25.05
- from: master
into: staging-next-25.11
- from: staging-next-25.11
into: staging-25.11
- from: release-25.11
into: staging-nixos-25.11
- from: release-26.05
into: staging-next-26.05
- from: staging-next-26.05
into: staging-26.05
- from: release-26.05
into: staging-nixos-26.05
- name: merge-base(master,staging) → haskell-updates
from: master staging
into: haskell-updates
@@ -53,34 +49,3 @@ jobs:
name: ${{ matrix.pairs.name || format('{0} → {1}', matrix.pairs.from, matrix.pairs.into) }}
secrets:
NIXPKGS_CI_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
# Resets the target branch of the current haskell-updates PR.
# This makes GitHub hide all the commits that are already part of staging and gives us a much clearer PR view.
haskell-updates:
needs: periodic-merge
runs-on: ubuntu-slim
permissions:
pull-requests: write
steps:
- name: Find PR and update target branch
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
// There will at most be a single haskell-updates PR anyway, so no need to paginate.
await Promise.all(
(
await github.rest.pulls.list({
...context.repo,
state: 'open',
head: `${context.repo.owner}:haskell-updates`,
})
).data.map((pr) =>
github.rest.pulls.update({
...context.repo,
pull_number: pr.number,
// Just updating to the same branch to trigger a UI update.
// This is staging most of the time, but could be staging-next in rare cases.
base: pr.base.ref,
}),
),
)

View File

@@ -22,7 +22,7 @@ defaults:
jobs:
periodic-merge:
if: github.repository_owner == 'NixOS' || github.event_name == 'workflow_dispatch'
if: github.repository_owner == 'NixOS'
strategy:
# don't fail fast, so that all pairs are tried
fail-fast: false

View File

@@ -26,15 +26,15 @@ jobs:
steps:
# Use a GitHub App to create the PR so that CI gets triggered
# The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
- uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
id: app-token
with:
client-id: ${{ vars.NIXPKGS_CI_CLIENT_ID }}
app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
permission-contents: write
permission-pull-requests: write
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
@@ -60,10 +60,10 @@ jobs:
github_token: ${{ steps.app-token.outputs.token }}
- name: Comment on failure
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0
if: ${{ failure() }}
env:
BODY_TEXT: |
Periodic merge from `${{ inputs.from }}` into [`${{ inputs.into }}`](https://github.com/NixOS/nixpkgs/tree/${{ inputs.into }}) has [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).
GH_TOKEN: ${{ steps.app-token.outputs.token }}
run: |
gh pr comment 105153 --body "$BODY_TEXT"
with:
issue-number: 105153
body: |
Periodic merge from `${{ inputs.from }}` into `${{ inputs.into }}` has [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).
token: ${{ steps.app-token.outputs.token }}

View File

@@ -10,12 +10,6 @@ on:
secrets:
NIXPKGS_CI_APP_PRIVATE_KEY:
required: true
NIXPKGS_BRANCH_CHECK_APP_PRIVATE_KEY:
required: true
NIXPKGS_COMMIT_CHECK_APP_PRIVATE_KEY:
required: true
NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY:
required: true
concurrency:
group: pr-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
@@ -27,7 +21,8 @@ jobs:
prepare:
runs-on: ubuntu-slim
permissions:
pull-requests: write # submitting 'wrong branch' reviews
# wrong branch review comment
pull-requests: write
outputs:
baseBranch: ${{ steps.prepare.outputs.base }}
headBranch: ${{ steps.prepare.outputs.head }}
@@ -36,27 +31,15 @@ jobs:
systems: ${{ steps.prepare.outputs.systems }}
touched: ${{ steps.prepare.outputs.touched }}
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout-cone-mode: true # default, for clarity
sparse-checkout: |
ci/github-script
# It's fine to reuse this app in the 'eval / compare' job,
# because this job has to run before that one.
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
if: vars.NIXPKGS_BRANCH_CHECK_CLIENT_ID && github.actor != 'dependabot[bot]'
id: app-token
with:
client-id: ${{ vars.NIXPKGS_BRANCH_CHECK_CLIENT_ID }}
private-key: ${{ secrets.NIXPKGS_BRANCH_CHECK_APP_PRIVATE_KEY }}
permission-pull-requests: write
- id: prepare
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.app-token.outputs.token || github.token }}
retries: 10
# The default for this includes code 422, which happens regularly for us when comparing commits:
# 422 - Server Error: Sorry, this diff is taking too long to generate.
@@ -78,9 +61,6 @@ jobs:
permissions:
# cherry-picks
pull-requests: write
secrets:
NIXPKGS_COMMIT_CHECK_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_COMMIT_CHECK_APP_PRIVATE_KEY }}
NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY }}
with:
baseBranch: ${{ needs.prepare.outputs.baseBranch }}
headBranch: ${{ needs.prepare.outputs.headBranch }}
@@ -101,14 +81,10 @@ jobs:
uses: ./.github/workflows/eval.yml
permissions:
# compare
pull-requests: write
statuses: write
secrets:
NIXPKGS_BRANCH_CHECK_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_BRANCH_CHECK_APP_PRIVATE_KEY }}
with:
artifact-prefix: ${{ inputs.artifact-prefix }}
mergedSha: ${{ needs.prepare.outputs.mergedSha }}
headSha: ${{ github.event.pull_request.head.sha }}
targetSha: ${{ needs.prepare.outputs.targetSha }}
systems: ${{ needs.prepare.outputs.systems }}
testVersions: ${{ contains(fromJSON(needs.prepare.outputs.touched), 'pinned') && !contains(fromJSON(needs.prepare.outputs.headBranch).type, 'development') }}
@@ -149,7 +125,7 @@ jobs:
permissions:
statuses: write
steps:
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
RESULTS: ${{ toJSON(needs.*.result) }}
with:

View File

@@ -9,7 +9,7 @@ on:
# This is used as fallback without app only.
# This happens when testing in forks without setting up that app.
permissions:
pull-requests: write # minimizing dismissed reviews and adding reactions
pull-requests: write
defaults:
run:
@@ -20,22 +20,22 @@ jobs:
runs-on: ubuntu-slim
timeout-minutes: 2
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: |
ci/github-script
# Use the GitHub App to make sure the reaction happens with the same user who will later merge.
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
if: github.event_name != 'pull_request' && vars.NIXPKGS_CI_CLIENT_ID
- uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
if: github.event_name != 'pull_request' && vars.NIXPKGS_CI_APP_ID
id: app-token
with:
client-id: ${{ vars.NIXPKGS_CI_CLIENT_ID }}
app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
permission-pull-requests: write
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.app-token.outputs.token || github.token }}
retries: 3

View File

@@ -19,10 +19,10 @@ jobs:
steps:
# Use a GitHub App to create the PR so that CI gets triggered and to
# request team member lists.
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
- uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
id: app-token
with:
client-id: ${{ vars.NIXPKGS_CI_CLIENT_ID }}
app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
permission-administration: read
permission-contents: write
@@ -30,7 +30,7 @@ jobs:
permission-pull-requests: write
- name: Fetch source
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout: |
@@ -38,10 +38,10 @@ jobs:
maintainers/github-teams.json
- name: Install dependencies
run: npm install bottleneck@2.19.5
run: npm install bottleneck
- name: Synchronise teams
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
@@ -64,7 +64,7 @@ jobs:
echo "git-string=$name <$email>" >> "$GITHUB_OUTPUT"
- name: Create Pull Request
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9
with:
token: ${{ steps.app-token.outputs.token }}
add-paths: maintainers/github-teams.json

View File

@@ -19,14 +19,14 @@ jobs:
push: ${{ steps.files.outputs.push }}
targetSha: ${{ steps.prepare.outputs.targetSha }}
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
sparse-checkout-cone-mode: true # default, for clarity
sparse-checkout: |
ci/github-script
- id: prepare
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
retries: 10
# The default for this includes code 422, which happens regularly for us when comparing commits:
@@ -40,12 +40,12 @@ jobs:
context,
core,
// Review comments will be posted by the main PR workflow on the pull_request_target event.
dry: true,
dry: false,
})
- name: Determine changed files
id: files
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const files = (await github.paginate(github.rest.pulls.listFiles, {
@@ -55,15 +55,10 @@ jobs:
})).map(file => file.filename)
if (files.some(file => [
'.github/workflows/build.yml',
'.github/workflows/check.yml',
'.github/workflows/eval.yml',
'.github/workflows/lint.yml',
'.github/workflows/merge-group.yml',
'.github/workflows/test.yml',
'ci/github-script/supportedSystems.js',
'ci/pinned.json',
'ci/supportedBranches.js',
].includes(file))) core.setOutput('merge-group', true)
if (files.some(file => [
@@ -76,18 +71,8 @@ jobs:
'.github/workflows/pull-request-target.yml',
'.github/workflows/test.yml',
'ci/github-script/bot.js',
'ci/github-script/check-target-branch.js',
'ci/github-script/commits.js',
'ci/github-script/get-pr-commit-details.js',
'ci/github-script/lint-commits.js',
'ci/github-script/merge.js',
'ci/github-script/prepare.js',
'ci/github-script/reviewers.js',
'ci/github-script/reviews.js',
'ci/github-script/supportedSystems.js',
'ci/github-script/withRateLimit.js',
'ci/pinned.json',
'ci/supportedBranches.js',
].includes(file))) core.setOutput('pr', true)
merge-group:
@@ -97,8 +82,8 @@ jobs:
uses: ./.github/workflows/merge-group.yml
# Those are actually only used on the merge_group event, but will throw an error if not set.
permissions:
pull-requests: write # unused on pull_request, required by merge-group workflow
statuses: write # unused on pull_request, required by merge-group workflow
pull-requests: write
statuses: write
with:
artifact-prefix: mg-
mergedSha: ${{ needs.prepare.outputs.mergedSha }}
@@ -111,13 +96,10 @@ jobs:
uses: ./.github/workflows/pull-request-target.yml
# Those are actually only used on the pull_request_target event, but will throw an error if not set.
permissions:
issues: write # unused on pull_request, required by bot workflow
pull-requests: write # unused on pull_request, required by PR workflow
statuses: write # unused on pull_request, required by PR workflow
issues: write
pull-requests: write
statuses: write
secrets:
NIXPKGS_CI_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
NIXPKGS_BRANCH_CHECK_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_BRANCH_CHECK_APP_PRIVATE_KEY }}
NIXPKGS_COMMIT_CHECK_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_COMMIT_CHECK_APP_PRIVATE_KEY }}
NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_MANUAL_EDIT_CHECK_APP_PRIVATE_KEY }}
with:
artifact-prefix: pr-

2
.github/zizmor.yml vendored
View File

@@ -10,5 +10,3 @@
rules:
dangerous-triggers:
disable: true
secrets-outside-env:
disable: true

View File

@@ -14,29 +14,18 @@ Janne Heß <janne@hess.ooo> <dasJ@users.noreply.github.com>
jopejoe1 <nixpkgs@missing.ninja>
jopejoe1 <nixpkgs@missing.ninja> <johannes@joens.email>
jopejoe1 <nixpkgs@missing.ninja> <34899572+jopejoe1@users.noreply.github.com>
jopejoe1 <nixpkgs@missing.ninja> <jopejoe1@missing.ninja>
jopejoe1 <nixpkgs@missing.ninja> <jopejoe1>
Jörg Thalheim <joerg@thalheim.io> <Mic92@users.noreply.github.com>
Lin Jian <me@linj.tech> <linj.dev@outlook.com>
Lin Jian <me@linj.tech> <75130626+jian-lin@users.noreply.github.com>
Martin Weinelt <hexa@darmstadt.ccc.de> <mweinelt@users.noreply.github.com>
Martin Häcker <spamfaenger@gmx.de> <spamfaenger@gmx.de>
moni <lythe1107@gmail.com> <lythe1107@icloud.com>
Noah Biewesch <dev@noahbiewesch.com> <90870942+trueNAHO@users.noreply.github.com>
quantenzitrone <nix@dev.quantenzitrone.eu>
quantenzitrone <nix@dev.quantenzitrone.eu> <74491719+Quantenzitrone@users.noreply.github.com>
quantenzitrone <nix@dev.quantenzitrone.eu> <74491719+quantenzitrone@users.noreply.github.com>
quantenzitrone <nix@dev.quantenzitrone.eu> <general@dev.quantenzitrone.eu>
quantenzitrone <nix@dev.quantenzitrone.eu> <quantenzitrone@protonmail.com>
R. RyanTM <ryantm-bot@ryantm.com>
Robert Hensing <robert@roberthensing.nl> <roberth@users.noreply.github.com>
Sandro Jäckel <sandro.jaeckel@gmail.com>
Sandro Jäckel <sandro.jaeckel@gmail.com> <sandro.jaeckel@sap.com>
superherointj <5861043+superherointj@users.noreply.github.com>
Tomodachi94 <tomodachi94@protonmail.com> Tomo <68489118+Tomodachi94@users.noreply.github.com>
toastal <toastal@posteo.net>
toastal <toastal@posteo.net> <561087+toastal@users.noreply.github.com>
toastal <toastal@posteo.net> <toastal@protonmail.com>
Vladimír Čunát <v@cunat.cz> <vcunat@gmail.com>
Vladimír Čunát <v@cunat.cz> <vladimir.cunat@nic.cz>
Yifei Sun <ysun@hey.com>

View File

@@ -206,7 +206,7 @@ For example, if you make a change to `texlive`, you probably would only check th
#### Meets Nixpkgs contribution standards
The last two checkboxes are about whether it fits the guidelines in this `CONTRIBUTING.md` file.
The last checkbox is about whether it fits the guidelines in this `CONTRIBUTING.md` file.
This document details our standards for commit messages, reviews, licensing of contributions, etc...
Everyone should read and understand these standards before submitting a pull request.
@@ -329,17 +329,18 @@ You can invoke the nixpkgs-merge-bot by commenting `@NixOS/nixpkgs-merge-bot mer
The bot will verify the following conditions, refusing to merge otherwise:
- the PR author should be @r-ryantm or a Nixpkgs committer;
- the invoker should be among the package maintainers on the targeted branch;
- the invoker should be among the package maintainers;
- the package should reside in `pkgs/by-name`.
Required status checks prevent PRs that fail them ("PR / ..." jobs) from being merged. Ofborg is not required by the checks.
Further, nixpkgs-merge-bot will ensure all CI checks and the ofborg builds for Linux have successfully completed before merging the pull request.
Should the checks still be underway, the bot will wait for them to finish before attempting the merge again.
For other pull requests, please see [I opened a PR, how do I get it merged?](#i-opened-a-pr-how-do-i-get-it-merged).
In case the PR is stuck waiting for the author to apply a trivial change and the author allowed members to modify the PR, consider applying it yourself.
You should pay extra attention to make sure the addition doesn't go against the idea of the original PR and would not be opposed by the author.
Please see the [`nixpkgs-committers` repository](https://github.com/NixOS/nixpkgs-committers) for information on how to proceed to be granted this level of access.
Please see the discussion in [GitHub nixpkgs issue #321665](https://github.com/NixOS/nixpkgs/issues/321665) for information on how to proceed to be granted this level of access.
As a maintainer, when you leave the Nix community, please create an issue or post on [Discourse](https://discourse.nixos.org) with references to the packages and modules you maintained, so they can be taken over by other contributors.
@@ -442,7 +443,6 @@ The staging workflow is used for all stable branches with corresponding names:
- `master`/`release-YY.MM`
- `staging`/`staging-YY.MM`
- `staging-next`/`staging-next-YY.MM`
- `staging-nixos`/`staging-nixos-YY.MM`
[^1]: Except changes that cause no more rebuilds than kernel updates
@@ -506,7 +506,7 @@ These PRs go to `staging-nixos`, see [the next section for more context](#change
Changes causing a rebuild of all NixOS tests get a special [`10.rebuild-nixos-tests`](https://github.com/NixOS/nixpkgs/issues?q=state%3Aopen%20label%3A10.rebuild-nixos-tests) label.
These changes pose a significant impact on the build infrastructure.
Hence, these PRs should either target a `staging`-branch or `staging-nixos`-branch, provided one of following conditions applies:
Hence, these PRs should either target a `staging`-branch or `staging-nixos`, provided one of following conditions applies:
* The label `10.rebuild-nixos-tests` is set, or
* The PR is a change affecting the Linux kernel.
@@ -659,13 +659,13 @@ If you have any problems with formatting, please ping the [formatting team](http
Do
```nix
{ tag = version; }
{ rev = version; }
```
instead of
```nix
{ tag = "${version}"; }
{ rev = "${version}"; }
```
- Building lists conditionally _should_ be done with `lib.optional(s)` instead of using `if cond then [ ... ] else null` or `if cond then [ ... ] else [ ]`.
@@ -680,7 +680,7 @@ If you have any problems with formatting, please ping the [formatting team](http
{ buildInputs = if stdenv.hostPlatform.isDarwin then [ iconv ] else null; }
```
As an exception, an explicit conditional expression with null can be used when fixing an important bug without triggering a mass rebuild.
As an exception, an explicit conditional expression with null can be used when fixing a important bug without triggering a mass rebuild.
If this is done a follow up pull request _should_ be created to change the code to `lib.optional(s)`.
- Any style choices not covered here but that can be expressed as general rules should be left at the discretion of the authors of changes and _not_ commented in reviews.
@@ -865,7 +865,7 @@ If someone approved and didn't merge a few days later, they most likely just for
Please see it as your responsibility to actively remind reviewers of your open PRs.
The easiest way to do so is to notify them via GitHub.
GitHub notifies people involved, whenever you add a comment or push to your PR or re-request their review.
Github notifies people involved, whenever you add a comment or push to your PR or re-request their review.
Doing any of that will get their attention again.
Everyone deserves proper attention, and yes, that includes you!
However, please be mindful that committers can sadly not always give everyone the attention they deserve.
@@ -889,77 +889,3 @@ As mentioned previously, it is unfortunately perfectly normal for a PR to sit ar
Please don't blow up situations where progress is happening but is merely not going fast enough for your tastes.
Honking in a traffic jam will not make you go any faster.
# Automation/AI policy
Every contribution to Nixpkgs and related development venues, including code, documentation, and communication on GitHub and Matrix, must have a **responsible person in the loop** who is accountable for that contribution and reviews it before submission, and must **transparently disclose** any nontrivial use of automation to produce it, including but not limited to LLMbased AI tools.
The following sections give more detail.
## Scope
Any use of automated tools to generate nontrivial amounts of output as part of a contribution, in whole or in part, verbatim or edited, is covered by this policy, except as listed in the Exemptions section.
Both LLMbased AI tools and handwritten automation are covered.
Contributions include code and documentation in commits, commit messages, pull request summaries and reviews, issue and vulnerability reports, GitHub comments, Matrix messages, and Discourse posts.
The covered venues are the GitHub repositories for Nixpkgs and [related projects](https://github.com/orgs/NixOS/teams/nixpkgs-core/repositories) under the jurisdiction of the Nixpkgs core team, Matrix rooms that are focused on development of those projects, and Discourse topics about Nixpkgs development.
## Accountability
Everyone who submits a contribution to Nixpkgs is responsible for it, regardless of the use of automated tooling.
Before submission, they must establish a reasonable level of understanding of the contribution and expectation of its correctness.
A contributor submitting a contribution intended for inclusion in Nixpkgs is also responsible for ensuring that it is [appropriately licensed](https://github.com/NixOS/nixpkgs/blob/master/COPYING) and credited, and not encumbered by any incompatible copyright.
When output from automated tooling is used in contributions, a contributor must establish confidence in that output.
This can be achieved by establishing confidence in the correctness of the toolings logic, manual review of the included output, or using further automation to verify the output (e.g. programmatically checking whether a refactor avoids causing rebuilds).
As the inner workings of LLMbased AI tools cannot be sufficiently understood at present, only the latter two options are available when those are used; vibe coding without review is not permitted.
When automation is used to verify output, the verification tooling itself must be disclosed and reviewed in line with this policy.
This policy applies equally to any further discussion of a contribution.
Comments and reviews must separately satisfy the same requirements of understanding, review, and disclosure.
Contributors are expected to be able to answer questions about their contribution and respond to feedback appropriately, without simply forwarding messages back and forth to automated tools.
It is not permitted to submit automated contributions without any manual review or intervention, outside of standard community automation.
Automation without any manual review must not be used as the sole arbiter of whether to merge a change.
## Transparency
All covered use of automated tooling for a contribution must be disclosed as part of that contribution.
In the case of LLMbased AI tooling used for commits, this **must** be in the form of an `Assisted-by:` Git commit trailer, including at least the tool name and the primary model name and version used for the contribution.
A `Co-authored-by:` trailer does not satisfy this policy.
Any adequate form of disclosure is permitted for other kinds of tooling and contribution.
Pull request summaries and review comments must be disclosed separately to commits.
## Exemptions
The following situations are fully or partially exempt:
* Use of standard deterministic editor/IDE/formatter/text transformation tooling to produce changes that the author manually reviews and understands is exempt, including inline “autocompletion” (even if LLMbased) of short, rote snippets of text that do not contribute anything beyond boilerplate the author would have written anyway.
* Use of standard community automation is exempt, such as `nix-update`, the official Nixpkgs CI bots, the @r-ryantm update bot, other maintainerapproved bots that run update scripts, and the Nixpkgs security tracker bot.
* Use of AI tools for research, testing, debugging, or private review is out of scope, if no substantial amount of their output is included in the resulting contribution.
However, if these tools had a significant technical influence on your contribution, you are still responsible for it per the Accountability section, and are expected to disclose this where relevant.
* Use of machine translation is exempt from the requirement to understand the translated output.
However, the requirements of appropriate confidence in the original text, responsibility, and disclosure still apply, and you are encouraged to additionally include the original untranslated contribution.
* Use of automation in a contribution clearly marked as not being ready for merge (e.g. a draft pull request) is exempt from the requirement for full selfreview, as long as some amount of review has been done and it is expected that the requirements will be met by the time it is marked as ready.
This does not waive any other requirement.
* Use of automated tools to develop upstream software packaged inside Nixpkgs is not in scope.
## Enforcement
If you believe that someone is using automation without appropriate disclosure and review, you can politely ask them if thats the case and point them to this policy as appropriate.
Please assume good faith and remain civil; its not always possible to determine, and it is more likely that someone overlooked this policy than deliberately violated it.
If you think someone is continuing to break the policy after this, please escalate to the [Nixpkgs core team](https://nixos.org/community/teams/nixpkgs-core/) rather than fighting over it.
If a contribution is clearly in violation of the policy (e.g. the contributor admits it was not followed, or there are AI tool attributions that do not meet our required format), it can be closed or hidden, preferably after informing the contributor of the policy and giving them a chance to address the violations.
Deliberate violations of this policy are considered to break the [Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) clause against “Wasting other peoples time with low quality contributions, including but not limited to LLM and bot spam”.
Repeated violations are grounds for further moderation action.
## Credits
This policy takes inspiration from similar policies in [LLVM](https://llvm.org/docs/AIToolPolicy.html), [Mesa](https://gitlab.freedesktop.org/mesa/mesa/-/blob/mesa-26.1.0-rc1/docs/submittingpatches.rst?ref_type=tags), [Fedora](https://docs.fedoraproject.org/en-US/council/policy/ai-contribution-policy/), and the [Linux kernel](https://docs.kernel.org/7.0/process/coding-assistants.html), along with [a proposal by the author of Anubis](https://xeiaso.net/notes/2025/assisted-by-footer/).

View File

@@ -1,4 +1,4 @@
Copyright (c) 2003-2026 Eelco Dolstra and the Nixpkgs/NixOS contributors
Copyright (c) 2003-2025 Eelco Dolstra and the Nixpkgs/NixOS contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View File

@@ -13,7 +13,7 @@
<a href="https://opencollective.com/nixos"><img src="https://opencollective.com/nixos/tiers/supporter/badge.svg?label=supporters&color=brightgreen" alt="Open Collective supporters" /></a>
</p>
[Nixpkgs](https://github.com/nixos/nixpkgs) is a collection of over 140,000 software packages that can be installed with the [Nix](https://nixos.org/nix/) package manager.
[Nixpkgs](https://github.com/nixos/nixpkgs) is a collection of over 120,000 software packages that can be installed with the [Nix](https://nixos.org/nix/) package manager.
It also implements [NixOS](https://nixos.org/nixos/), a purely-functional Linux distribution.
# Manuals
@@ -47,9 +47,9 @@ Here are some of the main ones:
Nixpkgs and NixOS are built and tested by our continuous integration system, [Hydra](https://hydra.nixos.org/).
* [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
* [Continuous package builds for the NixOS 26.05 release](https://hydra.nixos.org/jobset/nixos/release-26.05)
* [Continuous package builds for the NixOS 25.05 release](https://hydra.nixos.org/jobset/nixos/release-25.05)
* [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)
* [Tests for the NixOS 26.05 release](https://hydra.nixos.org/job/nixos/release-26.05/tested#tabs-constituents)
* [Tests for the NixOS 25.05 release](https://hydra.nixos.org/job/nixos/release-25.05/tested#tabs-constituents)
Artifacts successfully built with Hydra are published to cache at https://cache.nixos.org/.
When successful build and test criteria are met, the Nixpkgs expressions are distributed via [Nix channels](https://nix.dev/manual/nix/stable/command-ref/nix-channel.html).
@@ -70,7 +70,7 @@ For more information about contributing to the project, please visit the [contri
The infrastructure for NixOS and related projects is maintained by a nonprofit organization, the [NixOS Foundation](https://nixos.org/nixos/foundation.html).
To ensure the continuity and expansion of the NixOS infrastructure, we are looking for donations to our organization.
You can donate to the NixOS Foundation through [SEPA bank transfers](https://nixos.org/donate.html) or by using Open Collective:
You can donate to the NixOS foundation through [SEPA bank transfers](https://nixos.org/donate.html) or by using Open Collective:
<a href="https://opencollective.com/nixos#support"><img src="https://opencollective.com/nixos/tiers/supporter.svg?width=890" /></a>

134
ci/OWNERS
View File

@@ -21,22 +21,22 @@
/ci/OWNERS @infinisil @philiptaron
# Development support
/.editorconfig @Mic92
/.editorconfig @Mic92 @zowoq
/shell.nix @infinisil @NixOS/Security
# Libraries
/lib @infinisil @hsjobeki
/lib/generators.nix @infinisil @hsjobeki
/lib/cli.nix @infinisil @hsjobeki
/lib/debug.nix @infinisil @hsjobeki
/lib/asserts.nix @infinisil @hsjobeki
/lib/generators.nix @infinisil @hsjobeki @Profpatsch
/lib/cli.nix @infinisil @hsjobeki @Profpatsch
/lib/debug.nix @infinisil @hsjobeki @Profpatsch
/lib/asserts.nix @infinisil @hsjobeki @Profpatsch
/lib/path/* @infinisil @hsjobeki
/lib/fileset @infinisil @hsjobeki
/maintainers/github-teams.json @infinisil
/maintainers/computed-team-list.nix @infinisil
## Standard environmentrelated libraries
/lib/customisation.nix @alyssais @NixOS/stdenv
/lib/derivations.nix @NixOS/stdenv
/lib/derivations.nix @alyssais @NixOS/stdenv
/lib/fetchers.nix @alyssais @NixOS/stdenv
/lib/meta.nix @alyssais @NixOS/stdenv
/lib/source-types.nix @alyssais @NixOS/stdenv
@@ -56,18 +56,10 @@
/pkgs/top-level/splice.nix @Ericson2314
/pkgs/top-level/release-cross.nix @Ericson2314
/pkgs/top-level/by-name-overlay.nix @infinisil @philiptaron
/pkgs/top-level/config.nix @jopejoe1
/pkgs/top-level/make-tarball.nix @jopejoe1
/pkgs/top-level/packages-config.nix @jopejoe1
/pkgs/top-level/packages-info.nix @jopejoe1
/pkgs/top-level/release-lib.nix @jopejoe1
/pkgs/top-level/release.nix @jopejoe1
/pkgs/stdenv @philiptaron @NixOS/stdenv
/pkgs/stdenv/generic @Ericson2314 @NixOS/stdenv
/pkgs/stdenv/generic/problems.nix @infinisil
/pkgs/test/problems @infinisil
/pkgs/stdenv/generic/check-meta.nix @infinisil @Ericson2314 @adisbladis @NixOS/stdenv
/pkgs/stdenv/generic/meta-types.nix @infinisil @adisbladis @NixOS/stdenv
/pkgs/stdenv/generic/check-meta.nix @Ericson2314 @adisbladis @NixOS/stdenv
/pkgs/stdenv/generic/meta-types.nix @adisbladis @NixOS/stdenv
/pkgs/stdenv/cross @Ericson2314 @NixOS/stdenv
/pkgs/build-support @philiptaron
/pkgs/build-support/cc-wrapper @Ericson2314
@@ -79,10 +71,9 @@
## Format generators/serializers
/pkgs/pkgs-lib @Stunkymonkey @h7x4
/pkgs/pkgs-lib/formats/json2x @Stunkymonkey @h7x4 @figsoda
# Nixpkgs build-support
/pkgs/build-support/writers @lassulus
/pkgs/build-support/writers @lassulus @Profpatsch
# Nixpkgs make-disk-image
/doc/build-helpers/images/makediskimage.section.md @raitobezarius
@@ -92,9 +83,8 @@
# @raitobezarius is not "code owner", but is listed here to be notified of changes
# pertaining to the Nix package manager.
# i.e. no authority over those files.
# Otherwise keep in-sync with lib.teams.nix.
pkgs/tools/package-management/nix/ @Artturin @Ericson2314 @lovesegfault @Mic92 @philiptaron @roberth @tomberek @xokdvium @raitobezarius
nixos/modules/installer/tools/nix-fallback-paths.nix @Artturin @Ericson2314 @lovesegfault @Mic92 @philiptaron @roberth @tomberek @xokdvium @raitobezarius
pkgs/tools/package-management/nix/ @NixOS/nix-team @raitobezarius
nixos/modules/installer/tools/nix-fallback-paths.nix @NixOS/nix-team @raitobezarius
# Nixpkgs documentation
/maintainers/scripts/db-to-md.sh @jtojnar @ryantm
@@ -125,13 +115,12 @@ nixos/modules/installer/tools/nix-fallback-paths.nix @Artturin @Ericson2314 @lo
/nixos/modules/system/activation/bootspec.cue @grahamc @cole-h @raitobezarius
# NixOS Render Docs
/pkgs/by-name/ni/nixos-render-docs @GetPsyched @hsjobeki
/doc/redirects.json @GetPsyched
/nixos/doc/manual/redirects.json @GetPsyched
/pkgs/by-name/ni/nixos-render-docs @fricklerhandwerk @GetPsyched @hsjobeki
/doc/redirects.json @fricklerhandwerk @GetPsyched @hsjobeki
/nixos/doc/manual/redirects.json @fricklerhandwerk @GetPsyched @hsjobeki
# NixOS integration test driver
/nixos/lib/test-driver @tfc
/nixos/lib/testing @tfc
# NixOS QEMU virtualisation
/nixos/modules/virtualisation/qemu-vm.nix @raitobezarius
@@ -196,6 +185,8 @@ nixos/modules/installer/tools/nix-fallback-paths.nix @Artturin @Ericson2314 @lo
/maintainers/scripts/update-python-libraries @mweinelt @natsukium
/pkgs/by-name/up/update-python-libraries @mweinelt @natsukium
/pkgs/development/interpreters/python @mweinelt @natsukium
/pkgs/top-level/python-packages.nix @natsukium
/pkgs/top-level/release-python.nix @natsukium
# CUDA
/pkgs/top-level/cuda-packages.nix @NixOS/cuda-maintainers
@@ -209,26 +200,25 @@ nixos/modules/installer/tools/nix-fallback-paths.nix @Artturin @Ericson2314 @lo
/doc/languages-frameworks/haskell.section.md @sternenseemann @maralorn @wolfgangwalther
/maintainers/scripts/haskell @sternenseemann @maralorn @wolfgangwalther
/pkgs/development/compilers/ghc @sternenseemann @maralorn @wolfgangwalther
/pkgs/development/compilers/ghc/9.6.6-debian-binary.nix @sternenseemann @maralorn @wolfgangwalther @OPNA2608
/pkgs/development/haskell-modules @sternenseemann @maralorn @wolfgangwalther
/pkgs/test/haskell @sternenseemann @maralorn @wolfgangwalther
/pkgs/top-level/release-haskell.nix @sternenseemann @maralorn @wolfgangwalther
/pkgs/top-level/haskell-packages.nix @sternenseemann @maralorn @wolfgangwalther
# Perl
/pkgs/development/interpreters/perl @stigtsp @marcusramberg
/pkgs/top-level/perl-packages.nix @stigtsp @marcusramberg
/pkgs/development/perl-modules @stigtsp @marcusramberg
/pkgs/development/interpreters/perl @stigtsp @zakame @marcusramberg
/pkgs/top-level/perl-packages.nix @stigtsp @zakame @marcusramberg
/pkgs/development/perl-modules @stigtsp @zakame @marcusramberg
# R
/pkgs/applications/science/math/R @jbedo
/pkgs/development/r-modules @jbedo
# Rust
/pkgs/development/compilers/rust @alyssais @Mic92 @winterqt
/pkgs/build-support/rust @winterqt
/pkgs/development/compilers/rust @alyssais @Mic92 @zowoq @winterqt
/pkgs/build-support/rust @zowoq @winterqt
/pkgs/build-support/rust/fetch-cargo-vendor* @TomaSajt
/doc/languages-frameworks/rust.section.md @winterqt
/doc/languages-frameworks/rust.section.md @zowoq @winterqt
# Tcl
/pkgs/development/interpreters/tcl @fgaz
@@ -255,6 +245,7 @@ nixos/modules/installer/tools/nix-fallback-paths.nix @Artturin @Ericson2314 @lo
/pkgs/applications/networking/browsers/firefox/update.nix
/pkgs/applications/networking/browsers/firefox/packages/firefox.nix @mweinelt
/pkgs/applications/networking/browsers/firefox/packages/firefox-esr-*.nix @mweinelt
/pkgs/applications/networking/browsers/librewolf @squalus @DominicWrege @fpletz @LordGrimmauld
/pkgs/applications/networking/browsers/chromium @emilylange @networkException
/nixos/tests/chromium.nix @emilylange @networkException
@@ -271,21 +262,21 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/pkgs/top-level/java-packages.nix @NixOS/java
# Jetbrains
/pkgs/applications/editors/jetbrains @leona-ya @theCapypara
/pkgs/applications/editors/jetbrains @edwtjo @leona-ya @theCapypara
# Licenses
/lib/licenses @alyssais @emilazy @jopejoe1
/lib/licenses.nix @alyssais @emilazy @jopejoe1
# Qt
/pkgs/development/libraries/qt-5 @K900 @NickCao @SuperSandro2000
/pkgs/development/libraries/qt-6 @K900 @NickCao @SuperSandro2000
/pkgs/development/libraries/qt-5 @K900 @NickCao @SuperSandro2000 @ttuegel
/pkgs/development/libraries/qt-6 @K900 @NickCao @SuperSandro2000 @ttuegel
# KDE Frameworks 5
/pkgs/development/libraries/kde-frameworks @K900 @NickCao @SuperSandro2000
/pkgs/development/libraries/kde-frameworks @K900 @NickCao @SuperSandro2000 @ttuegel
# KDE / Plasma 6
/pkgs/kde @K900 @NickCao @SuperSandro2000
/maintainers/scripts/kde @K900 @NickCao @SuperSandro2000
/pkgs/kde @K900 @NickCao @SuperSandro2000 @ttuegel
/maintainers/scripts/kde @K900 @NickCao @SuperSandro2000 @ttuegel
# PostgreSQL and related stuff
/pkgs/by-name/po/postgresqlTestHook @NixOS/postgres
@@ -300,6 +291,13 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/nixos/modules/services/databases/mysql.nix @6543
/nixos/modules/services/backup/mysql-backup.nix @6543
# Hardened profile & related modules
/nixos/modules/profiles/hardened.nix @joachifm
/nixos/modules/security/lock-kernel-modules.nix @joachifm
/nixos/modules/security/misc.nix @joachifm
/nixos/tests/hardened.nix @joachifm
/pkgs/os-specific/linux/kernel/hardened/ @fabianhjr @joachifm
# Home Automation
/nixos/modules/services/home-automation/home-assistant.nix @mweinelt
/nixos/modules/services/home-automation/zigbee2mqtt.nix @mweinelt
@@ -309,14 +307,8 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/pkgs/by-name/es/esphome @mweinelt
# Linux kernel
/doc/packages/linux.section.md @NixOS/linux-kernel
/lib/kernel.nix @NixOS/linux-kernel
/nixos/doc/manual/configuration/linux-kernel.chapter.md @NixOS/linux-kernel
/nixos/modules/system/boot/kernel.nix @NixOS/linux-kernel
/nixos/tests/kernel-generic/ @NixOS/linux-kernel
/pkgs/build-support/kernel/ @NixOS/linux-kernel
/pkgs/os-specific/linux/kernel/ @NixOS/linux-kernel
/pkgs/top-level/linux-kernels.nix @NixOS/linux-kernel
/pkgs/os-specific/linux/kernel/ @NixOS/linux-kernel
# Network Time Daemons
/pkgs/by-name/ch/chrony @thoughtpolice
@@ -344,8 +336,8 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/pkgs/build-support/dlang @jtbx @TomaSajt
# Dhall
/pkgs/development/dhall-modules @Gabriella439
/pkgs/development/interpreters/dhall @Gabriella439
/pkgs/development/dhall-modules @Gabriella439 @Profpatsch
/pkgs/development/interpreters/dhall @Gabriella439 @Profpatsch
# Agda
/pkgs/build-support/agda @NixOS/agda
@@ -358,6 +350,9 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/pkgs/development/idris-modules @Infinisil
/pkgs/development/compilers/idris2 @mattpolzin
# Bazel
/pkgs/by-name/ba/bazel_7 @Profpatsch
# NixOS modules for e-mail and dns services
/nixos/modules/services/mail/mailman.nix @peti
/nixos/modules/services/mail/postfix.nix @peti
@@ -382,20 +377,17 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
# VimPlugins
/pkgs/applications/editors/vim/plugins @NixOS/neovim
## nvim-treesitter
/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix @NixOS/neovim @figsoda
/pkgs/applications/editors/vim/plugins/utils/nvim-treesitter @NixOS/neovim @figsoda
# VsCode Extensions
/pkgs/applications/editors/vscode/extensions
# PHP interpreter, packages, extensions, tests and documentation
/doc/languages-frameworks/php.section.md @aanderse @ma27 @talyz
/nixos/tests/php @aanderse @ma27 @talyz
/pkgs/build-support/php/build-pecl.nix @aanderse @ma27 @talyz
/pkgs/development/interpreters/php @jtojnar @aanderse @ma27 @talyz
/pkgs/development/php-packages @aanderse @ma27 @talyz
/pkgs/top-level/php-packages.nix @jtojnar @aanderse @ma27 @talyz
/doc/languages-frameworks/php.section.md @aanderse @globin @ma27 @talyz
/nixos/tests/php @aanderse @globin @ma27 @talyz
/pkgs/build-support/php/build-pecl.nix @aanderse @globin @ma27 @talyz
/pkgs/development/interpreters/php @jtojnar @aanderse @globin @ma27 @talyz
/pkgs/development/php-packages @aanderse @globin @ma27 @talyz
/pkgs/top-level/php-packages.nix @jtojnar @aanderse @globin @ma27 @talyz
# Docker tools
/pkgs/build-support/docker @roberth @jhol
@@ -406,9 +398,9 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/pkgs/applications/blockchains @mmahut @RaghavSood
# Go
/doc/languages-frameworks/go.section.md @kalbasit @katexochen @Mic92
/pkgs/build-support/go @kalbasit @katexochen @Mic92
/pkgs/development/compilers/go @kalbasit @katexochen @Mic92
/doc/languages-frameworks/go.section.md @kalbasit @katexochen @Mic92 @zowoq
/pkgs/build-support/go @kalbasit @katexochen @Mic92 @zowoq
/pkgs/development/compilers/go @kalbasit @katexochen @Mic92 @zowoq
# GNOME
/pkgs/desktops/gnome @jtojnar
@@ -429,9 +421,8 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/pkgs/applications/networking/cluster/terraform-providers @zowoq
# Forgejo
nixos/modules/services/misc/forgejo.* @adamcstephens @bendlas @christoph-heiss @emilylange @nycodeghg @pyrox0 @tebriel
pkgs/by-name/fo/forgejo/ @adamcstephens @bendlas @christoph-heiss @emilylange @nycodeghg @pyrox0 @tebriel
nixos/tests/forgejo.nix @adamcstephens @bendlas @christoph-heiss @emilylange @nycodeghg @pyrox0 @tebriel
nixos/modules/services/misc/forgejo.nix @adamcstephens @bendlas @emilylange
pkgs/by-name/fo/forgejo/ @adamcstephens @bendlas @emilylange
# Dotnet
/pkgs/build-support/dotnet @corngood
@@ -441,11 +432,9 @@ nixos/tests/forgejo.nix @adamcstephens @bendlas @christoph-heiss @
# Node.js
/pkgs/build-support/node/build-npm-package @winterqt
/pkgs/build-support/node/prefetch-npm-deps @winterqt
/pkgs/build-support/node/fetch-npm-deps @winterqt
/doc/languages-frameworks/javascript.section.md @winterqt
/pkgs/development/tools/pnpm @Scrumplex @gepbird
/pkgs/build-support/node/fetch-pnpm-deps @Scrumplex @gepbird
/pkgs/test/pnpm @Scrumplex @gepbird
# OCaml
/pkgs/build-support/ocaml @ulrikstrid
@@ -487,7 +476,7 @@ pkgs/by-name/lx/lxc* @adamcstephens
/pkgs/desktops/expidus @RossComputerGuy
# GNU Tar & Zip
/pkgs/by-name/gn/gnutar @RossComputerGuy
/pkgs/tools/archivers/gnutar @RossComputerGuy
/pkgs/by-name/zi/zip @RossComputerGuy
# SELinux
@@ -502,7 +491,7 @@ pkgs/by-name/lx/lxc* @adamcstephens
# Darwin
/pkgs/by-name/ap/apple-sdk @NixOS/darwin-core
/pkgs/os-specific/darwin @NixOS/darwin-core
/pkgs/os-specific/darwin/apple-source-releases @NixOS/darwin-core
/pkgs/stdenv/darwin @NixOS/darwin-core
# BEAM
@@ -512,7 +501,7 @@ pkgs/development/interpreters/elixir/ @NixOS/beam
pkgs/development/interpreters/lfe/ @NixOS/beam
# Authelia
pkgs/by-name/au/authelia/ @06kellyjac @nicomem
pkgs/servers/authelia/ @06kellyjac @dit7ya @nicomem
# OctoDNS
pkgs/by-name/oc/octodns/ @anthonyroussel
@@ -529,10 +518,3 @@ pkgs/by-name/wa/warp-terminal/ @emilytrau @imadnyc @FlameFlag @johnrtitor
/pkgs/build-support/build-nim-package.nix @NixOS/nim
/pkgs/build-support/build-nim-sbom.nix @NixOS/nim
/pkgs/top-level/nim-overrides.nix @NixOS/nim
# Radicle
/pkgs/build-support/fetchradicle/ @NixOS/radicle
/pkgs/build-support/fetchradiclepatch/ @NixOS/radicle
# Zellij plugins
/pkgs/by-name/ze/zellij/plugins/ @PerchunPak

View File

@@ -24,7 +24,7 @@ The Nixpkgs merge bot empowers package maintainers by enabling them to merge PRs
It serves as a bridge for maintainers to quickly respond to user feedback, facilitating a more self-reliant approach.
Especially when considering there are roughly 20 maintainers for every committer, this bot is a game-changer.
Following [RFC 172], the merge bot was originally implemented as a [python webapp](https://github.com/NixOS/nixpkgs-merge-bot), which has now been integrated into [`ci/github-script/bot.js`](./github-script/bot.js) and [`ci/github-script/merge.js`](./github-script/merge.js).
Following [RFC 172] the merge bot was originally implemented as a [python webapp](https://github.com/NixOS/nixpkgs-merge-bot), which has now been integrated into [`ci/github-script/bot.js`](./github-script/bot.js) and [`ci/github-script/merge.js`](./github-script/merge.js).
### Using the merge bot

View File

@@ -81,36 +81,30 @@ let
};
};
settings.formatter.yamlfmt.excludes = [
# Breaks helm templating
"nixos/tests/k3s/k3s-test-chart/templates/*"
# Aligns comments with whitespace
"pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml"
# TODO: Fix formatting for auto-generated file
"pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml"
];
programs.nixf-diagnose = {
enable = true;
ignore = [
# Rule names can currently be looked up here:
# https://github.com/nix-community/nixd/blob/main/libnixf/src/Basic/diagnostic.py
# TODO: Remove the following and fix things.
"sema-unused-def-lambda-noarg-formal"
"sema-unused-def-lambda-witharg-arg"
"sema-unused-def-lambda-witharg-formal"
"sema-unused-def-let"
# Keep this rule, because we have `lib.or`.
"or-identifier"
# TODO: remove after outstanding prelude diagnostics issues are fixed:
# https://github.com/nix-community/nixd/issues/761
# https://github.com/nix-community/nixd/issues/762
"sema-primop-removed-prefix"
"sema-primop-overridden"
"sema-constant-overridden"
"sema-primop-unknown"
];
};
programs.nixf-diagnose.enable = true;
settings.formatter.nixf-diagnose = {
# Ensure nixfmt cleans up after nixf-diagnose.
priority = -1;
options = [
"--auto-fix"
# Rule names can currently be looked up here:
# https://github.com/nix-community/nixd/blob/main/libnixf/src/Basic/diagnostic.py
# TODO: Remove the following and fix things.
"--ignore=sema-unused-def-lambda-noarg-formal"
"--ignore=sema-unused-def-lambda-witharg-arg"
"--ignore=sema-unused-def-lambda-witharg-formal"
"--ignore=sema-unused-def-let"
# Keep this rule, because we have `lib.or`.
"--ignore=or-identifier"
];
excludes = [
# Auto-generated; violates sema-extra-with
# Can only sensibly be removed when --auto-fix supports multiple fixes at once:
@@ -180,14 +174,14 @@ rec {
lib-tests = import ../lib/tests/release.nix { inherit pkgs; };
manual-nixos = (import ../nixos/release.nix { }).manual.${system} or null;
manual-nixpkgs = (import ../doc { inherit pkgs; });
manual-nixpkgs-tests = (import ../doc { inherit pkgs; }).tests;
nixpkgs-vet = pkgs.callPackage ./nixpkgs-vet.nix {
nix = pkgs.nixVersions.latest;
};
parse = pkgs.lib.recurseIntoAttrs {
nix_latest = pkgs.callPackage ./parse.nix { nix = pkgs.nixVersions.latest; };
nix_2_28 = pkgs.callPackage ./parse.nix { nix = pkgs.nixVersions.nix_2_28; };
latest = pkgs.callPackage ./parse.nix { nix = pkgs.nixVersions.latest; };
lix = pkgs.callPackage ./parse.nix { nix = pkgs.lix; };
lix_latest = pkgs.callPackage ./parse.nix { nix = pkgs.lixPackageSets.latest.lix; };
nix_2_28 = pkgs.callPackage ./parse.nix { nix = pkgs.nixVersions.nix_2_28; };
};
shell = import ../shell.nix { inherit nixpkgs system; };
tarball = import ../pkgs/top-level/make-tarball.nix {

View File

@@ -10,16 +10,16 @@ nix-build ci -A eval.baseline
The two most important arguments are:
- `--arg evalSystems`: The set of systems for which `nixpkgs` should be evaluated.
Defaults to the [supported systems](../../pkgs/top-level/release-supported-systems.json) for the branch.
Defaults to the four official platforms (`x86_64-linux`, `aarch64-linux`, `x86_64-darwin` and `aarch64-darwin`).
Example: `--arg evalSystems '["x86_64-linux" "aarch64-darwin"]'`
- `--arg quickTest`: Enables testing a single chunk of the current system only for quick iteration.
Example: `--arg quickTest true`
The following arguments can be used to fine-tune performance:
- `--max-jobs`: The maximum number of derivations to run at the same time.
Only each supported system gets a separate derivation, so it doesn't make sense to set this higher than that number.
Only each [supported system](../supportedSystems.json) gets a separate derivation, so it doesn't make sense to set this higher than that number.
- `--cores`: The number of cores to use for each job.
Recommended to set this to the number of cores on your system divided by `--max-jobs`.
Recommended to set this to the amount of cores on your system divided by `--max-jobs`.
- `--arg chunkSize`: The number of attributes that are evaluated simultaneously on a single core.
Lowering this decreases memory usage at the cost of increased evaluation time.
If this is too high, there won't be enough chunks to process them in parallel, and will also increase evaluation time.

View File

@@ -74,38 +74,9 @@ let
{
attrdiff: {
added: ["package1"],
changed: ["package2", "package3", "package4"],
changed: ["package2", "package3"],
removed: ["package4"],
},
attrdiffByKernel: {
darwin: {
added: [],
changed: ["package2", "package4"],
removed: ["package4"],
},
linux: {
added: ["package1"],
changed: ["package3", "package4"],
removed: [],
},
},
attrdiffByPlatform: {
aarch64-darwin: {
added: [],
changed: ["package2"],
removed: ["package4"],
},
aarch64-linux: {
added: ["package1"],
changed: ["package3"],
removed: [],
},
x86_64-linux: {
added: [],
changed: ["package4"],
removed: [],
},
},
labels: {
"10.rebuild-darwin: 1-10": true,
"10.rebuild-linux: 1-10": true
@@ -142,8 +113,6 @@ let
inherit (import ./utils.nix { inherit lib; })
groupByKernel
convertToPackagePlatformAttrs
groupAttrdiffByKernel
groupAttrdiffByPlatform
groupByPlatform
extractPackageNames
getLabels
@@ -154,29 +123,21 @@ let
# - values: lists of `packagePlatformPath`s
diffAttrs = builtins.fromJSON (builtins.readFile "${combined}/combined-diff.json");
changedPackagePlatformAttrs = convertToPackagePlatformAttrs diffAttrs.changed;
rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs diffAttrs.rebuilds;
removedPackagePlatformAttrs = convertToPackagePlatformAttrs diffAttrs.removed;
changed-paths =
let
attrdiff = lib.mapAttrs (_: extractPackageNames) {
inherit (diffAttrs) added changed removed;
};
attrdiffByPlatform = groupAttrdiffByPlatform {
inherit (diffAttrs) added changed removed;
};
attrdiffByKernel = groupAttrdiffByKernel {
inherit (diffAttrs) added changed removed;
};
rebuildsByPlatform = groupByPlatform rebuildsPackagePlatformAttrs;
rebuildsByKernel = groupByKernel rebuildsPackagePlatformAttrs;
rebuildCountByKernel = lib.mapAttrs (
kernel: kernelRebuilds: lib.length kernelRebuilds
) rebuildsByKernel;
rebuildNames = extractPackageNames diffAttrs.rebuilds;
in
writeText "changed-paths.json" (
builtins.toJSON {
inherit attrdiff attrdiffByKernel attrdiffByPlatform;
attrdiff = lib.mapAttrs (_: extractPackageNames) { inherit (diffAttrs) added changed removed; };
inherit
rebuildsByPlatform
rebuildsByKernel
@@ -190,22 +151,22 @@ let
) rebuildsByKernel
// {
"10.rebuild-nixos-tests" =
lib.elem "nixosTests.simple-container" rebuildNames || lib.elem "nixosTests.simple-vm" rebuildNames;
lib.elem "nixosTests.simple" (extractPackageNames diffAttrs.rebuilds)
&&
# Only set this label when no other label with indication for staging has been set.
# This avoids confusion whether to target staging or batch this with kernel updates.
lib.last (lib.sort lib.lessThan (lib.attrValues rebuildCountByKernel)) <= 500;
};
}
);
getMaintainers = callPackage ./maintainers.nix { };
inherit
(getMaintainers {
affectedAttrPaths = map (a: a.packagePath) (
convertToPackagePlatformAttrs (diffAttrs.changed ++ diffAttrs.removed)
);
changedFiles = lib.importJSON touchedFilesJson;
(callPackage ./maintainers.nix { } {
changedattrs = lib.attrNames (lib.groupBy (a: a.name) changedPackagePlatformAttrs);
changedpathsjson = touchedFilesJson;
removedattrs = lib.attrNames (lib.groupBy (a: a.name) removedPackagePlatformAttrs);
})
users
teams
maintainers
packages
;
in
@@ -217,12 +178,10 @@ runCommand "compare"
cmp-stats
codeowners
];
users = builtins.toJSON users;
teams = builtins.toJSON teams;
packages = builtins.toJSON (lib.map (lib.concatStringsSep ".") packages);
maintainers = builtins.toJSON maintainers;
packages = builtins.toJSON packages;
passAsFile = [
"users"
"teams"
"maintainers"
"packages"
];
}
@@ -303,7 +262,6 @@ runCommand "compare"
done
cp "$usersPath" "$out/maintainers.json"
cp "$teamsPath" "$out/teams.json"
cp "$maintainersPath" "$out/maintainers.json"
cp "$packagesPath" "$out/packages.json"
''

View File

@@ -1,59 +1,71 @@
# Figure out which maintainers (users/teams) are relevant for a PR:
# - All maintainers that can be linked directly to changedFiles
# - Maintainers of affectedAttrPaths if a file directly related to the attribute is in changedFiles
#
# Files and attributes are linked in various ways:
# - pkgs/by-name/<attr>/* is linked to pkgs.<attr>
# - The file position of various attributes of pkgs.<attr>
# - Explicitly specified file positions in derivations
#
# Test with
# nix-instantiate --eval --strict --json test.nix -A result | jq
#
# Empty list as an output means success
# Dependencies coming from the CI-pinned Nixpkgs
{
lib,
}:
# Function arguments
{
# Files that were changed
# Type: ListOf (Nixpkgs-root-relative path)
changedFiles,
# Attributes whose value was affected by the change
# Type: ListOf (ListOf String)
affectedAttrPaths,
# Nixpkgs used to check maintainers. Customisable for testing
pkgs ? import ../../.. {
changedattrs,
changedpathsjson,
removedattrs,
}:
let
pkgs = import ../../.. {
system = "x86_64-linux";
# We should never try to ping maintainers through package aliases, this can only lead to errors.
# One example case is, where an attribute is a throw alias, but then re-introduced in a PR.
# This would trigger the throw. By disabling aliases, we can fallback gracefully below.
config.allowAliases = false;
overlays = [ ];
},
}:
let
nixpkgsRoot = toString ../../.. + "/";
stripNixpkgsRootFromKeys = lib.mapAttrs' (
file: value: lib.nameValuePair (lib.removePrefix nixpkgsRoot file) value
);
};
moduleMeta = (pkgs.nixos { }).config.meta;
changedpaths = lib.importJSON changedpathsjson;
# Currently just nixos module maintainers, but in the future we can use this for code owners too
fileUsers = stripNixpkgsRootFromKeys moduleMeta.maintainers;
fileTeams = stripNixpkgsRootFromKeys moduleMeta.teams;
# Extract attributes that changed from by-name paths.
# This allows pinging reviewers for pure refactors.
touchedattrs = lib.pipe changedpaths [
(lib.filter (changed: lib.hasPrefix "pkgs/by-name/" changed))
(map (lib.splitString "/"))
(map (path: lib.elemAt path 3))
lib.unique
];
anyMatchingFile = filename: lib.any (lib.hasPrefix filename) changedFiles;
anyMatchingFile = filename: lib.any (lib.hasPrefix filename) changedpaths;
anyMatchingFiles = files: lib.any anyMatchingFile files;
sharded = name: "${lib.substring 0 2 name}/${name}";
attrsWithMaintainers = lib.pipe (changedattrs ++ removedattrs ++ touchedattrs) [
# An attribute can appear in changed/removed *and* touched
lib.unique
(map (
name:
let
path = lib.splitString "." name;
# Some packages might be reported as changed on a different platform, but
# not even have an attribute on the platform the maintainers are requested on.
# Fallback to `null` for these to filter them out below.
package = lib.attrByPath path null pkgs;
in
{
inherit name package;
# Adds all files in by-name to each package, no matter whether they are discoverable
# via meta attributes below. For example, this allows pinging maintainers for
# updates to .json files.
# TODO: Support by-name package sets.
filenames = lib.optional (lib.length path == 1) "pkgs/by-name/${sharded (lib.head path)}/";
# TODO: Refactor this so we can ping entire teams instead of the individual members.
# Note that this will require keeping track of GH team IDs in "maintainers/teams.nix".
maintainers = package.meta.maintainers or [ ];
}
))
# No need to match up packages without maintainers with their files.
# This also filters out attributes where `packge = null`, which is the
# case for libintl, for example.
(lib.filter (pkg: pkg.maintainers != [ ]))
];
relevantFilenames =
drv:
(lib.unique (
map (pos: lib.removePrefix nixpkgsRoot pos.file) (
map (pos: lib.removePrefix "${toString ../../..}/" pos.file) (
lib.filter (x: x != null) [
(drv.meta.maintainersPosition or null)
(drv.meta.teamsPosition or null)
@@ -76,84 +88,26 @@ let
)
));
relevantAffectedAttrPaths = lib.filter (
attrPath:
# Some packages might be reported as changed on a different platform, but
# not even have an attribute on the platform the maintainers are requested on.
# Fallback to `null` for these to filter them out
let
package = lib.attrByPath attrPath null pkgs;
in
package != null && anyMatchingFiles (relevantFilenames package)
) affectedAttrPaths;
attrsWithFilenames = map (
pkg: pkg // { filenames = pkg.filenames ++ relevantFilenames pkg.package; }
) attrsWithMaintainers;
# Extract attributes that changed from by-name paths.
# This allows pinging reviewers for pure refactors.
changedByNameAttrPaths = lib.pipe changedFiles [
(lib.filter (changed: lib.hasPrefix "pkgs/by-name/" changed))
(map (lib.splitString "/"))
# Filters out e.g. pkgs/by-name/README.md
(lib.filter (path: lib.length path > 3))
(map (path: lib.elemAt path 3))
(map lib.singleton)
# Filter out new packages
(lib.filter (attrPath: lib.hasAttrByPath attrPath pkgs))
];
attrsWithModifiedFiles = lib.filter (pkg: anyMatchingFiles pkg.filenames) attrsWithFilenames;
# An attribute can appear in affected *and* touched
attrPathsToGetMaintainersFor = lib.unique (relevantAffectedAttrPaths ++ changedByNameAttrPaths);
attrPathEntities = lib.concatMap (
attrPath:
let
package = lib.getAttrFromPath attrPath pkgs;
in
# meta.maintainers also contains all individual team members.
# We only want to ping individuals if they're added individually as maintainers, not via teams.
userPings { inherit attrPath; } (package.meta.nonTeamMaintainers or [ ])
++ lib.concatMap (teamPings { inherit attrPath; }) (package.meta.teams or [ ])
) attrPathsToGetMaintainersFor;
changedFileEntities = lib.concatMap (
file:
userPings { inherit file; } (fileUsers.${file} or [ ])
++ lib.concatMap (teamPings { inherit file; }) (fileTeams.${file} or [ ])
) changedFiles;
userPings =
context:
listToPing = lib.concatMap (
pkg:
map (maintainer: {
type = "user";
userId = maintainer.githubId;
inherit context;
});
id = maintainer.githubId;
inherit (maintainer) github;
packageName = pkg.name;
dueToFiles = pkg.filenames;
}) pkg.maintainers
) attrsWithModifiedFiles;
teamPings =
context: team:
if team ? githubId then
[
{
type = "team";
teamId = team.githubId;
inherit context;
}
]
else
userPings context team.members;
byType = lib.groupBy (ping: ping.type) (attrPathEntities ++ changedFileEntities);
byUser = lib.pipe (byType.user or [ ]) [
(lib.groupBy (ping: toString ping.userId))
(lib.mapAttrs (_user: lib.map (pkg: pkg.context)))
];
byTeam = lib.pipe (byType.team or [ ]) [
(lib.groupBy (ping: toString ping.teamId))
(lib.mapAttrs (_team: lib.map (pkg: pkg.context)))
];
byMaintainer = lib.groupBy (ping: toString ping.id) listToPing;
in
{
users = byUser;
teams = byTeam;
packages = attrPathsToGetMaintainersFor;
maintainers = lib.mapAttrs (_: lib.catAttrs "packageName") byMaintainer;
packages = lib.catAttrs "packageName" listToPing;
}

View File

@@ -1,311 +0,0 @@
{
pkgs ? import ../../.. {
config = { };
overlays = [ ];
},
lib ? pkgs.lib,
}:
let
fun = import ./maintainers.nix { inherit lib; };
utils = import ./utils.nix { inherit lib; };
mockPkgs =
{
packages ? [ ],
modules ? [ ],
githubTeams ? true,
}:
lib.updateManyAttrsByPath
(lib.imap0 (i: p: {
path = p;
update = _: {
meta.maintainersPosition.file = lib.concatStringsSep "/" p;
meta.nonTeamMaintainers = [ { githubId = i; } ];
meta.teams =
if githubTeams then [ { githubId = i + 100; } ] else [ { members = [ { githubId = i + 100; } ]; } ];
};
}) packages)
{
nixos =
{ }:
{
config.meta.maintainers = lib.listToAttrs (
lib.imap0 (i: m: lib.nameValuePair m [ { githubId = i; } ]) modules
);
config.meta.teams = lib.listToAttrs (
lib.imap0 (
i: m:
lib.nameValuePair m (
if githubTeams then [ { githubId = i + 100; } ] else [ { members = [ { githubId = i + 100; } ]; } ]
)
) modules
);
};
};
tests = {
testEmpty = {
expr = fun {
pkgs = mockPkgs { };
changedFiles = [ ];
affectedAttrPaths = [ ];
};
expected = {
packages = [ ];
teams = { };
users = { };
};
};
testNonExistentAffected = {
expr = fun {
pkgs = mockPkgs { };
changedFiles = [ "a" ];
affectedAttrPaths = [ [ "b" ] ];
};
expected = {
packages = [ ];
teams = { };
users = { };
};
};
testIrrelevantAffected = {
expr = fun {
pkgs = mockPkgs {
packages = [ [ "b" ] ];
};
changedFiles = [ "a" ];
affectedAttrPaths = [ [ "b" ] ];
};
expected = {
packages = [ ];
teams = { };
users = { };
};
};
testRelevantAffected = {
expr = fun {
pkgs = mockPkgs {
packages = [ [ "b" ] ];
};
# Also tests that subpaths work
changedFiles = [ "b/c" ];
affectedAttrPaths = [ [ "b" ] ];
};
expected = {
packages = [ [ "b" ] ];
teams."100" = [
{ attrPath = [ "b" ]; }
];
users."0" = [
{ attrPath = [ "b" ]; }
];
};
};
testRelevantAffectedNonGitHub = {
expr = fun {
pkgs = mockPkgs {
packages = [ [ "b" ] ];
githubTeams = false;
};
changedFiles = [ "b/c" ];
affectedAttrPaths = [ [ "b" ] ];
};
expected = {
packages = [ [ "b" ] ];
teams = { };
users."0" = [
{ attrPath = [ "b" ]; }
];
users."100" = [
{ attrPath = [ "b" ]; }
];
};
};
testByNameChanged = {
expr = fun {
pkgs = mockPkgs {
packages = [ [ "hello" ] ];
};
changedFiles = [ "pkgs/by-name/he/hello/sources.json" ];
affectedAttrPaths = [ ];
};
expected = {
packages = [ [ "hello" ] ];
teams."100" = [
{ attrPath = [ "hello" ]; }
];
users."0" = [
{ attrPath = [ "hello" ]; }
];
};
};
testByNameNonExistentChanged = {
expr = fun {
pkgs = mockPkgs {
packages = [ ];
};
# Happens when a new package was added to pkgs/by-name
changedFiles = [ "pkgs/by-name/he/hello/sources.json" ];
affectedAttrPaths = [ ];
};
expected = {
packages = [ ];
teams = { };
users = { };
};
};
testByNameReadmeChanged = {
expr = fun {
pkgs = mockPkgs {
packages = [ [ "hello" ] ];
};
changedFiles = [ "pkgs/by-name/README.md" ];
affectedAttrPaths = [ ];
};
expected = {
packages = [ ];
teams = { };
users = { };
};
};
testNoDuplicates = {
expr = fun {
pkgs = mockPkgs {
packages = [ [ "hello" ] ];
};
changedFiles = [
"hello"
"pkgs/by-name/he/hello/sources.json"
];
affectedAttrPaths = [ [ "hello" ] ];
};
expected = {
packages = [ [ "hello" ] ];
teams."100" = [
{ attrPath = [ "hello" ]; }
];
users."0" = [
{ attrPath = [ "hello" ]; }
];
};
};
testModuleMaintainers = {
expr = fun {
pkgs = mockPkgs {
modules = [ "a" ];
};
changedFiles = [ "a" ];
affectedAttrPaths = [ ];
};
expected = {
packages = [ ];
teams."100" = [
{ file = "a"; }
];
users."0" = [
{ file = "a"; }
];
};
};
testModuleMaintainersNonGithub = {
expr = fun {
pkgs = mockPkgs {
modules = [ "a" ];
githubTeams = false;
};
changedFiles = [ "a" ];
affectedAttrPaths = [ ];
};
expected = {
packages = [ ];
teams = { };
users."100" = [
{ file = "a"; }
];
users."0" = [
{ file = "a"; }
];
};
};
testGroupAttrdiffByPlatform = {
expr = utils.groupAttrdiffByPlatform {
added = [
"new-tool.aarch64-linux"
"new-tool.x86_64-darwin"
];
changed = [
"updated-tool.x86_64-darwin"
"shared-tool.x86_64-darwin"
];
removed = [
"removed-tool.aarch64-darwin"
"shared-tool.aarch64-darwin"
];
};
expected = {
aarch64-darwin = {
added = [ ];
changed = [ ];
removed = [
"removed-tool"
"shared-tool"
];
};
aarch64-linux = {
added = [ "new-tool" ];
changed = [ ];
removed = [ ];
};
x86_64-darwin = {
added = [ "new-tool" ];
changed = [
"shared-tool"
"updated-tool"
];
removed = [ ];
};
};
};
testGroupAttrdiffByKernel = {
expr =
let
grouped = utils.groupAttrdiffByKernel {
added = [
"new-tool.aarch64-linux"
"new-tool.x86_64-darwin"
];
changed = [
"updated-tool.x86_64-darwin"
"shared-tool.x86_64-darwin"
];
removed = [
"removed-tool.aarch64-darwin"
"shared-tool.aarch64-darwin"
];
};
in
lib.mapAttrs (_: diff: lib.mapAttrs (_: lib.sort lib.lessThan) diff) grouped;
expected = {
darwin = {
added = [ "new-tool" ];
changed = [
"shared-tool"
"updated-tool"
];
removed = [
"removed-tool"
"shared-tool"
];
};
linux = {
added = [ "new-tool" ];
changed = [ ];
removed = [ ];
};
};
};
};
in
{
result = lib.runTests tests;
}

View File

@@ -150,50 +150,6 @@ rec {
in
lib.genAttrs [ "linux" "darwin" ] filterKernel;
/*
Group an attrdiff-style mapping by a derived key such as platform or kernel.
Turns
{
added = [ "new-tool.aarch64-linux" "new-tool.x86_64-darwin" ];
changed = [ "updated-tool.x86_64-darwin" "shared-tool.x86_64-darwin" ];
removed = [ "removed-tool.aarch64-darwin" "shared-tool.aarch64-darwin" ];
}
into
{
aarch64-darwin = {
added = [ ];
changed = [ ];
removed = [ "removed-tool" "shared-tool" ];
};
aarch64-linux = {
added = [ "new-tool" ];
changed = [ ];
removed = [ ];
};
x86_64-darwin = {
added = [ "new-tool" ];
changed = [ "shared-tool" "updated-tool" ];
removed = [ ];
};
}
when used with `groupByPlatform`.
*/
groupAttrdiffBy =
grouper: attrdiff:
let
groupedByKind = lib.mapAttrs (
_: packagePlatformPaths:
grouper (convertToPackagePlatformAttrs (uniqueStrings packagePlatformPaths))
) attrdiff;
groups = uniqueStrings (lib.flatten (map builtins.attrNames (lib.attrValues groupedByKind)));
in
lib.genAttrs groups (group: lib.mapAttrs (_: byGroup: byGroup.${group} or [ ]) groupedByKind);
groupAttrdiffByPlatform = groupAttrdiffBy groupByPlatform;
groupAttrdiffByKernel = groupAttrdiffBy groupByKernel;
/*
Maps an attrs of `kernel - rebuild counts` mappings to an attrs of labels

View File

@@ -38,6 +38,7 @@ let
fileset = unions (
map (lib.path.append ../..) [
".version"
"ci/supportedSystems.json"
"ci/eval/attrpaths.nix"
"ci/eval/chunk.nix"
"ci/eval/outpaths.nix"
@@ -52,9 +53,7 @@ let
);
};
supportedSystems = builtins.fromJSON (
builtins.readFile ../../pkgs/top-level/release-supported-systems.json
);
supportedSystems = builtins.fromJSON (builtins.readFile ../supportedSystems.json);
attrpathsSuperset =
{

15
ci/eval/outpaths.nix Executable file → Normal file
View File

@@ -10,9 +10,7 @@
attrNamesOnly ? false,
# Set this to `null` to build for builtins.currentSystem only
systems ? builtins.fromJSON (
builtins.readFile (path + "/pkgs/top-level/release-supported-systems.json")
),
systems ? builtins.fromJSON (builtins.readFile ../supportedSystems.json),
# Customize the config used to evaluate nixpkgs
extraNixpkgsConfig ? { },
@@ -35,9 +33,6 @@ let
allowVariants = !attrNamesOnly;
checkMeta = true;
# Silence the `x86_64-darwin` deprecation warning.
allowDeprecatedx86_64Darwin = true;
handleEvalIssue =
reason: errormsg:
let
@@ -72,9 +67,7 @@ let
nixosJobs = import (path + "/nixos/release.nix") {
inherit attrNamesOnly;
supportedSystems = lib.filter (lib.hasSuffix "-linux") (
if systems == null then [ builtins.currentSystem ] else systems
);
supportedSystems = if systems == null then [ builtins.currentSystem ] else systems;
};
recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; };
@@ -108,8 +101,6 @@ in
tweak (
(removeAttrs nixpkgsJobs blacklist)
// {
nixosTests = lib.filterAttrs (
name: _: name == "simple-container" || name == "simple-vm"
) nixosJobs.tests;
nixosTests.simple = nixosJobs.tests.simple;
}
)

View File

@@ -1,6 +1,6 @@
module.exports = async ({ github, context, core, dry }) => {
const path = require('node:path')
const { DefaultArtifactClient } = await import('@actions/artifact')
const { DefaultArtifactClient } = require('@actions/artifact')
const { readFile, writeFile } = require('node:fs/promises')
const withRateLimit = require('./withRateLimit.js')
const { classify } = require('../supportedBranches.js')
@@ -9,15 +9,6 @@ module.exports = async ({ github, context, core, dry }) => {
const artifactClient = new DefaultArtifactClient()
// Detect if running in a fork (not NixOS/nixpkgs)
const isFork = context.repo.owner !== 'NixOS'
const orgId = (
await github.rest.orgs.get({
org: context.repo.owner,
})
).data.id
async function downloadMaintainerMap(branch) {
let run
@@ -77,18 +68,9 @@ module.exports = async ({ github, context, core, dry }) => {
// We get here when none of the 10 commits we looked at contained a maintainer map.
// For the master branch, we don't have any fallback options, so we error out.
// In forks without merge-group history, return empty map to allow testing.
if (branch === 'master') {
if (isFork) {
core.warning(
'No maintainer map found. Using empty map (expected in forks without merge-group history).',
)
return {}
}
throw new Error('No maintainer map found.')
}
// For other branches, we select a suitable fallback below.
if (branch === 'master') throw new Error('No maintainer map found.')
const { stable, version } = classify(branch)
const release = `release-${version}`
@@ -127,11 +109,6 @@ module.exports = async ({ github, context, core, dry }) => {
return []
}
// Forks don't have NixOS teams, return empty list
if (isFork) {
return []
}
if (!members[team_slug]) {
members[team_slug] = github.paginate(github.rest.teams.listMembersInOrg, {
org: context.repo.owner,
@@ -156,38 +133,11 @@ module.exports = async ({ github, context, core, dry }) => {
id,
})
.then((resp) => resp.data)
.catch((e) => {
// User may have deleted their account
if (e.status === 404) return null
throw e
})
}
return users[id]
}
// Same for teams
const teams = {}
function getTeam(id) {
if (!teams[id]) {
teams[id] = github
.request({
method: 'GET',
url: '/organizations/{orgId}/team/{id}',
orgId,
id,
})
.then((resp) => resp.data)
.catch((e) => {
// Team may have been deleted
if (e.status === 404) return null
throw e
})
}
return teams[id]
}
async function handlePullRequest({ item, stats, events }) {
const log = (k, v) => core.info(`PR #${item.number} - ${k}: ${v}`)
@@ -220,49 +170,17 @@ module.exports = async ({ github, context, core, dry }) => {
})
// Check for any human reviews other than the PR author, GitHub actions and other GitHub apps.
// Accounts could be deleted as well, so don't count them.
const reviews = (
await github.graphql(
`query($owner: String!, $repo: String!, $pr: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $pr) {
# Unlikely that there's ever more than 100 reviews, so let's not bother,
# but once https://github.com/actions/github-script/issues/309 is resolved,
# it would be easy to enable pagination.
reviews(first: 100) {
nodes {
state
user: author {
# Only get users, no bots
... on User {
login
# Set the id field in the resulting JSON to GraphQL's databaseId
# databaseId in GraphQL-land is the same as id in REST-land
id: databaseId
}
}
onBehalfOf(first: 100) {
nodes {
slug
}
}
}
}
}
}
}`,
{
owner: context.repo.owner,
repo: context.repo.repo,
pr: pull_number,
},
)
).repository.pullRequest.reviews.nodes.filter(
await github.paginate(github.rest.pulls.listReviews, {
...context.repo,
pull_number,
})
).filter(
(r) =>
// The `... on User` makes it such that .login only exists for users,
// but we still need to filter the others out.
// Accounts could be deleted as well, so don't count them.
r.user?.login &&
// Also exclude author reviews, can't request their review in any case
r.user &&
!r.user.login.endsWith('[bot]') &&
r.user.type !== 'Bot' &&
r.user.id !== pull_request.user?.id,
)
@@ -381,40 +299,9 @@ module.exports = async ({ github, context, core, dry }) => {
expectedHash: artifact.digest,
})
const changedPaths = JSON.parse(
const evalLabels = JSON.parse(
await readFile(`${pull_number}/changed-paths.json`, 'utf-8'),
)
const evalLabels = changedPaths.labels
// Fetch all PR commits to check their messages for package patterns
const prCommits = await github.paginate(github.rest.pulls.listCommits, {
...context.repo,
pull_number,
per_page: 100,
})
const commitSubjects = prCommits.map(
(c) => c.commit.message.split('\n')[0],
)
// Label new package PRs: "packagename: init at X.Y.Z"
// Exclude NixOS module commits like "nixos/timekpr: init at 0.5.8"
const newPackagePattern = /^(?<!nixos\/)\S+: init at\b/
const hasNewPackages = changedPaths.attrdiff?.added?.length > 0
const commitsIndicateNewPackage = commitSubjects.some((msg) =>
newPackagePattern.test(msg),
)
evalLabels['8.has: package (new)'] =
hasNewPackages && commitsIndicateNewPackage
// Label package update PRs: "packagename: X.Y.Z -> A.B.C"
// Matches versions like: 1.2.3, 0-unstable-2024-01-15, 1.3rc1, alpha, unstable
// Exclude NixOS module commits like "nixos/ncps: types.str -> types.path"
const updatePackagePattern =
/^(?<!nixos\/)\S+: [\w.-]*\d[\w.-]* (->|→) [\w.-]*\d[\w.-]*$/
const commitsIndicateUpdate = commitSubjects.some((msg) =>
updatePackagePattern.test(msg),
)
evalLabels['8.has: package (update)'] = commitsIndicateUpdate
).labels
// TODO: Get "changed packages" information from list of changed by-name files
// in addition to just the Eval results, to make this work for these packages
@@ -462,16 +349,6 @@ module.exports = async ({ github, context, core, dry }) => {
if (e.code !== 'ENOENT') throw e
}
let team_maintainers = []
try {
team_maintainers = Object.keys(
JSON.parse(await readFile(`${pull_number}/teams.json`, 'utf-8')),
).map((id) => parseInt(id))
} catch (e) {
// Older artifacts don't have the teams.json, yet.
if (e.code !== 'ENOENT') throw e
}
// We set this label earlier already, but the current PR state can be very different
// after handleReviewers has requested reviews, so update it in this case to prevent
// this label from flip-flopping.
@@ -484,15 +361,14 @@ module.exports = async ({ github, context, core, dry }) => {
pull_request,
reviews,
// TODO: Use maintainer map instead of the artifact.
user_maintainers: Object.keys(
maintainers: Object.keys(
JSON.parse(
await readFile(`${pull_number}/maintainers.json`, 'utf-8'),
),
).map((id) => parseInt(id)),
team_maintainers,
owners,
getTeamMembers,
getUser,
getTeam,
})
}
}

View File

@@ -1,221 +0,0 @@
/// @ts-check
// TODO: should this be combined with the branch checks in prepare.js?
// They do seem quite similar, but this needs to run after eval,
// and prepare.js obviously doesn't.
const { classify, split } = require('../supportedBranches.js')
const { readFile } = require('node:fs/promises')
const { postReview, dismissReviews } = require('./reviews.js')
const reviewKey = 'check-target-branch'
/**
* @param {{
* github: InstanceType<import('@actions/github/lib/utils').GitHub>,
* context: import('@actions/github/lib/context').Context
* core: import('@actions/core')
* dry: boolean
* }} CheckTargetBranchProps
*/
async function checkTargetBranch({ github, context, core, dry }) {
/**
* @type {{
* attrdiff: {
* added: string[],
* changed: string[],
* removed: string[],
* },
* attrdiffByKernel: Record<string, {
* added: string[],
* changed: string[],
* removed: string[],
* }>,
* attrdiffByPlatform: Record<string, {
* added: string[],
* changed: string[],
* removed: string[],
* }>,
* labels: Record<string, boolean>,
* rebuildCountByKernel: Record<string, number>,
* rebuildsByKernel: Record<string, string[]>,
* rebuildsByPlatform: Record<string, string[]>,
* }}
*/
const changed = JSON.parse(
await readFile('comparison/changed-paths.json', 'utf-8'),
)
const pull_number = context.payload.pull_request?.number
if (!pull_number) {
core.warning(
'Skipping checkTargetBranch: no pull_request number (is this being run as part of a merge group?)',
)
return
}
const prInfo = (
await github.rest.pulls.get({
...context.repo,
pull_number,
})
).data
const base = prInfo.base.ref
const head = prInfo.head.ref
const baseClassification = classify(base)
const headClassification = classify(head)
// Don't run on, e.g., staging-nixos to master merges.
if (headClassification.type.includes('development')) {
core.info(
`Skipping checkTargetBranch: PR is from a development branch (${head})`,
)
await dismissReviews({
github,
context,
core,
dry,
reviewKey,
})
return
}
// Don't run on PRs against staging branches, wip branches, haskell-updates, etc.
if (!baseClassification.type.includes('primary')) {
core.info(
`Skipping checkTargetBranch: PR is against a non-primary base branch (${base})`,
)
await dismissReviews({
github,
context,
core,
dry,
reviewKey,
})
return
}
const maxRebuildCount = Math.max(
...Object.values(changed.rebuildCountByKernel),
)
const rebuildsAllTests =
changed.attrdiff.changed.includes('nixosTests.simple-container') ||
changed.attrdiff.changed.includes('nixosTests.simple-vm')
// https://github.com/NixOS/nixpkgs/pull/521157
// These should go to master and release-xx.xx when backported
let isExemptKernelUpdate = false
if (prInfo.changed_files === 1) {
const changedFiles = (
await github.rest.pulls.listFiles({
...context.repo,
pull_number,
})
).data
isExemptKernelUpdate =
changedFiles.length === 1 &&
changedFiles[0].filename ===
'pkgs/os-specific/linux/kernel/xanmod-kernels.nix'
}
// https://github.com/NixOS/nixpkgs/pull/483194#issuecomment-3793393218
const isExemptHomeAssistantUpdate =
maxRebuildCount <= 1500 && head === 'wip-home-assistant'
core.info(
[
`checkTargetBranch: this PR:`,
` * causes ${maxRebuildCount} rebuilds`,
` * ${rebuildsAllTests ? 'rebuilds' : 'does not rebuild'} all NixOS tests`,
` * ${isExemptKernelUpdate ? 'is' : 'is not'} an exempt kernel update`,
` * ${isExemptHomeAssistantUpdate ? 'is' : 'is not'} an exempt home-assistant update`,
].join('\n'),
)
if (
maxRebuildCount >= 1000 &&
!isExemptHomeAssistantUpdate &&
!isExemptKernelUpdate
) {
const desiredBranch =
base === 'master' ? 'staging' : `staging-${split(base).version}`
const body = [
`The PR's base branch is set to \`${base}\`, but this PR causes ${maxRebuildCount} rebuilds.`,
'It is therefore considered a mass rebuild.',
`Please [change the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) to [the right base branch for your changes](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions) (probably \`${desiredBranch}\`).`,
].join('\n')
await postReview({
github,
context,
core,
dry,
body,
event: 'REQUEST_CHANGES',
reviewKey,
})
} else if (rebuildsAllTests && !isExemptKernelUpdate) {
let branchText
if (base === 'master' && maxRebuildCount >= 500) {
branchText = '(probably either `staging-nixos` or `staging`)'
} else if (base === 'master') {
branchText = '(probably `staging-nixos`)'
} else if (maxRebuildCount >= 500) {
branchText = `(probably either \`staging-nixos-${split(base).version}\` or \`staging-${split(base).version}\`)`
} else {
branchText = `(probably \`staging-nixos-${split(base).version}\`)`
}
const body = [
`The PR's base branch is set to \`${base}\`, but this PR rebuilds all NixOS tests.`,
base === 'master' && maxRebuildCount >= 500
? `Since this PR also causes ${maxRebuildCount} rebuilds, it may also be considered a mass rebuild.`
: '',
`Please [change the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) to [the right base branch for your changes](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions) ${branchText}.`,
].join('\n')
await postReview({
github,
context,
core,
dry,
body,
event: 'REQUEST_CHANGES',
reviewKey,
})
} else if (
maxRebuildCount >= 500 &&
!isExemptKernelUpdate &&
!isExemptHomeAssistantUpdate
) {
const stagingBranch =
base === 'master' ? 'staging' : `staging-${split(base).version}`
const body = [
`The PR's base branch is set to \`${base}\`, and this PR causes ${maxRebuildCount} rebuilds.`,
`Please consider whether this PR causes a mass rebuild according to [our conventions](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions).`,
`If it does cause a mass rebuild, please [change the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) to [the right base branch for your changes](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions) (probably \`${stagingBranch}\`).`,
`If it does not cause a mass rebuild, this message can be ignored.`,
].join('\n')
await postReview({
github,
context,
core,
dry,
body,
event: 'REQUEST_CHANGES',
reviewKey,
})
} else {
core.info('checkTargetBranch: this PR is against an appropriate branch.')
await dismissReviews({
github,
context,
core,
dry,
reviewKey,
})
}
}
module.exports = checkTargetBranch

View File

@@ -3,7 +3,6 @@ module.exports = async ({ github, context, core, dry, cherryPicks }) => {
const { classify } = require('../supportedBranches.js')
const withRateLimit = require('./withRateLimit.js')
const { dismissReviews, postReview } = require('./reviews.js')
const reviewKey = 'check-commits'
await withRateLimit({ github, core }, async (stats) => {
stats.prs = 1
@@ -194,7 +193,7 @@ module.exports = async ({ github, context, core, dry, cherryPicks }) => {
// An empty results array will always trigger this condition, which is helpful
// to clean up reviews created by the prepare step when on the wrong branch.
if (results.every(({ severity }) => severity === 'info')) {
await dismissReviews({ github, context, dry, reviewKey })
await dismissReviews({ github, context, dry })
return
}
@@ -317,6 +316,6 @@ module.exports = async ({ github, context, core, dry, cherryPicks }) => {
// Posting a review could fail for very long comments. This can only happen with
// multiple commits all hitting the truncation limit for the diff. If you ever hit
// this case, consider just splitting up those commits into multiple PRs.
await postReview({ github, context, core, dry, body, reviewKey })
await postReview({ github, context, core, dry, body })
})
}

View File

@@ -1,117 +0,0 @@
// @ts-check
const { promisify } = require('node:util')
const execFile = promisify(require('node:child_process').execFile)
/**
* @typedef {{
* subject: string,
* sha: string,
* author: { name: string, email: string },
* committer: { name: string, email: string}
* changedPaths: string[],
* changedPathSegments: Set<string>,
* }} Commit
*/
/**
* @param {{
* args: string[]
* core: import('@actions/core'),
* quiet?: boolean,
* repoPath?: string,
* }} RunGitProps
*/
async function runGit({ args, repoPath, core, quiet }) {
if (repoPath) {
args = ['-C', repoPath, ...args]
}
if (!quiet) {
core.info(`About to run \`git ${args.map((s) => `'${s}'`).join(' ')}\``)
}
return await execFile('git', args)
}
/**
* Gets the SHA, subject and changed files for each commit in the given PR.
*
* Don't use GitHub API at all: the "list commits on PR" endpoint has a limit
* of 250 commits and doesn't return the changed files.
*
* @param {{
* core: import('@actions/core'),
* pr: Awaited<ReturnType<InstanceType<import('@actions/github/lib/utils').GitHub>["rest"]["pulls"]["get"]>>["data"]
* repoPath?: string,
* }} GetCommitMessagesForPRProps
*
* @returns {Promise<Commit[]>}
*/
async function getCommitDetailsForPR({ core, pr, repoPath }) {
await runGit({
args: ['fetch', `--depth=1`, 'origin', pr.base.sha],
repoPath,
core,
})
await runGit({
args: ['fetch', `--depth=${pr.commits + 1}`, 'origin', pr.head.sha],
repoPath,
core,
})
const shas = (
await runGit({
args: [
'rev-list',
`--max-count=${pr.commits}`,
`${pr.base.sha}..${pr.head.sha}`,
],
repoPath,
core,
})
).stdout
.split('\n')
.map((s) => s.trim())
.filter(Boolean)
return Promise.all(
shas.map(async (sha) => {
// Subject, author name, author email, committer name, committer email (all tab-seperated)
// then a blank line, then filenames.
const result = (
await runGit({
args: [
'log',
'--format=%s\t%aN\t%aE\t%cN\t%cE',
'--name-only',
'-1',
sha,
],
repoPath,
core,
quiet: true,
})
).stdout.split('\n')
const [subject, authorName, authorEmail, committerName, committerEmail] =
result[0].split('\t')
const changedPaths = result.slice(2, -1)
const changedPathSegments = new Set(
changedPaths.flatMap((path) => path.split('/')),
)
return {
sha,
subject,
author: { name: authorName, email: authorEmail },
committer: { name: committerName, email: committerEmail },
changedPaths,
changedPathSegments,
}
}),
)
}
module.exports = { getCommitDetailsForPR }

View File

@@ -1,223 +0,0 @@
// @ts-check
const { classify } = require('../supportedBranches.js')
const { getCommitDetailsForPR } = require('./get-pr-commit-details.js')
/** @typedef {import('./get-pr-commit-details.js').Commit} Commit */
/**
* @param {{
* github: InstanceType<import('@actions/github/lib/utils').GitHub>,
* context: typeof import('@actions/github').context,
* core: import('@actions/core'),
* repoPath?: string,
* }} LintCommitsProps
*/
async function lintCommits({ github, context, core, repoPath }) {
// This check should only be run when we have the pull_request context.
const pull_number = context.payload.pull_request?.number
if (!pull_number) {
core.info('This is not a pull request. Skipping checks.')
return
}
const pr = (
await github.rest.pulls.get({
...context.repo,
pull_number,
})
).data
const baseBranchType = classify(
pr.base.ref.replace(/^refs\/heads\//, ''),
).type
const headBranchType = classify(
pr.head.ref.replace(/^refs\/heads\//, ''),
).type
if (
baseBranchType.includes('development') &&
headBranchType.includes('development') &&
pr.base.repo.id === pr.head.repo?.id
) {
// This matches, for example, PRs from NixOS:staging-next to NixOS:master, or vice versa.
// Ignore them: we should only care about PRs introducing *new* commits.
// We still want to run on PRs from, e.g., Someone:master to NixOS:master, though.
core.info(
'This PR is from one development branch to another. Skipping checks.',
)
return
}
const commits = await getCommitDetailsForPR({ core, pr, repoPath })
await checkCommitMessages({ commits, core })
await checkCommitMetadata({ commits, core })
}
/**
* @param {{
* commits: Commit[],
* core: import('@actions/core'),
* }} CheckCommitMessagesProps
*/
async function checkCommitMessages({ commits, core }) {
const failures = new Set()
const conventionalCommitTypes = [
'build',
'chore',
'ci',
'doc',
'docs',
'feat',
'feature',
'fix',
'perf',
'refactor',
'style',
'test',
]
/**
* @param {string[]} types e.g. ["fix", "feat"]
* @param {string?} sha commit hash
*/
function makeConventionalCommitRegex(types, sha = null) {
core.info(
`${
sha
? `Conventional commit types for ${sha?.slice(0, 16)}`
: 'Default conventional commit types'
}: ${JSON.stringify(types)}`,
)
return new RegExp(`^(${types.join('|')})!?(\\(.*\\))?!?:`)
}
// Optimize for the common case that we don't have path segments with the
// same name as a conventional commit type.
const fullConventionalCommitRegex = makeConventionalCommitRegex(
conventionalCommitTypes,
)
for (const commit of commits) {
const logMsgStart = `Commit ${commit.sha}'s message's subject ("${commit.subject}")`
// If we have a commit `perf: ...`, and we touch a file containing the path
// segment "perf", we don't want to flag this.
const filteredTypes = conventionalCommitTypes.filter(
(type) => !commit.changedPathSegments.has(type),
)
const conventionalCommitRegex =
filteredTypes.length === conventionalCommitTypes.length
? fullConventionalCommitRegex
: makeConventionalCommitRegex(filteredTypes, commit.sha)
if (!commit.subject.includes(': ')) {
core.error(
`${logMsgStart} was detected as not meeting our guidelines because ` +
'it does not contain a colon followed by a whitespace. ' +
'There are likely other issues as well.',
)
failures.add(commit.sha)
}
if (commit.subject.endsWith('.')) {
core.error(
`${logMsgStart} was detected as not meeting our guidelines because ` +
'it ends in a period. There may be other issues as well.',
)
failures.add(commit.sha)
}
const fixups = ['amend!', 'fixup!', 'squash!']
if (fixups.some((s) => commit.subject.startsWith(s))) {
core.error(
`${logMsgStart} was detected as not meeting our guidelines because ` +
`it begins with "${fixups.find((s) => commit.subject.startsWith(s))}". ` +
'Did you forget to run `git rebase -i --autosquash`?',
)
failures.add(commit.sha)
}
if (conventionalCommitRegex.test(commit.subject)) {
core.error(
`${logMsgStart} was detected as not meeting our guidelines because ` +
'it seems to use conventional commit (conventionalcommits.org) ' +
'formatting. Nixpkgs has its own, different, commit message ' +
'formatting standards.',
)
failures.add(commit.sha)
}
if (!failures.has(commit.sha)) {
core.info(`${logMsgStart} passed our automated checks!`)
}
}
if (failures.size !== 0) {
core.error(
'Please review the guidelines at ' +
'<https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#commit-conventions>, ' +
'as well as the applicable area-specific guidelines linked there.',
)
core.setFailed('Committers: merging is discouraged.')
}
}
/**
* @param {{
* commits: Commit[],
* core: import('@actions/core'),
* }} CheckGitFieldsProps
*/
async function checkCommitMetadata({ commits, core }) {
const failures = new Set()
/** @type {(s: string) => boolean} */
const isEmail = (s) => /^.+@.*$/.test(s)
for (const commit of commits) {
if (!commit.author.name) {
core.error(`Commit ${commit.sha} author's name field is missing`)
failures.add(commit.sha)
}
if (!commit.author.email || !isEmail(commit.author.email)) {
core.error(
`Commit ${commit.sha} author's email field is missing or invalid`,
)
failures.add(commit.sha)
}
if (!commit.committer.name) {
core.error(`Commit ${commit.sha} committer's name field is missing`)
failures.add(commit.sha)
}
if (!commit.committer.email || !isEmail(commit.committer.email)) {
core.error(
`Commit ${commit.sha} committer's email field is missing or invalid`,
)
failures.add(commit.sha)
}
if (!failures.has(commit.sha)) {
core.info(
`Commit ${commit.sha}'s git fields passed our automated checks!`,
)
}
}
if (failures.size !== 0) {
core.error(
'Please add the missing commit fields. ' +
'You can use the noreply email address generated for you by GitHub ' +
'(https://docs.github.com/en/account-and-profile/reference/email-addresses-reference#your-noreply-email-address) ' +
"if you'd like.",
)
core.setFailed('Committers: merging is discouraged.')
}
}
module.exports = lintCommits

View File

@@ -1,95 +0,0 @@
// @ts-check
const { classify } = require('../supportedBranches.js')
const { getCommitDetailsForPR } = require('./get-pr-commit-details')
/**
* @param {{
* github: InstanceType<import('@actions/github/lib/utils').GitHub>,
* context: import('@actions/github/lib/context').Context,
* core: import('@actions/core'),
* repoPath?: string,
* dry: boolean,
* }} CheckManualFileEditsProps
*/
async function checkManualFileEdits({ github, context, core, repoPath, dry }) {
const { dismissReviews, postReview } = require('./reviews.js')
const reviewKey = 'manual-file-edits'
const pull_number = context.payload.pull_request?.number
if (!pull_number) {
core.info('This is not a pull request. Skipping checks.')
return
}
const pr = (
await github.rest.pulls.get({
...context.repo,
pull_number,
})
).data
if (pr.user.login.endsWith('[bot]')) {
core.info('This is a bot, so these checks do not apply.')
return
}
const baseBranchType = classify(
pr.base.ref.replace(/^refs\/heads\//, ''),
).type
const headBranchType = classify(
pr.head.ref.replace(/^refs\/heads\//, ''),
).type
if (
baseBranchType.includes('development') &&
headBranchType.includes('development') &&
pr.base.repo.id === pr.head.repo?.id
) {
// This matches, for example, PRs from NixOS:staging-next to NixOS:master, or vice versa.
// Ignore them: we should only care about PRs introducing *new* commits.
// We still want to run on PRs from, e.g., Someone:master to NixOS:master, though.
core.info(
'This PR is from one development branch to another. Skipping checks.',
)
return
}
const details = await getCommitDetailsForPR({ core, pr, repoPath })
if (
details.some(({ changedPaths }) =>
changedPaths.includes('maintainers/github-teams.json'),
)
) {
postReview({
github,
context,
core,
dry,
event: 'REQUEST_CHANGES',
body: [
'maintainers/github-teams.json is supposed to accurately reflect the state of the teams in GitHub.\n',
'Therefore, it should not be edited manually.\n',
'All changes to teams listed in maintainers/github-teams.json should be performed in GitHub by a team maintainer.\n',
"Team maintainers are listed in the github-teams.json file and in GitHub's UI.\n",
'If there is no team maintainer available, an org owner can make the needed change, please contact one by',
'following the instructions at https://github.com/NixOS/org/blob/main/doc/github-org-owners.md#how-to-contact-the-team.\n',
'Thank you!',
].reduce(
(prev, curr) => prev + (!prev || prev.endsWith('\n') ? '' : ' ') + curr,
'',
),
reviewKey,
})
} else {
dismissReviews({
github,
context,
core,
dry,
reviewKey,
})
}
}
module.exports = checkManualFileEdits

View File

@@ -46,17 +46,13 @@ function runChecklist({
classify(pull_request.base.ref).type.includes('development'),
'PR touches only files of packages in `pkgs/by-name/`.': allByName,
'PR is at least one of:': {
'Approved by a [committer](https://github.com/orgs/NixOS/teams/nixpkgs-committers).':
committers.intersection(approvals).size > 0,
'Approved by a committer.': committers.intersection(approvals).size > 0,
'Backported via label.':
pull_request.user.login === 'nixpkgs-ci[bot]' &&
pull_request.head.ref.startsWith('backport-'),
'Opened by a [committer](https://github.com/orgs/NixOS/teams/nixpkgs-committers).':
committers.has(pull_request.user.id),
'Opened by [@r-ryantm](https://nix-community.github.io/nixpkgs-update/r-ryantm/).':
pull_request.user.login === 'r-ryantm',
'Opened by a committer.': committers.has(pull_request.user.id),
'Opened by r-ryantm.': pull_request.user.login === 'r-ryantm',
},
'PR is not a draft': !pull_request.draft,
}
if (user) {
@@ -66,9 +62,8 @@ function runChecklist({
if (allByName) {
// We can only determine the below, if all packages are in by-name, since
// we can't reliably relate changed files to packages outside by-name.
checklist[
`${user.login} is a maintainer of all touched packages on the ${pull_request.base.ref} branch.`
] = eligible.has(user.id)
checklist[`${user.login} is a maintainer of all touched packages.`] =
eligible.has(user.id)
}
} else {
// This is only used when no user is passed, i.e. for labeling.
@@ -176,7 +171,7 @@ async function handleMerge({
async function merge() {
if (dry) {
core.info(`Merging #${pull_number}... (dry)`)
return ['Merge completed (dry)']
return 'Merge completed (dry)'
}
// Using GraphQL mutations instead of the REST /merge endpoint, because the latter
@@ -196,12 +191,11 @@ async function handleMerge({
}`,
{ node_id: pull_request.node_id, sha: pull_request.head.sha },
)
log('merge', 'Queued for merge')
return [
`:heavy_check_mark: [Queued](${resp.enqueuePullRequest.mergeQueueEntry.mergeQueue.url}) for merge (#306934)`,
]
} catch (e) {
log('Enqueuing failed', e.response.errors[0].message)
log('Enqueing failed', e.response.errors[0].message)
}
// If required status checks are not satisfied, yet, the above will fail. In this case
@@ -218,7 +212,6 @@ async function handleMerge({
}`,
{ node_id: pull_request.node_id, sha: pull_request.head.sha },
)
log('merge', 'Auto-merge enabled')
return [
`:heavy_check_mark: Enabled Auto Merge (#306934)`,
'',

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +1,10 @@
{
"private": true,
"//": [
"Keep `@actions/core` and `@actions/github` in sync with",
"https://github.com/actions/github-script/blob/main/package.json.",
"Keep `@actions/artifact` and `bottleneck` in sync with",
"`.github/workflows/bot.yml`."
],
"dependencies": {
"@actions/artifact": "6.2.1",
"@actions/core": "1.10.1",
"@actions/github": "9.1.0",
"@actions/artifact": "2.3.2",
"@actions/core": "1.11.1",
"@actions/github": "6.0.1",
"bottleneck": "2.19.5",
"commander": "14.0.3"
"commander": "14.0.0"
}
}

View File

@@ -1,7 +1,5 @@
const { classify } = require('../supportedBranches.js')
const { postReview, dismissReviews } = require('./reviews.js')
const reviewKey = 'prepare'
const supportedSystems = require('./supportedSystems.js')
const { postReview } = require('./reviews.js')
module.exports = async ({ github, context, core, dry }) => {
const pull_number = context.payload.pull_request.number
@@ -48,7 +46,7 @@ module.exports = async ({ github, context, core, dry }) => {
`Please target \`${correctBranch}\` instead.`,
].join('\n')
await postReview({ github, context, core, dry, body, reviewKey })
await postReview({ github, context, core, dry, body })
throw new Error('The PR targets a channel branch.')
}
@@ -172,17 +170,9 @@ module.exports = async ({ github, context, core, dry }) => {
' ```',
].join('\n')
await postReview({
github,
context,
core,
dry,
body,
event: 'REQUEST_CHANGES',
reviewKey,
})
} else {
await dismissReviews({ github, context, core, dry, reviewKey })
await postReview({ github, context, core, dry, body })
throw new Error(`The PR contains commits from a different base.`)
}
}
@@ -216,8 +206,7 @@ module.exports = async ({ github, context, core, dry }) => {
core.setOutput('mergedSha', mergedSha)
core.setOutput('targetSha', targetSha)
const systems = await supportedSystems({ github, context, targetSha })
core.setOutput('systems', systems)
core.setOutput('systems', require('../supportedSystems.json'))
const files = (
await github.paginate(github.rest.pulls.listFiles, {

View File

@@ -6,29 +6,28 @@ async function handleReviewers({
dry,
pull_request,
reviews,
user_maintainers,
team_maintainers,
maintainers,
owners,
getTeamMembers,
getUser,
getTeam,
}) {
const pull_number = pull_request.number
// Users that the PR has already reached, e.g. they've left a review or have been requested for one
const users_reached = new Set([
...pull_request.requested_reviewers.map(({ login }) => login.toLowerCase()),
...reviews.map(({ user }) => user.login.toLowerCase()),
])
log('reviewers - users_reached', Array.from(users_reached).join(', '))
const requested_reviewers = new Set(
pull_request.requested_reviewers.map(({ login }) => login.toLowerCase()),
)
log(
'reviewers - requested_reviewers',
Array.from(requested_reviewers).join(', '),
)
// Same for teams
const teams_reached = new Set([
...pull_request.requested_teams.map(({ slug }) => slug.toLowerCase()),
...reviews.flatMap(({ onBehalfOf }) =>
onBehalfOf.nodes.map(({ slug }) => slug.toLowerCase()),
),
])
log('reviewers - teams_reached', Array.from(teams_reached).join(', '))
const existing_reviewers = new Set(
reviews.map(({ user }) => user?.login.toLowerCase()).filter(Boolean),
)
log(
'reviewers - existing_reviewers',
Array.from(existing_reviewers).join(', '),
)
// Early sanity check, before we start making any API requests. The list of maintainers
// does not have duplicates so the only user to filter out from this list would be the
@@ -36,130 +35,90 @@ async function handleReviewers({
// further down again.
// This is to protect against huge treewides consuming all our API requests for no
// reason.
if (user_maintainers.length + team_maintainers.length > 16) {
if (maintainers.length > 16) {
core.warning('Too many potential reviewers, skipping review requests.')
// Return a boolean on whether the "needs: reviewers" label should be set.
return users_reached.size === 0 && teams_reached.size === 0
return existing_reviewers.size === 0 && requested_reviewers.size === 0
}
// Users that should be reached
var users_to_reach = new Set([
...(
await Promise.all(
user_maintainers.map(async (id) => {
const user = await getUser(id)
// User may have deleted their account
return user?.login?.toLowerCase()
}),
)
).filter(Boolean),
const users = new Set([
...(await Promise.all(
maintainers.map(async (id) => (await getUser(id)).login.toLowerCase()),
)),
...owners
.filter((handle) => handle && !handle.includes('/'))
.map((handle) => handle.toLowerCase()),
])
log('reviewers - users', Array.from(users).join(', '))
const teams = new Set(
owners
.map((handle) => handle.split('/'))
.filter(([org, slug]) => org === context.repo.owner && slug)
.map(([, slug]) => slug),
)
log('reviewers - teams', Array.from(teams).join(', '))
const team_members = new Set(
(await Promise.all(Array.from(teams, getTeamMembers)))
.flat(1)
.map(({ login }) => login.toLowerCase()),
)
log('reviewers - team_members', Array.from(team_members).join(', '))
const new_reviewers = users
.union(team_members)
// We can't request a review from the author.
.difference(new Set([pull_request.user?.login.toLowerCase()]))
log('reviewers - new_reviewers', Array.from(new_reviewers).join(', '))
// Filter users to repository collaborators. If they're not, they can't be requested
// for review. In that case, they probably missed their invite to the maintainers team.
users_to_reach = new Set(
(
await Promise.all(
Array.from(users_to_reach, async (username) => {
// TODO: Restructure this file to only do the collaborator check for those users
// who were not already part of a team. Being a member of a team makes them
// collaborators by definition.
try {
await github.rest.repos.checkCollaborator({
...context.repo,
username,
})
return username
} catch (e) {
if (e.status !== 404) throw e
core.warning(
`PR #${pull_number}: User ${username} cannot be requested for review because they don't exist or are not a repository collaborator, ignoring. They probably missed the automated invite to the maintainers team (see <https://github.com/NixOS/nixpkgs/issues/234293>).`,
)
}
}),
)
).filter(Boolean),
)
log('reviewers - users_to_reach', Array.from(users_to_reach).join(', '))
const reviewers = (
await Promise.all(
Array.from(new_reviewers, async (username) => {
// TODO: Restructure this file to only do the collaborator check for those users
// who were not already part of a team. Being a member of a team makes them
// collaborators by definition.
try {
await github.rest.repos.checkCollaborator({
...context.repo,
username,
})
return username
} catch (e) {
if (e.status !== 404) throw e
core.warning(
`PR #${pull_number}: User ${username} cannot be requested for review because they don't exist or are not a repository collaborator, ignoring. They probably missed the automated invite to the maintainers team (see <https://github.com/NixOS/nixpkgs/issues/234293>).`,
)
}
}),
)
).filter(Boolean)
log('reviewers - reviewers', reviewers.join(', '))
// Similar for teams
var teams_to_reach = new Set([
...(
await Promise.all(
team_maintainers.map(async (id) => {
const team = await getTeam(id)
// Team may have been deleted
return team?.slug?.toLowerCase()
}),
)
).filter(Boolean),
...owners
.map((handle) => handle.split('/'))
.filter(
([org, slug]) =>
org.toLowerCase() === context.repo.owner.toLowerCase() && slug,
)
.map(([, slug]) => slug.toLowerCase()),
])
teams_to_reach = new Set(
(
await Promise.all(
Array.from(teams_to_reach, async (slug) => {
try {
await github.rest.teams.checkPermissionsForRepoInOrg({
org: context.repo.owner,
team_slug: slug,
owner: context.repo.owner,
repo: context.repo.repo,
})
return slug
} catch (e) {
if (e.status !== 404) throw e
core.warning(
`PR #${pull_number}: Team ${slug} cannot be requested for review because it doesn't exist or has no repository permissions, ignoring. Probably wasn't added to the nixpkgs-maintainers team (see https://github.com/NixOS/nixpkgs/tree/master/maintainers#maintainer-teams)`,
)
}
}),
)
).filter(Boolean),
)
log('reviewers - teams_to_reach', Array.from(teams_to_reach).join(', '))
if (users_to_reach.size + teams_to_reach.size > 15) {
if (reviewers.length > 15) {
core.warning(
`Too many reviewers (users: ${Array.from(users_to_reach).join(', ')}, teams: ${Array.from(teams_to_reach).join(', ')}), skipping review requests.`,
`Too many reviewers (${reviewers.join(', ')}), skipping review requests.`,
)
// Return a boolean on whether the "needs: reviewers" label should be set.
return users_reached.size === 0 && teams_reached.size === 0
return existing_reviewers.size === 0 && requested_reviewers.size === 0
}
// We don't want to rerequest reviews from people who already reviewed or were requested
const users_not_yet_reached = Array.from(
users_to_reach.difference(users_reached),
const non_requested_reviewers = new Set(reviewers)
.difference(requested_reviewers)
// We don't want to rerequest reviews from people who already reviewed.
.difference(existing_reviewers)
log(
'reviewers - non_requested_reviewers',
Array.from(non_requested_reviewers).join(', '),
)
log('reviewers - users_not_yet_reached', users_not_yet_reached.join(', '))
// We don't want to rerequest reviews from teams who already reviewed or were requested
const teams_not_yet_reached = Array.from(
teams_to_reach.difference(teams_reached),
)
log('reviewers - teams_not_yet_reached', teams_not_yet_reached.join(', '))
if (
users_not_yet_reached.length === 0 &&
teams_not_yet_reached.length === 0
) {
if (non_requested_reviewers.size === 0) {
log('Has reviewer changes', 'false (skipped)')
} else if (dry) {
core.info(
`Requesting user reviewers for #${pull_number}: ${users_not_yet_reached.join(', ')} (dry)`,
)
core.info(
`Requesting team reviewers for #${pull_number}: ${teams_not_yet_reached.join(', ')} (dry)`,
`Requesting reviewers for #${pull_number}: ${Array.from(non_requested_reviewers).join(', ')} (dry)`,
)
} else {
// We had tried the "request all reviewers at once" thing in the past, but it didn't work out:
@@ -169,17 +128,15 @@ async function handleReviewers({
await github.rest.pulls.requestReviewers({
...context.repo,
pull_number,
reviewers: users_not_yet_reached,
team_reviewers: teams_not_yet_reached,
reviewers,
})
}
// Return a boolean on whether the "needs: reviewers" label should be set.
return (
users_not_yet_reached.length === 0 &&
teams_not_yet_reached.length === 0 &&
users_reached.size === 0 &&
teams_reached.size === 0
non_requested_reviewers.size === 0 &&
existing_reviewers.size === 0 &&
requested_reviewers.size === 0
)
}

View File

@@ -1,235 +1,60 @@
// @ts-check
const eventToState = {
COMMENT: 'COMMENTED',
REQUEST_CHANGES: 'CHANGES_REQUESTED',
}
// Use substring checks in order to allow testing in forks
// Usernames must also end in "[bot]"
const reviewUsers = [
'github-actions',
'nixpkgs-ci',
'branch-check',
'commit-check',
'manual-edit',
]
/**
* @typedef {InstanceType<import('@actions/github/lib/utils').GitHub>} GitHub
* @typedef {typeof import('@actions/github').context} Context
*
* @typedef {Awaited<ReturnType<GitHub['rest']['pulls']['listReviews']>>['data'][number]} Review
* @typedef {Review & { user: NonNullable<Review['user']> }} ReviewWithNonNullUser
*/
/**
* @param {{
* github: GitHub,
* context: Context,
* core: import('@actions/core'),
* dry: boolean,
* reviewKey?: string,
* }} DismissReviewsProps
*/
async function dismissReviews({ github, context, core, dry, reviewKey }) {
const pull_number = context.payload.pull_request?.number
if (!pull_number) {
core.warning('dismissReviews called outside of pull_request context')
return
}
async function dismissReviews({ github, context, dry }) {
const pull_number = context.payload.pull_request.number
if (dry) {
return
}
const allReviews = await github.paginate(github.rest.pulls.listReviews, {
...context.repo,
pull_number,
})
const reviews = /** @type {ReviewWithNonNullUser[]} */ (
allReviews.filter(
(review) =>
review.user &&
review.state !== 'DISMISSED' &&
review.user.login.endsWith('[bot]') &&
reviewUsers.some((substr) => review.user?.login.includes(substr)),
)
)
const reviewsByUser = reviews.reduce(
(prev, curr) => {
if (!(curr.user.login in prev)) {
prev[curr.user.login] = []
}
prev[curr.user.login].push(curr)
return prev
},
/** @type {Record<string, ReviewWithNonNullUser[]> } */ ({}),
)
const commentRegex = new RegExp(
/<!-- nixpkgs review key: (.*)(?:; resolved: .*)? -->/,
)
const reviewKeyRegex = new RegExp(
`<!-- (nixpkgs review key: ${reviewKey})(?:; resolved: .*)? -->`,
)
const commentResolvedRegex = new RegExp(
/<!-- nixpkgs review key: .*; resolved: true -->/,
)
let reviewsToMinimize = reviews
const /** @type {ReviewWithNonNullUser[]} */ reviewsToDismiss = []
const /** @type {ReviewWithNonNullUser[]} */ reviewsToResolve = []
if (reviewKey && reviews.every((review) => commentRegex.test(review.body))) {
reviewsToMinimize = reviews.filter((review) =>
reviewKeyRegex.test(review.body),
)
}
for (const reviewsForUser of Object.values(reviewsByUser)) {
// Make sure that we don't dismiss all reviews by a user if they
// have any reviews we don't want to dismiss.
if (
reviewsForUser.every(
(review) =>
commentResolvedRegex.test(review.body) ||
(reviewKey && reviewKeyRegex.test(review.body)) ||
// If we are called by check-commits and the review body is clearly
// from `commits.js`, then we can safely dismiss the review.
// This helps with pre-existing reviews (before the comments were added).
(reviewKey &&
reviewKey === 'check-commits' &&
review.body.includes('PR / Check / cherry-pick')),
)
) {
reviewsToDismiss.push(
...reviewsForUser.filter(
(review) => review.state === 'CHANGES_REQUESTED',
),
)
} else {
reviewsToResolve.push(
...reviewsForUser.filter(
(review) =>
review.state === 'CHANGES_REQUESTED' &&
!commentResolvedRegex.test(review.body) &&
reviewsToMinimize.some(
(toMinimize) => toMinimize.node_id === review.node_id,
),
),
)
}
}
await Promise.all([
...reviewsToMinimize.map(async (review) =>
github.graphql(
`mutation($node_id:ID!) {
minimizeComment(input: {
classifier: OUTDATED,
subjectId: $node_id
})
{ clientMutationId }
}`,
{ node_id: review.node_id },
),
),
...reviewsToDismiss.map(async (review) =>
github.rest.pulls.dismissReview({
await Promise.all(
(
await github.paginate(github.rest.pulls.listReviews, {
...context.repo,
pull_number,
review_id: review.id,
message: 'Review dismissed automatically',
})
)
.filter((review) => review.user?.login === 'github-actions[bot]')
.map(async (review) => {
if (review.state === 'CHANGES_REQUESTED') {
await github.rest.pulls.dismissReview({
...context.repo,
pull_number,
review_id: review.id,
message: 'All good now, thank you!',
})
}
await github.graphql(
`mutation($node_id:ID!) {
minimizeComment(input: {
classifier: RESOLVED,
subjectId: $node_id
})
{ clientMutationId }
}`,
{ node_id: review.node_id },
)
}),
),
...reviewsToResolve.map(async (review) =>
github.rest.pulls.updateReview({
...context.repo,
pull_number,
review_id: review.id,
body: review.body.replace(
reviewKeyRegex,
`<!-- nixpkgs review key: ${reviewKey}; resolved: true -->`,
),
}),
),
])
)
}
/**
* @param {{
* github: GitHub,
* context: Context,
* core: import('@actions/core'),
* dry: boolean,
* body: string,
* event: keyof eventToState,
* reviewKey: string,
* }} PostReviewProps
*/
async function postReview({
github,
context,
core,
dry,
body,
event = 'REQUEST_CHANGES',
reviewKey,
}) {
const pull_number = context.payload.pull_request?.number
if (!pull_number) {
core.warning('postReview called outside of pull_request context')
return
}
async function postReview({ github, context, core, dry, body }) {
const pull_number = context.payload.pull_request.number
const reviewKeyRegex = new RegExp(
`<!-- (nixpkgs review key: ${reviewKey})(?:; resolved: .*)? -->`,
)
const reviewKeyComment = `<!-- nixpkgs review key: ${reviewKey}; resolved: false -->`
body = body + '\n\n' + reviewKeyComment
const reviews = (
const pendingReview = (
await github.paginate(github.rest.pulls.listReviews, {
...context.repo,
pull_number,
})
).filter(
).find(
(review) =>
review.user &&
review.state !== 'DISMISSED' &&
review.user.login.endsWith('[bot]') &&
reviewUsers.some((substr) => review.user?.login.includes(substr)),
review.user?.login === 'github-actions[bot]' &&
// If a review is still pending, we can just update this instead
// of posting a new one.
(review.state === 'CHANGES_REQUESTED' ||
// No need to post a new review, if an older one with the exact
// same content had already been dismissed.
review.body === body),
)
/** @type {null | Review} */
let pendingReview
const matchingReviews = reviews.filter((review) =>
reviewKeyRegex.test(review.body),
)
if (matchingReviews.length === 0) {
pendingReview = null
} else if (
matchingReviews.length === 1 &&
matchingReviews[0].state === eventToState[event]
) {
pendingReview = matchingReviews[0]
} else {
await dismissReviews({
github,
context,
core,
dry,
reviewKey,
})
pendingReview = null
}
if (dry) {
if (pendingReview)
core.info(`pending review found: ${pendingReview.html_url}`)
@@ -237,28 +62,17 @@ async function postReview({
core.info(body)
} else {
if (pendingReview) {
await Promise.all([
github.rest.pulls.updateReview({
...context.repo,
pull_number,
review_id: pendingReview.id,
body,
}),
github.graphql(
`mutation($node_id:ID!) {
unminimizeComment(input: {
subjectId: $node_id
})
{ clientMutationId }
}`,
{ node_id: pendingReview.node_id },
),
])
await github.rest.pulls.updateReview({
...context.repo,
pull_number,
review_id: pendingReview.id,
body,
})
} else {
await github.rest.pulls.createReview({
...context.repo,
pull_number,
event,
event: 'REQUEST_CHANGES',
body,
})
}

View File

@@ -94,37 +94,4 @@ program
await run(getTeams, owner, repo, undefined, { ...options, outFile })
})
program
.command('lint-commits')
.description('Lint for common errors in commit messages')
.argument('<owner>', 'Owner of the GitHub repository to run on (Example: NixOS)')
.argument('<repo>', 'Name of the GitHub repository to run on (Example: nixpkgs)')
.argument('<pr>', 'Number of the Pull Request to run on')
.action(async (owner, repo, pr, options) => {
const checkCommitMessages = (await import('./lint-commits.js')).default
await run(checkCommitMessages, owner, repo, pr, options)
})
program
.command('check-target-branch')
.description('Check that the PR is made against the correct branch')
.argument('<owner>', 'Owner of the GitHub repository to run on (Example: NixOS)')
.argument('<repo>', 'Name of the GitHub repository to run on (Example: nixpkgs)')
.argument('<pr>', 'Number of the Pull Request to run on')
.action(async (owner, repo, pr, options) => {
const checkCommitMessages = (await import('./check-target-branch.js')).default
await run(checkCommitMessages, owner, repo, pr, options)
})
program
.command('manual-file-edits')
.description("Error when files that shouldn't be edited manually are")
.argument('<owner>', 'Owner of the GitHub repository to run on (Example: NixOS)')
.argument('<repo>', 'Name of the GitHub repository to run on (Example: nixpkgs)')
.argument('<pr>', 'Number of the Pull Request to run on')
.action(async (owner, repo, pr, options) => {
const checkManualFileEdits = (await import('./manual-file-edits.js')).default
await run(checkManualFileEdits, owner, repo, pr, options)
})
await program.parse()

View File

@@ -1,10 +0,0 @@
module.exports = async ({ github, context, targetSha }) => {
const { content, encoding } = (
await github.rest.repos.getContent({
...context.repo,
path: 'pkgs/top-level/release-supported-systems.json',
ref: targetSha,
})
).data
return JSON.parse(Buffer.from(content, encoding).toString())
}

View File

@@ -28,14 +28,7 @@ runCommand "nix-parse-${nix.name}"
# the other CI jobs will report in more detail. This job is about checking parsing
# across different implementations / versions, not about providing the best DX.
# Returning all parse errors requires significantly more resources.
find . -type f -iname '*.nix' | xargs -P $(nproc) nix-instantiate --parse 2>&1 >/dev/null | {
# Also fail on (deprecation) warnings printed to stderr.
if grep "warning"; then
echo "Failing due to warnings in stderr" >&2
exit 1
fi
}
find . -type f -iname '*.nix' | xargs -P $(nproc) nix-instantiate --parse >/dev/null
touch $out
''

View File

@@ -9,9 +9,9 @@
},
"branch": "nixpkgs-unstable",
"submodules": false,
"revision": "02f3fa0374fa13707d42d55d58ecc76b091f223c",
"url": "https://github.com/NixOS/nixpkgs/archive/02f3fa0374fa13707d42d55d58ecc76b091f223c.tar.gz",
"hash": "0z8d33c5g0gk9a74ppqq77npisf9xx9c8ai9isxa2hyjx4lv1pki"
"revision": "ee09932cedcef15aaf476f9343d1dea2cb77e261",
"url": "https://github.com/NixOS/nixpkgs/archive/ee09932cedcef15aaf476f9343d1dea2cb77e261.tar.gz",
"hash": "1xz5pa6la2fyj5b1cfigmg3nmml11fyf9ah0rnr4zfgmnwimn2gn"
},
"treefmt-nix": {
"type": "Git",
@@ -22,9 +22,9 @@
},
"branch": "main",
"submodules": false,
"revision": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
"url": "https://github.com/numtide/treefmt-nix/archive/790751ff7fd3801feeaf96d7dc416a8d581265ba.tar.gz",
"hash": "1zah3dmbpn3ap5acg22kq1j19dg32gj73l43yamjcxhc38sv9kd5"
"revision": "5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4",
"url": "https://github.com/numtide/treefmt-nix/archive/5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4.tar.gz",
"hash": "0cr6aj9bk7n3y09lwmfjr7xg1f069332xf4q99z3kj1c1mp0wl82"
}
},
"version": 5

View File

@@ -44,7 +44,7 @@ function classify(branch) {
}
}
module.exports = { classify, split }
module.exports = { classify }
// If called directly via CLI, runs the following tests:
if (!module.parent) {

View File

@@ -111,7 +111,7 @@ This syntax is taken from [MyST](https://myst-parser.readthedocs.io/en/latest/us
#### HTML
Inlining HTML is not allowed.
Parts of the documentation get rendered to various non-HTML formats, such as man pages in the case of NixOS manual.
Parts of the documentation gets rendered to various non-HTML formats, such as man pages in the case of NixOS manual.
#### Roles
@@ -207,49 +207,12 @@ When needed, each convention explains why it exists, so you can make a decision
Note that these conventions are about the **structure** of the manual (and its source files), not about the content that goes in it.
You, as the writer of documentation, are still in charge of its content.
**For prose style, see the [documentation styleguide](./styleguide.md).**
### One sentence per line
Put each sentence in its own line.
This makes reviews and suggestions much easier, since GitHub's review system is based on lines.
It also helps identifying long sentences at a glance.
Not everything has been migrated to this format yet.
Please always use it for new content.
When changing existing content, update formatting if possible, but avoid excessive diffs.
### Examples first
Put examples before detailed explanations (see the [styleguide](./styleguide.md) for the rationale).
Use this structure for each documented item:
1. Title
2. Abstract (optional, one sentence max)
3. Example
4. Explanation (details, edge cases, types, defaults)
Rendered example:
````markdown
## `lib.toUpper`
Converts all characters in a string to uppercase.
:::{.example #ex-lib-toUpper}
# Converting a string to uppercase
```nix
lib.toUpper "hello"
=> "HELLO"
```
:::
Only acts on ASCII characters.
Unicode characters are passed through unchanged.
````
### Writing Function Documentation
Function documentation is *reference documentation*, for which
@@ -282,9 +245,11 @@ Returns the difference as a number.
Use the [admonition syntax](#admonitions) for callouts and examples.
### `callPackage`-compatible examples
### Provide self-contained examples
Provide at least one example per function.
Provide at least one example per function, and make examples self-contained.
This is easier to understand for beginners.
It also helps with testing that it actually works especially once we introduce automation.
Example code should be such that it can be passed to `pkgs.callPackage`.
Instead of something like:
@@ -438,7 +403,7 @@ To define a referenceable figure use the following fencing:
:::
```
Defining figures through the `figure` fencing class adds them to a `List of Figures` after the `Table of Contents`.
Defining figures through the `figure` fencing class adds them to a `List of Figures` after the `Table of Contents`.
Though this is not shown in the rendered documentation on nixos.org.
#### Footnotes

View File

@@ -4,7 +4,7 @@ The `nix-shell` command has popularized the concept of transient shell environme
<!--
We should try to document the product, not its development process in the Nixpkgs reference manual,
but *something* needs to be said to provide context for this library.
This is the most future proof sentence I could come up with while Nix itself does not yet make use of this.
This is the most future proof sentence I could come up with while Nix itself does yet make use of this.
Relevant is the current status of the devShell attribute "project": https://github.com/NixOS/nix/issues/7501
-->
However, `nix-shell` is not the only way to create such environments, and even `nix-shell` itself can indirectly benefit from this library.
@@ -60,7 +60,7 @@ devShellTools.unstructuredDerivationInputEnv {
#}
```
Note that `args` is not included, because Nix does not add it to the builder process environment.
Note that `args` is not included, because Nix does not added it to the builder process environment.
:::

View File

@@ -120,8 +120,6 @@ Unless you understand how the fetcher you're using calculates the hash from the
- `cvs`
- `bzr`
- `svn`
- `darcs`
- `pijul`
The hash is printed to stdout.
@@ -536,7 +534,7 @@ See [](#chap-pkgs-fetchers-caveats) for more details on how to work with the `ha
Returns a [fixed-output derivation](https://nixos.org/manual/nix/stable/glossary.html#gloss-fixed-output-derivation) which downloads an archive from a given URL and decompresses it.
Despite its name, `fetchzip` is not limited to `.zip` files but can also be used with [various compressed tarball formats](#tar-files) by default.
This can be extended by specifying additional attributes, see [](#ex-fetchers-fetchzip-rar-archive) to understand how to do that.
This can extended by specifying additional attributes, see [](#ex-fetchers-fetchzip-rar-archive) to understand how to do that.
### Inputs {#sec-pkgs-fetchers-fetchzip-inputs}
@@ -765,7 +763,7 @@ Used with Subversion. Expects `url` to a Subversion directory, `rev`, and `hash`
## `fetchgit` {#fetchgit}
Used with Git. Expects `url` to a Git repo, `rev` or `tag`, and `hash`. `rev` in this case can be the full git commit id (SHA1 hash), or use `tag` for a tag name like `refs/tags/v1.0`.
Used with Git. Expects `url` to a Git repo, `rev`, and `hash`. `rev` in this case can be full the git commit id (SHA1 hash) or a tag name like `refs/tags/v1.0`.
If you want to fetch a tag you should pass the `tag` parameter instead of `rev` which has the same effect as setting `rev = "refs/tags"/${version}"`.
This is safer than just setting `rev = version` w.r.t. possible branch and tag name conflicts.
@@ -799,7 +797,7 @@ Additionally, the following optional arguments can be given:
*`deepClone`* (Boolean)
: Clone the entire repository as opposed to just creating a shallow clone.
: Clone the entire repository as opposing to just creating a shallow clone.
This implies `leaveDotGit`.
*`fetchTags`* (Boolean)
@@ -855,11 +853,9 @@ Used with Mercurial. Expects `url`, `rev`, `hash`, overridable with [`<pkg>.over
A number of fetcher functions wrap part of `fetchurl` and `fetchzip`. They are mainly convenience functions intended for commonly used destinations of source code in Nixpkgs. These wrapper fetchers are listed below.
## `fetchFromGitea`, `fetchFromForgejo` and `fetchFromCodeberg` {#fetchfromgitea}
## `fetchFromGitea` {#fetchfromgitea}
`fetchFromGitea`, also aliased to `fetchFromForgejo`, expects five arguments. `domain` is the Gitea/Forgejo server name. `owner` is a string corresponding to the user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every Gitea/Forgejo HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `hash` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `hash` is currently preferred.
As <codeberg.org> is currently the most popular public Forgejo server, the `fetchFromCodeberg` fetcher is also available, which pre-fills the `domain` attribute.
`fetchFromGitea` expects five arguments. `domain` is the gitea server name. `owner` is a string corresponding to the Gitea user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every Gitea HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `hash` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `hash` is currently preferred.
## `fetchFromGitHub` {#fetchfromgithub}
@@ -901,6 +897,10 @@ However, `fetchFromBitbucket` will automatically switch to using `fetchgit` and
When `fetchgit` is used, refer to the `fetchgit` section for documentation of its available options.
## `fetchFromSavannah` {#fetchfromsavannah}
This is used with Savannah repositories. The arguments expected are very similar to `fetchFromGitHub` above.
## `fetchFromRepoOrCz` {#fetchfromrepoorcz}
This is used with repo.or.cz repositories. The arguments expected are very similar to `fetchFromGitHub` above.
@@ -920,14 +920,14 @@ respectively. Otherwise, the fetcher uses `fetchzip`.
This is used with Radicle repositories. The arguments expected are similar to `fetchgit`.
Requires a `seed` argument (e.g. `seed.radicle.dev` or `rosa.radicle.network`) and a `repo` argument
Requires a `seed` argument (e.g. `seed.radicle.xyz` or `rosa.radicle.xyz`) and a `repo` argument
(the repository id *without* the `rad:` prefix). Also accepts an optional `node` argument which
contains the id of the node from which to fetch the specified ref. If `node` is `null` (the
default), a canonical ref is fetched instead.
```nix
fetchFromRadicle {
seed = "seed.radicle.dev";
seed = "seed.radicle.xyz";
repo = "z3gqcJUoA1n9HaHKufZs5FCSGazv5"; # heartwood
tag = "releases/1.3.0";
hash = "sha256-4o88BWKGGOjCIQy7anvzbA/kPOO+ZsLMzXJhE61odjw=";
@@ -942,7 +942,7 @@ contains the full revision id of the Radicle patch to fetch.
```nix
fetchRadiclePatch {
seed = "rosa.radicle.network";
seed = "rosa.radicle.xyz";
repo = "z4V1sjrXqjvFdnCUbxPFqd5p4DtH5"; # radicle-explorer
revision = "d97d872386c70607beda2fb3fc2e60449e0f4ce4"; # patch: d77e064
hash = "sha256-ttnNqj0lhlSP6BGzEhhUOejKkkPruM9yMwA5p9Di4bk=";
@@ -1004,26 +1004,3 @@ fetchtorrent {
- `config`: When using `transmission` as the `backend`, a json configuration can
be supplied to transmission. Refer to the [upstream documentation](https://github.com/transmission/transmission/blob/main/docs/Editing-Configuration-Files.md) for information on how to configure.
## `fetchItchIo` {#fetchitchio}
`fetchItchIo` is a fetcher for downloading game assets from [itch.io](https://itch.io/). It accepts these arguments:
- `gameUrl`: The store page URL of the game.
- `upload`: The numerical ID of the asset to download. To find the upload ID of an asset, check the basename of the request URL when you download the asset using a browser.
- `hash`.
- `name` (optional): The derivation name, often the filename of the asset.
- `extraMessage` (optional): Extra message printed if the API key is not provided or if the account did not purchase the game.
For this fetcher to work, the environment variable `NIX_ITCHIO_API_KEY` must be set for the nix building process (which is nix-daemon in multi-user mode), and it must belong to an account that has bought the game if it is behind a paywall.
To get your API key, go to the ["API key" section](https://itch.io/user/settings/api-keys) of your account settings on itch.io.
```nix
{ fetchItchIo }:
fetchItchIo {
name = "DungeonDuelMonsters-linux-x64.zip";
hash = "sha256-gq2nGwpaStqaVI1pL63xygxOI/z53o+zLwiKizG98Ks=";
gameUrl = "https://mikaygo.itch.io/ddm";
upload = "13371354";
}
```

View File

@@ -8,7 +8,7 @@ Build helpers don't always support fixed-point arguments yet, as support in [`st
Developers can use the Nixpkgs library function [`lib.customisation.extendMkDerivation`](#function-library-lib.customisation.extendMkDerivation) to define a build helper supporting fixed-point arguments from an existing one with such support, with an attribute overlay similar to the one taken by [`<pkg>.overrideAttrs`](#sec-pkg-overrideAttrs).
Besides overriding, `lib.extendMkDerivation` also supports `excludeDrvArgNames` to optionally exclude some arguments in the input fixed-point arguments from passing down to the base build helper (specified as `constructDrv`).
Besides overriding, `lib.extendMkDerivation` also supports `excludeDrvArgNames` to optionally exclude some arguments in the input fixed-point arguments from passing down the base build helper (specified as `constructDrv`).
:::{.example #ex-build-helpers-extendMkDerivation}

View File

@@ -73,7 +73,7 @@ Similarly, if you encounter errors similar to `Error_Protocol ("certificate has
A value of `null` means that `buildImage` will use the first image available in the repository.
:::{.note}
This must be used with `fromImageName`. Using only `fromImageTag` without `fromImageName` will make `buildImage` use the first image available in the repository.
This must be used with `fromImageName`. Using only `fromImageTag` without `fromImageName` will make `buildImage` use the first image available in the repository
:::
_Default value:_ `null`.
@@ -1013,7 +1013,7 @@ Because of this, using this function requires the `kvm` device to be available,
A value of `null` means that `exportImage` will use the first image available in the repository.
:::{.note}
This must be used with `fromImageName`. Using only `fromImageTag` without `fromImageName` will make `exportImage` use the first image available in the repository.
This must be used with `fromImageName`. Using only `fromImageTag` without `fromImageName` will make `exportImage` use the first image available in the repository
:::
_Default value:_ `null`.
@@ -1145,7 +1145,7 @@ $ file /nix/store/by3f40xvc4l6bkis74l0fj4zsy0djgkn-hello.tar.gz
/nix/store/by3f40xvc4l6bkis74l0fj4zsy0djgkn-hello.tar.gz: POSIX tar archive (GNU)
```
If the archive was actually compressed, the output of `file` would've mentioned that fact.
If the archive was actually compressed, the output of file would've mentioned that fact.
Because of this, it may be important to set a proper `name` attribute when using `exportImage` with other functions from `dockerTools`.
:::
@@ -1194,7 +1194,7 @@ This is currently implemented by linking to the `env` binary from the `coreutils
### binSh {#sssec-pkgs-dockerTools-helpers-binSh}
This provides a `/bin/sh` link to the `bash` binary from the `bash` package.
This provides a `/bin/sh` link to the `bash` binary from the `bashInteractive` package.
Because of this, it supports cases such as running a command interactively in a container (for example by running `docker container run -it <image_name>`).
### caCertificates {#sssec-pkgs-dockerTools-helpers-caCertificates}
@@ -1498,7 +1498,7 @@ The environment in the image doesn't match `nix-shell` or `nix-build` exactly, a
This shell is started when running the image.
This can be seen as an equivalent of the `NIX_BUILD_SHELL` [environment variable](https://nixos.org/manual/nix/stable/command-ref/nix-shell.html#environment-variables) for {manpage}`nix-shell(1)`.
_Default value:_ the `bash` binary from the `bash` package.
_Default value:_ the `bash` binary from the `bashInteractive` package.
`command` (String or Null; _optional_)

View File

@@ -8,7 +8,7 @@ This function can create images in two ways:
- using a virtual machine to create a full NixOS installation.
When testing early-boot or lifecycle parts of NixOS such as a bootloader or multiple generations, it is necessary to opt for a full NixOS system installation.
Whereas for many web servers and applications, it is possible to work with a Nix store only disk image, which is faster to build.
Whereas for many web servers, applications, it is possible to work with a Nix store only disk image and is faster to build.
NixOS tests also use this function when preparing the VM. The `cptofs` method is used when `virtualisation.useBootLoader` is false (the default). Otherwise the second method is used.
@@ -39,7 +39,7 @@ Features are separated in various sections depending on if you opt for a Nix-sto
### On bit-to-bit reproducibility {#sec-make-disk-image-features-reproducibility}
Images are **NOT** deterministic. Please do not hesitate to try to fix this. Sources of non-determinism are (not exhaustive):
Images are **NOT** deterministic, please do not hesitate to try to fix this, source of determinisms are (not exhaustive) :
- bootloader installation has timestamps
- SQLite Nix store database contains registration times

View File

@@ -5,8 +5,8 @@ It makes no assumptions about the container runner you choose to use to run the
The set of functions in `pkgs.ociTools` currently does not handle the [OCI image specification](https://github.com/opencontainers/image-spec).
At a high level, an OCI implementation would download an OCI Image then unpack that image into an OCI Runtime filesystem bundle.
At this point, the OCI Runtime Bundle would be run by an OCI Runtime.
At a high-level an OCI implementation would download an OCI Image then unpack that image into an OCI Runtime filesystem bundle.
At this point the OCI Runtime Bundle would be run by an OCI Runtime.
`pkgs.ociTools` provides utilities to create OCI Runtime bundles.
## buildContainer {#ssec-pkgs-ociTools-buildContainer}
@@ -54,7 +54,7 @@ Note that no user namespace is created, which means that you won't be able to ru
`os` **DEPRECATED**
: Specifies the operating system on which the container filesystem is based.
: Specifies the operating system on which the container filesystem is based on.
If specified, its value should follow the [OCI Image Configuration Specification](https://github.com/opencontainers/image-spec/blob/main/config.md#properties).
According to the linked specification, all possible values for `$GOOS` in [the Go docs](https://go.dev/doc/install/source#environment) should be valid, but will commonly be one of `darwin` or `linux`.

View File

@@ -3,7 +3,6 @@
This chapter describes several special build helpers.
```{=include=} sections
special/buildenv.section.md
special/fakenss.section.md
special/fhs-environments.section.md
special/makesetuphook.section.md

View File

@@ -1,101 +0,0 @@
# buildEnv {#sec-buildEnv}
`buildEnv` constructs a derivation containing directories and symbolic links, which resembles the profile layout where a list of derivations or store paths are installed.
Unlike [`symlinkJoin`](#trivial-builder-symlinkJoin), `buildEnv` takes special care of the outputs to link and checks for content collisions across the paths by default.
A common use case for `buildEnv` is constructing environment wrappers, such as an interpreter with modules or a program with extensions.
For example, [`python.withPackage`](#attributes-on-interpreters-packages) is based on `buildEnv`.
## Arguments {#sec-buildEnv-arguments}
`buildEnv` takes [fixed-point arguments (`buildEnv (finalAttrs: { })`)](#chap-build-helpers-finalAttrs) as well as a plain attribute set.
Unless otherwise noted, arguments can be overridden directly using [`<pkg>.overrideAttrs`](#sec-pkg-overrideAttrs).
`buildEnv` enforces [structured attributes (`{ __structuredAttrs = true; }`)](https://nix.dev/manual/nix/2.18/language/advanced-attributes.html#adv-attr-structuredAttrs).
- `name` or `pname` and `version` (required):
The name of the environment.
- `paths` (required):
The derivations or store paths to symlink ("install").
The elements can be any path-like object that string-interpolates to a store path.
The priority of each path is taken from `<path>.meta.priority` and falls back to `lib.meta.defaultPriority` if not set.
The argument `paths` is passed as attribute `passthru.paths` to prevent unexpected context pollution.
`passthru.paths` can be overridden with `<pkg>.overrideAttrs`.
- `extraOutputsToInstall` (default to `[ ]`):
Package outputs to include in addition to what `meta.outputsToInstall` specifies.
- `includeClosures` (default to `false`):
Whether to include closures of all input paths.
The list of the closure paths are constructed with `writeClosure`.
They are installed with lower priority and with build-time exceptions silenced.
- `extraPrefix` (default to `""`):
Root the result in directory `"$out${extraPrefix}"`, e.g. `"/share"`.
- `ignoreCollisions` (default: `false`):
Don't fail the build upon content collisions.
- `checkCollisionContents` (default: `true`):
If there is a collision, check whether the contents and permissions match; and only if not, throw a collision error.
- `ignoreSingleFileOutputs` (default: `false`):
Don't fail the build upon single-file outputs.
- `manifest` (default: `""`):
The manifest file (if any). A symlink `$out/manifest` will be created to it.
- `pathsToLink` (default: `[ "/" ]`):
The paths (relative to each element of `paths`) that we want to symlink (e.g., `["/bin"]`).
Any file outside the directories in this list won't be symlinked into the produced environment.
- `postBuild` (default: `""`):
Shell commands to run after building the symlink tree.
- `passthru` and `meta` (default: `{ }`):
`stdenv.mkDerivation`-supported attributes not passing down to `builtins.derivation`.
- `derivationArgs` (default: `{ }`):
Additional `stdenv.mkDerivation` arguments, such as `nativeBuildInputs`/`buildInputs` for `postBuild` dependencies and setup hooks.
`derivationArgs` is not passed down to `stdenv.mkDerivation`.
Override its attributes directly via `<pkg>.overrideAttrs` and reference directly via `finalAttrs`.
## Build-time exceptions {#sec-buildEnv-exceptions}
There are situations where the specified `paths` might not produce sensible profile layout.
By default, the builder fails early upon detecting these exceptions.
`buildEnv` provides arguments to fine-tune or ignore certain exceptions.
### Path collisions {#ssec-buildEnv-collisions}
Path collisions occur when files provided by two more output paths with the same priority overlap with each other, making the result profile layout potentially affected by the order of elements of `paths`.
This is undesirable in several use cases, such as when `paths` are determined by merging Nix modules.
If the argument `checkCollisionContents` is `true`, the builder checks whether the overlapping paths share the same content and mode, and fails only if not.
The argument `ignoreCollisions` silence the collision checks and allow the files to be overwritten based on the order of chosen output paths.
In addition to silencing this exception with `ignoreCollisions`, one can also adjust the priority of colliding packages and store paths.
Store paths can specify priority in the form
```nix
{
outPath = <path>;
meta.priority = <priority>;
}
```
And [`lib.meta.setPrio`](#function-library-lib.meta.setPrio)-related Nixpkgs Library functions also apply to a string-like attribute set (`{ outPath = <path>; }`).
### Single-file outputs {#ssec-buildEnv-singleFileOutputs}
When an output path provides a single file instead of a directory, it inherently cannot merge into the result layout.
All discoverable packages should configure their `meta.outputsToInstall` correctly, so that single-file outputs won't be installed into a profile.
Set `ignoreSingleFileOutputs` to `true` to drop all single-file output paths silently.
This option is useful when the specified paths contain the output paths of package tests.

View File

@@ -6,7 +6,7 @@ For hermeticity, Nix derivations do not allow any state to be carried over betwe
However, we can tell Nix explicitly what the previous build state was, by representing that previous state as a derivation output. This allows the passed build state to be used for an incremental build.
To change a normal derivation to a checkpoint-based build, these steps must be taken:
To change a normal derivation to a checkpoint based build, these steps must be taken:
```nix
{
checkpointArtifacts = (pkgs.checkpointBuildTools.prepareCheckpointBuild pkgs.virtualbox);

View File

@@ -14,11 +14,11 @@ Accepted arguments are:
- `executableName`
The name of the wrapper executable. Defaults to `pname` if set, or `name` otherwise.
- `targetPkgs`
Packages to be installed for the main host's architecture (i.e. x86_64 on x86_64 installations). Along with libraries, binaries are also installed.
Packages to be installed for the main host's architecture (i.e. x86_64 on x86_64 installations). Along with libraries binaries are also installed.
- `multiPkgs`
Packages to be installed for all architectures supported by a host (i.e. i686 and x86_64 on x86_64 installations). Only libraries are installed by default.
- `multiArch`
Whether to install 32-bit multiPkgs into the FHSEnv in 64-bit environments
Whether to install 32bit multiPkgs into the FHSEnv in 64bit environments
- `extraBuildCommands`
Additional commands to be executed for finalizing the directory structure.
- `extraBuildCommandsMulti`
@@ -47,9 +47,11 @@ You can create a simple environment using a `shell.nix` like this:
(with pkgs; [
udev
alsa-lib
libx11
libxcursor
libxrandr
])
++ (with pkgs.xorg; [
libX11
libXcursor
libXrandr
]);
multiPkgs =
pkgs:

View File

@@ -1,6 +1,6 @@
# pkgs.makeSetupHook {#sec-pkgs.makeSetupHook}
`pkgs.makeSetupHook` is a build helper that produces hooks that go into `nativeBuildInputs`
`pkgs.makeSetupHook` is a build helper that produces hooks that go in to `nativeBuildInputs`
## Usage {#sec-pkgs.makeSetupHook-usage}

View File

@@ -92,14 +92,14 @@ Generate a script that can be used to run an interactive session in the given im
### Examples {#vm-tools-makeImageTestScript-examples}
Create a script for running a Fedora 43 VM:
Create a script for running a Fedora 27 VM:
```nix
{ pkgs }: pkgs.vmTools.makeImageTestScript pkgs.vmTools.diskImages.fedora43x86_64
{ pkgs }: with pkgs; with vmTools; makeImageTestScript diskImages.fedora27x86_64
```
Create a script for running an Ubuntu 24.04 VM:
Create a script for running an Ubuntu 20.04 VM:
```nix
{ pkgs }: pkgs.vmTools.makeImageTestScript pkgs.vmTools.diskImages.ubuntu2404x86_64
{ pkgs }: with pkgs; with vmTools; makeImageTestScript diskImages.ubuntu2004x86_64
```
## `vmTools.diskImageFuns` {#vm-tools-diskImageFuns}
@@ -109,41 +109,44 @@ A set of functions that build a predefined set of minimal Linux distributions im
### Images {#vm-tools-diskImageFuns-images}
* Fedora
* `fedora42x86_64`
* `fedora43x86_64`
* Rocky Linux
* `rocky9x86_64`
* `rocky10x86_64`
* AlmaLinux
* `alma9x86_64`
* `alma10x86_64`
* Oracle Linux
* `oracle9x86_64`
* Amazon Linux
* `amazon2023x86_64`
* `fedora26x86_64`
* `fedora27x86_64`
* CentOS
* `centos6i386`
* `centos6x86_64`
* `centos7x86_64`
* Ubuntu
* `ubuntu1404i386`
* `ubuntu1404x86_64`
* `ubuntu1604i386`
* `ubuntu1604x86_64`
* `ubuntu1804i386`
* `ubuntu1804x86_64`
* `ubuntu2004i386`
* `ubuntu2004x86_64`
* `ubuntu2204i386`
* `ubuntu2204x86_64`
* `ubuntu2404x86_64`
* Debian
* `debian10i386`
* `debian10x86_64`
* `debian11i386`
* `debian11x86_64`
* `debian12i386`
* `debian12x86_64`
* `debian13i386`
* `debian13x86_64`
### Attributes {#vm-tools-diskImageFuns-attributes}
* `size` (optional, defaults to `4096`). The size of the image, in MiB.
* `extraPackages` (optional). A list of names of additional packages from the distribution that should be included in the image.
* `extraPackages` (optional). A list names of additional packages from the distribution that should be included in the image.
### Examples {#vm-tools-diskImageFuns-examples}
8GiB image containing Firefox in addition to the default packages:
```nix
{ pkgs }:
pkgs.vmTools.diskImageFuns.ubuntu2404x86_64 {
with pkgs;
with vmTools;
diskImageFuns.ubuntu2004x86_64 {
extraPackages = [ "firefox" ];
size = 8192;
}

View File

@@ -63,7 +63,7 @@ Note the moduleNames used in cmake find_package are case sensitive.
Check a packaged static site's links with the [`lychee` package](https://search.nixos.org/packages?show=lychee&type=packages&query=lychee).
You may use Nix to reproducibly build static websites, such as for software documentation.
Some packages will install documentation in their `out` or `doc` outputs, or maybe you have a dedicated package where you've made your static site reproducible by running a generator, such as [Hugo](https://gohugo.io/) or [mdBook](https://rust-lang.github.io/mdBook/), in a derivation.
Some packages will install documentation in their `out` or `doc` outputs, or maybe you have dedicated package where you've made your static site reproducible by running a generator, such as [Hugo](https://gohugo.io/) or [mdBook](https://rust-lang.github.io/mdBook/), in a derivation.
If you have a static site that can be built with Nix, you can use `lycheeLinkCheck` to check that the hyperlinks in your site are correct, and do so as part of your Nix workflow and CI.
@@ -129,13 +129,6 @@ It has two modes:
Example: `{ "include_verbatim" = true; }`
`extraArgs` (list of strings, optional) {#tester-lycheeLinkCheck-param-extraArgs}
: Extra command line arguments to pass to the `lychee` invocation.
These are passed in both the offline (build) and [`online`](#tester-lycheeLinkCheck-return) modes.
Example: `[ "--format" "json" ]`
`lychee` (derivation, optional) {#tester-lycheeLinkCheck-param-lychee}
: The `lychee` package to use.
@@ -585,7 +578,7 @@ Use the derivation hash to invalidate the output via name, for testing.
Type: `(a@{ name, ... } -> Derivation) -> a -> Derivation`
Normally, fixed output derivations can and should be cached by their output hash only, but for testing we want to re-fetch every time the fetcher changes.
Normally, fixed output derivations can and should be cached by their output hash only, but for testing we want to re-fetch everytime the fetcher changes.
Changes to the fetcher become apparent in the drvPath, which is a hash of how to fetch, rather than a fixed store path.
By inserting this hash into the name, we can make sure to re-run the fetcher every time the fetcher changes.

View File

@@ -8,7 +8,7 @@ Like [`stdenv.mkDerivation`](#sec-using-stdenv), each of these build helpers cre
The function `runCommandWith` returns a derivation built using the specified command(s), in a specified environment.
It is the underlying base function of all [`runCommand*` variants].
It is the underlying base function of all [`runCommand*` variants].
The general behavior is controlled via a single attribute set passed
as the first argument, and allows specifying `stdenv` freely.
@@ -45,7 +45,7 @@ runCommandWith :: {
:::
`stdenv` (Derivation)
: The [standard environment](#chap-stdenv) to use, defaulting to `pkgs.stdenv`.
: The [standard environment](#chap-stdenv) to use, defaulting to `pkgs.stdenv`
`derivationArgs` (Attribute set)
: Additional arguments for [`mkDerivation`](#sec-using-stdenv).
@@ -160,7 +160,7 @@ runCommandWith { inherit name derivationArgs; } buildCommand
## Writing text files {#trivial-builder-text-writing}
Nixpkgs provides the following functions for producing derivations which write text files or executable scripts into the Nix store.
They are useful for creating files from Nix expressions, and are all implemented as convenience wrappers around `writeTextFile`.
They are useful for creating files from Nix expression, and are all implemented as convenience wrappers around `writeTextFile`.
Each of these functions will cause a derivation to be produced.
When you coerce the result of each of these functions to a string with [string interpolation](https://nixos.org/manual/nix/stable/language/string-interpolation) or [`toString`](https://nixos.org/manual/nix/stable/language/builtins#builtins-toString), it will evaluate to the [store path](https://nixos.org/manual/nix/stable/store/store-path) of this derivation.
@@ -682,7 +682,7 @@ writeTextFile {
## `concatTextFile`, `concatText`, `concatScript` {#trivial-builder-concatText}
These functions concatenate `files` to the Nix store in a single file. This is useful for configuration files structured in lines of text. `concatTextFile` takes an attribute set and expects two arguments, `name` and `files`. `name` corresponds to the name used in the Nix store path. `files` will be the files to be concatenated. You can also set `executable` to true to make this file have the executable bit set.
`concatText` and `concatScript` are simple wrappers over `concatTextFile`.
`concatText` and`concatScript` are simple wrappers over `concatTextFile`.
Here are a few examples:
```nix
@@ -734,80 +734,7 @@ Some basic Bash options are set by default (`errexit`, `nounset`, and `pipefail`
Extra arguments may be passed to `stdenv.mkDerivation` by setting `derivationArgs`; note that variables set in this manner will be set when the shell script is _built,_ not when it's run.
Runtime environment variables can be set with the `runtimeEnv` argument.
`writeShellApplication` has the following arguments:
`name` (String)
: The name of the script to write.
`text` (String)
: The shell script's text, not including a shebang.
`runtimeInputs` (List of derivations or strings, _optional_)
: Inputs to add to the shell script's `$PATH` at runtime.
Each elements can either be a normal derivation, or a string containing a path, in which case it will be suffixed with `/bin` to create a `PATH` expression (see [`lib.strings.makeBinPath`](#function-library-lib.strings.makeBinPath) for more information).
`runtimeEnv` (Attribute set, _optional_)
: Extra environment variables to set at runtime.
`checkPhase` (String, _optional_)
: The `checkPhase` to run.
The script path will be given as `$target` in the `checkPhase`
_Default behavior:_ run [`shellcheck`](https://github.com/koalaman/shellcheck) (on supported platforms) and `bash -n` (check syntax but don't execute commands).
`excludeShellChecks` (List of strings, _optional_)
: Checks to exclude when running `shellcheck`.
For example, `excludeShellChecks = [ "SC2016" ]` would prevent `shellcheck` from reporting `SC2016`, but would still detect any other problems.
See [the `shellcheck` wiki](https://www.shellcheck.net/wiki/) for a list of checks.
`extraShellCheckFlags` (List of strings, _optional_)
: Extra command-line flags to pass to `shellcheck`.
`bashOptions` (List of strings, _optional_)
: Bash options to activate with `set -o` at the start of the script
_Default:_ `[ "errexit" "nounset" "pipefail" ]`, which means:
1. A failing command inside of a command list or pipeline will make the script exit, except if used as a conditional (inside a `while`, `if`, `&&`, `||`, etc.);
2. Any attempt to expand an undefined variable will make the script exit.
`inheritPath` (Bool, _optional_)
: Whether the script will inherit the PATH from its parent environment.
_Default:_ `true`
`meta` (Attribute set, _optional_)
: `stdenv.mkDerivation`'s [`meta`](#chap-meta) argument
`passthru` (Attribute set, _optional_)
: `stdenv.mkDerivation`'s [`passthru`](#chap-passthru) argument
`derivationArgs` (Attribute set, _optional_)
: Extra arguments to pass to [`stdenv.mkDerivation`](#chap-stdenv)
::: {.caution}
Certain derivation attributes are also set internally, so overriding those could cause problems.
:::
::: {.example #ex-writeShellApplication}
# Usage of `writeShellApplication`
The following shell application can refer to `curl` directly, rather than needing to write `${curl}/bin/curl`
For example, the following shell application can refer to `curl` directly, rather than needing to write `${curl}/bin/curl`:
```nix
writeShellApplication {
@@ -823,7 +750,6 @@ writeShellApplication {
'';
}
```
:::
## `symlinkJoin` {#trivial-builder-symlinkJoin}

View File

@@ -1,3 +1,11 @@
# Contributing to Nixpkgs documentation {#chap-contributing}
This section has been moved to [doc/README.md](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md).
## devmode {#sec-contributing-devmode}
This section has been moved to [doc/README.md](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md).
## Syntax {#sec-contributing-markup}
This section has been moved to [doc/README.md](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md).

View File

@@ -2,6 +2,6 @@
* Make sure you have a [GitHub account](https://github.com/signup/free)
* Make sure there is no open issue on the topic
* [Submit a new issue](https://github.com/NixOS/nixpkgs/issues/new/choose) by choosing the kind of topic and filling out the template
* [Submit a new issue](https://github.com/NixOS/nixpkgs/issues/new/choose) by choosing the kind of topic and fill out the template
<!-- In the future this section could also include more detailed information on the issue templates -->

View File

@@ -37,16 +37,16 @@ runCommand "manual.epub"
</book>
'';
__structuredAttrs = true;
passAsFile = [ "epub" ];
}
''
mkdir scratch
printf "%s" "$epub" | xsltproc \
xsltproc \
--param chapter.autolabel 0 \
--nonet \
--output scratch/ \
${docbook_xsl_ns}/xml/xsl/docbook/epub/docbook.xsl \
-
$epubPath
echo "application/epub+zip" > mimetype
zip -0Xq -b "$TMPDIR" "$out" mimetype

View File

@@ -54,8 +54,7 @@ stdenvNoCC.mkDerivation (
};
in
{
version = lib.trivial.release;
pname = "nixpkgs-manual";
name = "nixpkgs-manual";
nativeBuildInputs = [ nixos-render-docs ];
@@ -158,7 +157,7 @@ stdenvNoCC.mkDerivation (
buildArgs = toString ../.;
open = "/share/doc/nixpkgs/index.html";
};
nixos-render-docs-redirects' = writeShellScriptBin "redirects" ''${lib.getExe nixos-render-docs-redirects} --file '${toString ../redirects.json}' "$@"'';
nixos-render-docs-redirects' = writeShellScriptBin "redirects" "${lib.getExe nixos-render-docs-redirects} --file ${toString ../redirects.json} $@";
in
mkShellNoCC {
packages = [
@@ -169,7 +168,6 @@ stdenvNoCC.mkDerivation (
};
tests = {
# Don't run this in CI because it's not reproducible
manpage-urls = callPackage ../tests/manpage-urls.nix { };
};
};

View File

@@ -20,24 +20,16 @@ ghc.section.md
gnome.section.md
haredo.section.md
installShellFiles.section.md
installFonts.section.md
julec.section.md
just.section.md
libglycin.section.md
libiconv.section.md
libxml2.section.md
meson.section.md
mpi-check-hook.section.md
ninja.section.md
nodejs-install-executables.section.md
nodejs-install-manuals.section.md
npm-build-hook.section.md
npm-config-hook.section.md
npm-install-hook.section.md
patch-rc-path-hooks.section.md
perl.section.md
pkg-config.section.md
pnpm.section.md
postgresql-test-hook.section.md
premake.section.md
python.section.md
@@ -49,7 +41,6 @@ unzip.section.md
validatePkgConfig.section.md
versionCheckHook.section.md
waf.section.md
writable-tmpdir-as-home-hook.section.md
zig.section.md
xcbuild.section.md
xfce4-dev-tools.section.md

View File

@@ -1,24 +0,0 @@
# `installFonts` {#installfonts}
This hook installs common font formats to the proper location. In its default state, the hook automatically handles ttf, ttc, otf, bdf, and psf. Given a `webfont` output, woff and woff2 formats will be installed under this output.
The automatic behavior of the hook can be disabled by setting the `dontInstallFonts` variable to true.
Additionally, it exposes the `installFont` function that can be used from your `postInstall`
hook, to install additional formats:
## `installFont` {#installfonts-installfont}
The `installFont` function takes two arguments, a file extension to move (*without* a preceding dot), and the install location.
### Example Usage {#installfonts-installfont-exampleusage}
```nix
{
nativeBuildInputs = [ installFonts ];
postInstall = ''
installFont svg $out/share/fonts/svg
'';
}
```

View File

@@ -1,33 +0,0 @@
# `juce.projucerHook` {#juce-projucer-hook}
[Projucer](https://juce.com/tutorials/tutorial_new_projucer_project/) is a graphical project management utility and build system for the [JUCE](https://juce.com/) audio programming framework. It is available in nixpkgs under the `juce` package.
The `juce.projucerHook` setup hook overrides the configure and install phases. It is only supported on Linux and requires your project's `.jucer` file to contain a `LinuxMakefile` exporter.
## Example {#juce-projucer-hook-example}
```nix
{
juce,
stdenv,
}:
stdenv.mkDerivation {
# ...
nativeBuildInputs = [ juce.projucerHook ];
jucerFile = "Microbiome.jucer";
dontUseProjucerInstall = true;
# ...
}
```
## Variables controlling `juce.projucerHook` {#juce-projucer-hook-variables}
### `dontUseProjucerConfigure`
Disables `projucerConfigurePhase`
### `dontUseProjucerInstall`
Disables `projucerInstallPhase`

View File

@@ -1,47 +0,0 @@
# libglycin {#libglycin-hooks}
[Glycin](https://gitlab.gnome.org/GNOME/glycin) is a library for sandboxed and extendable image loading.
[]{#libglycin-setup-hook} For most applications using it, individual image formats are loaded through binaries provided by `glycin-loaders`. The paths of these loaders must be injected into the environment, e.g. using [`wrapGAppsHook`](#ssec-gnome-hooks). `libglycin.setupHook` will do that.
[]{#libglycin-patch-vendor-hook} Additionally, for Rust projects `glycin` Rust crate itself requires a patch to become self-contained. `libglycin.patchVendorHook` will do that. This is not needed for projects using the ELF library from `libglycin` package.
## Example code snippet {#libglycin-hooks-example-code-snippet}
```nix
{
lib,
rustPlatform,
libglycin,
glycin-loaders,
wrapGAppsHook4,
}:
rustPlatform.buildRustPackage {
# ...
cargoHash = "...";
nativeBuildInputs = [
wrapGAppsHook4
libglycin.patchVendorHook
];
buildInputs = [
libglycin.setupHook
glycin-loaders
];
# ...
}
```
## Variables controlling glycin-loaders {#libglycin-hook-variables-controlling}
### `glycinCargoDepsPath` {#glycin-cargo-deps-path}
Path to a directory containing the `glycin` crate to patch. Defaults to the crate directory created by `cargoSetupHook`, or `./vendor/`.
### `dontWrapGlycinLoaders` {#glycin-dont-wrap}
Disable adding the Glycin loaders path `XDG_DATA_DIRS` with `wrapGAppsHook`.

View File

@@ -1,29 +0,0 @@
# nodejsInstallExecutables {#nodejs-install-executables}
Hook for wrapping Node.js executables.
Primarily created for a multi-language environment.
## Examples {#nodejs-install-executables-example}
[](#npm-build-hook-example-snippet)
## Variables controlling `nodejsInstallExecutables` {#nodejs-install-executables-variables}
### `nodejsInstallExecutables` Exclusive Variables {#nodejs-install-executables-exclusive-variables}
#### `makeWrapperArgs` {#nodejs-install-executables-wrapper-args}
Flags to pass to the call to [`makeWrapper`](#fun-makeWrapper).
To avoid double-wrapping, this flag can also be accessed in Bash.
```nix
stdenv.mkDerivation (finalAttrs: {
#...
dontWrapGApps = true;
postInstall = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
#...
})
```

View File

@@ -1,12 +0,0 @@
# nodejsInstallManuals {#nodejs-install-manuals}
Detects manuals in Node.js packages, and attempts to install them in standard locations.
This detection is done by inspecting the package.json of the project and finding any entries
with type `man`.
There are no ways currently to configure this hook.
## Examples {#nodejs-install-manuals-example}
[](#npm-build-hook-example-snippet)

View File

@@ -1,93 +0,0 @@
# npmHooks.npmBuildHook {#npm-build-hook}
Hook for building packages that use npm. Can be used in multi-language environments.
## Examples {#npm-build-hook-snippet}
:::{.example #npm-build-hook-example-snippet}
# Using `npmHooks`
```nix
{
stdenv,
fetchFromGitHub,
fetchNpmDeps,
npmHooks,
nodejsInstallExecutables,
nodejsInstallManuals,
nodejs,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "some-npm-project";
version = "1.0";
src = fetchFromGitHub {
owner = "JohnNpm";
repo = "SomeProject";
tag = finalAttrs.version;
hash = "...";
};
strictDeps = true;
nativeBuildInputs = [
nodejs
nodejsInstallExecutables
nodejsInstallManuals
npmHooks.npmConfigHook
npmHooks.npmBuildHook
npmHooks.npmInstallHook
];
npmBuildScript = "build";
npmBuildFlags = [
"--prod"
];
npmFlags = [
"--ignore-scripts"
];
npmDeps = fetchNpmDeps {
inherit (finalAttrs) src;
hash = "...";
};
makeWrapperArgs = [
"--set"
"NODE_ENV"
"production"
];
meta = {
description = "npm project";
};
})
```
:::
## Variables controlling `npmBuildHook` {#npm-build-hook-variables}
### `npmBuildHook` Exclusive Variables {#npm-build-hook-exclusive-variables}
#### `npmBuildScript` {#npm-build-hook-script}
Controls the script ran to build the npm package within the `package.json` file.
Required to be set, usually to `build`, but can vary between packages.
#### `npmBuildFlags` {#npm-build-hook-flags}
Controls the arguments to the {command}`npm run $npmBuildScript` command.
#### `dontNpmBuild` {#npm-build-hook-dont}
Disables `npmBuildHook` when enabled
### Honored Variables {#npm-build-hook-honored-variables}
The following variables are honored by the `npmBuildHook`.
- [`npmWorkspace`](#javascript-buildNpmPackage-npmWorkspace)
- [`npmFlags`](#javascript-buildNpmPackage-npmFlags)

View File

@@ -1,41 +0,0 @@
# npmHooks.npmConfigHook {#npm-config-hook}
Hook for configuring packages that use npm.
Primarily made for a multi-language environment.
## Examples {#npm-config-hook-snippet}
[](#npm-build-hook-example-snippet)
## Variables controlling `npmConfigHook` {#npm-config-hook-variables}
### `npmConfigHook` Exclusive Variables {#npm-config-hook-exclusive-variables}
#### `npmDeps` {#npm-config-hook-deps}
Derivation that contains the npm package dependencies.
Usually built with `fetchNpmDeps`.
This attribute is required or the hook will abort the build.
#### `makeCacheWritable` {#npm-config-hook-writable-cache}
Whether to make the dependency cache writable prior to installing the dependencies.
Don't set this unless npm tries to write to the cache directory.
#### `npmInstallFlags` {#npm-config-hook-install-flags}
Flags to pass to the {command}`npm ci` call for installing the dependencies to the build environment.
Defaults to `--ignore-scripts`, which cannot be removed.
This does not control anything with the `npmInstallHook`.
#### `npmRebuildFlags` {#npm-config-hook-rebuild-flags}
Flags to pass to the {command}`npm rebuild` command after the dependencies are installed to the environment.
### Honored Variables {#npm-config-hook-honored-variables}
The following variables are honored by the `npmConfigHook`.
- [`npmWorkspace`](#javascript-buildNpmPackage-npmWorkspace)
- [`npmFlags`](#javascript-buildNpmPackage-npmFlags)
- `npmRoot`

View File

@@ -1,35 +0,0 @@
# npmHooks.npmInstallHook {#npm-install-hook}
Hook to install node_modules for npm packages.
Does not create wrappers for executable npm projects
Primarily made for a multi-language environment.
## Examples {#npm-install-hook-snippet}
[](#npm-build-hook-example-snippet)
## Variables controlling `npmInstallHook` {#npm-install-hook-variables}
### `npmInstallHook` Exclusive Variables {#npm-install-hook-exclusive-variables}
#### `dontNpmPrune` {#npm-install-hook-dont-prune}
Whether to run {command}`npm prune` on the `node_modules` or not.
Defaults to `true`.
#### `npmInstallFlags` {#npm-install-hook-prune-flags}
Flags to pass to the {command}`npm prune` call for the `node_modules` of the package.
Defaults to `--omit=dev --no-save` which cannot be modified.
#### `dontNpmInstall` {#npm-install-hook-dont}
Controls whether `npmInstallHook` is enabled or not.
Defaults to `true`, so the hook will run.
### Honored Variables {#npm-install-hook-honored-variables}
The following variables are honored by the `npmInstallHook`.
- [`npmWorkspace`](#javascript-buildNpmPackage-npmWorkspace)
- [`npmFlags`](#javascript-buildNpmPackage-npmFlags)

View File

@@ -1,142 +0,0 @@
# pnpmBuildHook {#pnpm-build-hook}
[pnpm](https://pnpm.io/) is a an NPM-compatible package manager focused on increasing managment speeds, and reducing disk space.
The `pnpmBuildHook` in Nixpkgs overrides the default build phase for building packages that use pnpm.
:::{.example #ex-pnpm-build-hook}
## pnpmBuildHook example code snippet {#pnpm-build-hook-code-snippet}
```
{
lib,
stdenv,
fetchFromGitHub,
fetchPnpmDeps,
pnpmConfigHook,
pnpmBuildHook,
makeBinaryWrapper,
pnpm_10,
}:
let
pnpm = pnpm_10;
in
stdenv.mkDerivation (finalAttrs: {
pname = "coolPackages";
version = "1.0";
src = fetchFromGitHub {
owner = "JaneCool";
repo = "coolpackage";
tag = finalAttrs.version;
hash = lib.fakeHash;
};
__structuredAttrs = true;
strictDeps = true;
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs) pname version src;
inherit pnpm;
fetcherversion = 4;
hash = lib.fakeHash;
};
nativeBuildInputs = [
pnpmConfigHook
pnpmBuildHook
makeBinaryWrapper
];
pnpmBuildScript = "build";
pnpmBuildFlags = [
"--mode"
"production"
];
pnpmWorkspaces = [
"test"
];
installPhase = ''
runHook preInstall
mkdir "$out"
cp -r dist/. "$out"
runHook postInstall
'';
meta = {
description = "very cool package that does cool things";
mainProgram = "cool";
};
})
```
:::
## Variables controlling pnpmBuildHook {#pnpm-build-hook-variables}
### pnpm Exclusive Variables {#pnpm-build-hook-exclusive-variables}
#### `pnpmBuildScript` {#pnpm-build-hook-script}
Controls the script ran to build the package, by default the script is `build`.
#### `pnpmFlags` {#pnpm-build-hook-flags}
Controls flags used for all invocations of pnpm across all hooks local to this derivation.
#### `pnpmBuildFlags` {#pnpm-build-hook-build-flags}
Controls the flags pass only to the pnpm build script invocation.
#### `dontPnpmBuild` {#pnpm-build-hook-dont}
Disables automatically running `pnpmBuildHook`. The build can still be run manually if needed, for example:
```
{
lib,
rustPlatform,
pnpmBuildHook,
pnpmConfigHook,
fetchPnpmDeps,
emptyDirectory,
pnpm_10,
}:
let
pnpm = pnpm_10;
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "super-fast-application";
version = "1.0";
src = emptyDirectory;
cargoHash = lib.fakeHash;
nativeBuildInputs = [
pnpmBuildHook
pnpmConfigHook
];
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs) pname version src;
inherit pnpm;
fetcherversion = 3;
hash = lib.fakeHash;
}
dontPnpmBuild = true;
postBuild = ''
pnpmBuildHook
'';
})
```
### Honored Variables {#pnpm-build-hook-honored-variables}
The following variables are honored by `pnpmBuildHook`.
* [`pnpmRoot`](#javascript-pnpm-sourceRoot)
* [`pnpmWorkspaces`](#javascript-pnpm-workspaces)

View File

@@ -79,10 +79,6 @@ The [bundle type](https://tauri.app/v1/guides/building/) to build.
Disables using `tauriBuildHook`.
#### `dontTauriFixup` {#dont-tauri-fixup}
Disables the `tauriFixupHook` pre fixup phase.
#### `dontTauriInstall` {#dont-tauri-install}
Disables using `tauriInstallPostBuildHook` and `tauriInstallHook`.

View File

@@ -10,7 +10,7 @@ The hook runs in `installCheckPhase`, requiring `doInstallCheck` is enabled for
lib,
stdenv,
udevCheckHook,
# ...
# ...
}:
stdenv.mkDerivation (finalAttrs: {

Some files were not shown because too many files have changed in this diff Show More