Compare commits

..

3 commits

Author SHA1 Message Date
db895980ba factorio-experimental: 2.0.24 -> 2.0.25 2024-12-13 20:57:02 +00:00
e2c645ca5d Merge commit 'fece082f6c165d89daf650c3b80a074079b8af50' into HEAD 2024-12-13 20:54:23 +00:00
fece082f6c Squashed 'third_party/nixpkgs/' changes from d0797a04b81ca..5d67ea6b4b633
5d67ea6b4b633 clever-tools: 3.9.0 -> 3.10.1 (#360167)
7194a136ae62e hmcl: 3.5.9 -> 3.6.11 (#356397)
21e39e915f060 system/activation: mention deps attr in activationScripts example (#363915)
7ea7a19b2d52f nixos/bookstack: fix unintended escaping of nginx locations (#363581)
e898f0f29a4bd xen: mark 4.16 as EOL (#364095)
5a48e3c2e435e codesnap: init at 0.8.2 (#364266)
bbb8998e46a57 yamlscript: 0.1.83 -> 0.1.86 (#363399)
3c0501c9212e6 python312Packages.chex: 0.1.87 -> 0.1.88 (#364220)
d55cc4608dae1 nixos/immich: restrict media filesystem permissions (#361627)
a0025bee55d6d elements: 23.2.1 -> 23.2.4 (#363933)
362f987f977ae codesnap: init at 0.8.2
0f7848bc2522c flood: 4.8.2 -> 4.8.5 (#364010)
266c699413e57 squeezelite: 2.0.0.1504 -> 2.0.0.1507 (#364185)
f5c423099d9d1 ci/eval: add rebuildsByPlatform to the comparison result (#363751)
204afb3d25f51 home-assistant-custom-components.moonraker: 1.4.0 -> 1.5.0 (#364245)
87b5760efe98b moneydance: fix GTK crash (#359411)
518ae8fd583e3 ci/eval: add rebuildsByPlatform to the comparison result
ad47c13dd464d vscode-extensions.ms-toolsai.jupyter: 2024.10.0 -> 2024.11.0 (#364225)
7dca174bfedb5 pywal16: 3.6.0 -> 3.7.2; add {manpage,optional-dependencies,updateScript} (#359741)
6041b198d632c rustypaste: 0.15.1 -> 0.16.0 (#364256)
e9d754462cddb perlPackages.FinanceQuote: 1.63 -> 1.64 (#363182)
de58560d70542 python312Packages.cymem: 2.0.8 -> 2.0.10 (#364172)
1c961361c1511 python312Packages.prettytable: 3.11.0 -> 3.12.0; python312Packages.jupysql: 0.10.13 -> 0.10.16 (#359274)
cef807f7be0ec rustypaste: 0.15.1 -> 0.16.0
7251eb7213d07 edk2-uefi-shell: fix cross compilation
0592f28a344d1 codecov-cli: init at 9.1.1 (#358490)
c62feafc4a729 python312Packages.momepy: 0.9.0 -> 0.9.1 (#364177)
3bec26df1bd79 datalad: fix changed hash from upstream (#364015)
a8e642161700f python312Packages.python-linkplay: 0.1.0 -> 0.1.1 (#364023)
e626888ad91be python312Packages.cymem: update meta.changelog
d377d2b0a509c codecov-cli: init at 9.1.1
d74689ac642e8 libretro.nestopia: 0-unstable-2024-10-17 -> 0-unstable-2024-12-10 (#364017)
6c6fcb1793134 libretro.bluemsx: 0-unstable-2024-10-22 -> 0-unstable-2024-12-04 (#364022)
6e1fe81937f37 libretro.freeintv: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21 (#364024)
f4d6217435997 pantheon.elementary-terminal: 6.2.0 -> 6.3.0 (#364212)
6aa01d8662aec libretro.fceumm: 0-unstable-2024-09-23 -> 0-unstable-2024-11-23 (#364027)
026a737de16f9 libretro.beetle-wswan: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21 (#364028)
76e1fc9fa1ea3 libretro.genesis-plus-gx: 0-unstable-2024-09-18 -> 0-unstable-2024-11-22 (#364030)
1d365e8d29e4c libretro.o2em: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21 (#364031)
2d7a168aa34c2 libretro.vba-next: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21 (#364033)
0a55764c2eb5f libretro.gambatte: 0-unstable-2024-10-04 -> 0-unstable-2024-11-29 (#364034)
bee404684adef libretro.fmsx: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21 (#364036)
bd2db488d29c1 home-assistant-custom-components.moonraker: 1.4.0 -> 1.5.0
9f2ee84aa8819 libretro.mesen: 0-unstable-2024-06-09 -> 0.9.9-unstable-2024-10-21 (#364038)
93c4dd1a9c019 microfetch: 0.4.1 -> 0.4.2 (#364043)
4f8d72487eede python312Packages.json-repair: 0.30.2 -> 0.30.3 (#364058)
064d1dfa963a0 nats-server: 2.10.22 -> 2.10.23 (#364083)
1182f0c3e2d9a python3Packages.test-results-parser: init at 0.5.1
7422618038aa6 kubescape: 3.0.21 -> 3.0.22 (#364227)
2a720f523f334 dart.file_picker: init (#363407)
c0d72685eea80 libserdes: 7.7.1 -> 7.8.0 (#364189)
502ba9dd0cb8b glaze: 4.0.1 -> 4.0.2 (#364197)
d5f5657db19bc whatsie: Add desktop entry and install icons (#363929)
b4e8b1261881c ocm: 1.0.2 -> 1.0.3 (#364208)
0dd2c6cc48160 twinkle: unstable-2023-03-25 -> unstable-2024-20-11 (#364092)
69c20d9b12342 python312Packages.fints: 4.2.0 -> 4.2.3 (#364106)
24739e5152ba8 python312Packages.gotailwind: 0.2.4 -> 0.3.0 (#364149)
041097c1d1ba7 cpuinfo: 0-unstable-2024-11-14 -> 0-unstable-2024-12-09 (#364154)
fb3ba00373b5d git-worktree-switcher: add mateusauler as co-maintainer (#364236)
6bece76bf935d starpls: 0.1.17 -> 0.1.20 (#364163)
cac2897287deb goread: 1.7.0 -> 1.7.1 (#364166)
3121bc67fd347 python312Packages.pdm-build-locked: 0.3.3 -> 0.3.4 (#364173)
9e708ac6fa247 nomino: 1.3.6 -> 1.3.7 (#364109)
ef78261c29a07 google-java-format: 1.25.0 -> 1.25.1 (#364110)
d2c88d3c5f5ce go-task: 3.40.0 -> 3.40.1 (#364114)
b94f175019924 python312Packages.reptor: 0.24 -> 0.25 (#364122)
864cd89202e1f rqlite: 8.34.1 -> 8.34.3 (#364129)
afb1ff6e4c5dd marwaita-orange: 22 -> 23 (#364139)
da949c1e8f76d flutter_rust_bridge_codegen: 2.6.0 -> 2.7.0 (#364085)
e670df7d61e87 httm: 0.43.2 -> 0.44.0 (#364087)
5d8194e9eb2c4 yubikey-touch-detector: 1.12.0 -> 1.12.2 (#364107)
8cd84794deeea chromium: 131.0.6778.108 -> 131.0.6778.139 (#364063)
b8e0d56349a77 duplicity: 3.0.3.1 -> 3.0.3.2 (#364143)
68936e5e6fdd4 quickgui: remove useless zenity
eb2ed4eb3540b mangayomi: remove useless zenity
2a6c78be41deb fluffychat: remove useless zenity
f746723f331bc flclash: remove useless zenity
0d460350cafd0 cwtch-ui: remove useless zenity
9dc84e1150ed9 dart.file_picker: init
6af66e96a658f mobilizon: 4.1.0 -> 5.1.0 (#363711)
1992eca111a42 gedit: 48.0 → 48.1 (#363201)
045065efb879b kubescape: 3.0.21 -> 3.0.22
e75188aec414f hypnotix: 4.7 -> 4.8 (#364104)
b67a2d717f116 vscode-extensions.ms-toolsai.jupyter: 2024.10.0 -> 2024.11.0
38fec0f0031aa bark-server: 2.1.5 -> 2.1.6 (#364214)
15c97ffcf0a4a nodePackages.vls: drop (#363742)
e4d97f3e704ea jaq: 1.6.0 -> 2.0.1 (#363868)
0b088d4be51dc scdl: 2.12.1 -> 2.12.3 (#363870)
a264d75d5c08f whatsie: Add desktop entry and install icons
f5c1b5b4552e7 python312Packages.chex: 0.1.87 -> 0.1.88
9e717ef9bfda3 cargo-modules: 0.19.1 -> 0.20.2 (#362239)
0e6166eaf82f8 python312Packages.softlayer: fix on darwin
47755f037380d python312Packages.libuuu: fix typo in description
9745ad0a82166 python312Packages.jupysql: 0.10.13 -> 0.10.16
f02e016caa440 python312Packages.prettytable: add GaetanLepage as maintainer
02660f220ba8f python312Packages.prettytable: 3.11.0 -> 3.12.0
3ebe0ca44a688 git-worktree-switcher: add mateusauler as co-maintainer
ac2c2f4cf9e7d maintainers: add mateusauler
144406356a610 versitygw: 1.0.8 -> 1.0.9 (#363805)
a4458d7310b61 sbomnix: 1.7.0 -> 1.7.1
62cbaa39ed9a8 bark-server: 2.1.5 -> 2.1.6
2f610f9856986 nixos/librenms: order librenms-setup after network.target (#363706)
b745cbe1658dc pantheon.elementary-terminal: 6.2.0 -> 6.3.0
f75807ce2a545 ocm: 1.0.2 -> 1.0.3
53261ae0e3a59 batman-adv: 2024.3 -> 2024.4 (#363940)
7d24413fbb330 gitlab: increase node heap size limit (#364187)
44f8ed831b2b8 arrpc: 3.4.0 -> 3.5.0; add systemd user service (#351774)
eafaee722ece9 unbound: support dynlib module (#333301)
ce8a0da4a9c02 legends-of-equestria: init at 2024.05.01 (#296316)
3de5332bba9d9 nixos/qt: install kio when qt.platformTheme = "kde" (#364032)
6c7048f933394 programs/yubikey-touch-detector: add PartOf=graphical-session.target (#364117)
22501447b2e4e glaze: 4.0.1 -> 4.0.2
e2317b109f26f pywal16: 3.7.1 -> 3.7.2
37dc568acd913 ocamlPackages.tls-eio: init at 1.0.4
bfd7154402f88 nixos/ebusd: fix device access (#352743)
2e5a764eaf791  git-worktree-switcher: init at 0.2.4 (#355484)
e9eff47002ddc nixos/networking: don't add extra names to ::1
c1d053679641c libserdes: 7.7.1 -> 7.8.0
4c43880bc847e bitwig-studio: fix MIDI input (#361845)
0c1feac497d4c nixos/ebusd: fix device access
f313eefa97ba4 pywal16: add updateScript
9f4747e9d0ec8 pywal16: add optional-dependencies
3a78dd097dd70 pywal16: add man page
00edd0346e5b9 pywal16: 3.6.0 -> 3.7.1
cb68aacc006d4 gitlab: increase node heap size limit
79a7ad1c21c0c nix: simplify version checks (#363831)
e91d7969aefa0 python312Packages.example-robot-data: 4.1.0 -> 4.2.0 (#363802)
774f764096809 squeezelite: 2.0.0.1504 -> 2.0.0.1507
138ac300dfef4 nixos/v2ray: change the type of `config` field (#163810)
c686ea4e8149b tarlz: 0.25 -> 0.26
e09964d017754 lint-staged: 15.2.10 -> 15.2.11 (#364089)
4350176879088 terraform-providers.ibm: 1.71.2 -> 1.72.1
8c822968ec11d python312Packages.momepy: 0.9.0 -> 0.9.1
da2272328c6eb python312Packages.pdm-build-locked: 0.3.3 -> 0.3.4
d93447f350962 chamber: 3.1.0 -> 3.1.1 (#364076)
223c39872ed28 python312Packages.cymem: 2.0.8 -> 2.0.10
5b5494fe45353 nixos/wireguard-networkd: use systemd credentials for privateKeyFile and presharedKeyFile (#364078)
037efbc6feb40 goread: 1.7.0 -> 1.7.1
0daaba4fbd4e9 malcontent: Add malcontent-ui to passthru.tests
fa5fd554c6edc malcontent: 0.12.0 → 0.13.0
a71752a06d87d starpls: 0.1.17 -> 0.1.20
953f377e926c3 nsd: 4.10.1 -> 4.10.2 (#363428)
c64ac9fb7e1b8 nix-eval-jobs: 2.24.1 -> 2.25.0 (#364137)
65bd49cf93ae7 vimPlugins.blink-cmp: 0.7.3 -> 0.7.6 (#364100)
1634b6e49bb8e python312Packages.gotailwind: 0.2.4 -> 0.3.0
b3438737b4504 python312Packages.mizani: 0.13.0 -> 0.13.1 (#363988)
ca5381c0c6038 netdata: 1.47.4 -> 1.47.5 (#363038)
91aec70f8bb3c python312Packages.msticpy: 2.14.0 -> 2.15.0 (#363889)
cdc04e6c63d75 python312Packages.yte: 1.5.4 -> 1.5.5 (#363891)
600ad84b66ac5 python312Packages.tencentcloud-sdk-python: 3.0.1277 -> 3.0.1278 (#363893)
f16788e76c8c1 python312Packages.groq: init at 0.13.0, python312Packages.speechrecognition: 3.11.0 -> 3.12.0 (#363944)
d536e1e58e6d4 python312Packages.polyswarm-api: 3.10.0 -> 3.11.0 (#363959)
b183f2641c841 python312Packages.pytest-codspeed: 3.0.0 -> 3.1.0 (#363960)
b91c66bf5b415 python312Packages.mypy-boto3-*: updates (#363961)
f6027d6c5f3b2 python312Packages.aioacaia: 0.1.10 -> 0.1.11 (#363982)
2e6322298ad6b python312Packages.plugwise: 1.6.2 -> 1.6.3 (#363966)
960ae2138e41b checkov: 3.2.332 -> 3.2.334 (#363962)
7edbe5289e773 python312Packages.pvo: 2.1.1 -> 2.2.0 (#363958)
ce804b4374f0e python312Packages.sigstore-rekor-types: 0.0.17 -> 0.0.18 (#363983)
3d4d848a208e3 python312Packages.reolink-aio: 0.11.4 -> 0.11.5 (#363984)
b2e5a099a4d43 limine: 8.4.0 -> 8.6.0 (#364103)
de0880c00783f duplicity: 3.0.3.1 -> 3.0.3.2
74dcdfc450cb8 gitlab-ci-local: 4.55.0 -> 4.56.0 (#364134)
2bd5a84b9c993 nixos-option: link to nixos test (#363967)
cb810460f58a8 marwaita-orange: 22 -> 23
6a81d40331e75 cpuinfo: 0-unstable-2024-11-14 -> 0-unstable-2024-12-09
b2bcb86d1b154 nix-eval-jobs: 2.24.1 -> 2.25.0
b03ecbd3514cb ast-grep: 0.30.0 -> 0.31.1 (#364113)
bc08fdc6e5e81 linux-firmware: 20241110 -> 20241210 (#364011)
9b6c95e8e8581 gitlab-ci-local: 4.55.0 -> 4.56.0
9f41b06c81d3f otadump: init at 0.1.2 (#329129)
e866043406b15 terraform-providers.cloudflare: 4.44.0 -> 4.48.0
f6b00e9c88c8e television: 0.5.3 -> 0.6.2 (#364120)
115709cac4bee resources: 1.7.0 -> 1.7.1 (#363218)
f9b3ad9126d37 nbstripout: Don't propagate ipython (#230164)
d87246a418a9a conda: fix aarch64-linux (#363620)
83b3052499b2c config-store: init at 1.0.0 (#363701)
6cec999bb1ca6 pam: Use freebsd.pam on FreeBSD (#362689)
bce6f852d1cda python3Packages.craft-archives: 2.0.0 -> 2.0.2 (#363994)
e4414e862bec3 rqlite: 8.34.1 -> 8.34.3
668076265780c spotdl: 4.2.8 -> 4.2.10 (#361322)
d6af3b31b3da1 spotdl: 4.2.8 -> 4.2.10
1c79dc069afab python312Packages.reptor: 0.24 -> 0.25
2ba85f8268e19 par2cmdline-turbo: 1.1.1 -> 1.2.0 (#363927)
fae5d6025cf7b programs/yubikey-touch-detector: add PartOf=graphical-session.target
2190b2449dfc9 go-task: 3.40.0 -> 3.40.1
12c98df8affee ast-grep: 0.30.0 -> 0.31.1
fd21ef2a65f34 nixos/immich: restrict filesystem permissions
91340b18c1b79 python312Packages.safety: 3.2.9 -> 3.2.11 (#363411)
b5e271018c332 google-java-format: 1.25.0 -> 1.25.1
1035bd8668dee python312Packages.fints: 4.2.0 -> 4.2.3
7a1979d03acc7 nomino: 1.3.6 -> 1.3.7
070b61b84396e yubikey-touch-detector: 1.12.0 -> 1.12.2
24420c3050c53 hypnotix: 4.7 -> 4.8
4b2b10f9208c2 opentelemetry-collector-builder: 0.114.0 -> 0.115.0 (#362698)
9409e7eb50e79 vmware-workstation: fix fhsenv version (#363175)
8b3344d4c46f3 automatic-timezoned: 2.0.38 -> 2.0.40 (#363384)
fa9f99048e8b6 ngtcp2: 1.8.1 -> 1.9.1 (#363446)
cb52981ac0751 limine: 8.4.0 -> 8.6.0
23260ba2b3b3e cava: 0.10.2 -> 0.10.3 (#363506)
4290eadbfbcfa imgpkg: 0.43.1 -> 0.44.0 (#363559)
ccda665bc195c mactracker: init at 7.13 (#363615)
0c0b20d6df641 cynthion: 0.1.7 -> 0.1.8 (#363652)
de03128661296 ocamlPackages.utop: 2.14.0 → 2.15.0
b3a8a4ee4a7ea gollama: 1.27.19 -> 1.28.0 (#363709)
8abe81c57283f tmuxPlugins.session-wizard: 1.3.1 -> 1.4.0 (#363718)
99926bf0606a7 vimPlugins.blink-cmp: 0.7.3 -> 0.7.6
7208217d78324 simplex-chat-desktop: 6.1.1 -> 6.2.0 (#364020)
4d419ea06a94d team-list: establish categorization team (#362938)
1e8e59a902d8d scrcpy: 3.0.2 -> 3.1 (#363786)
4e5a66d5210cb xen: 4.16 is EOL
e812c28e811b5 networkmanager-vpnc: 1.2.8 → 1.4.0
1c58a084ab4e9 Merge inkscape: 1.3.2 -> 1.4 (#348253)
b33f750edba5d twinkle: unstable-2023-03-25 -> unstable-2024-20-11
26baeceed3a5a kora-icon-theme: 1.6.1 -> 1.6.2 (#363744)
579d0cfe8b483 lint-staged: 15.2.10 -> 15.2.11
12e421949ea73 httm: 0.43.2 -> 0.44.0
622f8658b4b52 flutter_rust_bridge_codegen: 2.6.0 -> 2.7.0
caab0be8a3182  freeplane: 1.11.14 -> 1.12.8, use Gradle 8 (#358907)
187adc1516900 nats-server: 2.10.22 -> 2.10.23
0fc40be15941f tenere: init at 0.11.2 (#363556)
45344f2de4dde houdini: fix fhsenv version (#363168)
d9b23fc677211 chamber: 3.1.0 -> 3.1.1
ec329c206b6f2 syshud: 0-unstable-2024-11-12 -> 0-unstable-2024-11-25 (#364066)
648124c83b08b quarto: use pandoc 3.5 (#357687)
90175dd11c930 dotnet: improve EOL evaluation errors (#363439)
b4bf891b00321 buffybox: 3.2.0-unstable-2024-11-10 -> 3.2.0-unstable-2024-12-09 (#363812)
e5a456f26f469 nixos/wireguard-networkd: re-enable by default for networkd users
6bc8dcc6308d3 nixos/wireguard-networkd: use systemd credentials for privateKeyFile and presharedKeyFile
d53b472096788 s7: 11.2-unstable-2024-11-02 -> 11.2-unstable-2024-12-10 (#363882)
6073d7e89b862 chromium: 131.0.6778.108 -> 131.0.6778.139
ac5082f8e44e2 syshud: 0-unstable-2024-11-12 -> 0-unstable-2024-11-25
e8df65937267c dotnet: force evaluation of sdk nuget packages
97a25d0b58eb9 slskd: 0.21.4 -> 0.22.0 (#364051)
ea8474c17e52a electron{-source,-bin,-chromedriver}: updates (#363541)
29bc0f7c74f2e mlkit: 4.7.13 -> 4.7.14 (#363747)
7413ed0368adf inkscape-extensions.inkstitch: init at 3.1.0 (#358993)
027b2935ca165 clapgrep: init at 1.3.1 (#360741)
43a8c56bd21d3 mold: 2.34.1 -> 2.35.0 (#363845)
fee3e54a0c217 python312Packages.json-repair: 0.30.2 -> 0.30.3
cf793a6ae02da bun: 1.1.34 -> 1.1.38 (#360759)
6e56d0b5a92cf ocamlPackages.lacaml: 11.0.10 -> 11.1.0 (#360636)
368ac90b38e44 svg2tikz: mark as broken
5a072ae0ed1f0 inkscape: 1.3.2 -> 1.4
b31ee5c7e268c lib2geom: 1.3 → 1.4
d4b61ee6e351e inkscape: add Luflosi as maintainer
989f87745ba2b inkscape: add x123 as maintainer
2928dcaf2918f inkscape: refactor meta
a1761d91f3b08 ocamlPackages.eliom: 11.0.1 -> 11.1.0 (#360550)
c4dfacc96ca15 nixos/wireguard-networkd: disable by default (#364046)
0b3829a843c89 fluidd: 1.30.5 -> 1.31.0 (#360618)
f03f59d6beee1 libdict: 1.0.3 -> 1.0.4 (#360141)
e521d8dda76c3 steam-rom-manager: 2.5.22 -> 2.5.29 (#360521)
6aaf951519cfb joplin-desktop: 3.0.15 -> 3.1.24 (#360508)
cca305f3e3d03 nixos/wireguard-networkd: fix issue link
0022ce1f3510d emacsPackages.lsp-bridge: 0-unstable-2024-11-14 -> 0-unstable-2024-12-09 (#363970)
a93d42e97e71d nixos/wireguard-networkd: disable by default
14281791dcdf7 OWNERS: add leona to jetbrains (#363973)
d12449d076a3e doc/manpage-urls.json: sort alphabetically (#355678)
da3fc64e1a2b4 microfetch: 0.4.1 -> 0.4.2
654ea97112615 libretro.mesen: 0-unstable-2024-06-09 -> 0.9.9-unstable-2024-10-21
45e926207eafb libretro.fmsx: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21
e7a62c7e0973b libretro.gambatte: 0-unstable-2024-10-04 -> 0-unstable-2024-11-29
de523607dbbbb libretro.vba-next: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21
8783dd8fcf651 libretro.o2em: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21
10a40579bfaa4 libretro.genesis-plus-gx: 0-unstable-2024-09-18 -> 0-unstable-2024-11-22
ee85ee8b83630 doc/README.md: Mention the alphabetical sorting in the documentation
f30fc8c81292b libretro.beetle-wswan: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21
b368da407c7ab doc/manpage-urls.json: sort alphabetically
be0d8d7de047d libretro.fceumm: 0-unstable-2024-09-23 -> 0-unstable-2024-11-23
f425ed85dc5ca tana: 1.0.17 -> 1.0.18 (#363483)
22b87b1b7ee22 nixos/bat: init (#350079)
94f605619bf50 python312Packages.python-linkplay: 0.1.0 -> 0.1.1
f0a2b7b6e271d libretro.freeintv: 0-unstable-2024-06-28 -> 0-unstable-2024-10-21
a59f464331a29 libretro.bluemsx: 0-unstable-2024-10-22 -> 0-unstable-2024-12-04
ad12b2652627a nixos/crab-hole: init (#341598)
e6c72076b497a rockcraft: add tabulate to check inputs
778e494d9eb13 python3Packages.craft-parts: 2.1.3 -> 2.1.4
800a740ea8437 python3Packages.craft-archives: 2.0.0 -> 2.0.2
f5e50b74a0d79 treewide: rename python3Packages.debian -> python3Packages.python-debian
bd4a6b9aaec42 nixos/crab-hole: init crab-hole
a50c9800bc775 crab-hole: init at 0.1.10
7c314adf551c3 libvarlink: 23 -> 24 (#363979)
f08f60b8bcddf pkcs11-provider: 0.5 -> 0.6 (#362992)
b5f1e7667d649 simplex-chat-desktop: 6.1.1 -> 6.2.0
79eac16fdad3c moodle: 4.4.3 -> 4.4.4 (#360394)
07a190e7a44fb datalad: fix changed hash from upstream
11c34f6d2cf9c libretro.nestopia: 0-unstable-2024-10-17 -> 0-unstable-2024-12-10
989acfe3c390f Treewide Nix reformat pass 1 [skip treewide] (#322537)
bb8192d2b7233 .git-blame-ignore-revs: Add treewide reformat pass 1 for master,staging{,-next}
4f0dadbf38ee4 treewide: format all inactive Nix files
75d54b468a2a5 renovate: 38.105.2 -> 39.42.4 (#361090)
0850df266a45f maintainers: add NiklasVousten
b32a0943687d2 vimPlugins.avante-nvim: move out to separate directory (#364001)
3887116c00ea3 linux-firmware: 20241110 -> 20241210
5fb01cdab19ba flood: 4.8.2 -> 4.8.5
2440ed4019528 vimPlugins.avante-nvim: move out to separate directory
b93b330c2927f ocamlPackages.mdx: 2.4.1 → 2.5.0 (#363210)
037038b161ce1 ocamlPackages.mirage-crypto-rng-eio: init at 1.1.0 (#362377)
a0f3c68ab093e zf: format, update (#349644)
68cf0d86c9dde python312Packages.pysvn: 1.9.22 -> 1.9.23 (#363066)
15d88de94d0ff pdfium-binaries: 6872 -> 6886 (#363996)
9bdb97c052d5d otadump: init at 0.1.2
9ad61cfc19c1f nixos/plymouth: add support for logo in catppuccin (two-step) theme (#304045)
cdd6827c93c09 pdfium-binaries: 6872 -> 6886
3a068accfd4b4 nixos/bat: init bat module
3e3caa5f733ca python312Packages.mizani: 0.13.0 -> 0.13.1
66676a8096a25 ipxe: 1.21.1-unstable-2024-09-27 -> 1.21.1-unstable-2024-12-03 (#363976)
adb0e106b54f5 libvmi: 0.14.0-unstable-2024-09-18 -> 0.14.0-unstable-2024-11-06 (#363436)
02db5ff29455c python312Packages.aioacaia: 0.1.10 -> 0.1.11
7e4fef772d1a5 python312Packages.sigstore-rekor-types: 0.0.17 -> 0.0.18
d6e107169b795 ArchiSteamFarm: 6.0.8.7 -> 6.1.0.3 (#361305)
38eff9f4677ea python312Packages.reolink-aio: 0.11.4 -> 0.11.5
63a21b156fe49 sonarr: 4.0.10.2544 -> 4.0.11.2680 (#362549)
b3392e73a0e5c renovate: 38.105.2 -> 39.42.4
9a33d3639d795 libvarlink: 23 -> 24
de18c74d31da8 opencomposite: 0-unstable-2024-10-28 -> 0-unstable-2024-11-11 (#363875)
dea044a1ef94f Firefox: 133.0 -> 133.0.3; 128.5.0esr -> 128.5.1esr (#363898)
2e6d5d71fe89b crates-tui: 0.1.22 -> 0.1.23 (#363892)
6bb50c992f7a0 OWNERS: add leona to jetbrains
dc797c902e035 jetbrains.plugins: fix adding JAR plugins (#321247)
9c8b1be6ecd49 emacsPackages.lsp-bridge: 0-unstable-2024-11-14 -> 0-unstable-2024-12-09
1caf076d6ba46 osu-lazer: add native Wayland option (#363908)
e4206aafdd899 nixos-option: link to nixos test
55812b8325dd8 ipxe: 1.21.1-unstable-2024-09-27 -> 1.21.1-unstable-2024-12-03
f6296711744ed polarity: 0-unstable-2024-11-15 -> latest-unstable-2024-12-09 (#363810)
fa559bd56293c redis - complete lib refactor (#363775)
f6f3c4e74c61b python312Packages.plugwise: 1.6.2 -> 1.6.3
bbfaa21171ff2 checkov: 3.2.332 -> 3.2.334
f4e95c30fee74 python312Packages.mypy-boto3-workspaces: 1.35.68 -> 1.35.77
10e041b63ae2e python312Packages.mypy-boto3-medialive: 1.35.23 -> 1.35.77
3099086d96332 python312Packages.mypy-boto3-keyspaces: 1.35.65 -> 1.35.77
a6f1472f3eb05 python312Packages.mypy-boto3-ecs: 1.35.72 -> 1.35.77
e333ea0d3f485 python312Packages.mypy-boto3-ec2: 1.35.72 -> 1.35.77
72448bb723181 python312Packages.mypy-boto3-cognito-idp: 1.35.68 -> 1.35.77
9c6fb1cf3a140 python312Packages.mypy-boto3-appsync: 1.35.67 -> 1.35.77
00383674bd2b8 python312Packages.pytest-codspeed: 3.0.0 -> 3.1.0
c4329f867fd95 python312Packages.pvo: refactor
ffe0849a4ac73 python312Packages.pvo: 2.1.1 -> 2.2.0
f958d5c5f9b88 python312Packages.polyswarm-api: 3.10.0 -> 3.11.0
0ca9593b2dc19 lutris: fix Dolphin and RPCS3 AppImage; add rapiteanu to maintainer list (#350535)
4b4de2752fe81 python312Packages.python-openstackclient: add requests socks support (#363651)
95a592d949e80 lutris: 0.5.17 -> 0.5.18 (#361017)
f74bd181b828c gedit: 48.0 → 48.1
a5d767c91d7b7 dotnet/combine-packages: don't inherit meta from cli
6e180e8e5c890 dotnet/wrapper: don't inherit meta from unwrapped
512ea5388a0a5 nexusmods-app: fix passthru tests (#354018)
95776b6965827 python312Packages.speechrecognition: 3.11.0 -> 3.12.0
5ed339ff57695 python312Packages.groq: init at 0.13.0
389452a51679a Merge: nextcloud29: 29.0.9 -> 29.0.10, update apps (#363232)
31bfd9cc45758 fiji: add wrapGAppsHook (#363577)
38c02e8952338 batman-adv: 2024.3 -> 2024.4
2bd2fb9385031 kotlin-native: 1.9.23 -> 1.9.24 (#309852)
c44b4dac61951 reindeer: 2024.10.28.00 -> 2024.12.09.00 (#363848)
60aa974e92754 python312Packages.pyecharts: 2.0.6 -> 2.0.7 (#363900)
514819a5a4e18 amber-secret: 0.1.6 -> 0.1.7 (#363905)
7d6f16bf6f3a4 myks: 4.2.4 -> 4.2.5 (#363925)
6d78a7d119caf hpp2plantuml: 0.8.5 -> 0.8.6 (#363931)
fde11b1cf319a ldeep: 1.0.76 -> 1.0.77 (#363785)
3a05e34d31285 sd-local: 1.0.55 -> 1.0.56 (#363803)
632e2ce975fde librime-octagram: 0-unstable-2024-02-05 -> 0-unstable-2024-11-18 (#363830)
d1c4cec15ddd3 fmtoy: 0-unstable-2024-06-11 -> 0-unstable-2024-11-13 (#363833)
c1a7bb35bdb93 ironicclient: 5.8.0 -> 5.9.0 (#363857)
3a00cc2aec2f8 manilaclient: 5.0.0 -> 5.1.0 (#363856)
d1d71fbf93ece cht-sh: 0-unstable-2022-04-18 -> 0-unstable-2024-11-13 (#363837)
e111a62f12179 granted: 0.36.3 -> 0.37.0 (#363838)
1ce183eb09238 supabase-cli: 2.0.0 -> 2.0.6 (#363843)
e23c0a74b27eb git-chain: 0-unstable-2024-08-09 -> 0-unstable-2024-11-16 (#363846)
25be2793eb6ed goimports-reviser: 3.7.4 -> 3.8.2 (#363674)
74adff8ef43f3 blasfeo: 0.1.4 -> 0.1.4.1 (#363678)
044895d6f437e python312Packages.oci: 2.135.1 -> 2.139.0 (#363687)
51da351a339c9 havn: 0.1.16 -> 0.1.17 (#363688)
00b7e44cc478d cargo-binstall: 1.10.13 -> 1.10.16 (#363692)
8e926768c008d harsh: 0.10.4 -> 0.10.6 (#363698)
56369869fb9c6 python312Packages.nbdev: 2.3.32 -> 2.3.34 (#363717)
995e3eeda3e1b tideways-daemon: 1.9.22 -> 1.9.28 (#363728)
779f79a8a7329 seilfahrt: 2.1.0 -> 2.1.1 (#363743)
aa67c6dc1e3d7 inv-sig-helper: 0-unstable-2024-09-24 -> 0-unstable-2024-12-10 (#363858)
be7b77d262408 troubadix: 24.10.2 -> 24.11.0 (#363752)
46bef816700e1 gfold: 4.5.0 -> 4.5.1 (#363772)
b15a5903efc65 rednotebook: 2.35 -> 2.36 (#363576)
394b3af0f2a67 prometheus-pve-exporter: 3.4.5 -> 3.4.6 (#363580)
cd311045fb38e minigalaxy: 1.3.0 -> 1.3.1 (#363586)
9ac65ad814f5d stylua: 2.0.1 -> 2.0.2 (#363591)
67c3715efc87b k8sgpt: 0.3.46 -> 0.3.48 (#363594)
dcec25d700a2e steampipePackages.steampipe-plugin-aws: 1.3.0 -> 1.4.0 (#363606)
0f94350e2bf36 vendir: 0.42.0 -> 0.43.0 (#363613)
faf4d1624dd0f marcel: 0.30.1 -> 0.30.4 (#363624)
115f8bf36d640 elements: 23.2.1 -> 23.2.4
f638cca879d81 libretro.mrboom: 0-unstable-2024-07-01 -> 5.5-unstable-2024-10-21 (#363627)
1302d38697899 libretro.snes9x: 0-unstable-2024-10-28 -> 1.63-unstable-2024-12-08 (#363630)
21c3faa7b7e89 ttdl: 4.5.0 -> 4.7.0 (#363631)
23796a7fa03c4 libretro.stella: 0-unstable-2024-11-17 -> 7.0-unstable-2024-12-09 (#363635)
47fea594d602b doppler: 3.69.2 -> 3.70.0 (#363641)
171b17877c6bd powerpipe: 1.0.0 -> 1.0.1 (#363673)
4a6cfdf711eb7 osu-lazer{,-bin}: add native Wayland option
fe78af832d7d2 gnome-extensions-cli: 0.10.3 -> 0.10.4 (#363477)
93222392c51e0 hpp2plantuml: 0.8.5 -> 0.8.6
f7c5e2d38d933 xemu: 0.7.133 -> 0.7.134 (#363488)
45eb78f2e71a6 minify: 2.21.1 -> 2.21.2 (#363495)
02c7d1852dd1a abctl: 0.22.0 -> 0.23.0 (#363502)
4b772864b2abe python312Packages.pytest-examples: 0.0.14 -> 0.0.15 (#363515)
a68d6ce6f58ca python312Packages.pyomo: 6.8.1 -> 6.8.2 (#363516)
84cc66198e2ac kor: 0.5.6 -> 0.5.7 (#363921)
776c1a01e5aba python312Packages.pytelegrambotapi: 4.24.0 -> 4.25.0 (#363517)
2150053cd700f jbang: 0.120.4 -> 0.121.0 (#363520)
cdb5bd9f4fe06 files-cli: 2.13.180 -> 2.13.202 (#363527)
47ad8bd36a427 pulsarctl: 4.0.0.4 -> 4.0.0.8 (#363534)
2c816dd720a52 steampipe: 1.0.0 -> 1.0.1 (#363542)
03dd6d8714a73 cowsay: 3.8.3 -> 3.8.4 (#363543)
ba46e8d656b04 tile38: 1.33.4 -> 1.34.0 (#363806)
c41eb63ffb4b6 mmv: 2.8 -> 2.10 (#363551)
b36e3495b2d6c python312Packages.xonsh: 0.18.4 -> 0.19.0 (#363608)
ed151d25a0292 par2cmdline-turbo: 1.1.1 -> 1.2.0
4d60723b1f1fe clickhouse-backup: 2.6.3 -> 2.6.4 (#363564)
1ebbcd51220e6 okteto: 3.1.0 -> 3.2.0 (#363582)
16725a4368956 myks: 4.2.4 -> 4.2.5
d15e9b6a35cb9 Revert "nixos-option: cleanup and linting" (#363919)
ba8c043270af5 Revert "nixos-option: cleanup and linting"
2eccf3129ce1d kryptor: .NET 6 -> 8 (#363629)
0101e48c8f2e2 home-assistant-custom-lovelace-modules.sankey-chart: 3.5.0 -> 3.6.0 (#363916)
58c2c34d575c4 kor: 0.5.6 -> 0.5.7
df8e6f7487dff system/activation: mention deps attr in activationScripts example
4b45fe7c20bd4 jaq: 1.6.0 -> 2.0.1
f23d497010306 watchlog: 1.240.0 -> 1.242.0 (#363907)
e37753fdff03b exo: 0-unstable-2024-11-30 -> 0-unstable-2024-12-07 (#363899)
508da8da374c5 devbox: 0.13.6 -> 0.13.7 (#362642)
f67f8eef13f19 fiji: add wrapGAppsHook
4cbd64d0a6ae4 watchlog: 1.240.0 -> 1.242.0
7d3031758357c amber-secret: 0.1.6 -> 0.1.7
0acd6eb6eec33 Enable HDMI out on platforms using the RK3588 lineup of SoCs. (#363886)
0e8be3827d029 ghidra-extensions.findcrypt: 3.0.2 -> 3.0.3 (#363311)
3dc6caab6c00a wireshark: fix build on darwin (#363544)
411acbe5313d9 runescape: fix fhsenv version (#363179)
9d71611c9fc0a firefox-esr-128-unwrapped: 128.5.0esr -> 128.5.1esr
6c7a4c00693a1 firefox-bin-unwrapped: 133.0 -> 133.0.3
b0d27dc7ffebf firefox-unwrapped: 133.0 -> 133.0.3
43c18a13d3a0f python312Packages.pyecharts: 2.0.6 -> 2.0.7
0d6402bcf381f emulationstation-de: 3.0.2 -> 3.1.0 (#361774)
480908f538c64 exo: 0-unstable-2024-11-30 -> 0-unstable-2024-12-07
0b9587a2cabde chance: 4.0.0 -> 4.0.1 (#363827)
d1b730bae1131 discord: update stable and canary (#363874)
56dc1ca1ac4b0 scooter: 0.1.2 -> 0.2.1 (#363590)
523c8dc3f3a7e netbird-ui: 0.33.0 -> 0.34.1 (#363358)
5009729244e0b sftpgo: 2.6.3 -> 2.6.4 (#363513)
a89ad69cd90cf python312Packages.yte: 1.5.4 -> 1.5.5
dd4e8f555eee7 python312Packages.tencentcloud-sdk-python: 3.0.1277 -> 3.0.1278
de962b9056d69 python312Packages.nimfa: fix build (#363065)
acaee51228277 nixos/redmine: Change type of services.redmine.stateDir to `path` (#363430)
5c30302cfcb44 flameshot: 12.1.0-unstable-2024-09-01 -> 12.1.0-unstable-2024-12-03 (#362828)
861ea51edd978 crates-tui: 0.1.22 -> 0.1.23
5a64b8dff9026 flutter_rust_bridge_codegen: init a 2.6.0 (#356576)
4e3c8d646ab35 cargo-temp: 0.2.22 -> 0.3.0 (#362635)
b98522bc0f0e2 amdgpu_top: 0.9.2 -> 0.10.0 (#363569)
f891215fb0c82 cri-tools: 1.31.1 -> 1.32.0 (#363561)
8a2b5358bec7c sqlite-vec: 0.1.5 -> 0.1.6 (#363518)
92365df4b4419 stm32cubemx: 6.12.1 -> 6.13.0 (#363379)
55c720adb5244 picocrypt: 1.44 -> 1.45 (#363345)
7243daf549a0b qtscrcpy: 3.0.0 -> 3.0.1 (#363525)
bf02ddbadb893 pkgsite: 0-unstable-2024-12-06 -> 0-unstable-2024-12-09 (#363811)
dab510a2909f9 python3Packages.zenoh: init at 1.0.3 (#361227)
d150e2b28470e Enable HDMI out on platforms using the RK3588 lineup of SoCs.
45135b31a8782 json-schema-for-humans: fix build and update (#362898)
ff6ad0470c31d git-repo: 2.48 -> 2.49.3 (#363817)
56e36e8d5763d python312Packages.msticpy: 2.14.0 -> 2.15.0
f79961ac201f4 python312Packages.django-q: use build-system/dependencies, correct us… (#363734)
2e1411dc2f28a s7: 11.2-unstable-2024-11-02 -> 11.2-unstable-2024-12-10
c12fdf4746f54 python312Packages.multiscale-spatial-image: 2.0.1 -> 2.0.2 (#363271)
3cb8d7cfd6e53 tela-circle-icon-theme: 2024-04-19 -> 2024-11-15 (#363465)
0091ba1a83a42 python312Packages.qbittorrent-api: 2024.10.68 -> 2024.11.70 (#363260)
efa8363cad3e5 fabric-ai: 1.4.99 -> 1.4.119 (#363401)
15e41f94ceadd clash-meta: 1.18.10 -> 1.19.0 (#363558)
0693a1e00163d codeql: 2.19.3 -> 2.19.4 (#363359)
5ae4a39e9b829 databricks-cli: 0.234.0 -> 0.236.0 (#363361)
9a84ebcd08a7e alacritty-theme: 0-unstable-2024-10-24 -> 0-unstable-2024-12-02 (#363840)
e5b42a5443632 flclash: 0.8.69 -> 0.8.70 (#363383)
18fdf41fdc89f wasm-tools: 1.221.0 -> 1.221.2 (#363406)
f7640ef9c75b0 carapace: 1.0.7 -> 1.1.0 (#363422)
e683434394b20 qownnotes: 24.11.2 -> 24.12.1 (#363445)
865ea49927b84 python312Packages.nicegui: init at 2.5.0 (#352189)
1553bb3adb54e python312Packages.pymodbus: 3.7.4 -> 3.8.0 (#363570)
26446c6ba6168 python312Packages.withings-sync: 4.2.6 -> 4.2.7 (#363571)
e5a3c6dcb9b53 python312Packages.pymiele: 0.1.7 -> 0.2.0 (#363592)
84acc9d36b0c9 python312Packages.django-filer: 3.3.0 -> 3.3.1 (#363715)
3b18c78ffee0a badger: 4.4.0 -> 4.5.0 (#363703)
cc85c95c0d0c7 discord-canary: 0.0.535 -> 0.0.538
ac44b8c010d08 discord: 0.0.76 -> 0.0.77
a22cbab59462f deepin.dde-gsettings-schemas: remove deepin-movie-reborn (#363860)
fe8846dad6e2c opencomposite: 0-unstable-2024-10-28 -> 0-unstable-2024-11-11
cf2843b6fb79f pkgsCross.x86_64-darwin.discord-canary: 0.0.647 -> 0.0.650
763b0b6d5e257 pkgsCross.x86_64-darwin.discord: 0.0.328 -> 0.0.329
d10eccec9d957 Kernel updates for 2024-12-09 (#363839)
93ae5fa190e63 lutris: add rapiteanu to maintainer list
0901bc2b615f4 jaq: format
7861ca184d5c7 scdl: 2.12.1 -> 2.12.3
592b1a2de0e84 python3Packages.django-mfa3: Enable failing test (#362537)
f892b96d80bbd platformsh: 5.0.22 -> 5.0.23 (#363654)
cd0c9867dee60 upsun: 5.0.22 -> 5.0.23 (#363657)
dbf9816617347 deepin.dde-gsettings-schemas: remove deepin-movie-reborn
9453e4f68aa4e inv-sig-helper: 0-unstable-2024-09-24 -> 0-unstable-2024-12-10
b9cbab7e1bca2 ollama: 0.5.0 -> 0.5.1 (#363714)
22b2472342bf4 healthchecks: 3.7 -> 3.8 (#363794)
1426c5148bc7b c3-lsp: 0.3.2 -> 0.3.3 (#363557)
5fdc96526d28a ironicclient: 5.8.0 -> 5.9.0
50399d19602e7 vcpkg: 2024.10.21 -> 2024.11.16 (#363143)
24d9cb7296959 lutris: fix Dolphin
5dc20e9ede900 lutris: fix RPCS3 AppImage
ec121df92aa4e ci/eval: fix compare label assignment (#363851)
e6b1c33d5ca94 manilaclient: 5.0.0 -> 5.1.0
214cb79aa634a ci/eval: fix compare label assignment
eaae2eaec74b7 subversion: 1.14.4 -> 1.14.5 (#363461)
2e0d3d902efde kgeotag: 1.6.0 -> 1.7.0 (#363769)
000c7bc616d53 audiobookshelf: 2.17.4 -> 2.17.5 (#363437)
feb8a718f6c43 reindeer: 2024.10.28.00 -> 2024.12.09.00
db823200e66aa vimPlugins: update on 2024-12-09 (#363741)
7769e0dba9dd6 python312Packages.llama-cpp-python: 0.3.1 -> 0.3.2 (#363339)
0d4ea96a076dc sccache: 0.8.2 -> 0.9.0 (#363771)
6b8864a8ce783 meli: 0.8.9 -> 0.8.10 (#363721)
e026c552a37b3 cargo-about: 0.6.5 -> 0.6.6 (#363647)
e7ce8cf7eb61b git-chain: 0-unstable-2024-08-09 -> 0-unstable-2024-11-16
147930bc02be5 python312Packages.llama-cpp-python: mark as broken on darwin
ecc1ae01a415b python312Packages.llama-cpp-python: 0.3.1 -> 0.3.2
80643438112fa python312Packages.langgraph*: 20241206 update (#362648)
bb23268100aeb supabase-cli: 2.0.0 -> 2.0.6
be9283e000374 rye: 0.42.0 -> 0.43.0 (#363798)
ee1abbbe5daaf lite-xl: update to version 2.1.7 (#362925)
f49af0734f64d rye: 0.42.0 -> 0.43.0
2470715779d49 alacritty-theme: 0-unstable-2024-10-24 -> 0-unstable-2024-12-02
d76dafcd29ff6 linux_6_6: 6.6.63 -> 6.6.64
2bb25ed39c775 linux_6_12: 6.12.3 -> 6.12.4
51a19038a275b linux_testing: 6.13-rc1 -> 6.13-rc2
cd34221a4b06d emiluaPlugins.this-thread: 1.0.0 -> 1.0.1 (#363051)
27d9c1fd5c4c5 shntool: 3.0.10 -> 3.0.10+git20130108.4ca41f4-1 (#357635)
134181477807f gamescope: 3.15.14 -> 3.15.15 (#363795)
2f8e672b3d292 granted: 0.36.3 -> 0.37.0
09beb24a34375 cht-sh: 0-unstable-2022-04-18 -> 0-unstable-2024-11-13
940f8001641b2 kanidm: fix 1.3 build and permit hydra to build it (#363662)
a7aedc9802c07 fmtoy: 0-unstable-2024-06-11 -> 0-unstable-2024-11-13
90f44b313c7a9 nix: remove fixed CVE-2024-27297 check
0e59e7b7d81cc nix: simplify version checks
9e46b6e6e0b49 meteor-git: 0.23.1 -> 0.24.2 (#363782)
8eafe1f165e5b perkeep: 0.11 -> 0-unstable-2024-04-23 (#360175)
68327e14007c1 librime-octagram: 0-unstable-2024-02-05 -> 0-unstable-2024-11-18
c146818be28be nixos/services.redis: complete removal of with lib;
09f15588e4579 chance: 4.0.0 -> 4.0.1
2766b6227a139 ocm: 0.1.73 -> 1.0.2 (#361805)
3122317c2c36a liblouis: 3.31.0 -> 3.32.0
b53f626e0cc74 jenkins: 2.462.3 -> 2.479.2 (#360869)
0675118dbf11e lowdown: 1.2.0 -> 1.3.1 (#360988)
a42171f34dc72 ethercat: 1.6.1 -> 1.6.2 (#363796)
5a4fbaa3290ec beeper: 3.109.1 -> 3.110.1 (#361944)
daba6752a280f nebula: 1.9.4 -> 1.9.5 (#362508)
631ac8b6b44d1 python312Packages.ibis-framework: add missing `packaging` dep to duckdb optional-dependencies (#348856)
1d6ac44414666 lean4: 4.10.0 -> 4.11.0 (#354669)
e7cc50236e543 application-title-bar: 0.7.5 -> 0.7.7 (#363774)
8300b2bc9f1e8 github-backup: 0.46.0 -> 0.47.0 (#363784)
7e2b9bfc30beb telegraf: 1.32.3 -> 1.33.0 (#363788)
7abfc580ba2ad git-repo: 2.48 -> 2.49.3
d00f5020b0078 keycloak: 26.0.6 -> 26.0.7 (#361443)
a991bdc4640e5 telegram-desktop: 5.8.2 -> 5.9.0 (#361785)
43785144de5a6 perlPackages.FinanceQuote: 1.63 -> 1.64
81bf92cde1400 v2ray-domain-list-community: 20241112092643 -> 20241210004721 (#363808)
6293cdcc01f92 python312Packages.ocrmypdf: 16.6.2 -> 16.7.0 (#363685)
41a475a07bc69 buffybox: 3.2.0-unstable-2024-11-10 -> 3.2.0-unstable-2024-12-09
203236d4998c7 pkgsite: 0-unstable-2024-12-06 -> 0-unstable-2024-12-09
33a6a79a8da12 polarity: 0-unstable-2024-11-15 -> latest-unstable-2024-12-09
8ba56520bbe36 genemichaels: 0.1.21 -> 0.5.7 (#363473)
dda087e1594fa calibre: add image optimization programs (#362822)
e2f4abd96cf82 sequin: 0.2.0 -> 0.3.0 (#363764)
fc5e9aa247e32 pulumi-esc: 0.11.0 -> 0.11.1 (#362417)
1920452caaa73 hunspellDicts.et_EE: init at 20030606 (#307820)
fe540afbe258c gnome-secrets: 9.6 -> 10.3 (#356025)
9bad60f0cc1a9 linux-wallpaperengine: fix zygote could not fork error (#362774)
0779f3345bfaa git-town: 16.4.1 -> 16.7.0 (#362522)
cd57074bf3e57 python312Packages.flake8-bugbear: 24.8.19 -> 24.10.31 (#363062)
add2939485319 atac: 0.18.0 -> 0.18.1 (#362862)
1ea7633847efc nixos-option: cleanup and linting (#355748)
634ffca706c27 buf: 1.47.0 -> 1.47.2 (#363448)
b019e5868391c ginkgo: 2.21.0 -> 2.22.0 (#362969)
4019f043e81b5 calls: 46.3 -> 47.0 (#363157)
9f9cacfac9e49 marktext: build from source (#354253)
20d4125ac010d cirrus-cli: 0.133.0 -> 0.133.2 (#363702)
61da46c26431d chiaki-ng: 1.9.1 -> 1.9.2 (#363120)
31cada6f7d6bb xpipe: 13.2 -> 13.4.3 (#363309)
36976ac398b60 cri-o-unwrapped: 1.31.2 -> 1.31.3 (#363121)
a424d075fb3d2 changedetection-io: 0.47.06 -> 0.48.01 (#362824)
28a1c68285f1f gvproxy: 0.8.0 -> 0.8.1 (#362475)
afb5947eed0bd fastly: 10.17.0 -> 10.17.1 (#363403)
d630a1721df29 python312Packages.cashews: 7.3.1 -> 7.4.0 (#360679)
1b37580c708aa simdjson: 3.10.1 -> 3.11.0 (#362398)
ce3ae1e3cf149 cloudflare-dynamic-dns: 4.3.9 -> 4.3.11 (#363363)
4cb54ba6f1f44 deja-dup: 46.1 -> 47.0 (#362053)
b3832ef1b4219 gobgpd: 3.30.0 -> 3.32.0 (#363250)
d251b7907899e gobgp: 3.30.0 -> 3.32.0 (#363249)
2fbb4a456d3b2 v2ray-domain-list-community: 20241112092643 -> 20241210004721
4b5728a2aae73 katana: 1.1.1 -> 1.1.2 (#363727)
3f21cf55338d1 tile38: 1.33.4 -> 1.34.0
78ba8eabb4b52 python312Packages.example-robot-data: 4.1.0 -> 4.2.0
917ed0b6d7d22 versitygw: 1.0.8 -> 1.0.9
a6595a5ab8d82 sd-local: 1.0.55 -> 1.0.56
5b4eab908b5c6 htmldoc: 1.9.19 -> 1.9.20 (#363737)
af682f39a7dd6 team-list: establish categorization team
81e3b54e57e08 wcurl: 2024.07.10 -> 2024.12.08 (#363562)
a8e51aa44ef06 ethercat: 1.6.1 -> 1.6.2
76a84ecc52b3c gamescope: 3.15.14 -> 3.15.15
2e28f1f82e1ff healthchecks: 3.7 -> 3.8
b15b219eefabd Thunderbird: 132.0.1 -> 133.0; 128.4.3esr -> 128.5.1esr (#363773)
a6433e9db82ae ktor-cli: 0.3.0 -> 0.3.1 (#363478)
3318aa52de01f nixos/git-worktree-switcher: init git-worktree-switcher
da5e1da65bf6d terraform-providers.azurerm: 4.10.0 -> 4.13.0
e797337fb5a7e terraform-providers.kubernetes: 2.33.0 -> 2.34.0
1f09e31ceb0a8 terraform-providers.selectel: 5.4.0 -> 6.0.1
10dd39aba95fd terraform-providers.avi: 22.1.6 -> 30.2.2
83da268002504 wechat-uos: fix fhsenv version (#363162)
3477e197381e8 scrcpy: 3.0.2 -> 3.1
17121bf6202f7 git-worktree-switcher: init at 0.2.4
2ef9c503d7530 ldeep: 1.0.76 -> 1.0.77
72c51d51f42a0 github-backup: 0.46.0 -> 0.47.0
a9d363679d977 telegraf: 1.32.3 -> 1.33.0
bb0a53c74e7b3 langgraph*: use `tag` option to `fetchFromGitHub`
d0214f2bd7e30 meteor-git: 0.23.1 -> 0.24.2
105e61ab03958 langgraph-checkpoint-*: Relax dependency on langgraph-checkpoint
3535716d80664 python3Packages.langgraph-checkpoint-postgres: 2.0.2 -> 2.0.8
2f0cfddd95344 python3Packages.langgraph-checkpoint: 2.0.2 -> 2.0.8
63553f304931e python3Packages.langgraph-sdk: 0.1.35 -> 0.1.43
a15abb34628a8 python3Packages.langgraph: 0.2.43 -> 0.2.56
4b873163c34e9 marwaita-red: 22.2 -> 23 (#363251)
6b06df4137cb6 marwaita-yellow: 20.3.1 -> 23 (#363244)
795fc742f5202 screego: 1.11.1 -> 1.11.2 (#363603)
e2c6430a396d4 thunderbird-128-unwrapped: 128.4.3esr -> 128.5.1esr
b5b6587eae9dd thunderbird-latest-unwrapped: 132.0.1 -> 133.0
7d196fbefee0e python312Packages.albumentations: 1.4.20 -> 1.4.22 (#363443)
a8e8e5a27493d gfold: 4.5.0 -> 4.5.1
cb8d9080d9922 sccache: 0.8.2 -> 0.9.0
fa2fcb868f909 kgeotag: 1.6.0 -> 1.7.0
ae2e628089449 sequin: 0.2.0 -> 0.3.0
2f3930f291dca {ares,bsnes-hd,higan}: update (#353102)
0311f6c40e0a7 treewide/nixos: remove `with lib;` part 5 (#335647)
47f1ce82e5d33 bird: 2.15.1 -> 2.16 (#362997)
e7b93f44dcf60 kryptor: add maintainer gepbird
1f93aee30f4d5 kryptor: add version checking
2d8de12e2d4c1 kryptor: add update script
013e057567518 ktailctl: 0.18.1 -> 0.18.2 (#363671)
a4e756888c3b8 nixos/mailman: increase uwsgi buffer size (#359037)
248081c472925 nixos/caddy: add environmentFile option (#363694)
9268e3f2c337a freefilesync: 13.8 -> 13.9 (#363726)
daa80365f5a8b cunicu: 0.5.53 -> 0.5.65 (#363605)
756a7e1169404 tinty: init at 0.23.0 (#363568)
d298ddec02bad github-runner: use finalAttrs to make it possible to override the version (#363733)
128bd7f9742a0 equicord: 1.10.6 -> 1.10.8 (#363462)
ecaa6df0629c1 higan: 115-unstable-2024-02-17 -> 115-unstable-2024-09-04
ef169558cd630 higan: refactor
6a1c2b2dbac42 higan: remove darwin references
e9a373340f92c bsnes-hd: 10.6-beta -> 10.6-unstable-2024-10-21
3a9d7f9567c73 bsnes-hd: refactor
f5820ce82761b bsnes-hd: migrate to by-name
700f9e5039cf0 bsnes-hd: use `apple-sdk_11`
7448a92e30795 ares: refactor
5e67300be4238 ares: migrate to by-name
aa5eac62ca2a1 ares: use `apple-sdk_11`
6b37f91a864cc python312Packages.pyexploitdb: 0.2.57 -> 0.2.58 (#363567)
07b609f199aad python312Packages.tencentcloud-sdk-python: 3.0.1275 -> 3.0.1277 (#363579)
ecf020711c52a python312Packages.dirigera: 1.2.1 -> 1.2.2 (#363583)
0425490f47788 python312Packages.asyncinotify: 4.1.0 -> 4.2.0 (#363584)
c8f9310748d5d troubadix: 24.10.2 -> 24.11.0
314edfd2d5dcc ankama-launcher: 3.12.26 -> 3.12.27 (#363713)
5d11e4f62a7e5 matomo_5: 5.1.1 -> 5.1.2 (#363621)
d34a8ecc24aab mlkit: 4.7.13 -> 4.7.14
6e984ab74f3a5 python312Packages.minari: 0.5.1 -> 0.5.2 (#363623)
79279db44aa49 rust-analyzer-unwrapped: 2024-11-11 -> 2024-12-02 (#363416)
fd12a39f61f72 kora-icon-theme: 1.6.1 -> 1.6.2
b390877d279c4 vimPlugins.nvim-treesitter: update grammars
c51b5d62cdb45 vimPlugins: update on 2024-12-09
10e95f3d0ae85 nodePackages.vls: drop
033d2e3a6a0a6 freeplane: use Gradle 8
15a83f8b26aed freeplane: 1.11.14 -> 1.12.8
27415e8e9c68e seilfahrt: 2.1.0 -> 2.1.1
1434a1b1d4f9b ldapnomnom: 1.4.1 -> 1.5.1 (#363033)
52cca64c3cdc0 nginxMainline: 1.27.2 -> 1.27.3 (#360056)
d2652e05e9bc1 octoscan: 0.1.2 -> 0.1.3 (#362857)
c17b4733f4cef python312Packages.django-q: use build-system/dependencies, correct used build-system
46ba3763bb1e2 chezmoi: 2.53.1 -> 2.55.0 (#363099)
d1b054a1ae40a lefthook: 1.8.1 -> 1.9.0 (#362684)
fcccacf7c8d21 Merge gnomeExtensions: auto-update (#361400)
bde7bfa9915d5 brave: 1.73.91 -> 1.73.97 (#363052)
513129f33fa99 yabasic: 2.90.4 -> 2.90.5 (#361056)
ed3ba5bcadcbc tideways-daemon: 1.9.22 -> 1.9.28
787e9af16340b meli: 0.8.9 -> 0.8.10
038eb3d12b450 tmuxPlugins.session-wizard: 1.3.1 -> 1.4.0
50bc93ce738d1 esphome: fix font component support; 2024.11.2 -> 2024.11.3; platformio: 6.1.15 -> 6.1.16 (#363236)
a37e778bd5466 build(deps): bump korthout/backport-action from 3.0.2 to 3.1.0 (#337448)
5ae7ef9ba8f13 python312Packages.nbdev: 2.3.32 -> 2.3.34
37da6093522bc nixos/k3s: add nftables to Path of k3s service (#360796)
01cda5c4b62d9 ollama: 0.5.0 -> 0.5.1
54edb58943fce python312Packages.django-filer: 3.3.0 -> 3.3.1
f9f59197478b3 homepage-dashboard: 0.9.12 -> 0.9.13 (#363697)
4da7e8106a841 mobilizon: 4.1.0 -> 5.1.0
db86c68dde796 river: 0.3.5 -> 0.3.6 (#363669)
87def1d484d54 inform6: 6.42-r4 -> 6.42-r6 (#361360)
18518e12136ed rsyslog-light: 8.2408.0 -> 8.2412.0 (#361644)
4f93c8ab47587 mmsd-tng: 2.6.1 -> 2.6.2 (#361344)
5a01cfa30e6cd java-service-wrapper: 3.5.59 -> 3.5.60 (#361376)
1ca6aaacc6214 ankama-launcher: 3.12.26 -> 3.12.27
80554728cfbc3 argocd: 2.12.6 -> 2.13.1 (#360628)
bb50811bd3671 gollama: 1.27.19 -> 1.28.0
8b9b72e81521e sendme: 0.18.0 -> 0.19.0 (#360854)
9b3ac1df80c23 dumbpipe: 0.18.0 -> 0.20.0 (#360856)
8153ad4458f0d nixos/librenms: order librenms-setup after network.target
904fabb9ab702 wcslib: 8.3 -> 8.4 (#361224)
cbc56c8d5bccb eid-mw: 5.1.19 -> 5.1.21 (#361266)
c19c1334db8da tqsl: 2.7.3 -> 2.7.5 (#361209)
22f827a64439c gwyddion: 2.66 -> 2.67 (#361274)
ef904439e7675 debianutils: 5.20 -> 5.21 (#361293)
23c1faaff6115 ci/eval: re-implement compare in nix (#362844)
06c1654169416 uwsgi: 2.0.27 -> 2.0.28 (#361268)
563c8a32c08b7 keepalived: 2.3.1 -> 2.3.2 (#361280)
e950436be2c14 hsqldb: 2.7.3 -> 2.7.4 (#361296)
256591515b0b7 kubernetes-polaris: 9.5.0 -> 9.6.0 (#360873)
f8d7c24657788 genymotion: 3.7.1 -> 3.8.0 (#361267)
3979765270db0 istioctl: 1.23.2 -> 1.24.1 (#360566)
0da8ff0a7a8e3 converseen: 0.12.2.3 -> 0.12.2.4 (#360877)
b2a15ae45cf87 badger: 4.4.0 -> 4.5.0
c8208b913b024 avalanchego: 1.12.0-initial-poc.6 -> 1.12.0 (#360525)
87b5e76c193a0 harmonia: 1.0.2 -> 2.0.0 (#362948)
16970f5a0fc5c mark: 11.2.0 -> 11.3.0 (#360764)
07eb7f52144d8 xfsprogs: 6.11.0 -> 6.12.0 (#362380)
b0a3c141bac18 sbt-with-scala-native: 1.10.2 -> 1.10.6 (#360693)
b6bddf1850051 kubebuilder: 4.3.0 -> 4.3.1 (#360848)
c6482b9c66c2c hermitcli: 0.40.0 -> 0.41.0 (#360706)
fc78b5b198f0b harsh: 0.10.4 -> 0.10.6
c19915b3225f8 fn-cli: 0.6.35 -> 0.6.36 (#360859)
40fbebcaeb5be pifpaf: 3.2.1 -> 3.2.3 (#360729)
8acfeeef1911f clipboard-jh: 0.9.1 -> 0.10.0 (#360751)
2551fa34fca10 harmonia: 2.0.0 -> 2.0.1
d0ebdb144b009 coursier: 2.1.14 -> 2.1.19 (#360882)
e635ae627a615 procs: 0.14.7 -> 0.14.8 (#360837)
820a996d6c802 bun: 1.1.34 -> 1.1.38
0914a1050d52a homepage-dashboard: 0.9.12 -> 0.9.13
c016c46cef87e vscode-extensions.visualjj.visualjj: 0.13.1 -> 0.13.3 (#363691)
85c969faad55c protonmail-desktop: 1.5.1 -> 1.6.0 (#363365)
8853307a2f150 commitlint-rs: 0.1.12 -> 0.2.2 (#361660)
acef98a67061d zed-open-capture: init at unstable-2023-24-19, use in rtabmap, add myself as rtabmap maintainer (#362858)
452cd9d4567d7 kine: 0.13.3 -> 0.13.6 (#363319)
db343a60d97e4 nomnatong: 5.12 -> 5.13 (#360664)
3f5a19e2d58f5 vscode-extensions.visualjj.visualjj: 0.13.1 -> 0.13.3
1ac98af94b3df etc-overlay: mount the metadata image read-only (#360756)
43d27c33ec5ae librespot: 0.5.0 -> 0.6.0 (#360296)
b64dec7857109 lunar-client: 3.2.26 -> 3.3.1 (#360481)
aa8c5c74fd526 cargo-binstall: 1.10.13 -> 1.10.16
e4eb3e8115039 zef: 0.22.4 -> 0.22.6 (#360600)
c83877f767a17 joplin-desktop: 3.0.15 -> 3.1.24
7fb4bfcbd4582 svp: fix fhsenv version (#363180)
dbad61f93b5a4 srgn: 0.13.3 -> 0.13.4 (#360560)
9db79a5788187 kernel-hardening-checker: 0.6.6 -> 0.6.10 (#360454)
5014c5dba895c terraform-ls: 0.34.3 -> 0.36.0 (#360530)
25ffef2469b41 vmware-horizon-client: fix fhsenv version (#363164)
9a67590b3c5cb ruplacer: 0.9.0 -> 0.10.0 (#360475)
ada08ab4eca5f ssm-session-manager-plugin: 1.2.677.0 -> 1.2.694.0 (#360259)
e608e50294527 steam-rom-manager: 2.5.22 -> 2.5.29
467da0d6be526 havn: 0.1.16 -> 0.1.17
d003aefa7005b publii: 0.45.2 -> 0.46.2 (#363093)
1331edaea7955 mangojuice: init at 0.7.8 (#354321)
d03fb7215e7f7 python312Packages.oci: 2.135.1 -> 2.139.0
a51505e088a6f handheld-daemon: 3.6.1 -> 3.7.0 (#361364)
3c9a1fe232388 nixos/wakapi: don't merge EnvironmentFile paths (#363205)
ff5ffbd32324e kikoplay: init at 1.0.3 (#354929)
e1edfba5a149d python312Packages.homematicip: 1.1.3 -> 1.1.5 (#362729)
6400e8d74d108 chatzone-desktop: 5.2.1 -> 5.2.3 (#360941)
d936a6e08405f trunk: 0.21.1 -> 0.21.4 (#360470)
80e73f44faf35 uncrustify: 0.80.0 -> 0.80.1
0618ebc8c8bec pinniped: 0.33.0 -> 0.35.0 (#360469)
dce92e62e795a v2raya: add cliPackage option (#334876)
491e332feb1b9 home-assistant: refresh cherry-picks (#363666)
dab4fe53545ba peazip: 10.0.0 -> 10.1.0 (#362704)
178a034ad9a5d ci: Update pinned Nixpkgs (#363585)
1217a5647fdd5 goimports-reviser: 3.7.4 -> 3.8.2
9a141f71051b2 amarok: 3.1.0 -> 3.1.1 (#360464)
e5be2e81df780 powerpipe: 1.0.0 -> 1.0.1
8fccdde2b7000 river: 0.3.5 -> 0.3.6
f6029466451a8 deno: 2.1.2 -> 2.1.3 (#362818)
2b03b37393032 nixos/tests/home-assistant: call with runTest
579ade1ed8370 nixos/tests/home-assistant: fix testing of restart with new dependency
be150023f7c37 nixos/tests/home-assistant: fix reload expectations
ee59cca0f1044 nixos/home-assistant: add reference to signal handling section
28b8aa8c4c986 nixos/home-assistant: support extraArgs
179fd97dae9b5 nixos/home-assistant: update component hardening lists
00b9d1f7546ba nixos/home-assistant: replace global `with lib`
c15ee9113fe31 v2ray: 5.20.0 -> 5.22.0 (#359639)
4d17a765b5ba9 mgba: 0.10.3 -> 0.10.4 (#363159)
d9cff315d1f63 grafana: 11.3.1 -> 11.4.0 (#363193)
d81dea3bbbb96 meshcentral: 1.1.33 -> 1.1.35 (#363225)
5cdeee4b055a6 c-blosc2: 2.15.1 -> 2.15.2 (#359868)
106cf3d281e70 libdict: fix darwin build
a44f4541d023d nym: 2024.12-aero -> 2024.13-magura-patched (#358978)
52dcc88971f74 libdict: 1.0.3 -> 1.0.4
21b973775711b kanidm: permit hydra to build unmaintained 1.3 release
97958e72e8a92 kanidm: add back 1.3 compatibility
75763a2f41b06 nixos/librenms: enableLocalBilling + memory limit for cronjobs (#361153)
c6400fbd21ef7 drm_info: 2.3.0 -> 2.7.0 (#344022)
d75618dc7aaee graalvm-ce: 23.0.0 -> 23.0.1 (#359838)
4b41775396659 upsun: 5.0.22 -> 5.0.23
e504ed26d2491 python312Packages.python-openstackclient: add requests socks support
588b138a93537 cargo-aoc: init at 0.3.8 (#362859)
30931fd4ee739 platformsh: 5.0.22 -> 5.0.23
2b375c0504793 yadm: 3.2.2 -> 3.3.0 (#360982)
af67084ffee9c cynthion: 0.1.7 -> 0.1.8
597095c55119e blasfeo: 0.1.4 -> 0.1.4.1
a5deae39a3656 uxn: 1.0-unstable-2024-10-19 -> 1.0-unstable-2024-11-30 (#362697)
8b047c001484d {gama-tui,gocovsh,golds,pkgsite,tcount}: init (#358316)
5d946517527ac gimpPlugins.{bimp,gap}: fix build (#362644)
de7106e9e59b7 rocksdb: 9.7.3 -> 9.7.4 (#360541)
435ce773a8bcc cilium-cli: 0.6.20 -> 0.6.21 (#363300)
d277b7abe39cd secp256k1: 0.5.1 -> 0.6.0 (#354528)
588558184800e kimai: 2.24.0 -> 2.26.0 (#363640)
33fe023937c12 lib/types: make pattern of strMatching accessible (#350467)
27157b0fad4b2 clightning: 24.08.2 -> 24.11 (#363637)
f41c166f0190a matomo-beta: 5.0.0-rc9 -> 5.2.0-rc1
00553f86fd2ed matomo_5: 5.1.1 -> 5.1.2
0b83ab49d58c8 matomo: format
6b1f76fc14b04 matomo: use finalAttrs for accessing version
0cbe48b03fe41 cargo-about: 0.6.5 -> 0.6.6
e88f8a86d461e shotcut: 24.10.13 -> 24.11.17 (#359989)
860b17cd04925 keka: 1.3.2 -> 1.4.6 (#359964)
f5a5157f1f9a7 Update jdreaver email, remove as prowlarr maintainer (#362954)
fd70a5989a37b doppler: 3.69.2 -> 3.70.0
3fe041e8bfddf lib.types: Add test for merging strMatching
b61c03c641bdb github-runner: fix wrong path in the config file (#363599)
752f274b7d201 pyspread: 2.3 -> 2.3.1 (#362699)
b9b7fddc39671 mopac: 23.0.2 -> 23.0.3 (#363335)
227f91ba10d03 clightning: 24.08.2 -> 24.11
e2b57d2cd7300 kimai: 2.24.0 -> 2.26.0
27b00e4d75b20 wlink: 0.1.0 -> 0.1.1 (#363354)
b70d1d6989137 libretro.stella: 0-unstable-2024-11-17 -> 7.0-unstable-2024-12-09
23d1d5c8be0b1 kryptor: .NET 6 -> 8
bc259d48fa5fc kryptor: refactor
fbe94be2e3e1a picocrypt-cli: 2.09 -> 2.10 (#363348)
631bbf1dea273 ttdl: 4.5.0 -> 4.7.0
2b455a03e1974 libretro.snes9x: 0-unstable-2024-10-28 -> 1.63-unstable-2024-12-08
878ced9a7f253 ltex-ls-plus: init at 18.2.0 (#357814)
2f8de5b0dbc7b github-runner: fix wrong path in the config file
c2a355e310fb4 sopwith: 2.6.0 -> 2.7.0 (#362724)
c152995942ff5 python312Packages.minari: 0.5.1 -> 0.5.2
3737fabfe8c20 libretro.mrboom: 0-unstable-2024-07-01 -> 5.5-unstable-2024-10-21
afba9fc8e177e marcel: 0.30.1 -> 0.30.4
a73246e2eef4c quakespasm: 0.96.0 -> 0.96.3 (#261759)
626206b9db10e box86: 0.3.6 -> 0.3.8 (#363498)
1b7de0a3e7d12 prowlarr: remove jdreaver as maintainer
baefe064a22f0 maintainers: update jdreaver email
f05e64a83f7bb arti: 1.3.0 -> 1.3.1 (#363089)
6b41e525a1ee6 mactracker: init at 7.13
7acb5c5b59fb4 vtfedit: init at 1.3.3 (#258646)
062945b725875 lib.types: chore use consistent payload form (#363565)
e11c52a2321b1 vendir: 0.42.0 -> 0.43.0
1d6a2c28a4986 lib.types: add release notes
231bf6e2d0209 ltex-ls-plus: init at 18.3.0
c7035f64bd57c vimPlugins.nvim-lspconfig: 2024-12-02 -> 2024-12-08 (#363412)
8616590df9b42 python312Packages.xonsh: 0.18.4 -> 0.19.0
0ae50bd8e7673 steampipePackages.steampipe-plugin-aws: 1.3.0 -> 1.4.0
8a44f79f611d0 terraform-providers.ovh: 1.0.0 -> 1.1.0 (#363537)
a11b7373b9d06 terraform-providers.launchdarkly: 2.21.0 -> 2.21.2 (#363540)
2341e4fb60dea vimPlugins.nvim-lspconfig: 2024-12-02 -> 2024-12-08
a5916cbe70d8a terraform-providers.vault: 4.4.0 -> 4.5.0 (#363547)
9431dcc532d83 kryptor: nixfmt
838504b53cbae sof-firmware: 2024.09 -> 2024.09.2 (#363257)
63fad607bab81 home-assistant-custom-components.miele: 2024.8.1 -> 2024.11.1
83bf38e6303e1 python312Packages.homematicip: 1.1.4 -> 1.1.5
bd54c82797a2a python312Packages.homematicip: fix license
a2e94a7006c65 lib.types: attrsWith named placeholder (#344216)
ff8576f191960 dockerTools.pullImage: accept `hash` parameter (#342400)
7f458c52303f9 python312Packages.pymiele: refactor
7a06221563a04 python312Packages.pymiele: 0.1.7 -> 0.2.0
e79a903b7c595 k8sgpt: 0.3.46 -> 0.3.48
d504a1e68085d lib.types.attrsWith: add placeholder parameter
20dc18a4652a8 tippecanoe: 2.70.0 -> 2.72.0 (#363522)
1008102caf6fc super-slicer: fix build with GCC 14 (#362194)
83092be1a2de7 terraform-providers.auth0: 1.7.3 -> 1.8.0 (#363572)
16b57a9ad0e90 stylua: 2.0.1 -> 2.0.2
8da25ff830fad scooter: 0.1.2 -> 0.2.1
5a5236baeab3a cargo-deny: 0.16.2 -> 0.16.3 (#363484)
d979e89d88114 ci: Update pinned Nixpkgs
aa12cad9e92d6 railway: 3.18.0 -> 3.19.1 (#363248)
cace7bca604f7 minigalaxy: 1.3.0 -> 1.3.1
ef913a6f49b4d okteto: 3.1.0 -> 3.2.0
c5cd729138168 llama-cpp: 4154 -> 4293 (#363528)
8128cb79a2425 terraform-providers.mailgun: 0.7.6 -> 0.7.7 (#363490)
8ae4064d708f8 nixos/bookstack: fix unintended escaping of nginx locations
3767e8e9850d8 kubectl-explore: 0.10.0 -> 0.11.0 (#363493)
fb93de56bcaab keymapper: 4.9.0 -> 4.9.1 (#363508)
d262d14bc260e python312Packages.execnb: 0.1.8 -> 0.1.11 (#363510)
1b52efe8c2f1f nix-prefetch-scripts: add bash to inputs
423832f4118b1 smbclient-ng: 2.1.6 -> 2.1.7 (#363447)
67b443d3e078c prometheus-pve-exporter: 3.4.5 -> 3.4.6
1d1499520b70e nixpacks: 1.29.1 -> 1.30.0 (#363454)
b47831eb1ff4b toot: 0.47.0 -> 0.47.1 (#363457)
416d8e80911d9 mystmd: 1.3.17 -> 1.3.18 (#363413)
f5a88025cd6cf kubeshark: 52.3.89 -> 52.3.91 (#363419)
5720f42c329d9 nix-prefetch-docker: provide `hash` in SRI format
d0e6b0e170391 dockerTools.pullImage: accept `hash` parameter
f7cdf7ceafca3 puncia: 0.24 -> 0.25 (#363420)
795d679a3a8fa immich: 1.122.1 -> 1.122.2 (#363421)
5a98c1bbbd220 butane: 0.22.0 -> 0.23.0 (#363427)
2090f8415798e csvlens: 0.10.1 -> 0.11.0 (#363431)
6a4d532bb7f7c rednotebook: 2.35 -> 2.36
2a0938b7f0a1c pocketbase: 0.23.1 -> 0.23.4 (#362555)
afbfb638322b7 jotdown: 0.6.0 -> 0.7.0 (#363433)
fb3130b2efd8f python312Packages.withings-sync: 4.2.6 -> 4.2.7
e81df5bb2d85e terraform-providers.auth0: 1.7.3 -> 1.8.0
4cec7a0136fff python312Packages.pymodbus: 3.7.4 -> 3.8.0
bc27f0fde01ce doomrunner: 1.8.2 -> 1.8.3 (#363206)
f407f6f57ec12 lib.types: chore use consistent payload form
5ed5910063937 mate.atril: 1.28.0 -> 1.28.1 (#363014)
7c55714c64b2f amdgpu_top: 0.9.2 -> 0.10.0
597f6fff71a10 libgedit-gtksourceview: 299.3.0 → 299.4.0
f3a4513ef4457 libgedit-tepl: 6.11.0 → 6.12.0
514ac0ca05697 clickhouse-backup: 2.6.3 -> 2.6.4
bbc9fdd29045a cri-tools: 1.31.1 -> 1.32.0
a4803b6c4426a imgpkg: 0.43.1 -> 0.44.0
323a11c675048 conda: 4.11.0 -> 24.9.2 (#359910)
2add8b96f5803 clash-meta: 1.18.10 -> 1.19.0
e6a34bc793157 nym:	2024.12-aero -> 2024.13-magura-patched
ddbfef49719e0 c3-lsp: 0.3.2 -> 0.3.3
1625f3e2ee2f2 dooit: 3.0.4 -> 3.1.0 (#363526)
00fc1904d4841 tree-sitter-grammars.tree-sitter-twig: init (#355404)
24a21639bb38d snac2: 2.63 -> 2.65 (#363545)
3d4d757e19a53 snpguest: 0.7.1 -> 0.8.0 (#363471)
62a5ae3481fda android-studio: 2024.2.1.9 -> 2024.2.1.12 (#363548)
543f37fb1e2c4 snapmaker-luban: 4.10.2 -> 4.14.0 (#360053)
346cdedbff265 python312Packages.galario: fix build (#363044)
e215eaaf3d026 mmv: 2.8 -> 2.10
fd6bc1b590d6e typos: 1.28.1 -> 1.28.2 (#363521)
056d01b905361 ytdl-sub: 2024.11.6 -> 2024.12.4 (#362832)
d304322e37350 android-studio: 2024.2.1.9 -> 2024.2.1.12
a348bbd7e3830 traefik: 3.1.4 -> 3.2.1 (#360213)
1a9dbc6e2fa9c terraform-providers.vault: 4.4.0 -> 4.5.0
bfa12bdee5b5f snac2: 2.63 -> 2.65
786ff942e699b libvirt: 10.9.0 -> 10.10.0 (#363499)
4131bb43a1bc5 wireshark: fix build on darwin
b780aeae00a73 cve: 1.7.0 -> 1.7.1 (#362932)
b0873cb0e32c1 electron-source.electron_33: 33.0.2 -> 33.3.0
0b9542d99d9cd electron-source.electron_32: 32.2.2 -> 32.2.7
ae8467475dbfd electron-source.electron_31: 31.7.2 -> 31.7.6
90cb09d5f966d electron-chromedriver_33: 33.0.2 -> 33.3.0
2f6cfd79a18dd electron-chromedriver_32: 32.2.2 -> 32.2.7
06a1f5b729e6f electron-chromedriver_31: 31.7.2 -> 31.7.6
8b10e86a67ce3 electron_33-bin: 33.0.2 -> 33.3.0
ae863e8023501 electron_32-bin: 32.2.2 -> 32.2.7
a9f019764914a electron_31-bin: 31.7.2 -> 31.7.6
b13d95d119066 python3Packages.recipe-scrapers: add missing isodate dependency (#363242)
7a6ffaba3eb99 cowsay: 3.8.3 -> 3.8.4
20eda972b6bf3 steampipe: 1.0.0 -> 1.0.1
504c7ce212392 terraform-providers.launchdarkly: 2.21.0 -> 2.21.2
4ba53df99319c chatzone-desktop: 5.2.1 -> 5.2.3
08fc0bd4a59d8 cargo-outdated: 0.15.0 -> 0.16.0 (#363392)
2116a70346b6d obs-studio-plugins.obs-3d-effect: 0.1.1 -> 0.1.2 (#363504)
73c4d98a70da7 openvpn3: 23 -> 24 (#363360)
97c1562b58c2a openjph: 0.17.0 -> 0.18.1 (#362619)
c73e02fc5f465 yq-go: 4.44.5 -> 4.44.6 (#363514)
7961132c80eb7 terraform-providers.ovh: 1.0.0 -> 1.1.0
f9f6201eb5ae3 fluent-bit: 3.1.10 -> 3.2.2 (#363253)
8f8d4054fa353 python312Packages.weblate-language-data: 2024.13 -> 2024.14 (#363269)
3ef3f6f430b1e python312Packages.craft-application: 4.4.0 -> 4.5.0 (#363440)
e2a0786661b73 pulsarctl: 4.0.0.4 -> 4.0.0.8
5c26d67667b7a python3Packages.python-apt: 2.8.0 -> 2.9.2
b356fafe02dd1 nixos/nginx: don't disable IPC (#360008)
fbf117facf0bd hyprlauncher: 0.2.7 -> 0.2.8 (#363444)
a5ca609b8ec5e prometheus-cpp: 1.1.0 -> 1.3.0, reformat, finalAttrs, fix pkgsStatic (#363342)
0ff2ef60bd1f7 files-cli: 2.13.180 -> 2.13.202
66bd38db4d073 llama-cpp: 4154 -> 4293
ff6fe6ec6d021 dooit: 3.0.4 -> 3.1.0
2cf68f2bf3765 handheld-daemon: 3.6.2 -> 3.7.0
cc0941133bb27 tippecanoe: 2.70.0 -> 2.72.0
e876e2ff03ac4 typos: 1.28.1 -> 1.28.2
ead4a829f130a git-workspace: 1.7.0 -> 1.8.0 (#363507)
d0f5305ec155e jbang: 0.120.4 -> 0.121.0
7996ffc5cf0c7 git-workspace: remove passthru.tests.version
79c02078a6950 maa-assistant-arknights: 5.9.0 -> 5.10.2 (#363442)
a3cb20422a21a python312Packages.bidsschematools: 0.11.3.post3 -> 1.0.0 (#363258)
c34c8fee74ef4 python312Packages.pytelegrambotapi: 4.24.0 -> 4.25.0
d1599517ffbea sqlite-vec: 0.1.5 -> 0.1.6
fa704a00bada9 python312Packages.pyomo: 6.8.1 -> 6.8.2
342f4df14e877 python312Packages.pytest-examples: 0.0.14 -> 0.0.15
10461f3b233a8 sftpgo: 2.6.3 -> 2.6.4
98ebb7e0b2b59 janet: 1.36.0 -> 1.37.1
463f9342eb6bc yq-go: 4.44.5 -> 4.44.6
c94ae7a159eb8 handheld-daemon: 3.6.1 -> 3.6.2
de75b9175823e magic-wormhole-rs: various cleanups (#363002)
d163a0ea76f7f cedar: init at 4.2.2 (#360328)
67004e9b81d11 python312Packages.execnb: 0.1.8 -> 0.1.11
617f0f1ff28b1 yazi, yazi-unwrapped: 0.3.3 -> 0.4.0 (#363326)
bd4edc04bb1f1 keymapper: 4.9.0 -> 4.9.1
749ef6034057f git-workspace: 1.7.0 -> 1.8.0
285e50f44fb40 url-parser: 2.0.5 -> 2.1.1 (#363284)
89f193eb344fb nixos-rebuild-ng: improve documentation (#361750)
de30f0aaefd10 cava: 0.10.2 -> 0.10.3
ed65a89903db2 obs-studio-plugins.obs-3d-effect: 0.1.1 -> 0.1.2
af8de4f367afd abctl: 0.22.0 -> 0.23.0
b251e97823809 minio-client: 2024-10-02T08-27-28Z -> 2024-11-17T19-35-25Z
f7865885ff4af python312Packages.py-tes: 0.4.2 -> 1.1.0 (#362853)
45f702a6d3b65 python312Packages.google-cloud-spanner: 3.50.1 -> 3.51.0 (#363343)
0f1016f3428f4 quark-engine: 24.11.1 -> 24.12.1 (#363453)
c011c8e282140 vuls: 0.27.0 -> 0.28.0 (#363280)
0e6fd21adbc27 python312Packages.pymc: 5.18.2 -> 5.19.1 (#363489)
79c949613d29a python312Packages.fastcore: 1.7.23 -> 1.7.25 (#363491)
0c4ab62092686 python312Packages.githubkit: 0.12.0 -> 0.12.1 (#363291)
647dbf324efa5 python312Packages.millheater: 0.12.0 -> 012.2 (#363293)
827f43390e6fd nixos/zapret: remove maintainer (#363494)
a8c5dc11d9823 box86: 0.3.6 -> 0.3.8
889fb165d6f4e libvirt: 10.9.0 -> 10.10.0
c734fb7fd5eea minify: 2.21.1 -> 2.21.2
9451bb51c25b6 nixos/zapret: remove maintainer
45364c3d8a6d2 ngtcp2-gnutls: 1.8.0 -> 1.9.1 (#355866)
16d0a9cbd1e67 kubectl-explore: 0.10.0 -> 0.11.0
943626e75a75b terraform-providers.mailgun: 0.7.6 -> 0.7.7
c72d33fea7289 python312Packages.fastcore: 1.7.23 -> 1.7.25
353b6a7e7dd04 xemu: 0.7.133 -> 0.7.134
5e3363a8652d9 tana: 1.0.17 -> 1.0.18
2e98ec0e0eb30 nixos/networking-interfaces-scripted: use read -r
f388bc8e8794c go-blueprint: 0.8.2 -> 0.10.1 (#363158)
2b73f72f4a895 python312Packages.pymc: 5.18.2 -> 5.19.1
e745dac703387 ktor-cli: 0.3.0 -> 0.3.1
b644a1b90a386 cargo-deny: 0.16.2 -> 0.16.3
977c9efc5128f uiua-unstable: init at 0.14.0-dev.6 (#362951)
2aa1c476a808f gnome-extensions-cli: 0.10.3 -> 0.10.4
51ef6cbc6ab82 genemichaels: 0.1.21 -> 0.5.7
753dacd783990 snpguest: 0.7.1 -> 0.8.0
e4c9d406a042b doc/languages-frameworks/python: Reword section to make commit rules a bit clearer (#339643)
759f603acdc26 rustic: 0.9.4 -> 0.9.5 (#362575)
13659a54fcdcf nixos/qgroundcontrol: fix qgroundcontrol module (#336183)
6d127499d0093 grip-grab: init at 0.3.0 (#346658)
414c290f3b825 nixos/galene: add turnAddress option and fix httpAddress (#353421)
6137b22220246 nixos/qemu-vm: minor readability improvements (#339681)
dbd30ceb34246 _010editor: init at 15.0.1 (#331313)
88492ebb5eb35 python312Packages.cashews: 7.3.1 -> 7.4.0
7602b65a1b2ac tela-circle-icon-theme: 2024-04-19 -> 2024-11-15
9e866bbdbf438 terraform-providers.linode: 2.29.1 -> 2.31.1
9e32ef890f476 terraform-providers.bitwarden: 0.12.0 -> 0.12.1
fdc1fed984d50 terraform-providers.newrelic: 3.52.1 -> 3.53.0
c05f640eac9d0 terraform-providers.temporalcloud: 0.0.14 -> 0.0.15
ab45bc5c01732 toot: 0.47.0 -> 0.47.1
73b7d880f14c8 prometheus-cpp: 1.1.0 -> 1.3.0
4e3ef907e4636 nixpacks: 1.29.1 -> 1.30.0
0f9c9444be62f quark-engine: 24.11.1 -> 24.12.1
8b96d79a35210 storj-uplink: 1.116.5 -> 1.118.8 (#363298)
125617542b23e smbclient-ng: 2.1.6 -> 2.1.7
81a0c13d148df ngtcp2: 1.8.1 -> 1.9.1
2ee01474dac2a ngtcp2-gnutls: 1.8.0 -> 1.9.1
1f40ab520224d dart.fvp: use FindMDK.cmake (#362163)
1387bde191a65 plex: fix fhsenv version (#363160)
6a44de21f2660 unityhub: fix fhsenv version (#363161)
4e20984e9f1d8 electron-fiddle: fix fhsenv version (#363165)
f826db6cd1d65 expressvpn: fix fhsenv version (#363167)
501f919f42cd3 kingstvis: fix fhsenv version (#363169)
a411d3c264cf2 typora: fix fhsenv version (#363170)
e18074974126c left4gore-bin: fix fhsenv version (#363171)
fb70f75220722 nixos/filesystems: assert when `label` and `device` are set simultaneously (#362481)
4c5af09bfd20b dart.xdg_directories: init (#363174)
ec45e9439b707 qownnotes: 24.11.2 -> 24.12.1
a3b773a440f6e hyprlauncher: 0.2.7 -> 0.2.8
b04d6346f9131 eccodes: 2.36.0 -> 2.39.0 (#349680)
cf2ec54707d3a buf: 1.47.0 -> 1.47.2
6bdff18e166e6 python312Packages.albumentations: 1.4.20 -> 1.4.22
1577d591765f7 treewide: add aleksana to maintainer of various gtk packages (#363198)
b79eed116ebec cargonode: init at 0.1.2 (#361643)
94191f40ce165 python312Packages.albucore: 0.0.19 -> 0.0.21
d993c6113ded8 python312Packages.simsimd: init at 6.2.1
43c5569fb2863 dotnetCorePackages.patchNupkgs: fix patchelf usage (#361450)
4e97bcd8d3128 maa-assistant-arknights: 5.9.0 -> 5.10.2
db46aae5a194e python312Packages.craft-application: 4.4.0 -> 4.5.0
0c59a020c7a35 ocamlPackages.earlybird: 1.3.2 -> 1.3.3 (#362955)
18208c490751c marwaita: 22.2 -> 23 (#363049)
3d6f2a38fd6b9 ticker: 4.7.0 -> 4.7.1 (#363341)
0ef44a488f3d9 oversteer: 0.8.1 -> 0.8.3 (#362937)
239a55c50ac48 wasmer: 5.0.2 -> 5.0.3 (#362987)
d66bcbe6b37a7 ppsspp: 1.18 -> 1.18.1 (#363133)
363c25038f6ad docify: 1.0.0 -> 1.1.0 (#363067)
d92224a31826a home-assistant-custom-components.xiaomi_gateway3: 4.0.6 -> 4.0.7 (#362791)
996876ae82a9c audiobookshelf: 2.17.4 -> 2.17.5
8da14e862a252 vips: 8.15.5 -> 8.16.0 (#362444)
987c7c1efcbd7 python312Packages.stripe: 11.2.0 -> 11.3.0 (#363305)
54c5bca8e63c6 python312Packages.gftools: 0.9.74 -> 0.9.76 (#363364)
4c1f7d2d96146 libvmi: 0.14.0-unstable-2024-09-18 -> 0.14.0-unstable-2024-11-06
f3f887a69a988 kubectl-node-shell: 1.10.2 -> 1.11.0 (#363402)
cbdff0d7a815f home-assistant-custom-lovelace-modules.mushroom: 4.2.0 -> 4.2.1 (#363414)
1942705da8f4e python312Packages.rich-click: 1.8.4 -> 1.8.5 (#363418)
061cb7ad5d1cf wit-bindgen: 0.34.0 -> 0.36.0 (#363308)
7cedac469e616 jotdown: 0.6.0 -> 0.7.0
53bd25e9e250a kanboard: init at 1.2.42 (#357229)
1dae76d033d09 nixos/redmine: Change type of services.redmine.stateDir to `path`
a4762bf346e67 csvlens: 0.10.1 -> 0.11.0
a1cccc5e39dc5 nsd: 4.10.1 -> 4.10.2
a963fa59d0264 butane: 0.22.0 -> 0.23.0
c2a7c0ae1060e istatmenus: init at 7.02.10 (#358251)
ac0efff3ffa65 carapace: 1.0.7 -> 1.1.0
68a4ce374c19f aerospace: 0.15.2-Beta -> 0.16.2-Beta (#360172)
59d6168e194dd anki: 24.06.3 -> 24.11 (#361951)
621e924eb3d95 puncia: 0.24 -> 0.25
bdeec57ec9b28 kubeshark: 52.3.89 -> 52.3.91
19c2f6aaaa05c stochas: 1.3.12 -> 1.3.13 (#362837)
02eacd08188c2 objfw: 1.2.1 -> 1.2.2 (#362999)
ee1578a67a2b6 anydesk: 6.3.3 -> 6.4.0 (#363015)
459c979a16b3e oterm: 0.6.1 -> 0.6.9 (#363016)
bf1799238e711 jellyfin-ffmpeg: 7.0.2-5 -> 7.0.2-7 (#360761)
e87d084a557fd spotify-player: 0.20.1 -> 0.20.3 (#362864)
a7e75bbc8dac3 slack: 4.41.97 -> 4.41.98 (#362745)
9aadd04e27f7a python312Packages.rich-click: 1.8.4 -> 1.8.5
8dc553b708022 immich: 1.122.1 -> 1.122.2
d78473f98f8ed teams-for-linux: 1.11.2 -> 1.12.3 (#363028)
a3709ab6feba4 poetry: 1.8.4 -> 1.8.5 (#362620)
3e973ae2ebc7b python312Packages.safety: 3.2.9 -> 3.2.11
9b5895bdc95ed python312Packages.safety-schemas: 0.0.5 -> 0.0.10
cd5f63c597b65 python312Packages.dparse: 0.6.3 -> 0.6.4
7abc8ebc78974 rust-analyzer-unwrapped: 2024-11-11 -> 2024-12-02
6c3cb218ab707 home-assistant-custom-lovelace-modules.mushroom: 4.2.0 -> 4.2.1
b4fe70ac92bbc mystmd: 1.3.17 -> 1.3.18
b6dbf6deed81e nixos/filesystems: assert that the device and label options are consistent
5d83d5b20b978 calls: 46.3 -> 47.0
a181967099dfb nodePackages.create-react-native-app: drop (#363374)
f304ede4f4dc1 terraform-providers.google-beta: 6.9.0 -> 6.12.0
ae2356ff4553f terraform-providers.signalfx: 9.1.6 -> 9.5.0
0019995430d20 terraform-providers.datadog: 3.46.0 -> 3.49.0
3231455e5383f terraform-providers.opentelekomcloud: 1.36.23 -> 1.36.26
91cdcf7e36091 wasm-tools: 1.221.0 -> 1.221.2
0f4b646923ad8 terraform-providers.migadu: 2024.10.10 -> 2024.11.28
bcd5b037fd518 zf: 0.9.2 -> 0.10.2
700d34f0038d2 terraform-providers.huaweicloud: 1.69.1 -> 1.71.0
960dd2e2979ab zf: Format with nixfmt
8e10d955b875f terraform-providers.sentry: 0.14.0 -> 0.14.1
a45fb10b4384c terraform-providers.artifactory: 12.3.1 -> 12.5.1
28b89ed40af43 terraform-providers.grafana: 3.10.0 -> 3.14.1
6e2beb51f708d terraform-providers.aiven: 4.28.0 -> 4.30.0
99e0e2a925a11 mitmproxy: 11.0.1 -> 11.0.2 (#362931)
25fe86dff71eb nodePackages.expo-cli: drop (#361284)
92d15e18a5737 criu: 3.19 -> 4.0 (#348314)
a589eaf97e3c7 simulide: correct version definition (#362667)
afc324d90d98c opentofu: fix passhthru test
22a2f067415f1 synchrony: init at 2.4.5 (#352833)
9b5953d3ab4b5 fastly: 10.17.0 -> 10.17.1
efdaa6b75cf48 python312Packages.huggingface-hub: 0.26.3 -> 0.26.5 (#362595)
2f10891b9b147 python312Packages.pyiceberg: init at 0.8.1 (#362591)
f5e46f66856e1 kubectl-node-shell: 1.10.2 -> 1.11.0
70c6e3245b529 fabric-ai: 1.4.99 -> 1.4.119
2a15b6b7a1f71 yamlscript: 0.1.83 -> 0.1.86
51efc5d161941 mpris-timer: 1.1.1 -> 1.5 (#363042)
78cfe2d72362f cargo-outdated: 0.15.0 -> 0.16.0
18252dd3e121e ocamlPackages.srt: 0.3.0 -> 0.3.1 (#352262)
a6c79004e02d6 avalanchego: 1.12.0-initial-poc.6 -> 1.12.0
31b70b95dd6de spring-boot-cli: 3.3.4 -> 3.4.0 (#360293)
db8159c1d6674 rmapi: 0.0.27.1 -> 0.0.28 (#360214)
68e0b955377e9 vector: 0.42.0 → 0.43.0 (#363330)
bd34fda3e4cfb python312Packages.accelerate: 1.1.0 -> 1.2.0 (#362616)
bebdc90a976f9 z-lua: 1.8.19 -> 1.8.20 (#360245)
31fe12124c173 rabbitmq-c: 0.14.0 -> 0.15.0 (#357641)
fe16f46dbfc9d kuma: 2.8.3 -> 2.9.1 (#359165)
eb61f8aff5464 ocamlPackages.containers: 3.14 -> 3.15 (#356382)
4c97bc4a76607 versatiles: 0.13.0 -> 0.14.5 (#363023)
5e0585161b8cf writeShellApplication: fix shellcheck availability check (#362868)
5d23bf256c023 panicparse: 2.3.1 -> 2.4.0 (#360051)
75e745bc6020b azpainter: 3.0.9a -> 3.0.10 (#360256)
75d31ebf553c7 automatic-timezoned: 2.0.38 -> 2.0.40
01461c8918acd flclash: 0.8.69 -> 0.8.70
109f05c89daec rdkafka: 2.6.0 -> 2.6.1 (#360134)
81ce2e980effe ibus-engines.typing-booster-unwrapped: 2.25.17 -> 2.26.11 (#359240)
a7ff9f0dd1245 mysql_jdbc: 9.0.0 -> 9.1.0 (#359753)
0fbc786cf3b1a tartube-yt-dlp: 2.5.040 -> 2.5.059 (#359511)
775b0348679d9 stm32cubemx: 6.12.1 -> 6.13.0
8ab176b3f9546 mob: 5.3.1 -> 5.3.3 (#360105)
cd6abe59e0834 mmseqs2: 15-6f452 -> 16-747c6 (#362040)
80f9a6b175505 home-assistant-custom-lovelace-modules.universal-remote-card: 4.2.0 -> 4.2.1 (#363351)
b928ad0093c9b nixos-rebuild-ng: only show the error message if the user forget to use --ask-sudo-password flag
69d9c3529d13a nixos-rebuild-ng: fix repl command
f6a5be36f3b04 dart.fvp: use FindMDK.cmake
0afd5fbf4018d mdk-sdk: 0.30.0 -> 0.30.1
a9e9c06463815 papermc: 1.21.1-119 -> 1.21.3-53 (#358578)
f968abfcfa185 mdk-sdk: format
8d3c9632ea356 lilypond-unstable: 2.25.20 -> 2.25.21 (#358402)
5c14a84b23d3c nvme-cli: 2.10.2 -> 2.11 (#363036)
62ccf2557301a libnvme: 1.11 -> 1.11.1 (#363045)
e857cfa8a1941 nixos/seafile: fix systemd option capitalization for RandomizedDelaySec (#363324)
338de35f6357e woof-doom: 15.0.0 -> 15.0.1, add nix-update-script (#362407)
34efbc5743977 python312Packages.scalene: 1.5.47 -> 1.5.49 (#362531)
6d8f27f3bb439 python312Packages.gftools: 0.9.74 -> 0.9.76
280703fb6fac6 cloudflare-dynamic-dns: 4.3.9 -> 4.3.11
3a9f2af3509b7 python312Packages.rapidocr-onnxruntime: 1.3.24 -> 1.4.1 (#362580)
b8783fbefa4ce databricks-cli: 0.234.0 -> 0.236.0
c45b460d606f8 openvpn3: 23 -> 24
339a3006ecd6b gdbuspp: 2 -> 3
61dfad04c4822 maintainers: add second key to progrm_jarvis
e998856e5908d codeql: 2.19.3 -> 2.19.4
ace01cb5e78d4 python312Packages.pynecil: 1.0.1 -> 2.0.2 (#361553)
7f4e91025b8a6 postfix: 3.9.0 -> 3.9.1 (#361965)
41ccfd7dbbe75 sirikali: 1.6.0 -> 1.7.2 (#363320)
0cd431e6e04d1 netbird-ui: 0.33.0 -> 0.34.1
39128a6e9ef5e openscad-unstable: 2024-11-18 -> 2024-12-06 (#362750)
2cab71191a150 wlink: 0.1.0 -> 0.1.1
68309feeb72b0 picocrypt-cli: 2.09 -> 2.10
dd51f52372a20 traefik-certs-dumper: 2.8.3 -> 2.9.3 (#363277)
8b4f7534abfb3 python312Packages.google-cloud-spanner: 3.50.1 -> 3.51.0
febb399d545e7 ticker: 4.7.0 -> 4.7.1
3dd3225b53d9f prometheus-cpp: use finalAttrs pattern
36e312cb5fdeb prometheus-cpp: reformat
0e61feebaaf55 mopac: 23.0.2 -> 23.0.3
f150343e710da vector: 0.42.0 → 0.43.0
73b9f2d20bea9 scx.full: 1.0.6 -> 1.0.7; nixos/scx: add new schedulers (#363306)
a431fc0eeaf68 gyroflow: 1.5.4-2024-09-05 -> 1.6.0 (#362262)
bbc7df36746ed dart-sass: 1.80.5 -> 1.82.0 (#362962)
cdc0fa7a9eb77 sirikali: 1.6.0 -> 1.7.2
ac5e3695e4d05 kine: 0.13.3 -> 0.13.6
e5bddbcbb5db2 nixos/lib/make-squashfs: set root mode to 0755 (#363247)
aadc58324eac0 node-gyp: 10.2.0 -> 10.3.1 (#361544)
d274b40960aa9 cockpit: 328 -> 329.1 (#360017)
b4aacf5ab5ad3 nixos/scx: add new schedulers
962bd73da6e8c lite-xl: 2.1.5 -> 2.1.6 (#360046)
19e986a191694 ghidra-extensions.findcrypt: 3.0.2 -> 3.0.3
eed56f3092055 vgm2x: 0-unstable-2024-06-18 -> 0-unstable-2024-11-17 (#360009)
1a1cb8b7268f5 xpipe: 13.2 -> 13.4.3
b693631e7a895 cargo-bolero: 0.11.2 -> 0.12.0 (#359954)
e4df86a26b70b sqldef: 0.17.23 -> 0.17.24 (#359922)
df399abc316a3 scx.full: 1.0.6 -> 1.0.7
563c21191ff06 wit-bindgen: 0.34.0 -> 0.36.0
b1d2b1d82b7b0 kafkactl: 5.3.0 -> 5.4.0 (#359872)
add9b9454827d legends-of-equestria: init at 2024.05.01
3d07314b448c7 cocogitto: 6.1.0 -> 6.2.0 (#359854)
16f826c776f2c mariadb-connector-java: 3.4.1 -> 3.5.1 (#359679)
1ecc2ecf8d400 seaweedfs: 3.79 -> 3.80 (#363154)
233ca281cdd57 reveal-md: 6.1.3 -> 6.1.4 (#359613)
467a923e35f0a xray: 24.9.30 -> 24.11.21 (#359578)
368b27b002908 python312Packages.stripe: 11.2.0 -> 11.3.0
e4627c2140e8b cilium-cli: 0.16.20 -> 0.16.21
f00eb1996fc2b cilium-cli: reformat with nixfmt
0a5d125b5e75f cilium-cli: 0.16.19 -> 0.16.20 (#359569)
b7b3589f0700f kops_1_30: 1.30.1 -> 1.30.2 (#359489)
62e7006a1f24f git-pw: 2.6.0 -> 2.7.0 (#359560)
68620d5ee6b1a p2pool: 4.1.1 -> 4.2 (#357487)
f1e8f3c850f1c sickgear: 3.32.10 -> 3.32.11 (#359527)
924b5f4a7cd4c brainflow: 5.14.0 -> 5.15.0 (#362921)
9280573ae8524 dracula-theme: 4.0.0-unstable-2024-10-03 -> 4.0.0-unstable-2024-11-26 (#359429)
c94f4c1fbb81f funzzy: 1.2.0 -> 1.5.0 (#359398)
e3e16dae5f9c8 storj-uplink: 1.116.5 -> 1.118.8
85b68634c6064 pachyderm: 2.11.4 -> 2.11.5 (#359276)
3902bf91af5a7 quarto: 1.6.33 -> 1.6.37 (#359188)
8dc3db8d5e968 twilio-cli: 5.22.3 -> 5.22.6 (#359381)
a8537d11984b3 nixos/wakapi: don't merge EnvironmentFile paths
397d5fb54a054 rqlite: 8.31.2 -> 8.34.1 (#358217)
1b11e94b9b1b0 terraform-plugin-docs: 0.19.4 -> 0.20.1 (#362736)
906be16c3c6ad python3Packages.zenoh: init at 1.0.3
a66e967913cfb ocamlPackages.asai: 0.3.0 -> 0.3.1 (#357868)
91448da034ab8 kubernetes-helmPlugins.helm-unittest: 0.5.2 -> 0.6.3 (#357517)
03173ec0e9d82 fioctl: 0.42 -> 0.43 (#357568)
26602151b1671 python312Packages.millheater: 0.12.0 -> 012.2
91fb266745575 gitlab: 17.5.2 -> 17.6.1 (#359329)
eaa3254a36850 python312Packages.awkward: 2.7.1 -> 2.7.2 (#363221)
0cd2216f1c339 crowdsec: 1.6.3 -> 1.6.4 (#357584)
95f685b969b8c attic-client: 0-unstable-2024-10-06 -> 0-unstable-2024-11-10 (#356653)
5bc0c47d23ca4 python312Packages.githubkit: 0.12.0 -> 0.12.1
62faa98e61f2f python312Packages.coincurve: fix build
2b32ebcaf001e secp256k1: 0.5.1 -> 0.6.0
cf1435f066396 raspberrypi-eeprom: 2024.11.08-2712 -> 2024.11.12-2712 (#363272)
90194e892ae77 url-parser: 2.0.5 -> 2.1.1
732d21150dfa9 qdrant-web-ui: 0.1.31 -> 0.1.33 (#359219)
38216d3d30e15 weaviate: 1.26.6 -> 1.27.5 (#359217)
564f029dc459a linuxPackages.nct6687d: 0-unstable-2024-09-02 -> 0-unstable-2024-11-05 (#361739)
7e938775be586 libdjinterop: 0.20.2 -> 0.22.1 (#362866)
39b8048b95a2f snappymail: 2.38.1 -> 2.38.2 (#359233)
6d9c3a8ec8b6e pioasm: 2.0.0 -> 2.1.0 (#359026)
c9530e33adcd6 zimfw: 1.15.0 -> 1.16.0 (#359204)
a0714ece49708 ocamlPackages.gsl: 1.25.0 -> 1.25.1 (#359017)
366b59a9e2b39 jackett: 0.22.893 -> 0.22.998 (#358802)
9a8ed4dfb1e16 vuls: 0.27.0 -> 0.28.0
708ebaf7d99d4 vscode-js-debug: 1.94.0 -> 1.95.3 (#358961)
01a9722d61616 fend: 1.5.3 -> 1.5.5 (#358850)
0da0c88fca7da python312Packages.simple-dftd3: 1.2.0 -> 1.2.1 (#362943)
9cbb457919b18 python312Packages.llm: 0.19 -> 0.19.1 (#362942)
5ffd748d8121e seafile-client: 9.0.9 -> 9.0.11 (#362941)
aaf899a85b093 cargo-tally: 1.0.50 -> 1.0.56 (#362935)
5a57e8e68fc32 terraform-providers.infoblox: 2.7.0 -> 2.8.0 (#362953)
565d54368839c python312Packages.numpyro: 0.15.3 -> 0.16.1 (#362982)
86fb96252b398 typstyle: 0.12.8 -> 0.12.9 (#363267)
1544a19df5d06 stevenblack-blocklist: 3.14.127 -> 3.14.139 (#362983)
9d7cad76e9366 traefik-certs-dumper: 2.8.3 -> 2.9.3
b08e39d5f882c cyberpunk-neon: 0-unstable-2024-09-15 -> 0-unstable-2024-11-07 (#362993)
8b395e9e12367 erlang-language-platform: 2024-07-16 -> 2024-11-07 (#354182)
f7ead4ae963a6 cubiomes-viewer: 4.1.0 -> 4.1.2 (#358918)
1806dfdbfefd3 hackgen-font: 2.9.0 -> 2.9.1 (#362998)
283fc96aa588e sesh: 2.5.0 -> 2.6.0 (#358791)
01c1603369be3 gat: 0.19.1 -> 0.19.2 (#363007)
1148f702b4b6a hackgen-nf-font: 2.9.0 -> 2.9.1 (#363009)
ff011d9ea35dd micronaut: 4.6.3 -> 4.7.1 (#358696)
7b35bf0dcb205 heroku: 9.3.0 -> 9.5.0 (#358626)
616ecb305e2ff graalvmCEPackages.graalpy: 24.0.1 -> 24.1.1 (#358439)
b9104d21b9dc5 graalvmCEPackages.truffleruby: 24.0.1 -> 24.1.1 (#358440)
28cc998859fe1 acme-sh: 3.0.9 -> 3.1.0 (#358510)
899200c312e77 sketchybar-app-font: 2.0.27 -> 2.0.28 (#363010)
9a2798a35bbaa obs-studio-plugins.obs-teleport: 0.7.2 -> 0.7.3 (#363012)
6a024a96c56a1 git-cliff: 2.6.1 -> 2.7.0 (#357695)
6f0aa869f9a1f graalvmCEPackages.graalnodejs: 24.0.1 -> 24.1.1 (#358434)
1d1db5501b7ed superhtml: 0.5.1 -> 0.5.3 (#363020)
49fd2da72db40 raspberrypi-eeprom: 2024.11.08-2712 -> 2024.11.12-2712
38352113e3968 git-credential-oauth: 0.13.3 -> 0.13.4 (#363024)
232c4fac6bd84 ols: 0-unstable-2024-10-27 -> 0-unstable-2024-11-30 (#363029)
691a088779144 hydrus: 595 -> 598 (#356543)
b72ca1a2d981e ghciwatch: 1.0.1 -> 1.0.2 (#363046)
555342a84c9a5 initool: 0.18.0 -> 1.0.0 (#356986)
cacb9adf342eb virtio-win: 0.1.262-2 -> 0.1.266-1 (#363053)
6951ad985b0d6 linux_xanmod_latest: 6.11.10 -> 6.11.11 (#362536)
71177e2d9efb5 typstyle: 0.12.8 -> 0.12.9
87fa3cb07f6d6 i3-rounded: unstable-2021-10-03 -> 4.21.1 (#356706)
6e698297de774 kubeone: 1.8.3 -> 1.9.0 (#358152)
2e816793bf437 apacheHttpdPackages.mod_wsgi3: 5.0.1 -> 5.0.2 (#363055)
c8221cb2c7b16 python312Packages.multiscale-spatial-image: 2.0.1 -> 2.0.2
25bcf6d2122d8 google-java-format: 1.24.0 -> 1.25.0 (#358090)
70e5d6e5fbe8a python312Packages.weblate-language-data: 2024.13 -> 2024.14
ac26bcf0ac45d vue-language-server: 2.1.6 -> 2.1.10 (#357954)
e4e4131cf6117 astc-encoder: 5.0.0 -> 5.1.0 (#363057)
bb719c9c70d38 azure-storage-azcopy: 10.27.0 -> 10.27.1 (#363059)
822b8de281465 python312Packages.yappi: 1.6.4 -> 1.6.10 (#363060)
b95c7d3cfbbb8 bazelisk: 1.22.1 -> 1.24.1 (#363070)
fcc17ab52fb2d airshipper: 0.14.0 -> 0.15.0 (#356847)
d437245ed2173 pscale: 0.213.0 -> 0.216.0 (#363072)
350693fb78258 csvtk: 0.31.0 -> 0.32.0 (#363073)
41d75bb8ad8ad rush-parallel: 0.5.7 -> 0.6.0 (#363088)
fbdd3db7f7d63 gql: 0.29.1 -> 0.32.0 (#363096)
e59bb6d887185 tabby: 0.19.0 -> 0.20.0 (#356719)
f465baa98a66d python312Packages.aiovlc: 0.6.3 -> 0.6.5 (#363243)
fc7408b078723 ejson: 1.5.2 -> 1.5.3 (#363240)
1f6d475e8915e dnsproxy: 0.73.2 -> 0.73.4 (#363233)
6876876a8bf35 python312Packages.django-pgactivity: 1.5.0 -> 1.7.0 (#363227)
3ff3948043d23 python312Packages.django-pglock: 1.6.0 -> 1.7.0 (#363226)
cb530357bc778 Merge GNOME updates 2024-12-07 (#362830)
73285e54fc5a3 gtree: 1.10.12 -> 1.10.13 (#363224)
407cce1988339 python312Packages.scikit-rf: 1.4.1 -> 1.5.0 (#363223)
e1383b9e2d991 swayimg: 3.5 -> 3.6 (#363155)
6894773263bab libphidget22: 1.20.20240909 -> 1.21.20241122 (#362437)
2a4b345062547 leetgo: 1.4.10 -> 1.4.11 (#363220)
f599bf659e5ff cargo-leptos: 0.2.21 -> 0.2.22 (#363219)
85bbbd49f2cdb gh-poi: 0.11.0 -> 0.12.0 (#363192)
aa258618afa69 python312Packages.cmsdials: 1.4.0 -> 1.5.0 (#363197)
606c3f81debb2 linuxPackages.shufflecake: 0.4.4 -> 0.5.1 (#343906)
d6e4987465116 python312Packages.qbittorrent-api: 2024.10.68 -> 2024.11.70
1db42df03d1d9 rustdesk-server: 1.1.11-1 -> 1.1.12 (#345257)
fd4fb3ea6e524 python312Packages.django-silk: 5.3.0 -> 5.3.1 (#363199)
bb5b58da73b67 gnmic: 0.39.0 -> 0.39.1 (#363200)
463f36906ed2a sslh: 2.1.2 -> 2.1.3 (#363202)
9fa93980e8a95 cargonode: refactor
4e3b003c26c42 sarasa-gothic: 1.0.24 -> 1.0.25 (#363004)
dc46520f19239 sof-firmware: 2024.09 -> 2024.09.2
7ece479f390f9 nixos/k3s: add extraKubeProxyConfig option to add nftables to k3s's path
ca3e22c152be8 mystmd: 1.3.8 -> 1.3.17 (#344840)
9d75005cbc735 fluent-bit: 3.1.10 -> 3.2.2
4283353e502d4 python312Packages.aws-lambda-builders: 1.51.0 -> 1.53.0 (#363207)
32c087e7007f5 nagiosPlugins.check_esxi_hardware: 20221230 -> 20241129 (#363214)
25888d5201bbd libphidget22extra: 1.20.20240909 -> 1.21.20241122
73c66179fcafb python312Packages.pycep-parser: 0.4.2 -> 0.5.1 (#363166)
1d36526990000 sozu: 1.0.4 -> 1.0.6 (#338113)
98928a7dbebef libphidget22: 1.20.20240909 -> 1.21.20241122
2a7340e5a5123 wambo: 0.3.1 -> 0.4.0 (#363173)
2610eaea7602c python312Packages.mlxtend: 0.23.2 -> 0.23.3 (#363186)
01f0a7a17ae70 virter: 0.28.0 -> 0.28.1 (#363187)
93e5eaa91dfa2 mdbook-katex: 0.9.1 -> 0.9.2 (#363190)
b58a64c648446 marwaita-red: 22.2 -> 23
51f8b10077977 gobgpd: 3.30.0 -> 3.32.0
c8672fdc9207f python312Packages.bimmer-connected: 0.16.4 -> 0.17.2 (#363138)
44500244ab26a gobgp: 3.30.0 -> 3.32.0
11e28293f83b5 slumber: 2.2.0 -> 2.3.0 (#363145)
da18b9bc79a0c nixos/lib/make-squashfs: set root mode to 0755
a6e299ffc3ce8 fermyon-spin: 2.5.1 -> 3.0.0 (#321380)
191156e148a59 signal-cli: 0.13.9 -> 0.13.10 (#363146)
58872406ef45b semantic-release: 24.1.2 -> 24.2.0 (#363150)
3569e62b7d1b1 roxctl: 4.5.4 -> 4.6.0 (#363151)
84b4196a3109a flycast : 2.3.2 -> 2.4 (#363153)
44a8a98877ea7 rutorrent: 4.2.10 -> 5.1.1 (#339286)
029261a6088a3 promptfoo: 0.57.1 -> 0.79.0 (#336299)
4c1b600bc3531 railway: 3.18.0 -> 3.19.1
63169766000e5 arkade: 0.11.29 -> 0.11.31 (#363107)
d30e9cf3be1cc proto: 0.42.0 -> 0.43.1 (#363108)
b88b1e1f85937 aiken: 1.1.5 -> 1.1.7 (#363111)
3c388cd53cf72 python3Packages.recipe-scrapers: add missing isodate dependency
a178f43f027df tf-summarize: 0.3.11 -> 0.3.14 (#363112)
909365d2203fe makima: 0.9.4 -> 0.9.5 (#363116)
11de6df9ecd54 ctlptl: 0.8.35 -> 0.8.36 (#363118)
2f12b90e517c0 hyprland-workspaces: 2.0.3 -> 2.0.4 (#363119)
08fdedb4ae636 python312Packages.aiohomeconnect: 0.6.3 -> 0.6.4 (#363122)
fe499b85a05f8 platformio: 6.1.15 -> 6.1.16
95f671e120c98 faudio: 24.11 -> 24.12 (#363123)
b08332680422f telepresence2: 2.20.2 -> 2.20.3 (#363125)
aceaf618b5122 esphome: 2024.11.2 -> 2024.11.3
3cceacf98e57a parallel-disk-usage: 0.10.0 -> 0.11.0 (#363117)
86d2c28dce86c julia-bin: autoPatchelf manually to avoid mangling cache (#362412)
a9df0430f6824 marwaita-yellow: 20.3.1 -> 23
79f0b0ea1dc27 fcitx5-mcbopomofo: 2.8 -> 2.8.1 (#362786)
48bbe09b337d1 f2: 2.0.1 -> 2.0.3 (#363115)
b7589ab8b9984 Merge remote-tracking branch 'upstream/master' into add-cargonode-0.1.2
f1aabc677e526 python312Packages.aiovlc: 0.6.3 -> 0.6.5
f4bd97b8face6 firefox_decrypt: 1.1.0 -> 1.1.1 (#303403)
1fb74f82fbcd4 kotlin-native: 1.9.23 -> 1.9.24
6db7d02ec9dad esphome: fix font component support
6ecd54854294f ejson: 1.5.2 -> 1.5.3
b76c1b95695fb hyperrogue: 13.0r -> 13.0v (#328328)
da038375f54ef fermyon-spin: 2.5.1 -> 3.0.0
60ce27bdbdacc ocamlPackages.happy-eyeballs: 1.1.0 -> 1.2.2 (#291072)
011e45dfea194 dnsproxy: 0.73.2 -> 0.73.4
d6a5445e6d15e nextcloud30Packages: update
cce2e76d65fc4 nextcloud29Packages: update
56ee225e9f602 nextcloud28Packages: update
41dbe7bc6f482 nextcloud29: 29.0.9 -> 29.0.10
9eb9123185b8d todesk: fix fhsenv version (#363177)
cddf4e4164ad8 python312Packages.django-pgactivity: 1.5.0 -> 1.7.0
fe5dd00baede3 python312Packages.django-pglock: 1.6.0 -> 1.7.0
a68fdbb81277f nixos/bazecor: init (#359143)
df084a4d3cdc7 gtree: 1.10.12 -> 1.10.13
303b423a72164 python312Packages.openai: 1.54.5 -> 1.56.1 (#359638)
5c0ec0e184b9e leetgo: 1.4.10 -> 1.4.11
b7eae8cb6ad3d gitlab: 17.5.2 -> 17.6.1
fe6d0eafb7916 python312Packages.scikit-rf: 1.4.1 -> 1.5.0
a4c052b235aeb python312Packages.awkward: 2.7.1 -> 2.7.2
64f5dc11a50db python312Packages.awkward-cpp: 42 -> 43
54c9a211dcfd0 cargo-leptos: 0.2.21 -> 0.2.22
afb08a9a49090 colima: 0.7.6 -> 0.8.0 (#362988)
e273c861fdf7c pg_top: 4.1.0 -> 4.1.1 (#362306)
96fb4aa761032 qtractor: 1.3.0 -> 1.4.0 (#362322)
b96c1acf29bfd lug-helper: 3.0.1 -> 3.5 (#362507)
0738fa469189b jbrowse: 2.16.0 -> 2.17.0 (#362906)
ee0e06ba220ee seq66: 0.99.15 -> 0.99.16 (#362885)
2c012c271b15f p3x-onenote: 2024.10.110 -> 2024.10.117 (#362741)
a4dd29c8e1947 collector: 0-unstable-2024-08-02 -> 0-unstable-2024-11-11 (#362618)
489684bd572cd lug-helper: 3.0.1 -> 3.5
7ac201834e08d qtractor: 1.3.0 -> 1.4.0
51cba623611da pg_top: 4.1.0 -> 4.1.1
cb8881f5bab90 nagiosPlugins.check_esxi_hardware: 20221230 -> 20241129
261ac4c6d94e1 api-linter: 1.67.4 -> 1.67.6 (#360858)
9a93846333827 ocamlPackages.mdx: 2.4.1 → 2.5.0
92010bb67200d vkd3d: 1.13 -> 1.14 (#362025)
c26d7acf6eeba ord: 0.21.2 -> 0.21.3 (#363132)
b070d5b9cd1d5 yoshimi: 2.3.3.1 -> 2.3.3.2 (#361984)
79ba1ef1e0bdd opensoundmeter: 1.3 -> 1.4 (#361712)
ea816de2d7595 tutanota-desktop: 250.241025.0 -> 253.241126.2 (#360330)
70832518c5000 alfaview: 9.17.0 -> 9.18.1 (#360355)
dbe8b6806b431 ballerina: 2201.10.1 -> 2201.10.3 (#360417)
a179bb0b45638 obs-studio-plugins.obs-source-record: 0.3.5 -> 0.4.1 (#360557)
234ee36b74343 whatsapp-for-linux: 1.6.5 -> 1.7.0 (#360595)
c70679219d22b dxx-rebirth: 0.60.0-beta2-unstable-2024-08-11 -> 0.60.0-beta2-unstable-2024-11-16 (#360650)
bc3b847e734dc python312Packages.aws-lambda-builders: 1.51.0 -> 1.53.0
411d22c977b97 pineapple-pictures: 0.8.2.1 -> 0.9.0 (#363204)
3b285176fc3c6 camunda-modeler: 5.28.0 -> 5.30.0 (#360772)
f5bf523e2a275 kube-router: 2.2.2 -> 2.3.0 (#360836)
1cf823acaa50a roxterm: 3.14.3 -> 3.15.3 (#360327)
657012932d5fc victoriametrics: 1.105.0 -> 1.107.0 (#362767)
442924a1436dc cozy-drive: 3.40.0 -> 3.41.0 (#360322)
1aa60be35b53e wl-mirror: 0.16.5 -> 0.17.0 (#360295)
55c0d422316cf asahi-nvram: 0.2.1 -> 0.2.3 (#359852)
99a52b38e25f1 asahi-bless: 0.3.0 -> 0.4.1 (#359847)
8b157cbc69338 questdb: 8.1.2 -> 8.2.0 (#359242)
4bb333c19a0ba bngblaster: 0.9.8 -> 0.9.12 (#359230)
878229d903792 flannel: 0.25.7 -> 0.26.1 (#358613)
a44b29add1911 doomrunner: 1.8.2 -> 1.8.3
ae14ba9ecdacf radicle-node: 1.0.0 → 1.1.0 (#363185)
530f5127e8672 ansel: 0-unstable-2024-09-29 -> 0-unstable-2024-10-28 (#358584)
d84326b291e40 yubikey-touch-detector: 1.11.0 -> 1.12.0 (#358056)
c862264431b1d hubstaff: 1.6.26-95441346 -> 1.6.28-fafb0aba (#357712)
0c53b7c1c8c3f termius: 9.7.2 -> 9.8.5 (#357445)
9b0b118d9b7a9 pineapple-pictures: 0.8.2.1 -> 0.9.0
ec2cdef13b2e5 yourkit-java: 2024.9-b158 -> 2024.9-b159 (#356657)
140aaee1dee6d nixos/paperless: add 'database.createLocally' (#359563)
1682e84eed1b0 sslh: 2.1.2 -> 2.1.3
1c6cf5010081a mongodb-compass: 1.44.4 -> 1.45.0 (#351657)
c8b654f516bae olvid: 1.6.2 -> 2.2.0 (#348283)
c140dc89ded71 treewide: add aleksana to maintainer of various gtk packages
d86b822e23739 jibri: 8.0-169-g1258814 -> 8.0-173-g77dc5a9 (#345570)
69dc2f2fd39d2 jicofo: 1.0-1090 -> 1.0-1104 (#345380)
d2dc9dea8ac16 jitsi-meet-prosody: 1.0.8091 -> 1.0.8242 (#345073)
7340c820a60c3 jitsi-videobridge: 2.3-160-g97a1f15b -> 2.3-174-gd011ddf7 (#344945)
ad84974d6c960 gnmic: 0.39.0 -> 0.39.1
d1e3a9df37b45 python312Packages.django-silk: 5.3.0 -> 5.3.1
fe0ed7965d3fe python312Packages.cmsdials: 1.4.0 -> 1.5.0
d1b64813f69f7 mapnik: 4.0.3 -> 4.0.4 (#362984)
e1569905327a8 railway-wallet: 5.17.10 -> 5.19.4 (#338729)
7efb3e4fb266a qjackctl: 0.9.13 -> 0.9.91 (#307704)
d013bf0d553b9 nixos/services.evcc: remove `with lib;`
9709ae3d48abf nixos/services.ebusd: remove `with lib;`
3344c302e25f7 nixos/services.usbrelayd: remove `with lib;`
a5b237c027e1f nixos/services.trezord: remove `with lib;`
21a586465750e nixos/hardware.sane.dsseries: remove `with lib;`
bbea258a9dc6c nixos/hardware.sane.brscan5: remove `with lib;`
5cbb902a798d8 nixos/hardware.sane.brscan4: remove `with lib;`
e7095ad753dd5 nixos/services.actkbd: remove `with lib;`
ae5e538219c31 nixos/services.mchprs: remove `with lib;`
e8df83b3d2f00 nixos/services.gemstash: remove `with lib;`
2a63acaac6b4f nixos/services.bloop: remove `with lib;`
19fb7137b0657 nixos/services.zeitgeist: remove `with lib;`
e323870fc81d7 nixos/services.malcontent: remove `with lib;`
e693f4b95392c nixos/services.geoclue2: remove `with lib;`
eeda33831185a nixos/services.espanso: remove `with lib;`
793ecf787783f nixos/services.deepin.dde-daemon: remove `with lib;`
db321b974ab79 nixos/services.redis: remove `with lib;`
36828aceef0de nixos/services.mongodb: remove `with lib;`
035c17d4080bc nixos/services.monetdb: remove `with lib;`
261e4890fbfeb nixos/services.memcached: remove `with lib;`
3aa36dd181490 nixos/services.cockroachdb: remove `with lib;`
fa6f1e3ce5d48 nixos/services.clickhouse: remove `with lib;`
f6ebc4cfe0d57 nixos/services.aerospike: remove `with lib;`
67553951b1be6 nixos/services.gocd-agent: remove `with lib;`
d575253885cd4 nixos/services.github-runners: remove `with lib;`
5ee4c4b0a127c nixos/services.buildbot-worker: remove `with lib;`
c41bc079d16bb nixos/services.kubernetes.scheduler: remove `with lib;`
ac653187c5745 nixos/services.kubernetes: remove `with lib;`
697d1c36603c8 nixos/services.kubernetes.controllerManager: remove `with lib;`
e75e6693b7904 nixos/services.kubernetes.apiserver: remove `with lib;`
42a84adc1c43f nixos/services.kubernetes.addonManager: remove `with lib;`
c1109e87b0539 nixos/services.hadoop.yarn: remove `with lib;`
e7e4c15a192a0 nixos/services.hadoop.hdfs: remove `with lib;`
decec5eaa373b nixos/services.hadoop.hbase*: remove `with lib;`
e5c3196d1724e nixos/services.hadoop: remove `with lib;`
ddcd8d565e60a nixos/services.corosync: remove `with lib;`
5c7e172a284b5 nixos/security.sudo: remove `with lib;`
430f4e9c5e566 nixos/security.pam: remove `with lib;`
97b9c7bfcc221 nixos/security.lockKernelModules: remove `with lib;`
264f1b4941e47 nixos/security.googleOsLogin: remove `with lib;`
89f9d95e025e0 nixos/security.duosec: remove `with lib;`
6f58cc224f096 nixos/security.doas: remove `with lib;`
011b094cddf33 nixos/security.chromiumSuidSandbox: remove `with lib;`
8d0fd73946268 nixos/security.pki: remove `with lib;`
770156285cda2 rocmPackages_5.rocm-docs-core: 0.26.0 -> 1.8.2 (#298142)
706ff352b00a9 gh-poi: 0.11.0 -> 0.12.0
27d764403273a pilipalax: remove useless xdg-user-dirs
97fcdafc591e5 oneanime: remove useless xdg-user-dirs
82108e2d6be88 mangayomi: remove useless xdg-user-dirs
a239f788801f5 kazumi: remove useless xdg-user-dirs
7789a66309fce finamp: remove useless xdg-user-dirs
4b01903967ca7 ente-auth: remove useless xdg-user-dirs
de816bea61ebf dart.xdg_directories: init
0bc7caf6fffca obs-studio: fix lossless audio support (#360925)
ab487bb1eacb9 mdbook-katex: 0.9.1 -> 0.9.2
d188530a6c546 hugo: 0.139.0 -> 0.139.3 (#363101)
e33b3d67d1fb3 radicle-node: 1.0.0 → 1.1.0
c4706e1ff0afd virter: 0.28.0 -> 0.28.1
81d5388171ea8 python312Packages.mlxtend: 0.23.2 -> 0.23.3
0eb81e0c50085 vulkan-cts: 1.3.9.0 -> 1.3.10.0 (#359554)
4bbb73beb26f5 reuse: 4.0.3 -> 5.0.2 (#357590)
a9c76a6bade55 cirrus-cli: 0.132.0 -> 0.133.0 (#360155)
656cc69dffe3f python312Packages.psd-tools: 1.10.2 -> 1.10.4 (#362890)
aa8e955336f29 bleep 0.0.9 -> 0.0.11 (#360379)
65224e200ef52 temporal-cli: inherit version of tctl-next (#361683)
47e07506851db gnomeExtensions: update collision renames
965d4fdc0ac2a gnomeExtensions: auto-update
8292dad528503 gnomeExtensions: fault tolerance for update-extensions.py
74f7df7e20fd1 hyprls: 0.2.0 -> 0.3.0 (#362735)
1a8b548c04a08 kazumi: 1.4.4 -> 1.4.5 (#362657)
2c70707f94529 bolt-launcher: init at 0.9.0 (#338470)
ed8ad8bb9829d flclash: 0.8.68 -> 0.8.69 (#362624)
390dc92d8a810 python312Packages.parselmouth: fix build (#363069)
33acffb9dac44 typora: fix fhsenv version
43909072f7adc svp: fix fhsenv version
ccca426d07817 runescape: fix fhsenv version
4d25e6ad76e47 todesk: fix fhsenv version
e6eb5fff7256f libsidplayfp: 2.11.0 -> 2.12.0 (#362232)
6c1f84ae5c49b lisp-modules: detect circular dependencies during quicklisp import (#362645)
a1e40d4f4f5c2 sidplayfp: 2.11.0 -> 2.12.0 (#362235)
4df4b61819cc5 kazumi: 1.4.4 -> 1.4.5
a241ed9843047 vmware-workstation: fix fhsenv version
93dc9803a1ee4 wipeout-rewrite: 0-unstable-2024-07-07 -> 0-unstable-2024-11-09 (#362241)
82633832b8eb3 left4gore-bin: fix fhsenv version
87848285c93c9 python312Packages.pybids: 0.17.2 -> 0.18.1 (#359712)
6a61cccddb66f kingstvis: fix fhsenv version
ee2960706cf5d expressvpn: fix fhsenv version
19f30400517ad wambo: 0.3.1 -> 0.4.0
45bb6b2dfe05d electron-fiddle: fix fhsenv version
71fa8183786ff vmware-horizon-client: fix fhsenv version
7a7cab08b67cb immich: 1.121.0 -> 1.122.1 (#362233)
bff23669cfa3e unityhub: fix fhsenv version
5f1feb132a080 plex: fix fhsenv version
f89e66967c8a6 python312Packages.pycep-parser: 0.4.2 -> 0.5.1
8e2e89ad7cc76 scip-go: 0.1.21 -> 0.1.22 (#362903)
ba4ec0bbf9da5 python312Packages.meilisearch: 0.32.0 -> 0.33.0 (#362852)
506b5c43f9a93 crowdin-cli: 4.3.0 -> 4.4.1 (#362877)
5b36997b92769 python3Packages.pym3u8downloader: init at 0.1.5 (#335463)
c365d339d1eb7 go-blueprint: 0.8.2 -> 0.10.1
5af4c8640f8b2 committed: 1.0.20 -> 1.1.2 (#362914)
8da333068dcc4 flycast : 2.3.2 -> 2.4
db419b1c25f2b swayimg: add myself as maintainers
9338ba39f1d7d swayimg: 3.5 -> 3.6
ed665876c3892 seaweedfs: 3.79 -> 3.80
18843afdea793 flclash: 0.8.68 -> 0.8.69
32b7ca4138b58 roxctl: 4.5.4 -> 4.6.0
b7a11231ac2d2 gnome-decoder : 0.4.1 -> 0.6.1 (#362978)
c266e9e04611c semantic-release: 24.1.2 -> 24.2.0
98b5591e5c824 nixos/rygel: add package option (#355987)
74529de26dacc vscode-extensions.mongodb.mongodb-vscode: 1.9.3 -> 1.10.0 (#363142)
2ff3a17ec4f34 libmediainfo: 24.06 -> 24.11 (#361289)
61351fb050a68 signal-cli: 0.13.9 -> 0.13.10
c8a4f2060efb1 slumber: 2.2.0 -> 2.3.0
82c1a1523912a vscode-extensions.mongodb.mongodb-vscode: 1.9.3 -> 1.10.0
286d8119b6c76 vcpkg: 2024.10.21 -> 2024.11.16
9f4ab93a012e8 mediainfo: 24.06 -> 24.11.1 (#361290)
11a529d9aad67 python312Packages.bimmer-connected: 0.16.4 -> 0.17.2
92a5e138d745b python312Packages.nicegui-highcharts: init at 2.0.2
d948915b09802 dprint: enable doCheck with some skips (#362498)
80391c8b50de8 mighty-mike: init at 3.0.2-unstable (#355139)
54121ecb519e9 gotify-server: 2.5.0 -> 2.6.1 (#363013)
5ff3922534575 nhost-cli: 1.27.1 -> 1.28.1 (#362856)
4d8e8de0d9d66 nixos/mailman: increase uwsgi buffer size
a7123e1267fa5 ppsspp: 1.18 -> 1.18.1
0ffaf9bfca260 bolt-launcher: init at 0.9.0
2c327da4c5b61 mympd: 18.1.2 -> 18.2.2 (#363104)
9a6c27c1a5ea8 python312Packages.nicegui: init at 2.5.0
2a70dcd811391 boxbuddy: 2.3.1 -> 2.5.0 (#363109)
32a7ea3b6b614 ord: 0.21.2 -> 0.21.3
944f47455eefe lib: add defaultTo (#357681)
f94b4bd94574e ci/eval: re-implement compare in nix
603da64471028 python312Packages.pyecharts: init at 2.0.6
ded2850bd2366 python312Packages.pytest-selenium: init at 4.1.0
ad5d635772d0e quarkus: 3.15.1 -> 3.17.3 (#363026)
b9d5919d30fcf check-sieve: init at 0.10 (#361940)
4eca16533945e wormhole-william: install shell completions (#362652)
ca0cd01cc057f tpnote: 1.24.9 -> 1.24.10 (#362971)
89d36600c9f1f python312Packages.llama-cloud: 0.1.4 -> 0.1.6 (#361696)
71fa10deb378f godspeed: unstable-2021-08-27 -> 1.0 (#362810)
0600211f4f028 python312Packages.roadrecon: 1.5.0 -> 1.6.0 (#361705)
14201a8ad0772 yara-x: 0.11.0 -> 0.11.1 (#362596)
a4b3fb4fd7919 trufflehog: 3.84.2 -> 3.85.0 (#362770)
d70223fcef21c conkeyscan: 1.0.0 -> 1.1.0 (#362696)
56b9ef4fa33b7 keepwn: 0.4 -> 0.5 (#362819)
62d5034ad7eb2 telepresence2: 2.20.2 -> 2.20.3
cf43ba25299f5  openrisk: add versionCheckHook  (#362883)
25efd50039256 python312Packages.twentemilieu: 2.1.0 -> 2.2.0 (#362872)
5c4e385210f33 python312Packages.llama-parse: 0.5.14 -> 0.5.17 (#362854)
f357bce739ef3  chaos: refactor (#362731)
c262074a24042 dnsvalidator: init at 0.1-unstable-2023-01-17 (#362574)
269ed3f2cdedb python312Packages.aiohomeconnect: 0.6.3 -> 0.6.4
145339b54775a cri-o-unwrapped: 1.31.2 -> 1.31.3
f4f6def783e4e faudio: 24.11 -> 24.12
e252f12311b42 chiaki-ng: 1.9.1 -> 1.9.2
318f890660556 hyprland-workspaces: 2.0.3 -> 2.0.4
e3f1c50b6b8a2 ctlptl: 0.8.35 -> 0.8.36
3d58debbb5386 wivrn: 0.19 -> 0.22 (#350069)
8fc4745769608 parallel-disk-usage: 0.10.0 -> 0.11.0
0903f996b4d34 makima: 0.9.4 -> 0.9.5
a540ecdf739bd f2: 2.0.1 -> 2.0.3
7a46b732f2c71 tf-summarize: 0.3.11 -> 0.3.14
f30226d8f09bc klog-rs: 0.2.0 -> 0.3.1 (#363019)
f3a6591a24afa aiken: 1.1.5 -> 1.1.7
d12a87265db42 boxbuddy: 2.3.1 -> 2.5.0
abe4322e7654a proto: 0.42.0 -> 0.43.1
f2b92a84549de arkade: 0.11.29 -> 0.11.31
2b0c08d74fa51 mympd: 18.1.2 -> 18.2.2
868be2c9df2ff foomatic-db: update & fix version numbers (#362443)
95d9957040d4f haguichi: 1.5.0 -> 1.5.1 (#362227)
c5b28243506f8 polarity: add nix-update updatescript (#358928)
b83589b0ac647 surrealist: 2.1.6 -> 3.0.8 (#358925)
6a7d80b43fda1 hugo: 0.139.0 -> 0.139.3
8673ed8875e9b alda: 2.2.3 -> 2.3.1 (#359568)
638b2341d1847 mihomo-party: 1.4.5 -> 1.5.12 (#359912)
47bd11bf0dcdc openems: allow building on aarch64-linux (#359424)
4ae6f5fed4960 chezmoi: 2.53.1 -> 2.55.0
01ec2f1721bcf gql: 0.29.1 -> 0.32.0
4be4f7424cb53 linuxPackages.ena: add updateScript, bump version (#360326)
e96a7541814d6 sblast: init at 0.7.0 (#343460)
c80c4a61cc971 open5gs: init at 2.7.2 (#361459)
e03894b00fec8 diesel-cli: 2.2.5 -> 2.2.6 (#361659)
e94fd5d94afb8 passepartui: 0.1.4 -> 0.1.5 (#361668)
00ea4470dbc18 dnf5: 5.2.7.0 -> 5.2.8.1 (#361691)
6e6af1710bcdd harbor-cli: 0.0.1 -> 0.0.2 (#361699)
a65078f73bca6 trafficserver: 9.2.5 -> 9.2.6 (#355733)
e6a2cfb5dbb6e milkytracker: 1.04.00 -> 1.05.01 (#362208)
52e1a27ece7e9 xmrig-mo: 6.22.1-mo1 -> 6.22.2-mo1 (#362411)
a362eb0e58bea arti: 1.3.0 -> 1.3.1
46ed5ba159c9d python312Packages.minio: 7.2.10 -> 7.2.12 (#362485)
295c497ec112e rush-parallel: 0.5.7 -> 0.6.0
ff988427b8535 scarab: 2.5.0.0 -> 2.6.0.0 (#362727)
e5b8a221df06b deepin.deepin-movie-reborn: mark as broken (#362739)
7575daf174cd8 errands: 46.2.6 -> 46.2.7 (#362747)
88a31066d71a9 csvtk: 0.31.0 -> 0.32.0
d5a4c5f65fb79 pscale: 0.213.0 -> 0.216.0
92f9a97372c3a bazelisk: 1.22.1 -> 1.24.1
5c1b62b3d9346 python312Packages.parselmouth: fix build
87860d17da952 python312Packages.pysvn: 1.9.22 -> 1.9.23
afe27494fa857 nixos/wireguard-networkd: init (#259092)
e07423c1c28c2 cargo-aoc: init at 0.3.8
b44f376683e99 python312Packages.nimfa: fix build
1600f8c4647b3 python312Packages.flake8-bugbear: 24.8.19 -> 24.10.31
5c08bcc4ee65e python312Packages.yappi: 1.6.4 -> 1.6.10
97748fc9a517a gama-tui: init at 1.1.4
86490eb4d6ec9 azure-storage-azcopy: 10.27.0 -> 10.27.1
caa61788635af gocovsh: init at 0.6.1
daec649173fa3 golds: init at 0.7.1
e6c0c3a76ef04 astc-encoder: 5.0.0 -> 5.1.0
d88cb592e976c wchisp: use versionCheckHook (#361079)
c584da6436437 Apparmor: Adopt package, nixos module and nixos tests (#359817)
d7e6c27fe11b6 aws-shell: init at 0.2.2 (#355193)
ea9a3af06bd3c apache-answer: init at 1.4.1 (#358897)
5e371003aff43 iproute2mac: rename from darwin.iproute2mac (#363034)
16444b18b921c apacheHttpdPackages.mod_wsgi3: 5.0.1 -> 5.0.2
15205754f34c3 bazecor: 1.5.4 -> 1.6.1 (#362590)
b6dc13b50755a python3Packages.eth-utils: 4.0.0 -> 5.1.0 (#360668)
2c3d765f97a67 geos: remove 3.11 version, not needed any more (#360240)
d87d5c25cd512 brave: 1.73.91 -> 1.73.97
e01c7ba4d73dd virtio-win: 0.1.262-2 -> 0.1.266-1
88ed58906d136 emiluaPlugins.this-thread: 1.0.0 -> 1.0.1
69934911abbfc wlink: use versionCheckHook (#361080)
e90ab5481b82e typora: fix (#362036)
45ccd347abd01 mangayomi: 0.3.75 -> 0.3.8 (#362490)
ddff96bb1b933 code-cursor: 0.43.0 -> 0.43.6 (#362556)
a7f278d01e472 marwaita: 22.2 -> 23
7618f25e267bf firebase-tools: 13.20.2 -> 13.28.0 (#362690)
c55fc278c6c8b gruvbox-material-gtk-theme: init at 0-unstable-2024-08-09 (#362216)
0456552523649 python312Packagesgalario: fix build
f36fd911cc2d5 ghciwatch: 1.0.1 -> 1.0.2
b08017e88db2d python312Packages.azure-mgmt-servicebus: remove unused dependency (#362153)
9c55cd88e3c5b python312Packages.azure-mgmt-hdinsight: remove unused dependency (#362154)
8e6d6fdcb8b28 mpris-timer: restrict platforms to linux
71fb526a35c2a mpris-timer: install binary under correct name
51fe9136d9d08 iproute2mac: rename from darwin.iproute2mac
7946d711304e8 galario: nixfmt
c904e815edf02 nvme-cli: 2.10.2 -> 2.11
6a05139118d67 libnvme: 1.11 -> 1.11.1
d3097b77bf353 ldapnomnom: 1.4.1 -> 1.5.1
9bec61285e3cc mpris-timer: 1.1.1 -> 1.5
dbdc1cee5bbd4 mpris-timer: add updateScript
fd9961b8a4906 reposilitePlugins: init at 3.5.19 (#355505)
fd8fa3fef63bf ols: 0-unstable-2024-10-27 -> 0-unstable-2024-11-30
af4fad1f21ee3 nixos-rebuild-ng: remove --raw from nix-instantiate
ca928339400df teams-for-linux: 1.11.2 -> 1.12.3
8b8864c4198bd quarkus: 3.15.1 -> 3.17.3
a8ceba61ca196 git-credential-oauth: 0.13.3 -> 0.13.4
3dff76a8eed23 bazel-gazelle: 0.39.1 -> 0.40.0 (#362719)
195bd3b83e389 versatiles: 0.13.0 -> 0.14.5
7c80d8a1c2ae0 libgedit-gfls: 0.2.0 -> 0.2.1 (#362996)
c9d7655d47198 superhtml: 0.5.1 -> 0.5.3
0938529cc9271 klog-rs: 0.2.0 -> 0.3.1
7ade458577f0d turnon: init at 1.6.1 (#350284)
0cefc4f47185b oterm: 0.6.1 -> 0.6.9
cb4bdffed6f96 anydesk: 6.3.3 -> 6.4.0
1ceb2dbda1a5b mate.atril: 1.28.0 -> 1.28.1
9d312eed679ad vokoscreen-ng: 4.2.0 -> 4.3.0 (#360742)
58787b620d47c gotify-server: 2.5.0 -> 2.6.1
ff40568ea586a sops: 3.9.1 -> 3.9.2 (#361229)
71b8746b194fa obs-studio-plugins.obs-teleport: 0.7.2 -> 0.7.3
f311fbff25b48 google-cloud-sql-proxy: 2.14.0 -> 2.14.1 (#362924)
49452c1060a06 sketchybar-app-font: 2.0.27 -> 2.0.28
970a263fabcd3 netdata: 1.47.4 -> 1.47.5
11e73d1552d21 hackgen-nf-font: 2.9.0 -> 2.9.1
ce40e4fd47660 gat: 0.19.1 -> 0.19.2
dcea948b11792 anki: skip flaky test
b7390e3686c47 nixos/wireguard-networkd: add release notes entry
a5de36518f153 nixos/wireguard-networkd: init
ecfc044246d7c sarasa-gothic: 1.0.24 -> 1.0.25
2606a241d499d opnborg: 0.1.24 -> 0.1.44 (#362448)
ae031f193eaa0 magic-wormhole-rs: migrate to pkgs/by-name
cbea40be36eb6 magic-wormhole-rs: reformat with nixfmt-rfc-style
bab9b4a93cac6 nixos/cinnamon: Add x-cinnamon-mimeapps.list (#362432)
980e2470baea1 magic-wormhole-rs: enable tests
5d3fb630fb588 magic-wormhole-rs: skip libxcb dependency on Darwin
0faaecba01fdc magic-wormhole-rs: migrate to new apple-sdk pattern
27a08fa0fc873 objfw: 1.2.1 -> 1.2.2
c329f0625c80a dprint: enable doCheck with some skips
bf56fff2609f5 dprint: add kachick as maintainer
7c74092202739 hackgen-font: 2.9.0 -> 2.9.1
45f439bd7ef48 pkcs11-provider: nixfmt
d48876c9b8f67 pkcs11-provider: 0.5 -> 0.6
e7cb26c6e0abd bird: 2.15.1 -> 2.16
ba0f0606c7f5c libgedit-gfls: 0.2.0 -> 0.2.1
ffd10023d76f0 audiobookshelf: 2.17.2 -> 2.17.4 (#361422)
4d4cf60c9f5ae mutter: 47.1 → 47.3
2ba447b765b43 loupe: 47.1 → 47.2
45961f32d77f0 localsearch: 3.8.0 → 3.8.1
342485223dbab gtranslator: 47.0 → 47.1
aee56a2a55102 gnome-user-docs: 47.0 → 47.2
d211ba708b1a6 gnome-user-share: 47.0 → 47.2
343e3df19515b gnome-shell-extensions: 47.1 → 47.2
c2b9cd8edd26f gnome-shell: 47.1 → 47.2
e4e7c17dd8b1d gnome-settings-daemon: 47.1 → 47.2
e574b22c4f43f gnome-remote-desktop: 47.1 → 47.2
c913dfac7adaa gnome-music: 47.0 → 47.1
54d2aad3477c9 gnome-online-accounts: 3.52.1 → 3.52.2
82ad008e922ba gnome-initial-setup: 47.1 → 47.2
c7905a1531809 gnome-control-center: 47.1.1 → 47.2
cb76615528383 cyberpunk-neon: 0-unstable-2024-09-15 -> 0-unstable-2024-11-07
8037b7f2179f4 ankama-launcher: 3.12.24 -> 3.12.26 (#362515)
d5209a89817ca python312Packages.yalexs-ble: 2.5.1 -> 2.5.2 (#362873)
a7f6479cdc606 colima: 0.7.6 -> 0.8.0
f2fc260124258 gnome2.libgnomecanvas: Fix eval with allowed aliases
a6d98860c49de python312Packages.numpyro: 0.15.3 -> 0.16.1
4bf1b4b347ef3 stevenblack-blocklist: 3.14.127 -> 3.14.139
8405459b312bf mapnik: 4.0.3 -> 4.0.4
7e945690180c4 gnome-decoder : 0.4.1 -> 0.6.1
064ee2cb49669 libsoup_2_4: Rename from libsoup
9f377dfe6999e haskellPackages.cabal2nix-unstable: 2024-10-17 -> 2024-12-04
dab3496fa266e gnome2: Remove rest of the aliases
c430f93990443 nghttp2: Use libsoup_3 in passthru.tests
6d753d5c11f92 overlayed: Use libsoup 3.0
a5c8eba19573b spacedrive: Use libsoup 3.0
fd26de120c5dd snx-rs: Use libsoup 3.0
78b998647fbfc wealthfolio: Use libsoup 3.0
0d60f6f66cafa quodlibet: Remove webkitgtk dependency
583501865ae8f quodlibet: Auto-inject libsoup_3 dependency
4fbf61a2b62a5 gancio: add generic updateScript and update to 1.21.0 (#360430)
38d3c1a8c629f tpnote: 1.24.9 -> 1.24.10
1460b3e9052d5 prisma,prisma-engines: 5.22.0 -> 6.0.1 (#359944)
386044c2082ec broot: modernize (#362840)
1e2c885bb936b lurk: add aarch64-linux support (#362757)
a40c58dea8a10 ginkgo: 2.21.0 -> 2.22.0
bd50ced026838 gitsign: 0.10.2 -> 0.11.0 (#362589)
d6a0683ccb51e ungoogled-chromium: 131.0.6778.85-1 -> 131.0.6778.108-1 (#362831)
c13b9231a2283 umr: 1.0.8 -> 1.0.10 (#362535)
b0d48f0a52b50 novelwriter: 2.5.2 -> 2.5.3 (#362576)
60319a2712c06 lla: 0.2.9 -> 0.2.10 (#362577)
9d4887eea159c tomboy-ng: 0.40 -> 0.41 (#362578)
10ec359f00bff crates-tui: 0.1.20 -> 0.1.22 (#362581)
7c9fb83bf5653 vimPlugins.aw-watcher-vim: init at 2023-10-09 (#321472)
d4ac57d31c02e maintainers: add pyrotelekinetic (#362952)
3c1facf9a7a38 uiua-unstable: init at 0.14.0-dev.6
bd6a3a2a4588d ocamlPackages.earlybird: 1.3.2 -> 1.3.3
a00e463c988fc dotnetCorePackages.patchNupkgs: fix patchelf usage
89673d26f0be5 buildFHSEnvBubblewrap: set meta.mainProgram (#358550)
0cdb43baad175 maintainers: add pyrotelekinetic
a474a07ba95cb terraform-providers.infoblox: 2.7.0 -> 2.8.0
1c306ed6f5bc5 geos: remove 3.11 version
1204cff50ba85 dart-sass: 1.80.5 -> 1.82.0
8c3258c180319 uiua: remove legacy darwin deps
3da9d80a6b764 harmonia: 1.0.2 -> 2.0.0
a2e0940d0f0ed aerospace: 0.15.2-Beta -> 0.16.2-Beta
bc4d5823e485c pwsafe: 1.18.0 -> 1.20.0 (#284061)
190bb2e225edf python312Packages.simple-dftd3: 1.2.0 -> 1.2.1
dc698d39e6041 python312Packages.llm: 0.19 -> 0.19.1
305c1bac2ce00 ecc: 1.0.12 -> 1.0.27 (#274222)
45f6b0d80d7e8 seafile-client: 9.0.9 -> 9.0.11
c93b335217221 cni-plugin-flannel: 1.2.0 -> 1.5.1-flannel3 (#283074)
095bd27125a29 eddy: 1.2.1 -> 3.6 (#282232)
86c2777828df3 cargo-tally: 1.0.50 -> 1.0.56
1e56a3b5efd3c remotebox: 2.7 -> 3.4 (#283153)
45523aadbdad4 moonraker: 0.8.0-unstable-2023-12-27 -> 0.9.3-unstable-2024-11-17 (#359404)
83e3724538d1d writeShellApplication: fix shellcheck availability check
c9fecf240b2b3 cve: 1.7.0 -> 1.7.1
3a1877ce56cf6 maintainers: add axka
bfe7ed8ff4b28 traefik: 3.1.4 -> 3.2.1
b3281241647d6 pulsarctl: 2.11.1.3 -> 4.0.0.4 (#242222)
188ac2bf8ac8d mitmproxy: 11.0.1 -> 11.0.2
15f46df973a1f python312Packages.accelerate: 1.1.0 -> 1.2.0
b1dd465e81397 zenoh: initial add 1.0.3 (#361087)
f9bf2712731fa google-cloud-sql-proxy: 2.14.0 -> 2.14.1
def6d0caf379f sblast: init at 0.7.0
0bb88166c2f6c brainflow: 5.14.0 -> 5.15.0
df05b65b13fe8 tealdeer: move to pkgs/by-name (#362874)
f8dd57be66445 gh-copilot: 1.0.1 -> 1.0.5 (#362565)
a435bac77b0e0 j-mc-2-obj: init at 126 (#323556)
579d328a9f2fc jetbrains.plugins: fix adding JAR plugins
e23d551fb85c3 postgresqlPackages.pg_partman: 5.1.0 -> 5.2.1 (#361698)
7f9254d7c520c shellhub-agent: 0.16.4 -> 0.17.2 (#362789)
59953c2b3c029 python3: proper syntax for Windows patches (#351010)
b2ad492e00e5a committed: 1.0.20 -> 1.1.2
a43cfd5fc3913 mozillavpn: 2.24.1 -> 2.24.3 (#362717)
87f98369e0d0e haskell.compiler.ghc984: init at 9.8.4
2ec6454a64c3f jbrowse: 2.16.0 -> 2.17.0
3f275c75b831c scip-go: 0.1.21 -> 0.1.22
e8ad7bbf9fe35 geesefs: 0.42.0 -> 0.42.3 (#362480)
d6c3f538eaf73 vesktop: 1.5.3 -> 1.5.4 (#362579)
b6aa74d90282e sozu: 1.0.4 -> 1.0.6
292bd59d3120b json-schema-for-humans: fix build and update
0f18c93b64751 discord: bump all versions (#362751)
2c46e12b8db4a cargonode: refactor
c46abc49f44c1 Merge remote-tracking branch 'upstream/master' into add-cargonode-0.1.2
ffb4e6a4f9f6f doc: fix typo in user mgmt manual page (#362887)
e8eb0137b3664 Merge remote-tracking branch 'upstream/master' into add-cargonode-0.1.2
65484f88b2c21 beets: 2.0.0 -> 2.2.0 (#358086)
5af5ea0a57d13 balena-cli: 19.0.13 -> 20.0.9 (#362520)
28a594a1f08d2 python312Packages.transformers: fix darwin by skipping torch.distributed import (#362768)
22d51a3f2ce00 python312Packages.psd-tools: 1.10.2 -> 1.10.4
c776d4b992799 cargo-deadlinks: move to pkgs/by-name (#362879)
7ee6257cb82e1 cpp-utilities: 5.26.1 -> 5.27.0 (#361910)
8f224ad2ae056 monkeysAudio: 10.81 -> 10.83 (#362048)
39c528fc51839 datadog-agent: 7.50.3 -> 7.56.2 (#358927)
b722c71d05661 emacsPackages.isearch-prop: 0-unstable-2022-12-30 -> 0-unstable-2024-10-13 (#360660)
85b2760359fb5 Fix documentation typo in user mgmt manual page
12d42fb1a4e79 seq66: 0.99.15 -> 0.99.16
44f68a178a142 vscode-extensions.visualjj.visualjj: 0.13.0 -> 0.13.1 (#362881)
e7f4622dae8bb rtabmap: make use of zed-open-capture
6f78b9574e29d zed-open-capture: init at unstable-2023-24-19
f78b15bd0c929 openrisk: add versionCheckHook
f3c8898b76aba vscode-extensions.visualjj.visualjj: 0.13.0 -> 0.13.1
2f1909547fd4e openrisk: format with nixfmt
4e7b5dde83eb4 cloudlist: refactor (#362732)
d4f88d31e2fd2 pekwm: 0.3.0 -> 0.3.1 (#360639)
b6788a4612728 datadog-integrations-core: moderinize derivation
4b9d87c9dbde1 tailwindcss: 3.4.14 -> 3.4.16 (#362557)
036a9a7224d1f cargo-deadlinks: move to pkgs/by-name
86b193aeae271 nixos/github-runners: remove newam from maintainers (#362870)
289a490f068e8 crowdin-cli: 4.3.0 -> 4.4.1
bffe151d39139 tealdeer: move to pkgs/by-name
b7073fc2bd708 nerd-fonts: correct typos in descriptions (#361818)
69fd74d8fe990 nixos/github-runners: remove newam from maintainers
eec12e3d46320 python312Packages.publicsuffixlist: 1.0.2.20241205 -> 1.0.2.20241207 (#362855)
a8f11bf71b6a8 clouddrive2: 0.8.3 -> 0.8.5 (#362834)
d65896287725f open-webui: 0.4.7 -> 0.4.8 (#362849)
a0195def6da70 python312Packages.twentemilieu: 2.1.0 -> 2.2.0
50815eab387a5 python312Packages.yalexs-ble: 2.5.1 -> 2.5.2
e1bdae5eb8c5e xsubfind3r: 0.7.0 -> 0.9.1 (#362714)
9f0e5cf83f22f nerd-fonts: unescape characters in descriptions
e0cb4ace036e8 open-webui: 0.4.7 -> 0.4.8
b5879c104e9e4 krohnkite: 0.9.8.3 -> 0.9.8.4 (#362863)
9c570008cba07 open-webui: add update script
b0cbb2b290207 krohnkite: 0.9.8.3 -> 0.9.8.4
77b46b8745171 python312Packages.ua-parser: 0.18.0 -> 1.0.0 (#360066)
299df5be191b2 spotify-player: 0.20.1 -> 0.20.3
766f5d0f9ef0f pylyzer: 0.0.72 -> 0.0.73 (#362851)
4339c2357c6d5 Bump some vscode extensions (#362805)
4f121f5105db4 timeshift: format expressions and sort dependencies alphabetically (#362740)
9f4607c3c212e atac: 0.18.0 -> 0.18.1
f25c84e18900b ananicy-rules-cachyos: 0-unstable-2024-10-25 -> 0-unstable-2024-11-22 (#362538)
5e95ee4971c98 pylyzer: 0.0.72 -> 0.0.73
ba5c89721048a astyle: 3.6.4 -> 3.6.5 (#362653)
2952abf8b3acd octoscan: 0.1.2 -> 0.1.3
adb17e6bd7da7 python312Packages.py-tes: 0.4.2 -> 1.1.0
1d7a088c34ef2 fflogs: 8.14.21 -> 8.14.49 (#362776)
f6fc80a2275fa flent: convert to unittestCheckHook and add passthru.updateScript (#361633)
f05c2b5b9b745 nhost-cli: 1.27.1 -> 1.28.1
2708bd6c18a1a python312Packages.llama-parse: 0.5.14 -> 0.5.17
615cca5d92037 python312Packages.meilisearch: 0.32.0 -> 0.33.0
06594d056c573 python312Packages.publicsuffixlist: 1.0.2.20241205 -> 1.0.2.20241207
d5d6b1172d604 ollama: 0.4.7 -> 0.5.0 (#362614)
bc33cb627a53b onedrive: patch to fix openssl error (#362601)
f3f364ed3ea5e micropython: 1.24.0 -> 1.24.1 (#362701)
0e1da9a3ead6d plasticity: Fix EGL (#362253)
bcbafe376cdfb tdlib: 1.8.39 -> 1.8.41 (#361732)
1855b17bd52ce jfrog-cli: 2.71.4 -> 2.72.2 (#362276)
c254a9e411041 python312Packages.dm-control: 1.0.25 -> 1.0.26 (#362598)
d8d8b8d9867be julia-bin: autoPatchelf manually to avoid mangling cache
f7ad3137441e3 gruvbox-material-gtk-theme: init at 0-unstable-2024-08-09
216418c0580a0 utm: 4.6.2 -> 4.6.3 (#362650)
f1ca3063b6fb7 sudo-font: 2.0.0 -> 2.1 (#362664)
bdb07962a8d63 cargo-show-asm: 0.2.41 -> 0.2.42 (#362670)
9b05844dc88df onedrive: patch for openssl error
7278930e6d371 sarif-tools: 3.0.2 -> 3.0.4 (#362680)
cd8ac4a1f0df6 python312Packages.weaviate-client: 4.9.4 -> 4.9.6 (#362681)
238644afd5280 stochas: 1.3.12 -> 1.3.13
707b81b5aafa1 phpunit: 11.3.6 -> 11.5.0 (#362673)
f5f3dd8bb3dbe extism-cli: 1.6.0 -> 1.6.1 (#362771)
4860361281738 goawk: 1.28.0 -> 1.29.1 (#362777)
36d26c9a1bdff cargo-udeps: 0.1.52 -> 0.1.53 (#362787)
862152fa8147b python312Packages.knocki: 0.4.1 -> 0.4.2 (#362788)
a88bff43f5ff2 materialize: 0.84.2 -> 0.87.2 (#362138)
6477d7d550e8d gauge-unwrapped: 1.6.9 -> 1.6.10 (#362793)
8cd861ede7a68 electrs: 0.10.6 -> 0.10.7 (#362794)
d78f5d6d1ddf9 xournal: drop (#362376)
502f5c45a8f60 ungoogled-chromium: 131.0.6778.85-1 -> 131.0.6778.108-1
87bd47ac5afc5 chromium: support manually specifying the ungoogled patchset rev in update script
168441ba614d1 clouddrive2: 0.8.3 -> 0.8.5
3dba854b64e61 gut: 0.3.0 -> 0.3.1 (#362743)
7d57af45845d9 nerdfetch: 8.3.0 -> 8.3.1 (#362749)
6f1a1707a8ed2 nwg-panel: 0.9.50 -> 0.9.53 (#362753)
31919cd54eb56 tinymist: 0.12.8 -> 0.12.10 (#362756)
efe99b598c158 ytdl-sub: 2024.11.6 -> 2024.12.4
6e3929dc6b1aa openapi-python-client: 0.21.6 -> 0.21.7 (#362760)
1af5f18824282 zizmor: 0.7.0 -> 0.8.0 (#362761)
f5e5475f93d33 namespace-cli: 0.0.394 -> 0.0.396 (#362762)
f683465105e38 gotrue-supabase: 2.163.2 -> 2.165.1 (#362765)
928556c47148a sonivox: 3.6.13 -> 3.6.14 (#362713)
2d4411860c5bb cargo-hack: 0.6.32 -> 0.6.33 (#362721)
a4a52e803a1ca python312Packages.django-stubs: 5.1.0 -> 5.1.1 (#362723)
b4c443417c34b python312Packages.pylamarzocco: 1.3.2 -> 1.3.3 (#362728)
e1ba30100a81c gersemi: 0.17.0 -> 0.17.1 (#362730)
915d530f7316b pylyzer: 0.0.71 -> 0.0.72 (#362734)
4914254b09cef python312Packages.python-linkplay: 0.0.20 -> 0.1.0 (#362766)
d74fdc89dfe9d video2midi: 0.4.8 -> 0.4.9 (#356869)
22c3f2cf41a0e gqlgenc: 0.25.3 -> 0.27.3 (#362683)
84a5d186bd624 flameshot: 12.1.0-unstable-2024-09-01 -> 12.1.0-unstable-2024-12-03
497022ce84f43 python312Packages.total-connect-client: 2024.5 -> 2024.12 (#362707)
53925e43a54d1 vtm: 0.9.99.35 -> 0.9.99.55 (#362686)
e0f6ddbfa7583 dolt: 1.43.1 -> 1.43.15 (#356838)
8ba573d4a28d9 flarectl: 0.108.0 -> 0.111.0 (#362687)
9fbe0c71361af crd2pulumi: 1.5.3 -> 1.5.4 (#362688)
264ca9185e15d step-ca: 0.28.0 -> 0.28.1 (#362695)
a36d23769156d satellite: 0.5.0 -> 0.9.0 (#362423)
ae0a36e92bf38 conkeyscan: 1.0.0 -> 1.1.0
1eaa9d078a9c8 ocamlPackages.cairo2: 0.6.4 -> 0.6.5 (#354692)
d4c478162a9b5 trueseeing: 2.2.4 -> 2.2.5 (#362700)
eddec41ffa9d0 gatus: 5.13.0 -> 5.13.1 (#362705)
e64c86a67b9cb keymapper: 4.8.2 -> 4.9.0 (#356380)
cda1b025ec85d glycin-loaders: 1.1.1 → 1.1.2
6b024a2b0606e ocamlPackages.containers: 3.14 -> 3.15
e7e2a798acf76 changedetection-io: 0.47.06 -> 0.48.01
347d7e1d88770 ocamlPackages.sel: 0.4.0 -> 0.5.0 (#354268)
009158ef31341 healthchecks: 3.6 -> 3.7 (#356362)
7980727e2c724 bilibili: 1.14.0-2 -> 1.15.2-2 (#362693)
882ff1b923f74 satellite: 0.5.0 -> 0.9.0
6ad564a324d33 satellite: refactor
0dfc95becab47 ocamlPackages.srt: 0.3.0 -> 0.3.1
a33355bee72d4 calibre: format
6b2f6a9734923 erlang-language-platform: 2024-07-16 -> 2024-11-07
6c19ad4943c24 calibre: add image optimization programs
925e6d9f8fb7c keepwn: 0.4 -> 0.5
71f8c356843af schemacrawler: 16.22.2 -> 16.22.3 (#354426)
3b299a3c9ba64 minio: 2024-09-22T00-33-43Z -> 2024-11-07T00-52-20Z
f809e389ddb14 turbovnc: 3.1.2 -> 3.1.3 (#354746)
9ef3e72c29343 pilipalax: init at 1.0.22-beta.12+174 (#360265)
835fa4c61020e python3Packages.pym3u8downloader: init at 0.1.5
b4d58aeade803 python3Packages.pyloggermanager: init at 0.1.4
687d804405f05 topgrade: 16.0.1 -> 16.0.2 (#362804)
78a67786eee4d godspeed: unstable-2021-08-27 -> 1.0
0ba194b1a4e25 nixos/rygel: add package option
fafe46fca0a84 hyprgui: 0.1.9 -> 0.2.0 (#362136)
b56a00b23c3fb pilipalax: init at 1.0.22-beta.12+174
83ef6e599442d check-sieve: init at 0.10
a6efb32b0e9c8 rtkit: fix reduce logging patch URL (#360182)
8bfe42d7e8c9f vscode-extensions.jnoortheen.nix-ide: 0.3.1 -> 0.3.5
72a1655a03dbc filesender: 2.49 -> 2.50 (#353284)
d17b26bc74a5b shogun: disable failing tests (#360883)
c3b0eb39bd97a python312Packages.hvplot: fix checks on darwin (#360891)
dfb0ea1d52c46 vscode-extensions.haskell.haskell: 2.2.2 -> 2.4.4
b89b83eb31162 topgrade: 16.0.1 -> 16.0.2
eb60c8adf1553 atlantis: 0.28.5 -> 0.30.0 (#351913)
3d3c76da9ddfd typstyle: 0.12.7 -> 0.12.8 (#362752)
227594977a1a3 viddy: 1.2.1 -> 1.3.0 (#362506)
63fa51ea8aafe sftpgo: 2.6.2 -> 2.6.3 (#356394)
e2e988d9172b8 gnome-extension-manager: fix black screen via upstream patch (#358236)
ac689cc9b23be cargonode: refactor
1c09ff099b49e paperjam: init at 1.2.1 (#302861)
e0a3e85900757 winetricks: enable darwin support (#360547)
daf879f86913a electrs: 0.10.6 -> 0.10.7
4ddb2d07da656 gauge-unwrapped: 1.6.9 -> 1.6.10
f6a9fc6342880 tree-sitter: update webui fix-paths.patch (#358451)
f31b1ba349692 home-assistant-custom-components.xiaomi_gateway3: 4.0.6 -> 4.0.7
7de05bd2187ec Merge branch 'master' of github.com:xosnrdev/nixpkgs into add-cargonode-0.1.2 pull from master branch
6627bae6a1083 mitra: Init at 3.9.0 (#356298)
1e1fd8ffae11a shellhub-agent: 0.16.4 -> 0.17.2
c7664cac3b7f6 lsb-release: rewrite with `replaceVars`, and use `@runtimeShell@` (#360576)
a5a91987162cc discordchatexporter-cli: support all unix platforms (#360371)
a08d28b565b19 mpd: 0.23.15 -> 0.23.16 (#361649)
ce69bfe9f48ae discordo: 0-unstable-2024-10-13 -> 0-unstable-2024-11-30 (#360894)
62ed7c14489ca python312Packages.knocki: 0.4.1 -> 0.4.2
a6e34ce3c0181 cargo-udeps: 0.1.52 -> 0.1.53
89baa259100cd pingvin-share: 1.4.0 -> 1.6.1 (#361751)
f4fdea6accc91 morewaita-icon-theme: 47.1-> 47.2 (#361807)
f3c3d07d01a1c materialize: 0.84.2 -> 0.87.2
1137de9dc32ae materialize: enable all unix platforms
14944e93bfafb materialize: minor improvements
1433c792295c6 fcitx5-mcbopomofo: 2.8 -> 2.8.1
556a52ac2718b nixos-rebuild-ng: fix linter failures
4b3a232f21c74 yt-dlp: 2024.12.3 -> 2024.12.6 (#362486)
24d6753a349f7 fedifetcher: 7.1.12 -> 7.1.14 (#361994)
1fe9bfe98202e nixos-rebuild-ng: rename manual to nixos-rebuild
e6dc8a3005c08 mongodb-compass: 1.44.4 -> 1.45.0
681949540e64a mongodb-7_0: 7.0.14 -> 7.0.15 (#360828)
c245a07bdae8e mongodb-6_0: 6.0.18 -> 6.0.19 (#360829)
4d3790a2d1691 nerd-fonts: improve alias throw to give example migration (#362769)
93c777ee940fe Fix zygote could not fork error
e9691a4519249 goawk: 1.28.0 -> 1.29.1
c410701f9bc6e fflogs: 8.14.21 -> 8.14.49
e26653680f871 extism-cli: 1.6.0 -> 1.6.1
05f5413f31720 trufflehog: 3.84.2 -> 3.85.0
69590ca7f40bd cups-filters: 1.28.17 -> 2.0.1 (#358724)
8c2f571052c58 nerd-fonts: improve alias throw to give example migration
d842a192cbe0a python312Packages.transformers: fix darwin by skipping torch.distributed import
6dadace420fd5 nixos/wrapper: pass trusted argv[0] to the privileged executable (#285588)
de031293aa0fa flutter_rust_bridge_codegen: init a 2.6.0
e292f2244375c victoriametrics: 1.105.0 -> 1.107.0
9a4f4d4fa99b6 gotrue-supabase: 2.163.2 -> 2.165.1
49952726c3f64 python312Packages.python-linkplay: 0.0.20 -> 0.1.0
e5d0a078a5471 j-mc-2-obj: init at 126
122ae6f0380e5 zizmor: 0.7.0 -> 0.8.0
e321b878c90d7 ttags: 0.4.1 -> 0.4.2 (#362665)
1499755c7d181 namespace-cli: 0.0.394 -> 0.0.396
23bc864ee4684 openapi-python-client: 0.21.6 -> 0.21.7
aa6aa758d63ce typstyle: 0.12.7 -> 0.12.8
90cba9b17d57f tinymist: 0.12.8 -> 0.12.10
a2110386c1e7d discord: bump all versions
386ec507d8677 zizmor: 0.5.0 -> 0.7.0 (#362436)
e3939e1c1fa44 nwg-panel: 0.9.50 -> 0.9.53
fa6caa7153487 chsrc: init at 0.1.9 (#362373)
3042bd00fd3f9 openscad-unstable: 2024-11-18 -> 2024-12-06
3632a79510539 errands: 46.2.6 -> 46.2.7
2c4ec5fd17f37 nerdfetch: 8.3.0 -> 8.3.1
00eccd43797b1 wiki-tui: 0.8.2 -> 0.9.1 (#361843)
30eb636ef38ce slack: 4.41.97 -> 4.41.98
d981560eb517f lazyjournal: init at 0.4.0 (#362539)
0e2e51188d0b3 gut: 0.3.0 -> 0.3.1
d4b0413246396 bilibili: 1.14.0-2 -> 1.15.2-2
b769bf390731a deepin.deepin-movie-reborn: mark as broken
0fb7628e8a186 p3x-onenote: 2024.10.110 -> 2024.10.117
7aad7090b7bd3 nixos/zfs: order pool sync services before final.target
f25c11670721a timeshift: sort dependencies alphabetically
016dac54c5236 terraform-plugin-docs: 0.19.4 -> 0.20.1
c6a09301bdcb2 timeshift: format expressions
c7b6af6e66953 cloudlist: add versionCheckHook
712a80b99bd40 hyprls: 0.2.0 -> 0.3.0
eef600b7720ae pylyzer: 0.0.71 -> 0.0.72
9c144766f0042 cloudlist: format with nixfmt
8e79b2d450a25 chaos: add versionCheckHook
3fea04cafcf86 chaos: add ldflags
2dc8bb0a824bf chaos: format with nixfmt
0ae64adaa91ea xsubfind3r: format with nixfmt
5c8a2cab3f0db nixos/buffyboard: init (#358941)
e7fce9e437ff5 python312Packages.cement: 3.0.10 -> 3.0.12 (#356440)
a1fa8cc852ae2 plasma-panel-spacer-extended: init at 1.9.0 (#335447)
41c7b2a169549 xsubfind3r: format with nixfmt
4b0cdf8b40222 gpxsee: 13.26 -> 13.32 (#362629)
5b52d5397efcb gersemi: 0.17.0 -> 0.17.1
e4cd2a4eec65b python312Packages.globus-sdk: 3.48.0 -> 3.49.0 (#362405)
12fc38284352e python312Packages.homematicip: 1.1.3 -> 1.1.4
e398a97f73b52 python312Packages.pylamarzocco: 1.3.2 -> 1.3.3
bbd314463df32 python312Packages.cement: disable tests on Darwin
84225e0e3594d scarab: 2.5.0.0 -> 2.6.0.0
508a791f9ef75 awsebcli: update override for cement
e1eb67dc93120 python312Packages.cement: 3.0.10 -> 3.0.12
2ee977f38fd4c ad-miner: 1.6.1 -> 1.7.0 (#362600)
b97609f0febf1 python39: 3.9.20 -> 3.9.21; python310: 3.10.15 -> 3.10.16 (#362261)
db8f4f4e59134 epic5: 3.0.1 -> 3.0.2 (#362334)
2d036d3a649a0 lima: 1.0.1 -> 1.0.2 and add version test (#361378)
020924cb8b423 sopwith: 2.6.0 -> 2.7.0
83dbd3e7fb988 python312Packages.django-stubs: 5.1.0 -> 5.1.1
d05b3108965a5 python312Packages.tensorflow-metadata: 1.15.0 -> 1.16.1 (#358589)
ff797c2bf62fc lix: only use LTO with GCC (#353576)
f0494f9e82e4a cargo-hack: 0.6.32 -> 0.6.33
d2a665f7c6af5 python312Packages.ihm: 1.7 -> 1.8 (#362422)
54e82959ac592 python312Packages.datalad: 1.1.3 -> 1.1.4 (#357153)
0ed508a1ca2a6 python312Packages.dm-haiku: 0.0.12 -> 0.0.13 (#360346)
148792b088869 python312Packages.itemadapter: 0.9.0 -> 0.10.0 (#360148)
6e27a49de18a5 python312Packages.optimum: 1.23.0 -> 1.23.3 (#360128)
5600911ee8698 python312Packages.scikit-posthocs: 0.9.1 -> 0.11.0 (#359913)
841a952de1397 python312Packages.tensorflow-metadata: 1.15.0 -> 1.16.1
2b2be7e4ef978 python312Packages.tinydb: 4.8.0 -> 4.8.2 (#359124)
8028c0ca4012d python312Packages.art: 6.3 -> 6.4 (#359512)
e032f6ca46ade mlflow-server: 2.17.2 -> 2.18.0 (#359546)
9fd6755173f3e commitizen: 3.30.0 -> 4.0.0 (#359650)
e949cb33cef2e eksctl: 0.194.0 -> 0.197.0 (#362174)
abba89a3ec92d python312Packages.marimo: 0.9.14 -> 0.9.27 (#359698)
5a4f44dd31e7f python312Packages.scikit-posthocs: 0.9.1 -> 0.11.0
ce9e1e9d6ab77 minijinja: 2.4.0 -> 2.5.0 (#362666)
c97ad4346b9f1 python312Packages.langsmith: 0.1.137 -> 0.1.147 (#359993)
745a890dbdd7c nixos/hostapd: remove HT40- from default capabilities (#362677)
63dcaf4badb13 mozillavpn: 2.24.1 -> 2.24.3
8d612848f98f7 python312Packages.rdflib: 7.0.0 -> 7.1.1 (#360380)
6d2395e8c6dbc python312Packages.itemadapter: 0.9.0 -> 0.10.0
e05c734f9248d ndcurves: 1.4.1 -> 2.0.0 (#362263)
1d01648393d82 python312Packages.replicate: 1.0.1 -> 1.0.4 (#360250)
379aeabd483df python312Packages.dm-haiku: 0.0.12 -> 0.0.13
564a8d3d0e40f dbeaver-bin: 24.2.3 -> 24.3.0 (#362563)
268bc0de7a50a python312Packages.django-import-export: 4.1.1 -> 4.3.3 (#362409)
8e413c45338d3 python312Packages.sphinxcontrib-confluencebuilder: 2.7.1 -> 2.9.0 (#360513)
8c6400ff8377b bazel-gazelle: 0.39.1 -> 0.40.0
daf0295d630ae xsubfind3r: 0.7.0 -> 0.9.1
9da738ea18e63 sonivox: 3.6.13 -> 3.6.14
3dcd875c9a362 cot: fixes for python312 (#362256)
51da93207ee52 python312Packages.rdflib: use default pytestCheckHook
0290856af4e05 python312Packages.total-connect-client: 2024.5 -> 2024.12
3d73d05791873 time: fix implicit function declaration (#362226)
9ded9ca8eb4d0 python312Packages.rdflib: 7.0.0 -> 7.1.1
25261a0199d65 harbor-cli: 0.0.1 -> 0.0.2
be4a655cf2e32 modules/avahi: Enable IPv6 by default (#361016)
5714c33244540 python312Packages.sphinxcontrib-confluencebuilder: 2.7.1 -> 2.9.0
3d7bcbb8105ae gatus: 5.13.0 -> 5.13.1
a146b20e543fc python312Packages.gsd: 3.4.0 -> 3.4.2 (#360536)
6b7dea8d87151 peazip: 10.0.0 -> 10.1.0
29b647f5c57d2 micropython: 1.24.0 -> 1.24.1
d3bcad147bd63 weaver: 0.10.0 -> 0.11.0 (#362378)
1a78b859f3594 pytr: 0.3.0 -> 0.3.1 (#362512)
7053f294538be trueseeing: 2.2.4 -> 2.2.5
8e58a34739caa pyspread: 2.3 -> 2.3.1
8d180bf83cdb6 opentelemetry-collector-builder: 0.114.0 -> 0.115.0
940b0e9a7123d uxn: 1.0-unstable-2024-10-19 -> 1.0-unstable-2024-11-30
dc6b8fa2ed1ae step-ca: 0.28.0 -> 0.28.1
4b40dbcf8e93a abcmidi: 2024.10.10 -> 2024.12.06 (#362402)
45691701c3810 pam: Use freebsd.pam on FreeBSD
117edf2f5cb9b firebase-tools: 13.20.2 -> 13.28.0
21cf8f9842d66 crd2pulumi: 1.5.3 -> 1.5.4
d5f8109306590 flarectl: 0.108.0 -> 0.111.0
a043000373a5b vtm: 0.9.99.35 -> 0.9.99.55
486f034b93f34 lefthook: 1.8.1 -> 1.9.0
41331ec50715b gqlgenc: 0.25.3 -> 0.27.3
762a740b7bda4 python312Packages.weaviate-client: 4.9.4 -> 4.9.6
d680ca289f88b sarif-tools: 3.0.2 -> 3.0.4
0abc80da7fccf chromium: remove ofborg maintainer ping workaround, use CODEOWNERS (#362543)
5d4235a89765e onedrive: patch hardcoded paths (#362646)
8a97d662ddc24 nixos/hostapd: remove HT40- from default capabilities
c77b49d099d05 treewide: Remove obsolete workaround for fetchCargoTarball (#362570)
2c9d2c73051a8 simulide: correct version definition
f3cac64f4d786 phpunit: 11.3.6 -> 11.5.0
03ad72a502432 qtscrcpy: 2.2.1 -> 3.0.0 (#362639)
cfc9a8a555f6d cargo-show-asm: 0.2.41 -> 0.2.42
acdbfffd07896 scrcpy: 3.0 -> 3.0.2 (#361943)
45fe26aaf8847 minijinja: 2.4.0 -> 2.5.0
af6d0825caa50 ttags: 0.4.1 -> 0.4.2
b139d3d874d24 vulkan-hdr-layer-kwin6: init at 0-unstable-2024-10-19 (#345805)
56e8788c8ab6f sudo-font: 2.0.0 -> 2.1
7ae4990c0f45d glooctl: 1.17.14 -> 1.17.16 (#356321)
495c41bcf2b3c jbang: 0.119.0 -> 0.120.4 (#356507)
8f2d4850fab0a renode-unstable: 1.15.3+20241004git4b8a8f170 -> 1.15.3+20241112git6e850cb52 (#356066)
a684bc7c1994a passt: 2024_09_06.6b38f07 -> 2024_10_30.ee7d0b6 (#356031)
b587256246d2a boogie: 3.2.5 -> 3.4.2 (#356053)
4d5a42681aacd wormhole-william: install shell completions
9bc50feb3b271 utm: 4.6.2 -> 4.6.3
995bd7643cd73 mint-l-theme: 1.9.8 -> 1.9.9 (#362638)
8a8487fc1b7fd python312Packages.pybids: 0.17.2 -> 0.18.1
d2428f7e442e2 onedrive: patch missed paths
b43c292077a5f lisp-modules: detect circular dependencies during quicklisp import
a86e263b9538f gimpPlugins.gap: mark as linux-only
a7140ff3f0945 gimpPlugins.gap: fix aarch64-linux build
448b2e3a7518a gimpPlugins.bimp: fix darwin build
3b33901cff7b9 terraform-providers.archive: 2.6.0 -> 2.7.0
67bb33e820f1e astyle: 3.6.4 -> 3.6.5
e99f4a48af9d3 devbox: 0.13.6 -> 0.13.7
b630bc0d382f2 dosbox-x: 2024.10.01 -> 2024.12.04 (#362072)
5d45a500ce076 qtscrcpy: 2.2.1 -> 3.0.0
182d43877a98b python312Packages.aioesphomeapi: 27.0.1 -> 28.0.0 (#362603)
208dc586487e2 python312Packages.sigstore-rekor-types: 0.0.13 -> 0.0.17 (#357817)
3e191c86b4b0c mint-l-theme: 1.9.8 -> 1.9.9
016f2d04c705c python312Packages.hass-nabucasa: 0.83.0 -> 0.86.0 (#362602)
161e50c6df7e4 python312Packages.mypy-boto3-s3: 1.35.74 -> 1.35.76 (#362632)
e889fb97d0642 python312Packages.sigstore: 3.5.1 -> 3.5.3
b79e67eb64400 python312Packages.sigstore-rekor-types: 0.0.13 -> 0.0.17
ecbf38cf9a27d cargo-temp: 0.2.22 -> 0.3.0
ced979000abcf python312Packages.securesystemslib: 1.1.0 -> 1.2.0 (#362633)
23e35ed93db4f mir: 2.18.3 -> 2.19.2 (#362220)
6f8499541f5a6 python312Packages.snowflake-connector-python: 3.12.3 -> 3.12.4 (#362479)
d530a7b9eaf03 nixos/lemmy: fix nginx backend to proxy needed headers (#306984)
7f4bcf7c815a2 anki: enable tests that are now fixed
f2ad5d4aeec43 python312Packages.pylamarzocco: 1.2.11 -> 1.3.2 (#362631)
f0ca7ba5581e0 python312Packages.securesystemslib: 1.1.0 -> 1.2.0
6ffd3875ca39e python312Packages.pontos: 24.9.0 -> 24.12.0 (#362610)
b4cc970bbc3bf python312Packages.aiortm: 0.9.38 -> 0.9.42 (#362604)
da35ecb61a166 python312Packages.aioopenexchangerates: 0.6.17 -> 0.6.18 (#362605)
0cd3f9ed019ed python312Packages.autoslot: 2022.12.1 -> 2024.12.1 (#362607)
2419bcfb3b925 python312Packages.asyncmy: 0.2.9 -> 0.2.10 (#362606)
046006262e07c python312Packages.fastcore: 1.7.22 -> 1.7.23 (#362608)
ef6387426a56f python312Packages.openrgb-python: 0.3.2 -> 0.3.3 (#362611)
67e9d204169b4 python312Packages.id: 1.4.0 -> 1.5.0 (#362612)
30a17658ac99c python312Packages.mypy-boto3-s3: 1.35.74 -> 1.35.76
501614a768249 python312Packages.weconnect: 0.60.5 -> 0.60.6 (#362615)
c90e086ba3193 containerlab: 0.59.0 -> 0.60.0 (#362284)
8c933f4d02b86 python312Packages.llama-index-core: 0.11.23 -> 0.12.1 (#357838)
0631a11eede03 python312Packages.pylamarzocco: 1.2.11 -> 1.3.2
05435f152ee63 mangayomi: 0.3.75 -> 0.3.8
36f4e01add1e7 gpxsee: 13.26 -> 13.32
30bdd1f9a05f1 python312Packages.pylamarzocco: 1.2.3 -> 1.2.11 (#359450)
093b0011a26c6 poetry: 1.8.4 -> 1.8.5
6b32ff9916668 python312Packages.pkginfo: 1.11.1 -> 1.12.0
ed65078227d93 python312Packages.llama-cloud: 0.1.5 -> 0.1.6
190e90e9fe150 python312Packages.llama-index-question-gen-openai: 0.2.0 -> 0.3.0
f94c54447acf2 python312Packages.llama-index-embeddings-ollama: relax ollama
e9a51c43beeb1 python312Packages.llama-index-program-openai: 0.2.0 -> 0.3.1
efe65ae5063ee python312Packages.llama-index-readers-s3: 0.3.0 -> 0.4.0
ada1261254f08 python312Packages.llama-index-llms-openai-like: 0.2.0 -> 0.3.0
250f38e1d63a6 python312Packages.llama-index-agent-openai: 0.3.4 -> 0.4.0
e91b0011816f8 python312Packages.llama-index-multi-modal-llms-openai: 0.2.3 -> 0.3.0
5eef17f8999e2 python312Packages.llama-index-llms-openai: 0.3.1 -> 0.3.2
0e0f7788233d9 python312Packages.llama-index-indices-managed-llama-cloud: 0.6.2 -> 0.6.3
4e8789601f3b8 python312Packages.llama-index-llms-ollama: 0.4.0 -> 0.4.1
7fed8724d2f9f python312Packages.llama-index-vector-stores-postgres: 0.3.0 -> 0.3.2
501ebee47f162 python312Packages.llama-index-cli: 0.3.1 -> 0.4.0
e95e2179ee848 python312Packages.llama-index-core: 0.12.1 -> 0.12.2
66e137cacffc2 python312Packages.llama-index-embeddings-gemini: 0.2.2 -> 0.3.0
b9790e52bd954 python312Packages.llama-index-embeddings-google: 0.2.1 -> 0.3.0
10196932892f8 python312Packages.llama-index-embeddings-huggingface: 0.3.1 -> 0.4.0
6fee9b2698265 python312Packages.llama-index-embeddings-ollama: 0.3.1 -> 0.4.0
de3d7e1b7b60a python312Packages.llama-index-embeddings-openai: 0.2.5 -> 0.3.0
6b69c4f77a59f python312Packages.llama-index-graph-stores-nebula: 0.3.0 -> 0.4.0
11f3a49b2bf97 python312Packages.llama-index-graph-stores-neo4j: 0.3.5 -> 0.4.0
770be765cf920 python312Packages.llama-index-graph-stores-neptune: 0.2.2 -> 0.3.0
c2b4b6f877ae6 python312Packages.llama-index-indices-managed-llama-cloud: 0.4.0 -> 0.6.2
445745b737957 python312Packages.llama-index-llms-ollama: 0.3.6 -> 0.4.0
931ddfd2ae9c4 python312Packages.llama-index-llms-openai: 0.2.16 -> 0.3.1
f0f1aca558b6e python312Packages.llama-index-readers-database: 0.2.0 -> 0.3.0
32fd961b84fe1 python312Packages.llama-index-readers-file: 0.3.0 -> 0.4.0
0ca5eccb31978 python312Packages.llama-index-readers-json: 0.2.0 -> 0.3.0
5eccc27f85fc5 python312Packages.llama-index-readers-llama-parse: 0.3.0 -> 0.4.0
9917a494deec3 python312Packages.llama-index-readers-twitter: 0.2.0 -> 0.3.0
25495a31da447 python312Packages.llama-index-readers-txtai: 0.2.0 -> 0.3.0
7ac3e82e7f293 python312Packages.llama-index-readers-weather: 0.2.0 -> 0.3.0
0767499134224 python312Packages.llama-index-vector-stores-chroma: 0.3.0 -> 0.4.0
626b683a7123e python312Packages.chromadb: 0.5.18 -> 0.5.20
59bcfab931ed4 python312Packages.llama-index-vector-stores-google: 0.2.0 -> 0.3.0
0fe6cbc6facf1 python312Packages.llama-index-vector-stores-postgres: 0.2.6 -> 0.3.0
bd7864fb6cc62 python312Packages.llama-index-vector-stores-qdrant: 0.3.3 -> 0.4.0
6abf35936b466 python312Packages.llama-index-core: 0.11.23 -> 0.12.1
301b8fe9acddd python312Packages.llama-cloud: 0.1.4 -> 0.1.5
411d15dc68efe python312Packages.weconnect: 0.60.5 -> 0.60.6
29313f73725ee openjph: 0.17.0 -> 0.18.1
cd580da23a417 collector: 0-unstable-2024-08-02 -> 0-unstable-2024-11-11
d1caef8c5b775 python312Packages.id: 1.4.0 -> 1.5.0
b0fed75a83288 python312Packages.pontos: 24.9.0 -> 24.12.0
de0efdf77900f python312Packages.openrgb-python: 0.3.2 -> 0.3.3
cc2454d93246a python312Packages.fastcore: 1.7.22 -> 1.7.23
612abc0c67830 python312Packages.autoslot: refactor
0d02317114092 python312Packages.autoslot: 2022.12.1 -> 2024.12.1
2d3107bd028f9 python312Packages.asyncmy: 0.2.9 -> 0.2.10
291591157d1e4 python312Packages.aiortm: 0.9.38 -> 0.9.42
cc6febd78974a python312Packages.aioopenexchangerates: 0.6.17 -> 0.6.18
a01ee2f7f3e0f terraform-providers.spacelift: 1.16.1 -> 1.19.0
ab29891a1995d terraform-providers.incus: 0.1.4 -> 0.2.0
4c0bbe324e862 terraform-providers.hcloud: 1.48.1 -> 1.49.1
11b9fa49b9849 home-assistant-custom-lovelace-modules.vacuum-card: init at 2.10.1 (#357070)
2943e975f3c29 python312Packages.aioesphomeapi: 27.0.1 -> 28.0.0
f1426205cee60 python312Packages.hass-nabucasa: 0.83.0 -> 0.86.0
ff1502b97d890 chsrc: init at 0.1.9
7a625d3ccf9b0 nixos/wivrn: add server flags option and refactor type check
70428ae6fcba4 home-assistant-custom-components.homematicip_local: 1.72.0 -> 1.73.0 (#362593)
87ae7fe2470d3 wivrn: 0.19 -> 0.22
1426c2534a721 checkov: 3.2.330 -> 3.2.332 (#362510)
87afc37a197e7 python312Packages.velbus-aio: 2024.10.0 -> 2024.11.1 (#362509)
ba1e58ddc81b6 python312Packages.dm-control: 1.0.25 -> 1.0.26
015328399ec73 home-assistant-custom-lovelace-modules.vacuum-card: init at 2.10.1
7e48fbbcad453 yara-x: 0.11.0 -> 0.11.1
da61cc23b502e ad-miner: 1.6.1 -> 1.7.0
2a5ea0028078f pnpm: 9.14.4 -> 9.15.0 (#362450)
627b07c9308d1 python312Packages.huggingface-hub: 0.26.3 -> 0.26.5
388fb86793c8a amdvlk: 2024.Q3.3 -> 2024.Q4.1 (#359068)
7e81a7f76dc14 home-assistant-custom-components.homematicip_local: 1.72.0 -> 1.73.0
05c78a8045d67 python312Packages.hahomematic: 2024.11.8 -> 2024.12.0
87cf5a7957e86 python312Packages.pyiceberg: init at 0.8.1
672b3f89455b5 nixos/bazecor: init
94f4b235d85ff python312Packages.posthog: 3.7.0 -> 3.7.4 (#362519)
6cdb99fb6222e bazecor: 1.5.4 -> 1.6.1
d4eb00756569c python312Packages.transformers: 4.46.3 -> 4.47.0 (#362247)
a4f09cbbf59a0 lomiri.lomiri-mediaplayer-app: init at 1.1.0 (#359708)
60ea1e34e590b gnome-secrets: 9.6 -> 10.3
77962d4e31e51 linuxKernel.kernels.linux_zen: 6.12.1-zen1 -> 6.12.2-zen1; linuxKernel.kernels.linux_lqx: 6.12.1-lqx1 -> 6.12.2-lqx3 (#362258)
fa58ce6381183 palemoon-bin: 33.4.1 -> 33.5.0 (#362141)
59f6a88d37481 ollama: 0.4.7 -> 0.5.0
ff32f66b32a07 python312Packages.rapidocr-onnxruntime: 1.3.24 -> 1.4.1
f0b23f7d01f02 xournalpp: 1.2.4 -> 1.2.5 (#362382)
719009450e92a docker-init: v1.3.0 -> v1.4.0 (#362386)
a61c5e4851f0b rustic: 0.9.4 -> 0.9.5
100f49fed4688 dnsvalidator: init at 0.1-unstable-2023-01-17
5d029a72b3ac5 sile: mark broken on darwin
5edc28dbabaae sile: drop obsolete workaround for fetchCargoTarball triggering configure
5017d41238526 git-warp-time: drop obsolete workaround for fetchCargoTarball triggering configure
9bde82f503b18 decasify: drop obsolete workaround for fetchCargoTarball triggering configure
82ab56b33201e nixos/locate: update hardening from upstream (#362126)
4a62c98471491 dotnet: fix packages that fail to build with strictDeps (#362420)
ced9c85be3043 gh-copilot: 1.0.1 -> 1.0.5
dd7d0b79b508f dbeaver-bin: 24.2.3 -> 24.3.0
938d142c35d03 unrar: 7.1.1 -> 7.1.2 (#362070)
e157e54d4d1c2 code-cursor: 0.43.0 -> 0.43.6
14c2813bd7429 tailwindcss: 3.4.14 -> 3.4.16
5ee7b3912f5c9 vimPlugins.blink-cmp: 0.7.1 -> 0.7.3 (#362468)
cc899859d834a pocketbase: 0.23.1 -> 0.23.4
08f55a8c723e0 raycast: 1.87.2 -> 1.87.4 (#362102)
08c3c0c0bf2f1 gpxlab: add symlink to binary on darwin, migrate to by-name (#358684)
992e5d075b518 pmtiles: 1.22.1 -> 1.22.2 (#362482)
5edab6395f0d7 gitu: 0.26.0 -> 0.27.0 (#362478)
674835a9d98fd chromium: remove ofborg maintainer ping workaround, use CODEOWNERS
96df5142416ca lazyjournal: init at 0.4.0
e6199124df8e7 buildFHSEnvBubblewrap: set meta.mainProgram
40c579ca29d3a buildFHSEnvBubblewrap: format default.nix
23211d6b59d89 python3Packages.django-mfa3: Enable failing test
a4b5b5f89dd51 linux_xanmod_latest: 6.11.10 -> 6.11.11
c55d81a2ef622 orbiton: 2.68.2 -> 2.68.4 (#362518)
93a5e4a31a80a sonarr: 4.0.10.2544 -> 4.0.11.2680
0bbfbc0b4395b dotnet: wrapper improvements (#362425)
3e4ce66fe0e28 python312Packages.scalene: 1.5.47 -> 1.5.49
a8f699a5730ad komikku: 1.64.0 -> 1.65.0 (#362524)
88f9f6f54e678 signal-desktop: 7.34.0 -> 7.35.0 (#361881)
fd39bbae626b4 chocolate-doom: 3.0.1 -> 3.1.0 (#361411)
d45d4a2aa7356 libratbag: 0.17 -> 0.18; piper: 0.7 -> 0.8 (#345782)
e8961d9e65ce5 nixos/prometheus: add mqtt-exporter (#289395)
166af0392765e python3Packages.django: fix build on 32 bit platforms (#353399)
4b5e02043f696 nixos/archisteamfarm: add mincore to SystemCallFilter
76eabd18069ef proxmox-auto-install-assistant: 8.2.6 -> 8.3.3 (#358939)
345d36a3e58a5 nixos/prometheus-mqtt-exporter: add release notes entry
efbb8bd904546 nixos/tests/prometheus-exporters: add tests for mqtt-exporter
2acc732b6a1db nixos/prometheus: add mqtt-exporter
1489d59ba0c20 waybar: add option for en-/disabling niri support (#361152)
7de803c703a15 minio-warp: init at 1.0.6 (#359607)
719cdf08a5fc9 openresty: make postgres module optional (#362426)
d5c7eaec3ba65 vsce/python: fix `pythonUseFixed` (#362323)
b3eca67865e2a nixos/openresty: fix build with nginx modules (#362348)
4b8b05c2e0d49 rosegarden:  22.12.1 -> 24.12 (#362427)
f341d4efa26e8 signalbackup-tools: 20241119 -> 20241205 (#361203)
54c06b3aa66af vtfedit: init at 1.3.3
aa9d02b5a1dd1 python312Packages.pycrdt: 0.10.7 -> 0.10.8 (#362488)
5627b82bfb402 pkgsite: init at 0-unstable-2024-12-06
7c4b748f98fe2 rtorrent: use vendored tinyxml2 for XMLRPC (#362158)
e0431c7d4f74d tcount: init at 0-unstable-2023-04-20
ab7512fbba738 git-town: 16.4.1 -> 16.7.0
b19376407d07e balena-cli: 19.0.13 -> 20.0.9
206ea9fae6ae1 signalbackup-tools: 20241119 -> 20241205
1b7d1024fbf66 orbiton: 2.68.2 -> 2.68.4
3b3d38924b441 ankama-launcher: 3.12.24 -> 3.12.26
2ea653e5689c9 python312Packages.posthog: 3.7.0 -> 3.7.4
6cedd792b1d02 prisma: 5.22.0 -> 6.0.1
733c49cda479c prisma-engines: 5.22.0 -> 6.0.1
a4f40e4a28676 python312Packages.velbus-aio: 2024.10.0 -> 2024.11.1
cb51162e00dbc pytr: 0.3.0 -> 0.3.1
a5f52e17341ca checkov: 3.2.330 -> 3.2.332
c6b810292b497 viddy: 1.2.1 -> 1.3.0
f145dbde156ef timeshift: 24.06.3 -> 24.06.5 (#362439)
89eb0f62750de villain: 2.2.0 -> 2.2.1 (#362428)
3df575831c205 opengist: 1.7.5 -> 1.8.3 (#354830)
921d4010265db jfrog-cli: 2.71.4 -> 2.72.2
d6b812546b521 gnat-bootstrap: fix and enable strictDeps (#361717)
cc7d5fc95a5e6 home-assistant-custom-components.solis-sensor: 3.7.1 -> 3.7.2 (#362440)
6b2892c47ef0e Revert "splice.nix: make `pkgs` `splicedPackages`" (#362496)
8a1be565fc42a amdvlk: 2024.Q4.1.3 -> 2024.Q4.2
9d9f4b50b446c Revert "splice.nix: make `pkgs` `splicedPackages`"
2463134e4cfcf wget: fix and enable strictDeps (#361823)
c122883ba8dcc codeberg-cli: 0.4.3 -> 0.4.6 (#362204)
3cb2fa6e00145 vagrant: 2.4.1 -> 2.4.3
d7f97a0223589 vulkan-caps-viewer: 3.43 -> 4.00 (#362459)
debf997987df5 splice.nix: make `pkgs` `splicedPackages` (#349316)
fd2d8e30cad84 dotnet: december 2024 update (#362191)
fe76ffc48a47c python312Packages.pycrdt: 0.10.7 -> 0.10.8
d7873e29680db rygel: remove unused gtk3 buildInputs (#362483)
d871680fc4465 knot-dns: 3.4.2 -> 3.4.3 (#362403)
ff688dd2b2d4e jujutsu: 0.23.0 -> 0.24.0
07cb36c3f9ce6 yt-dlp: 2024.12.3 -> 2024.12.6
f2e100dfc1e14 rygel: remove unused gtk3 buildInputs
4c4b9f09be7c9 zulip: expand platforms to all Linux (#362474)
2c8a792facf48 immich: 1.121.0 -> 1.122.1
1becf6e0dabfa ci: add mergify rules for nixpkgs (#360340)
32e4542ae6197 python312Packages.minio: 7.2.10 -> 7.2.12
8aa33662633f8 ci: add Nixpkgs lib-tests workflow (#361447)
f9175022d61a8 update-python-libraries: migrate git revs to tag (#362222)
c1b7fa8153b6d parallel: fix strictDeps (#362116)
7bdb5641a3b81 pmtiles: 1.22.1 -> 1.22.2
d6b6d8c37d422 google-chrome: 131.0.6778.85 -> 131.0.6778.108 (#362451)
66e1587207678 geesefs: 0.42.0 -> 0.42.3
adf2b41bfc590 gitu: 0.26.0 -> 0.27.0
b5c0139ca0dba python312Packages.snowflake-connector-python: 3.12.3 -> 3.12.4
7c1aca7140497 checkov: use default python (3.12) (#361733)
0965248341630 gvproxy: 0.8.0 -> 0.8.1
29d7565e1bf51 zulip: expand platforms to all Linux
a0ad081b9fc57 fluxus, racket_7_9: drop (#362330)
db607a647be64 nixos/cage: add package option (#359057)
a3fbadd7538b1 vimPlugins.blink-cmp: 0.7.1 -> 0.7.3
794630183a8a1 mlton: enable aarch64-darwin (#302487)
3aa821cdb3273 intel-compute-runtime: 24.39.31294.12 -> 24.45.31740.9 (#362374)
bff87365df805 lua-language-server: 3.13.2 -> 3.13.3 (#362390)
8695054aeeb98 gcalcli: 4.4.0 -> 4.5.1 (#352984)
f0fae9fc6b3e3 k9s: 0.32.6 -> 0.32.7 (#360993)
e690cce817d1a vulkan-caps-viewer: 3.43 -> 4.00
19941080a53b6 k0sctl: 0.19.2 -> 0.19.4 (#362418)
7354b62568e2b google-chrome: 131.0.6778.85 -> 131.0.6778.108
863cbb3c69088 rygel: make gtk support optional (#355937)
31fd6bfe49440 python312Packages.samsungtvws: 2.7.0 -> 2.7.2 (#362397)
b8e97a46eb4d7 gifski: move to by-name, use `useFetchCargoVendor` (#356968)
b59e28cd3cfb7 pnpm: 9.14.4 -> 9.15.0
10f4df2612931 simulide: migrate to pkgs/by-name (#359552)
d9d8de01960f1 warp-terminal: 0.2024.11.19.08.02.stable_03 -> 0.2024.12.03.08.02.stable_04 (#362298)
d22e55da7ee5c maintainers: update GitHub names (#362419)
889fd9b4c4ded s2geometry: enable on unix (#357688)
510e9307a054a delly: 1.3.1 -> 1.3.2 (#362400)
2876f99354733 oras: 1.2.0 -> 1.2.1 (#362395)
ca71b090cec23 oxker: 0.8.0 -> 0.9.0 (#362393)
bb2beebab3aac opnborg: 0.1.24 -> 0.1.44
4b8dd3f6d7c0d vkquake: 1.31.2 -> 1.31.3 (#354942)
eb3630761b9f6 cnspec: 11.33.0 -> 11.33.1 (#362392)
deb0f4238b313 prometheus-knot-exporter: 3.4.2 -> 3.4.3
0e55ef679161f zfs-replicate: 3.2.13 -> 4.0.0 (#358841)
f1c12935ad8f1 python312Packages.libknot: 3.4.2 -> 3.4.3
ce10e484bb834 cargo-sort: 1.0.9 -> 1.1.0 (#362362)
fe465a1c28cd8 apptainer, singularity: fix the update instructions in the comment (#359528)
6c23e1a5613f2 gotemplate: 3.11.0 -> 3.12.0 (#362249)
183a1fe0696ce mediainfo-gui: Fix missing GSettings schemas (#359367)
7ad421a9a998a home-assistant-custom-components.solis-sensor: 3.7.1 -> 3.7.2
f0b484fb06a0b protonvpn-gui: 4.7.4 -> 4.8.0 (#359877)
6f15fbd6b1c38 python3Packages.blake3: 0.4.1 -> 1.0.0 (#360435)
ab8c8edc97d64 foomatic-db: 0-unstable-2024-08-13 -> 0-unstable-2024-12-05
3195f07888455 foomatic-db*: add leading digit to version attribute
123a31096fc2c firefly-iii: fix typo (#360434)
9127655f5e472 rustPlatform.fetchCargoTarball: dontConfigure (by default) (#360540)
2ab6f6d616308 twig-language-server: 0.5.1 -> 0.6.0 (#362290)
1877695fd2430 mendeley: 2.122.1 -> 2.127.1 (#362303)
1b59a4564376e zizmor: 0.5.0 -> 0.7.0
cb1396b74e01d python312Packages.qtile-bonsai: init at 0.4.0 (#356700)
24e5f39987204 release-plz: 0.3.98 -> 0.3.110 (#362124)
643c68fc8e4de cargo-deb: 2.7.0 -> 2.9.1 (#362123)
f9224197450fa flent: Add passthru.updateScript
57fc5be4a6160 flent: Convert to unittestCheckHook
f28ecbe89ad90 lima: prefer version testing in installCheckPhase rather than passthru.tests.version
826ce5a8f2e52 ksmbd-tools: 3.5.2 -> 3.5.3 (#362077)
b59eb3364e8ce di: 4.54 -> 4.54.0.1 (#362059)
9b45c39cecf8e emacsPackages.ebuild-mode: 1.75 -> 1.76 (#362049)
5575fca857776 redocly: 1.25.9 -> 1.25.11 (#362058)
d2de853317bf1 vips: 8.15.5 -> 8.16.0
fe04f12dd0840 python312Packages.django-admin-datta: 1.0.11 -> 1.0.15 (#361968)
6ac1bd2978dc4 garnet: 1.0.39 -> 1.0.46 (#361658)
e36bbe793ec5a lock: 1.2.0 -> 1.3.0 (#361663)
30928d42d90b0 treesheets: 0-unstable-2024-09-08 -> 0-unstable-2024-11-24 (#359801)
faa59aa55a42c cni-plugins: 1.6.0 -> 1.6.1 (#362047)
8682a88957421 gitlab-release-cli: 0.19.0 -> 0.20.0 (#362387)
74eae6a8b48c3 nixos/cinnamon: Add x-cinnamon-mimeapps.list
f0ea6d083f3ac bore-cli: 0.5.1 -> 0.5.2 (#362255)
73405c08ca81e phpExtensions.blackfire: 1.92.28 -> 1.92.29 (#362269)
c7c110e9a938f python312Packages.sip: 6.8.6 -> 6.9.0 (#362184)
cb4fa6a8044c7 python312Packages.pyqt-builder: 1.16.4 -> 1.17.0 (#362187)
f6bdeca7a72b7 python312Packages.ihm: 1.7 -> 1.8
608bb54d5005f witness: 0.6.0 -> 0.7.0 (#362275)
3c6bcb59656ee python312Packages.molecule: 24.9.0 -> 24.12.0 (#362282)
0846466411b94 screenfetch: 3.9.1 -> 3.9.9 (#361850)
81ab50ae91c38 python312Packages.django-import-export: 4.1.1 -> 4.3.3
b862828a8feb5 python312Packages.cvelib: 1.6.0 -> 1.7.0 (#362286)
cb6b8cf536f63 hurl: 5.0.1 -> 6.0.0 (#361938)
a560959b1d0a5 hfst-ospell: 0.5.3 -> 0.5.4 (#361979)
38b5139ea0856 villain: 2.2.0 -> 2.2.1
a4bfd6200f2c5 proton-pass: 1.24.1 -> 1.25.0 (#362125)
91fe162f69988 rosegarden: move to pkgs/by-name
7d4576b814746 timeshift: fix meta.longDescription (the wrapper part)
85dae69cb7061 raspberrypifw: 1.20240926 -> 1.20241008 (#351605)
20fc90dd72c66 fwupd: 2.0.2 -> 2.0.3 (#362399)
f924e6357195a rosegarden: format with nixfmt
3e65feb9c7e15 rosegarden: 22.12.1 -> 24.12 changelog: https://rosegardenmusic.com/wiki/dev:24.12
74fc7ef8c2f9f timeshift: 24.06.3 -> 24.06.5
791b829b32ddc dotnetCorePackages.combinePackages: use wrapper
895b69405c103 dotnet: make wrappers usable as DOTNET_ROOT
cb29290646fd4 openresty: make postgres module optional
32890ed46eafb knot-dns: add .meta.changelog
b6aa3932ce237 nixos/lib/qemu-common: fix cross to x86_64 (#327349)
122f86cec61e7 tagger: fix build with strictDeps
194de8cdd3d91 github-runner: fix build with strictDeps
7e3d4971b9031 dafny: fix build with strictDeps
3c19fbca2429a k0sctl: 0.19.2 -> 0.19.4
e2dabfa5e1ca0 osmscout-server: 3.0.0 -> 3.1.0 (#339758)
4e2aca6051827 pulumi-esc: 0.11.0 -> 0.11.1
8adcc7fc3a42b crystal: add fish completions (#362279)
3c349d1ffb31e nixos/vault-agent: make template value optional (#283534)
0c08b2b82a468 Cinnamon updates 2024-12-05 (#362092)
9ff1494545fa2 sbctl: 0.14 -> 0.16 (#332560)
2b6dd1e5a4f3b woof-doom: 15.0.0 -> 15.0.1
541eefafee65a xmrig-mo: 6.22.1-mo1 -> 6.22.2-mo1
1b23de0eae699 hypnotix: 4.6 -> 4.7 (#362277)
fe99acdd31e2b woof-doom: add nix-update-script
2361852cc5bf2 maintainers/scripts: add check-maintainer-usernames
a2420d6b98174 maintainers: update GitHub names
732a49ecc902c protonmail-desktop: 1.0.6 -> 1.5.1 / fix update-script (#356737)
44082b371a42f python312Packages.globus-sdk: 3.48.0 -> 3.49.0
b11ff5d1d5dba python312Packages.boto3-stubs: 1.35.72 -> 1.35.74, python312Packages.botocore-stubs: 1.35.72 -> 1.35.73 (#361581)
c14b69704a9eb knot-dns: 3.4.2 -> 3.4.3
2f66cc6748b51 abcmidi: 2024.10.10 -> 2024.12.06
16be790812b5c fwupd: 2.0.2 -> 2.0.3
ccbc75e3e9e8e delly: 1.3.1 -> 1.3.2
0850b8d575c01 vimPlugins.lazy-nvim, vimPlugins.LazyVim: update on 2024-12-06 (#362369)
c4cfde7078eea python312Packages.samsungtvws: 2.7.0 -> 2.7.2
7ad1c658a7057 crystal: prefer installShellCompletion and installManPage
3a5dd14065682 python312Packages.google-cloud-dlp: 3.23.0 -> 3.25.1 (#362318)
d23cf6671fea1 oras: 1.2.0 -> 1.2.1
31e2b89076310 python312Packages.roadlib: 0.27.0 -> 0.29.0 (#362001)
6bf2358f4a11c simdjson: 3.10.1 -> 3.11.0
7e9b948b5a040 metasploit: 6.4.37 -> 6.4.39 (#362165)
32cfa7e13b472 checkov: 3.2.328 -> 3.2.330 (#362167)
745ee122cb356 nuclei-templates: 10.0.4 -> 10.1.0 (#362168)
718426a0277fa prowler: 4.6.1 -> 5.0.0 (#362169)
31533747ba9b6 python312Packages.mypy-boto3-kendra: 1.35.0 -> 1.35.75, python312Packages.mypy-boto3-sagemaker: 1.35.68 -> 1.35.75 (#362175)
bcb1005a5bbbf python312Packages.plugwise: 1.6.1 -> 1.6.2 (#362176)
1d866e6339db4 python312Packages.aiohomeconnect: 0.6.2 -> 0.6.3 (#362178)
4140c07b02e12 oxker: 0.8.0 -> 0.9.0
6ef358258f8c7 python312Packages.slack-sdk: 3.33.4 -> 3.33.5 (#362179)
3eac3a5c65a72 python312Packages.upb-lib: 0.5.8 -> 0.5.9 (#362242)
c278fa738d8c1 cnspec: 11.33.0 -> 11.33.1
f52a24bc1ba10 python312Packages.twilio: 9.3.7 -> 9.3.8 (#362180)
97dffecc0fe4d sqlline: init at 1.12 (#359236)
07fa42fef27e3 python312Packages.check-manifest: 0.49 -> 0.50 (#362183)
8583c47ec13d1 dnf5: 5.2.8.0 -> 5.2.8.1
df58b71c01482 sqlmap: 1.8.11 -> 1.8.12 (#362185)
5873cbc25d8ac crowdsec: 1.6.3 -> 1.6.4 (#362186)
607bcbbc19def urlscan: 1.0.3 -> 1.0.6 (#362202)
1d6bac5bec1b8 flexget: 3.11.49 -> 3.12.1 (#362212)
0138f40ad1994 httping: 4.1.0 -> 4.2.0 (#362214)
46e6d02933432 python312Packages.msgraph-sdk: 1.13.0 -> 1.14.0 (#362238)
7198eec9b9de8 python311Packages.pytelegrambotapi: 4.23.0 -> 4.24.0 (#362237)
0464a87f3a928 python312Packages.skyboxremote: init at 0.0.6 (#362245)
046886a4b101a python312Packages.pynordpool: init at 0.2.2 (#362246)
da92d1a5e3f55 python312Packages.botocore-stubs: 1.35.74 -> 1.35.76
2a25904a7217c python312Packages.boto3-stubs: 1.35.74 -> 1.35.76
48baa494a0b31 python312Packages.botocore-stubs: 1.35.73 -> 1.35.74
8f4f4b7287177 python312Packages.botocore-stubs: 1.35.72 -> 1.35.73
bb8a04411c86b python312Packages.boto3-stubs: 1.35.72 -> 1.35.74
408068a3eb3e2 clash-rs: set mainProgram to clash (#362385)
3cfec09792b13 lua-language-server: 3.13.2 -> 3.13.3
097248f4e0368 nixos/nscd: increase default timeout to 10 seconds (#290355)
527af4129c7db {open,edge}tx: add meta.mainProgram (#361901)
2160e7db923d9 zulip: build package from source (#279545)
e8151e1869500 gitlab-release-cli: 0.19.0 -> 0.20.0
7b9861a58763b polybar: remove references to cc before makeWrapper (#353419)
889f246473030 clash-rs: set mainProgram to clash
55da4621f54e2 docker-init: v1.3.0 -> v1.4.0
28e73148eabc0 xournalpp: 1.2.4 -> 1.2.5
e5742015525cc ocamlPackages.reason-react: init at 0.15.0 (#361483)
9d186449dc922 radicle-httpd: 0.17.1 -> 0.18.0 (#362281)
a29d846e26d26 filesender: 2.50 -> 2.51
13ba4d646c886 kdiff3: 1.11.4 -> 1.11.5
f59f2daba3d5b ocamlPackages.mirage-crypto-rng-eio: init at 1.1.0
c80280682b5dd rutorrent: 4.3.8 -> 5.1.1
ca2fd2e8d2ac3 nixos/release-notes: Fix broken option links (#362370)
c769b4d2fb9ce weaver: 0.10.0 -> 0.11.0
5011a2c53c009 parallel: 20240922 -> 20241122 (#362098)
bd200697e9d95 nixos-rebuild-ng: show help when manpage is disabled
8f1894ffd3018 xournal: drop
f57ae5aba93b0 intel-compute-runtime: 24.39.31294.12 -> 24.45.31740.9
4f8eb8d6b372a ocamlPackages.reason-react: init at 0.15.0
bce3c80f903de nixos/release-notes: Fix broken option links
f883190cf10a9 ledger-live-desktop: 2.89.1 -> 2.92.1 (#362315)
0c657ff633897 vimPlugins.lazy-nvim, vimPlugins.LazyVim: update on 2024-12-06
8a693f4e59afb xfsprogs: 6.11.0 -> 6.12.0
9d9d11a67345a python312Packages.publicsuffixlist: 1.0.2.20241203 -> 1.0.2.20241205 (#362355)
e6e07531bcb40 nixos/languagetool: fix description on allowOrigin option (#315412)
c933df874ca07 grip-grab: init at 0.6.7
91f2c5f2a2f73 nixos/postfix: add missing mkDefault for smtpd tls config (#343805)
781e061652041 cargo-sort: 1.0.9 -> 1.1.0
63a6762cdfe75 nixos/gotenberg: fix service config for chromium (#346639)
c11e96af6cbfb audiobookshelf: 2.17.2 -> 2.17.4
00c682e770861 joypixels: 8.0.0 -> 9.0.0 (#349056)
8089e6b43a9ff opentofu: 1.8.6 -> 1.8.7 (#362110)
0a1505336a292 gh: 2.63.0 -> 2.63.2
9486e836ccf7a zenoh: initial add 1.0.3
896813431f304 maintainers: add cryo
b3ae859368264 python312Packages.publicsuffixlist: 1.0.2.20241203 -> 1.0.2.20241205
46cf534832cd6 treewide: drop more gtk2 packages (#361708)
7dd001f3e2024 argon: init at 2.0.21 (#351091)
d8dfbe84b9046 deepin.deepin-turbo: remove (#362343)
2936a2ab9ba61 lib.strings.concatMapAttrsStringSep: init (#330010)
7da5162201ba9 eccodes: 2.36.0 -> 2.39.0
2c5f0b0e5f1f0 deepin.deepin-turbo: remove
abe6f1d91b142 sqlline: init at 1.12
de5658c9e4d0d deepin.deepin-calculator: 5.8.24 -> 6.5.2 (#362023)
a2cd533bdc01c nixos/doc/rl-2505: release notes for fluxus, racket_7_9
20993a11e3b30 racket_7_9: drop
67d1a8ce89848 epic5: 3.0.1 -> 3.0.2
c77dab3ae5c71 linux_6_12: 6.12.2 -> 6.12.3 (#362325)
d35f40d3b310c fluxus: drop
9efa9ce516b3c Plasticity: Fix EGL
10f4a9ab7541c linux/common-config: enable support for crashkernel dumps (#347932)
f2edd270bfff7 linux config: enable cp15 barrier emulation on aarch64 (#354867)
5a787efe66e82 linux_6_12: 6.12.2 -> 6.12.3
a32211bb76f82 python312Packages.transformers: 4.46.3 -> 4.47.0
ac3c4a9fa08f5 python312Packages.tokenizers: 0.20.3 -> 0.21.0
33edad5d40ffa vsce/python: fix `pythonUseFixed`
f81aa03570b32 python312Packages.azure-mgmt-relay: fix msrest dependency (#362152)
2789978d14e2b phpExtensions.tideways: 5.14.0 -> 5.16.2 (#362267)
f3f54e50c0408 nodePackages.webpack-dev-server: drop (#362209)
d5716a34c9c58 phpPackages.phpstan: 2.0.2 -> 2.0.3 (#362259)
cf888a939ef2f python312Packages.azure-mgmt-logic: remove msrestazure dependency (#362156)
521bd4db8e5c9 python312Packages.google-cloud-dlp: 3.23.0 -> 3.25.1
22eb3277d79ef act: 0.2.68 -> 0.2.70 (#356372)
2b413270b507d ocamlPackages.js_of_ocaml: 5.8.2 → 5.9.1
af13d121e5671 wsysmon: remove procps dep and dynamically link spdlog (#343608)
cfc007382b8ba basex: 11.4 -> 11.6
e47ca1c49b39f clash-rs: 0.7.1 -> 0.7.3 (#359917)
0d4fa9db415fb llm: 0.17.1 -> 0.19 (#357075)
8c39875ae3f7a nixos/github-runner: use bashInteractive instead of bash (#339875)
77136f2adecba ledger-live-desktop: 2.89.1 -> 2.92.1
3848cb1761b14 bash-completion: hack around a release bug impacting BSDs (#360045)
64101f5ffbcf8 kopia: add shell completion scripts (#360216)
0e79533e24566 python3Packages.django-mfa3: Disable failing test (#362045)
185f392904f3f kind: 0.2.4 -> 0.2.5 (#355534)
4f9c3c087a9a3 dprint: add shell completions (#362139)
4820a4115cac9 copacetic: init at 0.9.0 (#357407)
5e3bd16ee8582 stylua: 0.20.0 -> 2.0.1
5ae933ec0d684 pv: 1.8.14 -> 1.9.7 (#362069)
e08e46e07aa39 go_1_22: 1.22.9 -> 1.22.10 (#361605)
3ef08b366463a butt: 1.42.0 -> 1.44.0 (#362013)
ebc1f2357757c cpupower: add which to nativeBuildInputs (#362044)
7791730675d41 flake-checker: 0.2.0 -> 0.2.1 (#362074)
c8f8a39a901ea git-open: 3.0.0 -> 3.1.0 (#362111)
0cd0e98df1989 kikoplay: init at 0-unstable-2018-03-22
9ce07d21c7204 mendeley: 2.122.1 -> 2.127.1
102ad463591c1 perlPackages.DBDMariaDB: fix strictDeps = true (#359874)
86014b26f55c8 mighty-mike: init at 3.0.2-unstable-2024-04-01
e4666afa18982 eza: 0.20.10 -> 0.20.11 (#362043)
8961ce813978b python312Packages.hg-git: 1.1.3 -> 1.1.4 (#362031)
47eb6c1225908 warp-terminal: 0.2024.11.19.08.02.stable_03 -> 0.2024.12.03.08.02.stable_04
d90d79a605f25 lima: prefer hash rather than sha256 in fetchFromGitHub
b994f1fa5aa1d lima: make sure it does not use pname for reponame
3edf8697d5f67 mailspring: 1.13.3 -> 1.14.0 (#361876)
1793ec791a0f1 mangayomi: init at 0.3.75 (#360181)
69b6ca0af8adb minimal-grub-theme: init at 0.3.0 (#361311)
226b3704236a0 tests.overriding: simplify implementation with lib.concatMapStringAttrsSep
037a7cbe01b02 apptainer: singularity: use lib.concatMapAttrsStringSep
b1371135b5db3 lib.strings.concatMapAttrsStringSep: init
c2dc40eb4d52b resources: 1.6.0 -> 1.7.0 (#362143)
a3551324c60d8 inputstream-adaptive: add symlink to libcdm_aarch64_loader, remove symlink for libssd_wv (#339580)
6e1b044e9e61d nixos/redmine: Add PrivateMounts to systemd unit settings (#361065)
0b5368a9421b2 twig-language-server: 0.5.1 -> 0.6.0
3e0af441a9d8c hypr-dynamic-cursors: 0-unstable-2024-11-10 -> 0-unstable-2024-11-19 (#362075)
6ca2e8aebab15 treewide: remove unused {lib,}clang from more build closures (#361298)
5f49a16745277 qtcreator: 14.0.2 -> 15.0.0 (#361650)
701b2a94cf621 python312Packages.cvelib: 1.6.0 -> 1.7.0
bf3e82c1f8b6d gnome-online-accounts-gtk: 3.50.4 -> 3.50.5 (#362274)
7e78a81755083 argon: init at 2.0.21
80bcf2625b3ed tailscale: 1.78.0 -> 1.78.1 (#362280)
3ed7532a54770 maintainers: add github attribute to amozeo (#360436)
f3b8df42ef124 containerlab: 0.59.0 -> 0.60.0
2a6b716fb4ec7 ArchiSteamFarm: 6.0.8.7 -> 6.1.0.3
4c58b47964ec5 new-lg4ff: 0.4.0 -> 0-unstable-2024-11-25 (#360385)
608e99e3d3306 tailscale: 1.78.0 -> 1.78.1
50d2d70cbabdc maintainers: add StayBlue
f652022407928 python312Packages.molecule: 24.9.0 -> 24.12.0
e7be80fdcdb00 radicle-httpd: 0.17.1 -> 0.18.0
6012143d23a75 argocd: 2.12.6 -> 2.13.1; add fish completions (#358264)
10004864a1ffa hypnotix: 4.6 -> 4.7
954e48a4e0f08 free42: 3.1.8 -> 3.1.10 (#361219)
81e6459faa779 dprint: add shell completions
555b648374a6b witness: 0.6.0 -> 0.7.0
596eb73570b14 gnome-online-accounts-gtk: 3.50.4 -> 3.50.5
5eafabf8dba1f beedii: init at 1.0.0 (#349097)
f212b495d309f dprint: 0.47.2 -> 0.47.6 and add version test (#354977)
a9137d056b6e4 kind: enable doCheck and add passthru.tests (#361466)
273369477b58d phpExtensions.blackfire: 1.92.28 -> 1.92.29
e3382c257c3fd crystal: add fish completions
110f55850c24c turbo: 2.3.0 -> 2.3.3 (#361921)
d3bd0040f232d nixos-rebuild: add thiagokokada as maintainer (#362244)
e68588e701ed5 hugo: enable doCheck with skipping failing tests (#361975)
02e0bf0e6ec91 python312Packages.binance-connector: 3.9.0 -> 3.10.0 (#360162)
1566a6b69c478 phpExtensions.tideways: 5.14.0 -> 5.16.2
54862bcdfbe78 linuxKernel.kernels.linux_zen: 6.12.1-zen1 -> 6.12.2-zen1
08239ae70716a copacetic: init at 0.9.0
ce5d74fbbafd7 python310: 3.10.15 -> 3.10.16
239c4467200aa python39: 3.9.20 -> 3.9.21
cebe48a77cf54 ndcurves: 1.4.1 -> 2.0.0
173c0f3194470 tplay: remove unused libclang from build closure
ab01eb0370954 solana-validator: remove unused libclang from build closure
ae045ab274b0a stratovirt: remove unused libclang from build closure
c3e0876a96cc4 mchprs: remove unused clang from build closure
661900b39980b zed-editor: remove unused clang from build closure
0e3c98fe7b385 linuxKernel.kernels.linux_lqx: 6.12.1-lqx1 -> 6.12.2-lqx3
fb93e0b7c9b31 phpPackages.phpstan: 2.0.2 -> 2.0.3
5c9f8971713e8 subread: 2.0.7 -> 2.0.8 (#361977)
867db1d91e417 Linux kernels 2024-12-05 (#362160)
bf94a919945f0 shufflecake: 0.4.4 -> 0.5.1
01c804f466426 bore-cli: 0.5.1 -> 0.5.2
5e9ea2c73c142 logrotate: disable acl on non-Linux platforms (#283483)
4f2613d90c91f jprofiler: 13.0.6 -> 14.0.5 (#360246)
47a92239db469 cargo-shuttle: 0.47.0 -> 0.49.0 (#361827)
ad4171cd3929b staruml: 6.2.2 -> 6.3.0 (#361340)
d4297d0e0c852 julia_111{,-bin}: 1.11.1 -> 1.11.2, julia_19{,-bin}: drop (#361178)
7e495fadb205b gotemplate: 3.11.0 -> 3.12.0
72d4d09d23d24 treesheets: fix darwin build
3ac4e337e1e49 treesheets: 0-unstable-2024-09-08 -> 0-unstable-2024-11-24
debfc9f3bb91c typora: add launcher
08e8952e1ab13 python312Packages.pynordpool: init at 0.2.2
21de726c192ca mailpit: 1.21.0 -> 1.21.5 (#360646)
3416e72d6523d gitoxide: 0.38.0 -> 0.39.0 (#360861)
8e770757c6d06 jazz2: 2.9.1 -> 3.0.0 (#360909)
44010ed604ab4 python312Packages.skyboxremote: init at 0.0.6
092aef6491b10 pdfium-binaries: 6721 -> 6872 (#359931)
1551874a6ae20 lynx: 2.9.0dev.12 -> 2.9.2 (#362192)
9b260257ff2bd home-assistant: update component-packages
61194a6d4b7dc maelstrom-clj: 0.2.3 -> 0.2.4 (#361932)
2d50bdc0afdf4 python312Packages.pylamarzocco: 1.2.3 -> 1.2.11
eec5a8bdb875d nixos-rebuild: add thiagokokada as maintainer
77fb5441bfe18 graphene-hardened-malloc: add updateScript (#360468)
b6a73a110fcc6 python312Packages.upb-lib: 0.5.8 -> 0.5.9
97f1216c3f660 wipeout-rewrite: 0-unstable-2024-07-07 -> 0-unstable-2024-11-09
5eb75bf013ce3 sidplayfp: Modernise
b5db689b8ac95 sidplayfp: 2.11.0 -> 2.12.0
abb5090d1ef1f mangayomi: init at 0.3.75
4a9420c739e82 libsidplayfp: 2.11.0 -> 2.12.0
8cd32243b55b8 python311Packages.pytelegrambotapi: 4.23.0 -> 4.24.0
979c64655bbfa joplin-desktop: fix unpacking on x86_64-darwin with 7zz (#361912)
2843169b006a1 cargo-modules: 0.19.1 -> 0.20.2
bc85e2eac5598 python312Packages.msgraph-sdk: 1.13.0 -> 1.14.0
7016c90a7e575 tailscale: 1.76.6 -> 1.78.0 (#362225)
e4b06f587ee43 sptlrx: 1.1.0 -> 1.2.2 (#360405)
07f102059297e python312Packages.gradio-pdf: 0.0.17 -> 0.0.19 (#361804)
e1bf3822864e7 haguichi: Migrate to by-pkgs
0e8a27ece5bcc haguichi: nixfmt
c311c34523a38 haguichi: 1.5.0 -> 1.5.1
9234025c07ae9 OWNERS: update python update script ownership
80cdb176ad6fa tailscale: 1.76.6 -> 1.78.0
7c0fc9cf188a3 famistudio: .NET 7 -> 8 (#361867)
8f2b01cb67cb3 update-python-libraries: migrate git revs to use tag
b8704b00bcbb0 update-python-libraries: fix helper script after by-name migration
b14e7f5fc29be miriway: 24.10.1 -> 24.11.1
db2b768ef87dc miracle-wm: Fix compat with mir 2.19
d8840638d26b6 mir: 2.18.3 -> 2.19.2
839585c58c032 youtube-music: fix desktopName and startupWMClass
a58774a9689eb gqmqtt: init at 0.2.0-alpha (#360312)
6cf39d3d7accf flexget: 3.11.49 -> 3.12.1
af327b3493667 taterclient-ddnet: 9.0.0 -> 9.0.1 (#360538)
5a8f83664cab1 httping: 4.1.0 -> 4.2.0
4b641f48a4c21 nodePackages.webpack-dev-server: drop
56262ecfd3f87 milkytracker: Migrate to by-name
089f7815b4b1c milkytracker: Modernise
a60896307182e python312Packages.pyreadstat: 1.2.7 -> 1.2.8 (#360532)
e0e69f2d76227 milkytracker: 1.04.00 -> 1.05.01
e80f0513591c7 linuxPackages.r8125: 9.013.02 -> 9.014.01 (#361615)
9a10296d87755 urlscan: refactor
20ad8360fa783 codeberg-cli: 0.4.3 -> 0.4.6
dd34a907fac04 urlscan: 1.0.3 -> 1.0.6
2e0d114024866 flirt: init at 0.2 (#362189)
8323395a04dc2 oh-my-posh: 23.20.3 -> 24.11.4 (#362171)
14e7e223a1b91 komac: add shell completions (#362157)
ce5e6aac3f870 stella: 7.0 -> 7.0b (#361408)
7cb3aa38e527a opentelemetry-collector-contrib: fix darwin builds (#362159)
485abf95896f8 resources: 1.6.0 -> 1.7.0
73e492d365dc0 dotnetCorePackages.dotnet_9.vmr: 9.0.0 -> 9.0.101
9bb136edda316 dotnet: nixfmt output of nuget-to-nix (#361579)
96af88adc81c7 lynx: 2.9.0dev.12 -> 2.9.2
48733b509ecef nixos/prometheus-restic-exporter: add option to specify repository as a file (#344983)
54dcafdd31156 drm_info: 2.3.0 -> 2.7.0
9dcb0c5ddae42 drm_info: move to by-name, adopt, format
9b37d566f2019 nixos/asusd: correct suffix of asus/profile.conf to ron (#285904)
92951015e6e0c openseeface: init at 1.20.4-unstable-2024-09-21 (#289617)
76541074a2dbe komika-fonts: init at 0-unstable-2024-08-12 (#334261)
9751944f85ec8 flirt: init at 0.2
8b5bc060a92e9 maintainers: Add adda
62ef0ec30365d rtorrent: use vendored tinyxml2 for XMLRPC
716603a233d17 python312Packages.pyqt-builder: 1.16.4 -> 1.17.0
188e988f72f4f sqlmap: 1.8.11 -> 1.8.12
76c13cf2c2da2 crowdsec: 1.6.3 -> 1.6.4
b0749e8e6fbce linuxPackages.nvidiaPackages.latest: 560.35.03 -> 565.77 (#362162)
20f7926344faf python312Packages.sip: 6.8.6 -> 6.9.0
6dc317f692e84 python312Packages.azure-multiapi-storage: fix build (#362147)
440ec8bb8146b python312Packages.check-manifest: 0.49 -> 0.50
ddd75c825beae python312Packages.aiohomeconnect: 0.6.2 -> 0.6.3
5470d9663b6aa python312Packages.slack-sdk: 3.33.4 -> 3.33.5
92b48d7717934 python312Packages.twilio: 9.3.7 -> 9.3.8
dd9608a5d82e7 dotnet/update.nix: use tag name to check for updates
a611045f3df0b arrpc: 3.4.0 -> 3.5.0; add systemd user service
376975bdf6645 arrpc: format
a390ec54d9c89 qemu: fix strictDeps (#358487)
4cb91d62e0652 python312Packages.plugwise: 1.6.1 -> 1.6.2
a0b7a4ea1e295 eksctl: 0.194.0 -> 0.197.0
f63243de45c1e python312Packages.azure-mgmt-relay: slightly modernize
124b22467423c python312Packages.azure-mgmt-relay: remove unused dependencies
21e9e52183fd5 linuxPackages.nvidiaPackages.vulkan_beta: 550.40.80 -> 550.40.81 (#362164)
a8fd645b08199 komac: add shell completions
d0316395c33e3 oh-my-posh: 23.20.3 -> 24.11.4
497d9e140d807 python312Packages.mypy-boto3-sagemaker: 1.35.68 -> 1.35.75
4346b82dc7a62 python312Packages.mypy-boto3-kendra: 1.35.0 -> 1.35.75
2585e41503d41 prowler: 4.6.1 -> 5.0.0
915a9de5b3ab3 linuxPackages.nvidiaPackages.latest: 560.35.03 -> 565.77
e19e156796ad0 fsautocomplete: 0.73.2 -> 0.75.0 (#360986)
0bca244b37ea1 qpwgraph: 0.7.9 -> 0.8.0 (#362057)
50635d4aa3c99 metasploit: 6.4.37 -> 6.4.39
1371a1605d989 burpsuite: 2024.10.1 -> 2024.11.1 (#360758)
fbc5b67ceb97d nanopb: 0.4.9 -> 0.4.9.1 (#362032)
76f17a419ac0c linuxPackages.nvidiaPackages.vulkan_beta: 550.40.80 -> 550.40.81
d238584a09dc7 dotnet/update.nix: remove stray debug print
4f8728c893b69 linux_6_11: 6.11.10 -> 6.11.11
2cc3ff02022b8 linux_6_12: 6.12.1 -> 6.12.2
17ddfd8ca1090 opentelemetry-collector-contrib: fix darwin build
11cbbfdd08440 python312Packages.azure-mgmt-logic: modernize
4b11103f9da89 python312Packages.azure-mgmt-logic: remove msrestazure dependency
d148c22b95472 qhexedit2: init at 0.8.9 (#343340)
b1d10ad85e168 dotnet-sdk_9: 9.0.100 -> 9.0.101
62fb70556cc6d python312Packages.azure-multiapi-storage: modernize and fix metadata
4ba028e8856a3 dotnet/update.sh: check sdk version when updating
cb8dd4a8adc9f opengist: 1.7.5 -> 1.8.3
5873ae414338d ibm-plex: add sans-sc family (#361469)
07e0e431b1d35 qhexedit2: init at 0.8.9
3f056db59cc2b ibus: fix cross compilation (#346076)
6faab9df81591 python312Packages.azure-mgmt-hdinsight: modernize
d6a797d5c95d2 python312Packages.azure-mgmt-hdinsight: remove msrestazure dependency
9c51cc752f1e0 palemoon-bin: 33.4.1 -> 33.5.0
692575b159dd0 adw-gtk3: 5.5 -> 5.6 (#360512)
5fb97b7ad5c3f docker-init: init at v1.30.0 (#356191)
04bf3d877437f nixos/modules/virtualisation: additional configuration options (#349537)
548c320a5ed2c python312Packages.azure-mgmt-servicebus: modernize
51e98f6c7965f vscode-extensions.ltex-plus.vscode-ltex-plus: init at 15.3.0 (#362085)
9e7fccbc7cf89 python312Packages.azure-mgmt-servicebus: remove unused msrestazure dependency
3477b395af108 hyprgui: 0.1.9 -> 0.2.0
6370e0f9a45b8 python312Packages.azure-multiapi-storage: fix build
a2328f5839588 kopia: enable doCheck (#362018)
e2ff9880971d9 dclock: init at 0.1.0 (#361576)
5f5310b145379 apptainer: 1.3.5 -> 1.3.6 (#361914)
8ba7a982700b6 element-call: 0.6.3 -> 0.7.1 (#361044)
98ebcdc8e6cd2 oneanime: init at 1.3.6 (#361485)
e0a5787289a26 kopia: 0.17.0 -> 0.18.2 (#357832)
0254bc67821a9 apptainer, singularity: fix the update instructions in the comment
bd3ea645591cd cpupower: add `which` to nativeBuildInputs
d4fc8be8a57c5 oneanime: init at 1.3.6
91a69c874cf29 proton-pass: 1.24.1 -> 1.25.0
958bee59f416d python312Packages.rivet: 4.0.1 -> 4.0.2
b6c7c3abceb62 release-plz: 0.3.98 -> 0.3.110
2b6e06055073b cargo-deb: 2.7.0 -> 2.9.1
70f3a1673a438 handbrake: 1.8.2 -> 1.9.0
9e8fac2a586b3 parallel: fix strictDeps
8fb55a6eb93c8 Revert "scarab: remove nuget patch"
194c000ab52a4 wiki-tui: 0.8.2 -> 0.9.1
7822cb34f86bc fetchgit{,hub}: add tag argument (#355973)
3fbdc36f5b89f termshot: 0.2.8 -> 0.2.12 (#361852)
e9a31f51468e4 fetchgit{,hub}: assert illegal tag + rev combinations
f9627eafd4298 git-open: 3.0.0 -> 3.1.0
4ae5e6518e133 opentofu: 1.8.6 -> 1.8.7
949cdbb64c140 python312Packages.recurring-ical-events: 3.3.3 -> 3.3.4 (#361883)
9c34193fcba32 python312Packages.zope-exceptions: 5.1 -> 5.2 (#361639)
1306de2eec13c wgpu-native: init at 22.1.0.5 (#362014)
f5ed5aa6730e2 python312Packages.transaction: 4.0 -> 5.0 (#361685)
61220b974e1e4 element-desktop: 1.11.86 -> 1.11.87 (#361707)
1bfaefdc7b50f emacsPackages.ebuild-mode: drop maintainership (#362104)
f489a60576007 hyprlandPlugins.hyprscroller: 0-unstable-2024-11-23 -> 0-unstable-2024-11-29 (#360964)
0f013251650b9 python312Packages.plaid-python: 27.0.0 -> 28.0.0 (#362056)
9036f4a0c9ed8 emacsPackages.ebuild-mode: drop maintainership
e039cdd968efb lunacy: 10.0.1 -> 10.9.0 (#362008)
8560773da2951 commonsCompress: 1.26.2 -> 1.27.1 (#362011)
e2a3323d0047a raycast: 1.87.2 -> 1.87.4
aa78cc3dba192 google-alloydb-auth-proxy: init at 1.11.3 (#357420)
19b44a75baa97 timeular: 6.8.4 -> 6.8.5 (#362029)
d6c2d483f153e python312Packages.yattag: 1.16.0 -> 1.16.1 (#361969)
3b124c3c6233b sakura: 3.8.7 -> 3.8.8 (#361970)
10f375a0e97cb openstackclient-full: 7.2.0 -> 7.2.1 (#361976)
1b534cb813c05 python312Packages.mockito: 1.5.1 -> 1.5.3 (#361983)
afbcac7241774 remotebox: 2.7 -> 3.4
4bd660accd407 nimdow: 0.7.39 -> 0.7.40 (#361989)
c2ec45335319a gnome-network-displays: 0.93.0 -> 0.94.0 (#361995)
cd89605adf93c commonsIo: 2.17.0 -> 2.18.0 (#361996)
8504394b66513 door-knocker: 0.5.0 -> 0.6.0 (#361997)
63262e6ed943b wxmaxima: 24.08.0 -> 24.11.0 (#361998)
fd55f36c22220 tagparser: 12.3.1 -> 12.4.0 (#361927)
61c7b94dfb6c8 sticky: 1.22 -> 1.23
557621a10f51d lightdm-slick-greeter: 2.0.7 -> 2.0.8
389601fa73569 xviewer: 3.4.6 -> 3.4.7
c49b11790bef7 warpinator: 1.8.6 -> 1.8.7
88efcceaa6da8 pix: 3.4.3 -> 3.4.4
5bc48afb8338e nemo: 6.4.2 -> 6.4.3
d01b81f384d52 folder-color-switcher: 1.6.5 -> 1.6.6
e9a855fb8fc02 cinnamon-translations: 6.4.0 -> 6.4.1
f0308754b598c cinnamon-control-center: 6.4.0 -> 6.4.1
5cab70eb47be8 cinnamon-common: 6.4.1 -> 6.4.2
1433a8fcd99aa bulky: 3.4 -> 3.5
64d823c7cbf89 smug: 0.3.5 -> 0.3.6 (#361958)
7770039f3dfc2 alt-tab-macos: 7.4.0 -> 7.7.0 (#361890)
92afb633ad3e0 stats: 2.11.18 -> 2.11.19 (#361891)
8c6c337edc79c soundsource: 5.7.3 -> 5.7.4, quote paths, refactor meta (#361892)
e94fb7d3a209b raycast: 1.86.0 -> 1.87.2 (#361893)
51c4a6cd8b7c1 fedifetcher: 7.1.12 -> 7.1.14
23468182b1d50 juicefs: 1.2.1 -> 1.2.2 (#361916)
14629763274ae reviewdog: 0.20.2 -> 0.20.3 (#361919)
e869c6173a67a prometheus-nginx-exporter: 1.3.0 -> 1.4.0 (#361866)
9970958d8d94f parallel: 20240922 -> 20241122
114e26b74a705 supabase-cli: 1.210.1 -> 2.0.0 (#361826)
42495eef2efbe python312Packages.django-leaflet: 0.30.1 -> 0.31.0 (#361828)
2d9f607254cbb lombok: 1.18.34 -> 1.18.36 (#361829)
7c954fa614466 xreader: 4.2.2 -> 4.2.3 (#362064)
d343c85889cd9 dotnet: use fallback target packages from current binary sdk
597474a8f184e dotnet: nixfmt output of nuget-to-nix
4c9ddcbc1a2bc caprine: 2.60.1 -> 2.60.3; disable autoUpdate (#361842)
65e0eebf2dd75 nixos/victoriametrics: the prometheusConfig option isn't null by default (#361778)
ca2960ed2f72e mate.mate-notification-daemon: 1.28.1 -> 1.28.3 (#361798)
16d2b6e90863f dependency-track: 4.12.1 -> 4.12.2 (#361783)
8fad995ebcf59 xapp: 2.8.6 -> 2.8.7 (#362068)
70902f96549de xed-editor: 3.6.7 -> 3.6.9 (#361791)
8b01c3e57149f scarab: .NET 6 -> 8 (#361251)
5009f6e7ae134 intel-gmmlib: 22.5.2 -> 22.5.4 (#362046)
9cb2a61d1a397 python312Packages.rpy2: 3.5.16 -> 3.5.17 (#361796)
d641ace37090b rpPPPoE: 3.12 -> 4.0 (#349480)
492818a9e38ea scarab: avoid rebuild after `meta` changes
73f99fe4ca11a scarab: explicit `rev` and `pname` in `fetchFromGitHub`, migrate to hash
7cd9f932236ea scarab: remove nuget patch
a46125dd5d9fa scarab: .NET 6 -> 8
d87b843af3b43 scarab: migrate to by-name
11bca208933fc vscode-extensions.ltex-plus.vscode-ltex-plus: init at 15.3.0
93382b5e83e76 google-alloy-db-auth-proxy: init at 1.11.3
6cb56c519a4c4 doc/dotnet: bump .NET versions from 6, 7 to 8, 9 (#361243)
8e8b8c9e6dc09 python312Packages.nlpcloud: 1.1.46 -> 1.1.47 (#361158)
5eaa12216f51e nuclei-templates: 10.0.4 -> 10.1.0
27e573eec13b1 checkov: 3.2.328 -> 3.2.330
85c591ae348aa vimPlugins.aw-watcher-vim: init at 2023-10-09
581db02151b5c roslyn-ls: 4.12.0-3.24470.4 -> 4.13.0-3.24577.4 (#357963)
7c38a1c89d44b maintainers: update tsandrini contact info
9894aea69bfd7 ytdl-sub: relax yt-dlp dependency (#361694)
019688919bb29 auto-editor: init at 25.3.0 (#317557)
d294c5a4d2a6e python3Packages.torchtnt: init at 0.2.4  (#361470)
c76137bb4d3e7 wikiman: init at 2.13.2 (#359410)
b2853e04b379f ksmbd-tools: 3.5.2 -> 3.5.3
a3da8b04d20b8 hypr-dynamic-cursors: 0-unstable-2024-11-10 -> 0-unstable-2024-11-19
da566994eac60 nixos-rebuild-ng: enable shell files by default
a987599ac1346 nixos-rebuild-ng: simplify build options
68a1082234b11 nixos-rebuild-ng: add proper manpage using scd format
12f623110b58e nickel: 1.8.1 -> 1.9.0 (#358879)
0509c6be442bc davinci-resolve: 19.0.2 -> 19.1 (#359934)
f2866842c2016 Added dotnet-ef - the core tool of .NET Entity Framework (#361198)
6da0724cf33c0 ci: add Nixpkgs lib-tests workflow
1ddf4cbe9fead haruna: 1.1.2 -> 1.2.1 (#361431)
dcbb8882538a6 mariadb-galera: 26.4.20 -> 26.4.21 (#361467)
916d65a2d022c nixos-rebuild-ng: add shell completion via shtab
b521c0c6bd11e nixos-rebuild-ng: add --builders as common_build_flags
66bcb83578c05 television: 0.5.1 -> 0.5.3 (#361674)
83dad7d43cf20 flake-checker: 0.2.0 -> 0.2.1
07d388a43bf48 Update pkgs/development/python-modules/torchtnt/default.nix
cd9300a45574c nixos/akkoma: Make imports explicit (#320513)
4cce7a0518b81 dosbox-x: 2024.10.01 -> 2024.12.04
178ca33e43529 python3Packages.roma: init at v1.5.1 (#361444)
70d86c64a0572 pdfstudio: fix hash mismatch (#360194)
2f12b59f31b5b nixos/tests/networking: fix flaky scripted.dhcpSimple test (#361834)
20e276f1a267e gnomeExtensions.pano: 22 -> v23-alpha3 (#352899)
58254b5abc556 unrar: 7.1.1 -> 7.1.2
1266ded08f8d4 xapp: 2.8.6 -> 2.8.7
0216b3263c88d ptyxis: 47.4 -> 47.5 (#362055)
f7c9f1aa799aa minimal-grub-theme: init at 0.3.0
3e53e7e7bc04b xreader: 4.2.2 -> 4.2.3
048fa4f7860c7 python312Packages.oslo-log: 6.1.2 -> 6.2.0; fixes; improvements (#362024)
33139a9c81a1a turnon: init at 1.6.1
ae435d0bac519 wgpu-native: init at 22.1.0.5
f70bc8c98219d pv: 1.8.14 -> 1.9.7
35b1e02e9f938 pdfstudio2023: 2023.0.3->2023.0.4
ed6c80272febc pdfstudio: fix hash mismatch
3611f5d63a19e nixos/pykms: Fix eval (#362002)
fc117208b4a1d di: 4.54 -> 4.54.0.1
e54605b8394f1 redocly: 1.25.9 -> 1.25.11
d456aa4fc9ae2 qpwgraph: 0.7.9 -> 0.8.0
fe2a6466c6e96 python312Packages.plaid-python: 27.0.0 -> 28.0.0
1989c9f4b53f8 ptyxis: 47.4 -> 47.5
7a8bfb795f5dc python3Packages.dirsearch: init at 0.4.3 (#350550)
e05f55035c8f8 maltego: 4.8.0 -> 4.8.1 (#361992)
e2e59a7e5250d corectrl: 1.4.2 -> 1.4.3 (#362005)
351fffd897ff3 mirrord: init at 3.125.0 (#349722)
4b0fe83d064e5 kittycad-kcl-lsp: init at 0.1.61 (#355668)
2ff1cccc278ca cloudflare-warp: add versionCheckHook (#358956)
b211fc881d22c deja-dup: 46.1 -> 47.0
a616046311f02 hiddify-app: 2.5.7-unstable-2024-10-30 -> 2.5.7-unstable-2024-11-18 (#360605)
c34effa646212 remod: init at 1.0.1 (#361651)
8be11ab22e0df m8c: init at 1.7.8 (#361671)
af7c522a45880 wordbook: unstable-2022-11-02 -> 0.4.0 (#361748)
a635264f9609a emacsPackages.ebuild-mode: 1.75 -> 1.76
f3e27bc730c99 monkeysAudio: 10.81 -> 10.83
5e74aff1db541 cni-plugins: 1.6.0 -> 1.6.1
0650670854410 python3Packages.django-mfa3: Disable failing test
df46eade40543 eza: 0.20.10 -> 0.20.11
7625dbbe50f06 typora: fix
05e93b530bb16 intel-gmmlib: 22.5.2 -> 22.5.4
c853ed50dc2c0 workflows/eval: add eval summary to commit statuses (#361973)
47799668defc8 mmseqs2: add passthru.tests
4198bea39e4e6 termshot: 0.2.8 -> 0.2.12
8e9d7ac6d1df1 ttfb: 1.13.0 -> 1.14.0 (#361993)
2f95a943f6150 eintopf: 0.14.2 -> 0.14.3; eintopf.frontend: 0.14.2 -> 0.14.3 (#361453)
40caf32dd9795 butt: 1.42.0 -> 1.44.0
8edc70ed5b74b nanopb: 0.4.9 -> 0.4.9.1
e772730caa0db python312Packages.hg-git: 1.1.3 -> 1.1.4
191f38e09634c cloudflare-warp: add versionCheckHook
18a0bec0c0e64 python3Packages.roma: init at v1.5.1
c84109b099378 mmseqs2: move to pkgs/by-name/mm/mmseqs2
5cf1fc3b7325b timeular: 6.8.4 -> 6.8.5
8161f18b42abc mmseqs2: enable neon on aarch64
a603559dccdd1 mmseqs2: use system zstd
a29846ad2be29 mmseqs2: enable cuda support
1681591eda561 mmseqs2: refactor
8680ed927c1c2 mmseqs2: format with nixfmt
c316132f25105 mmseqs2: 15-6f452 -> 16-747c6
628a0d24b0e8b deepin.deepin-calculator: 5.8.24 -> 6.5.2
45d4837c7a8e2 python312Packages.oslo-log: 6.1.2 -> 6.2.0
3c9fb90e4575b python312Packages.oslo-log: switch to fetchFromGitHub
eeed703362e91 python312Packages.oslo-log: misc cleaning
a6346d9f5e0d4 python312Packages.oslo-log: fix build in darwin sandbox
32fd0fa1930b8 vkd3d: 1.13 -> 1.14
5e08416193d56 kopia: enable doCheck
50b1f1121fb4b commonsCompress: 1.26.2 -> 1.27.1
db447cab67b88 python3Packages.torchtnt: init at v0.2.4
44ddedd2be90e lunacy: 10.0.1 -> 10.9.0
fb08f31009ad8 corectrl: 1.4.2 -> 1.4.3
6cc6d2ebce7bc nixos/pykms: Fix eval
a9b433bf9f04c python312Packages.roadlib: 0.27.0 -> 0.29.0
bb2a1fd9b091d m8c: init at 1.7.8
6e70864059f82 wxmaxima: 24.08.0 -> 24.11.0
52166f9bfec3a door-knocker: 0.5.0 -> 0.6.0
651dc94a6379f commonsIo: 2.17.0 -> 2.18.0
6a5614466d671 gnome-network-displays: 0.93.0 -> 0.94.0
39de3af3b1d3d hiddify-app: 2.5.7-unstable-2024-10-30 -> 2.5.7-unstable-2024-11-18
914077c408c45 ttfb: 1.13.0 -> 1.14.0
c22ea8530985f maltego: 4.8.0 -> 4.8.1
8dee843fa6473 nimdow: 0.7.39 -> 0.7.40
65a5bfe394c45 yoshimi: 2.3.3.1 -> 2.3.3.2
d8885f5518116 python312Packages.mockito: 1.5.1 -> 1.5.3
8f97a00f08718 hfst-ospell: 0.5.3 -> 0.5.4
4d9e16e24ac90 subread: 2.0.7 -> 2.0.8
0e2d8416d0525 openstackclient-full: 7.2.0 -> 7.2.1
e6037ddab8756 hugo: enable doCheck with skipping failing tests
08a7dd9e12a60 sakura: 3.8.7 -> 3.8.8
96ce00dc5ed99 python312Packages.yattag: 1.16.0 -> 1.16.1
6fa847d266977 python312Packages.django-admin-datta: 1.0.11 -> 1.0.15
fcc4ffb488bad postfix: 3.9.0 -> 3.9.1
3da44299e85d4 olvid: 1.6.2 -> 2.2.0
7096d05302ef3 logrotate: disable acl on non-Linux platforms
42f325451d7e0 smug: 0.3.5 -> 0.3.6
435da03a6e6e3 dprint: move to pkgs/by-name
cf5c3ee399803 dprint: 0.47.5 -> 0.47.6
d5326bc21787f llm: 0.17.1 -> 0.19
5aea15ef39b08 act: 0.2.68 -> 0.2.70
25d2577bebfd7 act: add updateScript
77a0bdd5afe11 scrcpy: 3.0 -> 3.0.2
5fbd8b3558e3c hurl: 5.0.1 -> 6.0.0
a923ebbe806af maelstrom-clj: 0.2.3 -> 0.2.4
849e76f9329eb julia_111: 1.11.1 -> 1.11.2
000133b4ab900 julia_111-bin: 1.11.1 -> 1.11.2
17090e527e9b9 anki: 24.06.3 -> 24.11
1cc7ce3589598 tagparser: 12.3.1 -> 12.4.0
310f6e70af89d turbo: 2.3.0 -> 2.3.3
e5bd86b7518c0 maintainers: Add jiriks74
ee1c6b6384591 turbo: importCargoLock -> fetchCargoVendor
880661b8422d9 reviewdog: 0.20.2 -> 0.20.3
c95a2170eee4d apptainer: 1.3.5 -> 1.3.6
77f4d48cb4be8 juicefs: 1.2.1 -> 1.2.2
f4be7b83f1544 _010editor: init at 15.0.1
acee313dfc257 cpp-utilities: 5.26.1 -> 5.27.0
f4e7a058383d3 edgetx: add meta.mainProgram
b2e88ebdded3a opentx: add meta.mainProgram
853e29c954016 raycast: 1.86.0 -> 1.87.2
0d336e398fb36 soundsource: 5.7.3 -> 5.7.4
4c0350d9d096a soundsource: quote paths
4657c1608956f soundsource: refactor meta
bb0c302eaee04 stats: 2.11.18 -> 2.11.19
609cc0dfead62 alt-tab-macos: 7.4.0 -> 7.7.0
14d9dc1b8c384 python312Packages.recurring-ical-events: 3.3.3 -> 3.3.4
a0ee21ff9dc8f mailspring: 1.13.3 -> 1.14.0
56da44bfe9170 dclock: init at 0.1.0
2df2c8b25a834 prometheus-nginx-exporter: 1.3.0 -> 1.4.0
6498028369ccd famistudio: remove `with lib;`
73363329ba9e7 famistudio: .NET 7 -> 8
b44f29245d180 famistudio: migrate to by-name
a67591e4a88d9 famistudio: nixfmt
4831293112076 dotnet-ef: init at 9.0.0
624f1f34f93d4 caprine: disable autoUpdate functionality
22928ab873336 screenfetch: 3.9.1 -> 3.9.9
1a7827817004f bitwig-studio: fix MIDI input
b8396a883cac8 caprine: 2.60.1 -> 2.60.3
97c81d554d8bd caprine: add updateScript
330b851e0bc16 protonmail-desktop: drop darwin-support temporary (https://github.com/NixOS/nixpkgs/pull/356737)
a5afdaefb95a9 protonmail-desktop: fix update-script
f33d23dfbfc68 protonmail-desktop: 1.0.6 -> 1.5.1
92df50f4d045a nixos/tests/networking: fix flaky scripted.dhcpSimple test
296eae7ffffde lombok: 1.18.34 -> 1.18.36
e3ba3b3354fa8 python312Packages.django-leaflet: 0.30.1 -> 0.31.0
e2ba83ddf72a9 supabase-cli: 1.210.1 -> 2.0.0
a4113d92a27bd wget: fix and enable strictDeps
9f609517c8343 cargo-shuttle: 0.47.0 -> 0.49.0
b8fe6def7873a python312Packages.qtile-bonsai: init at 0.4.0
9b58cf4d57419 roslyn-ls: 4.12.0-3.24470.4 -> 4.13.0-3.24577.4
208c833f31d0d python312Packages.gradio-pdf: 0.0.17 -> 0.0.19
d181f08a12e6f hyprlandPlugins.hyprscroller: 0-unstable-2024-11-23 -> 0-unstable-2024-11-29
cfe7fefd67b48 dependency-track: 4.12.1 -> 4.12.2
3d7b61b55180d mate.mate-notification-daemon: 1.28.1 -> 1.28.3
abc9f76d7fefd xed-editor: 3.6.7 -> 3.6.9
1c4e83df052d1 telegram-desktop: 5.8.2 -> 5.9.0
534b77f8580eb nixos/victoriametrics: the prometheusConfig option isn't null by default
e77ace0bd3783 python312Packages.rpy2: 3.5.16 -> 3.5.17
578e4012fdb38 nixos/locate: update hardening from upstream
360cf296dc89a python312Packages.transaction: modernize, add nickcao to maintainers
a95c46c801805 emulationstation-de: 3.0.2 -> 3.1.0
4874736329f1f python312Packages.zope-exceptions: modernize, add nickcao to maintainers
0462ffbc3070a nexusmods-app: fix passthru tests
cc6bdfcae8246 open5gs: init at 2.7.2
0fb5a2b45c4b0 clash-rs: 0.7.1 -> 0.7.3
610fbeeb141fa hmcl: 3.5.9 -> 3.6.11
dfc303201701e pingvin-share: 1.4.0 -> 1.6.1
11e3270b19fbb wordbook: unstable-2022-11-02 -> 0.4.0
26befe6e6ec70 workflows/eval: add eval summary to commit statuses
0deecde1d4888 linuxPackages.nct6687d: 0-unstable-2024-09-02 -> 0-unstable-2024-11-05
0303357796f4a checkov: use default python (3.12)
b0d166fd16b42 tdlib: 1.8.39 -> 1.8.41
9a5c7f9e10adf python312Packages.nlpcloud: 1.1.46 -> 1.1.47
07e283f2b1e4b modules/avahi: Enable IPv6 by default
3fcf45499bf12 gnat-bootstrap: fix and enable strictDeps
b6b3c31d1aab6 opensoundmeter: 1.3 -> 1.4
3a76a34b27a92 rftg: remove
711695813d753 latencytop: remove
3834a03dee11e element-desktop: 1.11.86 -> 1.11.87
315788b4cbcba volnoti: remove
2afe5ab329981 libmx: remove
e9efed0f0c29c python312Packages.roadrecon: 1.5.0 -> 1.6.0
97da68eef5631 gtk-engine-bluecurve: remove
ad50609fbc7ae crack_attack: remove
bff1ad19f9dd6 green-pdfviewer: remove
7695b70193a46 postgresqlPackages.pg_partman: 5.1.0 -> 5.2.1
e181443fa0ef2 ytdl-sub: relax yt-dlp dependency
a0dfb5910dce0 dnf5: 5.2.7.0 -> 5.2.8.0
5d012c002dfa4 python312Packages.llama-cloud: 0.1.4 -> 0.1.6
49bb843df8118 temporal-cli: inherit version of tctl-next
c50c65c9824b6 python312Packages.transaction: 4.0 -> 5.0
a676e5bcfb9df television: 0.5.1 -> 0.5.3
ff5fcb8b18771 passepartui: 0.1.4 -> 0.1.5
e510a2b1c994a lock: 1.2.0 -> 1.3.0
e032f3a258628 diesel-cli: migrate to new darwin SDK pattern
f73975a6e3425 diesel-cli: 2.2.5 -> 2.2.6
3b413d302ee8b conda: 4.11.0 -> 24.9.2
b810247f0aa89 garnet: 1.0.39 -> 1.0.46
131ac24ca7742 conda: format
66e14e1b61c62 nodePackages.remod-cli: remove and replace with alias to pkgs.remod
b9d879b2b99e2 qtcreator: 14.0.2 -> 15.0.0
cf40653a71233 remod: init at 1.0.1
e24b70c283366 mpd: 0.23.15 -> 0.23.16
8d14b76691ffb maintainers: add xosnrdev
7bd66051d588e cargonode: init at 0.1.2
f6616c8d8fda2 rsyslog-light: 8.2408.0 -> 8.2412.0
a89cc3bf60b19 python312Packages.zope-exceptions: 5.1 -> 5.2
607d6a4ed2b0b moonraker: 0.8.0-unstable-2023-12-27 -> 0.9.3-unstable-2024-11-17
7c39317696692 linuxPackages.r8125: 9.013.02 -> 9.014.01
2e03f7f53b9e2 k9s: 0.32.6 -> 0.32.7
1e6b74a8bdc33 maintainers: add travgm
abcbf25970b0d go_1_22: 1.22.9 -> 1.22.10
ddffb7dc04d66 python312Packages.openai: 1.54.5 -> 1.56.1
c6c88693275c8 python312Packages.pynecil: 1.0.1 -> 2.0.2
d44bb5ced6aeb node-gyp: 10.2.0 -> 10.3.1
41672bef61ae6 python312Packages.lacuscore: 1.12.5 -> 1.12.6
a842f069192ef pretix: unpin ua-parser
7da1445e3d8d4 fittrackee: unpin ua-parser
6f9f58a7ada9f python312Packages.ua-parser: 0.18.0 -> 1.0.0
ae5d860ddc51c python312Packages.ua-parser-rs: init at 0.1.2
ba4d412bebf0c python312Packages.ua-parser-builtins: init at 1.0.0
ba3f758e65512 lutris: 0.5.17 -> 0.5.18
8df16a12a622b ibm-plex: add sans-sc family
082d748b2b76a mariadb-galera: 26.4.20 -> 26.4.21
6eb18c4f7087b kind: add passthru.tests and clarify updateScript
e768200e3f00c kind: format with nixfmt-rfc-style
04b0485fd09e7 kind: enable doCheck
95ffb22b2660e shotcut: 24.10.13 -> 24.11.17
ded2c6807a973 eintopf: 0.14.2 -> 0.14.3
2c1b30762bda2 keycloak: 26.0.6 -> 26.0.7
360444f92de73 haruna: 1.1.2 -> 1.2.1
7e2f76a187ee9 nixos/librenms: add netali to maintainers
4bac8c5de59aa nixos/librenms: fix links in docs
c59a8279ae973 nixos/librenms: add enableLocalBilling option
c0efae7559d54 nixos/librenms: add default php_memory_limit and use it in cronjobs
63a2350155f99 stella: 7.0 -> 7.0b
3bef6979b2592 lima: 1.0.1 -> 1.0.2
93f1d4bf602e0 java-service-wrapper: 3.5.59 -> 3.5.60
2b5db6273584e lima: add passthru.tests.version
ee19f3a3648a5 lima: format with nixfmt-rfc-style
8de3e9040f12f add mergify rules for nixpkgs
5de0ac5f38141 inform6: 6.42-r4 -> 6.42-r6
8a70db7dc9b82 mmsd-tng: 2.6.1 -> 2.6.2
4a02d96f95a35 staruml: 6.2.2 -> 6.3.0
1631e6056ef5e nixos/redmine: Add PrivateMounts to systemd unit settings
2f73a2225a8b3 hsqldb: 2.7.3 -> 2.7.4
965d2d2f18e2a shogun: disable failing tests
773ad53e66fdf debianutils: 5.20 -> 5.21
1588344e2b22e mediainfo: 24.06 -> 24.11.1
303d8c4631a55 libmediainfo: 24.06 -> 24.11
90a02412dcfc9 keepalived: 2.3.1 -> 2.3.2
280444e1a772e gwyddion: 2.66 -> 2.67
8acdab9b3579e docker-init: init at v1.30.0
2b34cf87ca90a uwsgi: 2.0.27 -> 2.0.28
72886718d423c genymotion: 3.7.1 -> 3.8.0
32bc7979db9c6 eid-mw: 5.1.19 -> 5.1.21
1b0e626b3ac38 maintainers: add lostmsu
3097041404ec5 obs-studio: fix lossless audio support
b433ca606573f doc/dotnet: bump .NET versions from 6, 7 to 8, 9
60fd285fa9278 wcslib: 8.3 -> 8.4
41a5b2b5636e3 free42: 3.1.8 -> 3.1.10
1a6c959ae8d21 tqsl: 2.7.3 -> 2.7.5
0dd903bb085ab waybar: add option for en-/disabling niri support
623446f9f00f2 python3Packages.eth-utils: 4.0.0 -> 5.1.0
316fbb8f939a1 burpsuite: 2024.10.1 -> 2024.11.1 Changelog: https://portswigger.net/burp/releases/professional-community-2024-11-1
9de368ab8743e wlink: use versionCheckHook
0f8f5cb2f2b98 wchisp: use versionCheckHook
395b04b492138 beetsPackages.copyartifacts: beets 2.1.0 compat
33e9c10983c10 beets-unstable: 2.0.0-unstable-2024-05-25 -> 2.2.0-unstable-2024-12-02
138a57266b8dd beets: 2.0.0 -> 2.2.0
bec086164a288 nixosTests.paperless: use 'database.createLocally'
cf1f7c10f4a67 nixos/paperless: add 'database.createLocally'
e494b8a7ea91d yabasic: 2.90.4 -> 2.90.5
95b9717726600 element-call: 0.6.3 -> 0.7.1
bbcd0f30526dd nixos/datadog-agent: migrate deprecated config & set bin option
2ba6271eccf51 datadog-integrations-core: 7.50.2 -> 7.56.2
5121d2de488ba datadog-agent: 7.50.3 -> 7.56.2
ede0d4bd24d53 datadog-integrations-core: 7.38.0 -> 7.50.2
44c6cc48b9a16 fsautocomplete: 0.73.2 -> 0.75.0
11a186e0263cb yadm: 3.2.2 -> 3.3.0
0277b5e57ad88 discordo: 0-unstable-2024-10-13 -> 0-unstable-2024-11-30
9e5774c4e319c python312Packages.hvplot: fix checks on darwin
ed73a9dbc4c40 shogun: modernize
6645789addf4a coursier: 2.1.14 -> 2.1.19
5a5a45bbef404 converseen: 0.12.2.3 -> 0.12.2.4
5c21bdb944e77 kubernetes-polaris: 9.5.0 -> 9.6.0
b68a2fc588763 gitoxide: 0.38.0 -> 0.39.0
6873a4d1bfc3c fn-cli: 0.6.35 -> 0.6.36
a393ecaaca2eb api-linter: 1.67.4 -> 1.67.6
62c8b9930df83 dumbpipe: 0.18.0 -> 0.20.0
849a0f105f8cd sendme: 0.18.0 -> 0.19.0
2e3963313561f kubebuilder: 4.3.0 -> 4.3.1
b7fe3f437abd1 procs: 0.14.7 -> 0.14.8
162d28f5f01b6 kube-router: 2.2.2 -> 2.3.0
969a4f9afdfef mongodb-7_0: 7.0.14 -> 7.0.15
b18ef326a0a19 mongodb-6_0: 6.0.18 -> 6.0.19
27680307b99c5 mediainfo-gui: Fix missing GSettings schemas
d334ab8ce7727 mediainfo-gui: Code format using `nixfmt-rfc-style`
8d2f58226f558 ruplacer: 0.9.0 -> 0.10.0
70a877ad9f7ed beets: nixfmt & remove dead code
4efaa7aefbdcf beets: alphabetize builtin plugins
538aacc161184 beets: mark builtin acousticbrainz plugin as deprecated
a75c56567c36a beetsPackages.extrafiles: remove broken/unmaintained plugin
ee14c24d032e9 beets: add @montchr as co-maintainer
ce1f649ca1857 mark: 11.2.0 -> 11.3.0
f00cf451419f4 jellyfin-ffmpeg: 7.0.2-5 -> 7.0.2-7
7d6602e7def39 etc-overlay: mount the metadata image read-only
a9a7bdf4d6ccd camunda-modeler: 5.28.0 -> 5.30.0
1ef196fd22b92 clipboard-jh: 0.9.1 -> 0.10.0
8f6ebec4dd22a mitra: Init at 3.9.0
9345d630c5ed1 pifpaf: 3.2.1 -> 3.2.3
8ba40fdd4fae1 lib: add defaultTo
755454e1025bf hermitcli: 0.40.0 -> 0.41.0
1145559288b88 sbt-with-scala-native: 1.10.2 -> 1.10.6
3bc43801e5fe0 jibri: 8.0-169-g1258814 -> 8.0-173-g77dc5a9
6df5a2eade5d0 nomnatong: 5.12 -> 5.13
9f0eb5a46b4ce emacsPackages.isearch-prop: 0-unstable-2022-12-30 -> 0-unstable-2024-10-13
97e4c816726c3 dxx-rebirth: 0.60.0-beta2-unstable-2024-08-11 -> 0.60.0-beta2-unstable-2024-11-16
96a8441b43bcb mailpit: 1.21.0 -> 1.21.5
00ef09a323377 pekwm: 0.3.0 -> 0.3.1
5d3907df24a15 ocamlPackages.lacaml: 11.0.10 -> 11.1.0
3114309b65106 argocd: 2.12.6 -> 2.13.1
ceb975a766fa7 fluidd: 1.30.5 -> 1.31.0
35fd31cfc5b37 zef: 0.22.4 -> 0.22.6
6933dee91752e whatsapp-for-linux: 1.6.5 -> 1.7.0
d1589acd8a876 lsb-release: rewrite with `replaceVars`, and use `@runtimeShell@`
3b23ec6d6004e istioctl: 1.23.2 -> 1.24.1
9a035ad14a35b srgn: 0.13.3 -> 0.13.4
7a33e47a7ed59 obs-studio-plugins.obs-source-record: 0.3.5 -> 0.4.1
97daa1b55daf4 ocamlPackages.eliom: 11.0.1 -> 11.1.0
c2e08444aff5b winetricks: enable darwin support
0d2b54f022cf6 rustPlatform.fetchCargoTarball: dontConfigure (by default)
378be802e8527 new-lg4ff: 0.4.0 -> 0-unstable-2024-11-25
c2048b2abfa97 taterclient-ddnet: 9.0.0 -> 9.0.1
a8146de927f1b rocksdb: 9.7.3 -> 9.7.4
b69e16a70ecfd python312Packages.gsd: 3.4.0 -> 3.4.2
09beed419d6b3 python312Packages.pyreadstat: 1.2.7 -> 1.2.8
ed34e762c14ec terraform-ls: 0.34.3 -> 0.36.0
e0754deadc120 adw-gtk3: 5.5 -> 5.6
4604b01e795b3 trunk: 0.21.1 -> 0.21.4
acc53aaa5574b pinniped: 0.33.0 -> 0.35.0
34a4ddbbee279 amarok: 3.1.0 -> 3.1.1
fdaeafade5288 python312Packages.blake3: 0.4.1 -> 1.0.0
39b2b3b5a6791 maintainers: add github attribute to amozeo
002ebede7a73f firefly-iii: fix typo
e1199370c78e9 ballerina: 2201.10.1 -> 2201.10.3
2ecf39cb209c2 moodle: 4.4.3 -> 4.4.4
9b9c3d1974815 bleep 0.0.9 -> 0.0.11
1b0f797f91c5e discordchatexporter-cli: support all unix platforms
9a994b1f5f130 alfaview: 9.17.0 -> 9.18.1
fab56ca285de3 tutanota-desktop: 250.241025.0 -> 253.241126.2
be9066a7f3c12 jprofiler: 13.0.6 -> 14.0.5
5b9283c4ef773 jprofiler: format
cdd6102925f3c jprofiler: remove catap as maintainer
fb56d1e4a7dac linuxPackages.ena: bump 2.13.0 -> 2.13.1
1441fa7fbe515 linuxPackages.ena: add updateScript
27e8e2f73c5c5 roxterm: 3.14.3 -> 3.15.3
64fa76daa13ab cozy-drive: 3.40.0 -> 3.41.0
3408cb904abf4 librespot: 0.5.0 -> 0.6.0
a0bf19172ca56 wl-mirror: 0.16.5 -> 0.17.0
f35b3e9c240d5 spring-boot-cli: 3.3.4 -> 3.4.0
f06e84eadd8fe ssm-session-manager-plugin: 1.2.677.0 -> 1.2.694.0
bdbbf3a8a1648 azpainter: 3.0.9a -> 3.0.10
4ebdf1edaafe4 python312Packages.replicate: 1.0.1 -> 1.0.4
5459214bcc079 z-lua: 1.8.19 -> 1.8.20
3f24c10cad293 snapmaker-luban: 4.10.2 -> 4.14.0
e56d88b500f50 rmapi: 0.0.27.1 -> 0.0.28
f88894d14a76b pdfstudio: format
f11e9d4e1c648 protonvpn-gui: 4.7.4 -> 4.8.0
c44e359479449 python3Packages.proton-vpn-network-manager: 0.9.7 -> 0.10.1
dddeb779ac989 proton-vpn-local-agent: 1.0.0 -> 1.2.0
0e5cc7f032991 python3Packages.proton-keyring-linux: 0.1.0 -> 0.2.0
efa60da789205 python3Packages.proton-vpn-api-core: 0.36.6 -> 0.38.2
407bd6b3446bb nixos/tests/apparmor: adopt
ceaeeb47cb395 nixos/apparmor: adopt
d2bdb08ccb202 apparmor: adopt
1825fc3612ed7 clever-tools: 3.9.0 -> 3.10.1
17dd96c4deead python312Packages.binance-connector: 3.9.0 -> 3.10.0
747ce40fe2980 cirrus-cli: 0.132.0 -> 0.133.0
79662325cb64c python312Packages.optimum: 1.23.0 -> 1.23.3
6252fe37ac71f rdkafka: 2.6.0 -> 2.6.1
bf97031d41221 mob: 5.3.1 -> 5.3.3
44636db274cb8 nginxMainline: 1.27.2 -> 1.27.3
f90d2f4a41da4 panicparse: 2.3.1 -> 2.4.0
00ba22a1c81dc lite-xl: 2.1.5 -> 2.1.6
801174a20057d bash-completion: hack around a release bug impacting BSDs
50153978426f2 cockpit: 328 -> 329.1
996f9e4f289d9 nixos/nginx: don't disable IPC
5157f42ddeecb vgm2x: 0-unstable-2024-06-18 -> 0-unstable-2024-11-17
00ee3ec75f498 tests/lomiri-mediaplayer-app: init
928dea90c68f3 nixos/lomiri: Add mediaplayer app
ff6e974816517 lomiri.lomiri-mediaplayer-app: init at 1.1.0
4bdf760ad3add python312Packages.langsmith: 0.1.137 -> 0.1.147
5f730803f3976 keka: 1.3.2 -> 1.4.6
c3e14461e9f69 cargo-bolero: 0.11.2 -> 0.12.0
8872fb10ac344 davinci-resolve: 19.0.2 -> 19.1
ff74a61763d70 sqldef: 0.17.23 -> 0.17.24
3df9613e1620d mihomo-party: add update script
d35845f8f8ba8 mihomo-party: 1.4.5 -> 1.5.12
beb6fe987b242 cloudflare-warp: format with nixfmt-rfc-style
e50228f6d9811 perlPackages.DBDMariaDB: fix strictDeps = true
8edf7a33c5cde kafkactl: 5.3.0 -> 5.4.0
b6447bb4a8027 python3Packages.proton-core: 0.3.3 -> 0.4.0
02711f4db588a c-blosc2: 2.15.1 -> 2.15.2
3c9e7c7bbfee5 cocogitto: 6.1.0 -> 6.2.0
58bc2b252dd6b asahi-nvram: 0.2.1 -> 0.2.3
e61f7d60e176e asahi-bless: 0.3.0 -> 0.4.1
a4d88020d8341 graalvm-ce: 23.0.0 -> 23.0.1
5ff378b7b8a84 mysql_jdbc: 9.0.0 -> 9.1.0
79fdb67f884df python312Packages.marimo: 0.9.14 -> 0.9.27
faf72ed584ce7 mariadb-connector-java: 3.4.1 -> 3.5.1
7f6e867bfe13e commitizen: 3.30.0 -> 4.0.0
ccd13f2bf611e moneydance: fix GTK crash
114bfcc157314 v2ray: 5.20.0 -> 5.22.0
23abd3a86673f reveal-md: 6.1.3 -> 6.1.4
8cf70f5ff0ab5 minio-warp: init at 1.0.6
df6f4e28682d2 xray: 24.9.30 -> 24.11.21
9f2c121124ba7 alda: 2.2.3 -> 2.3.1
9253eb0baac60 cilium-cli: 0.16.19 -> 0.16.20
cfb258343f5e6 alda: nixfmt
09dbeb21f149a git-pw: 2.6.0 -> 2.7.0
17f173dd44bc2 simulide: migrate to pkgs/by-name
1276771ea7f15 vulkan-cts: 1.3.9.0 -> 1.3.10.0
34ae6ed370f62 simulide: don't use libsForQt5.callPackage
dd90a1d99b288 mlflow-server: 2.17.2 -> 2.18.0
f1f9a54031dbc cups-filters: 1.28.17 -> 2.0.1
95c563d5121d3 sickgear: 3.32.10 -> 3.32.11
c4a7f5477b2ba python312Packages.art: 6.3 -> 6.4
d1946291d1bd0 tartube-yt-dlp: 2.5.040 -> 2.5.059
b4bb0db86bf97 kops_1_30: 1.30.1 -> 1.30.2
f9b403d5d3503 mirrord: init at 3.125.0
74cb0ae183e48 dracula-theme: 4.0.0-unstable-2024-10-03 -> 4.0.0-unstable-2024-11-26
4b53e94e9cf1d wikiman: init at 2.13.2
f9ba1e0f76a88 funzzy: 1.2.0 -> 1.5.0
f387cf1f21845 twilio-cli: 5.22.3 -> 5.22.6
5c182f857e5f8 nickel: 1.8.1 -> 1.9.0
c826dbd65f195 python312Packages.tinydb: 4.8.0 -> 4.8.2
57b8861c473e6 pachyderm: 2.11.4 -> 2.11.5
5316344dfd0b5 questdb: 8.1.2 -> 8.2.0
cc4a61e075442 ibus-engines.typing-booster-unwrapped: 2.25.17 -> 2.26.11
617e1366d53f7 snappymail: 2.38.1 -> 2.38.2
036b0bb41dd6e bngblaster: 0.9.8 -> 0.9.12
900bd0d8e6203 nixos/buffyboard: init
6f32fcb8778d4 qdrant-web-ui: 0.1.31 -> 0.1.33
8d30d5b339bb2 weaviate: 1.26.6 -> 1.27.5
01a0ebafcae43 zimfw: 1.15.0 -> 1.16.0
09a7678c51686 quarto: 1.6.33 -> 1.6.37
1dce7c5b2fda1 kuma: 2.8.3 -> 2.9.1
d75d17e1e84f6 nixos/cage: add package option
1ff7a913595a0 amdvlk: 2024.Q3.3 -> 2024.Q4.1
31153e09fce1a moneydance: apply nixfmt
39ecccc962831 pioasm: 2.0.0 -> 2.1.0
798d1b5285aac ocamlPackages.gsl: 1.25.0 -> 1.25.1
2d59c247599f7 fend: 1.5.3 -> 1.5.5
97dd1a61b7794 proxmox-auto-install-assistant: switch to versionCheckHook
51759e8046caa proxmox-auto-install-assistant: 8.2.6 -> 8.3.3
40f32aaf16809 vscode-js-debug: 1.94.0 -> 1.95.3
b5442735ff0f7 buffybox: init at 3.2.0-unstable-2024-11-10
2cded1ab8dbbb polarity: add nix-update updatescript
6a2805234bbff apache-answer: init at 1.4.1
216c6f28d9c89 surrealist: 2.1.6 -> 3.0.8
3f8bc3e45a28e cubiomes-viewer: 4.1.0 -> 4.1.2
ca4419dfde56e zfs-replicate: 3.2.13 -> 4.0.0
88f51e4196afd jackett: 0.22.893 -> 0.22.998
72b1eeadda7ba jicofo: 1.0-1090 -> 1.0-1104
c2e4e74e95a68 sesh: 2.5.0 -> 2.6.0
093558f82bdeb quarto: use pandoc 3.5
5c913007c6234 pandoc: add version 3.5
d8b5f031dc448 nixos/crashdump: remove redundant kernel patch
fc3871aa8ad6d linux/common-config: enable support for crashkernel dumps
c2a95086c5237 micronaut: 4.6.3 -> 4.7.1
cfcccc73e6b56 s2geometry: enable on unix
bd4e8d2878d69 gpxlab: migrate to by-name
dc5f9d7ea9a8b gpxlab: add symlink to binary on darwin
b394dc14e86ef railway-wallet: 5.17.10 -> 5.19.4
7353ca42e5be1 heroku: 9.3.0 -> 9.5.0
8808a76d0c4be flannel: 0.25.7 -> 0.26.1
4b848193dadda ansel: 0-unstable-2024-09-29 -> 0-unstable-2024-10-28
df13ffdfb0df5 papermc: 1.21.1-119 -> 1.21.3-53
236e31deb941b acme-sh: 3.0.9 -> 3.1.0
c7fe0ba1a142d qemu: fix strictDeps
650928dc6759e tree-sitter: update webui fix-paths.patch
dd0977818d69d graalvmCEPackages.truffleruby: 24.0.1 -> 24.1.1
1493059fb9421 graalvmCEPackages.graalpy: 24.0.1 -> 24.1.1
e51543cab8745 graalvmCEPackages.graalnodejs: 24.0.1 -> 24.1.1
68e8a6ef35c05 marktext: build from source
9e67608a3ee0b marktext: nixfmt
045921d4b05ff lilypond-unstable: 2.25.20 -> 2.25.21
37b61d4c47346 istatmenus: init at 7.02.10
58a8067afbb0a rustdesk-server: 1.1.11-1 -> 1.1.12
df0f5907470cd rqlite: 8.31.2 -> 8.34.1
ae8aa6f04752a kubeone: 1.8.3 -> 1.9.0
42efdd11c6d55 google-java-format: 1.24.0 -> 1.25.0
a997d6d81cec1 yubikey-touch-detector: 1.11.0 -> 1.12.0
2c034c521677c haskellPackages.pandoc-cli_3_5: fix build
53b61e7a0ea65 python312Packages.datalad: refactor
dc5239bd1caf9 Update shntool to patch bugs
b1dc24918a06d maintainers: add ShawnToubeau
453c0fbb1e287 vue-language-server: 2.1.6 -> 2.1.10
e9bc776c6b774 paperjam: init at 1.2.1
88beeeb88dedb ocamlPackages.asai: 0.3.0 -> 0.3.1
18ed1c4e97207 kopia: 0.17.0 -> 0.18.2
6b9033af806c2 ocamlPackages.happy-eyeballs: 1.1.0 -> 1.2.2
83250cf4178be maintainers: add FirelightFlagboy
b3e39e3ee9b2e hubstaff: 1.6.26-95441346 -> 1.6.28-fafb0aba
0593c1fab44ad git-cliff: 2.6.1 -> 2.7.0
063a83a71b091 rabbitmq-c: 0.14.0 -> 0.15.0
095b8a3af886f reuse: 4.0.3 -> 5.0.2
9f6cfce9c5a2a crowdsec: 1.6.3 -> 1.6.4
13552fd8228fd fioctl: 0.42 -> 0.43
8de980f74866b atlantis: 0.28.5 -> 0.30.0
ea505ba4cac56 kubernetes-helmPlugins.helm-unittest: 0.5.2 -> 0.6.3
2e73f304b59a4 p2pool: 4.1.1 -> 4.2
b2659e7ad316b termius: 9.7.2 -> 9.8.5
892b1f3a1c74d kittycad-kcl-lsp: init at 0.1.61
386bc09b61cce maintainers: add jljox
eea7e3a90dc96 rygel: make gtk support optional
415b0ea85b2cb python312Packages.datalad: 1.1.3 -> 1.1.4
b7ea84f90078a nixos-options: don't use references for string_views
cf11719258788 nixos-option: disable modernize-use-trailing-return-type
7a8407e477f58 nixos-option: fix potential memory leak in mapOptions
6fe4fb2b95a81 nixos-option: enable cppcoreguidelines lints
e7367a6eabb55 nixos-option: enable misc lints
1e59fb41f0a66 nixos-option: enable more lints
e5705ba07b6bd nixos-option: enable readability lint
9c4e940564af9 nixos-option: enable modernize-* checks in clang-tidy
95d71aedd5a60 initool: 0.18.0 -> 1.0.0
38b076534b831 gifski: remove meta `with lib` use
0cf736ebdd174 gifski: move to by-name
baf8c5d3daaa2 gifski: format using nixfmt
60065ac2e06cd gifski: use `useFetchCargoVendor`
cb9f9a1e5a51a fetchgit{,hub}: add tag argument
ee355521d0d0a video2midi: 0.4.8 -> 0.4.9
34049645be1de airshipper: 0.14.0 -> 0.15.0
4fc640279dd2c dolt: 1.43.1 -> 1.43.15
d91b4a9c047cb jitsi-meet-prosody: 1.0.8091 -> 1.0.8242
2926cde0ff737 tabby: 0.19.0 -> 0.20.0
06d460dbb27eb maintainers: add gurjaka
f464a3ab33f28 i3-rounded: unstable-2021-10-03 -> 4.21.1
b8fa6e26eb7b4 yourkit-java: 2024.9-b158 -> 2024.9-b159
1f3975fc27282 attic-client: 0-unstable-2024-10-06 -> 0-unstable-2024-11-10
7a87303563fa0 pulsarctl: 2.11.1.3 -> 4.0.0.4
3cb3f1a51f97a hydrus: 595 -> 598
9f1665e1f823d jbang: 0.119.0 -> 0.120.4
ed0c00f8abc14 wsysmon: remove procps dep and dynamically link spdlog
66f4003f0ff82 sftpgo: 2.6.2 -> 2.6.3
6cf58c53e3ca0 keymapper: 4.8.2 -> 4.9.0
5bdf0a4831215 healthchecks: 3.6 -> 3.7
aef4e7d0bdad3 glooctl: 1.17.14 -> 1.17.16
41f5151102c62 maintainers: add BastianAsmussen
82803318055e6 renode-unstable: 1.15.3+20241004git4b8a8f170 -> 1.15.3+20241112git6e850cb52
934cf4cdea4c8 rpPPPoE: 3.12 -> 4.0 and build kernel mode plugin
4e84219665352 gcalcli: 4.4.0 -> 4.5.1
33586ab6d6875 boogie: 3.2.5 -> 3.4.2
1cdc18fbbfb05 jitsi-videobridge: 2.3-160-g97a1f15b -> 2.3-174-gd011ddf7
ccfbd723b3678 passt: 2024_09_06.6b38f07 -> 2024_10_30.ee7d0b6
fe3ce419eb0b6 dprint: switch to the new darwin sdk pattern
4155ccc122bb6 dprint: 0.47.2 -> 0.47.5
ef9f08ed35e96 dprint: add updateScript
d76335d634306 dprint: add passthru.tests.version
e4e84b2b36b33 dprint: format with nixfmt-rfc-style
c3e48526e0a53 nixos-option: enable performance lint
01580b19ae9ae nixos-option: enable bugprone lints
2cfcb6f44242c nixos-option: don't throw errors in main
e8d76d62a2871 nixos-option: explicitly cast to int from size_t
553461adc754f nixos-option: use c++20 starts_with
226981490b9eb nixos-option: clean up includes based on clang-tidy suggestions
7e9e33e79c700 nixos-option: add devShell
00c3a3defe134 nixos-option: add clang-tidy
4ec848d3650e2 komika-fonts: init at 0-unstable-2024-08-12
e351a0b8409da maintainers: add pancaek
69a605dedd31d hyperrogue: 13.0r -> 13.0v
0c7055e9a7dae mystmd: 1.3.8 -> 1.3.17
c567efd682d38 pwsafe: 1.18.0 -> 1.20.0
f0cc69f4ab14b kind: 0.2.4 -> 0.2.5
07ccfe68437c7 tree-sitter-grammars.tree-sitter-twig: init
fe7142ef013ae aws-shell: init at 0.2.2
f28124f58a6db vulkan-hdr-layer-kwin6: init at 0-unstable-2024-10-19
899a7b2472bc3 maintainers: add d4rk
0f3f545623648 maintainers: add nateeag
1c327386b4934 maintainers: add DictXiong
a27e48e1b2450 treewide: remove `= __splicedPackages`
41960fcdacbaf splice.nix: make `pkgs` `splicedPackages` when required
872d4bf33ed0c vkquake: 1.31.2 -> 1.31.3
c659022ecb860 schemacrawler: 16.22.2 -> 16.22.3
7578f3833bf6f plasma-panel-spacer-extended: init at 1.9.0
034aab107d194 criu: 3.19 -> 4.0
016e5f240f44e piper: refactor
77ee7fc30af0f piper: format with nixfmt
a6229420a3d03 piper: 0.7 -> 0.8
3442068f54253 libratbag: refactor
71b8c39ca813c libratbag: format with nixfmt
0c38fa2802129 libratbag: 0.17 -> 0.18
3a7bef85cad99 sbctl: don't use pname in src
fc30e169ac236 sbctl: nixfmt
9cc2c5f0fd022 sbctl: don't generate completions when cross compiling
49fec30e86719 sbctl: 0.14 -> 0.16
563987104e9ce linux config: enable cp15 barrier emulation on aarch64
ec1db0b739212 turbovnc: 3.1.2 -> 3.1.3
d231c9ea3a2f7 ocamlPackages.cairo2: 0.6.4 -> 0.6.5
2f9c81ffb1851 ocamlPackages.sel: 0.4.0 -> 0.5.0
b51666b2cc4e3 gnomeExtensions.pano: 22 -> v23-alpha3
1ed59a4eb8a0d lix: only use LTO with GCC
0512de251218d nixos/galene: add turnAddress option and fix httpAddress
3b48a63ac5d4b polybar: remove references to cc before makeWrapper
dbfb1a7338c1a python3Packages.django: fix build on 32 bit platforms
d84584efcec27 filesender: 2.49 -> 2.50
048d8cceeec8d nixos/qemu-vm: minor readability improvements
2610a20422b56 joypixels: 8.0.0 -> 9.0.0
9b2793b6ef23e python312Packages.pytest-variables: init at 3.1.0
0b09ff1954bbe python312Packages.vbuild: init at 0.8.2
88b18841422dc nixos/akkoma: Make imports explicit
4f2b5f3788566 auto-editor: init at 25.3.0
87df940a6a1eb raspberrypifw: 1.20240926 -> 1.20241008
39735e83b2a6c rutorrent: 4.2.10 -> 4.3.8
708a493c13979 python3: proper syntax for Windows patches
2367be910aabb python3Packages.dirsearch: init at 0.4.3
9477947a1a799 openseeface: init at 1.20.4-unstable-2024-09-21
ad7b2f3438963 lib/types: make pattern of strMatching accessible
176d86712b014 beedii: init at 1.0.0
4fe3724ce4014 joypixels: Reflect redistributability in the license
65664d6ba2909 nixos/gotenberg: fix service config for chromium
9ce0e1dcaf106 eddy: 1.2.1 -> 3.6
9264b0fd2a3c5 ibus: fix cross compilation
765c9bf44e30f nixos/qgroundcontrol: Add cfg.package option
380350455a9e8 qgroundcontrol: Disable bad message
4d33914586370 rocmPackages_5.rocm-docs-core: 0.26.0 -> 1.8.2
92121e43ea9b5 nixos/prometheus-exporters: add assertion for restic repository options to make them mutually exclusive
ac80f2cc333c8 nixos/prometheus-restic-exporter: add repositoryFile option
2a8f33535502c nixos/postfix: add missing mkDefault for smtpd tls config
e447004694c6f cni-plugin-flannel: 1.2.0 -> 1.5.1-flannel3
4147f4a424d92 osmscout-server: 3.0.0 -> 3.1.0
00a43d7d03a4d doc/languages-frameworks/python: update references to python 3.12
3e2e5daab4994 doc/languages-frameworks/python: Reword section to make commit rules a bit clearer
11c4e6b9dfe91 inputstream-adaptive: only create symlink for libcdm_aarch64_loader.so on aarch64
7acf6b2e9bfbe inputstream-adaptive: remove symlink for libssd_wv.so
f40bcf1bd28cf inputstream-adaptive: add symlink to libcdm_aarch64_loader.so
6504eee8e06ea ecc: 1.0.12 -> 1.0.27
3b9e993adb4f3 maintainers: add nezia
8ba961591c859 build(deps): bump korthout/backport-action from 3.0.2 to 3.1.0
1fb18e1e5fe29 promptfoo: 0.57.1 -> 0.79.0
a9b277d734269 python3Packages.pycolorecho: init at 0.1.1
16782bd5568bf v2raya: add cliPackage option
77f4097425aed unbound: support dynlib module
b5d50eae88f4f quakespasm: 0.96.0 -> 0.96.3
259db30f0bac3 nixos/lib/qemu-common: fix cross to x86_64
831f9b6052383 languagetool: fix description on allowOrigin option
4ff2f4a1f28c9 qjackctl: 0.9.13 -> 0.9.91
1d261ca49aa0e hunspellDicts.et_EE: init at 20030606
bd87a38b86f88 nixos/lemmy: fix nginx backend to proxy needed headers
39eaf6e74658f nixos/plymouth: add support for logo in catppuccin (two-step) theme
c151a5bd4f78e firefox_decrypt: 1.1.0 -> 1.1.1
83280493512a5 mlton: enable aarch64-darwin
cb8d3762a6b0f mlton: bootstrap with 20210117 version
8f582b0ebb792 nsncd: 3 seconds is way too low for a default timeout
f7d21be1d3aae nixos/wrapper: pass trusted argv[0] to the privileged executable
e9ab2de5ed0d1 nixos/vault-agent: make template value optional
f43fb79c08b86 [nbstripout] Don't propagate ipython
fc4e95e2e0966 nixos/v2ray: change the type of `config` field

git-subtree-dir: third_party/nixpkgs
git-subtree-split: 5d67ea6b4b63378b9c13be21e2ec9d1afc921713
2024-12-13 20:54:23 +00:00
22612 changed files with 744960 additions and 486747 deletions

View file

@ -215,3 +215,9 @@ adb9714bd909df283c66bbd641bd631ff50a4260
# treewide: incus packages # treewide: incus packages
9ab59bb5fb943ad6740f64f5a79eae9642fb8211 9ab59bb5fb943ad6740f64f5a79eae9642fb8211
# treewide nixfmt reformat pass 1, master, staging and staging-next
4f0dadbf38ee4cf4cc38cbc232b7708fddf965bc
667d42c00d566e091e6b9a19b365099315d0e611
84d4f874c2bac9f3118cb6907d7113b3318dcb5e

View file

@ -28,7 +28,7 @@ jobs:
ref: ${{ github.event.pull_request.head.sha }} ref: ${{ github.event.pull_request.head.sha }}
token: ${{ steps.app-token.outputs.token }} token: ${{ steps.app-token.outputs.token }}
- name: Create backport PRs - name: Create backport PRs
uses: korthout/backport-action@bd410d37cdcae80be6d969823ff5a225fe5c833f # v3.0.2 uses: korthout/backport-action@be567af183754f6a5d831ae90f648954763f17f5 # v3.1.0
with: with:
# Config README: https://github.com/korthout/backport-action#backport-action # Config README: https://github.com/korthout/backport-action#backport-action
copy_labels_pattern: 'severity:\ssecurity' copy_labels_pattern: 'severity:\ssecurity'

View file

@ -0,0 +1,30 @@
name: "Building Nixpkgs lib-tests"
permissions:
contents: read
on:
pull_request_target:
paths:
- 'lib/**'
jobs:
get-merge-commit:
uses: ./.github/workflows/get-merge-commit.yml
nixpkgs-lib-tests:
name: nixpkgs-lib-tests
runs-on: ubuntu-latest
needs: get-merge-commit
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
if: needs.get-merge-commit.outputs.mergedSha
with:
# pull_request_target checks out the base branch by default
ref: ${{ needs.get-merge-commit.outputs.mergedSha }}
- uses: cachix/install-nix-action@08dcb3a5e62fa31e2da3d490afc4176ef55ecd72 # v30
with:
# explicitly enable sandbox
extra_nix_config: sandbox = true
- name: Building Nixpkgs lib-tests
run: |
nix-build --arg pkgs "(import ./ci/. {}).pkgs" ./lib/tests/release.nix

View file

@ -222,6 +222,7 @@ jobs:
if: needs.process.outputs.baseRunId if: needs.process.outputs.baseRunId
permissions: permissions:
pull-requests: write pull-requests: write
statuses: write
steps: steps:
- name: Download process result - name: Download process result
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
@ -261,3 +262,23 @@ jobs:
GH_TOKEN: ${{ github.token }} GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }} REPOSITORY: ${{ github.repository }}
NUMBER: ${{ github.event.number }} NUMBER: ${{ github.event.number }}
- name: Add eval summary to commit statuses
if: ${{ github.event_name == 'pull_request_target' }}
run: |
description=$(jq -r '
"Package: added " + (.attrdiff.added | length | tostring) +
", removed " + (.attrdiff.removed | length | tostring) +
", changed " + (.attrdiff.changed | length | tostring) +
", Rebuild: linux " + (.rebuildCountByKernel.linux | tostring) +
", darwin " + (.rebuildCountByKernel.darwin | tostring)
' <comparison/changed-paths.json)
target_url="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID?pr=$NUMBER"
gh api --method POST \
-H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$GITHUB_REPOSITORY/statuses/$PR_HEAD_SHA" \
-f "context=Eval / Summary" -f "state=success" -f "description=$description" -f "target_url=$target_url"
env:
GH_TOKEN: ${{ github.token }}
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
NUMBER: ${{ github.event.number }}

22
third_party/nixpkgs/.mergify.yml vendored Normal file
View file

@ -0,0 +1,22 @@
queue_rules:
# This rule is for https://docs.mergify.com/commands/queue/
# and can be triggered with: @mergifyio queue
- name: default
merge_conditions:
# all github action checks in this list are required to merge a pull request
- check-success=Attributes
- check-success=Check
- check-success=Outpaths (aarch64-darwin)
- check-success=Outpaths (aarch64-linux)
- check-success=Outpaths (x86_64-darwin)
- check-success=Outpaths (x86_64-linux)
- check-success=Process
- check-success=Request
- check-success=Tag
- check-success=editorconfig-check
- check-success=label-pr
- check-success=nix-files-parseable-check
- check-success=nixfmt-check
- check-success=nixpkgs-vet
# queue up to 5 pull requests at a time
batch_size: 5

View file

@ -157,6 +157,7 @@ nixos/modules/installer/tools/nix-fallback-paths.nix @NixOS/nix-team @raitobeza
# Python-related code and docs # Python-related code and docs
/doc/languages-frameworks/python.section.md @mweinelt @natsukium /doc/languages-frameworks/python.section.md @mweinelt @natsukium
/maintainers/scripts/update-python-libraries @mweinelt @natsukium /maintainers/scripts/update-python-libraries @mweinelt @natsukium
/pkgs/by-name/up/update-python-libraries @mweinelt @natsukium
/pkgs/development/interpreters/python @mweinelt @natsukium /pkgs/development/interpreters/python @mweinelt @natsukium
/pkgs/top-level/python-packages.nix @natsukium /pkgs/top-level/python-packages.nix @natsukium
/pkgs/top-level/release-python.nix @natsukium /pkgs/top-level/release-python.nix @natsukium
@ -206,8 +207,8 @@ nixos/modules/installer/tools/nix-fallback-paths.nix @NixOS/nix-team @raitobeza
# Browsers # Browsers
/pkgs/applications/networking/browsers/firefox @mweinelt /pkgs/applications/networking/browsers/firefox @mweinelt
/pkgs/applications/networking/browsers/chromium @emilylange /pkgs/applications/networking/browsers/chromium @emilylange @networkException
/nixos/tests/chromium.nix @emilylange /nixos/tests/chromium.nix @emilylange @networkException
# Certificate Authorities # Certificate Authorities
pkgs/data/misc/cacert/ @ajs124 @lukegb @mweinelt pkgs/data/misc/cacert/ @ajs124 @lukegb @mweinelt
@ -222,7 +223,7 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/pkgs/top-level/java-packages.nix @NixOS/java /pkgs/top-level/java-packages.nix @NixOS/java
# Jetbrains # Jetbrains
/pkgs/applications/editors/jetbrains @edwtjo /pkgs/applications/editors/jetbrains @edwtjo @leona-ya
# Licenses # Licenses
/lib/licenses.nix @alyssais /lib/licenses.nix @alyssais

View file

@ -1,164 +0,0 @@
# Turns
#
# {
# "hello.aarch64-linux": "a",
# "hello.x86_64-linux": "b",
# "hello.aarch64-darwin": "c",
# "hello.x86_64-darwin": "d"
# }
#
# into
#
# {
# "hello": {
# "linux": {
# "aarch64": "a",
# "x86_64": "b"
# },
# "darwin": {
# "aarch64": "c",
# "x86_64": "d"
# }
# }
# }
#
# while filtering out any attribute paths that don't match this pattern
def expand_system:
to_entries
| map(
.key |= split(".")
| select(.key | length > 1)
| .double = (.key[-1] | split("-"))
| select(.double | length == 2)
)
| group_by(.key[0:-1])
| map(
{
key: .[0].key[0:-1] | join("."),
value:
group_by(.double[1])
| map(
{
key: .[0].double[1],
value: map(.key = .double[0]) | from_entries
}
)
| from_entries
})
| from_entries
;
# Transposes
#
# {
# "a": [ "x", "y" ],
# "b": [ "x" ],
# }
#
# into
#
# {
# "x": [ "a", "b" ],
# "y": [ "a" ]
# }
def transpose:
[
to_entries[]
| {
key: .key,
value: .value[]
}
]
| group_by(.value)
| map({
key: .[0].value,
value: map(.key)
})
| from_entries
;
# Computes the key difference for two objects:
# {
# added: [ <keys only in the second object> ],
# removed: [ <keys only in the first object> ],
# changed: [ <keys with different values between the two objects> ],
# }
#
def diff($before; $after):
{
added: $after | delpaths($before | keys | map([.])) | keys,
removed: $before | delpaths($after | keys | map([.])) | keys,
changed:
$before
| to_entries
| map(
$after."\(.key)" as $after2
| select(
# Filter out attributes that don't exist anymore
($after2 != null)
and
# Filter out attributes that are the same as the new value
(.value != $after2)
)
| .key
)
}
;
($before[0] | expand_system) as $before
| ($after[0] | expand_system) as $after
| .attrdiff = diff($before; $after)
| .rebuildsByKernel = (
[
(
.attrdiff.changed[]
| {
key: .,
value: diff($before."\(.)"; $after."\(.)").changed
}
)
,
(
.attrdiff.added[]
| {
key: .,
value: ($after."\(.)" | keys)
}
)
]
| from_entries
| transpose
)
| .rebuildCountByKernel = (
.rebuildsByKernel
| with_entries(.value |= length)
| pick(.linux, .darwin)
| {
linux: (.linux // 0),
darwin: (.darwin // 0),
}
)
| .labels = (
.rebuildCountByKernel
| to_entries
| map(
"10.rebuild-\(.key): " +
if .value == 0 then
"0"
elif .value <= 10 then
"1-10"
elif .value <= 100 then
"11-100"
elif .value <= 500 then
"101-500"
elif .value <= 1000 then
"501-1000"
elif .value <= 2500 then
"1001-2500"
elif .value <= 5000 then
"2501-5000"
else
"5001+"
end
)
)

View file

@ -0,0 +1,114 @@
{
lib,
jq,
runCommand,
writeText,
...
}:
{ beforeResultDir, afterResultDir }:
let
/*
Derivation that computes which packages are affected (added, changed or removed) between two revisions of nixpkgs.
Note: "platforms" are "x86_64-linux", "aarch64-darwin", ...
---
Inputs:
- beforeResultDir, afterResultDir: The evaluation result from before and after the change.
They can be obtained by running `nix-build -A ci.eval.full` on both revisions.
---
Outputs:
- changed-paths.json: Various information about the changes:
{
attrdiff: {
added: ["package1"],
changed: ["package2", "package3"],
removed: ["package4"],
},
labels: [
"10.rebuild-darwin: 1-10",
"10.rebuild-linux: 1-10"
],
rebuildsByKernel: {
darwin: ["package1", "package2"],
linux: ["package1", "package2", "package3"]
},
rebuildCountByKernel: {
darwin: 2,
linux: 3,
},
rebuildsByPlatform: {
aarch64-darwin: ["package1", "package2"],
aarch64-linux: ["package1", "package2"],
x86_64-linux: ["package1", "package2", "package3"],
x86_64-darwin: ["package1"],
},
}
- step-summary.md: A markdown render of the changes
---
Implementation details:
Helper functions can be found in ./utils.nix.
Two main "types" are important:
- `packagePlatformPath`: A string of the form "<PACKAGE_PATH>.<PLATFORM>"
Example: "python312Packages.numpy.x86_64-linux"
- `packagePlatformAttr`: An attrs representation of a packagePlatformPath:
Example: { name = "python312Packages.numpy"; platform = "x86_64-linux"; }
*/
inherit (import ./utils.nix { inherit lib; })
diff
groupByKernel
convertToPackagePlatformAttrs
groupByPlatform
extractPackageNames
getLabels
uniqueStrings
;
getAttrs = dir: builtins.fromJSON (builtins.readFile "${dir}/outpaths.json");
beforeAttrs = getAttrs beforeResultDir;
afterAttrs = getAttrs afterResultDir;
# Attrs
# - keys: "added", "changed" and "removed"
# - values: lists of `packagePlatformPath`s
diffAttrs = diff beforeAttrs afterAttrs;
changed-paths =
let
rebuilds = uniqueStrings (diffAttrs.added ++ diffAttrs.changed);
rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs rebuilds;
rebuildsByPlatform = groupByPlatform rebuildsPackagePlatformAttrs;
rebuildsByKernel = groupByKernel rebuildsPackagePlatformAttrs;
rebuildCountByKernel = lib.mapAttrs (
kernel: kernelRebuilds: lib.length kernelRebuilds
) rebuildsByKernel;
in
writeText "changed-paths.json" (
builtins.toJSON {
attrdiff = lib.mapAttrs (_: extractPackageNames) diffAttrs;
inherit
rebuildsByPlatform
rebuildsByKernel
rebuildCountByKernel
;
labels = getLabels rebuildCountByKernel;
}
);
in
runCommand "compare"
{
nativeBuildInputs = [ jq ];
}
''
mkdir $out
cp ${changed-paths} $out/changed-paths.json
jq -r -f ${./generate-step-summary.jq} < ${changed-paths} > $out/step-summary.md
# TODO: Compare eval stats
''

View file

@ -0,0 +1,213 @@
{ lib, ... }:
rec {
# Borrowed from https://github.com/NixOS/nixpkgs/pull/355616
uniqueStrings = list: builtins.attrNames (builtins.groupBy lib.id list);
/*
Converts a `packagePlatformPath` into a `packagePlatformAttr`
Turns
"hello.aarch64-linux"
into
{
name = "hello";
platform = "aarch64-linux";
}
*/
convertToPackagePlatformAttr =
packagePlatformPath:
let
# python312Packages.numpy.aarch64-linux -> ["python312Packages" "numpy" "aarch64-linux"]
splittedPath = lib.splitString "." packagePlatformPath;
# ["python312Packages" "numpy" "aarch64-linux"] -> ["python312Packages" "numpy"]
packagePath = lib.sublist 0 (lib.length splittedPath - 1) splittedPath;
# "python312Packages.numpy"
name = lib.concatStringsSep "." packagePath;
in
if name == "" then
null
else
{
# python312Packages.numpy
inherit name;
# "aarch64-linux"
platform = lib.last splittedPath;
};
/*
Converts a list of `packagePlatformPath`s into a list of `packagePlatformAttr`s
Turns
[
"hello.aarch64-linux"
"hello.x86_64-linux"
"hello.aarch64-darwin"
"hello.x86_64-darwin"
"bye.x86_64-darwin"
"bye.aarch64-darwin"
"release-checks" <- Will be dropped
]
into
[
{ name = "hello"; platform = "aarch64-linux"; }
{ name = "hello"; platform = "x86_64-linux"; }
{ name = "hello"; platform = "aarch64-darwin"; }
{ name = "hello"; platform = "x86_64-darwin"; }
{ name = "bye"; platform = "aarch64-darwin"; }
{ name = "bye"; platform = "x86_64-darwin"; }
]
*/
convertToPackagePlatformAttrs =
packagePlatformPaths:
builtins.filter (x: x != null) (builtins.map convertToPackagePlatformAttr packagePlatformPaths);
/*
Converts a list of `packagePlatformPath`s directly to a list of (unique) package names
Turns
[
"hello.aarch64-linux"
"hello.x86_64-linux"
"hello.aarch64-darwin"
"hello.x86_64-darwin"
"bye.x86_64-darwin"
"bye.aarch64-darwin"
]
into
[
"hello"
"bye"
]
*/
extractPackageNames =
packagePlatformPaths:
let
packagePlatformAttrs = convertToPackagePlatformAttrs (uniqueStrings packagePlatformPaths);
in
uniqueStrings (builtins.map (p: p.name) packagePlatformAttrs);
/*
Computes the key difference between two attrs
{
added: [ <keys only in the second object> ],
removed: [ <keys only in the first object> ],
changed: [ <keys with different values between the two objects> ],
}
*/
diff =
let
filterKeys = cond: attrs: lib.attrNames (lib.filterAttrs cond attrs);
in
old: new: {
added = filterKeys (n: _: !(old ? ${n})) new;
removed = filterKeys (n: _: !(new ? ${n})) old;
changed = filterKeys (
n: v:
# Filter out attributes that don't exist anymore
(new ? ${n})
# Filter out attributes that are the same as the new value
&& (v != (new.${n}))
) old;
};
/*
Group a list of `packagePlatformAttr`s by platforms
Turns
[
{ name = "hello"; platform = "aarch64-linux"; }
{ name = "hello"; platform = "x86_64-linux"; }
{ name = "hello"; platform = "aarch64-darwin"; }
{ name = "hello"; platform = "x86_64-darwin"; }
{ name = "bye"; platform = "aarch64-darwin"; }
{ name = "bye"; platform = "x86_64-darwin"; }
]
into
{
aarch64-linux = [ "hello" ];
x86_64-linux = [ "hello" ];
aarch64-darwin = [ "hello" "bye" ];
x86_64-darwin = [ "hello" "bye" ];
}
*/
groupByPlatform =
packagePlatformAttrs:
let
packagePlatformAttrsByPlatform = builtins.groupBy (p: p.platform) packagePlatformAttrs;
extractPackageNames = map (p: p.name);
in
lib.mapAttrs (_: extractPackageNames) packagePlatformAttrsByPlatform;
# Turns
# [
# { name = "hello"; platform = "aarch64-linux"; }
# { name = "hello"; platform = "x86_64-linux"; }
# { name = "hello"; platform = "aarch64-darwin"; }
# { name = "hello"; platform = "x86_64-darwin"; }
# { name = "bye"; platform = "aarch64-darwin"; }
# { name = "bye"; platform = "x86_64-darwin"; }
# ]
#
# into
#
# {
# linux = [ "hello" ];
# darwin = [ "hello" "bye" ];
# }
groupByKernel =
packagePlatformAttrs:
let
filterKernel =
kernel:
builtins.attrNames (
builtins.groupBy (p: p.name) (
builtins.filter (p: lib.hasSuffix kernel p.platform) packagePlatformAttrs
)
);
in
lib.genAttrs [ "linux" "darwin" ] filterKernel;
/*
Maps an attrs of `kernel - rebuild counts` mappings to a list of labels
Turns
{
linux = 56;
darwin = 8;
}
into
[
"10.rebuild-darwin: 1-10"
"10.rebuild-linux: 11-100"
]
*/
getLabels = lib.mapAttrsToList (
kernel: rebuildCount:
let
number =
if rebuildCount == 0 then
"0"
else if rebuildCount <= 10 then
"1-10"
else if rebuildCount <= 100 then
"11-100"
else if rebuildCount <= 500 then
"101-500"
else if rebuildCount <= 1000 then
"501-1000"
else if rebuildCount <= 2500 then
"1001-2500"
else if rebuildCount <= 5000 then
"2501-5000"
else
"5001+";
in
"10.rebuild-${kernel}: ${number}"
);
}

View file

@ -2,6 +2,7 @@
lib, lib,
runCommand, runCommand,
writeShellScript, writeShellScript,
writeText,
linkFarm, linkFarm,
time, time,
procps, procps,
@ -246,24 +247,15 @@ let
jq -s from_entries > $out/stats.json jq -s from_entries > $out/stats.json
''; '';
compare = compare = import ./compare {
{ beforeResultDir, afterResultDir }: inherit
runCommand "compare" lib
{
nativeBuildInputs = [
jq jq
]; runCommand
} writeText
'' supportedSystems
mkdir $out ;
jq -n -f ${./compare.jq} \ };
--slurpfile before ${beforeResultDir}/outpaths.json \
--slurpfile after ${afterResultDir}/outpaths.json \
> $out/changed-paths.json
jq -r -f ${./generate-step-summary.jq} < $out/changed-paths.json > $out/step-summary.md
# TODO: Compare eval stats
'';
full = full =
{ {

View file

@ -1,4 +1,4 @@
{ {
"rev": "31d66ae40417bb13765b0ad75dd200400e98de84", "rev": "929116e316068c7318c54eb4d827f7d9756d5e9c",
"sha256": "0fwsqd05bnk635niqnx9vqkdbinjq0ffdrbk66xllfyrnx4fvmpc" "sha256": "1am61kcakn9j47435k4cgsarvypb8klv4avszxza0jn362hp3ck8"
} }

View file

@ -1,6 +1,8 @@
let requiredVersion = import ./lib/minver.nix; in let
requiredVersion = import ./lib/minver.nix;
in
if ! builtins ? nixVersion || builtins.compareVersions requiredVersion builtins.nixVersion == 1 then if !builtins ? nixVersion || builtins.compareVersions requiredVersion builtins.nixVersion == 1 then
abort '' abort ''

View file

@ -95,6 +95,7 @@ Inlining HTML is not allowed. Parts of the documentation gets rendered to variou
#### Roles #### Roles
If you want to link to a man page, you can use `` {manpage}`nix.conf(5)` ``. The references will turn into links when a mapping exists in [`doc/manpage-urls.json`](./manpage-urls.json). If you want to link to a man page, you can use `` {manpage}`nix.conf(5)` ``. The references will turn into links when a mapping exists in [`doc/manpage-urls.json`](./manpage-urls.json).
Please keep the `manpage-urls.json` file alphabetically sorted.
A few markups for other kinds of literals are also available: A few markups for other kinds of literals are also available:

View file

@ -755,6 +755,9 @@ Used with Subversion. Expects `url` to a Subversion directory, `rev`, and `hash`
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`. 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.
Additionally, the following optional arguments can be given: Additionally, the following optional arguments can be given:
*`fetchSubmodules`* (Boolean) *`fetchSubmodules`* (Boolean)
@ -833,7 +836,7 @@ A number of fetcher functions wrap part of `fetchurl` and `fetchzip`. They are m
## `fetchFromGitHub` {#fetchfromgithub} ## `fetchFromGitHub` {#fetchfromgithub}
`fetchFromGitHub` expects four arguments. `owner` is a string corresponding to the GitHub user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every GitHub 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` expects four arguments. `owner` is a string corresponding to the GitHub user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every GitHub HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. If you need to fetch a tag however, you should prefer to use the `tag` parameter which achieves this in a safer way with less boilerplate. Finally, `hash` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available, but `hash` is currently preferred.
To use a different GitHub instance, use `githubBase` (defaults to `"github.com"`). To use a different GitHub instance, use `githubBase` (defaults to `"github.com"`).

View file

@ -881,7 +881,7 @@ dockerTools.pullImage {
imageDigest = "sha256:b8ea88f763f33dfda2317b55eeda3b1a4006692ee29e60ee54ccf6d07348c598"; imageDigest = "sha256:b8ea88f763f33dfda2317b55eeda3b1a4006692ee29e60ee54ccf6d07348c598";
finalImageName = "nix"; finalImageName = "nix";
finalImageTag = "2.19.3"; finalImageTag = "2.19.3";
sha256 = "zRwlQs1FiKrvHPaf8vWOR/Tlp1C5eLn1d9pE4BZg3oA="; hash = "sha256-zRwlQs1FiKrvHPaf8vWOR/Tlp1C5eLn1d9pE4BZg3oA=";
} }
``` ```
::: :::
@ -898,7 +898,7 @@ dockerTools.pullImage {
imageDigest = "sha256:24a23053f29266fb2731ebea27f915bb0fb2ae1ea87d42d890fe4e44f2e27c5d"; imageDigest = "sha256:24a23053f29266fb2731ebea27f915bb0fb2ae1ea87d42d890fe4e44f2e27c5d";
finalImageName = "etcd"; finalImageName = "etcd";
finalImageTag = "v3.5.11"; finalImageTag = "v3.5.11";
sha256 = "Myw+85f2/EVRyMB3axECdmQ5eh9p1q77FWYKy8YpRWU="; hash = "sha256-Myw+85f2/EVRyMB3axECdmQ5eh9p1q77FWYKy8YpRWU=";
} }
``` ```
::: :::
@ -922,7 +922,7 @@ Writing manifest to image destination
{ {
imageName = "nixos/nix"; imageName = "nixos/nix";
imageDigest = "sha256:498fa2d7f2b5cb3891a4edf20f3a8f8496e70865099ba72540494cd3e2942634"; imageDigest = "sha256:498fa2d7f2b5cb3891a4edf20f3a8f8496e70865099ba72540494cd3e2942634";
sha256 = "1q6cf2pdrasa34zz0jw7pbs6lvv52rq2aibgxccbwcagwkg2qj1q"; hash = "sha256-OEgs3uRPMb4Y629FJXAWZW9q9LqHS/A/GUqr3K5wzOA=";
finalImageName = "nixos/nix"; finalImageName = "nixos/nix";
finalImageTag = "latest"; finalImageTag = "latest";
} }

View file

@ -1,65 +1,72 @@
{ nixpkgsPath, revision, libsetsJSON }: {
nixpkgsPath,
revision,
libsetsJSON,
}:
let let
lib = import (nixpkgsPath + "/lib"); lib = import (nixpkgsPath + "/lib");
libsets = builtins.fromJSON libsetsJSON; libsets = builtins.fromJSON libsetsJSON;
libDefPos = prefix: set: libDefPos =
builtins.concatMap prefix: set:
(name: [{ builtins.concatMap (
name = builtins.concatStringsSep "." (prefix ++ [name]); name:
[
{
name = builtins.concatStringsSep "." (prefix ++ [ name ]);
location = builtins.unsafeGetAttrPos name set; location = builtins.unsafeGetAttrPos name set;
}] ++ lib.optionals }
(builtins.length prefix == 0 && builtins.isAttrs set.${name}) ]
(libDefPos (prefix ++ [name]) set.${name}) ++ lib.optionals (builtins.length prefix == 0 && builtins.isAttrs set.${name}) (
libDefPos (prefix ++ [ name ]) set.${name}
)
) (builtins.attrNames set); ) (builtins.attrNames set);
libset = toplib: libset =
builtins.map toplib:
(subsetname: { builtins.map (subsetname: {
subsetname = subsetname; subsetname = subsetname;
functions = libDefPos [] toplib.${subsetname}; functions = libDefPos [ ] toplib.${subsetname};
}) }) (builtins.map (x: x.name) libsets);
(builtins.map (x: x.name) libsets);
flattenedLibSubset = { subsetname, functions }: flattenedLibSubset =
builtins.map { subsetname, functions }:
(fn: { builtins.map (fn: {
name = "lib.${subsetname}.${fn.name}"; name = "lib.${subsetname}.${fn.name}";
value = fn.location; value = fn.location;
}) }) functions;
functions;
locatedlibsets = libs: builtins.map flattenedLibSubset (libset libs); locatedlibsets = libs: builtins.map flattenedLibSubset (libset libs);
removeFilenamePrefix = prefix: filename: removeFilenamePrefix =
prefix: filename:
let let
prefixLen = (builtins.stringLength prefix) + 1; # +1 to remove the leading / prefixLen = (builtins.stringLength prefix) + 1; # +1 to remove the leading /
filenameLen = builtins.stringLength filename; filenameLen = builtins.stringLength filename;
substr = builtins.substring prefixLen filenameLen filename; substr = builtins.substring prefixLen filenameLen filename;
in substr; in
substr;
removeNixpkgs = removeFilenamePrefix (builtins.toString nixpkgsPath); removeNixpkgs = removeFilenamePrefix (builtins.toString nixpkgsPath);
liblocations = liblocations = builtins.filter (elem: elem.value != null) (lib.lists.flatten (locatedlibsets lib));
builtins.filter
(elem: elem.value != null)
(lib.lists.flatten
(locatedlibsets lib));
fnLocationRelative = { name, value }: fnLocationRelative =
{ name, value }:
{ {
inherit name; inherit name;
value = value // { file = removeNixpkgs value.file; }; value = value // {
file = removeNixpkgs value.file;
};
}; };
relativeLocs = (builtins.map fnLocationRelative liblocations); relativeLocs = (builtins.map fnLocationRelative liblocations);
sanitizeId = builtins.replaceStrings sanitizeId = builtins.replaceStrings [ "'" ] [ "-prime" ];
[ "'" ]
[ "-prime" ];
urlPrefix = "https://github.com/NixOS/nixpkgs/blob/${revision}"; urlPrefix = "https://github.com/NixOS/nixpkgs/blob/${revision}";
jsonLocs = builtins.listToAttrs jsonLocs = builtins.listToAttrs (
(builtins.map builtins.map (
({ name, value }: { { name, value }:
{
name = sanitizeId name; name = sanitizeId name;
value = value =
let let
@ -67,8 +74,9 @@ let
target = "${urlPrefix}/${value.file}#L${builtins.toString value.line}"; target = "${urlPrefix}/${value.file}#L${builtins.toString value.line}";
in in
"[${text}](${target}) in `<nixpkgs>`"; "[${text}](${target}) in `<nixpkgs>`";
}) }
relativeLocs); ) relativeLocs
);
in in
jsonLocs jsonLocs

View file

@ -27,42 +27,48 @@ mkShell {
name = "dotnet-env"; name = "dotnet-env";
packages = [ packages = [
(with dotnetCorePackages; combinePackages [ (with dotnetCorePackages; combinePackages [
sdk_6_0 sdk_8_0
sdk_7_0 sdk_9_0
]) ])
]; ];
} }
``` ```
This will produce a dotnet installation that has the dotnet 6.0 7.0 sdk. The first sdk listed will have it's cli utility present in the resulting environment. Example info output: This will produce a dotnet installation that has the dotnet 8.0 9.0 sdk. The first sdk listed will have it's cli utility present in the resulting environment. Example info output:
```ShellSession ```ShellSession
$ dotnet --info $ dotnet --info
.NET SDK: .NET SDK:
Version: 7.0.202 Version: 9.0.100
Commit: 6c74320bc3 Commit: 59db016f11
Workload version: 9.0.100-manifests.3068a692
MSBuild version: 17.12.7+5b8665660
Runtime Environment: Runtime Environment:
OS Name: nixos OS Name: nixos
OS Version: 23.05 OS Version: 25.05
OS Platform: Linux OS Platform: Linux
RID: linux-x64 RID: linux-x64
Base Path: /nix/store/n2pm44xq20hz7ybsasgmd7p3yh31gnh4-dotnet-sdk-7.0.202/sdk/7.0.202/ Base Path: /nix/store/a03c70i7x6rjdr6vikczsp5ck3v6rixh-dotnet-sdk-9.0.100/share/dotnet/sdk/9.0.100/
.NET workloads installed:
There are no installed workloads to display.
Configured to use loose manifests when installing new manifests.
Host: Host:
Version: 7.0.4 Version: 9.0.0
Architecture: x64 Architecture: x64
Commit: 0a396acafe Commit: 9d5a6a9aa4
.NET SDKs installed: .NET SDKs installed:
6.0.407 [/nix/store/3b19303vwrhv0xxz1hg355c7f2hgxxgd-dotnet-core-combined/sdk] 8.0.404 [/nix/store/6wlrjiy10wg766490dcmp6x64zb1vc8j-dotnet-core-combined/share/dotnet/sdk]
7.0.202 [/nix/store/3b19303vwrhv0xxz1hg355c7f2hgxxgd-dotnet-core-combined/sdk] 9.0.100 [/nix/store/6wlrjiy10wg766490dcmp6x64zb1vc8j-dotnet-core-combined/share/dotnet/sdk]
.NET runtimes installed: .NET runtimes installed:
Microsoft.AspNetCore.App 6.0.15 [/nix/store/3b19303vwrhv0xxz1hg355c7f2hgxxgd-dotnet-core-combined/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 8.0.11 [/nix/store/6wlrjiy10wg766490dcmp6x64zb1vc8j-dotnet-core-combined/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.4 [/nix/store/3b19303vwrhv0xxz1hg355c7f2hgxxgd-dotnet-core-combined/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 9.0.0 [/nix/store/6wlrjiy10wg766490dcmp6x64zb1vc8j-dotnet-core-combined/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.15 [/nix/store/3b19303vwrhv0xxz1hg355c7f2hgxxgd-dotnet-core-combined/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 8.0.11 [/nix/store/6wlrjiy10wg766490dcmp6x64zb1vc8j-dotnet-core-combined/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.4 [/nix/store/3b19303vwrhv0xxz1hg355c7f2hgxxgd-dotnet-core-combined/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 9.0.0 [/nix/store/6wlrjiy10wg766490dcmp6x64zb1vc8j-dotnet-core-combined/share/dotnet/shared/Microsoft.NETCore.App]
Other architectures found: Other architectures found:
None None
@ -146,8 +152,8 @@ in buildDotnetModule rec {
buildInputs = [ referencedProject ]; # `referencedProject` must contain `nupkg` in the folder structure. buildInputs = [ referencedProject ]; # `referencedProject` must contain `nupkg` in the folder structure.
dotnet-sdk = dotnetCorePackages.sdk_6_0; dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.runtime_6_0; dotnet-runtime = dotnetCorePackages.runtime_8_0;
executables = [ "foo" ]; # This wraps "$out/lib/$pname/foo" to `$out/bin/foo`. executables = [ "foo" ]; # This wraps "$out/lib/$pname/foo" to `$out/bin/foo`.
executables = []; # Don't install any executables. executables = []; # Don't install any executables.

View file

@ -551,9 +551,9 @@ are used in [`buildPythonPackage`](#buildpythonpackage-function).
Several versions of the Python interpreter are available on Nix, as well as a Several versions of the Python interpreter are available on Nix, as well as a
high amount of packages. The attribute `python3` refers to the default high amount of packages. The attribute `python3` refers to the default
interpreter, which is currently CPython 3.11. The attribute `python` refers to interpreter, which is currently CPython 3.12. The attribute `python` refers to
CPython 2.7 for backwards-compatibility. It is also possible to refer to CPython 2.7 for backwards-compatibility. It is also possible to refer to
specific versions, e.g. `python311` refers to CPython 3.11, and `pypy` refers to specific versions, e.g. `python312` refers to CPython 3.12, and `pypy` refers to
the default PyPy interpreter. the default PyPy interpreter.
Python is used a lot, and in different ways. This affects also how it is Python is used a lot, and in different ways. This affects also how it is
@ -569,10 +569,10 @@ however, are in separate sets, with one set per interpreter version.
The interpreters have several common attributes. One of these attributes is The interpreters have several common attributes. One of these attributes is
`pkgs`, which is a package set of Python libraries for this specific `pkgs`, which is a package set of Python libraries for this specific
interpreter. E.g., the `toolz` package corresponding to the default interpreter interpreter. E.g., the `toolz` package corresponding to the default interpreter
is `python3.pkgs.toolz`, and the CPython 3.11 version is `python311.pkgs.toolz`. is `python3.pkgs.toolz`, and the CPython 3.12 version is `python312.pkgs.toolz`.
The main package set contains aliases to these package sets, e.g. The main package set contains aliases to these package sets, e.g.
`pythonPackages` refers to `python.pkgs` and `python311Packages` to `pythonPackages` refers to `python.pkgs` and `python312Packages` to
`python311.pkgs`. `python312.pkgs`.
#### Installing Python and packages {#installing-python-and-packages} #### Installing Python and packages {#installing-python-and-packages}
@ -597,7 +597,7 @@ with [`python.buildEnv`](#python.buildenv-function) or [`python.withPackages`](#
executables are wrapped to be able to find each other and all of the modules. executables are wrapped to be able to find each other and all of the modules.
In the following examples we will start by creating a simple, ad-hoc environment In the following examples we will start by creating a simple, ad-hoc environment
with a nix-shell that has `numpy` and `toolz` in Python 3.11; then we will create with a nix-shell that has `numpy` and `toolz` in Python 3.12; then we will create
a re-usable environment in a single-file Python script; then we will create a a re-usable environment in a single-file Python script; then we will create a
full Python environment for development with this same environment. full Python environment for development with this same environment.
@ -613,10 +613,10 @@ temporary shell session with a Python and a *precise* list of packages (plus
their runtime dependencies), with no other Python packages in the Python their runtime dependencies), with no other Python packages in the Python
interpreter's scope. interpreter's scope.
To create a Python 3.11 session with `numpy` and `toolz` available, run: To create a Python 3.12 session with `numpy` and `toolz` available, run:
```sh ```sh
$ nix-shell -p 'python311.withPackages(ps: with ps; [ numpy toolz ])' $ nix-shell -p 'python312.withPackages(ps: with ps; [ numpy toolz ])'
``` ```
By default `nix-shell` will start a `bash` session with this interpreter in our By default `nix-shell` will start a `bash` session with this interpreter in our
@ -624,7 +624,7 @@ By default `nix-shell` will start a `bash` session with this interpreter in our
```Python console ```Python console
[nix-shell:~/src/nixpkgs]$ python3 [nix-shell:~/src/nixpkgs]$ python3
Python 3.11.3 (main, Apr 4 2023, 22:36:41) [GCC 12.2.0] on linux Python 3.12.4 (main, Jun 6 2024, 18:26:44) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information. Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy; import toolz >>> import numpy; import toolz
``` ```
@ -644,12 +644,8 @@ will still get 1 wrapped Python interpreter. We can start the interpreter
directly like so: directly like so:
```sh ```sh
$ nix-shell -p "python311.withPackages (ps: with ps; [ numpy toolz requests ])" --run python3 $ nix-shell -p "python312.withPackages (ps: with ps; [ numpy toolz requests ])" --run python3
this derivation will be built: Python 3.12.4 (main, Jun 6 2024, 18:26:44) [GCC 13.3.0] on linux
/nix/store/r19yf5qgfiakqlhkgjahbg3zg79549n4-python3-3.11.2-env.drv
building '/nix/store/r19yf5qgfiakqlhkgjahbg3zg79549n4-python3-3.11.2-env.drv'...
created 273 symlinks in user environment
Python 3.11.2 (main, Feb 7 2023, 13:52:42) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information. Type "help", "copyright", "credits" or "license" for more information.
>>> import requests >>> import requests
>>> >>>
@ -689,7 +685,7 @@ Executing this script requires a `python3` that has `numpy`. Using what we learn
in the previous section, we could startup a shell and just run it like so: in the previous section, we could startup a shell and just run it like so:
```ShellSession ```ShellSession
$ nix-shell -p 'python311.withPackages (ps: with ps; [ numpy ])' --run 'python3 foo.py' $ nix-shell -p 'python312.withPackages (ps: with ps; [ numpy ])' --run 'python3 foo.py'
The dot product of [1 2] and [3 4] is: 11 The dot product of [1 2] and [3 4] is: 11
``` ```
@ -752,12 +748,12 @@ create a single script with Python dependencies, but in the course of normal
development we're usually working in an entire package repository. development we're usually working in an entire package repository.
As explained [in the `nix-shell` section](https://nixos.org/manual/nix/stable/command-ref/nix-shell) of the Nix manual, `nix-shell` can also load an expression from a `.nix` file. As explained [in the `nix-shell` section](https://nixos.org/manual/nix/stable/command-ref/nix-shell) of the Nix manual, `nix-shell` can also load an expression from a `.nix` file.
Say we want to have Python 3.11, `numpy` and `toolz`, like before, Say we want to have Python 3.12, `numpy` and `toolz`, like before,
in an environment. We can add a `shell.nix` file describing our dependencies: in an environment. We can add a `shell.nix` file describing our dependencies:
```nix ```nix
with import <nixpkgs> {}; with import <nixpkgs> {};
(python311.withPackages (ps: with ps; [ (python312.withPackages (ps: with ps; [
numpy numpy
toolz toolz
])).env ])).env
@ -774,7 +770,7 @@ What's happening here?
imports the `<nixpkgs>` function, `{}` calls it and the `with` statement imports the `<nixpkgs>` function, `{}` calls it and the `with` statement
brings all attributes of `nixpkgs` in the local scope. These attributes form brings all attributes of `nixpkgs` in the local scope. These attributes form
the main package set. the main package set.
2. Then we create a Python 3.11 environment with the [`withPackages`](#python.withpackages-function) function, as before. 2. Then we create a Python 3.12 environment with the [`withPackages`](#python.withpackages-function) function, as before.
3. The [`withPackages`](#python.withpackages-function) function expects us to provide a function as an argument 3. The [`withPackages`](#python.withpackages-function) function expects us to provide a function as an argument
that takes the set of all Python packages and returns a list of packages to that takes the set of all Python packages and returns a list of packages to
include in the environment. Here, we select the packages `numpy` and `toolz` include in the environment. Here, we select the packages `numpy` and `toolz`
@ -785,7 +781,7 @@ To combine this with `mkShell` you can:
```nix ```nix
with import <nixpkgs> {}; with import <nixpkgs> {};
let let
pythonEnv = python311.withPackages (ps: [ pythonEnv = python312.withPackages (ps: [
ps.numpy ps.numpy
ps.toolz ps.toolz
]); ]);
@ -939,8 +935,8 @@ information. The output of the function is a derivation.
An expression for `toolz` can be found in the Nixpkgs repository. As explained An expression for `toolz` can be found in the Nixpkgs repository. As explained
in the introduction of this Python section, a derivation of `toolz` is available in the introduction of this Python section, a derivation of `toolz` is available
for each interpreter version, e.g. `python311.pkgs.toolz` refers to the `toolz` for each interpreter version, e.g. `python312.pkgs.toolz` refers to the `toolz`
derivation corresponding to the CPython 3.11 interpreter. derivation corresponding to the CPython 3.12 interpreter.
The above example works when you're directly working on The above example works when you're directly working on
`pkgs/top-level/python-packages.nix` in the Nixpkgs repository. Often though, `pkgs/top-level/python-packages.nix` in the Nixpkgs repository. Often though,
@ -953,7 +949,7 @@ and adds it along with a `numpy` package to a Python environment.
with import <nixpkgs> {}; with import <nixpkgs> {};
( let ( let
my_toolz = python311.pkgs.buildPythonPackage rec { my_toolz = python312.pkgs.buildPythonPackage rec {
pname = "toolz"; pname = "toolz";
version = "0.10.0"; version = "0.10.0";
pyproject = true; pyproject = true;
@ -964,7 +960,7 @@ with import <nixpkgs> {};
}; };
build-system = [ build-system = [
python311.pkgs.setuptools python312.pkgs.setuptools
]; ];
# has no tests # has no tests
@ -977,7 +973,7 @@ with import <nixpkgs> {};
}; };
}; };
in python311.withPackages (ps: with ps; [ in python312.withPackages (ps: with ps; [
numpy numpy
my_toolz my_toolz
]) ])
@ -985,7 +981,7 @@ with import <nixpkgs> {};
``` ```
Executing `nix-shell` will result in an environment in which you can use Executing `nix-shell` will result in an environment in which you can use
Python 3.11 and the `toolz` package. As you can see we had to explicitly mention Python 3.12 and the `toolz` package. As you can see we had to explicitly mention
for which Python version we want to build a package. for which Python version we want to build a package.
So, what did we do here? Well, we took the Nix expression that we used earlier So, what did we do here? Well, we took the Nix expression that we used earlier
@ -1991,7 +1987,7 @@ has security implications and is relevant for those using Python in a
When the environment variable `DETERMINISTIC_BUILD` is set, all bytecode will When the environment variable `DETERMINISTIC_BUILD` is set, all bytecode will
have timestamp 1. The [`buildPythonPackage`](#buildpythonpackage-function) function sets `DETERMINISTIC_BUILD=1` have timestamp 1. The [`buildPythonPackage`](#buildpythonpackage-function) function sets `DETERMINISTIC_BUILD=1`
and [PYTHONHASHSEED=0](https://docs.python.org/3.11/using/cmdline.html#envvar-PYTHONHASHSEED). and [PYTHONHASHSEED=0](https://docs.python.org/3.12/using/cmdline.html#envvar-PYTHONHASHSEED).
Both are also exported in `nix-shell`. Both are also exported in `nix-shell`.
### How to provide automatic tests to Python packages? {#automatic-tests} ### How to provide automatic tests to Python packages? {#automatic-tests}
@ -2062,10 +2058,12 @@ The following rules are desired to be respected:
* `meta.platforms` takes the default value in many cases. * `meta.platforms` takes the default value in many cases.
It does not need to be set explicitly unless the package requires a specific platform. It does not need to be set explicitly unless the package requires a specific platform.
* The file is formatted with `nixfmt-rfc-style`. * The file is formatted with `nixfmt-rfc-style`.
* Commit names of Python libraries should reflect that they are Python * Commit names of Python libraries must reflect that they are Python
libraries, so write for example `python311Packages.numpy: 1.11 -> 1.12`. libraries (e.g. `python312Packages.numpy: 1.11 -> 1.12` rather than `numpy: 1.11 -> 1.12`).
It is highly recommended to specify the current default version to enable * The current default version of python should be included
automatic build by ofborg. in commit messages to enable automatic builds by ofborg.
For example `python312Packages.numpy: 1.11 -> 1.12` should be used rather
than `python3Packages.numpy: 1.11 -> 1.12`.
Note that `pythonPackages` is an alias for `python27Packages`. Note that `pythonPackages` is an alias for `python27Packages`.
* Attribute names in `python-packages.nix` as well as `pname`s should match the * Attribute names in `python-packages.nix` as well as `pname`s should match the
library's name on PyPI, but be normalized according to [PEP library's name on PyPI, but be normalized according to [PEP

View file

@ -1,66 +1,30 @@
{ {
"gnunet.conf(5)": "https://docs.gnunet.org/latest/users/configuration.html", "30-systemd-environment-d-generator(8)": "https://www.freedesktop.org/software/systemd/man/30-systemd-environment-d-generator.html",
"mpd(1)": "https://mpd.readthedocs.io/en/latest/mpd.1.html",
"mpd.conf(5)": "https://mpd.readthedocs.io/en/latest/mpd.conf.5.html",
"nix.conf(5)": "https://nixos.org/manual/nix/stable/command-ref/conf-file.html",
"portals.conf(5)": "https://github.com/flatpak/xdg-desktop-portal/blob/1.18.1/doc/portals.conf.rst.in",
"bootctl(1)": "https://www.freedesktop.org/software/systemd/man/bootctl.html",
"busctl(1)": "https://www.freedesktop.org/software/systemd/man/busctl.html",
"coredumpctl(1)": "https://www.freedesktop.org/software/systemd/man/coredumpctl.html",
"homectl(1)": "https://www.freedesktop.org/software/systemd/man/homectl.html",
"hostnamectl(1)": "https://www.freedesktop.org/software/systemd/man/hostnamectl.html",
"init(1)": "https://www.freedesktop.org/software/systemd/man/init.html",
"journalctl(1)": "https://www.freedesktop.org/software/systemd/man/journalctl.html",
"localectl(1)": "https://www.freedesktop.org/software/systemd/man/localectl.html",
"loginctl(1)": "https://www.freedesktop.org/software/systemd/man/loginctl.html",
"machinectl(1)": "https://www.freedesktop.org/software/systemd/man/machinectl.html",
"mount.ddi(1)": "https://www.freedesktop.org/software/systemd/man/mount.ddi.html",
"networkctl(1)": "https://www.freedesktop.org/software/systemd/man/networkctl.html",
"oomctl(1)": "https://www.freedesktop.org/software/systemd/man/oomctl.html",
"portablectl(1)": "https://www.freedesktop.org/software/systemd/man/portablectl.html",
"resolvconf(1)": "https://www.freedesktop.org/software/systemd/man/resolvconf.html",
"resolvectl(1)": "https://www.freedesktop.org/software/systemd/man/resolvectl.html",
"systemctl(1)": "https://www.freedesktop.org/software/systemd/man/systemctl.html",
"systemd-ac-power(1)": "https://www.freedesktop.org/software/systemd/man/systemd-ac-power.html",
"systemd-analyze(1)": "https://www.freedesktop.org/software/systemd/man/systemd-analyze.html",
"systemd-ask-password(1)": "https://www.freedesktop.org/software/systemd/man/systemd-ask-password.html",
"systemd-cat(1)": "https://www.freedesktop.org/software/systemd/man/systemd-cat.html",
"systemd-cgls(1)": "https://www.freedesktop.org/software/systemd/man/systemd-cgls.html",
"systemd-cgtop(1)": "https://www.freedesktop.org/software/systemd/man/systemd-cgtop.html",
"systemd-creds(1)": "https://www.freedesktop.org/software/systemd/man/systemd-creds.html",
"systemd-cryptenroll(1)": "https://www.freedesktop.org/software/systemd/man/systemd-cryptenroll.html",
"systemd-delta(1)": "https://www.freedesktop.org/software/systemd/man/systemd-delta.html",
"systemd-detect-virt(1)": "https://www.freedesktop.org/software/systemd/man/systemd-detect-virt.html",
"systemd-dissect(1)": "https://www.freedesktop.org/software/systemd/man/systemd-dissect.html",
"systemd-escape(1)": "https://www.freedesktop.org/software/systemd/man/systemd-escape.html",
"systemd-id128(1)": "https://www.freedesktop.org/software/systemd/man/systemd-id128.html",
"systemd-inhibit(1)": "https://www.freedesktop.org/software/systemd/man/systemd-inhibit.html",
"systemd-machine-id-setup(1)": "https://www.freedesktop.org/software/systemd/man/systemd-machine-id-setup.html",
"systemd-measure(1)": "https://www.freedesktop.org/software/systemd/man/systemd-measure.html",
"systemd-mount(1)": "https://www.freedesktop.org/software/systemd/man/systemd-mount.html",
"systemd-notify(1)": "https://www.freedesktop.org/software/systemd/man/systemd-notify.html",
"systemd-nspawn(1)": "https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html",
"systemd-path(1)": "https://www.freedesktop.org/software/systemd/man/systemd-path.html",
"systemd-run(1)": "https://www.freedesktop.org/software/systemd/man/systemd-run.html",
"systemd-socket-activate(1)": "https://www.freedesktop.org/software/systemd/man/systemd-socket-activate.html",
"systemd-stdio-bridge(1)": "https://www.freedesktop.org/software/systemd/man/systemd-stdio-bridge.html",
"systemd-tty-ask-password-agent(1)": "https://www.freedesktop.org/software/systemd/man/systemd-tty-ask-password-agent.html",
"systemd-umount(1)": "https://www.freedesktop.org/software/systemd/man/systemd-umount.html",
"systemd(1)": "https://www.freedesktop.org/software/systemd/man/systemd.html",
"timedatectl(1)": "https://www.freedesktop.org/software/systemd/man/timedatectl.html",
"userdbctl(1)": "https://www.freedesktop.org/software/systemd/man/userdbctl.html",
"binfmt.d(5)": "https://www.freedesktop.org/software/systemd/man/binfmt.d.html", "binfmt.d(5)": "https://www.freedesktop.org/software/systemd/man/binfmt.d.html",
"bootctl(1)": "https://www.freedesktop.org/software/systemd/man/bootctl.html",
"bootup(7)": "https://www.freedesktop.org/software/systemd/man/bootup.html",
"busctl(1)": "https://www.freedesktop.org/software/systemd/man/busctl.html",
"cat(1)": "https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html",
"coredump.conf(5)": "https://www.freedesktop.org/software/systemd/man/coredump.conf.html", "coredump.conf(5)": "https://www.freedesktop.org/software/systemd/man/coredump.conf.html",
"coredump.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/coredump.conf.d.html", "coredump.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/coredump.conf.d.html",
"coredumpctl(1)": "https://www.freedesktop.org/software/systemd/man/coredumpctl.html",
"crypttab(5)": "https://www.freedesktop.org/software/systemd/man/crypttab.html", "crypttab(5)": "https://www.freedesktop.org/software/systemd/man/crypttab.html",
"curl(1)": "https://curl.se/docs/manpage.html",
"daemon(7)": "https://www.freedesktop.org/software/systemd/man/daemon.html",
"dnssec-trust-anchors.d(5)": "https://www.freedesktop.org/software/systemd/man/dnssec-trust-anchors.d.html", "dnssec-trust-anchors.d(5)": "https://www.freedesktop.org/software/systemd/man/dnssec-trust-anchors.d.html",
"environment.d(5)": "https://www.freedesktop.org/software/systemd/man/environment.d.html", "environment.d(5)": "https://www.freedesktop.org/software/systemd/man/environment.d.html",
"extension-release(5)": "https://www.freedesktop.org/software/systemd/man/extension-release.html", "extension-release(5)": "https://www.freedesktop.org/software/systemd/man/extension-release.html",
"file-hierarchy(7)": "https://www.freedesktop.org/software/systemd/man/file-hierarchy.html",
"gnunet.conf(5)": "https://docs.gnunet.org/latest/users/configuration.html",
"group(5)": "https://man.archlinux.org/man/group.5",
"halt(8)": "https://www.freedesktop.org/software/systemd/man/halt.html",
"homectl(1)": "https://www.freedesktop.org/software/systemd/man/homectl.html",
"homed.conf(5)": "https://www.freedesktop.org/software/systemd/man/homed.conf.html", "homed.conf(5)": "https://www.freedesktop.org/software/systemd/man/homed.conf.html",
"homed.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/homed.conf.d.html", "homed.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/homed.conf.d.html",
"hostname(5)": "https://www.freedesktop.org/software/systemd/man/hostname.html", "hostname(5)": "https://www.freedesktop.org/software/systemd/man/hostname.html",
"hostnamectl(1)": "https://www.freedesktop.org/software/systemd/man/hostnamectl.html",
"hwdb(7)": "https://www.freedesktop.org/software/systemd/man/hwdb.html",
"init(1)": "https://www.freedesktop.org/software/systemd/man/init.html",
"initrd-release(5)": "https://www.freedesktop.org/software/systemd/man/initrd-release.html", "initrd-release(5)": "https://www.freedesktop.org/software/systemd/man/initrd-release.html",
"integritytab(5)": "https://www.freedesktop.org/software/systemd/man/integritytab.html", "integritytab(5)": "https://www.freedesktop.org/software/systemd/man/integritytab.html",
"iocost.conf(5)": "https://www.freedesktop.org/software/systemd/man/iocost.conf.html", "iocost.conf(5)": "https://www.freedesktop.org/software/systemd/man/iocost.conf.html",
@ -68,19 +32,46 @@
"journal-remote.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/journal-remote.conf.d.html", "journal-remote.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/journal-remote.conf.d.html",
"journal-upload.conf(5)": "https://www.freedesktop.org/software/systemd/man/journal-upload.conf.html", "journal-upload.conf(5)": "https://www.freedesktop.org/software/systemd/man/journal-upload.conf.html",
"journal-upload.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/journal-upload.conf.d.html", "journal-upload.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/journal-upload.conf.d.html",
"journalctl(1)": "https://www.freedesktop.org/software/systemd/man/journalctl.html",
"journald.conf(5)": "https://www.freedesktop.org/software/systemd/man/journald.conf.html", "journald.conf(5)": "https://www.freedesktop.org/software/systemd/man/journald.conf.html",
"journald.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/journald.conf.d.html", "journald.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/journald.conf.d.html",
"journald@.conf(5)": "https://www.freedesktop.org/software/systemd/man/journald@.conf.html", "journald@.conf(5)": "https://www.freedesktop.org/software/systemd/man/journald@.conf.html",
"kernel-command-line(7)": "https://www.freedesktop.org/software/systemd/man/kernel-command-line.html",
"kernel-install(8)": "https://www.freedesktop.org/software/systemd/man/kernel-install.html",
"libnss_myhostname.so.2(8)": "https://www.freedesktop.org/software/systemd/man/libnss_myhostname.so.2.html",
"libnss_mymachines.so.2(8)": "https://www.freedesktop.org/software/systemd/man/libnss_mymachines.so.2.html",
"libnss_resolve.so.2(8)": "https://www.freedesktop.org/software/systemd/man/libnss_resolve.so.2.html",
"libnss_systemd.so.2(8)": "https://www.freedesktop.org/software/systemd/man/libnss_systemd.so.2.html",
"linuxaa64.efi.stub(7)": "https://www.freedesktop.org/software/systemd/man/linuxaa64.efi.stub.html",
"linuxia32.efi.stub(7)": "https://www.freedesktop.org/software/systemd/man/linuxia32.efi.stub.html",
"linuxx64.efi.stub(7)": "https://www.freedesktop.org/software/systemd/man/linuxx64.efi.stub.html",
"loader.conf(5)": "https://www.freedesktop.org/software/systemd/man/loader.conf.html", "loader.conf(5)": "https://www.freedesktop.org/software/systemd/man/loader.conf.html",
"locale.conf(5)": "https://www.freedesktop.org/software/systemd/man/locale.conf.html", "locale.conf(5)": "https://www.freedesktop.org/software/systemd/man/locale.conf.html",
"localectl(1)": "https://www.freedesktop.org/software/systemd/man/localectl.html",
"localtime(5)": "https://www.freedesktop.org/software/systemd/man/localtime.html", "localtime(5)": "https://www.freedesktop.org/software/systemd/man/localtime.html",
"login.defs(5)": "https://man.archlinux.org/man/login.defs.5",
"loginctl(1)": "https://www.freedesktop.org/software/systemd/man/loginctl.html",
"logind.conf(5)": "https://www.freedesktop.org/software/systemd/man/logind.conf.html", "logind.conf(5)": "https://www.freedesktop.org/software/systemd/man/logind.conf.html",
"logind.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/logind.conf.d.html", "logind.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/logind.conf.d.html",
"machine-id(5)": "https://www.freedesktop.org/software/systemd/man/machine-id.html", "machine-id(5)": "https://www.freedesktop.org/software/systemd/man/machine-id.html",
"machine-info(5)": "https://www.freedesktop.org/software/systemd/man/machine-info.html", "machine-info(5)": "https://www.freedesktop.org/software/systemd/man/machine-info.html",
"machinectl(1)": "https://www.freedesktop.org/software/systemd/man/machinectl.html",
"mksquashfs(1)": "https://man.archlinux.org/man/extra/squashfs-tools/mksquashfs.1.en",
"modules-load.d(5)": "https://www.freedesktop.org/software/systemd/man/modules-load.d.html", "modules-load.d(5)": "https://www.freedesktop.org/software/systemd/man/modules-load.d.html",
"mount.ddi(1)": "https://www.freedesktop.org/software/systemd/man/mount.ddi.html",
"mpd(1)": "https://mpd.readthedocs.io/en/latest/mpd.1.html",
"mpd.conf(5)": "https://mpd.readthedocs.io/en/latest/mpd.conf.5.html",
"netrc(5)": "https://man.cx/netrc",
"networkctl(1)": "https://www.freedesktop.org/software/systemd/man/networkctl.html",
"networkd.conf(5)": "https://www.freedesktop.org/software/systemd/man/networkd.conf.html", "networkd.conf(5)": "https://www.freedesktop.org/software/systemd/man/networkd.conf.html",
"networkd.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/networkd.conf.d.html", "networkd.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/networkd.conf.d.html",
"nix-shell(1)": "https://nixos.org/manual/nix/stable/command-ref/nix-shell.html",
"nix.conf(5)": "https://nixos.org/manual/nix/stable/command-ref/conf-file.html",
"nss-myhostname(8)": "https://www.freedesktop.org/software/systemd/man/nss-myhostname.html",
"nss-mymachines(8)": "https://www.freedesktop.org/software/systemd/man/nss-mymachines.html",
"nss-resolve(8)": "https://www.freedesktop.org/software/systemd/man/nss-resolve.html",
"nss-systemd(8)": "https://www.freedesktop.org/software/systemd/man/nss-systemd.html",
"oomctl(1)": "https://www.freedesktop.org/software/systemd/man/oomctl.html",
"oomd.conf(5)": "https://www.freedesktop.org/software/systemd/man/oomd.conf.html", "oomd.conf(5)": "https://www.freedesktop.org/software/systemd/man/oomd.conf.html",
"oomd.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/oomd.conf.d.html", "oomd.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/oomd.conf.d.html",
"org.freedesktop.LogControl1(5)": "https://www.freedesktop.org/software/systemd/man/org.freedesktop.LogControl1.html", "org.freedesktop.LogControl1(5)": "https://www.freedesktop.org/software/systemd/man/org.freedesktop.LogControl1.html",
@ -97,94 +88,32 @@
"org.freedesktop.systemd1(5)": "https://www.freedesktop.org/software/systemd/man/org.freedesktop.systemd1.html", "org.freedesktop.systemd1(5)": "https://www.freedesktop.org/software/systemd/man/org.freedesktop.systemd1.html",
"org.freedesktop.timedate1(5)": "https://www.freedesktop.org/software/systemd/man/org.freedesktop.timedate1.html", "org.freedesktop.timedate1(5)": "https://www.freedesktop.org/software/systemd/man/org.freedesktop.timedate1.html",
"os-release(5)": "https://www.freedesktop.org/software/systemd/man/os-release.html", "os-release(5)": "https://www.freedesktop.org/software/systemd/man/os-release.html",
"pstore.conf(5)": "https://www.freedesktop.org/software/systemd/man/pstore.conf.html",
"pstore.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/pstore.conf.d.html",
"repart.d(5)": "https://www.freedesktop.org/software/systemd/man/repart.d.html",
"resolved.conf(5)": "https://www.freedesktop.org/software/systemd/man/resolved.conf.html",
"resolved.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/resolved.conf.d.html",
"sleep.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/sleep.conf.d.html",
"sysctl.d(5)": "https://www.freedesktop.org/software/systemd/man/sysctl.d.html",
"system.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/system.conf.d.html",
"systemd-sleep.conf(5)": "https://www.freedesktop.org/software/systemd/man/systemd-sleep.conf.html",
"systemd-system.conf(5)": "https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html",
"systemd-user-runtime-dir(5)": "https://www.freedesktop.org/software/systemd/man/systemd-user-runtime-dir.html",
"systemd-user.conf(5)": "https://www.freedesktop.org/software/systemd/man/systemd-user.conf.html",
"systemd.automount(5)": "https://www.freedesktop.org/software/systemd/man/systemd.automount.html",
"systemd.device(5)": "https://www.freedesktop.org/software/systemd/man/systemd.device.html",
"systemd.dnssd(5)": "https://www.freedesktop.org/software/systemd/man/systemd.dnssd.html",
"systemd.exec(5)": "https://www.freedesktop.org/software/systemd/man/systemd.exec.html",
"systemd.kill(5)": "https://www.freedesktop.org/software/systemd/man/systemd.kill.html",
"systemd.link(5)": "https://www.freedesktop.org/software/systemd/man/systemd.link.html",
"systemd.mount(5)": "https://www.freedesktop.org/software/systemd/man/systemd.mount.html",
"systemd.negative(5)": "https://www.freedesktop.org/software/systemd/man/systemd.negative.html",
"systemd.netdev(5)": "https://www.freedesktop.org/software/systemd/man/systemd.netdev.html",
"systemd.network(5)": "https://www.freedesktop.org/software/systemd/man/systemd.network.html",
"systemd.nspawn(5)": "https://www.freedesktop.org/software/systemd/man/systemd.nspawn.html",
"systemd.path(5)": "https://www.freedesktop.org/software/systemd/man/systemd.path.html",
"systemd.positive(5)": "https://www.freedesktop.org/software/systemd/man/systemd.positive.html",
"systemd.preset(5)": "https://www.freedesktop.org/software/systemd/man/systemd.preset.html",
"systemd.resource-control(5)": "https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html",
"systemd.scope(5)": "https://www.freedesktop.org/software/systemd/man/systemd.scope.html",
"systemd.service(5)": "https://www.freedesktop.org/software/systemd/man/systemd.service.html",
"systemd.slice(5)": "https://www.freedesktop.org/software/systemd/man/systemd.slice.html",
"systemd.socket(5)": "https://www.freedesktop.org/software/systemd/man/systemd.socket.html",
"systemd.swap(5)": "https://www.freedesktop.org/software/systemd/man/systemd.swap.html",
"systemd.target(5)": "https://www.freedesktop.org/software/systemd/man/systemd.target.html",
"systemd.timer(5)": "https://www.freedesktop.org/software/systemd/man/systemd.timer.html",
"systemd.unit(5)": "https://www.freedesktop.org/software/systemd/man/systemd.unit.html",
"sysupdate.d(5)": "https://www.freedesktop.org/software/systemd/man/sysupdate.d.html",
"sysusers.d(5)": "https://www.freedesktop.org/software/systemd/man/sysusers.d.html",
"timesyncd.conf(5)": "https://www.freedesktop.org/software/systemd/man/timesyncd.conf.html",
"timesyncd.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/timesyncd.conf.d.html",
"tmpfiles.d(5)": "https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html",
"udev.conf(5)": "https://www.freedesktop.org/software/systemd/man/udev.conf.html",
"user-runtime-dir@.service(5)": "https://www.freedesktop.org/software/systemd/man/user-runtime-dir@.service.html",
"user.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/user.conf.d.html",
"user@.service(5)": "https://www.freedesktop.org/software/systemd/man/user@.service.html",
"vconsole.conf(5)": "https://www.freedesktop.org/software/systemd/man/vconsole.conf.html",
"veritytab(5)": "https://www.freedesktop.org/software/systemd/man/veritytab.html",
"bootup(7)": "https://www.freedesktop.org/software/systemd/man/bootup.html",
"daemon(7)": "https://www.freedesktop.org/software/systemd/man/daemon.html",
"file-hierarchy(7)": "https://www.freedesktop.org/software/systemd/man/file-hierarchy.html",
"hwdb(7)": "https://www.freedesktop.org/software/systemd/man/hwdb.html",
"kernel-command-line(7)": "https://www.freedesktop.org/software/systemd/man/kernel-command-line.html",
"linuxaa64.efi.stub(7)": "https://www.freedesktop.org/software/systemd/man/linuxaa64.efi.stub.html",
"linuxia32.efi.stub(7)": "https://www.freedesktop.org/software/systemd/man/linuxia32.efi.stub.html",
"linuxx64.efi.stub(7)": "https://www.freedesktop.org/software/systemd/man/linuxx64.efi.stub.html",
"sd-boot(7)": "https://www.freedesktop.org/software/systemd/man/sd-boot.html",
"sd-stub(7)": "https://www.freedesktop.org/software/systemd/man/sd-stub.html",
"smbios-type-11(7)": "https://www.freedesktop.org/software/systemd/man/smbios-type-11.html",
"systemd-boot(7)": "https://www.freedesktop.org/software/systemd/man/systemd-boot.html",
"systemd-stub(7)": "https://www.freedesktop.org/software/systemd/man/systemd-stub.html",
"systemd.directives(7)": "https://www.freedesktop.org/software/systemd/man/systemd.directives.html",
"systemd.environment-generator(7)": "https://www.freedesktop.org/software/systemd/man/systemd.environment-generator.html",
"systemd.generator(7)": "https://www.freedesktop.org/software/systemd/man/systemd.generator.html",
"systemd.image-policy(7)": "https://www.freedesktop.org/software/systemd/man/systemd.image-policy.html",
"systemd.index(7)": "https://www.freedesktop.org/software/systemd/man/systemd.index.html",
"systemd.journal-fields(7)": "https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html",
"systemd.net-naming-scheme(7)": "https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html",
"systemd.offline-updates(7)": "https://www.freedesktop.org/software/systemd/man/systemd.offline-updates.html",
"systemd.special(7)": "https://www.freedesktop.org/software/systemd/man/systemd.special.html",
"systemd.syntax(7)": "https://www.freedesktop.org/software/systemd/man/systemd.syntax.html",
"systemd.system-credentials(7)": "https://www.freedesktop.org/software/systemd/man/systemd.system-credentials.html",
"systemd.time(7)": "https://www.freedesktop.org/software/systemd/man/systemd.time.html",
"udev(7)": "https://www.freedesktop.org/software/systemd/man/udev.html",
"30-systemd-environment-d-generator(8)": "https://www.freedesktop.org/software/systemd/man/30-systemd-environment-d-generator.html",
"halt(8)": "https://www.freedesktop.org/software/systemd/man/halt.html",
"kernel-install(8)": "https://www.freedesktop.org/software/systemd/man/kernel-install.html",
"libnss_myhostname.so.2(8)": "https://www.freedesktop.org/software/systemd/man/libnss_myhostname.so.2.html",
"libnss_mymachines.so.2(8)": "https://www.freedesktop.org/software/systemd/man/libnss_mymachines.so.2.html",
"libnss_resolve.so.2(8)": "https://www.freedesktop.org/software/systemd/man/libnss_resolve.so.2.html",
"libnss_systemd.so.2(8)": "https://www.freedesktop.org/software/systemd/man/libnss_systemd.so.2.html",
"nss-myhostname(8)": "https://www.freedesktop.org/software/systemd/man/nss-myhostname.html",
"nss-mymachines(8)": "https://www.freedesktop.org/software/systemd/man/nss-mymachines.html",
"nss-resolve(8)": "https://www.freedesktop.org/software/systemd/man/nss-resolve.html",
"nss-systemd(8)": "https://www.freedesktop.org/software/systemd/man/nss-systemd.html",
"pam_systemd(8)": "https://www.freedesktop.org/software/systemd/man/pam_systemd.html", "pam_systemd(8)": "https://www.freedesktop.org/software/systemd/man/pam_systemd.html",
"pam_systemd_home(8)": "https://www.freedesktop.org/software/systemd/man/pam_systemd_home.html", "pam_systemd_home(8)": "https://www.freedesktop.org/software/systemd/man/pam_systemd_home.html",
"passwd(5)": "https://man.archlinux.org/man/passwd.5",
"portablectl(1)": "https://www.freedesktop.org/software/systemd/man/portablectl.html",
"portals.conf(5)": "https://github.com/flatpak/xdg-desktop-portal/blob/1.18.1/doc/portals.conf.rst.in",
"poweroff(8)": "https://www.freedesktop.org/software/systemd/man/poweroff.html", "poweroff(8)": "https://www.freedesktop.org/software/systemd/man/poweroff.html",
"pstore.conf(5)": "https://www.freedesktop.org/software/systemd/man/pstore.conf.html",
"pstore.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/pstore.conf.d.html",
"reboot(8)": "https://www.freedesktop.org/software/systemd/man/reboot.html", "reboot(8)": "https://www.freedesktop.org/software/systemd/man/reboot.html",
"repart.d(5)": "https://www.freedesktop.org/software/systemd/man/repart.d.html",
"resolvconf(1)": "https://www.freedesktop.org/software/systemd/man/resolvconf.html",
"resolvectl(1)": "https://www.freedesktop.org/software/systemd/man/resolvectl.html",
"resolved.conf(5)": "https://www.freedesktop.org/software/systemd/man/resolved.conf.html",
"resolved.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/resolved.conf.d.html",
"sd-boot(7)": "https://www.freedesktop.org/software/systemd/man/sd-boot.html",
"sd-stub(7)": "https://www.freedesktop.org/software/systemd/man/sd-stub.html",
"shutdown(8)": "https://www.freedesktop.org/software/systemd/man/shutdown.html", "shutdown(8)": "https://www.freedesktop.org/software/systemd/man/shutdown.html",
"sleep.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/sleep.conf.d.html",
"smbios-type-11(7)": "https://www.freedesktop.org/software/systemd/man/smbios-type-11.html",
"sysctl.d(5)": "https://www.freedesktop.org/software/systemd/man/sysctl.d.html",
"system.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/system.conf.d.html",
"systemctl(1)": "https://www.freedesktop.org/software/systemd/man/systemctl.html",
"systemd(1)": "https://www.freedesktop.org/software/systemd/man/systemd.html",
"systemd-ac-power(1)": "https://www.freedesktop.org/software/systemd/man/systemd-ac-power.html",
"systemd-analyze(1)": "https://www.freedesktop.org/software/systemd/man/systemd-analyze.html",
"systemd-ask-password(1)": "https://www.freedesktop.org/software/systemd/man/systemd-ask-password.html",
"systemd-ask-password-console.path(8)": "https://www.freedesktop.org/software/systemd/man/systemd-ask-password-console.path.html", "systemd-ask-password-console.path(8)": "https://www.freedesktop.org/software/systemd/man/systemd-ask-password-console.path.html",
"systemd-ask-password-console.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-ask-password-console.service.html", "systemd-ask-password-console.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-ask-password-console.service.html",
"systemd-ask-password-wall.path(8)": "https://www.freedesktop.org/software/systemd/man/systemd-ask-password-wall.path.html", "systemd-ask-password-wall.path(8)": "https://www.freedesktop.org/software/systemd/man/systemd-ask-password-wall.path.html",
@ -193,51 +122,63 @@
"systemd-backlight@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-backlight@.service.html", "systemd-backlight@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-backlight@.service.html",
"systemd-battery-check(8)": "https://www.freedesktop.org/software/systemd/man/systemd-battery-check.html", "systemd-battery-check(8)": "https://www.freedesktop.org/software/systemd/man/systemd-battery-check.html",
"systemd-binfmt(8)": "https://www.freedesktop.org/software/systemd/man/systemd-binfmt.html", "systemd-binfmt(8)": "https://www.freedesktop.org/software/systemd/man/systemd-binfmt.html",
"systemd-bless-boot-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-bless-boot-generator.html",
"systemd-bless-boot(8)": "https://www.freedesktop.org/software/systemd/man/systemd-bless-boot.html", "systemd-bless-boot(8)": "https://www.freedesktop.org/software/systemd/man/systemd-bless-boot.html",
"systemd-bless-boot-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-bless-boot-generator.html",
"systemd-boot(7)": "https://www.freedesktop.org/software/systemd/man/systemd-boot.html",
"systemd-boot-check-no-failures(8)": "https://www.freedesktop.org/software/systemd/man/systemd-boot-check-no-failures.html", "systemd-boot-check-no-failures(8)": "https://www.freedesktop.org/software/systemd/man/systemd-boot-check-no-failures.html",
"systemd-boot-random-seed.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-boot-random-seed.service.html", "systemd-boot-random-seed.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-boot-random-seed.service.html",
"systemd-cat(1)": "https://www.freedesktop.org/software/systemd/man/systemd-cat.html",
"systemd-cgls(1)": "https://www.freedesktop.org/software/systemd/man/systemd-cgls.html",
"systemd-cgtop(1)": "https://www.freedesktop.org/software/systemd/man/systemd-cgtop.html",
"systemd-confext(8)": "https://www.freedesktop.org/software/systemd/man/systemd-confext.html", "systemd-confext(8)": "https://www.freedesktop.org/software/systemd/man/systemd-confext.html",
"systemd-confext.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-confext.service.html", "systemd-confext.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-confext.service.html",
"systemd-coredump(8)": "https://www.freedesktop.org/software/systemd/man/systemd-coredump.html", "systemd-coredump(8)": "https://www.freedesktop.org/software/systemd/man/systemd-coredump.html",
"systemd-coredump.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-coredump.socket.html", "systemd-coredump.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-coredump.socket.html",
"systemd-coredump@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-coredump@.service.html", "systemd-coredump@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-coredump@.service.html",
"systemd-cryptsetup-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-cryptsetup-generator.html", "systemd-creds(1)": "https://www.freedesktop.org/software/systemd/man/systemd-creds.html",
"systemd-cryptenroll(1)": "https://www.freedesktop.org/software/systemd/man/systemd-cryptenroll.html",
"systemd-cryptsetup(8)": "https://www.freedesktop.org/software/systemd/man/systemd-cryptsetup.html", "systemd-cryptsetup(8)": "https://www.freedesktop.org/software/systemd/man/systemd-cryptsetup.html",
"systemd-cryptsetup-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-cryptsetup-generator.html",
"systemd-cryptsetup@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-cryptsetup@.service.html", "systemd-cryptsetup@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-cryptsetup@.service.html",
"systemd-debug-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-debug-generator.html", "systemd-debug-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-debug-generator.html",
"systemd-delta(1)": "https://www.freedesktop.org/software/systemd/man/systemd-delta.html",
"systemd-detect-virt(1)": "https://www.freedesktop.org/software/systemd/man/systemd-detect-virt.html",
"systemd-dissect(1)": "https://www.freedesktop.org/software/systemd/man/systemd-dissect.html",
"systemd-environment-d-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-environment-d-generator.html", "systemd-environment-d-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-environment-d-generator.html",
"systemd-escape(1)": "https://www.freedesktop.org/software/systemd/man/systemd-escape.html",
"systemd-fsck(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fsck.html",
"systemd-fsck-root.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fsck-root.service.html", "systemd-fsck-root.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fsck-root.service.html",
"systemd-fsck-usr.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fsck-usr.service.html", "systemd-fsck-usr.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fsck-usr.service.html",
"systemd-fsck(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fsck.html",
"systemd-fsck@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fsck@.service.html", "systemd-fsck@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fsck@.service.html",
"systemd-fstab-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fstab-generator.html", "systemd-fstab-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fstab-generator.html",
"systemd-getty-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-getty-generator.html", "systemd-getty-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-getty-generator.html",
"systemd-gpt-auto-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html", "systemd-gpt-auto-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html",
"systemd-growfs-root.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-growfs-root.service.html",
"systemd-growfs(8)": "https://www.freedesktop.org/software/systemd/man/systemd-growfs.html", "systemd-growfs(8)": "https://www.freedesktop.org/software/systemd/man/systemd-growfs.html",
"systemd-growfs-root.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-growfs-root.service.html",
"systemd-growfs@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-growfs@.service.html", "systemd-growfs@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-growfs@.service.html",
"systemd-halt.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html", "systemd-halt.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html",
"systemd-hibernate-resume-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hibernate-resume-generator.html",
"systemd-hibernate-resume(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hibernate-resume.html", "systemd-hibernate-resume(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hibernate-resume.html",
"systemd-hibernate-resume-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hibernate-resume-generator.html",
"systemd-hibernate.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hibernate.service.html", "systemd-hibernate.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hibernate.service.html",
"systemd-homed(8)": "https://www.freedesktop.org/software/systemd/man/systemd-homed.html", "systemd-homed(8)": "https://www.freedesktop.org/software/systemd/man/systemd-homed.html",
"systemd-hostnamed(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hostnamed.html", "systemd-hostnamed(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hostnamed.html",
"systemd-hwdb(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hwdb.html", "systemd-hwdb(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hwdb.html",
"systemd-hybrid-sleep.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hybrid-sleep.service.html", "systemd-hybrid-sleep.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-hybrid-sleep.service.html",
"systemd-id128(1)": "https://www.freedesktop.org/software/systemd/man/systemd-id128.html",
"systemd-importd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-importd.html", "systemd-importd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-importd.html",
"systemd-integritysetup-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-integritysetup-generator.html", "systemd-inhibit(1)": "https://www.freedesktop.org/software/systemd/man/systemd-inhibit.html",
"systemd-integritysetup(8)": "https://www.freedesktop.org/software/systemd/man/systemd-integritysetup.html", "systemd-integritysetup(8)": "https://www.freedesktop.org/software/systemd/man/systemd-integritysetup.html",
"systemd-integritysetup-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-integritysetup-generator.html",
"systemd-integritysetup@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-integritysetup@.service.html", "systemd-integritysetup@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-integritysetup@.service.html",
"systemd-journal-gatewayd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-gatewayd.html", "systemd-journal-gatewayd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-gatewayd.html",
"systemd-journal-gatewayd.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-gatewayd.socket.html", "systemd-journal-gatewayd.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-gatewayd.socket.html",
"systemd-journal-remote(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.html", "systemd-journal-remote(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.html",
"systemd-journal-remote.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.socket.html", "systemd-journal-remote.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.socket.html",
"systemd-journal-upload(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-upload.html", "systemd-journal-upload(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journal-upload.html",
"systemd-journald(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald.html",
"systemd-journald-audit.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald-audit.socket.html", "systemd-journald-audit.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald-audit.socket.html",
"systemd-journald-dev-log.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald-dev-log.socket.html", "systemd-journald-dev-log.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald-dev-log.socket.html",
"systemd-journald-varlink@.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald-varlink@.socket.html", "systemd-journald-varlink@.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald-varlink@.socket.html",
"systemd-journald(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald.html",
"systemd-journald.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald.socket.html", "systemd-journald.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald.socket.html",
"systemd-journald@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald@.service.html", "systemd-journald@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald@.service.html",
"systemd-journald@.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald@.socket.html", "systemd-journald@.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-journald@.socket.html",
@ -245,22 +186,28 @@
"systemd-localed(8)": "https://www.freedesktop.org/software/systemd/man/systemd-localed.html", "systemd-localed(8)": "https://www.freedesktop.org/software/systemd/man/systemd-localed.html",
"systemd-logind(8)": "https://www.freedesktop.org/software/systemd/man/systemd-logind.html", "systemd-logind(8)": "https://www.freedesktop.org/software/systemd/man/systemd-logind.html",
"systemd-machine-id-commit.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-machine-id-commit.service.html", "systemd-machine-id-commit.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-machine-id-commit.service.html",
"systemd-machine-id-setup(1)": "https://www.freedesktop.org/software/systemd/man/systemd-machine-id-setup.html",
"systemd-machined(8)": "https://www.freedesktop.org/software/systemd/man/systemd-machined.html", "systemd-machined(8)": "https://www.freedesktop.org/software/systemd/man/systemd-machined.html",
"systemd-makefs(8)": "https://www.freedesktop.org/software/systemd/man/systemd-makefs.html", "systemd-makefs(8)": "https://www.freedesktop.org/software/systemd/man/systemd-makefs.html",
"systemd-makefs@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-makefs@.service.html", "systemd-makefs@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-makefs@.service.html",
"systemd-measure(1)": "https://www.freedesktop.org/software/systemd/man/systemd-measure.html",
"systemd-mkswap@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-mkswap@.service.html", "systemd-mkswap@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-mkswap@.service.html",
"systemd-modules-load(8)": "https://www.freedesktop.org/software/systemd/man/systemd-modules-load.html", "systemd-modules-load(8)": "https://www.freedesktop.org/software/systemd/man/systemd-modules-load.html",
"systemd-mount(1)": "https://www.freedesktop.org/software/systemd/man/systemd-mount.html",
"systemd-network-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-network-generator.html", "systemd-network-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-network-generator.html",
"systemd-networkd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-networkd.html",
"systemd-networkd-wait-online(8)": "https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.html", "systemd-networkd-wait-online(8)": "https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.html",
"systemd-networkd-wait-online@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online@.service.html", "systemd-networkd-wait-online@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online@.service.html",
"systemd-networkd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-networkd.html", "systemd-notify(1)": "https://www.freedesktop.org/software/systemd/man/systemd-notify.html",
"systemd-nspawn(1)": "https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html",
"systemd-oomd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-oomd.html", "systemd-oomd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-oomd.html",
"systemd-path(1)": "https://www.freedesktop.org/software/systemd/man/systemd-path.html",
"systemd-pcrfs-root.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrfs-root.service.html", "systemd-pcrfs-root.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrfs-root.service.html",
"systemd-pcrfs@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrfs@.service.html", "systemd-pcrfs@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrfs@.service.html",
"systemd-pcrmachine.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrmachine.service.html", "systemd-pcrmachine.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrmachine.service.html",
"systemd-pcrphase(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrphase.html",
"systemd-pcrphase-initrd.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrphase-initrd.service.html", "systemd-pcrphase-initrd.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrphase-initrd.service.html",
"systemd-pcrphase-sysinit.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrphase-sysinit.service.html", "systemd-pcrphase-sysinit.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrphase-sysinit.service.html",
"systemd-pcrphase(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pcrphase.html",
"systemd-portabled(8)": "https://www.freedesktop.org/software/systemd/man/systemd-portabled.html", "systemd-portabled(8)": "https://www.freedesktop.org/software/systemd/man/systemd-portabled.html",
"systemd-poweroff.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-poweroff.service.html", "systemd-poweroff.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-poweroff.service.html",
"systemd-pstore(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pstore.html", "systemd-pstore(8)": "https://www.freedesktop.org/software/systemd/man/systemd-pstore.html",
@ -272,20 +219,26 @@
"systemd-resolved(8)": "https://www.freedesktop.org/software/systemd/man/systemd-resolved.html", "systemd-resolved(8)": "https://www.freedesktop.org/software/systemd/man/systemd-resolved.html",
"systemd-rfkill(8)": "https://www.freedesktop.org/software/systemd/man/systemd-rfkill.html", "systemd-rfkill(8)": "https://www.freedesktop.org/software/systemd/man/systemd-rfkill.html",
"systemd-rfkill.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-rfkill.socket.html", "systemd-rfkill.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-rfkill.socket.html",
"systemd-run(1)": "https://www.freedesktop.org/software/systemd/man/systemd-run.html",
"systemd-run-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-run-generator.html", "systemd-run-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-run-generator.html",
"systemd-shutdown(8)": "https://www.freedesktop.org/software/systemd/man/systemd-shutdown.html", "systemd-shutdown(8)": "https://www.freedesktop.org/software/systemd/man/systemd-shutdown.html",
"systemd-sleep(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sleep.html", "systemd-sleep(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sleep.html",
"systemd-sleep.conf(5)": "https://www.freedesktop.org/software/systemd/man/systemd-sleep.conf.html",
"systemd-socket-activate(1)": "https://www.freedesktop.org/software/systemd/man/systemd-socket-activate.html",
"systemd-socket-proxyd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-socket-proxyd.html", "systemd-socket-proxyd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-socket-proxyd.html",
"systemd-soft-reboot.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-soft-reboot.service.html", "systemd-soft-reboot.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-soft-reboot.service.html",
"systemd-stdio-bridge(1)": "https://www.freedesktop.org/software/systemd/man/systemd-stdio-bridge.html",
"systemd-stub(7)": "https://www.freedesktop.org/software/systemd/man/systemd-stub.html",
"systemd-suspend-then-hibernate.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-suspend-then-hibernate.service.html", "systemd-suspend-then-hibernate.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-suspend-then-hibernate.service.html",
"systemd-suspend.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-suspend.service.html", "systemd-suspend.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-suspend.service.html",
"systemd-sysctl(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysctl.html", "systemd-sysctl(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysctl.html",
"systemd-sysext(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysext.html", "systemd-sysext(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysext.html",
"systemd-sysext.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysext.service.html", "systemd-sysext.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysext.service.html",
"systemd-system-update-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-system-update-generator.html", "systemd-system-update-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-system-update-generator.html",
"systemd-system.conf(5)": "https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html",
"systemd-sysupdate(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate.html",
"systemd-sysupdate-reboot.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate-reboot.service.html", "systemd-sysupdate-reboot.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate-reboot.service.html",
"systemd-sysupdate-reboot.timer(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate-reboot.timer.html", "systemd-sysupdate-reboot.timer(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate-reboot.timer.html",
"systemd-sysupdate(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate.html",
"systemd-sysupdate.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate.service.html", "systemd-sysupdate.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate.service.html",
"systemd-sysupdate.timer(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate.timer.html", "systemd-sysupdate.timer(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysupdate.timer.html",
"systemd-sysusers(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysusers.html", "systemd-sysusers(8)": "https://www.freedesktop.org/software/systemd/man/systemd-sysusers.html",
@ -293,34 +246,80 @@
"systemd-time-wait-sync(8)": "https://www.freedesktop.org/software/systemd/man/systemd-time-wait-sync.html", "systemd-time-wait-sync(8)": "https://www.freedesktop.org/software/systemd/man/systemd-time-wait-sync.html",
"systemd-timedated(8)": "https://www.freedesktop.org/software/systemd/man/systemd-timedated.html", "systemd-timedated(8)": "https://www.freedesktop.org/software/systemd/man/systemd-timedated.html",
"systemd-timesyncd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-timesyncd.html", "systemd-timesyncd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-timesyncd.html",
"systemd-tmpfiles(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html",
"systemd-tmpfiles-clean.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-clean.service.html", "systemd-tmpfiles-clean.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-clean.service.html",
"systemd-tmpfiles-clean.timer(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-clean.timer.html", "systemd-tmpfiles-clean.timer(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-clean.timer.html",
"systemd-tmpfiles-setup-dev-early.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-setup-dev-early.service.html", "systemd-tmpfiles-setup-dev-early.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-setup-dev-early.service.html",
"systemd-tmpfiles-setup-dev.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-setup-dev.service.html", "systemd-tmpfiles-setup-dev.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-setup-dev.service.html",
"systemd-tmpfiles-setup.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-setup.service.html", "systemd-tmpfiles-setup.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-setup.service.html",
"systemd-tmpfiles(8)": "https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html", "systemd-tty-ask-password-agent(1)": "https://www.freedesktop.org/software/systemd/man/systemd-tty-ask-password-agent.html",
"systemd-udev-settle.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-udev-settle.service.html", "systemd-udev-settle.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-udev-settle.service.html",
"systemd-udevd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-udevd.html",
"systemd-udevd-control.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-udevd-control.socket.html", "systemd-udevd-control.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-udevd-control.socket.html",
"systemd-udevd-kernel.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-udevd-kernel.socket.html", "systemd-udevd-kernel.socket(8)": "https://www.freedesktop.org/software/systemd/man/systemd-udevd-kernel.socket.html",
"systemd-udevd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-udevd.html", "systemd-umount(1)": "https://www.freedesktop.org/software/systemd/man/systemd-umount.html",
"systemd-update-done(8)": "https://www.freedesktop.org/software/systemd/man/systemd-update-done.html", "systemd-update-done(8)": "https://www.freedesktop.org/software/systemd/man/systemd-update-done.html",
"systemd-update-utmp-runlevel.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-update-utmp-runlevel.service.html",
"systemd-update-utmp(8)": "https://www.freedesktop.org/software/systemd/man/systemd-update-utmp.html", "systemd-update-utmp(8)": "https://www.freedesktop.org/software/systemd/man/systemd-update-utmp.html",
"systemd-update-utmp-runlevel.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-update-utmp-runlevel.service.html",
"systemd-user-runtime-dir(5)": "https://www.freedesktop.org/software/systemd/man/systemd-user-runtime-dir.html",
"systemd-user-sessions(8)": "https://www.freedesktop.org/software/systemd/man/systemd-user-sessions.html", "systemd-user-sessions(8)": "https://www.freedesktop.org/software/systemd/man/systemd-user-sessions.html",
"systemd-user.conf(5)": "https://www.freedesktop.org/software/systemd/man/systemd-user.conf.html",
"systemd-userdbd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-userdbd.html", "systemd-userdbd(8)": "https://www.freedesktop.org/software/systemd/man/systemd-userdbd.html",
"systemd-vconsole-setup(8)": "https://www.freedesktop.org/software/systemd/man/systemd-vconsole-setup.html", "systemd-vconsole-setup(8)": "https://www.freedesktop.org/software/systemd/man/systemd-vconsole-setup.html",
"systemd-veritysetup-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-veritysetup-generator.html",
"systemd-veritysetup(8)": "https://www.freedesktop.org/software/systemd/man/systemd-veritysetup.html", "systemd-veritysetup(8)": "https://www.freedesktop.org/software/systemd/man/systemd-veritysetup.html",
"systemd-veritysetup-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-veritysetup-generator.html",
"systemd-veritysetup@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-veritysetup@.service.html", "systemd-veritysetup@.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-veritysetup@.service.html",
"systemd-volatile-root(8)": "https://www.freedesktop.org/software/systemd/man/systemd-volatile-root.html", "systemd-volatile-root(8)": "https://www.freedesktop.org/software/systemd/man/systemd-volatile-root.html",
"systemd-xdg-autostart-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-xdg-autostart-generator.html", "systemd-xdg-autostart-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-xdg-autostart-generator.html",
"systemd.automount(5)": "https://www.freedesktop.org/software/systemd/man/systemd.automount.html",
"systemd.device(5)": "https://www.freedesktop.org/software/systemd/man/systemd.device.html",
"systemd.directives(7)": "https://www.freedesktop.org/software/systemd/man/systemd.directives.html",
"systemd.dnssd(5)": "https://www.freedesktop.org/software/systemd/man/systemd.dnssd.html",
"systemd.environment-generator(7)": "https://www.freedesktop.org/software/systemd/man/systemd.environment-generator.html",
"systemd.exec(5)": "https://www.freedesktop.org/software/systemd/man/systemd.exec.html",
"systemd.generator(7)": "https://www.freedesktop.org/software/systemd/man/systemd.generator.html",
"systemd.image-policy(7)": "https://www.freedesktop.org/software/systemd/man/systemd.image-policy.html",
"systemd.index(7)": "https://www.freedesktop.org/software/systemd/man/systemd.index.html",
"systemd.journal-fields(7)": "https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html",
"systemd.kill(5)": "https://www.freedesktop.org/software/systemd/man/systemd.kill.html",
"systemd.link(5)": "https://www.freedesktop.org/software/systemd/man/systemd.link.html",
"systemd.mount(5)": "https://www.freedesktop.org/software/systemd/man/systemd.mount.html",
"systemd.negative(5)": "https://www.freedesktop.org/software/systemd/man/systemd.negative.html",
"systemd.net-naming-scheme(7)": "https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html",
"systemd.netdev(5)": "https://www.freedesktop.org/software/systemd/man/systemd.netdev.html",
"systemd.network(5)": "https://www.freedesktop.org/software/systemd/man/systemd.network.html",
"systemd.nspawn(5)": "https://www.freedesktop.org/software/systemd/man/systemd.nspawn.html",
"systemd.offline-updates(7)": "https://www.freedesktop.org/software/systemd/man/systemd.offline-updates.html",
"systemd.path(5)": "https://www.freedesktop.org/software/systemd/man/systemd.path.html",
"systemd.positive(5)": "https://www.freedesktop.org/software/systemd/man/systemd.positive.html",
"systemd.preset(5)": "https://www.freedesktop.org/software/systemd/man/systemd.preset.html",
"systemd.resource-control(5)": "https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html",
"systemd.scope(5)": "https://www.freedesktop.org/software/systemd/man/systemd.scope.html",
"systemd.service(5)": "https://www.freedesktop.org/software/systemd/man/systemd.service.html",
"systemd.slice(5)": "https://www.freedesktop.org/software/systemd/man/systemd.slice.html",
"systemd.socket(5)": "https://www.freedesktop.org/software/systemd/man/systemd.socket.html",
"systemd.special(7)": "https://www.freedesktop.org/software/systemd/man/systemd.special.html",
"systemd.swap(5)": "https://www.freedesktop.org/software/systemd/man/systemd.swap.html",
"systemd.syntax(7)": "https://www.freedesktop.org/software/systemd/man/systemd.syntax.html",
"systemd.system-credentials(7)": "https://www.freedesktop.org/software/systemd/man/systemd.system-credentials.html",
"systemd.target(5)": "https://www.freedesktop.org/software/systemd/man/systemd.target.html",
"systemd.time(7)": "https://www.freedesktop.org/software/systemd/man/systemd.time.html",
"systemd.timer(5)": "https://www.freedesktop.org/software/systemd/man/systemd.timer.html",
"systemd.unit(5)": "https://www.freedesktop.org/software/systemd/man/systemd.unit.html",
"sysupdate.d(5)": "https://www.freedesktop.org/software/systemd/man/sysupdate.d.html",
"sysusers.d(5)": "https://www.freedesktop.org/software/systemd/man/sysusers.d.html",
"timedatectl(1)": "https://www.freedesktop.org/software/systemd/man/timedatectl.html",
"timesyncd.conf(5)": "https://www.freedesktop.org/software/systemd/man/timesyncd.conf.html",
"timesyncd.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/timesyncd.conf.d.html",
"tmpfiles.d(5)": "https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html",
"udev(7)": "https://www.freedesktop.org/software/systemd/man/udev.html",
"udev.conf(5)": "https://www.freedesktop.org/software/systemd/man/udev.conf.html",
"udevadm(8)": "https://www.freedesktop.org/software/systemd/man/udevadm.html", "udevadm(8)": "https://www.freedesktop.org/software/systemd/man/udevadm.html",
"passwd(5)": "https://man.archlinux.org/man/passwd.5",
"group(5)": "https://man.archlinux.org/man/group.5",
"login.defs(5)": "https://man.archlinux.org/man/login.defs.5",
"unshare(1)": "https://man.archlinux.org/man/unshare.1.en", "unshare(1)": "https://man.archlinux.org/man/unshare.1.en",
"nix-shell(1)": "https://nixos.org/manual/nix/stable/command-ref/nix-shell.html", "user-runtime-dir@.service(5)": "https://www.freedesktop.org/software/systemd/man/user-runtime-dir@.service.html",
"mksquashfs(1)": "https://man.archlinux.org/man/extra/squashfs-tools/mksquashfs.1.en", "user.conf.d(5)": "https://www.freedesktop.org/software/systemd/man/user.conf.d.html",
"curl(1)": "https://curl.se/docs/manpage.html", "user@.service(5)": "https://www.freedesktop.org/software/systemd/man/user@.service.html",
"netrc(5)": "https://man.cx/netrc" "userdbctl(1)": "https://www.freedesktop.org/software/systemd/man/userdbctl.html",
"vconsole.conf(5)": "https://www.freedesktop.org/software/systemd/man/vconsole.conf.html",
"veritytab(5)": "https://www.freedesktop.org/software/systemd/man/veritytab.html"
} }

View file

@ -1,4 +1,5 @@
{ "\t" = 9; {
"\t" = 9;
"\n" = 10; "\n" = 10;
"\r" = 13; "\r" = 13;
" " = 32; " " = 32;

View file

@ -36,10 +36,7 @@ rec {
::: :::
*/ */
# TODO(Profpatsch): add tests that check stderr # TODO(Profpatsch): add tests that check stderr
assertMsg = assertMsg = pred: msg: pred || builtins.throw msg;
pred:
msg:
pred || builtins.throw msg;
/** /**
Specialized `assertMsg` for checking if `val` is one of the elements Specialized `assertMsg` for checking if `val` is one of the elements
@ -81,14 +78,10 @@ rec {
::: :::
*/ */
assertOneOf = assertOneOf =
name: name: val: xs:
val: assertMsg (lib.elem val xs) "${name} must be one of ${lib.generators.toPretty { } xs}, but is: ${
xs: lib.generators.toPretty { } val
assertMsg }";
(lib.elem val xs)
"${name} must be one of ${
lib.generators.toPretty {} xs}, but is: ${
lib.generators.toPretty {} val}";
/** /**
Specialized `assertMsg` for checking if every one of `vals` is one of the elements Specialized `assertMsg` for checking if every one of `vals` is one of the elements
@ -133,12 +126,9 @@ rec {
::: :::
*/ */
assertEachOneOf = assertEachOneOf =
name: name: vals: xs:
vals: assertMsg (lib.all (val: lib.elem val xs) vals)
xs: "each element in ${name} must be one of ${lib.generators.toPretty { } xs}, but is: ${
assertMsg lib.generators.toPretty { } vals
(lib.all (val: lib.elem val xs) vals) }";
"each element in ${name} must be one of ${
lib.generators.toPretty {} xs}, but is: ${
lib.generators.toPretty {} vals}";
} }

View file

@ -9,7 +9,6 @@ rec {
`toGNUCommandLineShell` returns an escaped shell string. `toGNUCommandLineShell` returns an escaped shell string.
# Inputs # Inputs
`options` `options`
@ -20,7 +19,6 @@ rec {
: The attributes to transform into arguments. : The attributes to transform into arguments.
# Examples # Examples
:::{.example} :::{.example}
## `lib.cli.toGNUCommandLineShell` usage example ## `lib.cli.toGNUCommandLineShell` usage example
@ -40,15 +38,13 @@ rec {
::: :::
*/ */
toGNUCommandLineShell = toGNUCommandLineShell = options: attrs: lib.escapeShellArgs (toGNUCommandLine options attrs);
options: attrs: lib.escapeShellArgs (toGNUCommandLine options attrs);
/** /**
Automatically convert an attribute set to a list of command-line options. Automatically convert an attribute set to a list of command-line options.
`toGNUCommandLine` returns a list of string arguments. `toGNUCommandLine` returns a list of string arguments.
# Inputs # Inputs
`options` `options`
@ -76,7 +72,6 @@ rec {
: How to format a list value to a command list; : How to format a list value to a command list;
By default the option name is repeated for each value and `mkOption` is applied to the values themselves. By default the option name is repeated for each value and `mkOption` is applied to the values themselves.
`mkOption` `mkOption`
: How to format any remaining value to a command list; : How to format any remaining value to a command list;
@ -89,7 +84,6 @@ rec {
By default, there is no separator, so option `-c` and value `5` would become ["-c" "5"]. By default, there is no separator, so option `-c` and value `5` would become ["-c" "5"].
This is useful if the command requires equals, for example, `-c=5`. This is useful if the command requires equals, for example, `-c=5`.
# Examples # Examples
:::{.example} :::{.example}
## `lib.cli.toGNUCommandLine` usage example ## `lib.cli.toGNUCommandLine` usage example
@ -116,32 +110,38 @@ rec {
::: :::
*/ */
toGNUCommandLine = { toGNUCommandLine =
mkOptionName ? {
k: if builtins.stringLength k == 1 mkOptionName ? k: if builtins.stringLength k == 1 then "-${k}" else "--${k}",
then "-${k}"
else "--${k}",
mkBool ? k: v: lib.optional v (mkOptionName k), mkBool ? k: v: lib.optional v (mkOptionName k),
mkList ? k: v: lib.concatMap (mkOption k) v, mkList ? k: v: lib.concatMap (mkOption k) v,
mkOption ? mkOption ?
k: v: if v == null k: v:
then [] if v == null then
[ ]
else if optionValueSeparator == null then else if optionValueSeparator == null then
[ (mkOptionName k) (lib.generators.mkValueStringDefault {} v) ] [
(mkOptionName k)
(lib.generators.mkValueStringDefault { } v)
]
else else
[ "${mkOptionName k}${optionValueSeparator}${lib.generators.mkValueStringDefault {} v}" ], [ "${mkOptionName k}${optionValueSeparator}${lib.generators.mkValueStringDefault { } v}" ],
optionValueSeparator ? null optionValueSeparator ? null,
}: }:
options: options:
let let
render = k: v: render =
if builtins.isBool v then mkBool k v k: v:
else if builtins.isList v then mkList k v if builtins.isBool v then
else mkOption k v; mkBool k v
else if builtins.isList v then
mkList k v
else
mkOption k v;
in in
builtins.concatLists (lib.mapAttrsToList render options); builtins.concatLists (lib.mapAttrsToList render options);

View file

@ -26,7 +26,8 @@ let
generators generators
id id
mapAttrs mapAttrs
trace; trace
;
in in
rec { rec {
@ -36,7 +37,6 @@ rec {
/** /**
Conditionally trace the supplied message, based on a predicate. Conditionally trace the supplied message, based on a predicate.
# Inputs # Inputs
`pred` `pred`
@ -70,15 +70,13 @@ rec {
::: :::
*/ */
traceIf = traceIf =
pred: pred: msg: x:
msg: if pred then trace msg x else x;
x: if pred then trace msg x else x;
/** /**
Trace the supplied value after applying a function to it, and Trace the supplied value after applying a function to it, and
return the original value. return the original value.
# Inputs # Inputs
`f` `f`
@ -107,9 +105,7 @@ rec {
::: :::
*/ */
traceValFn = traceValFn = f: x: trace (f x) x;
f:
x: trace (f x) x;
/** /**
Trace the supplied value and return it. Trace the supplied value and return it.
@ -143,7 +139,6 @@ rec {
/** /**
`builtins.trace`, but the value is `builtins.deepSeq`ed first. `builtins.trace`, but the value is `builtins.deepSeq`ed first.
# Inputs # Inputs
`x` `x`
@ -175,16 +170,13 @@ rec {
::: :::
*/ */
traceSeq = traceSeq = x: y: trace (builtins.deepSeq x x) y;
x:
y: trace (builtins.deepSeq x x) y;
/** /**
Like `traceSeq`, but only evaluate down to depth n. Like `traceSeq`, but only evaluate down to depth n.
This is very useful because lots of `traceSeq` usages This is very useful because lots of `traceSeq` usages
lead to an infinite recursion. lead to an infinite recursion.
# Inputs # Inputs
`depth` `depth`
@ -217,25 +209,39 @@ rec {
::: :::
*/ */
traceSeqN = depth: x: y: traceSeqN =
let snip = v: if isList v then noQuotes "[]" v depth: x: y:
else if isAttrs v then noQuotes "{}" v let
else v; snip =
noQuotes = str: v: { __pretty = const str; val = v; }; v:
modify = n: fn: v: if (n == 0) then fn v if isList v then
else if isList v then map (modify (n - 1) fn) v noQuotes "[]" v
else if isAttrs v then mapAttrs else if isAttrs v then
(const (modify (n - 1) fn)) v noQuotes "{}" v
else v; else
in trace (generators.toPretty { allowPrettyValues = true; } v;
(modify depth snip x)) y; noQuotes = str: v: {
__pretty = const str;
val = v;
};
modify =
n: fn: v:
if (n == 0) then
fn v
else if isList v then
map (modify (n - 1) fn) v
else if isAttrs v then
mapAttrs (const (modify (n - 1) fn)) v
else
v;
in
trace (generators.toPretty { allowPrettyValues = true; } (modify depth snip x)) y;
/** /**
A combination of `traceVal` and `traceSeq` that applies a A combination of `traceVal` and `traceSeq` that applies a
provided function to the value to be traced after `deepSeq`ing provided function to the value to be traced after `deepSeq`ing
it. it.
# Inputs # Inputs
`f` `f`
@ -246,9 +252,7 @@ rec {
: Value to trace : Value to trace
*/ */
traceValSeqFn = traceValSeqFn = f: v: traceValFn f (builtins.deepSeq v v);
f:
v: traceValFn f (builtins.deepSeq v v);
/** /**
A combination of `traceVal` and `traceSeq`. A combination of `traceVal` and `traceSeq`.
@ -258,7 +262,6 @@ rec {
`v` `v`
: Value to trace : Value to trace
*/ */
traceValSeq = traceValSeqFn id; traceValSeq = traceValSeqFn id;
@ -266,7 +269,6 @@ rec {
A combination of `traceVal` and `traceSeqN` that applies a A combination of `traceVal` and `traceSeqN` that applies a
provided function to the value to be traced. provided function to the value to be traced.
# Inputs # Inputs
`f` `f`
@ -282,9 +284,8 @@ rec {
: Value to trace : Value to trace
*/ */
traceValSeqNFn = traceValSeqNFn =
f: f: depth: v:
depth: traceSeqN depth (f v) v;
v: traceSeqN depth (f v) v;
/** /**
A combination of `traceVal` and `traceSeqN`. A combination of `traceVal` and `traceSeqN`.
@ -308,7 +309,6 @@ rec {
This is useful for adding around a function call, This is useful for adding around a function call,
to see the before/after of values as they are transformed. to see the before/after of values as they are transformed.
# Inputs # Inputs
`depth` `depth`
@ -327,7 +327,6 @@ rec {
: 4\. Function argument : 4\. Function argument
# Examples # Examples
:::{.example} :::{.example}
## `lib.debug.traceFnSeqN` usage example ## `lib.debug.traceFnSeqN` usage example
@ -340,17 +339,16 @@ rec {
::: :::
*/ */
traceFnSeqN = depth: name: f: v: traceFnSeqN =
let res = f v; depth: name: f: v:
in lib.traceSeqN let
(depth + 1) res = f v;
{ in
lib.traceSeqN (depth + 1) {
fn = name; fn = name;
from = v; from = v;
to = res; to = res;
} } res;
res;
# -- TESTING -- # -- TESTING --
@ -375,7 +373,6 @@ rec {
- If you want to run only a subset of the tests add the attribute `tests = ["testName"];` - If you want to run only a subset of the tests add the attribute `tests = ["testName"];`
# Inputs # Inputs
`tests` `tests`
@ -430,26 +427,42 @@ rec {
::: :::
*/ */
runTests = runTests =
tests: concatLists (attrValues (mapAttrs (name: test: tests:
let testsToRun = if tests ? tests then tests.tests else []; concatLists (
in if (substring 0 4 name == "test" || elem name testsToRun) attrValues (
&& ((testsToRun == []) || elem name tests.tests) mapAttrs (
name: test:
let
testsToRun = if tests ? tests then tests.tests else [ ];
in
if
(substring 0 4 name == "test" || elem name testsToRun)
&& ((testsToRun == [ ]) || elem name tests.tests)
&& (test.expr != test.expected) && (test.expr != test.expected)
then [ { inherit name; expected = test.expected; result = test.expr; } ] then
else [] ) tests)); [
{
inherit name;
expected = test.expected;
result = test.expr;
}
]
else
[ ]
) tests
)
);
/** /**
Create a test assuming that list elements are `true`. Create a test assuming that list elements are `true`.
# Inputs # Inputs
`expr` `expr`
: 1\. Function argument : 1\. Function argument
# Examples # Examples
:::{.example} :::{.example}
## `lib.debug.testAllTrue` usage example ## `lib.debug.testAllTrue` usage example
@ -460,5 +473,8 @@ rec {
::: :::
*/ */
testAllTrue = expr: { inherit expr; expected = map (x: true) expr; }; testAllTrue = expr: {
inherit expr;
expected = map (x: true) expr;
};
} }

View file

@ -71,7 +71,7 @@ let
# these are the only ones that are currently not # these are the only ones that are currently not
inherit (builtins) addErrorContext isPath trace typeOf unsafeGetAttrPos; inherit (builtins) addErrorContext isPath trace typeOf unsafeGetAttrPos;
inherit (self.trivial) id const pipe concat or and xor bitAnd bitOr bitXor inherit (self.trivial) id const pipe concat or and xor bitAnd bitOr bitXor
bitNot boolToString mergeAttrs flip mapNullable inNixShell isFloat min max bitNot boolToString mergeAttrs flip defaultTo mapNullable inNixShell isFloat min max
importJSON importTOML warn warnIf warnIfNot throwIf throwIfNot checkListOfEnum importJSON importTOML warn warnIf warnIfNot throwIf throwIfNot checkListOfEnum
info showWarnings nixpkgsVersion version isInOldestRelease oldestSupportedReleaseIsAtLeast info showWarnings nixpkgsVersion version isInOldestRelease oldestSupportedReleaseIsAtLeast
mod compare splitByAndCompare seq deepSeq lessThan add sub mod compare splitByAndCompare seq deepSeq lessThan add sub
@ -100,7 +100,7 @@ let
length head tail elem elemAt isList; length head tail elem elemAt isList;
inherit (self.strings) concatStrings concatMapStrings concatImapStrings inherit (self.strings) concatStrings concatMapStrings concatImapStrings
stringLength substring isString replaceStrings stringLength substring isString replaceStrings
intersperse concatStringsSep concatMapStringsSep intersperse concatStringsSep concatMapStringsSep concatMapAttrsStringSep
concatImapStringsSep concatLines makeSearchPath makeSearchPathOutput concatImapStringsSep concatLines makeSearchPath makeSearchPathOutput
makeLibraryPath makeIncludePath makeBinPath optionalString makeLibraryPath makeIncludePath makeBinPath optionalString
hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape

View file

@ -9,14 +9,16 @@ let
throwIfNot throwIfNot
; ;
showMaybeAttrPosPre = prefix: attrName: v: showMaybeAttrPosPre =
let pos = builtins.unsafeGetAttrPos attrName v; prefix: attrName: v:
in if pos == null then "" else "${prefix}${pos.file}:${toString pos.line}:${toString pos.column}"; let
pos = builtins.unsafeGetAttrPos attrName v;
in
if pos == null then "" else "${prefix}${pos.file}:${toString pos.line}:${toString pos.column}";
showMaybePackagePosPre = prefix: pkg: showMaybePackagePosPre =
if pkg?meta.position && isString pkg.meta.position prefix: pkg:
then "${prefix}${pkg.meta.position}" if pkg ? meta.position && isString pkg.meta.position then "${prefix}${pkg.meta.position}" else "";
else "";
in in
{ {
/** /**
@ -94,15 +96,14 @@ in
derivation, derivation,
meta ? null, meta ? null,
passthru ? { }, passthru ? { },
outputs ? [ "out" ] outputs ? [ "out" ],
}: }:
let let
# These checks are strict in `drv` and some `drv` attributes, but the # These checks are strict in `drv` and some `drv` attributes, but the
# attrset spine returned by lazyDerivation does not depend on it. # attrset spine returned by lazyDerivation does not depend on it.
# Instead, the individual derivation attributes do depend on it. # Instead, the individual derivation attributes do depend on it.
checked = checked =
throwIfNot (derivation.type or null == "derivation") throwIfNot (derivation.type or null == "derivation") "lazyDerivation: input must be a derivation."
"lazyDerivation: input must be a derivation."
throwIfNot throwIfNot
# NOTE: Technically we could require our outputs to be a subset of the # NOTE: Technically we could require our outputs to be a subset of the
# actual ones, or even leave them unchecked and fail on a lazy basis. # actual ones, or even leave them unchecked and fail on a lazy basis.
@ -152,7 +153,13 @@ in
# A fixed set of derivation values, so that `lazyDerivation` can return # A fixed set of derivation values, so that `lazyDerivation` can return
# its attrset before evaluating `derivation`. # its attrset before evaluating `derivation`.
# This must only list attributes that are available on _all_ derivations. # This must only list attributes that are available on _all_ derivations.
inherit (checked) outPath outputName drvPath name system; inherit (checked)
outPath
outputName
drvPath
name
system
;
inherit outputs; inherit outputs;
# The meta attribute can either be taken from the derivation, or if the # The meta attribute can either be taken from the derivation, or if the
@ -170,7 +177,6 @@ in
Thus, this function passes through its `value` argument if the `cond` Thus, this function passes through its `value` argument if the `cond`
is `true`, but returns `null` if not. is `true`, but returns `null` if not.
# Inputs # Inputs
`cond` `cond`
@ -205,9 +211,7 @@ in
::: :::
*/ */
optionalDrvAttr = optionalDrvAttr = cond: value: if cond then value else null;
cond:
value: if cond then value else null;
/** /**
Wrap a derivation such that instantiating it produces a warning. Wrap a derivation such that instantiating it produces a warning.
@ -238,8 +242,11 @@ in
warnOnInstantiate = warnOnInstantiate =
msg: drv: msg: drv:
let let
drvToWrap = removeAttrs drv [ "meta" "name" "type" ]; drvToWrap = removeAttrs drv [
"meta"
"name"
"type"
];
in in
drv drv // mapAttrs (_: lib.warn msg) drvToWrap;
// mapAttrs (_: lib.warn msg) drvToWrap;
} }

View file

@ -3,7 +3,7 @@
let let
commonH = hashTypes: rec { commonH = hashTypes: rec {
hashNames = [ "hash" ] ++ hashTypes; hashNames = [ "hash" ] ++ hashTypes;
hashSet = lib.genAttrs hashNames (lib.const {}); hashSet = lib.genAttrs hashNames (lib.const { });
}; };
fakeH = { fakeH = {
@ -11,15 +11,24 @@ let
sha256 = lib.fakeSha256; sha256 = lib.fakeSha256;
sha512 = lib.fakeSha512; sha512 = lib.fakeSha512;
}; };
in rec { in
rec {
proxyImpureEnvVars = [ proxyImpureEnvVars = [
# We borrow these environment variables from the caller to allow # We borrow these environment variables from the caller to allow
# easy proxy configuration. This is impure, but a fixed-output # easy proxy configuration. This is impure, but a fixed-output
# derivation like fetchurl is allowed to do so since its result is # derivation like fetchurl is allowed to do so since its result is
# by definition pure. # by definition pure.
"http_proxy" "https_proxy" "ftp_proxy" "all_proxy" "no_proxy" "http_proxy"
"HTTP_PROXY" "HTTPS_PROXY" "FTP_PROXY" "ALL_PROXY" "NO_PROXY" "https_proxy"
"ftp_proxy"
"all_proxy"
"no_proxy"
"HTTP_PROXY"
"HTTPS_PROXY"
"FTP_PROXY"
"ALL_PROXY"
"NO_PROXY"
# https proxies typically need to inject custom root CAs too # https proxies typically need to inject custom root CAs too
"NIX_SSL_CERT_FILE" "NIX_SSL_CERT_FILE"
@ -77,13 +86,24 @@ in rec {
required required
: whether to throw if no hash was present in the input; otherwise returns the original input, unmodified : whether to throw if no hash was present in the input; otherwise returns the original input, unmodified
*/ */
normalizeHash = { normalizeHash =
{
hashTypes ? [ "sha256" ], hashTypes ? [ "sha256" ],
required ? true, required ? true,
}: }:
let let
inherit (lib) concatMapStringsSep head tail throwIf; inherit (lib)
inherit (lib.attrsets) attrsToList intersectAttrs removeAttrs optionalAttrs; concatMapStringsSep
head
tail
throwIf
;
inherit (lib.attrsets)
attrsToList
intersectAttrs
removeAttrs
optionalAttrs
;
inherit (commonH hashTypes) hashNames hashSet; inherit (commonH hashTypes) hashNames hashSet;
in in
@ -95,24 +115,27 @@ in rec {
# The argument hash, as a {name, value} pair # The argument hash, as a {name, value} pair
h = h =
# All hashes passed in arguments (possibly 0 or >1) as a list of {name, value} pairs # All hashes passed in arguments (possibly 0 or >1) as a list of {name, value} pairs
let hashesAsNVPairs = attrsToList (intersectAttrs hashSet args); in let
if hashesAsNVPairs == [] then hashesAsNVPairs = attrsToList (intersectAttrs hashSet args);
throwIf required "fetcher called without `hash`" null
else if tail hashesAsNVPairs != [] then
throw "fetcher called with mutually-incompatible arguments: ${concatMapStringsSep ", " (a: a.name) hashesAsNVPairs}"
else
head hashesAsNVPairs
;
in in
removeAttrs args hashNames // (optionalAttrs (h != null) { if hashesAsNVPairs == [ ] then
throwIf required "fetcher called without `hash`" null
else if tail hashesAsNVPairs != [ ] then
throw "fetcher called with mutually-incompatible arguments: ${
concatMapStringsSep ", " (a: a.name) hashesAsNVPairs
}"
else
head hashesAsNVPairs;
in
removeAttrs args hashNames
// (optionalAttrs (h != null) {
outputHashAlgo = if h.name == "hash" then null else h.name; outputHashAlgo = if h.name == "hash" then null else h.name;
outputHash = outputHash =
if h.value == "" then if h.value == "" then
fakeH.${h.name} or (throw "no fake hash defined for ${h.name}") fakeH.${h.name} or (throw "no fake hash defined for ${h.name}")
else else
h.value; h.value;
}) });
;
/** /**
Wraps a function which accepts `outputHash{,Algo}` into one which accepts `hash` or `sha{256,512}` Wraps a function which accepts `outputHash{,Algo}` into one which accepts `hash` or `sha{256,512}`
@ -164,9 +187,11 @@ in rec {
However, `withNormalizedHash` preserves `functionArgs` metadata insofar as possible, However, `withNormalizedHash` preserves `functionArgs` metadata insofar as possible,
and is implemented somewhat more efficiently. and is implemented somewhat more efficiently.
*/ */
withNormalizedHash = { withNormalizedHash =
hashTypes ? [ "sha256" ] {
}: fetcher: hashTypes ? [ "sha256" ],
}:
fetcher:
let let
inherit (lib.attrsets) genAttrs intersectAttrs removeAttrs; inherit (lib.attrsets) genAttrs intersectAttrs removeAttrs;
inherit (lib.trivial) const functionArgs setFunctionArgs; inherit (lib.trivial) const functionArgs setFunctionArgs;
@ -181,9 +206,15 @@ in rec {
in in
# The o.g. fetcher must *only* accept outputHash and outputHashAlgo # The o.g. fetcher must *only* accept outputHash and outputHashAlgo
assert fArgs ? outputHash && fArgs ? outputHashAlgo; assert fArgs ? outputHash && fArgs ? outputHashAlgo;
assert intersectAttrs fArgs hashSet == {}; assert intersectAttrs fArgs hashSet == { };
setFunctionArgs setFunctionArgs (args: fetcher (normalize args)) (
(args: fetcher (normalize args)) removeAttrs fArgs [
(removeAttrs fArgs [ "outputHash" "outputHashAlgo" ] // { hash = fArgs.outputHash; }); "outputHash"
"outputHashAlgo"
]
// {
hash = fArgs.outputHash;
}
);
} }

View file

@ -57,7 +57,6 @@
If you need more file set functions, If you need more file set functions,
see [this issue](https://github.com/NixOS/nixpkgs/issues/266356) to request it. see [this issue](https://github.com/NixOS/nixpkgs/issues/266356) to request it.
# Implicit coercion from paths to file sets {#sec-fileset-path-coercion} # Implicit coercion from paths to file sets {#sec-fileset-path-coercion}
All functions accepting file sets as arguments can also accept [paths](https://nixos.org/manual/nix/stable/language/values.html#type-path) as arguments. All functions accepting file sets as arguments can also accept [paths](https://nixos.org/manual/nix/stable/language/values.html#type-path) as arguments.
@ -155,14 +154,14 @@ let
pipe pipe
; ;
in { in
{
/** /**
Create a file set from a path that may or may not exist: Create a file set from a path that may or may not exist:
- If the path does exist, the path is [coerced to a file set](#sec-fileset-path-coercion). - If the path does exist, the path is [coerced to a file set](#sec-fileset-path-coercion).
- If the path does not exist, a file set containing no files is returned. - If the path does not exist, a file set containing no files is returned.
# Inputs # Inputs
`path` `path`
@ -188,14 +187,12 @@ in {
*/ */
maybeMissing = maybeMissing =
path: path:
if ! isPath path then if !isPath path then
if isStringLike path then if isStringLike path then
throw '' throw ''lib.fileset.maybeMissing: Argument ("${toString path}") is a string-like value, but it should be a path instead.''
lib.fileset.maybeMissing: Argument ("${toString path}") is a string-like value, but it should be a path instead.''
else else
throw '' throw ''lib.fileset.maybeMissing: Argument is of type ${typeOf path}, but it should be a path instead.''
lib.fileset.maybeMissing: Argument is of type ${typeOf path}, but it should be a path instead.'' else if !pathExists path then
else if ! pathExists path then
_emptyWithoutBase _emptyWithoutBase
else else
_singleton path; _singleton path;
@ -211,7 +208,6 @@ in {
This variant is useful for tracing file sets in the Nix repl. This variant is useful for tracing file sets in the Nix repl.
# Inputs # Inputs
`fileset` `fileset`
@ -248,15 +244,14 @@ in {
::: :::
*/ */
trace = fileset: trace =
fileset:
let let
# "fileset" would be a better name, but that would clash with the argument name, # "fileset" would be a better name, but that would clash with the argument name,
# and we cannot change that because of https://github.com/nix-community/nixdoc/issues/76 # and we cannot change that because of https://github.com/nix-community/nixdoc/issues/76
actualFileset = _coerce "lib.fileset.trace: Argument" fileset; actualFileset = _coerce "lib.fileset.trace: Argument" fileset;
in in
seq seq (_printFileset actualFileset) (x: x);
(_printFileset actualFileset)
(x: x);
/** /**
Incrementally evaluate and trace a file set in a pretty way. Incrementally evaluate and trace a file set in a pretty way.
@ -268,7 +263,6 @@ in {
This variant is useful for tracing file sets passed as arguments to other functions. This variant is useful for tracing file sets passed as arguments to other functions.
# Inputs # Inputs
`fileset` `fileset`
@ -308,14 +302,14 @@ in {
::: :::
*/ */
traceVal = fileset: traceVal =
fileset:
let let
# "fileset" would be a better name, but that would clash with the argument name, # "fileset" would be a better name, but that would clash with the argument name,
# and we cannot change that because of https://github.com/nix-community/nixdoc/issues/76 # and we cannot change that because of https://github.com/nix-community/nixdoc/issues/76
actualFileset = _coerce "lib.fileset.traceVal: Argument" fileset; actualFileset = _coerce "lib.fileset.traceVal: Argument" fileset;
in in
seq seq (_printFileset actualFileset)
(_printFileset actualFileset)
# We could also return the original fileset argument here, # We could also return the original fileset argument here,
# but that would then duplicate work for consumers of the fileset, because then they have to coerce it again # but that would then duplicate work for consumers of the fileset, because then they have to coerce it again
actualFileset; actualFileset;
@ -423,7 +417,8 @@ in {
::: :::
*/ */
toSource = { toSource =
{
root, root,
fileset, fileset,
}: }:
@ -437,7 +432,7 @@ in {
filesetFilesystemRoot = (splitRoot fileset._internalBase).root; filesetFilesystemRoot = (splitRoot fileset._internalBase).root;
sourceFilter = _toSourceFilter fileset; sourceFilter = _toSourceFilter fileset;
in in
if ! isPath root then if !isPath root then
if root ? _isLibCleanSourceWith then if root ? _isLibCleanSourceWith then
throw '' throw ''
lib.fileset.toSource: `root` is a `lib.sources`-based value, but it should be a path instead. lib.fileset.toSource: `root` is a `lib.sources`-based value, but it should be a path instead.
@ -448,38 +443,34 @@ in {
lib.fileset.toSource: `root` (${toString root}) is a string-like value, but it should be a path instead. lib.fileset.toSource: `root` (${toString root}) is a string-like value, but it should be a path instead.
Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'' Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.''
else else
throw '' throw ''lib.fileset.toSource: `root` is of type ${typeOf root}, but it should be a path instead.''
lib.fileset.toSource: `root` is of type ${typeOf root}, but it should be a path instead.''
# Currently all Nix paths have the same filesystem root, but this could change in the future. # Currently all Nix paths have the same filesystem root, but this could change in the future.
# See also ../path/README.md # See also ../path/README.md
else if ! fileset._internalIsEmptyWithoutBase && rootFilesystemRoot != filesetFilesystemRoot then else if !fileset._internalIsEmptyWithoutBase && rootFilesystemRoot != filesetFilesystemRoot then
throw '' throw ''
lib.fileset.toSource: Filesystem roots are not the same for `fileset` and `root` (${toString root}): lib.fileset.toSource: Filesystem roots are not the same for `fileset` and `root` (${toString root}):
`root`: Filesystem root is "${toString rootFilesystemRoot}" `root`: Filesystem root is "${toString rootFilesystemRoot}"
`fileset`: Filesystem root is "${toString filesetFilesystemRoot}" `fileset`: Filesystem root is "${toString filesetFilesystemRoot}"
Different filesystem roots are not supported.'' Different filesystem roots are not supported.''
else if ! pathExists root then else if !pathExists root then
throw '' throw ''lib.fileset.toSource: `root` (${toString root}) is a path that does not exist.''
lib.fileset.toSource: `root` (${toString root}) is a path that does not exist.''
else if pathType root != "directory" then else if pathType root != "directory" then
throw '' throw ''
lib.fileset.toSource: `root` (${toString root}) is a file, but it should be a directory instead. Potential solutions: lib.fileset.toSource: `root` (${toString root}) is a file, but it should be a directory instead. Potential solutions:
- If you want to import the file into the store _without_ a containing directory, use string interpolation or `builtins.path` instead of this function. - If you want to import the file into the store _without_ a containing directory, use string interpolation or `builtins.path` instead of this function.
- If you want to import the file into the store _with_ a containing directory, set `root` to the containing directory, such as ${toString (dirOf root)}, and set `fileset` to the file path.'' - If you want to import the file into the store _with_ a containing directory, set `root` to the containing directory, such as ${toString (dirOf root)}, and set `fileset` to the file path.''
else if ! fileset._internalIsEmptyWithoutBase && ! hasPrefix root fileset._internalBase then else if !fileset._internalIsEmptyWithoutBase && !hasPrefix root fileset._internalBase then
throw '' throw ''
lib.fileset.toSource: `fileset` could contain files in ${toString fileset._internalBase}, which is not under the `root` (${toString root}). Potential solutions: lib.fileset.toSource: `fileset` could contain files in ${toString fileset._internalBase}, which is not under the `root` (${toString root}). Potential solutions:
- Set `root` to ${toString fileset._internalBase} or any directory higher up. This changes the layout of the resulting store path. - Set `root` to ${toString fileset._internalBase} or any directory higher up. This changes the layout of the resulting store path.
- Set `fileset` to a file set that cannot contain files outside the `root` (${toString root}). This could change the files included in the result.'' - Set `fileset` to a file set that cannot contain files outside the `root` (${toString root}). This could change the files included in the result.''
else else
seq sourceFilter seq sourceFilter cleanSourceWith {
cleanSourceWith {
name = "source"; name = "source";
src = root; src = root;
filter = sourceFilter; filter = sourceFilter;
}; };
/** /**
The list of file paths contained in the given file set. The list of file paths contained in the given file set.
@ -494,7 +485,6 @@ in {
The resulting list of files can be turned back into a file set using [`lib.fileset.unions`](#function-library-lib.fileset.unions). The resulting list of files can be turned back into a file set using [`lib.fileset.unions`](#function-library-lib.fileset.unions).
# Inputs # Inputs
`fileset` `fileset`
@ -521,8 +511,7 @@ in {
::: :::
*/ */
toList = fileset: toList = fileset: _toList (_coerce "lib.fileset.toList: Argument" fileset);
_toList (_coerce "lib.fileset.toList: Argument" fileset);
/** /**
The file set containing all files that are in either of two given file sets. The file set containing all files that are in either of two given file sets.
@ -533,7 +522,6 @@ in {
The given file sets are evaluated as lazily as possible, The given file sets are evaluated as lazily as possible,
with the first argument being evaluated first if needed. with the first argument being evaluated first if needed.
# Inputs # Inputs
`fileset1` `fileset1`
@ -567,10 +555,9 @@ in {
::: :::
*/ */
union = union =
fileset1: fileset1: fileset2:
fileset2: _unionMany (
_unionMany _coerceMany "lib.fileset.union" [
(_coerceMany "lib.fileset.union" [
{ {
context = "First argument"; context = "First argument";
value = fileset1; value = fileset1;
@ -579,7 +566,8 @@ in {
context = "Second argument"; context = "Second argument";
value = fileset2; value = fileset2;
} }
]); ]
);
/** /**
The file set containing all files that are in any of the given file sets. The file set containing all files that are in any of the given file sets.
@ -590,7 +578,6 @@ in {
The given file sets are evaluated as lazily as possible, The given file sets are evaluated as lazily as possible,
with earlier elements being evaluated first if needed. with earlier elements being evaluated first if needed.
# Inputs # Inputs
`filesets` `filesets`
@ -631,16 +618,17 @@ in {
*/ */
unions = unions =
filesets: filesets:
if ! isList filesets then if !isList filesets then
throw '' throw ''lib.fileset.unions: Argument is of type ${typeOf filesets}, but it should be a list instead.''
lib.fileset.unions: Argument is of type ${typeOf filesets}, but it should be a list instead.''
else else
pipe filesets [ pipe filesets [
# Annotate the elements with context, used by _coerceMany for better errors # Annotate the elements with context, used by _coerceMany for better errors
(imap0 (i: el: { (imap0 (
i: el: {
context = "Element ${toString i}"; context = "Element ${toString i}";
value = el; value = el;
})) }
))
(_coerceMany "lib.fileset.unions") (_coerceMany "lib.fileset.unions")
_unionMany _unionMany
]; ];
@ -652,7 +640,6 @@ in {
The given file sets are evaluated as lazily as possible, The given file sets are evaluated as lazily as possible,
with the first argument being evaluated first if needed. with the first argument being evaluated first if needed.
# Inputs # Inputs
`fileset1` `fileset1`
@ -681,8 +668,7 @@ in {
::: :::
*/ */
intersection = intersection =
fileset1: fileset1: fileset2:
fileset2:
let let
filesets = _coerceMany "lib.fileset.intersection" [ filesets = _coerceMany "lib.fileset.intersection" [
{ {
@ -695,9 +681,7 @@ in {
} }
]; ];
in in
_intersection _intersection (elemAt filesets 0) (elemAt filesets 1);
(elemAt filesets 0)
(elemAt filesets 1);
/** /**
The file set containing all files from the first file set that are not in the second file set. The file set containing all files from the first file set that are not in the second file set.
@ -706,7 +690,6 @@ in {
The given file sets are evaluated as lazily as possible, The given file sets are evaluated as lazily as possible,
with the first argument being evaluated first if needed. with the first argument being evaluated first if needed.
# Inputs # Inputs
`positive` `positive`
@ -744,8 +727,7 @@ in {
::: :::
*/ */
difference = difference =
positive: positive: negative:
negative:
let let
filesets = _coerceMany "lib.fileset.difference" [ filesets = _coerceMany "lib.fileset.difference" [
{ {
@ -758,14 +740,11 @@ in {
} }
]; ];
in in
_difference _difference (elemAt filesets 0) (elemAt filesets 1);
(elemAt filesets 0)
(elemAt filesets 1);
/** /**
Filter a file set to only contain files matching some predicate. Filter a file set to only contain files matching some predicate.
# Inputs # Inputs
`predicate` `predicate`
@ -827,22 +806,18 @@ in {
::: :::
*/ */
fileFilter = fileFilter =
predicate: predicate: path:
path: if !isFunction predicate then
if ! isFunction predicate then throw ''lib.fileset.fileFilter: First argument is of type ${typeOf predicate}, but it should be a function instead.''
throw '' else if !isPath path then
lib.fileset.fileFilter: First argument is of type ${typeOf predicate}, but it should be a function instead.''
else if ! isPath path then
if path._type or "" == "fileset" then if path._type or "" == "fileset" then
throw '' throw ''
lib.fileset.fileFilter: Second argument is a file set, but it should be a path instead. lib.fileset.fileFilter: Second argument is a file set, but it should be a path instead.
If you need to filter files in a file set, use `intersection fileset (fileFilter pred ./.)` instead.'' If you need to filter files in a file set, use `intersection fileset (fileFilter pred ./.)` instead.''
else else
throw '' throw ''lib.fileset.fileFilter: Second argument is of type ${typeOf path}, but it should be a path instead.''
lib.fileset.fileFilter: Second argument is of type ${typeOf path}, but it should be a path instead.'' else if !pathExists path then
else if ! pathExists path then throw ''lib.fileset.fileFilter: Second argument (${toString path}) is a path that does not exist.''
throw ''
lib.fileset.fileFilter: Second argument (${toString path}) is a path that does not exist.''
else else
_fileFilter predicate path; _fileFilter predicate path;
@ -859,7 +834,6 @@ in {
Turning the result of this function back into a source using `toSource` will therefore not preserve empty directories. Turning the result of this function back into a source using `toSource` will therefore not preserve empty directories.
::: :::
# Inputs # Inputs
`source` `source`
@ -905,7 +879,8 @@ in {
::: :::
*/ */
fromSource = source: fromSource =
source:
let let
# This function uses `._isLibCleanSourceWith`, `.origSrc` and `.filter`, # This function uses `._isLibCleanSourceWith`, `.origSrc` and `.filter`,
# which are technically internal to lib.sources, # which are technically internal to lib.sources,
@ -915,17 +890,15 @@ in {
path = if isFiltered then source.origSrc else source; path = if isFiltered then source.origSrc else source;
in in
# We can only support sources created from paths # We can only support sources created from paths
if ! isPath path then if !isPath path then
if isStringLike path then if isStringLike path then
throw '' throw ''
lib.fileset.fromSource: The source origin of the argument is a string-like value ("${toString path}"), but it should be a path instead. lib.fileset.fromSource: The source origin of the argument is a string-like value ("${toString path}"), but it should be a path instead.
Sources created from paths in strings cannot be turned into file sets, use `lib.sources` or derivations instead.'' Sources created from paths in strings cannot be turned into file sets, use `lib.sources` or derivations instead.''
else else
throw '' throw ''lib.fileset.fromSource: The source origin of the argument is of type ${typeOf path}, but it should be a path instead.''
lib.fileset.fromSource: The source origin of the argument is of type ${typeOf path}, but it should be a path instead.'' else if !pathExists path then
else if ! pathExists path then throw ''lib.fileset.fromSource: The source origin (${toString path}) of the argument is a path that does not exist.''
throw ''
lib.fileset.fromSource: The source origin (${toString path}) of the argument is a path that does not exist.''
else if isFiltered then else if isFiltered then
_fromSourceFilter path source.filter _fromSourceFilter path source.filter
else else
@ -937,7 +910,6 @@ in {
This function behaves like [`gitTrackedWith { }`](#function-library-lib.fileset.gitTrackedWith) - using the defaults. This function behaves like [`gitTrackedWith { }`](#function-library-lib.fileset.gitTrackedWith) - using the defaults.
# Inputs # Inputs
`path` `path`
@ -966,13 +938,7 @@ in {
::: :::
*/ */
gitTracked = gitTracked = path: _fromFetchGit "gitTracked" "argument" path { };
path:
_fromFetchGit
"gitTracked"
"argument"
path
{};
/** /**
Create a file set containing all [Git-tracked files](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository) in a repository. Create a file set containing all [Git-tracked files](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository) in a repository.
@ -998,7 +964,6 @@ in {
This may change in the future. This may change in the future.
::: :::
# Inputs # Inputs
`options` (attribute set) `options` (attribute set)
@ -1033,19 +998,18 @@ in {
recurseSubmodules ? false, recurseSubmodules ? false,
}: }:
path: path:
if ! isBool recurseSubmodules then if !isBool recurseSubmodules then
throw "lib.fileset.gitTrackedWith: Expected the attribute `recurseSubmodules` of the first argument to be a boolean, but it's a ${typeOf recurseSubmodules} instead." throw "lib.fileset.gitTrackedWith: Expected the attribute `recurseSubmodules` of the first argument to be a boolean, but it's a ${typeOf recurseSubmodules} instead."
else if recurseSubmodules && versionOlder nixVersion _fetchGitSubmodulesMinver then else if recurseSubmodules && versionOlder nixVersion _fetchGitSubmodulesMinver then
throw "lib.fileset.gitTrackedWith: Setting the attribute `recurseSubmodules` to `true` is only supported for Nix version ${_fetchGitSubmodulesMinver} and after, but Nix version ${nixVersion} is used." throw "lib.fileset.gitTrackedWith: Setting the attribute `recurseSubmodules` to `true` is only supported for Nix version ${_fetchGitSubmodulesMinver} and after, but Nix version ${nixVersion} is used."
else else
_fromFetchGit _fromFetchGit "gitTrackedWith" "second argument" path
"gitTrackedWith"
"second argument"
path
# This is the only `fetchGit` parameter that makes sense in this context. # This is the only `fetchGit` parameter that makes sense in this context.
# We can't just pass `submodules = recurseSubmodules` here because # We can't just pass `submodules = recurseSubmodules` here because
# this would fail for Nix versions that don't support `submodules`. # this would fail for Nix versions that don't support `submodules`.
(lib.optionalAttrs recurseSubmodules { (
lib.optionalAttrs recurseSubmodules {
submodules = true; submodules = true;
}); }
);
} }

View file

@ -1,4 +1,6 @@
{ lib ? import ../. }: {
lib ? import ../.,
}:
let let
inherit (builtins) inherit (builtins)
@ -87,7 +89,8 @@ rec {
let let
parts = splitRoot filesetV0._internalBase; parts = splitRoot filesetV0._internalBase;
in in
filesetV0 // { filesetV0
// {
_internalVersion = 1; _internalVersion = 1;
_internalBaseRoot = parts.root; _internalBaseRoot = parts.root;
_internalBaseComponents = components parts.subpath; _internalBaseComponents = components parts.subpath;
@ -98,7 +101,8 @@ rec {
( (
filesetV1: filesetV1:
# This change is backwards compatible (but not forwards compatible, so we still need a new version) # This change is backwards compatible (but not forwards compatible, so we still need a new version)
filesetV1 // { filesetV1
// {
_internalVersion = 2; _internalVersion = 2;
} }
) )
@ -106,7 +110,8 @@ rec {
# Convert v2 into v3: filesetTree's now have a representation for an empty file set without a base path # Convert v2 into v3: filesetTree's now have a representation for an empty file set without a base path
( (
filesetV2: filesetV2:
filesetV2 // { filesetV2
// {
# All v1 file sets are not the new empty file set # All v1 file sets are not the new empty file set
_internalIsEmptyWithoutBase = false; _internalIsEmptyWithoutBase = false;
_internalVersion = 3; _internalVersion = 3;
@ -136,7 +141,8 @@ rec {
# Create a fileset, see ./README.md#fileset # Create a fileset, see ./README.md#fileset
# Type: path -> filesetTree -> fileset # Type: path -> filesetTree -> fileset
_create = base: tree: _create =
base: tree:
let let
# Decompose the base into its components # Decompose the base into its components
# See ../path/README.md for why we're not just using `toString` # See ../path/README.md for why we're not just using `toString`
@ -162,7 +168,8 @@ rec {
# Coerce a value to a fileset, erroring when the value cannot be coerced. # Coerce a value to a fileset, erroring when the value cannot be coerced.
# The string gives the context for error messages. # The string gives the context for error messages.
# Type: String -> (fileset | Path) -> fileset # Type: String -> (fileset | Path) -> fileset
_coerce = context: value: _coerce =
context: value:
if value._type or "" == "fileset" then if value._type or "" == "fileset" then
if value._internalVersion > _currentVersion then if value._internalVersion > _currentVersion then
throw '' throw ''
@ -173,12 +180,14 @@ rec {
else if value._internalVersion < _currentVersion then else if value._internalVersion < _currentVersion then
let let
# Get all the migration functions necessary to convert from the old to the current version # Get all the migration functions necessary to convert from the old to the current version
migrationsToApply = sublist value._internalVersion (_currentVersion - value._internalVersion) migrations; migrationsToApply = sublist value._internalVersion (
_currentVersion - value._internalVersion
) migrations;
in in
foldl' (value: migration: migration value) value migrationsToApply foldl' (value: migration: migration value) value migrationsToApply
else else
value value
else if ! isPath value then else if !isPath value then
if value ? _isLibCleanSourceWith then if value ? _isLibCleanSourceWith then
throw '' throw ''
${context} is a `lib.sources`-based value, but it should be a file set or a path instead. ${context} is a `lib.sources`-based value, but it should be a file set or a path instead.
@ -189,9 +198,8 @@ rec {
${context} ("${toString value}") is a string-like value, but it should be a file set or a path instead. ${context} ("${toString value}") is a string-like value, but it should be a file set or a path instead.
Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'' Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.''
else else
throw '' throw ''${context} is of type ${typeOf value}, but it should be a file set or a path instead.''
${context} is of type ${typeOf value}, but it should be a file set or a path instead.'' else if !pathExists value then
else if ! pathExists value then
throw '' throw ''
${context} (${toString value}) is a path that does not exist. ${context} (${toString value}) is a path that does not exist.
To create a file set from a path that may not exist, use `lib.fileset.maybeMissing`.'' To create a file set from a path that may not exist, use `lib.fileset.maybeMissing`.''
@ -201,22 +209,21 @@ rec {
# Coerce many values to filesets, erroring when any value cannot be coerced, # Coerce many values to filesets, erroring when any value cannot be coerced,
# or if the filesystem root of the values doesn't match. # or if the filesystem root of the values doesn't match.
# Type: String -> [ { context :: String, value :: fileset | Path } ] -> [ fileset ] # Type: String -> [ { context :: String, value :: fileset | Path } ] -> [ fileset ]
_coerceMany = functionContext: list: _coerceMany =
functionContext: list:
let let
filesets = map ({ context, value }: filesets = map ({ context, value }: _coerce "${functionContext}: ${context}" value) list;
_coerce "${functionContext}: ${context}" value
) list;
# Find the first value with a base, there may be none! # Find the first value with a base, there may be none!
firstWithBase = findFirst (fileset: ! fileset._internalIsEmptyWithoutBase) null filesets; firstWithBase = findFirst (fileset: !fileset._internalIsEmptyWithoutBase) null filesets;
# This value is only accessed if first != null # This value is only accessed if first != null
firstBaseRoot = firstWithBase._internalBaseRoot; firstBaseRoot = firstWithBase._internalBaseRoot;
# Finds the first element with a filesystem root different than the first element, if any # Finds the first element with a filesystem root different than the first element, if any
differentIndex = findFirstIndex (fileset: differentIndex = findFirstIndex (
fileset:
# The empty value without a base doesn't have a base path # The empty value without a base doesn't have a base path
! fileset._internalIsEmptyWithoutBase !fileset._internalIsEmptyWithoutBase && firstBaseRoot != fileset._internalBaseRoot
&& firstBaseRoot != fileset._internalBaseRoot
) null filesets; ) null filesets;
in in
# Only evaluates `differentIndex` if there are any elements with a base # Only evaluates `differentIndex` if there are any elements with a base
@ -231,7 +238,8 @@ rec {
# Create a file set from a path. # Create a file set from a path.
# Type: Path -> fileset # Type: Path -> fileset
_singleton = path: _singleton =
path:
let let
type = pathType path; type = pathType path;
in in
@ -244,21 +252,20 @@ rec {
# "default.nix" = <type>; # "default.nix" = <type>;
# } # }
# See ./README.md#single-files # See ./README.md#single-files
_create (dirOf path) _create (dirOf path) {
{
${baseNameOf path} = type; ${baseNameOf path} = type;
}; };
# Expand a directory representation to an equivalent one in attribute set form. # Expand a directory representation to an equivalent one in attribute set form.
# All directory entries are included in the result. # All directory entries are included in the result.
# Type: Path -> filesetTree -> { <name> = filesetTree; } # Type: Path -> filesetTree -> { <name> = filesetTree; }
_directoryEntries = path: value: _directoryEntries =
path: value:
if value == "directory" then if value == "directory" then
readDir path readDir path
else else
# Set all entries not present to null # Set all entries not present to null
mapAttrs (name: value: null) (readDir path) mapAttrs (name: value: null) (readDir path) // value;
// value;
/* /*
A normalisation of a filesetTree suitable filtering with `builtins.path`: A normalisation of a filesetTree suitable filtering with `builtins.path`:
@ -271,7 +278,8 @@ rec {
Type: Path -> filesetTree -> filesetTree Type: Path -> filesetTree -> filesetTree
*/ */
_normaliseTreeFilter = path: tree: _normaliseTreeFilter =
path: tree:
if tree == "directory" || isAttrs tree then if tree == "directory" || isAttrs tree then
let let
entries = _directoryEntries path tree; entries = _directoryEntries path tree;
@ -301,7 +309,8 @@ rec {
Type: Path -> filesetTree -> filesetTree (with "emptyDir"'s) Type: Path -> filesetTree -> filesetTree (with "emptyDir"'s)
*/ */
_normaliseTreeMinimal = path: tree: _normaliseTreeMinimal =
path: tree:
if tree == "directory" || isAttrs tree then if tree == "directory" || isAttrs tree then
let let
entries = _directoryEntries path tree; entries = _directoryEntries path tree;
@ -334,9 +343,11 @@ rec {
# Trace a filesetTree in a pretty way when the resulting value is evaluated. # Trace a filesetTree in a pretty way when the resulting value is evaluated.
# This can handle both normal filesetTree's, and ones returned from _normaliseTreeMinimal # This can handle both normal filesetTree's, and ones returned from _normaliseTreeMinimal
# Type: Path -> filesetTree (with "emptyDir"'s) -> Null # Type: Path -> filesetTree (with "emptyDir"'s) -> Null
_printMinimalTree = base: tree: _printMinimalTree =
base: tree:
let let
treeSuffix = tree: treeSuffix =
tree:
if isAttrs tree then if isAttrs tree then
"" ""
else if tree == "directory" then else if tree == "directory" then
@ -349,14 +360,15 @@ rec {
" (${tree})"; " (${tree})";
# Only for attribute set trees # Only for attribute set trees
traceTreeAttrs = prevLine: indent: tree: traceTreeAttrs =
foldl' (prevLine: name: prevLine: indent: tree:
foldl' (
prevLine: name:
let let
subtree = tree.${name}; subtree = tree.${name};
# Evaluating this prints the line for this subtree # Evaluating this prints the line for this subtree
thisLine = thisLine = trace "${indent}- ${name}${treeSuffix subtree}" prevLine;
trace "${indent}- ${name}${treeSuffix subtree}" prevLine;
in in
if subtree == null || subtree == "emptyDir" then if subtree == null || subtree == "emptyDir" then
# Don't print anything at all if this subtree is empty # Don't print anything at all if this subtree is empty
@ -378,24 +390,24 @@ rec {
else else
trace "${toString base}${treeSuffix tree}" null; trace "${toString base}${treeSuffix tree}" null;
in in
if isAttrs tree then if isAttrs tree then traceTreeAttrs firstLine "" tree else firstLine;
traceTreeAttrs firstLine "" tree
else
firstLine;
# Pretty-print a file set in a pretty way when the resulting value is evaluated # Pretty-print a file set in a pretty way when the resulting value is evaluated
# Type: fileset -> Null # Type: fileset -> Null
_printFileset = fileset: _printFileset =
fileset:
if fileset._internalIsEmptyWithoutBase then if fileset._internalIsEmptyWithoutBase then
trace "(empty)" null trace "(empty)" null
else else
_printMinimalTree fileset._internalBase _printMinimalTree fileset._internalBase (
(_normaliseTreeMinimal fileset._internalBase fileset._internalTree); _normaliseTreeMinimal fileset._internalBase fileset._internalTree
);
# Turn a fileset into a source filter function suitable for `builtins.path` # Turn a fileset into a source filter function suitable for `builtins.path`
# Only directories recursively containing at least one files are recursed into # Only directories recursively containing at least one files are recursed into
# Type: fileset -> (String -> String -> Bool) # Type: fileset -> (String -> String -> Bool)
_toSourceFilter = fileset: _toSourceFilter =
fileset:
let let
# Simplify the tree, necessary to make sure all empty directories are null # Simplify the tree, necessary to make sure all empty directories are null
# which has the effect that they aren't included in the result # which has the effect that they aren't included in the result
@ -403,7 +415,7 @@ rec {
# The base path as a string with a single trailing slash # The base path as a string with a single trailing slash
baseString = baseString =
if fileset._internalBaseComponents == [] then if fileset._internalBaseComponents == [ ] then
# Need to handle the filesystem root specially # Need to handle the filesystem root specially
"/" "/"
else else
@ -414,9 +426,11 @@ rec {
# Check whether a list of path components under the base path exists in the tree. # Check whether a list of path components under the base path exists in the tree.
# This function is called often, so it should be fast. # This function is called often, so it should be fast.
# Type: [ String ] -> Bool # Type: [ String ] -> Bool
inTree = components: inTree =
components:
let let
recurse = index: localTree: recurse =
index: localTree:
if isAttrs localTree then if isAttrs localTree then
# We have an attribute set, meaning this is a directory with at least one file # We have an attribute set, meaning this is a directory with at least one file
if index >= length components then if index >= length components then
@ -431,7 +445,8 @@ rec {
# If it's not an attribute set it can only be either null (in which case it's not included) # If it's not an attribute set it can only be either null (in which case it's not included)
# or a string ("directory" or "regular", etc.) in which case it's included # or a string ("directory" or "regular", etc.) in which case it's included
localTree != null; localTree != null;
in recurse 0 tree; in
recurse 0 tree;
# Filter suited when there's no files # Filter suited when there's no files
empty = _: _: false; empty = _: _: false;
@ -483,16 +498,14 @@ rec {
# Special case because the code below assumes that the _internalBase is always included in the result # Special case because the code below assumes that the _internalBase is always included in the result
# which shouldn't be done when we have no files at all in the base # which shouldn't be done when we have no files at all in the base
# This also forces the tree before returning the filter, leads to earlier error messages # This also forces the tree before returning the filter, leads to earlier error messages
if fileset._internalIsEmptyWithoutBase || tree == null then if fileset._internalIsEmptyWithoutBase || tree == null then empty else nonEmpty;
empty
else
nonEmpty;
# Turn a builtins.filterSource-based source filter on a root path into a file set # Turn a builtins.filterSource-based source filter on a root path into a file set
# containing only files included by the filter. # containing only files included by the filter.
# The filter is lazily called as necessary to determine whether paths are included # The filter is lazily called as necessary to determine whether paths are included
# Type: Path -> (String -> String -> Bool) -> fileset # Type: Path -> (String -> String -> Bool) -> fileset
_fromSourceFilter = root: sourceFilter: _fromSourceFilter =
root: sourceFilter:
let let
# During the recursion we need to track both: # During the recursion we need to track both:
# - The path value such that we can safely call `readDir` on it # - The path value such that we can safely call `readDir` on it
@ -503,9 +516,10 @@ rec {
# which is a fairly expensive operation # which is a fairly expensive operation
# Create a file set from a directory entry # Create a file set from a directory entry
fromDirEntry = path: pathString: type: fromDirEntry =
path: pathString: type:
# The filter needs to run on the path as a string # The filter needs to run on the path as a string
if ! sourceFilter pathString type then if !sourceFilter pathString type then
null null
else if type == "directory" then else if type == "directory" then
fromDir path pathString fromDir path pathString
@ -513,7 +527,8 @@ rec {
type; type;
# Create a file set from a directory # Create a file set from a directory
fromDir = path: pathString: fromDir =
path: pathString:
mapAttrs mapAttrs
# This looks a bit funny, but we need both the path-based and the path string-based values # This looks a bit funny, but we need both the path-based and the path string-based values
(name: fromDirEntry (path + "/${name}") (pathString + "/${name}")) (name: fromDirEntry (path + "/${name}") (pathString + "/${name}"))
@ -536,20 +551,19 @@ rec {
else else
# Direct files are always included by builtins.path without calling the filter # Direct files are always included by builtins.path without calling the filter
# But we need to lift up the base path to its parent to satisfy the base path invariant # But we need to lift up the base path to its parent to satisfy the base path invariant
_create (dirOf root) _create (dirOf root) {
{
${baseNameOf root} = rootPathType; ${baseNameOf root} = rootPathType;
}; };
# Turns a file set into the list of file paths it includes. # Turns a file set into the list of file paths it includes.
# Type: fileset -> [ Path ] # Type: fileset -> [ Path ]
_toList = fileset: _toList =
fileset:
let let
recurse = path: tree: recurse =
path: tree:
if isAttrs tree then if isAttrs tree then
concatLists (mapAttrsToList (name: value: concatLists (mapAttrsToList (name: value: recurse (path + "/${name}") value) tree)
recurse (path + "/${name}") value
) tree)
else if tree == "directory" then else if tree == "directory" then
recurse path (readDir path) recurse path (readDir path)
else if tree == null then else if tree == null then
@ -565,9 +579,11 @@ rec {
# Transforms the filesetTree of a file set to a shorter base path, e.g. # Transforms the filesetTree of a file set to a shorter base path, e.g.
# _shortenTreeBase [ "foo" ] (_create /foo/bar null) # _shortenTreeBase [ "foo" ] (_create /foo/bar null)
# => { bar = null; } # => { bar = null; }
_shortenTreeBase = targetBaseComponents: fileset: _shortenTreeBase =
targetBaseComponents: fileset:
let let
recurse = index: recurse =
index:
# If we haven't reached the required depth yet # If we haven't reached the required depth yet
if index < length fileset._internalBaseComponents then if index < length fileset._internalBaseComponents then
# Create an attribute set and recurse as the value, this can be lazily evaluated this way # Create an attribute set and recurse as the value, this can be lazily evaluated this way
@ -581,9 +597,11 @@ rec {
# Transforms the filesetTree of a file set to a longer base path, e.g. # Transforms the filesetTree of a file set to a longer base path, e.g.
# _lengthenTreeBase [ "foo" "bar" ] (_create /foo { bar.baz = "regular"; }) # _lengthenTreeBase [ "foo" "bar" ] (_create /foo { bar.baz = "regular"; })
# => { baz = "regular"; } # => { baz = "regular"; }
_lengthenTreeBase = targetBaseComponents: fileset: _lengthenTreeBase =
targetBaseComponents: fileset:
let let
recurse = index: tree: recurse =
index: tree:
# If the filesetTree is an attribute set and we haven't reached the required depth yet # If the filesetTree is an attribute set and we haven't reached the required depth yet
if isAttrs tree && index < length targetBaseComponents then if isAttrs tree && index < length targetBaseComponents then
# Recurse with the tree under the right component (which might not exist) # Recurse with the tree under the right component (which might not exist)
@ -602,10 +620,11 @@ rec {
# Computes the union of a list of filesets. # Computes the union of a list of filesets.
# The filesets must already be coerced and validated to be in the same filesystem root # The filesets must already be coerced and validated to be in the same filesystem root
# Type: [ Fileset ] -> Fileset # Type: [ Fileset ] -> Fileset
_unionMany = filesets: _unionMany =
filesets:
let let
# All filesets that have a base, aka not the ones that are the empty value without a base # All filesets that have a base, aka not the ones that are the empty value without a base
filesetsWithBase = filter (fileset: ! fileset._internalIsEmptyWithoutBase) filesets; filesetsWithBase = filter (fileset: !fileset._internalIsEmptyWithoutBase) filesets;
# The first fileset that has a base. # The first fileset that has a base.
# This value is only accessed if there are at all. # This value is only accessed if there are at all.
@ -618,8 +637,8 @@ rec {
# A list of path components common to all base paths. # A list of path components common to all base paths.
# Note that commonPrefix can only be fully evaluated, # Note that commonPrefix can only be fully evaluated,
# so this cannot cause a stack overflow due to a build-up of unevaluated thunks. # so this cannot cause a stack overflow due to a build-up of unevaluated thunks.
commonBaseComponents = foldl' commonBaseComponents =
(components: el: commonPrefix components el._internalBaseComponents) foldl' (components: el: commonPrefix components el._internalBaseComponents)
firstWithBase._internalBaseComponents firstWithBase._internalBaseComponents
# We could also not do the `tail` here to avoid a list allocation, # We could also not do the `tail` here to avoid a list allocation,
# but then we'd have to pay for a potentially expensive # but then we'd have to pay for a potentially expensive
@ -643,15 +662,13 @@ rec {
resultTree = _unionTrees trees; resultTree = _unionTrees trees;
in in
# If there's no values with a base, we have no files # If there's no values with a base, we have no files
if filesetsWithBase == [ ] then if filesetsWithBase == [ ] then _emptyWithoutBase else _create commonBase resultTree;
_emptyWithoutBase
else
_create commonBase resultTree;
# The union of multiple filesetTree's with the same base path. # The union of multiple filesetTree's with the same base path.
# Later elements are only evaluated if necessary. # Later elements are only evaluated if necessary.
# Type: [ filesetTree ] -> filesetTree # Type: [ filesetTree ] -> filesetTree
_unionTrees = trees: _unionTrees =
trees:
let let
stringIndex = findFirstIndex isString null trees; stringIndex = findFirstIndex isString null trees;
withoutNull = filter (tree: tree != null) trees; withoutNull = filter (tree: tree != null) trees;
@ -671,18 +688,15 @@ rec {
# Computes the intersection of a list of filesets. # Computes the intersection of a list of filesets.
# The filesets must already be coerced and validated to be in the same filesystem root # The filesets must already be coerced and validated to be in the same filesystem root
# Type: Fileset -> Fileset -> Fileset # Type: Fileset -> Fileset -> Fileset
_intersection = fileset1: fileset2: _intersection =
fileset1: fileset2:
let let
# The common base components prefix, e.g. # The common base components prefix, e.g.
# (/foo/bar, /foo/bar/baz) -> /foo/bar # (/foo/bar, /foo/bar/baz) -> /foo/bar
# (/foo/bar, /foo/baz) -> /foo # (/foo/bar, /foo/baz) -> /foo
commonBaseComponentsLength = commonBaseComponentsLength =
# TODO: Have a `lib.lists.commonPrefixLength` function such that we don't need the list allocation from commonPrefix here # TODO: Have a `lib.lists.commonPrefixLength` function such that we don't need the list allocation from commonPrefix here
length ( length (commonPrefix fileset1._internalBaseComponents fileset2._internalBaseComponents);
commonPrefix
fileset1._internalBaseComponents
fileset2._internalBaseComponents
);
# To be able to intersect filesetTree's together, they need to have the same base path. # To be able to intersect filesetTree's together, they need to have the same base path.
# Base paths can be intersected by taking the longest one (if any) # Base paths can be intersected by taking the longest one (if any)
@ -725,12 +739,11 @@ rec {
# The intersection of two filesetTree's with the same base path # The intersection of two filesetTree's with the same base path
# The second element is only evaluated as much as necessary. # The second element is only evaluated as much as necessary.
# Type: filesetTree -> filesetTree -> filesetTree # Type: filesetTree -> filesetTree -> filesetTree
_intersectTree = lhs: rhs: _intersectTree =
lhs: rhs:
if isAttrs lhs && isAttrs rhs then if isAttrs lhs && isAttrs rhs then
# Both sides are attribute sets, we can recurse for the attributes existing on both sides # Both sides are attribute sets, we can recurse for the attributes existing on both sides
mapAttrs mapAttrs (name: _intersectTree lhs.${name}) (builtins.intersectAttrs lhs rhs)
(name: _intersectTree lhs.${name})
(builtins.intersectAttrs lhs rhs)
else if lhs == null || isString rhs then else if lhs == null || isString rhs then
# If the lhs is null, the result should also be null # If the lhs is null, the result should also be null
# And if the rhs is the identity element # And if the rhs is the identity element
@ -743,18 +756,15 @@ rec {
# Compute the set difference between two file sets. # Compute the set difference between two file sets.
# The filesets must already be coerced and validated to be in the same filesystem root. # The filesets must already be coerced and validated to be in the same filesystem root.
# Type: Fileset -> Fileset -> Fileset # Type: Fileset -> Fileset -> Fileset
_difference = positive: negative: _difference =
positive: negative:
let let
# The common base components prefix, e.g. # The common base components prefix, e.g.
# (/foo/bar, /foo/bar/baz) -> /foo/bar # (/foo/bar, /foo/bar/baz) -> /foo/bar
# (/foo/bar, /foo/baz) -> /foo # (/foo/bar, /foo/baz) -> /foo
commonBaseComponentsLength = commonBaseComponentsLength =
# TODO: Have a `lib.lists.commonPrefixLength` function such that we don't need the list allocation from commonPrefix here # TODO: Have a `lib.lists.commonPrefixLength` function such that we don't need the list allocation from commonPrefix here
length ( length (commonPrefix positive._internalBaseComponents negative._internalBaseComponents);
commonPrefix
positive._internalBaseComponents
negative._internalBaseComponents
);
# We need filesetTree's with the same base to be able to compute the difference between them # We need filesetTree's with the same base to be able to compute the difference between them
# This here is the filesetTree from the negative file set, but for a base path that matches the positive file set. # This here is the filesetTree from the negative file set, but for a base path that matches the positive file set.
@ -786,9 +796,7 @@ rec {
null; null;
resultingTree = resultingTree =
_differenceTree _differenceTree positive._internalBase positive._internalTree
positive._internalBase
positive._internalTree
negativeTreeWithPositiveBase; negativeTreeWithPositiveBase;
in in
# If the first file set is empty, we can never have any files in the result # If the first file set is empty, we can never have any files in the result
@ -805,7 +813,8 @@ rec {
# Computes the set difference of two filesetTree's # Computes the set difference of two filesetTree's
# Type: Path -> filesetTree -> filesetTree # Type: Path -> filesetTree -> filesetTree
_differenceTree = path: lhs: rhs: _differenceTree =
path: lhs: rhs:
# If the lhs doesn't have any files, or the right hand side includes all files # If the lhs doesn't have any files, or the right hand side includes all files
if lhs == null || isString rhs then if lhs == null || isString rhs then
# The result will always be empty # The result will always be empty
@ -816,17 +825,19 @@ rec {
lhs lhs
else else
# Otherwise we always have two attribute sets to recurse into # Otherwise we always have two attribute sets to recurse into
mapAttrs (name: lhsValue: mapAttrs (name: lhsValue: _differenceTree (path + "/${name}") lhsValue (rhs.${name} or null)) (
_differenceTree (path + "/${name}") lhsValue (rhs.${name} or null) _directoryEntries path lhs
) (_directoryEntries path lhs); );
# Filters all files in a path based on a predicate # Filters all files in a path based on a predicate
# Type: ({ name, type, ... } -> Bool) -> Path -> FileSet # Type: ({ name, type, ... } -> Bool) -> Path -> FileSet
_fileFilter = predicate: root: _fileFilter =
predicate: root:
let let
# Check the predicate for a single file # Check the predicate for a single file
# Type: String -> String -> filesetTree # Type: String -> String -> filesetTree
fromFile = name: type: fromFile =
name: type:
if if
predicate { predicate {
inherit name type; inherit name type;
@ -834,7 +845,8 @@ rec {
# To ensure forwards compatibility with more arguments being added in the future, # To ensure forwards compatibility with more arguments being added in the future,
# adding an attribute which can't be deconstructed :) # adding an attribute which can't be deconstructed :)
"lib.fileset.fileFilter: The predicate function passed as the first argument must be able to handle extra attributes for future compatibility. If you're using `{ name, file, hasExt }:`, use `{ name, file, hasExt, ... }:` instead." = null; "lib.fileset.fileFilter: The predicate function passed as the first argument must be able to handle extra attributes for future compatibility. If you're using `{ name, file, hasExt }:`, use `{ name, file, hasExt, ... }:` instead." =
null;
} }
then then
type type
@ -843,12 +855,10 @@ rec {
# Check the predicate for all files in a directory # Check the predicate for all files in a directory
# Type: Path -> filesetTree # Type: Path -> filesetTree
fromDir = path: fromDir =
mapAttrs (name: type: path:
if type == "directory" then mapAttrs (
fromDir (path + "/${name}") name: type: if type == "directory" then fromDir (path + "/${name}") else fromFile name type
else
fromFile name type
) (readDir path); ) (readDir path);
rootType = pathType root; rootType = pathType root;
@ -858,8 +868,7 @@ rec {
else else
# Single files are turned into a directory containing that file or nothing. # Single files are turned into a directory containing that file or nothing.
_create (dirOf root) { _create (dirOf root) {
${baseNameOf root} = ${baseNameOf root} = fromFile (baseNameOf root) rootType;
fromFile (baseNameOf root) rootType;
}; };
# Support for `builtins.fetchGit` with `submodules = true` was introduced in 2.4 # Support for `builtins.fetchGit` with `submodules = true` was introduced in 2.4
@ -876,22 +885,21 @@ rec {
# - The store path must not include files that don't exist in the respective local path. # - The store path must not include files that don't exist in the respective local path.
# #
# Type: Path -> String -> FileSet # Type: Path -> String -> FileSet
_mirrorStorePath = localPath: storePath: _mirrorStorePath =
localPath: storePath:
let let
recurse = focusedStorePath: recurse =
mapAttrs (name: type: focusedStorePath:
if type == "directory" then mapAttrs (
recurse (focusedStorePath + "/${name}") name: type: if type == "directory" then recurse (focusedStorePath + "/${name}") else type
else
type
) (builtins.readDir focusedStorePath); ) (builtins.readDir focusedStorePath);
in in
_create localPath _create localPath (recurse storePath);
(recurse storePath);
# Create a file set from the files included in the result of a fetchGit call # Create a file set from the files included in the result of a fetchGit call
# Type: String -> String -> Path -> Attrs -> FileSet # Type: String -> String -> Path -> Attrs -> FileSet
_fromFetchGit = function: argument: path: extraFetchGitAttrs: _fromFetchGit =
function: argument: path: extraFetchGitAttrs:
let let
# The code path for when isStorePath is true # The code path for when isStorePath is true
tryStorePath = tryStorePath =
@ -922,7 +930,8 @@ rec {
# With the [lazy trees PR](https://github.com/NixOS/nix/pull/6530), # With the [lazy trees PR](https://github.com/NixOS/nix/pull/6530),
# the unnecessarily import could be avoided. # the unnecessarily import could be avoided.
# However a simpler alternative still would be [a builtins.gitLsFiles](https://github.com/NixOS/nix/issues/2944). # However a simpler alternative still would be [a builtins.gitLsFiles](https://github.com/NixOS/nix/issues/2944).
fetchResult = fetchGit ({ fetchResult = fetchGit (
{
url = path; url = path;
} }
# In older Nix versions, repositories were always assumed to be deep clones, which made `fetchGit` fail for shallow clones # In older Nix versions, repositories were always assumed to be deep clones, which made `fetchGit` fail for shallow clones
@ -934,19 +943,20 @@ rec {
# Checking for `.git/shallow` doesn't seem worth it, especially since that's more of an implementation detail, # Checking for `.git/shallow` doesn't seem worth it, especially since that's more of an implementation detail,
# and would also require more code to handle worktrees where `.git` is a file. # and would also require more code to handle worktrees where `.git` is a file.
// optionalAttrs (versionAtLeast nixVersion _fetchGitShallowMinver) { shallow = true; } // optionalAttrs (versionAtLeast nixVersion _fetchGitShallowMinver) { shallow = true; }
// extraFetchGitAttrs); // extraFetchGitAttrs
);
in in
# We can identify local working directories by checking for .git, # We can identify local working directories by checking for .git,
# see https://git-scm.com/docs/gitrepository-layout#_description. # see https://git-scm.com/docs/gitrepository-layout#_description.
# Note that `builtins.fetchGit` _does_ work for bare repositories (where there's no `.git`), # Note that `builtins.fetchGit` _does_ work for bare repositories (where there's no `.git`),
# even though `git ls-files` wouldn't return any files in that case. # even though `git ls-files` wouldn't return any files in that case.
if ! pathExists (path + "/.git") then if !pathExists (path + "/.git") then
throw "lib.fileset.${function}: Expected the ${argument} (${toString path}) to point to a local working tree of a Git repository, but it's not." throw "lib.fileset.${function}: Expected the ${argument} (${toString path}) to point to a local working tree of a Git repository, but it's not."
else else
_mirrorStorePath path fetchResult.outPath; _mirrorStorePath path fetchResult.outPath;
in in
if ! isPath path then if !isPath path then
throw "lib.fileset.${function}: Expected the ${argument} to be a path, but it's a ${typeOf path} instead." throw "lib.fileset.${function}: Expected the ${argument} to be a path, but it's a ${typeOf path} instead."
else if pathType path != "directory" then else if pathType path != "directory" then
throw "lib.fileset.${function}: Expected the ${argument} (${toString path}) to be a directory, but it's a file instead." throw "lib.fileset.${function}: Expected the ${argument} (${toString path}) to be a directory, but it's a file instead."

View file

@ -8,18 +8,21 @@
# } # }
self: super: { self: super: {
path = super.path // { path = super.path // {
splitRoot = path: splitRoot =
path:
let let
parts = super.path.splitRoot path; parts = super.path.splitRoot path;
components = self.path.subpath.components parts.subpath; components = self.path.subpath.components parts.subpath;
count = self.length components; count = self.length components;
rootIndex = count - self.lists.findFirstIndex rootIndex =
(component: component == "mock-root") count
(self.length components) - self.lists.findFirstIndex (component: component == "mock-root") (self.length components) (
(self.reverseList components); self.reverseList components
);
root = self.path.append parts.root (self.path.subpath.join (self.take rootIndex components)); root = self.path.append parts.root (self.path.subpath.join (self.take rootIndex components));
subpath = self.path.subpath.join (self.drop rootIndex components); subpath = self.path.subpath.join (self.drop rootIndex components);
in { in
{
inherit root subpath; inherit root subpath;
}; };
}; };

View file

@ -13,8 +13,9 @@ finalLib: prevLib: # lib overlay
{ {
trivial = prevLib.trivial // { trivial = prevLib.trivial // {
versionSuffix = versionSuffix = ".${
".${finalLib.substring 0 8 (self.lastModifiedDate or "19700101")}.${self.shortRev or "dirty"}"; finalLib.substring 0 8 (self.lastModifiedDate or "19700101")
}.${self.shortRev or "dirty"}";
revisionWithDefault = default: self.rev or default; revisionWithDefault = default: self.rev or default;
}; };
} }

View file

@ -1,10 +1,12 @@
{ {
description = "Library of low-level helper functions for nix expressions."; description = "Library of low-level helper functions for nix expressions.";
outputs = { self }: outputs =
{ self }:
let let
lib0 = import ./.; lib0 = import ./.;
in { in
{
lib = lib0.extend (import ./flake-version-info.nix self); lib = lib0.extend (import ./flake-version-info.nix self);
}; };
} }

View file

@ -14,7 +14,12 @@
let let
inherit (lib) inherit (lib)
concatMapStringsSep concatStrings escape head replaceStrings; concatMapStringsSep
concatStrings
escape
head
replaceStrings
;
mkPrimitive = t: v: { mkPrimitive = t: v: {
_type = "gvariant"; _type = "gvariant";
@ -49,7 +54,6 @@ rec {
/** /**
Check if a value is a GVariant value Check if a value is a GVariant value
# Inputs # Inputs
`v` `v`
@ -115,7 +119,6 @@ rec {
Returns the GVariant value that most closely matches the given Nix value. Returns the GVariant value that most closely matches the given Nix value.
If no GVariant value can be found unambiguously then error is thrown. If no GVariant value can be found unambiguously then error is thrown.
# Inputs # Inputs
`v` `v`
@ -128,7 +131,8 @@ rec {
mkValue :: Any -> gvariant mkValue :: Any -> gvariant
``` ```
*/ */
mkValue = v: mkValue =
v:
if builtins.isBool v then if builtins.isBool v then
mkBoolean v mkBoolean v
else if builtins.isFloat v then else if builtins.isFloat v then
@ -141,13 +145,17 @@ rec {
v v
else if builtins.isInt v then else if builtins.isInt v then
let let
validConstructors = builtins.filter ({ min, max, ... }: (min == null || min <= v) && (max == null || v <= max)) intConstructors; validConstructors = builtins.filter (
{ min, max, ... }: (min == null || min <= v) && (max == null || v <= max)
) intConstructors;
in in
throw '' throw ''
The GVariant type for number ${builtins.toString v} is unclear. The GVariant type for number ${builtins.toString v} is unclear.
Please wrap the value with one of the following, depending on the value type in GSettings schema: Please wrap the value with one of the following, depending on the value type in GSettings schema:
${lib.concatMapStringsSep "\n" ({ name, type, ...}: "- `lib.gvariant.${name}` for `${type}`") validConstructors} ${lib.concatMapStringsSep "\n" (
{ name, type, ... }: "- `lib.gvariant.${name}` for `${type}`"
) validConstructors}
'' ''
else if builtins.isAttrs v then else if builtins.isAttrs v then
throw "Cannot construct GVariant value from an attribute set. If you want to construct a dictionary, you will need to create an array containing items constructed with `lib.gvariant.mkDictionaryEntry`." throw "Cannot construct GVariant value from an attribute set. If you want to construct a dictionary, you will need to create an array containing items constructed with `lib.gvariant.mkDictionaryEntry`."
@ -157,7 +165,6 @@ rec {
/** /**
Returns the GVariant array from the given type of the elements and a Nix list. Returns the GVariant array from the given type of the elements and a Nix list.
# Inputs # Inputs
`elems` `elems`
@ -181,22 +188,22 @@ rec {
::: :::
*/ */
mkArray = elems: mkArray =
elems:
let let
vs = map mkValue (lib.throwIf (elems == [ ]) "Please create empty array with mkEmptyArray." elems); vs = map mkValue (lib.throwIf (elems == [ ]) "Please create empty array with mkEmptyArray." elems);
elemType = lib.throwIfNot (lib.all (t: (head vs).type == t) (map (v: v.type) vs)) elemType = lib.throwIfNot (lib.all (t: (head vs).type == t) (
"Elements in a list should have same type." map (v: v.type) vs
(head vs).type; )) "Elements in a list should have same type." (head vs).type;
in in
mkPrimitive (type.arrayOf elemType) vs // { mkPrimitive (type.arrayOf elemType) vs
__toString = self: // {
"@${self.type} [${concatMapStringsSep "," toString self.value}]"; __toString = self: "@${self.type} [${concatMapStringsSep "," toString self.value}]";
}; };
/** /**
Returns the GVariant array from the given empty Nix list. Returns the GVariant array from the given empty Nix list.
# Inputs # Inputs
`elemType` `elemType`
@ -220,16 +227,17 @@ rec {
::: :::
*/ */
mkEmptyArray = elemType: mkPrimitive (type.arrayOf elemType) [ ] // { mkEmptyArray =
elemType:
mkPrimitive (type.arrayOf elemType) [ ]
// {
__toString = self: "@${self.type} []"; __toString = self: "@${self.type} []";
}; };
/** /**
Returns the GVariant variant from the given Nix value. Variants are containers Returns the GVariant variant from the given Nix value. Variants are containers
of different GVariant type. of different GVariant type.
# Inputs # Inputs
`elem` `elem`
@ -255,16 +263,19 @@ rec {
::: :::
*/ */
mkVariant = elem: mkVariant =
let gvarElem = mkValue elem; elem:
in mkPrimitive type.variant gvarElem // { let
gvarElem = mkValue elem;
in
mkPrimitive type.variant gvarElem
// {
__toString = self: "<${toString self.value}>"; __toString = self: "<${toString self.value}>";
}; };
/** /**
Returns the GVariant dictionary entry from the given key and value. Returns the GVariant dictionary entry from the given key and value.
# Inputs # Inputs
`name` `name`
@ -297,21 +308,20 @@ rec {
::: :::
*/ */
mkDictionaryEntry = mkDictionaryEntry =
name: name: value:
value:
let let
name' = mkValue name; name' = mkValue name;
value' = mkValue value; value' = mkValue value;
dictionaryType = type.dictionaryEntryOf name'.type value'.type; dictionaryType = type.dictionaryEntryOf name'.type value'.type;
in in
mkPrimitive dictionaryType { inherit name value; } // { mkPrimitive dictionaryType { inherit name value; }
// {
__toString = self: "@${self.type} {${name'},${value'}}"; __toString = self: "@${self.type} {${name'},${value'}}";
}; };
/** /**
Returns the GVariant maybe from the given element type. Returns the GVariant maybe from the given element type.
# Inputs # Inputs
`elemType` `elemType`
@ -328,19 +338,17 @@ rec {
mkMaybe :: gvariant.type -> Any -> gvariant mkMaybe :: gvariant.type -> Any -> gvariant
``` ```
*/ */
mkMaybe = elemType: elem: mkMaybe =
mkPrimitive (type.maybeOf elemType) elem // { elemType: elem:
__toString = self: mkPrimitive (type.maybeOf elemType) elem
if self.value == null then // {
"@${self.type} nothing" __toString =
else self: if self.value == null then "@${self.type} nothing" else "just ${toString self.value}";
"just ${toString self.value}";
}; };
/** /**
Returns the GVariant nothing from the given element type. Returns the GVariant nothing from the given element type.
# Inputs # Inputs
`elemType` `elemType`
@ -358,7 +366,6 @@ rec {
/** /**
Returns the GVariant just from the given Nix value. Returns the GVariant just from the given Nix value.
# Inputs # Inputs
`elem` `elem`
@ -371,12 +378,16 @@ rec {
mkJust :: Any -> gvariant mkJust :: Any -> gvariant
``` ```
*/ */
mkJust = elem: let gvarElem = mkValue elem; in mkMaybe gvarElem.type gvarElem; mkJust =
elem:
let
gvarElem = mkValue elem;
in
mkMaybe gvarElem.type gvarElem;
/** /**
Returns the GVariant tuple from the given Nix list. Returns the GVariant tuple from the given Nix list.
# Inputs # Inputs
`elems` `elems`
@ -389,20 +400,20 @@ rec {
mkTuple :: [Any] -> gvariant mkTuple :: [Any] -> gvariant
``` ```
*/ */
mkTuple = elems: mkTuple =
elems:
let let
gvarElems = map mkValue elems; gvarElems = map mkValue elems;
tupleType = type.tupleOf (map (e: e.type) gvarElems); tupleType = type.tupleOf (map (e: e.type) gvarElems);
in in
mkPrimitive tupleType gvarElems // { mkPrimitive tupleType gvarElems
__toString = self: // {
"@${self.type} (${concatMapStringsSep "," toString self.value})"; __toString = self: "@${self.type} (${concatMapStringsSep "," toString self.value})";
}; };
/** /**
Returns the GVariant boolean from the given Nix bool value. Returns the GVariant boolean from the given Nix bool value.
# Inputs # Inputs
`v` `v`
@ -415,15 +426,16 @@ rec {
mkBoolean :: Bool -> gvariant mkBoolean :: Bool -> gvariant
``` ```
*/ */
mkBoolean = v: mkBoolean =
mkPrimitive type.boolean v // { v:
mkPrimitive type.boolean v
// {
__toString = self: if self.value then "true" else "false"; __toString = self: if self.value then "true" else "false";
}; };
/** /**
Returns the GVariant string from the given Nix string value. Returns the GVariant string from the given Nix string value.
# Inputs # Inputs
`v` `v`
@ -436,16 +448,19 @@ rec {
mkString :: String -> gvariant mkString :: String -> gvariant
``` ```
*/ */
mkString = v: mkString =
let sanitize = s: replaceStrings [ "\n" ] [ "\\n" ] (escape [ "'" "\\" ] s); v:
in mkPrimitive type.string v // { let
sanitize = s: replaceStrings [ "\n" ] [ "\\n" ] (escape [ "'" "\\" ] s);
in
mkPrimitive type.string v
// {
__toString = self: "'${sanitize self.value}'"; __toString = self: "'${sanitize self.value}'";
}; };
/** /**
Returns the GVariant object path from the given Nix string value. Returns the GVariant object path from the given Nix string value.
# Inputs # Inputs
`v` `v`
@ -458,8 +473,10 @@ rec {
mkObjectpath :: String -> gvariant mkObjectpath :: String -> gvariant
``` ```
*/ */
mkObjectpath = v: mkObjectpath =
mkPrimitive type.string v // { v:
mkPrimitive type.string v
// {
__toString = self: "objectpath '${escape [ "'" ] self.value}'"; __toString = self: "objectpath '${escape [ "'" ] self.value}'";
}; };
@ -499,7 +516,6 @@ rec {
/** /**
Returns the GVariant int32 from the given Nix int value. Returns the GVariant int32 from the given Nix int value.
# Inputs # Inputs
`v` `v`
@ -512,8 +528,10 @@ rec {
mkInt32 :: Int -> gvariant mkInt32 :: Int -> gvariant
``` ```
*/ */
mkInt32 = v: mkInt32 =
mkPrimitive type.int32 v // { v:
mkPrimitive type.int32 v
// {
__toString = self: toString self.value; __toString = self: toString self.value;
}; };
@ -553,7 +571,6 @@ rec {
/** /**
Returns the GVariant double from the given Nix float value. Returns the GVariant double from the given Nix float value.
# Inputs # Inputs
`v` `v`
@ -566,8 +583,10 @@ rec {
mkDouble :: Float -> gvariant mkDouble :: Float -> gvariant
``` ```
*/ */
mkDouble = v: mkDouble =
mkPrimitive type.double v // { v:
mkPrimitive type.double v
// {
__toString = self: toString self.value; __toString = self: toString self.value;
}; };
} }

View file

@ -5,17 +5,29 @@ let
in in
{ {
# Keeping these around in case we decide to change this horrible implementation :) # Keeping these around in case we decide to change this horrible implementation :)
option = x: option = x: x // { optional = true; };
x // { optional = true; };
yes = { tristate = "y"; optional = false; };
no = { tristate = "n"; optional = false; };
module = { tristate = "m"; optional = false; };
unset = { tristate = null; optional = false; };
freeform = x: { freeform = x; optional = false; };
yes = {
tristate = "y";
optional = false;
};
no = {
tristate = "n";
optional = false;
};
module = {
tristate = "m";
optional = false;
};
unset = {
tristate = null;
optional = false;
};
freeform = x: {
freeform = x;
optional = false;
};
# Common patterns/legacy used in common-config/hardened/config.nix # Common patterns/legacy used in common-config/hardened/config.nix
whenHelpers = version: { whenHelpers = version: {

View file

@ -420,18 +420,15 @@ rec {
Placeholders will not be quoted as they are not actual values: Placeholders will not be quoted as they are not actual values:
(showOption ["foo" "*" "bar"]) == "foo.*.bar" (showOption ["foo" "*" "bar"]) == "foo.*.bar"
(showOption ["foo" "<name>" "bar"]) == "foo.<name>.bar" (showOption ["foo" "<name>" "bar"]) == "foo.<name>.bar"
(showOption ["foo" "<myPlaceholder>" "bar"]) == "foo.<myPlaceholder>.bar"
*/ */
showOption = parts: let showOption = parts: let
# If the part is a named placeholder of the form "<...>" don't escape it.
# It may cause misleading escaping if somebody uses literally "<...>" in their option names.
# This is the trade-off to allow for placeholders in option names.
isNamedPlaceholder = builtins.match "\<(.*)\>";
escapeOptionPart = part: escapeOptionPart = part:
let if part == "*" || isNamedPlaceholder part != null
# We assume that these are "special values" and not real configuration data.
# If it is real configuration data, it is rendered incorrectly.
specialIdentifiers = [
"<name>" # attrsOf (submodule {})
"*" # listOf (submodule {})
"<function body>" # functionTo
];
in if builtins.elem part specialIdentifiers
then part then part
else lib.strings.escapeNixIdentifier part; else lib.strings.escapeNixIdentifier part;
in (concatStringsSep ".") (map escapeOptionPart parts); in (concatStringsSep ".") (map escapeOptionPart parts);

View file

@ -1,4 +1,4 @@
/* Functions for working with path values. */ # Functions for working with path values.
# See ./README.md for internal docs # See ./README.md for internal docs
{ lib }: { lib }:
let let
@ -41,8 +41,9 @@ let
; ;
# Return the reason why a subpath is invalid, or `null` if it's valid # Return the reason why a subpath is invalid, or `null` if it's valid
subpathInvalidReason = value: subpathInvalidReason =
if ! isString value then value:
if !isString value then
"The given value is of type ${builtins.typeOf value}, but a string was expected" "The given value is of type ${builtins.typeOf value}, but a string was expected"
else if value == "" then else if value == "" then
"The given string is empty" "The given string is empty"
@ -51,11 +52,13 @@ let
# We don't support ".." components, see ./path.md#parent-directory # We don't support ".." components, see ./path.md#parent-directory
else if match "(.*/)?\\.\\.(/.*)?" value != null then else if match "(.*/)?\\.\\.(/.*)?" value != null then
"The given string \"${value}\" contains a `..` component, which is not allowed in subpaths" "The given string \"${value}\" contains a `..` component, which is not allowed in subpaths"
else null; else
null;
# Split and normalise a relative path string into its components. # Split and normalise a relative path string into its components.
# Error for ".." components and doesn't include "." components # Error for ".." components and doesn't include "." components
splitRelPath = path: splitRelPath =
path:
let let
# Split the string into its parts using regex for efficiency. This regex # Split the string into its parts using regex for efficiency. This regex
# matches patterns like "/", "/./", "/././", with arbitrarily many "/"s # matches patterns like "/", "/./", "/././", with arbitrarily many "/"s
@ -89,23 +92,28 @@ let
# Special case of a single "." path component. Such a case leaves a # Special case of a single "." path component. Such a case leaves a
# componentCount of -1 due to the skipStart/skipEnd not verifying that # componentCount of -1 due to the skipStart/skipEnd not verifying that
# they don't refer to the same character # they don't refer to the same character
if path == "." then [] if path == "." then
[ ]
# Generate the result list directly. This is more efficient than a # Generate the result list directly. This is more efficient than a
# combination of `filter`, `init` and `tail`, because here we don't # combination of `filter`, `init` and `tail`, because here we don't
# allocate any intermediate lists # allocate any intermediate lists
else genList (index: else
genList (
index:
# To get to the element we need to add the number of parts we skip and # To get to the element we need to add the number of parts we skip and
# multiply by two due to the interleaved layout of `parts` # multiply by two due to the interleaved layout of `parts`
elemAt parts ((skipStart + index) * 2) elemAt parts ((skipStart + index) * 2)
) componentCount; ) componentCount;
# Join relative path components together # Join relative path components together
joinRelPath = components: joinRelPath =
components:
# Always return relative paths with `./` as a prefix (./path.md#leading-dots-for-relative-paths) # Always return relative paths with `./` as a prefix (./path.md#leading-dots-for-relative-paths)
"./" + "./"
+
# An empty string is not a valid relative path, so we need to return a `.` when we have no components # An empty string is not a valid relative path, so we need to return a `.` when we have no components
(if components == [] then "." else concatStringsSep "/" components); (if components == [ ] then "." else concatStringsSep "/" components);
# Type: Path -> { root :: Path, components :: [ String ] } # Type: Path -> { root :: Path, components :: [ String ] }
# #
@ -117,11 +125,18 @@ let
# because it can distinguish different filesystem roots # because it can distinguish different filesystem roots
deconstructPath = deconstructPath =
let let
recurse = components: base: recurse =
components: base:
# If the parent of a path is the path itself, then it's a filesystem root # If the parent of a path is the path itself, then it's a filesystem root
if base == dirOf base then { root = base; inherit components; } if base == dirOf base then
else recurse ([ (baseNameOf base) ] ++ components) (dirOf base); {
in recurse []; root = base;
inherit components;
}
else
recurse ([ (baseNameOf base) ] ++ components) (dirOf base);
in
recurse [ ];
# The components of the store directory, typically [ "nix" "store" ] # The components of the store directory, typically [ "nix" "store" ]
storeDirComponents = splitRelPath ("./" + storeDir); storeDirComponents = splitRelPath ("./" + storeDir);
@ -132,7 +147,8 @@ let
# #
# Whether path components have a store path as a prefix, according to # Whether path components have a store path as a prefix, according to
# https://nixos.org/manual/nix/stable/store/store-path.html#store-path. # https://nixos.org/manual/nix/stable/store/store-path.html#store-path.
componentsHaveStorePathPrefix = components: componentsHaveStorePathPrefix =
components:
# path starts with the store directory (typically /nix/store) # path starts with the store directory (typically /nix/store)
listHasPrefix storeDirComponents components listHasPrefix storeDirComponents components
# is not the store directory itself, meaning there's at least one extra component # is not the store directory itself, meaning there's at least one extra component
@ -145,7 +161,9 @@ let
# We care more about discerning store path-ness on realistic values. Making it airtight would be fragile and slow. # We care more about discerning store path-ness on realistic values. Making it airtight would be fragile and slow.
&& match ".{32}-.+" (elemAt components storeDirLength) != null; && match ".{32}-.+" (elemAt components storeDirLength) != null;
in /* No rec! Add dependencies on this file at the top. */ { in
# No rec! Add dependencies on this file at the top.
{
/* /*
Append a subpath string to a path. Append a subpath string to a path.
@ -194,8 +212,8 @@ in /* No rec! Add dependencies on this file at the top. */ {
path: path:
# The subpath string to append # The subpath string to append
subpath: subpath:
assert assertMsg (isPath path) '' assert assertMsg (isPath path)
lib.path.append: The first argument is of type ${builtins.typeOf path}, but a path was expected''; ''lib.path.append: The first argument is of type ${builtins.typeOf path}, but a path was expected'';
assert assertMsg (isValid subpath) '' assert assertMsg (isValid subpath) ''
lib.path.append: Second argument is not a valid subpath string: lib.path.append: Second argument is not a valid subpath string:
${subpathInvalidReason subpath}''; ${subpathInvalidReason subpath}'';
@ -225,25 +243,23 @@ in /* No rec! Add dependencies on this file at the top. */ {
*/ */
hasPrefix = hasPrefix =
path1: path1:
assert assertMsg assert assertMsg (isPath path1)
(isPath path1)
"lib.path.hasPrefix: First argument is of type ${typeOf path1}, but a path was expected"; "lib.path.hasPrefix: First argument is of type ${typeOf path1}, but a path was expected";
let let
path1Deconstructed = deconstructPath path1; path1Deconstructed = deconstructPath path1;
in in
path2: path2:
assert assertMsg assert assertMsg (isPath path2)
(isPath path2)
"lib.path.hasPrefix: Second argument is of type ${typeOf path2}, but a path was expected"; "lib.path.hasPrefix: Second argument is of type ${typeOf path2}, but a path was expected";
let let
path2Deconstructed = deconstructPath path2; path2Deconstructed = deconstructPath path2;
in in
assert assertMsg assert assertMsg (path1Deconstructed.root == path2Deconstructed.root) ''
(path1Deconstructed.root == path2Deconstructed.root) ''
lib.path.hasPrefix: Filesystem roots must be the same for both paths, but paths with different roots were given: lib.path.hasPrefix: Filesystem roots must be the same for both paths, but paths with different roots were given:
first argument: "${toString path1}" with root "${toString path1Deconstructed.root}" first argument: "${toString path1}" with root "${toString path1Deconstructed.root}"
second argument: "${toString path2}" with root "${toString path2Deconstructed.root}"''; second argument: "${toString path2}" with root "${toString path2Deconstructed.root}"'';
take (length path1Deconstructed.components) path2Deconstructed.components == path1Deconstructed.components; take (length path1Deconstructed.components) path2Deconstructed.components
== path1Deconstructed.components;
/* /*
Remove the first path as a component-wise prefix from the second path. Remove the first path as a component-wise prefix from the second path.
@ -270,16 +286,14 @@ in /* No rec! Add dependencies on this file at the top. */ {
*/ */
removePrefix = removePrefix =
path1: path1:
assert assertMsg assert assertMsg (isPath path1)
(isPath path1)
"lib.path.removePrefix: First argument is of type ${typeOf path1}, but a path was expected."; "lib.path.removePrefix: First argument is of type ${typeOf path1}, but a path was expected.";
let let
path1Deconstructed = deconstructPath path1; path1Deconstructed = deconstructPath path1;
path1Length = length path1Deconstructed.components; path1Length = length path1Deconstructed.components;
in in
path2: path2:
assert assertMsg assert assertMsg (isPath path2)
(isPath path2)
"lib.path.removePrefix: Second argument is of type ${typeOf path2}, but a path was expected."; "lib.path.removePrefix: Second argument is of type ${typeOf path2}, but a path was expected.";
let let
path2Deconstructed = deconstructPath path2; path2Deconstructed = deconstructPath path2;
@ -288,11 +302,9 @@ in /* No rec! Add dependencies on this file at the top. */ {
if success then if success then
drop path1Length path2Deconstructed.components drop path1Length path2Deconstructed.components
else else
throw '' throw ''lib.path.removePrefix: The first path argument "${toString path1}" is not a component-wise prefix of the second path argument "${toString path2}".'';
lib.path.removePrefix: The first path argument "${toString path1}" is not a component-wise prefix of the second path argument "${toString path2}".'';
in in
assert assertMsg assert assertMsg (path1Deconstructed.root == path2Deconstructed.root) ''
(path1Deconstructed.root == path2Deconstructed.root) ''
lib.path.removePrefix: Filesystem roots must be the same for both paths, but paths with different roots were given: lib.path.removePrefix: Filesystem roots must be the same for both paths, but paths with different roots were given:
first argument: "${toString path1}" with root "${toString path1Deconstructed.root}" first argument: "${toString path1}" with root "${toString path1Deconstructed.root}"
second argument: "${toString path2}" with root "${toString path2Deconstructed.root}"''; second argument: "${toString path2}" with root "${toString path2Deconstructed.root}"'';
@ -336,12 +348,12 @@ in /* No rec! Add dependencies on this file at the top. */ {
splitRoot = splitRoot =
# The path to split the root off of # The path to split the root off of
path: path:
assert assertMsg assert assertMsg (isPath path)
(isPath path)
"lib.path.splitRoot: Argument is of type ${typeOf path}, but a path was expected"; "lib.path.splitRoot: Argument is of type ${typeOf path}, but a path was expected";
let let
deconstructed = deconstructPath path; deconstructed = deconstructPath path;
in { in
{
root = deconstructed.root; root = deconstructed.root;
subpath = joinRelPath deconstructed.components; subpath = joinRelPath deconstructed.components;
}; };
@ -387,12 +399,12 @@ in /* No rec! Add dependencies on this file at the top. */ {
hasStorePathPrefix /nix/store/nvl9ic0pj1fpyln3zaqrf4cclbqdfn1j-foo.drv hasStorePathPrefix /nix/store/nvl9ic0pj1fpyln3zaqrf4cclbqdfn1j-foo.drv
=> true => true
*/ */
hasStorePathPrefix = path: hasStorePathPrefix =
path:
let let
deconstructed = deconstructPath path; deconstructed = deconstructPath path;
in in
assert assertMsg assert assertMsg (isPath path)
(isPath path)
"lib.path.hasStorePathPrefix: Argument is of type ${typeOf path}, but a path was expected"; "lib.path.hasStorePathPrefix: Argument is of type ${typeOf path}, but a path was expected";
assert assertMsg assert assertMsg
# This function likely breaks or needs adjustment if used with other filesystem roots, if they ever get implemented. # This function likely breaks or needs adjustment if used with other filesystem roots, if they ever get implemented.
@ -446,9 +458,7 @@ in /* No rec! Add dependencies on this file at the top. */ {
*/ */
subpath.isValid = subpath.isValid =
# The value to check # The value to check
value: value: subpathInvalidReason value == null;
subpathInvalidReason value == null;
/* /*
Join subpath strings together using `/`, returning a normalised subpath string. Join subpath strings together using `/`, returning a normalised subpath string.
@ -511,16 +521,18 @@ in /* No rec! Add dependencies on this file at the top. */ {
# The list of subpaths to join together # The list of subpaths to join together
subpaths: subpaths:
# Fast in case all paths are valid # Fast in case all paths are valid
if all isValid subpaths if all isValid subpaths then
then joinRelPath (concatMap splitRelPath subpaths) joinRelPath (concatMap splitRelPath subpaths)
else else
# Otherwise we take our time to gather more info for a better error message # Otherwise we take our time to gather more info for a better error message
# Strictly go through each path, throwing on the first invalid one # Strictly go through each path, throwing on the first invalid one
# Tracks the list index in the fold accumulator # Tracks the list index in the fold accumulator
foldl' (i: path: foldl' (
if isValid path i: path:
then i + 1 if isValid path then
else throw '' i + 1
else
throw ''
lib.path.subpath.join: Element at index ${toString i} is not a valid subpath string: lib.path.subpath.join: Element at index ${toString i} is not a valid subpath string:
${subpathInvalidReason path}'' ${subpathInvalidReason path}''
) 0 subpaths; ) 0 subpaths;

View file

@ -2,8 +2,8 @@
nixpkgs ? ../../.., nixpkgs ? ../../..,
system ? builtins.currentSystem, system ? builtins.currentSystem,
pkgs ? import nixpkgs { pkgs ? import nixpkgs {
config = {}; config = { };
overlays = []; overlays = [ ];
inherit system; inherit system;
}, },
nixVersions ? import ../../tests/nix-for-tests.nix { inherit pkgs; }, nixVersions ? import ../../tests/nix-for-tests.nix { inherit pkgs; },
@ -12,14 +12,18 @@
seed ? null, seed ? null,
}: }:
pkgs.runCommand "lib-path-tests" { pkgs.runCommand "lib-path-tests"
nativeBuildInputs = [ {
nativeBuildInputs =
[
nixVersions.stable nixVersions.stable
] ++ (with pkgs; [ ]
++ (with pkgs; [
jq jq
bc bc
]); ]);
} '' }
''
# Needed to make Nix evaluation work # Needed to make Nix evaluation work
export TEST_ROOT=$(pwd)/test-tmp export TEST_ROOT=$(pwd)/test-tmp
export NIX_BUILD_HOOK= export NIX_BUILD_HOOK=
@ -42,4 +46,4 @@ pkgs.runCommand "lib-path-tests" {
bash lib/path/tests/prop.sh ${toString seed} bash lib/path/tests/prop.sh ${toString seed}
touch $out touch $out
'' ''

View file

@ -16,14 +16,15 @@ let
lib = import libpath; lib = import libpath;
# read each file into a string # read each file into a string
strings = map (name: strings = map (name: builtins.readFile (dir + "/${name}")) (
builtins.readFile (dir + "/${name}") builtins.attrNames (builtins.readDir dir)
) (builtins.attrNames (builtins.readDir dir)); );
inherit (lib.path.subpath) normalise isValid; inherit (lib.path.subpath) normalise isValid;
inherit (lib.asserts) assertMsg; inherit (lib.asserts) assertMsg;
normaliseAndCheck = str: normaliseAndCheck =
str:
let let
originalValid = isValid str; originalValid = isValid str;
@ -34,27 +35,26 @@ let
absConcatNormalised = /. + ("/" + tryOnce.value); absConcatNormalised = /. + ("/" + tryOnce.value);
in in
# Check the lib.path.subpath.normalise property to only error on invalid subpaths # Check the lib.path.subpath.normalise property to only error on invalid subpaths
assert assertMsg assert assertMsg (
(originalValid -> tryOnce.success) originalValid -> tryOnce.success
"Even though string \"${str}\" is valid as a subpath, the normalisation for it failed"; ) "Even though string \"${str}\" is valid as a subpath, the normalisation for it failed";
assert assertMsg assert assertMsg (
(! originalValid -> ! tryOnce.success) !originalValid -> !tryOnce.success
"Even though string \"${str}\" is invalid as a subpath, the normalisation for it succeeded"; ) "Even though string \"${str}\" is invalid as a subpath, the normalisation for it succeeded";
# Check normalisation idempotency # Check normalisation idempotency
assert assertMsg assert assertMsg (
(originalValid -> tryTwice.success) originalValid -> tryTwice.success
"For valid subpath \"${str}\", the normalisation \"${tryOnce.value}\" was not a valid subpath"; ) "For valid subpath \"${str}\", the normalisation \"${tryOnce.value}\" was not a valid subpath";
assert assertMsg assert assertMsg (originalValid -> tryOnce.value == tryTwice.value)
(originalValid -> tryOnce.value == tryTwice.value)
"For valid subpath \"${str}\", normalising it once gives \"${tryOnce.value}\" but normalising it twice gives a different result: \"${tryTwice.value}\""; "For valid subpath \"${str}\", normalising it once gives \"${tryOnce.value}\" but normalising it twice gives a different result: \"${tryTwice.value}\"";
# Check that normalisation doesn't change a string when appended to an absolute Nix path value # Check that normalisation doesn't change a string when appended to an absolute Nix path value
assert assertMsg assert assertMsg (originalValid -> absConcatOrig == absConcatNormalised)
(originalValid -> absConcatOrig == absConcatNormalised)
"For valid subpath \"${str}\", appending to an absolute Nix path value gives \"${absConcatOrig}\", but appending the normalised result \"${tryOnce.value}\" gives a different value \"${absConcatNormalised}\""; "For valid subpath \"${str}\", appending to an absolute Nix path value gives \"${absConcatOrig}\", but appending the normalised result \"${tryOnce.value}\" gives a different value \"${absConcatNormalised}\"";
# Return an empty string when failed # Return an empty string when failed
if tryOnce.success then tryOnce.value else ""; if tryOnce.success then tryOnce.value else "";
in lib.genAttrs strings normaliseAndCheck in
lib.genAttrs strings normaliseAndCheck

View file

@ -3,7 +3,14 @@
{ libpath }: { libpath }:
let let
lib = import libpath; lib = import libpath;
inherit (lib.path) hasPrefix removePrefix append splitRoot hasStorePathPrefix subpath; inherit (lib.path)
hasPrefix
removePrefix
append
splitRoot
hasStorePathPrefix
subpath
;
# This is not allowed generally, but we're in the tests here, so we'll allow ourselves. # This is not allowed generally, but we're in the tests here, so we'll allow ourselves.
storeDirPath = /. + builtins.storeDir; storeDirPath = /. + builtins.storeDir;
@ -79,15 +86,24 @@ let
testSplitRootExample1 = { testSplitRootExample1 = {
expr = splitRoot /foo/bar; expr = splitRoot /foo/bar;
expected = { root = /.; subpath = "./foo/bar"; }; expected = {
root = /.;
subpath = "./foo/bar";
};
}; };
testSplitRootExample2 = { testSplitRootExample2 = {
expr = splitRoot /.; expr = splitRoot /.;
expected = { root = /.; subpath = "./."; }; expected = {
root = /.;
subpath = "./.";
};
}; };
testSplitRootExample3 = { testSplitRootExample3 = {
expr = splitRoot /foo/../bar; expr = splitRoot /foo/../bar;
expected = { root = /.; subpath = "./bar"; }; expected = {
root = /.;
subpath = "./bar";
};
}; };
testSplitRootExample4 = { testSplitRootExample4 = {
expr = (builtins.tryEval (splitRoot "/foo/bar")).success; expr = (builtins.tryEval (splitRoot "/foo/bar")).success;
@ -111,7 +127,9 @@ let
expected = false; expected = false;
}; };
testHasStorePathPrefixExample5 = { testHasStorePathPrefixExample5 = {
expr = hasStorePathPrefix (storeDirPath + "/.links/10gg8k3rmbw8p7gszarbk7qyd9jwxhcfq9i6s5i0qikx8alkk4hq"); expr = hasStorePathPrefix (
storeDirPath + "/.links/10gg8k3rmbw8p7gszarbk7qyd9jwxhcfq9i6s5i0qikx8alkk4hq"
);
expected = false; expected = false;
}; };
testHasStorePathPrefixExample6 = { testHasStorePathPrefixExample6 = {
@ -188,11 +206,18 @@ let
# Test examples from the lib.path.subpath.join documentation # Test examples from the lib.path.subpath.join documentation
testSubpathJoinExample1 = { testSubpathJoinExample1 = {
expr = subpath.join [ "foo" "bar/baz" ]; expr = subpath.join [
"foo"
"bar/baz"
];
expected = "./foo/bar/baz"; expected = "./foo/bar/baz";
}; };
testSubpathJoinExample2 = { testSubpathJoinExample2 = {
expr = subpath.join [ "./foo" "." "bar//./baz/" ]; expr = subpath.join [
"./foo"
"."
"bar//./baz/"
];
expected = "./foo/bar/baz"; expected = "./foo/bar/baz";
}; };
testSubpathJoinExample3 = { testSubpathJoinExample3 = {
@ -273,7 +298,11 @@ let
}; };
testSubpathComponentsExample2 = { testSubpathComponentsExample2 = {
expr = subpath.components "./foo//bar/./baz/"; expr = subpath.components "./foo//bar/./baz/";
expected = [ "foo" "bar" "baz" ]; expected = [
"foo"
"bar"
"baz"
];
}; };
testSubpathComponentsExample3 = { testSubpathComponentsExample3 = {
expr = (builtins.tryEval (subpath.components "/foo")).success; expr = (builtins.tryEval (subpath.components "/foo")).success;
@ -281,5 +310,7 @@ let
}; };
}; };
in in
if cases == [] then "Unit tests successful" if cases == [ ] then
else throw "Path unit tests failed: ${lib.generators.toPretty {} cases}" "Unit tests successful"
else
throw "Path unit tests failed: ${lib.generators.toPretty { } cases}"

View file

@ -5,15 +5,16 @@ let
shortName = tname; shortName = tname;
isSource = false; isSource = false;
}; };
in lib.mapAttrs (tname: tset: defaultSourceType tname // tset) { in
lib.mapAttrs (tname: tset: defaultSourceType tname // tset) {
fromSource = { fromSource = {
isSource = true; isSource = true;
}; };
binaryNativeCode = {}; binaryNativeCode = { };
binaryBytecode = {}; binaryBytecode = { };
binaryFirmware = {}; binaryFirmware = { };
} }

View file

@ -1,4 +1,4 @@
/* Functions for copying sources to the Nix store. */ # Functions for copying sources to the Nix store.
{ lib }: { lib }:
# Tested in lib/tests/sources.sh # Tested in lib/tests/sources.sh
@ -23,19 +23,31 @@ let
directories of version control system, backup files (*~) directories of version control system, backup files (*~)
and some generated files. and some generated files.
*/ */
cleanSourceFilter = name: type: let baseName = baseNameOf (toString name); in ! ( cleanSourceFilter =
name: type:
let
baseName = baseNameOf (toString name);
in
!(
# Filter out version control software files/directories # Filter out version control software files/directories
(baseName == ".git" || type == "directory" && (baseName == ".svn" || baseName == "CVS" || baseName == ".hg")) || (
baseName == ".git"
|| type == "directory" && (baseName == ".svn" || baseName == "CVS" || baseName == ".hg")
)
||
# Filter out editor backup / swap files. # Filter out editor backup / swap files.
lib.hasSuffix "~" baseName || lib.hasSuffix "~" baseName
match "^\\.sw[a-z]$" baseName != null || || match "^\\.sw[a-z]$" baseName != null
match "^\\..*\\.sw[a-z]$" baseName != null || || match "^\\..*\\.sw[a-z]$" baseName != null
||
# Filter out generates files. # Filter out generates files.
lib.hasSuffix ".o" baseName || lib.hasSuffix ".o" baseName
lib.hasSuffix ".so" baseName || || lib.hasSuffix ".so" baseName
||
# Filter out nix-build result symlinks # Filter out nix-build result symlinks
(type == "symlink" && lib.hasPrefix "result" baseName) || (type == "symlink" && lib.hasPrefix "result" baseName)
||
# Filter out sockets and other types of files we can't have in the store. # Filter out sockets and other types of files we can't have in the store.
(type == "unknown") (type == "unknown")
); );
@ -46,7 +58,12 @@ let
Example: Example:
cleanSource ./. cleanSource ./.
*/ */
cleanSource = src: cleanSourceWith { filter = cleanSourceFilter; inherit src; }; cleanSource =
src:
cleanSourceWith {
filter = cleanSourceFilter;
inherit src;
};
/* /*
Like `builtins.filterSource`, except it will compose with itself, Like `builtins.filterSource`, except it will compose with itself,
@ -65,7 +82,6 @@ let
builtins.filterSource f (builtins.filterSource g ./.) builtins.filterSource f (builtins.filterSource g ./.)
# Fails! # Fails!
*/ */
cleanSourceWith = cleanSourceWith =
{ {
@ -80,11 +96,12 @@ let
filter ? _path: _type: true, filter ? _path: _type: true,
# Optional name to use as part of the store path. # Optional name to use as part of the store path.
# This defaults to `src.name` or otherwise `"source"`. # This defaults to `src.name` or otherwise `"source"`.
name ? null name ? null,
}: }:
let let
orig = toSourceAttributes src; orig = toSourceAttributes src;
in fromSourceAttributes { in
fromSourceAttributes {
inherit (orig) origSrc; inherit (orig) origSrc;
filter = path: type: filter path type && orig.filter path type; filter = path: type: filter path type && orig.filter path type;
name = if name != null then name else orig.name; name = if name != null then name else orig.name;
@ -102,14 +119,17 @@ let
attrs = toSourceAttributes src; attrs = toSourceAttributes src;
in in
fromSourceAttributes ( fromSourceAttributes (
attrs // { attrs
filter = path: type: // {
filter =
path: type:
let let
r = attrs.filter path type; r = attrs.filter path type;
in in
builtins.trace "${attrs.name}.filter ${path} = ${boolToString r}" r; builtins.trace "${attrs.name}.filter ${path} = ${boolToString r}" r;
} }
) // { )
// {
satisfiesSubpathInvariant = src ? satisfiesSubpathInvariant && src.satisfiesSubpathInvariant; satisfiesSubpathInvariant = src ? satisfiesSubpathInvariant && src.satisfiesSubpathInvariant;
}; };
@ -118,14 +138,20 @@ let
Example: src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"] Example: src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]
*/ */
sourceByRegex = src: regexes: sourceByRegex =
src: regexes:
let let
isFiltered = src ? _isLibCleanSourceWith; isFiltered = src ? _isLibCleanSourceWith;
origSrc = if isFiltered then src.origSrc else src; origSrc = if isFiltered then src.origSrc else src;
in lib.cleanSourceWith { in
filter = (path: type: lib.cleanSourceWith {
let relPath = lib.removePrefix (toString origSrc + "/") (toString path); filter = (
in lib.any (re: match re relPath != null) regexes); path: type:
let
relPath = lib.removePrefix (toString origSrc + "/") (toString path);
in
lib.any (re: match re relPath != null) regexes
);
inherit src; inherit src;
}; };
@ -145,21 +171,29 @@ let
src: src:
# A list of file suffix strings # A list of file suffix strings
exts: exts:
let filter = name: type: let
let base = baseNameOf (toString name); filter =
in type == "directory" || lib.any (ext: lib.hasSuffix ext base) exts; name: type:
in cleanSourceWith { inherit filter src; }; let
base = baseNameOf (toString name);
in
type == "directory" || lib.any (ext: lib.hasSuffix ext base) exts;
in
cleanSourceWith { inherit filter src; };
pathIsGitRepo = path: (_commitIdFromGitRepoOrError path)?value; pathIsGitRepo = path: (_commitIdFromGitRepoOrError path) ? value;
/* /*
Get the commit id of a git repo. Get the commit id of a git repo.
Example: commitIdFromGitRepo <nixpkgs/.git> Example: commitIdFromGitRepo <nixpkgs/.git>
*/ */
commitIdFromGitRepo = path: commitIdFromGitRepo =
let commitIdOrError = _commitIdFromGitRepoOrError path; path:
in commitIdOrError.value or (throw commitIdOrError.error); let
commitIdOrError = _commitIdFromGitRepoOrError path;
in
commitIdOrError.value or (throw commitIdOrError.error);
# Get the commit id of a git repo. # Get the commit id of a git repo.
@ -168,55 +202,68 @@ let
# Example: commitIdFromGitRepo <nixpkgs/.git> # Example: commitIdFromGitRepo <nixpkgs/.git>
# not exported, used for commitIdFromGitRepo # not exported, used for commitIdFromGitRepo
_commitIdFromGitRepoOrError = _commitIdFromGitRepoOrError =
let readCommitFromFile = file: path: let
let fileName = path + "/${file}"; readCommitFromFile =
file: path:
let
fileName = path + "/${file}";
packedRefsName = path + "/packed-refs"; packedRefsName = path + "/packed-refs";
absolutePath = base: path: absolutePath =
if lib.hasPrefix "/" path base: path: if lib.hasPrefix "/" path then path else toString (/. + "${base}/${path}");
then path in
else toString (/. + "${base}/${path}"); if
in if pathIsRegularFile path pathIsRegularFile path
# Resolve git worktrees. See gitrepository-layout(5) # Resolve git worktrees. See gitrepository-layout(5)
then then
let m = match "^gitdir: (.*)$" (lib.fileContents path); let
in if m == null m = match "^gitdir: (.*)$" (lib.fileContents path);
then { error = "File contains no gitdir reference: " + path; } in
if m == null then
{ error = "File contains no gitdir reference: " + path; }
else else
let gitDir = absolutePath (dirOf path) (lib.head m); let
commonDir'' = if pathIsRegularFile "${gitDir}/commondir" gitDir = absolutePath (dirOf path) (lib.head m);
then lib.fileContents "${gitDir}/commondir" commonDir'' =
else gitDir; if pathIsRegularFile "${gitDir}/commondir" then lib.fileContents "${gitDir}/commondir" else gitDir;
commonDir' = lib.removeSuffix "/" commonDir''; commonDir' = lib.removeSuffix "/" commonDir'';
commonDir = absolutePath gitDir commonDir'; commonDir = absolutePath gitDir commonDir';
refFile = lib.removePrefix "${commonDir}/" "${gitDir}/${file}"; refFile = lib.removePrefix "${commonDir}/" "${gitDir}/${file}";
in readCommitFromFile refFile commonDir in
readCommitFromFile refFile commonDir
else if pathIsRegularFile fileName else if
pathIsRegularFile fileName
# Sometimes git stores the commitId directly in the file but # Sometimes git stores the commitId directly in the file but
# sometimes it stores something like: «ref: refs/heads/branch-name» # sometimes it stores something like: «ref: refs/heads/branch-name»
then then
let fileContent = lib.fileContents fileName; let
fileContent = lib.fileContents fileName;
matchRef = match "^ref: (.*)$" fileContent; matchRef = match "^ref: (.*)$" fileContent;
in if matchRef == null in
then { value = fileContent; } if matchRef == null then { value = fileContent; } else readCommitFromFile (lib.head matchRef) path
else readCommitFromFile (lib.head matchRef) path
else if pathIsRegularFile packedRefsName else if
pathIsRegularFile packedRefsName
# Sometimes, the file isn't there at all and has been packed away in the # Sometimes, the file isn't there at all and has been packed away in the
# packed-refs file, so we have to grep through it: # packed-refs file, so we have to grep through it:
then then
let fileContent = readFile packedRefsName; let
fileContent = readFile packedRefsName;
matchRef = match "([a-z0-9]+) ${file}"; matchRef = match "([a-z0-9]+) ${file}";
isRef = s: isString s && (matchRef s) != null; isRef = s: isString s && (matchRef s) != null;
# there is a bug in libstdc++ leading to stackoverflow for long strings: # there is a bug in libstdc++ leading to stackoverflow for long strings:
# https://github.com/NixOS/nix/issues/2147#issuecomment-659868795 # https://github.com/NixOS/nix/issues/2147#issuecomment-659868795
refs = filter isRef (split "\n" fileContent); refs = filter isRef (split "\n" fileContent);
in if refs == [] in
then { error = "Could not find " + file + " in " + packedRefsName; } if refs == [ ] then
else { value = lib.head (matchRef (lib.head refs)); } { error = "Could not find " + file + " in " + packedRefsName; }
else
{ value = lib.head (matchRef (lib.head refs)); }
else { error = "Not a .git directory: " + toString path; }; else
in readCommitFromFile "HEAD"; { error = "Not a .git directory: " + toString path; };
in
readCommitFromFile "HEAD";
pathHasContext = builtins.hasContext or (lib.hasPrefix storeDir); pathHasContext = builtins.hasContext or (lib.hasPrefix storeDir);
@ -233,7 +280,8 @@ let
# like class of objects in the wild. # like class of objects in the wild.
# (Existing ones being: paths, strings, sources and x//{outPath}) # (Existing ones being: paths, strings, sources and x//{outPath})
# So instead of exposing internals, we build a library of combinator functions. # So instead of exposing internals, we build a library of combinator functions.
toSourceAttributes = src: toSourceAttributes =
src:
let let
isFiltered = src ? _isLibCleanSourceWith; isFiltered = src ? _isLibCleanSourceWith;
in in
@ -247,24 +295,36 @@ let
# fromSourceAttributes : SourceAttrs -> Source # fromSourceAttributes : SourceAttrs -> Source
# #
# Inverse of toSourceAttributes for Source objects. # Inverse of toSourceAttributes for Source objects.
fromSourceAttributes = { origSrc, filter, name }: fromSourceAttributes =
{
origSrc,
filter,
name,
}:
{ {
_isLibCleanSourceWith = true; _isLibCleanSourceWith = true;
inherit origSrc filter name; inherit origSrc filter name;
outPath = builtins.path { inherit filter name; path = origSrc; }; outPath = builtins.path {
inherit filter name;
path = origSrc;
};
}; };
in { in
{
pathType = lib.warnIf (lib.oldestSupportedReleaseIsAtLeast 2305) pathType =
lib.warnIf (lib.oldestSupportedReleaseIsAtLeast 2305)
"lib.sources.pathType has been moved to lib.filesystem.pathType." "lib.sources.pathType has been moved to lib.filesystem.pathType."
lib.filesystem.pathType; lib.filesystem.pathType;
pathIsDirectory = lib.warnIf (lib.oldestSupportedReleaseIsAtLeast 2305) pathIsDirectory =
lib.warnIf (lib.oldestSupportedReleaseIsAtLeast 2305)
"lib.sources.pathIsDirectory has been moved to lib.filesystem.pathIsDirectory." "lib.sources.pathIsDirectory has been moved to lib.filesystem.pathIsDirectory."
lib.filesystem.pathIsDirectory; lib.filesystem.pathIsDirectory;
pathIsRegularFile = lib.warnIf (lib.oldestSupportedReleaseIsAtLeast 2305) pathIsRegularFile =
lib.warnIf (lib.oldestSupportedReleaseIsAtLeast 2305)
"lib.sources.pathIsRegularFile has been moved to lib.filesystem.pathIsRegularFile." "lib.sources.pathIsRegularFile has been moved to lib.filesystem.pathIsRegularFile."
lib.filesystem.pathIsRegularFile; lib.filesystem.pathIsRegularFile;

View file

@ -269,6 +269,43 @@ rec {
f: f:
list: concatStringsSep sep (lib.imap1 f list); list: concatStringsSep sep (lib.imap1 f list);
/**
Like [`concatMapStringsSep`](#function-library-lib.strings.concatMapStringsSep)
but takes an attribute set instead of a list.
# Inputs
`sep`
: Separator to add between item strings
`f`
: Function that takes each key and value and return a string
`attrs`
: Attribute set to map from
# Type
```
concatMapAttrsStringSep :: String -> (String -> Any -> String) -> AttrSet -> String
```
# Examples
:::{.example}
## `lib.strings.concatMapAttrsStringSep` usage example
```nix
concatMapAttrsStringSep "\n" (name: value: "${name}: foo-${value}") { a = "0.1.0"; b = "0.2.0"; }
=> "a: foo-0.1.0\nb: foo-0.2.0"
```
:::
*/
concatMapAttrsStringSep =
sep: f: attrs:
concatStringsSep sep (lib.attrValues (lib.mapAttrs f attrs));
/** /**
Concatenate a list of strings, adding a newline at the end of each one. Concatenate a list of strings, adding a newline at the end of each one.
Defined as `concatMapStrings (s: s + "\n")`. Defined as `concatMapStrings (s: s + "\n")`.

View file

@ -491,12 +491,42 @@ rec {
}; };
# can execute on 32bit chip # can execute on 32bit chip
gcc_mips32r2_o32 = { gcc = { arch = "mips32r2"; abi = "32"; }; }; gcc_mips32r2_o32 = {
gcc_mips32r6_o32 = { gcc = { arch = "mips32r6"; abi = "32"; }; }; gcc = {
gcc_mips64r2_n32 = { gcc = { arch = "mips64r2"; abi = "n32"; }; }; arch = "mips32r2";
gcc_mips64r6_n32 = { gcc = { arch = "mips64r6"; abi = "n32"; }; }; abi = "32";
gcc_mips64r2_64 = { gcc = { arch = "mips64r2"; abi = "64"; }; }; };
gcc_mips64r6_64 = { gcc = { arch = "mips64r6"; abi = "64"; }; }; };
gcc_mips32r6_o32 = {
gcc = {
arch = "mips32r6";
abi = "32";
};
};
gcc_mips64r2_n32 = {
gcc = {
arch = "mips64r2";
abi = "n32";
};
};
gcc_mips64r6_n32 = {
gcc = {
arch = "mips64r6";
abi = "n32";
};
};
gcc_mips64r2_64 = {
gcc = {
arch = "mips64r2";
abi = "64";
};
};
gcc_mips64r6_64 = {
gcc = {
arch = "mips64r6";
abi = "64";
};
};
# based on: # based on:
# https://www.mail-archive.com/qemu-discuss@nongnu.org/msg05179.html # https://www.mail-archive.com/qemu-discuss@nongnu.org/msg05179.html
@ -545,27 +575,38 @@ rec {
# This function takes a minimally-valid "platform" and returns an # This function takes a minimally-valid "platform" and returns an
# attrset containing zero or more additional attrs which should be # attrset containing zero or more additional attrs which should be
# included in the platform in order to further elaborate it. # included in the platform in order to further elaborate it.
select = platform: select =
platform:
# x86 # x86
/**/ if platform.isx86 then pc if platform.isx86 then
pc
# ARM # ARM
else if platform.isAarch32 then let else if platform.isAarch32 then
let
version = platform.parsed.cpu.version or null; version = platform.parsed.cpu.version or null;
in if version == null then pc in
else if lib.versionOlder version "6" then sheevaplug if version == null then
else if lib.versionOlder version "7" then raspberrypi pc
else armv7l-hf-multiplatform else if lib.versionOlder version "6" then
sheevaplug
else if lib.versionOlder version "7" then
raspberrypi
else
armv7l-hf-multiplatform
else if platform.isAarch64 then else if platform.isAarch64 then
if platform.isDarwin then apple-m1 if platform.isDarwin then apple-m1 else aarch64-multiplatform
else aarch64-multiplatform
else if platform.isRiscV then riscv-multiplatform else if platform.isRiscV then
riscv-multiplatform
else if platform.parsed.cpu == lib.systems.parse.cpuTypes.mipsel then (import ./examples.nix { inherit lib; }).mipsel-linux-gnu else if platform.parsed.cpu == lib.systems.parse.cpuTypes.mipsel then
(import ./examples.nix { inherit lib; }).mipsel-linux-gnu
else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then
powernv
else { }; else
{ };
} }

View file

@ -1,7 +1,10 @@
# Throws an error if any of our lib tests fail. # Throws an error if any of our lib tests fail.
let tests = [ "misc" "systems" ]; let
tests = [
"misc"
"systems"
];
all = builtins.concatLists (map (f: import (./. + "/${f}.nix")) tests); all = builtins.concatLists (map (f: import (./. + "/${f}.nix")) tests);
in if all == [] in
then null if all == [ ] then null else throw (builtins.toJSON all)
else throw (builtins.toJSON all)

View file

@ -1,7 +1,8 @@
{ lib, ... }: { lib, ... }:
let let
inherit (lib) types; inherit (lib) types;
in { in
{
options = { options = {
name = lib.mkOption { name = lib.mkOption {
type = types.str; type = types.str;
@ -23,10 +24,12 @@ in {
default = null; default = null;
}; };
keys = lib.mkOption { keys = lib.mkOption {
type = types.listOf (types.submodule { type = types.listOf (
types.submodule {
options.fingerprint = lib.mkOption { type = types.str; }; options.fingerprint = lib.mkOption { type = types.str; };
}); }
default = []; );
default = [ ];
}; };
}; };
} }

View file

@ -1,16 +1,23 @@
# to run these tests (and the others) # to run these tests (and the others)
# nix-build nixpkgs/lib/tests/release.nix # nix-build nixpkgs/lib/tests/release.nix
# These tests should stay in sync with the comment in maintainers/maintainers-list.nix # These tests should stay in sync with the comment in maintainers/maintainers-list.nix
{ # The pkgs used for dependencies for the testing itself {
pkgs ? import ../.. {} # The pkgs used for dependencies for the testing itself
, lib ? pkgs.lib pkgs ? import ../.. { },
lib ? pkgs.lib,
}: }:
let let
checkMaintainer = handle: uncheckedAttrs: checkMaintainer =
handle: uncheckedAttrs:
let let
prefix = [ "lib" "maintainers" handle ]; prefix = [
checkedAttrs = (lib.modules.evalModules { "lib"
"maintainers"
handle
];
checkedAttrs =
(lib.modules.evalModules {
inherit prefix; inherit prefix;
modules = [ modules = [
./maintainer-module.nix ./maintainer-module.nix
@ -21,7 +28,8 @@ let
]; ];
}).config; }).config;
checks = lib.optional (checkedAttrs.github != null && checkedAttrs.githubId == null) '' checks =
lib.optional (checkedAttrs.github != null && checkedAttrs.githubId == null) ''
echo ${lib.escapeShellArg (lib.showOption prefix)}': If `github` is specified, `githubId` must be too.' echo ${lib.escapeShellArg (lib.showOption prefix)}': If `github` is specified, `githubId` must be too.'
# Calling this too often would hit non-authenticated API limits, but this # Calling this too often would hit non-authenticated API limits, but this
# shouldn't happen since such errors will get fixed rather quickly # shouldn't happen since such errors will get fixed rather quickly
@ -29,25 +37,40 @@ let
id=$(jq -r '.id' <<< "$info") id=$(jq -r '.id' <<< "$info")
echo "The GitHub ID for GitHub user ${checkedAttrs.github} is $id:" echo "The GitHub ID for GitHub user ${checkedAttrs.github} is $id:"
echo -e " githubId = $id;\n" echo -e " githubId = $id;\n"
'' ++ lib.optional (checkedAttrs.email == null && checkedAttrs.github == null && checkedAttrs.matrix == null) '' ''
++
lib.optional
(checkedAttrs.email == null && checkedAttrs.github == null && checkedAttrs.matrix == null)
''
echo ${lib.escapeShellArg (lib.showOption prefix)}': At least one of `email`, `github` or `matrix` must be specified, so that users know how to reach you.' echo ${lib.escapeShellArg (lib.showOption prefix)}': At least one of `email`, `github` or `matrix` must be specified, so that users know how to reach you.'
'' ++ lib.optional (checkedAttrs.email != null && lib.hasSuffix "noreply.github.com" checkedAttrs.email) '' ''
++
lib.optional (checkedAttrs.email != null && lib.hasSuffix "noreply.github.com" checkedAttrs.email)
''
echo ${lib.escapeShellArg (lib.showOption prefix)}': If an email address is given, it should allow people to reach you. If you do not want that, you can just provide `github` or `matrix` instead.' echo ${lib.escapeShellArg (lib.showOption prefix)}': If an email address is given, it should allow people to reach you. If you do not want that, you can just provide `github` or `matrix` instead.'
''; '';
in lib.deepSeq checkedAttrs checks; in
lib.deepSeq checkedAttrs checks;
missingGithubIds = lib.concatLists (lib.mapAttrsToList checkMaintainer lib.maintainers); missingGithubIds = lib.concatLists (lib.mapAttrsToList checkMaintainer lib.maintainers);
success = pkgs.runCommand "checked-maintainers-success" {} ">$out"; success = pkgs.runCommand "checked-maintainers-success" { } ">$out";
failure = pkgs.runCommand "checked-maintainers-failure" { failure =
nativeBuildInputs = [ pkgs.curl pkgs.jq ]; pkgs.runCommand "checked-maintainers-failure"
{
nativeBuildInputs = [
pkgs.curl
pkgs.jq
];
outputHash = "sha256:${lib.fakeSha256}"; outputHash = "sha256:${lib.fakeSha256}";
outputHAlgo = "sha256"; outputHAlgo = "sha256";
outputHashMode = "flat"; outputHashMode = "flat";
SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
} '' }
''
${lib.concatStringsSep "\n" missingGithubIds} ${lib.concatStringsSep "\n" missingGithubIds}
exit 1 exit 1
''; '';
in if missingGithubIds == [] then success else failure in
if missingGithubIds == [ ] then success else failure

View file

@ -39,6 +39,7 @@ let
composeManyExtensions composeManyExtensions
concatLines concatLines
concatMapAttrs concatMapAttrs
concatMapAttrsStringSep
concatMapStrings concatMapStrings
concatStrings concatStrings
concatStringsSep concatStringsSep
@ -328,6 +329,11 @@ runTests {
expected = "a,b,c"; expected = "a,b,c";
}; };
testConcatMapAttrsStringSepExamples = {
expr = concatMapAttrsStringSep "\n" (name: value: "${name}: foo-${value}") { a = "0.1.0"; b = "0.2.0"; };
expected = "a: foo-0.1.0\nb: foo-0.2.0";
};
testConcatLines = { testConcatLines = {
expr = concatLines ["a" "b" "c"]; expr = concatLines ["a" "b" "c"];
expected = "a\nb\nc\n"; expected = "a\nb\nc\n";
@ -1871,6 +1877,44 @@ runTests {
expected = [ [ "_module" "args" ] [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ]; expected = [ [ "_module" "args" ] [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ];
}; };
testAttrsWithName = {
expr = let
eval = evalModules {
modules = [
{
options = {
foo = lib.mkOption {
type = lib.types.attrsWith {
placeholder = "MyCustomPlaceholder";
elemType = lib.types.submodule {
options.bar = lib.mkOption {
type = lib.types.int;
default = 42;
};
};
};
};
};
}
];
};
opt = eval.options.foo;
in
(opt.type.getSubOptions opt.loc).bar.loc;
expected = [
"foo"
"<MyCustomPlaceholder>"
"bar"
];
};
testShowOptionWithPlaceholder = {
# <name>, *, should not be escaped. It is used as a placeholder by convention.
# Other symbols should be escaped. `{}`
expr = lib.showOption ["<name>" "<myName>" "*" "{foo}"];
expected = "<name>.<myName>.*.\"{foo}\"";
};
testCartesianProductOfEmptySet = { testCartesianProductOfEmptySet = {
expr = cartesianProduct {}; expr = cartesianProduct {};
expected = [ {} ]; expected = [ {} ];

View file

@ -190,6 +190,9 @@ checkConfigOutput '^420$' config.bare-submodule.deep ./declare-bare-submodule.ni
checkConfigOutput '^2$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix ./define-shorthandOnlyDefinesConfig-true.nix checkConfigOutput '^2$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix ./define-shorthandOnlyDefinesConfig-true.nix
checkConfigError 'The option .bare-submodule.deep. in .*/declare-bare-submodule-deep-option.nix. is already declared in .*/declare-bare-submodule-deep-option-duplicate.nix' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix ./declare-bare-submodule-deep-option-duplicate.nix checkConfigError 'The option .bare-submodule.deep. in .*/declare-bare-submodule-deep-option.nix. is already declared in .*/declare-bare-submodule-deep-option-duplicate.nix' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix ./declare-bare-submodule-deep-option-duplicate.nix
# Check that strMatching can be merged
checkConfigOutput '^"strMatching.*"$' options.sm.type.name ./strMatching-merge.nix
# Check integer types. # Check integer types.
# unsigned # unsigned
checkConfigOutput '^42$' config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix checkConfigOutput '^42$' config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
@ -391,6 +394,10 @@ checkConfigError 'The option `mergedLazyNonLazy'\'' in `.*'\'' is already declar
checkConfigOutput '^11$' config.lazyResult ./lazy-attrsWith.nix checkConfigOutput '^11$' config.lazyResult ./lazy-attrsWith.nix
checkConfigError 'infinite recursion encountered' config.nonLazyResult ./lazy-attrsWith.nix checkConfigError 'infinite recursion encountered' config.nonLazyResult ./lazy-attrsWith.nix
# AttrsWith placeholder tests
checkConfigOutput '^"mergedName.<id>.nested"$' config.result ./name-merge-attrsWith-1.nix
checkConfigError 'The option .mergedName. in .*\.nix. is already declared in .*\.nix' config.mergedName ./name-merge-attrsWith-2.nix
# Even with multiple assignments, a type error should be thrown if any of them aren't valid # Even with multiple assignments, a type error should be thrown if any of them aren't valid
checkConfigError 'A definition for option .* is not of type .*' \ checkConfigError 'A definition for option .* is not of type .*' \
config.value ./declare-int-unsigned-value.nix ./define-value-list.nix ./define-value-int-positive.nix config.value ./declare-int-unsigned-value.nix ./define-value-list.nix ./define-value-int-positive.nix

View file

@ -1,5 +1,9 @@
{ lib, ... }: { { lib, ... }:
options.dummy = lib.mkOption { type = lib.types.anything; default = {}; }; {
options.dummy = lib.mkOption {
type = lib.types.anything;
default = { };
};
freeformType = freeformType =
let let
a = lib.types.attrsOf (lib.types.submodule { options.bar = lib.mkOption { }; }); a = lib.types.attrsOf (lib.types.submodule { options.bar = lib.mkOption { }; });
@ -7,7 +11,8 @@
# modifying types like this breaks type merging. # modifying types like this breaks type merging.
# This test makes sure that type merging is not performed when only a single declaration exists. # This test makes sure that type merging is not performed when only a single declaration exists.
# Don't modify types in practice! # Don't modify types in practice!
a // { a
// {
merge = loc: defs: { freeformItems = a.merge loc defs; }; merge = loc: defs: { freeformItems = a.merge loc defs; };
}; };
config.foo.bar = "ok"; config.foo.bar = "ok";

View file

@ -30,7 +30,7 @@ in
# mkAliasOptionModule sets warnings, so this has to be defined. # mkAliasOptionModule sets warnings, so this has to be defined.
warnings = mkOption { warnings = mkOption {
internal = true; internal = true;
default = []; default = [ ];
type = types.listOf types.str; type = types.listOf types.str;
example = [ "The `foo' service is deprecated and will go away soon!" ]; example = [ "The `foo' service is deprecated and will go away soon!" ];
description = '' description = ''
@ -46,14 +46,16 @@ in
# Disable the aliased option with a high priority so it # Disable the aliased option with a high priority so it
# should override the next import. # should override the next import.
( { config, lib, ... }: (
{ config, lib, ... }:
{ {
enableAlias = mkForce false; enableAlias = mkForce false;
} }
) )
# Enable the normal (non-aliased) option. # Enable the normal (non-aliased) option.
( { config, lib, ... }: (
{ config, lib, ... }:
{ {
enable = true; enable = true;
} }

View file

@ -30,7 +30,7 @@ in
# mkAliasOptionModule sets warnings, so this has to be defined. # mkAliasOptionModule sets warnings, so this has to be defined.
warnings = mkOption { warnings = mkOption {
internal = true; internal = true;
default = []; default = [ ];
type = types.listOf types.str; type = types.listOf types.str;
example = [ "The `foo' service is deprecated and will go away soon!" ]; example = [ "The `foo' service is deprecated and will go away soon!" ];
description = '' description = ''
@ -46,14 +46,16 @@ in
# Disable the aliased option, but with a default (low) priority so it # Disable the aliased option, but with a default (low) priority so it
# should be able to be overridden by the next import. # should be able to be overridden by the next import.
( { config, lib, ... }: (
{ config, lib, ... }:
{ {
enableAlias = mkDefault false; enableAlias = mkDefault false;
} }
) )
# Enable the normal (non-aliased) option. # Enable the normal (non-aliased) option.
( { config, lib, ... }: (
{ config, lib, ... }:
{ {
enable = true; enable = true;
} }

View file

@ -1,6 +1,7 @@
{ lib, config, ... }: { { lib, config, ... }:
{
options.conditionalWorks = lib.mkOption { options.conditionalWorks = lib.mkOption {
default = ! config.value ? foo; default = !config.value ? foo;
}; };
config.value.foo = lib.mkIf false "should not be defined"; config.value.foo = lib.mkIf false "should not be defined";

View file

@ -1,6 +1,7 @@
{ lib, config, ... }: { { lib, config, ... }:
{
options.isLazy = lib.mkOption { options.isLazy = lib.mkOption {
default = ! config.value ? foo; default = !config.value ? foo;
}; };
config.value.bar = throw "is not lazy"; config.value.bar = throw "is not lazy";

View file

@ -1,14 +1,26 @@
{ lib, ... }: { { lib, ... }:
{
options.value = lib.mkOption { options.value = lib.mkOption {
type = lib.types.lazyAttrsOf lib.types.boolByOr; type = lib.types.lazyAttrsOf lib.types.boolByOr;
}; };
config.value = { config.value = {
falseFalse = lib.mkMerge [ false false ]; falseFalse = lib.mkMerge [
trueFalse = lib.mkMerge [ true false ]; false
falseTrue = lib.mkMerge [ false true ]; false
trueTrue = lib.mkMerge [ true true ]; ];
trueFalse = lib.mkMerge [
true
false
];
falseTrue = lib.mkMerge [
false
true
];
trueTrue = lib.mkMerge [
true
true
];
}; };
} }

View file

@ -1,4 +1,5 @@
{ lib, ... }: { { lib, ... }:
{
options = { options = {
sub = { sub = {
nixosOk = lib.mkOption { nixosOk = lib.mkOption {
@ -40,16 +41,14 @@
]; ];
config = { config = {
_module.freeformType = lib.types.anything; _module.freeformType = lib.types.anything;
ok = ok = lib.evalModules {
lib.evalModules {
class = "nixos"; class = "nixos";
modules = [ modules = [
./module-class-is-nixos.nix ./module-class-is-nixos.nix
]; ];
}; };
fail = fail = lib.evalModules {
lib.evalModules {
class = "nixos"; class = "nixos";
modules = [ modules = [
./module-class-is-nixos.nix ./module-class-is-nixos.nix
@ -57,20 +56,24 @@
]; ];
}; };
fail-anon = fail-anon = lib.evalModules {
lib.evalModules {
class = "nixos"; class = "nixos";
modules = [ modules = [
./module-class-is-nixos.nix ./module-class-is-nixos.nix
{ _file = "foo.nix#darwinModules.default"; {
_file = "foo.nix#darwinModules.default";
_class = "darwin"; _class = "darwin";
config = {}; config = { };
imports = []; imports = [ ];
} }
]; ];
}; };
sub.nixosOk = { _class = "nixos"; }; sub.nixosOk = {
sub.nixosFail = { imports = [ ./module-class-is-darwin.nix ]; }; _class = "nixos";
};
sub.nixosFail = {
imports = [ ./module-class-is-darwin.nix ];
};
}; };
} }

View file

@ -1,13 +1,13 @@
{ lib, ... }: { lib, ... }:
let let
deathtrapArgs = lib.mapAttrs deathtrapArgs = lib.mapAttrs (
(k: _: throw "The module system is too strict, accessing an unused option's ${k} mkOption-attribute.") k: _: throw "The module system is too strict, accessing an unused option's ${k} mkOption-attribute."
(lib.functionArgs lib.mkOption); ) (lib.functionArgs lib.mkOption);
in in
{ {
options.value = lib.mkOption { options.value = lib.mkOption {
type = lib.types.attrsOf lib.types.str; type = lib.types.attrsOf lib.types.str;
default = {}; default = { };
}; };
options.testing-laziness-so-don't-read-me = lib.mkOption deathtrapArgs; options.testing-laziness-so-don't-read-me = lib.mkOption deathtrapArgs;
} }

View file

@ -1,7 +1,9 @@
{ lib, ... }: { lib, ... }:
let let
submod = { ... }: { submod =
{ ... }:
{
options = { options = {
enable = lib.mkOption { enable = lib.mkOption {
default = false; default = false;
@ -18,8 +20,8 @@ in
{ {
options = { options = {
attrsOfSub = lib.mkOption { attrsOfSub = lib.mkOption {
default = {}; default = { };
example = {}; example = { };
type = lib.types.attrsOf (lib.types.submodule [ submod ]); type = lib.types.attrsOf (lib.types.submodule [ submod ]);
description = '' description = ''
Some descriptive text Some descriptive text

View file

@ -8,7 +8,7 @@ in
modules = [ ]; modules = [ ];
shorthandOnlyDefinesConfig = config.shorthandOnlyDefinesConfig; shorthandOnlyDefinesConfig = config.shorthandOnlyDefinesConfig;
}; };
default = {}; default = { };
}; };
# config-dependent options: won't recommend, but useful for making this test parameterized # config-dependent options: won't recommend, but useful for making this test parameterized

View file

@ -1,4 +1,5 @@
{ lib, ... }: { { lib, ... }:
{
options.value = lib.mkOption { options.value = lib.mkOption {
type = lib.types.either lib.types.int lib.types.str; type = lib.types.either lib.types.int lib.types.str;
}; };

View file

@ -1,6 +1,7 @@
{ lib, ... }: { { lib, ... }:
{
options.value = lib.mkOption { options.value = lib.mkOption {
type = lib.types.lazyAttrsOf (lib.types.str // { emptyValue.value = "empty"; }); type = lib.types.lazyAttrsOf (lib.types.str // { emptyValue.value = "empty"; });
default = {}; default = { };
}; };
} }

View file

@ -1,9 +1,11 @@
{ lib, ... }: let { lib, ... }:
let
pkgs.hello = { pkgs.hello = {
type = "derivation"; type = "derivation";
pname = "hello"; pname = "hello";
}; };
in { in
{
options = { options = {
package = lib.mkPackageOption pkgs "hello" { }; package = lib.mkPackageOption pkgs "hello" { };
@ -46,8 +48,14 @@ in {
pkgsText = "myPkgs"; pkgsText = "myPkgs";
}; };
packageFromOtherSet = let myPkgs = { packageFromOtherSet =
hello = pkgs.hello // { pname = "hello-other"; }; let
}; in lib.mkPackageOption myPkgs "hello" { }; myPkgs = {
hello = pkgs.hello // {
pname = "hello-other";
};
};
in
lib.mkPackageOption myPkgs "hello" { };
}; };
} }

View file

@ -1,4 +1,5 @@
{ lib, ... }: { { lib, ... }:
{
options.value = lib.mkOption { options.value = lib.mkOption {
type = lib.types.oneOf [ type = lib.types.oneOf [
lib.types.int lib.types.int

View file

@ -3,7 +3,9 @@
{ {
options.set = lib.mkOption { options.set = lib.mkOption {
default = { }; default = { };
example = { a = 1; }; example = {
a = 1;
};
type = lib.types.attrsOf lib.types.int; type = lib.types.attrsOf lib.types.int;
description = '' description = ''
Some descriptive text Some descriptive text

View file

@ -1,6 +1,8 @@
{ lib, ... }: { { lib, ... }:
{
options.submodule = lib.mkOption { options.submodule = lib.mkOption {
inherit (lib.evalModules { inherit
(lib.evalModules {
modules = [ modules = [
{ {
options.inner = lib.mkOption { options.inner = lib.mkOption {
@ -9,17 +11,22 @@
}; };
} }
]; ];
}) type; })
default = {}; type
;
default = { };
}; };
config.submodule = lib.mkMerge [ config.submodule = lib.mkMerge [
({ lib, ... }: { (
{ lib, ... }:
{
options.outer = lib.mkOption { options.outer = lib.mkOption {
type = lib.types.bool; type = lib.types.bool;
default = false; default = false;
}; };
}) }
)
{ {
inner = true; inner = true;
outer = true; outer = true;

View file

@ -1,4 +1,5 @@
{ lib, ... }: { { lib, ... }:
{
options.submodule = lib.mkOption { options.submodule = lib.mkOption {
type = lib.types.submoduleWith { type = lib.types.submoduleWith {
modules = [ modules = [
@ -10,16 +11,19 @@
} }
]; ];
}; };
default = {}; default = { };
}; };
config.submodule = lib.mkMerge [ config.submodule = lib.mkMerge [
({ lib, ... }: { (
{ lib, ... }:
{
options.outer = lib.mkOption { options.outer = lib.mkOption {
type = lib.types.bool; type = lib.types.bool;
default = false; default = false;
}; };
}) }
)
{ {
inner = true; inner = true;
outer = true; outer = true;

View file

@ -1,13 +1,15 @@
{ lib, ... }: let { lib, ... }:
let
sub.options.config = lib.mkOption { sub.options.config = lib.mkOption {
type = lib.types.bool; type = lib.types.bool;
default = false; default = false;
}; };
in { in
{
options.submodule = lib.mkOption { options.submodule = lib.mkOption {
type = lib.types.submoduleWith { type = lib.types.submoduleWith {
modules = [ sub ]; modules = [ sub ];
}; };
default = {}; default = { };
}; };
} }

View file

@ -1,11 +1,12 @@
{ lib, ... }: { { lib, ... }:
{
options.submodule = lib.mkOption { options.submodule = lib.mkOption {
type = lib.types.submoduleWith { type = lib.types.submoduleWith {
modules = [ modules = [
./declare-enable.nix ./declare-enable.nix
]; ];
}; };
default = {}; default = { };
}; };
config.submodule = ./define-enable.nix; config.submodule = ./define-enable.nix;

View file

@ -1,14 +1,16 @@
{ lib, ... }: let { lib, ... }:
let
sub.options.config = lib.mkOption { sub.options.config = lib.mkOption {
type = lib.types.bool; type = lib.types.bool;
default = false; default = false;
}; };
in { in
{
options.submodule = lib.mkOption { options.submodule = lib.mkOption {
type = lib.types.submoduleWith { type = lib.types.submoduleWith {
modules = [ sub ]; modules = [ sub ];
shorthandOnlyDefinesConfig = true; shorthandOnlyDefinesConfig = true;
}; };
default = {}; default = { };
}; };
} }

View file

@ -1,17 +1,21 @@
{ lib, ... }: { { lib, ... }:
{
options.submodule = lib.mkOption { options.submodule = lib.mkOption {
type = lib.types.submoduleWith { type = lib.types.submoduleWith {
modules = [ modules = [
({ lib, ... }: { (
{ lib, ... }:
{
options.foo = lib.mkOption { options.foo = lib.mkOption {
default = lib.foo; default = lib.foo;
}; };
}) }
)
]; ];
specialArgs.lib = lib // { specialArgs.lib = lib // {
foo = "foo"; foo = "foo";
}; };
}; };
default = {}; default = { };
}; };
} }

View file

@ -1,9 +1,10 @@
{ lib, moduleType, ... }: { lib, moduleType, ... }:
let inherit (lib) mkOption types; let
inherit (lib) mkOption types;
in in
{ {
options.variants = mkOption { options.variants = mkOption {
type = types.lazyAttrsOf moduleType; type = types.lazyAttrsOf moduleType;
default = {}; default = { };
}; };
} }

View file

@ -1,8 +1,15 @@
{ lib ? import ../.., modules ? [] }: {
lib ? import ../..,
modules ? [ ],
}:
{ {
inherit (lib.evalModules { inherit
(lib.evalModules {
inherit modules; inherit modules;
specialArgs.modulesPath = ./.; specialArgs.modulesPath = ./.;
}) config options; })
config
options
;
} }

View file

@ -1,7 +1,19 @@
{ config, lib, ... }: { config, lib, ... }:
let let
inherit (lib) types mkOption setDefaultModuleLocation evalModules; inherit (lib)
inherit (types) deferredModule lazyAttrsOf submodule str raw enum; types
mkOption
setDefaultModuleLocation
evalModules
;
inherit (types)
deferredModule
lazyAttrsOf
submodule
str
raw
enum
;
in in
{ {
options = { options = {
@ -13,7 +25,8 @@ in
}; };
}; };
config = { config = {
deferred = { ... }: deferred =
{ ... }:
# this should be an attrset, so this fails # this should be an attrset, so this fails
true; true;
}; };

View file

@ -1,7 +1,14 @@
{ lib, ... }: { lib, ... }:
let let
inherit (lib) types mkOption setDefaultModuleLocation; inherit (lib) types mkOption setDefaultModuleLocation;
inherit (types) deferredModule lazyAttrsOf submodule str raw enum; inherit (types)
deferredModule
lazyAttrsOf
submodule
str
raw
enum
;
in in
{ {
imports = [ imports = [
@ -9,11 +16,15 @@ in
# - nodes.<name> # - nodes.<name>
# - default # - default
# where all nodes include the default # where all nodes include the default
({ config, ... }: { (
{ config, ... }:
{
_file = "generic.nix"; _file = "generic.nix";
options.nodes = mkOption { options.nodes = mkOption {
type = lazyAttrsOf (submodule { imports = [ config.default ]; }); type = lazyAttrsOf (submodule {
default = {}; imports = [ config.default ];
});
default = { };
}; };
options.default = mkOption { options.default = mkOption {
type = deferredModule; type = deferredModule;
@ -22,13 +33,19 @@ in
Module that is included in all nodes. Module that is included in all nodes.
''; '';
}; };
}) }
)
{ {
_file = "default-1.nix"; _file = "default-1.nix";
default = { config, ... }: { default =
options.settingsDict = lib.mkOption { type = lazyAttrsOf str; default = {}; }; { config, ... }:
options.bottom = lib.mkOption { type = enum []; }; {
options.settingsDict = lib.mkOption {
type = lazyAttrsOf str;
default = { };
};
options.bottom = lib.mkOption { type = enum [ ]; };
}; };
} }
@ -49,7 +66,9 @@ in
{ {
_file = "nodes-foo-c-is-a.nix"; _file = "nodes-foo-c-is-a.nix";
nodes.foo = { config, ... }: { nodes.foo =
{ config, ... }:
{
settingsDict.c = config.settingsDict.a; settingsDict.c = config.settingsDict.a;
}; };
} }

View file

@ -1,3 +1,3 @@
{ {
attrsOfSub.bar = {}; attrsOfSub.bar = { };
} }

View file

@ -1,3 +1,3 @@
{ {
attrsOfSub.foo = {}; attrsOfSub.foo = { };
} }

View file

@ -1,15 +1,24 @@
{ config, ... }: { { config, ... }:
class = { "just" = "data"; }; {
class = {
"just" = "data";
};
a = "one"; a = "one";
b = "two"; b = "two";
meta = "meta"; meta = "meta";
_module.args.result = _module.args.result =
let r = builtins.removeAttrs config [ "_module" ]; let
in builtins.trace (builtins.deepSeq r r) (r == { r = builtins.removeAttrs config [ "_module" ];
in
builtins.trace (builtins.deepSeq r r) (
r == {
a = "one"; a = "one";
b = "two"; b = "two";
class = { "just" = "data"; }; class = {
"just" = "data";
};
meta = "meta"; meta = "meta";
}); }
);
} }

View file

@ -5,7 +5,8 @@
{ {
# Always defined, but the value depends on the presence of an option. # Always defined, but the value depends on the presence of an option.
config.set = { config.set =
{
value = if options ? set.enable then 360 else 7; value = if options ? set.enable then 360 else 7;
} }
# Only define if possible. # Only define if possible.

View file

@ -5,7 +5,8 @@
{ {
# Always defined, but the value depends on the presence of an option. # Always defined, but the value depends on the presence of an option.
config = { config =
{
value = if options ? enable then 360 else 7; value = if options ? enable then 360 else 7;
} }
# Only define if possible. # Only define if possible.

View file

@ -1,3 +1,4 @@
{ config, ... }: { { config, ... }:
{
settingsDict.a = config.settingsDict.b; settingsDict.a = config.settingsDict.b;
} }

View file

@ -1,3 +1,3 @@
{ {
value = []; value = [ ];
} }

View file

@ -1,8 +1,11 @@
{ lib, ... }: { { lib, ... }:
{
imports = [{ imports = [
{
value = lib.mkDefault "def"; value = lib.mkDefault "def";
}]; }
];
value = lib.mkMerge [ value = lib.mkMerge [
(lib.mkIf false "nope") (lib.mkIf false "nope")

View file

@ -1,5 +1,6 @@
{ config, lib, ... }: { config, lib, ... }:
let inherit (lib) types mkOption attrNames; let
inherit (lib) types mkOption attrNames;
in in
{ {
options = { options = {
@ -16,7 +17,11 @@ in
variants.foo.variants.bar.attrs.z = 1; variants.foo.variants.bar.attrs.z = 1;
variants.foo.variants.foo.attrs.c = 3; variants.foo.variants.foo.attrs.c = 3;
resultFoo = lib.concatMapStringsSep " " toString (attrNames config.variants.foo.attrs); resultFoo = lib.concatMapStringsSep " " toString (attrNames config.variants.foo.attrs);
resultFooBar = lib.concatMapStringsSep " " toString (attrNames config.variants.foo.variants.bar.attrs); resultFooBar = lib.concatMapStringsSep " " toString (
resultFooFoo = lib.concatMapStringsSep " " toString (attrNames config.variants.foo.variants.foo.attrs); attrNames config.variants.foo.variants.bar.attrs
);
resultFooFoo = lib.concatMapStringsSep " " toString (
attrNames config.variants.foo.variants.foo.attrs
);
}; };
} }

View file

@ -1,5 +1,8 @@
{ ... }: { ... }:
{ {
disabledModules = [ "define-enable.nix" "declare-enable.nix" ]; disabledModules = [
"define-enable.nix"
"declare-enable.nix"
];
} }

View file

@ -2,7 +2,9 @@
let let
inherit (lib) mkOption types; inherit (lib) mkOption types;
moduleWithKey = { config, ... }: { moduleWithKey =
{ config, ... }:
{
config = { config = {
enable = true; enable = true;
}; };

View file

@ -18,7 +18,7 @@ in
moduleWithKey moduleWithKey
]; ];
}; };
default = {}; default = { };
}; };
negative = mkOption { negative = mkOption {
type = types.submodule { type = types.submodule {
@ -28,7 +28,7 @@ in
]; ];
disabledModules = [ moduleWithKey ]; disabledModules = [ moduleWithKey ];
}; };
default = {}; default = { };
}; };
}; };
} }

View file

@ -18,7 +18,7 @@ in
moduleWithKey moduleWithKey
]; ];
}; };
default = {}; default = { };
}; };
negative = mkOption { negative = mkOption {
type = types.submodule { type = types.submodule {
@ -28,7 +28,7 @@ in
]; ];
disabledModules = [ 123 ]; disabledModules = [ 123 ];
}; };
default = {}; default = { };
}; };
}; };
} }

View file

@ -1,9 +1,23 @@
{ lib, ... }: { { lib, ... }:
{
imports = [ imports = [
(lib.doRename { from = ["a" "b"]; to = ["c" "d" "e"]; warn = true; use = x: x; visible = true; }) (lib.doRename {
from = [
"a"
"b"
];
to = [
"c"
"d"
"e"
];
warn = true;
use = x: x;
visible = true;
})
]; ];
options = { options = {
c.d.e = lib.mkOption {}; c.d.e = lib.mkOption { };
}; };
config = { config = {
a.b = 1234; a.b = 1234;

View file

@ -4,7 +4,12 @@
services.foo.enable = true; services.foo.enable = true;
services.foo.bar = "baz"; services.foo.bar = "baz";
result = result =
assert config.services.foos == { "" = { bar = "baz"; }; }; assert
config.services.foos == {
"" = {
bar = "baz";
};
};
true; true;
}; };
} }

View file

@ -3,7 +3,12 @@
config = { config = {
services.foos."".bar = "baz"; services.foos."".bar = "baz";
result = result =
assert config.services.foos == { "" = { bar = "baz"; }; }; assert
config.services.foos == {
"" = {
bar = "baz";
};
};
assert config.services.foo.bar == "baz"; assert config.services.foo.bar == "baz";
true; true;
}; };

View file

@ -3,7 +3,7 @@
config = { config = {
result = result =
assert config.services.foos == { }; assert config.services.foos == { };
assert ! options.services.foo.bar.isDefined; assert !options.services.foo.bar.isDefined;
true; true;
}; };
} }

View file

@ -13,25 +13,41 @@
*/ */
{ config, lib, ... }: { config, lib, ... }:
let let
inherit (lib) mkOption mkEnableOption types doRename; inherit (lib)
mkOption
mkEnableOption
types
doRename
;
in in
{ {
options = { options = {
services.foo.enable = mkEnableOption "foo"; services.foo.enable = mkEnableOption "foo";
services.foos = mkOption { services.foos = mkOption {
type = types.attrsOf (types.submodule { type = types.attrsOf (
types.submodule {
options = { options = {
bar = mkOption { type = types.str; }; bar = mkOption { type = types.str; };
}; };
}); }
);
default = { }; default = { };
}; };
result = mkOption {}; result = mkOption { };
}; };
imports = [ imports = [
(doRename { (doRename {
from = [ "services" "foo" "bar" ]; from = [
to = [ "services" "foos" "" "bar" ]; "services"
"foo"
"bar"
];
to = [
"services"
"foos"
""
"bar"
];
visible = true; visible = true;
warn = false; warn = false;
use = x: x; use = x: x;

View file

@ -1,11 +1,25 @@
{ lib, config, ... }: { { lib, config, ... }:
{
imports = [ imports = [
(lib.doRename { from = ["a" "b"]; to = ["c" "d" "e"]; warn = true; use = x: x; visible = true; }) (lib.doRename {
from = [
"a"
"b"
];
to = [
"c"
"d"
"e"
];
warn = true;
use = x: x;
visible = true;
})
]; ];
options = { options = {
warnings = lib.mkOption { type = lib.types.listOf lib.types.str; }; warnings = lib.mkOption { type = lib.types.listOf lib.types.str; };
c.d.e = lib.mkOption {}; c.d.e = lib.mkOption { };
result = lib.mkOption {}; result = lib.mkOption { };
}; };
config = { config = {
a.b = 1234; a.b = 1234;

View file

@ -2,7 +2,7 @@
A basic documentation generating module. A basic documentation generating module.
Declares and defines a `docs` option, suitable for making assertions about Declares and defines a `docs` option, suitable for making assertions about
the extraction "phase" of documentation generation. the extraction "phase" of documentation generation.
*/ */
{ lib, options, ... }: { lib, options, ... }:
let let
@ -24,18 +24,12 @@ in
All options to be rendered, without any visibility filtering applied. All options to be rendered, without any visibility filtering applied.
''; '';
}; };
config.docs = config.docs = lib.zipAttrsWith (
lib.zipAttrsWith name: values:
(name: values:
if length values > 1 then if length values > 1 then
traceListSeq values traceListSeq values abort "Multiple options with the same name: ${name}"
abort "Multiple options with the same name: ${name}"
else else
assert length values == 1; assert length values == 1;
head values head values
) ) (map (opt: { ${opt.name} = opt; }) (lib.optionAttrSetToDocList options));
(map
(opt: { ${opt.name} = opt; })
(lib.optionAttrSetToDocList options)
);
} }

View file

@ -1,7 +1,8 @@
{ lib, ... }: { lib, ... }:
let let
inherit (lib) types; inherit (lib) types;
in { in
{
options = { options = {
int = lib.mkOption { int = lib.mkOption {
@ -20,7 +21,7 @@ in {
type = types.lazyAttrsOf (types.nullOr types.int); type = types.lazyAttrsOf (types.nullOr types.int);
}; };
submodule = lib.mkOption { submodule = lib.mkOption {
type = types.lazyAttrsOf (types.submodule {}); type = types.lazyAttrsOf (types.submodule { });
}; };
}; };

View file

@ -5,8 +5,8 @@ in
{ {
options.sub = lib.mkOption { options.sub = lib.mkOption {
type = lib.types.submodule { type = lib.types.submodule {
wrong2 = mkOption {}; wrong2 = mkOption { };
}; };
default = {}; default = { };
}; };
} }

View file

@ -1,6 +1,7 @@
{ lib {
, extendModules lib,
, ... extendModules,
...
}: }:
let let
@ -17,9 +18,10 @@ in
options.sub = mkOption { options.sub = mkOption {
default = { }; default = { };
type = types.submodule ( type = types.submodule (
{ config {
, extendModules config,
, ... extendModules,
...
}: }:
{ {
options.value = mkOption { options.value = mkOption {
@ -30,11 +32,14 @@ in
default = { }; default = { };
inherit inherit
(extendModules { (extendModules {
modules = [{ modules = [
{
specialisation = mkOverride 0 { }; specialisation = mkOverride 0 { };
}]; }
];
}) })
type; type
;
}; };
} }
); );
@ -43,6 +48,5 @@ in
{ config.sub.value = 1; } { config.sub.value = 1; }
]; ];
} }

View file

@ -1,3 +1,4 @@
{ lib, ... }: { { lib, ... }:
{
freeformType = with lib.types; attrsOf (either str (attrsOf str)); freeformType = with lib.types; attrsOf (either str (attrsOf str));
} }

View file

@ -1,3 +1,4 @@
{ lib, ... }: { { lib, ... }:
{
freeformType = with lib.types; lazyAttrsOf (either str (lazyAttrsOf str)); freeformType = with lib.types; lazyAttrsOf (either str (lazyAttrsOf str));
} }

View file

@ -1,8 +1,8 @@
{ lib, ... }: { lib, ... }:
let let
deathtrapArgs = lib.mapAttrs deathtrapArgs = lib.mapAttrs (
(k: _: throw "The module system is too strict, accessing an unused option's ${k} mkOption-attribute.") k: _: throw "The module system is too strict, accessing an unused option's ${k} mkOption-attribute."
(lib.functionArgs lib.mkOption); ) (lib.functionArgs lib.mkOption);
in in
{ {
options.nest.foo = lib.mkOption { options.nest.foo = lib.mkOption {

View file

@ -1,4 +1,5 @@
{ lib, config, ... }: { { lib, config, ... }:
{
options.foo = lib.mkOption { options.foo = lib.mkOption {
type = lib.types.nullOr lib.types.str; type = lib.types.nullOr lib.types.str;
default = null; default = null;

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