git.iko.soy/typeable/nixpkgs
on ea9bc26 help sign in
15671 files changed+393657−560289
since splitsnapshots
unifiedsplit
.editorconfig+14−5 .git-blame-ignore-revs−32 .github/CODEOWNERS+47−99 .github/ISSUE_TEMPLATE/bug_report.md+8 .github/ISSUE_TEMPLATE/out_of_date_package_report.md+3−3 .github/PULL_REQUEST_TEMPLATE.md+12−18 .github/labeler.yml+6−4 .github/workflows/backport.yml+1−7 .github/workflows/basic-eval.yml+10−16 .github/workflows/direct-push.yml+1−1 .github/workflows/editorconfig.yml+13−10 .github/workflows/labels.yml+1−6 .github/workflows/manual-nixos.yml+3−3 .github/workflows/manual-nixpkgs.yml+3−3 .github/workflows/nixos-manual.yml+2−2 .github/workflows/pending-set.yml−5 .github/workflows/periodic-merge-24h.yml+2−6 .github/workflows/periodic-merge-6h.yml+2−2 .github/workflows/update-terraform-providers.yml−48 .gitignore−6 .version+1−1 CONTRIBUTING.md+10−55 COPYING+1−1 README.md+5−10 doc/build-aux/pandoc-filters/link-unix-man-references.lua+2−1 doc/builders/fetchers.chapter.md+11−40 doc/builders/images/dockertools.section.md+8−14 doc/builders/images/ocitools.section.md+3−3 doc/builders/images/snaptools.section.md+1−1 doc/builders/packages/citrix.section.md+5−5 doc/builders/packages/eclipse.section.md+5−5 doc/builders/packages/elm.section.md+1−1 doc/builders/packages/emacs.section.md+3−3 doc/builders/packages/etc-files.section.md+4−4 doc/builders/packages/firefox.section.md+8−7 doc/builders/packages/fish.section.md+1−1 doc/builders/packages/fuse.section.md+2−2 doc/builders/packages/ibus.section.md+3−3 doc/builders/packages/linux.section.md+8−8 doc/builders/packages/locales.section.md+2−2 doc/builders/packages/nginx.section.md+2−2 doc/builders/packages/opengl.section.md+1−1 doc/builders/packages/shell-helpers.section.md+1−1 doc/builders/packages/steam.section.md+8−8 doc/builders/packages/urxvt.section.md+4−4 doc/builders/packages/weechat.section.md+5−5 doc/builders/special.xml+1 doc/builders/special/fhs-environments.section.md−2 doc/builders/special/invalidateFetcherByDrvHash.section.md+31 doc/builders/special/mkshell.section.md+6−26 doc/builders/testers.chapter.md−82 doc/builders/trivial-builders.chapter.md+3−105 doc/contributing/coding-conventions.chapter.md+8−9 doc/contributing/contributing-to-documentation.chapter.md+1−1 doc/contributing/reviewing-contributions.chapter.md+4−5 doc/contributing/submitting-changes.chapter.md+10−20 doc/functions/library/attrsets.xml+1−1 doc/hooks/index.xml−10 doc/hooks/postgresql-test-hook.section.md−59 doc/languages-frameworks/beam.section.md+8−33 doc/languages-frameworks/chicken.section.md−49 doc/languages-frameworks/coq.section.md+1−2 doc/languages-frameworks/cuda.section.md−34 doc/languages-frameworks/dotnet.section.md+7−27 doc/languages-frameworks/emscripten.section.md+2−2 doc/languages-frameworks/gnome.section.md+3−17 doc/languages-frameworks/go.section.md+6−6 doc/languages-frameworks/idris.section.md+4−1 doc/languages-frameworks/index.xml−2 doc/languages-frameworks/javascript.section.md+2−24 doc/languages-frameworks/lua.section.md+1−1 doc/languages-frameworks/ocaml.section.md+6−44 doc/languages-frameworks/octave.section.md+10−2 doc/languages-frameworks/perl.section.md+8−4 doc/languages-frameworks/python.section.md+5−53 doc/languages-frameworks/ruby.section.md−13 doc/languages-frameworks/rust.section.md+1−3 doc/languages-frameworks/texlive.section.md+1−1 doc/languages-frameworks/vim.section.md+6−9 doc/manual.xml−2 doc/stdenv/cross-compilation.chapter.md+10−35 doc/stdenv/meta.chapter.md+4−34 doc/stdenv/stdenv.chapter.md+10−86 doc/using/overlays.chapter.md+2−18 doc/using/overrides.chapter.md+2−6 flake.nix+50−8 lib/asserts.nix+12−10 lib/attrsets.nix+21−130 lib/customisation.nix+2−49 lib/default.nix+12−22 lib/flakes.nix−22 lib/generators.nix+2−47 lib/licenses.nix−30 lib/lists.nix+8−9 lib/meta.nix+1−42 lib/modules.nix+77−252 lib/options.nix+9−53 lib/sources.nix+48−67 lib/strings.nix+5−196 lib/systems/default.nix+1−2 lib/systems/doubles.nix+4−10 lib/systems/examples.nix−21 lib/systems/inspect.nix+1−8 lib/systems/parse.nix+2−9 lib/systems/platforms.nix+1−48 lib/systems/supported.nix+2−3 lib/tests/flakes/subflakeTest/flake.nix−8 lib/tests/flakes/subflakeTest/subflake/flake.nix−5 lib/tests/misc.nix+2−430 lib/tests/modules.sh+113−163 lib/tests/modules/adhoc-freeformType-survives-type-merge.nix−14 lib/tests/modules/declare-attrsOf.nix+1−8 lib/tests/modules/declare-bare-submodule-deep-option-duplicate.nix−10 lib/tests/modules/declare-bare-submodule-deep-option.nix−10 lib/tests/modules/declare-bare-submodule-nested-option.nix−19 lib/tests/modules/declare-bare-submodule.nix−18 lib/tests/modules/declare-set.nix−12 lib/tests/modules/declare-variants.nix−9 lib/tests/modules/define-bare-submodule-values.nix−4 lib/tests/modules/define-shorthandOnlyDefinesConfig-true.nix−1 lib/tests/modules/define-variant.nix−22 lib/tests/modules/emptyValues.nix−36 lib/tests/modules/extendModules-168767-imports.nix−41 lib/tests/modules/freeform-nested.nix+1−8 lib/tests/modules/freeform-submodules.nix−22 lib/tests/modules/optionTypeFile.nix−28 lib/tests/modules/optionTypeMerging.nix−27 lib/tests/modules/raw.nix−30 lib/tests/sources.sh+6−8 lib/tests/systems.nix+2−5 lib/trivial.nix+7−103 lib/types.nix+22−100 maintainers/maintainer-list.nix+156−1456 maintainers/scripts/check-maintainer-github-handles.sh+9−9 maintainers/scripts/dep-licenses.sh+1−1 maintainers/scripts/feature-freeze-teams.pl−98 maintainers/scripts/haskell/maintained-broken-pkgs.nix−22 maintainers/scripts/haskell/merge-and-open-pr.sh+1−1 maintainers/scripts/haskell/regenerate-hackage-packages.sh+1−1 maintainers/scripts/haskell/test-configurations.nix−136 maintainers/scripts/haskell/update-stackage.sh+12−25 maintainers/scripts/luarocks-packages.csv+4−5 maintainers/scripts/pluginupdate.py+165−284 maintainers/scripts/remove-old-aliases.py−211 maintainers/scripts/update-luarocks-packages+8−5 maintainers/scripts/update.nix+1−1 maintainers/scripts/update.py−4 maintainers/scripts/vanity.sh+19−19 maintainers/team-list.nix+4−410 nixos/default.nix+24−1 nixos/doc/manual/administration/declarative-containers.section.md+2−2 nixos/doc/manual/administration/imperative-containers.section.md+2−2 nixos/doc/manual/configuration/renaming-interfaces.section.md+1−1 nixos/doc/manual/default.nix+5−18 nixos/doc/manual/development/activation-script.section.md−72 nixos/doc/manual/development/building-nixos.chapter.md+46 nixos/doc/manual/development/development.xml+1−1 nixos/doc/manual/development/meta-attributes.section.md+1−27 nixos/doc/manual/development/option-declarations.section.md+16−91 nixos/doc/manual/development/option-types.section.md+4−29 nixos/doc/manual/development/running-nixos-tests-interactively.section.md+9−9 nixos/doc/manual/development/running-nixos-tests.section.md+2−2 nixos/doc/manual/development/settings-options.section.md−59 nixos/doc/manual/development/unit-handling.section.md−62 nixos/doc/manual/development/what-happens-during-a-system-switch.chapter.md−53 nixos/doc/manual/development/writing-modules.chapter.md−42 nixos/doc/manual/development/writing-nixos-tests.section.md+36−103 nixos/doc/manual/from_md/administration/declarative-containers.section.xml+3−3 nixos/doc/manual/from_md/administration/imperative-containers.section.xml+2−3 nixos/doc/manual/from_md/configuration/renaming-interfaces.section.xml+1−1 nixos/doc/manual/from_md/development/activation-script.section.xml−150 nixos/doc/manual/from_md/development/building-nixos.chapter.xml+72 nixos/doc/manual/from_md/development/meta-attributes.section.xml+2−42 nixos/doc/manual/from_md/development/option-declarations.section.xml+106−212 nixos/doc/manual/from_md/development/option-types.section.xml+5−56 nixos/doc/manual/from_md/development/running-nixos-tests-interactively.section.xml+9−9 nixos/doc/manual/from_md/development/running-nixos-tests.section.xml+2−2 nixos/doc/manual/from_md/development/settings-options.section.xml−136 nixos/doc/manual/from_md/development/unit-handling.section.xml−131 nixos/doc/manual/from_md/development/what-happens-during-a-system-switch.chapter.xml−122 nixos/doc/manual/from_md/development/writing-modules.chapter.xml−49 nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml+414−521 nixos/doc/manual/from_md/installation/building-nixos.chapter.xml−106 nixos/doc/manual/from_md/installation/installing-pxe.section.xml+2−2 nixos/doc/manual/from_md/installation/installing-usb.section.xml+1−1 nixos/doc/manual/from_md/installation/installing.chapter.xml+7−7 nixos/doc/manual/from_md/installation/upgrading.chapter.xml+8−8 nixos/doc/manual/from_md/release-notes/rl-1803.section.xml−8 nixos/doc/manual/from_md/release-notes/rl-2111.section.xml+27−169 nixos/doc/manual/from_md/release-notes/rl-2205.section.xml−2470 nixos/doc/manual/installation/building-nixos.chapter.md−77 nixos/doc/manual/installation/installation.xml−1 nixos/doc/manual/installation/installing-pxe.section.md+2−2 nixos/doc/manual/installation/installing-usb.section.md+1−1 nixos/doc/manual/installation/installing.chapter.md+5−5 nixos/doc/manual/installation/upgrading.chapter.md+8−8 nixos/doc/manual/man-nixos-install.xml+4−9 nixos/doc/manual/man-nixos-rebuild.xml+7−29 nixos/doc/manual/man-pages.xml+2−7 nixos/doc/manual/md-to-db.sh+1−1 nixos/doc/manual/release-notes/release-notes.xml−1 nixos/doc/manual/release-notes/rl-1803.section.md−2 nixos/doc/manual/release-notes/rl-2111.section.md+11−50 nixos/doc/manual/release-notes/rl-2205.section.md−878 nixos/lib/default.nix−33 nixos/lib/eval-cacheable-options.nix−53 nixos/lib/eval-config-minimal.nix−49 nixos/lib/eval-config.nix+16−54 nixos/lib/make-disk-image.nix+1−2 nixos/lib/make-iso9660-image.sh−1 nixos/lib/make-multi-disk-zfs-image.nix−333 nixos/lib/make-options-doc/default.nix+105−76 nixos/lib/make-options-doc/generateAsciiDoc.py−37 nixos/lib/make-options-doc/generateCommonMark.py−27 nixos/lib/make-options-doc/mergeJSON.py−95 nixos/lib/make-options-doc/options-to-docbook.xsl+2−2 nixos/lib/make-options-doc/optionsJSONtoXML.nix−6 nixos/lib/make-options-doc/sortXML.py+1 nixos/lib/make-single-disk-zfs-image.nix−322 nixos/lib/make-squashfs.nix+1−8 nixos/lib/make-zfs-image.nix+333 nixos/lib/qemu-common.nix+3−3 nixos/lib/systemd-lib.nix−426 nixos/lib/systemd-types.nix−69 nixos/lib/systemd-unit-options.nix−711 nixos/lib/test-driver/default.nix−32 nixos/lib/test-driver/setup.py−13 nixos/lib/test-driver/test-driver.py+1336 nixos/lib/test-driver/test_driver/__init__.py−128 nixos/lib/test-driver/test_driver/driver.py−226 nixos/lib/test-driver/test_driver/logger.py−105 nixos/lib/test-driver/test_driver/machine.py−1023 nixos/lib/test-driver/test_driver/polling_condition.py−77 nixos/lib/test-driver/test_driver/vlan.py−58 nixos/lib/testing-python.nix+83−36 nixos/lib/utils.nix+3−53 nixos/maintainers/scripts/azure-new/examples/basic/system.nix+1−1 nixos/maintainers/scripts/ec2/amazon-image.nix+1−1 nixos/maintainers/scripts/lxd/lxd-image.nix+1−1 nixos/maintainers/scripts/openstack/openstack-image-zfs.nix−101 nixos/maintainers/scripts/openstack/openstack-image.nix+8−9 nixos/modules/config/console.nix+9−23 nixos/modules/config/fonts/fontdir.nix−1 nixos/modules/config/fonts/fonts.nix+5 nixos/modules/config/gtk/gtk-icon-cache.nix−1 nixos/modules/config/i18n.nix−6 nixos/modules/config/malloc.nix+2−9 nixos/modules/config/networking.nix+4−8 nixos/modules/config/nsswitch.nix+4−7 nixos/modules/config/resolvconf.nix+4−2 nixos/modules/config/swap.nix+6−1 nixos/modules/config/system-path.nix+6−16 nixos/modules/config/terminfo.nix+1−25 nixos/modules/config/update-users-groups.pl+1−1 nixos/modules/config/users-groups.nix+13−39 nixos/modules/config/xdg/portal.nix+12−23 nixos/modules/hardware/all-firmware.nix+6−11 nixos/modules/hardware/cpu/intel-sgx.nix−69 nixos/modules/hardware/gpgsmartcards.nix−37 nixos/modules/hardware/hackrf.nix−23 nixos/modules/hardware/keyboard/zsa.nix+3 nixos/modules/hardware/network/b43.nix+4 nixos/modules/hardware/onlykey/onlykey.udev+2−2 nixos/modules/hardware/pcmcia.nix−1 nixos/modules/hardware/raid/hpsa.nix+1−4 nixos/modules/hardware/rtl-sdr.nix+4−8 nixos/modules/hardware/system-76.nix+2−6 nixos/modules/hardware/video/amdgpu-pro.nix+22−25 nixos/modules/hardware/video/capture/mwprocapture.nix+5 nixos/modules/hardware/video/hidpi.nix+1 nixos/modules/hardware/video/nvidia.nix+20−27 nixos/modules/hardware/video/webcam/facetimehd.nix+6−14 nixos/modules/hardware/xone.nix−23 nixos/modules/i18n/input-method/fcitx.nix−3 nixos/modules/i18n/input-method/fcitx5.nix+11−20 nixos/modules/i18n/input-method/ibus.nix−3 nixos/modules/i18n/input-method/kime.nix+1−3 nixos/modules/installer/cd-dvd/channel.nix+1−2 nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix+8−14 nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix−59 nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nix−49 nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix−20 nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix+5−3 nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix+3−1 nixos/modules/installer/cd-dvd/iso-image.nix+30−40 nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix+3−3 nixos/modules/installer/kexec/kexec-boot.nix−51 nixos/modules/installer/netboot/netboot.nix+1−3 nixos/modules/installer/sd-card/sd-image-aarch64.nix−15 nixos/modules/installer/sd-card/sd-image-riscv64-qemu-installer.nix−10 nixos/modules/installer/sd-card/sd-image-riscv64-qemu.nix−32 nixos/modules/installer/sd-card/sd-image-x86_64.nix−27 nixos/modules/installer/sd-card/sd-image.nix+1−1 nixos/modules/installer/tools/nix-fallback-paths.nix+5−5 nixos/modules/installer/tools/nixos-build-vms/build-vms.nix−3 nixos/modules/installer/tools/nixos-build-vms/nixos-build-vms.sh+3−4 nixos/modules/installer/tools/nixos-enter.sh+11−14 nixos/modules/installer/tools/nixos-generate-config.pl+6−24 nixos/modules/installer/tools/nixos-install.sh+18−19 nixos/modules/installer/tools/nixos-version.sh−1 nixos/modules/installer/tools/tools.nix+4−15 nixos/modules/installer/virtualbox-demo.nix+1−1 nixos/modules/misc/documentation.nix+59−122 nixos/modules/misc/extra-arguments.nix+2−2 nixos/modules/misc/ids.nix+8−14 nixos/modules/misc/locate.nix+66−116 nixos/modules/misc/man-db.nix−73 nixos/modules/misc/mandoc.nix−61 nixos/modules/misc/meta.nix+1−16 nixos/modules/misc/nixpkgs.nix−8 nixos/modules/misc/nixpkgs/test.nix−8 nixos/modules/misc/version.nix+19−52 nixos/modules/misc/wordlist.nix−59 nixos/modules/module-list.nix+25−87 nixos/modules/profiles/all-hardware.nix+2−5 nixos/modules/profiles/base.nix−1 nixos/modules/profiles/hardened.nix+1−1 nixos/modules/profiles/installation-device.nix−4 nixos/modules/profiles/minimal.nix−2 nixos/modules/profiles/qemu-guest.nix+2−2 nixos/modules/programs/_1password-gui.nix−68 nixos/modules/programs/_1password.nix−44 nixos/modules/programs/adb.nix+2−1 nixos/modules/programs/bcc.nix+3−3 nixos/modules/programs/calls.nix−2 nixos/modules/programs/captive-browser.nix+13−33 nixos/modules/programs/chromium.nix−11 nixos/modules/programs/command-not-found/command-not-found.pl+4−36 nixos/modules/programs/dconf.nix+1−1 nixos/modules/programs/environment.nix+1−3 nixos/modules/programs/firejail.nix+4−6 nixos/modules/programs/gnupg.nix−3 nixos/modules/programs/k3b.nix−52 nixos/modules/programs/k40-whisperer.nix−40 nixos/modules/programs/kclock.nix−13 nixos/modules/programs/mininet.nix+2−2 nixos/modules/programs/nbd.nix−19 nixos/modules/programs/nethoscope.nix−30 nixos/modules/programs/nix-ld.nix−12 nixos/modules/programs/nncp.nix−101 nixos/modules/programs/phosh.nix+10−9 nixos/modules/programs/qt5ct.nix+1−1 nixos/modules/programs/spacefm.nix+2 nixos/modules/programs/ssh.nix+14−67 nixos/modules/programs/ssmtp.nix+190 nixos/modules/programs/starship.nix−51 nixos/modules/programs/sway.nix+2−5 nixos/modules/programs/thefuck.nix+6−7 nixos/modules/programs/tilp2.nix+28 nixos/modules/programs/tmux.nix+1−14 nixos/modules/programs/tsm-client.nix+4−4 nixos/modules/programs/zsh/zsh-autosuggestions.nix+10−19 nixos/modules/programs/zsh/zsh.nix+1−3 nixos/modules/rename.nix+47−62 nixos/modules/security/acme.nix+820 nixos/modules/security/acme.xml+298 nixos/modules/security/acme/default.nix−921 nixos/modules/security/acme/doc.xml−413 nixos/modules/security/acme/mk-cert-ownership-assertion.nix−4 nixos/modules/security/dhparams.nix+2−4 nixos/modules/security/google_oslogin.nix+3−6 nixos/modules/security/misc.nix+2−2 nixos/modules/security/pam.nix+151−378 nixos/modules/security/pam_mount.nix+6−78 nixos/modules/security/polkit.nix+5−1 nixos/modules/security/sudo.nix+1−1 nixos/modules/security/systemd-confinement.nix+6−4 nixos/modules/security/wrappers/default.nix+3 nixos/modules/services/admin/pgadmin.nix−127 nixos/modules/services/audio/icecast.nix−1 nixos/modules/services/audio/jmusicbot.nix+1−8 nixos/modules/services/audio/mpd.nix+41−21 nixos/modules/services/audio/mpdscribble.nix+1−12 nixos/modules/services/audio/navidrome.nix+1−1 nixos/modules/services/audio/roon-server.nix+1−4 nixos/modules/services/audio/snapserver.nix+20−28 nixos/modules/services/audio/squeezelite.nix+21−17 nixos/modules/services/audio/ympd.nix−1 nixos/modules/services/backup/bacula.nix−3 nixos/modules/services/backup/borgbackup.nix+6−35 nixos/modules/services/backup/duplicati.nix+9−26 nixos/modules/services/backup/mysql-backup.nix+1−2 nixos/modules/services/backup/restic-rest-server.nix−4 nixos/modules/services/backup/restic.nix+2−2 nixos/modules/services/backup/sanoid.nix+1−4 nixos/modules/services/backup/tarsnap.nix+14−21 nixos/modules/services/backup/tsm.nix+14−33 nixos/modules/services/backup/zrepl.nix−3 nixos/modules/services/cluster/corosync/default.nix−112 nixos/modules/services/cluster/hadoop/conf.nix+11−11 nixos/modules/services/cluster/hadoop/default.nix+26−85 nixos/modules/services/cluster/hadoop/hdfs.nix+147−148 nixos/modules/services/cluster/hadoop/yarn.nix+13−85 nixos/modules/services/cluster/k3s/default.nix+5−1 nixos/modules/services/cluster/kubernetes/addon-manager.nix+1−2 nixos/modules/services/cluster/kubernetes/addons/dashboard.nix+332 nixos/modules/services/cluster/kubernetes/addons/dns.nix+1−7 nixos/modules/services/cluster/kubernetes/apiserver.nix+1−7 nixos/modules/services/cluster/kubernetes/controller-manager.nix+1−7 nixos/modules/services/cluster/kubernetes/default.nix+5−10 nixos/modules/services/cluster/kubernetes/flannel.nix−2 nixos/modules/services/cluster/kubernetes/kubelet.nix+3−9 nixos/modules/services/cluster/kubernetes/pki.nix+1−4 nixos/modules/services/cluster/kubernetes/proxy.nix+1−6 nixos/modules/services/cluster/kubernetes/scheduler.nix+3−7 nixos/modules/services/cluster/pacemaker/default.nix−52 nixos/modules/services/computing/slurm/slurm.nix+5−14 nixos/modules/services/continuous-integration/buildbot/master.nix+3−5 nixos/modules/services/continuous-integration/buildbot/worker.nix+1−3 nixos/modules/services/continuous-integration/github-runner.nix+34−46 nixos/modules/services/continuous-integration/gitlab-runner.nix+3−10 nixos/modules/services/continuous-integration/gocd-agent/default.nix+1−11 nixos/modules/services/continuous-integration/gocd-server/default.nix+1−16 nixos/modules/services/continuous-integration/hercules-ci-agent/common.nix+11−66 nixos/modules/services/continuous-integration/hercules-ci-agent/default.nix+4−4 nixos/modules/services/continuous-integration/hydra/default.nix+12−16 nixos/modules/services/continuous-integration/jenkins/slave.nix+1−15 nixos/modules/services/databases/clickhouse.nix+4−13 nixos/modules/services/databases/cockroachdb.nix+29−37 nixos/modules/services/databases/couchdb.nix+4−22 nixos/modules/services/databases/hbase.nix+15−38 nixos/modules/services/databases/influxdb2.nix+4−17 nixos/modules/services/databases/mysql.nix+195−185 nixos/modules/services/databases/neo4j.nix−8 nixos/modules/services/databases/postgresql.nix+3−5 nixos/modules/services/databases/postgresql.xml+32−54 nixos/modules/services/databases/redis.nix+221−274 nixos/modules/services/databases/virtuoso.nix+99 nixos/modules/services/desktops/flatpak.nix−2 nixos/modules/services/desktops/gnome/glib-networking.nix+1−1 nixos/modules/services/desktops/gnome/gnome-settings-daemon.nix+18−4 nixos/modules/services/desktops/gnome/tracker-miners.nix−2 nixos/modules/services/desktops/gnome/tracker.nix+1−24 nixos/modules/services/desktops/gvfs.nix+2−2 nixos/modules/services/desktops/pantheon/files.nix+13 nixos/modules/services/desktops/pipewire/daemon/client-rt.conf.json+1−1 nixos/modules/services/desktops/pipewire/daemon/minimal.conf.json−118 nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json+10−68 nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json+2−5 nixos/modules/services/desktops/pipewire/pipewire-media-session.nix+7−19 nixos/modules/services/desktops/pipewire/pipewire.nix+4−66 nixos/modules/services/desktops/pipewire/wireplumber.nix−54 nixos/modules/services/development/hoogle.nix−1 nixos/modules/services/development/jupyter/default.nix−1 nixos/modules/services/development/rstudio-server/default.nix−107 nixos/modules/services/development/zammad.nix−323 nixos/modules/services/editors/haste.nix−86 nixos/modules/services/games/asf.nix−236 nixos/modules/services/games/factorio.nix+2−11 nixos/modules/services/games/minecraft-server.nix+1−22 nixos/modules/services/games/quake3-server.nix−1 nixos/modules/services/games/terraria.nix+2−3 nixos/modules/services/hardware/bluetooth.nix+4 nixos/modules/services/hardware/ddccontrol.nix−3 nixos/modules/services/hardware/joycond.nix+6−2 nixos/modules/services/hardware/rasdaemon.nix+1 nixos/modules/services/hardware/spacenavd.nix+1 nixos/modules/services/hardware/tcsd.nix+1−5 nixos/modules/services/hardware/thermald.nix+1−3 nixos/modules/services/hardware/thinkfan.nix+2−2 nixos/modules/services/hardware/triggerhappy.nix+1−1 nixos/modules/services/hardware/udev.nix+24−127 nixos/modules/services/hardware/udisks2.nix−41 nixos/modules/services/hardware/undervolt.nix+3−1 nixos/modules/services/hardware/upower.nix+6−6 nixos/modules/services/hardware/usbrelayd.nix−44 nixos/modules/services/home-automation/home-assistant.nix−552 nixos/modules/services/logging/filebeat.nix−253 nixos/modules/services/logging/graylog.nix+1−1 nixos/modules/services/logging/journalbeat.nix+16−3 nixos/modules/services/logging/journalwatch.nix−1 nixos/modules/services/logging/klogd.nix+34−6 nixos/modules/services/logging/logrotate.nix+32−266 nixos/modules/services/logging/logstash.nix−13 nixos/modules/services/logging/promtail.nix+1−1 nixos/modules/services/mail/dovecot.nix+42−16 nixos/modules/services/mail/maddy.nix−273 nixos/modules/services/mail/mailman.nix+7−14 nixos/modules/services/mail/opendkim.nix−1 nixos/modules/services/mail/postfix.nix+17−22 nixos/modules/services/mail/postfixadmin.nix+1−1 nixos/modules/services/mail/roundcube.nix+1−1 nixos/modules/services/mail/rspamd.nix+2−3 nixos/modules/services/matrix/matrix-synapse.nix−773 nixos/modules/services/matrix/mjolnir.nix−2 nixos/modules/services/matrix/mjolnir.xml+2−2 nixos/modules/services/misc/airsonic.nix+5−8 nixos/modules/services/misc/ananicy.nix+1−1 nixos/modules/services/misc/autorandr.nix+2−309 nixos/modules/services/misc/bees.nix−3 nixos/modules/services/misc/couchpotato.nix+42 nixos/modules/services/misc/dendrite.nix+8−100 nixos/modules/services/misc/dysnomia.nix−6 nixos/modules/services/misc/etcd.nix+1−9 nixos/modules/services/misc/etebase-server.nix+1−1 nixos/modules/services/misc/ethminer.nix+4−4 nixos/modules/services/misc/exhibitor.nix+1−4 nixos/modules/services/misc/gitea.nix+19−38 nixos/modules/services/misc/gitit.nix+1−1 nixos/modules/services/misc/gitlab.nix+29−43 nixos/modules/services/misc/gitweb.nix−1 nixos/modules/services/misc/gogs.nix+1−4 nixos/modules/services/misc/gollum.nix−1 nixos/modules/services/misc/headphones.nix+1−3 nixos/modules/services/misc/heisenbridge.nix−222 nixos/modules/services/misc/home-assistant.nix+404 nixos/modules/services/misc/input-remapper.nix−30 nixos/modules/services/misc/jellyfin.nix+3−5 nixos/modules/services/misc/matrix-appservice-discord.nix+1−6 nixos/modules/services/misc/matrix-appservice-irc.nix−3 nixos/modules/services/misc/matrix-conduit.nix−149 nixos/modules/services/matrix/matrix-synapse-log_config.yaml → nixos/modules/services/misc/matrix-synapse-log_config.yaml nixos/modules/services/misc/matrix-synapse.nix+788 nixos/modules/services/matrix/matrix-synapse.xml → nixos/modules/services/misc/matrix-synapse.xml+17−18 nixos/modules/services/misc/mautrix-telegram.nix+1−4 nixos/modules/services/misc/mbpfan.nix+60−58 nixos/modules/services/misc/mediatomb.nix+5−7 nixos/modules/services/misc/moonraker.nix+1−44 nixos/modules/services/misc/mwlib.nix+258 nixos/modules/services/misc/mx-puppet-discord.nix+6−8 nixos/modules/services/misc/n8n.nix−1 nixos/modules/services/misc/nitter.nix+5−12 nixos/modules/services/misc/nix-daemon.nix+298−487 nixos/modules/services/misc/nix-gc.nix+3−9 nixos/modules/services/misc/nix-optimise.nix+2−8 nixos/modules/services/misc/nix-ssh-serve.nix+1−1 nixos/modules/services/misc/packagekit.nix+2−4 nixos/modules/services/misc/paperless-ng.nix+308 nixos/modules/services/misc/paperless.nix−320 nixos/modules/services/misc/plex.nix+13−42 nixos/modules/services/misc/rippled.nix+1−5 nixos/modules/services/misc/rmfakecloud.nix−147 nixos/modules/services/misc/sickbeard.nix+1−3 nixos/modules/services/misc/sourcehut/builds.nix+2−4 nixos/modules/services/misc/sourcehut/default.nix+133−1321 nixos/modules/services/misc/sourcehut/dispatch.nix+1−3 nixos/modules/services/misc/sourcehut/git.nix+2−4 nixos/modules/services/misc/sourcehut/hg.nix+1−3 nixos/modules/services/misc/sourcehut/hub.nix+1−3 nixos/modules/services/misc/sourcehut/lists.nix+1−3 nixos/modules/services/misc/sourcehut/man.nix+1−3 nixos/modules/services/misc/sourcehut/meta.nix+1−3 nixos/modules/services/misc/sourcehut/paste.nix+1−3 nixos/modules/services/misc/sourcehut/service.nix+61−370 nixos/modules/services/misc/sourcehut/sourcehut.xml+10−14 nixos/modules/services/misc/sourcehut/todo.nix+1−3 nixos/modules/services/misc/subsonic.nix+3−6 nixos/modules/services/misc/taskserver/default.nix+10−15 nixos/modules/services/misc/taskserver/doc.xml+1−1 nixos/modules/services/misc/taskserver/helper-tool.py+5−5 nixos/modules/services/misc/xmrig.nix+3−8 nixos/modules/services/home-automation/zigbee2mqtt.nix → nixos/modules/services/misc/zigbee2mqtt.nix+7−4 nixos/modules/services/misc/zoneminder.nix+3−3 nixos/modules/services/misc/zookeeper.nix+1−8 nixos/modules/services/monitoring/cadvisor.nix−2 nixos/modules/services/monitoring/collectd.nix+25−53 nixos/modules/services/monitoring/grafana.nix−6 nixos/modules/services/monitoring/graphite.nix+1−12 nixos/modules/services/monitoring/mimir.nix−63 nixos/modules/services/monitoring/nagios.nix+2−3 nixos/modules/services/monitoring/netdata.nix+2−38 nixos/modules/services/monitoring/parsedmarc.nix+1−6 nixos/modules/services/monitoring/prometheus/default.nix+9−9 nixos/modules/services/monitoring/prometheus/exporters.nix−3 nixos/modules/services/monitoring/prometheus/exporters.xml−21 nixos/modules/services/monitoring/prometheus/exporters/bird.nix+1−1 nixos/modules/services/monitoring/prometheus/exporters/dmarc.nix−117 nixos/modules/services/monitoring/prometheus/exporters/fastly.nix+3−3 nixos/modules/services/monitoring/prometheus/exporters/kea.nix−4 nixos/modules/services/monitoring/prometheus/exporters/nginx.nix+5−5 nixos/modules/services/monitoring/prometheus/exporters/postfix.nix−3 nixos/modules/services/monitoring/prometheus/exporters/pve.nix−118 nixos/modules/services/monitoring/prometheus/exporters/smartctl.nix−75 nixos/modules/services/monitoring/prometheus/exporters/systemd.nix+1−1 nixos/modules/services/monitoring/prometheus/exporters/varnish.nix+2−3 nixos/modules/services/monitoring/smartd.nix+1−6 nixos/modules/services/monitoring/thanos.nix−3 nixos/modules/services/monitoring/uptime.nix+3−7 nixos/modules/services/monitoring/zabbix-proxy.nix+1−7 nixos/modules/services/monitoring/zabbix-server.nix+2−13 nixos/modules/services/network-filesystems/ceph.nix+2−2 nixos/modules/services/network-filesystems/drbd.nix+7−5 nixos/modules/services/network-filesystems/glusterfs.nix+1−1 nixos/modules/services/network-filesystems/ipfs.nix+31−41 nixos/modules/services/network-filesystems/moosefs.nix−249 nixos/modules/services/network-filesystems/openafs/server.nix+1−1 nixos/modules/services/network-filesystems/rsyncd.nix+1−1 nixos/modules/services/network-filesystems/samba.nix−1 nixos/modules/services/network-filesystems/webdav-server-rs.nix−144 nixos/modules/services/network-filesystems/webdav.nix−107 nixos/modules/services/networking/adguardhome.nix+5−67 nixos/modules/services/networking/amuled.nix+2−6 nixos/modules/services/networking/asterisk.nix+43−11 nixos/modules/services/networking/bind.nix+1−10 nixos/modules/services/networking/bird.nix+75−90 nixos/modules/services/networking/blocky.nix−40 nixos/modules/services/networking/charybdis.nix+1−8 nixos/modules/services/networking/cloudflare-dyndns.nix−93 nixos/modules/services/networking/connman.nix+2−2 nixos/modules/services/networking/consul.nix+7−35 nixos/modules/services/networking/coturn.nix−1 nixos/modules/services/networking/create_ap.nix−50 nixos/modules/services/networking/croc.nix+1−1 nixos/modules/services/networking/ddclient.nix+6−10 nixos/modules/services/networking/dhcpcd.nix+1−22 nixos/modules/services/networking/dhcpd.nix+52−49 nixos/modules/services/networking/dnscrypt-proxy2.nix−3 nixos/modules/services/networking/dnscrypt-wrapper.nix−1 nixos/modules/services/networking/envoy.nix−84 nixos/modules/services/networking/ergo.nix+2−4 nixos/modules/services/networking/ergochat.nix−155 nixos/modules/services/networking/eternal-terminal.nix+2−2 nixos/modules/services/networking/firefox/sync-server.nix+183 nixos/modules/services/networking/firewall.nix+7−2 nixos/modules/services/networking/flannel.nix−3 nixos/modules/services/networking/freeradius.nix−2 nixos/modules/services/networking/frr.nix−211 nixos/modules/services/networking/gogoclient.nix+87 nixos/modules/services/networking/headscale.nix−490 nixos/modules/services/networking/https-dns-proxy.nix−128 nixos/modules/services/networking/hylafax/options.nix+9−7 nixos/modules/services/networking/i2pd.nix+9−16 nixos/modules/services/networking/iwd.nix+6−15 nixos/modules/services/networking/jibri/default.nix+1−1 nixos/modules/services/networking/jitsi-videobridge.nix−2 nixos/modules/services/networking/kea.nix+9−81 nixos/modules/services/networking/knot.nix+7−42 nixos/modules/services/networking/kresd.nix+4−5 nixos/modules/services/networking/lxd-image-server.nix+12−7 nixos/modules/services/networking/mailpile.nix+74 nixos/modules/services/networking/monero.nix+1−1 nixos/modules/services/networking/mosquitto.nix+3−12 nixos/modules/services/networking/mozillavpn.nix−19 nixos/modules/services/networking/mtr-exporter.nix−87 nixos/modules/services/networking/multipath.nix+15 nixos/modules/services/networking/murmur.nix+2−2 nixos/modules/services/networking/nbd.nix−159 nixos/modules/services/networking/ncdns.nix+2−3 nixos/modules/services/networking/networkmanager.nix+53−73 nixos/modules/services/networking/nftables.nix+12−4 nixos/modules/services/networking/nix-serve.nix+5−19 nixos/modules/services/networking/nomad.nix+3−16 nixos/modules/services/networking/nsd.nix+12−9 nixos/modules/services/networking/ntopng.nix+13−57 nixos/modules/services/networking/ntp/chrony.nix−1 nixos/modules/services/networking/ntp/ntpd.nix−1 nixos/modules/services/networking/ntp/openntpd.nix−1 nixos/modules/services/networking/openconnect.nix−137 nixos/modules/services/networking/openfire.nix+56 nixos/modules/services/networking/pdns-recursor.nix+7−12 nixos/modules/services/networking/pleroma.nix+3−10 nixos/modules/services/networking/powerdns.nix+2−2 nixos/modules/services/networking/prosody.nix−1 nixos/modules/services/networking/prosody.xml+1−1 nixos/modules/services/networking/quassel.nix+1−5 nixos/modules/services/networking/quorum.nix+1−3 nixos/modules/services/networking/racoon.nix+45 nixos/modules/services/networking/radicale.nix−1 nixos/modules/services/networking/resilio.nix−1 nixos/modules/services/networking/sabnzbd.nix+1−8 nixos/modules/services/networking/seafile.nix+17−14 nixos/modules/services/networking/searx.nix+1 nixos/modules/services/networking/shairport-sync.nix+2−29 nixos/modules/services/networking/shellhub-agent.nix+17−26 nixos/modules/services/networking/skydns.nix−1 nixos/modules/services/networking/smokeping.nix−6 nixos/modules/services/networking/sniproxy.nix+15−4 nixos/modules/services/networking/snowflake-proxy.nix−81 nixos/modules/services/networking/soju.nix−1 nixos/modules/services/networking/squid.nix+4−23 nixos/modules/services/networking/ssh/sshd.nix+4−8 nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix−10 nixos/modules/services/networking/stubby.nix+174−46 nixos/modules/services/networking/stunnel.nix+2−2 nixos/modules/services/networking/supplicant.nix+1−1 nixos/modules/services/networking/syncplay.nix+2−18 nixos/modules/services/networking/syncthing.nix+4−24 nixos/modules/services/networking/tailscale.nix+1−9 nixos/modules/services/networking/teleport.nix−99 nixos/modules/services/networking/tetrd.nix−96 nixos/modules/services/networking/thelounge.nix+7−38 nixos/modules/services/networking/tinc.nix+1−1 nixos/modules/services/networking/tox-node.nix+6−1 nixos/modules/services/networking/unbound.nix−1 nixos/modules/services/networking/unifi.nix+3−8 nixos/modules/services/networking/vsftpd.nix−1 nixos/modules/services/networking/wasabibackend.nix+2−4 nixos/modules/services/networking/wg-netmanager.nix−42 nixos/modules/services/networking/wg-quick.nix+1−8 nixos/modules/services/networking/wireguard.nix+1−3 nixos/modules/services/networking/wpa_supplicant.nix+4−49 nixos/modules/services/networking/xrdp.nix+2−8 nixos/modules/services/networking/yggdrasil.xml+1 nixos/modules/services/networking/zeronet.nix+1−1 nixos/modules/services/search/elasticsearch.nix+1−15 nixos/modules/services/search/kibana.nix+1−5 nixos/modules/services/security/aesmd.nix−236 nixos/modules/services/security/cfssl.nix+41−54 nixos/modules/services/security/clamav.nix+5−4 nixos/modules/services/security/fprot.nix+82 nixos/modules/services/security/haveged.nix+29−39 nixos/modules/services/security/oauth2_proxy.nix+4−9 nixos/modules/services/security/oauth2_proxy_nginx.nix−1 nixos/modules/services/security/opensnitch.nix+1−102 nixos/modules/services/security/privacyidea.nix+1−6 nixos/modules/services/security/sslmate-agent.nix−32 nixos/modules/services/security/step-ca.nix−11 nixos/modules/services/security/tor.nix+4−24 nixos/modules/services/security/torsocks.nix−1 nixos/modules/services/security/vault.nix+1−7 nixos/modules/services/security/vaultwarden/default.nix+3−6 nixos/modules/services/system/cachix-agent/default.nix−57 nixos/modules/services/system/cloud-init.nix+1−15 nixos/modules/services/system/earlyoom.nix+97−133 nixos/modules/services/system/nscd.nix+9−20 nixos/modules/services/system/self-deploy.nix+2−3 nixos/modules/services/system/systembus-notify.nix−27 nixos/modules/services/torrent/peerflix.nix+1−3 nixos/modules/services/torrent/rtorrent.nix+1−3 nixos/modules/services/torrent/transmission.nix+16−32 nixos/modules/services/ttys/getty.nix+13−2 nixos/modules/services/ttys/kmscon.nix+5−24 nixos/modules/services/video/epgstation/default.nix+165−183 nixos/modules/services/video/epgstation/streaming.json+108−129 nixos/modules/services/video/mirakurun.nix+1−1 nixos/modules/services/video/rtsp-simple-server.nix−80 nixos/modules/services/video/unifi-video.nix+82−88 nixos/modules/services/wayland/cage.nix−4 nixos/modules/services/web-apps/atlassian/jira.nix−1 nixos/modules/services/web-apps/baget.nix−170 nixos/modules/services/web-apps/bookstack.nix+63−142 nixos/modules/services/web-apps/dex.nix−3 nixos/modules/services/web-apps/discourse.nix+9−22 nixos/modules/services/web-apps/discourse.xml+2−2 nixos/modules/services/web-apps/dokuwiki.nix+37−26 nixos/modules/services/web-apps/ethercalc.nix−62 nixos/modules/services/web-apps/galene.nix+1−34 nixos/modules/services/web-apps/gerrit.nix−2 nixos/modules/services/web-apps/hedgedoc.nix+1−1 nixos/modules/services/web-apps/ihatemoney/default.nix−1 nixos/modules/services/web-apps/invidious.nix+1−2 nixos/modules/services/web-apps/invoiceplane.nix−305 nixos/modules/services/web-apps/jirafeau.nix+1−4 nixos/modules/services/web-apps/jitsi-meet.nix+1−1 nixos/modules/services/web-apps/jitsi-meet.xml+2−2 nixos/modules/services/web-apps/keycloak.nix+600−546 nixos/modules/services/web-apps/keycloak.xml+69−65 nixos/modules/services/web-apps/mastodon.nix+1−4 nixos/modules/services/web-apps/matomo.nix+6−9 nixos/modules/services/web-apps/mattermost.nix+37−145 nixos/modules/services/web-apps/miniflux.nix+29−26 nixos/modules/services/web-apps/moinmoin.nix+304 nixos/modules/services/web-apps/moodle.nix+1−1 nixos/modules/services/web-apps/netbox.nix−265 nixos/modules/services/web-apps/nextcloud.nix+25−101 nixos/modules/services/web-apps/nextcloud.xml+1−1 nixos/modules/services/web-apps/nifi.nix−318 nixos/modules/services/web-apps/openwebrx.nix−1 nixos/modules/services/web-apps/peertube.nix+2−30 nixos/modules/services/web-apps/pgpkeyserver-lite.nix+1−4 nixos/modules/services/web-apps/plantuml-server.nix+3−18 nixos/modules/services/web-apps/plausible.nix+8−7 nixos/modules/services/web-apps/powerdns-admin.nix−152 nixos/modules/services/web-apps/prosody-filer.nix−86 nixos/modules/services/web-apps/restya-board.nix+1−1 nixos/modules/services/web-apps/rss-bridge.nix+1−1 nixos/modules/services/web-apps/timetagger.nix−80 nixos/modules/services/web-apps/trac.nix+79 nixos/modules/services/web-apps/tt-rss.nix+4−4 nixos/modules/services/web-apps/wordpress.nix+41−31 nixos/modules/services/web-apps/youtrack.nix−1 nixos/modules/services/web-apps/zabbix.nix+1−7 nixos/modules/services/web-servers/agate.nix−148 nixos/modules/services/web-servers/apache-httpd/default.nix+17−25 nixos/modules/services/web-servers/apache-httpd/vhost-options.nix+2−5 nixos/modules/services/web-servers/caddy/default.nix+127−247 nixos/modules/services/web-servers/caddy/vhost-options.nix+10−61 nixos/modules/services/web-servers/hydron.nix+1−1 nixos/modules/services/web-servers/lighttpd/collectd.nix+1−5 nixos/modules/services/web-servers/nginx/default.nix+23−75 nixos/modules/services/web-servers/nginx/gitweb.nix+1−1 nixos/modules/services/web-servers/nginx/location-options.nix+1−1 nixos/modules/services/web-servers/nginx/vhost-options.nix+6−29 nixos/modules/services/web-servers/pomerium.nix+3−7 nixos/modules/services/web-servers/shellinabox.nix+122 nixos/modules/services/web-servers/tomcat.nix+3−4 nixos/modules/services/web-servers/uwsgi.nix+10−8 nixos/modules/services/web-servers/varnish/default.nix−1 nixos/modules/services/x11/desktop-managers/cinnamon.nix+5−12 nixos/modules/services/x11/desktop-managers/default.nix+1−1 nixos/modules/services/x11/desktop-managers/enlightenment.nix−6 nixos/modules/services/x11/desktop-managers/gnome.nix+69−44 nixos/modules/services/x11/desktop-managers/gnome.xml+24 nixos/modules/services/x11/desktop-managers/lumina.nix+6−4 nixos/modules/services/x11/desktop-managers/lxqt.nix+2−11 nixos/modules/services/x11/desktop-managers/mate.nix+37−9 nixos/modules/services/x11/desktop-managers/none.nix+5−44 nixos/modules/services/x11/desktop-managers/pantheon.nix+12−16 nixos/modules/services/x11/desktop-managers/pantheon.xml+5−5 nixos/modules/services/x11/desktop-managers/plasma5.nix+40−196 nixos/modules/services/x11/desktop-managers/retroarch.nix−40 nixos/modules/services/x11/desktop-managers/xfce.nix+2−9 nixos/modules/services/x11/display-managers/default.nix+4−11 nixos/modules/services/x11/display-managers/gdm.nix+25−4 nixos/modules/services/x11/display-managers/lightdm.nix+1−3 nixos/modules/services/x11/display-managers/startx.nix+3 nixos/modules/services/x11/display-managers/sx.nix+5 nixos/modules/services/x11/hardware/libinput.nix+5−10 nixos/modules/services/x11/hardware/synaptics.nix+1−6 nixos/modules/services/x11/picom.nix+2−12 nixos/modules/services/x11/window-managers/qtile.nix+4−11 nixos/modules/services/x11/window-managers/xmonad.nix+11−47 nixos/modules/services/x11/xserver.nix+13−31 nixos/modules/system/activation/activation-script.nix+1−3 nixos/modules/system/activation/switch-to-configuration.pl+343−642 nixos/modules/system/activation/top-level.nix+31−80 nixos/modules/system/boot/binfmt.nix+8−49 nixos/modules/system/boot/kernel.nix+3−3 nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix+1−18 nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh+3−9 nixos/modules/system/boot/loader/grub/grub.nix−27 nixos/modules/system/boot/loader/grub/install-grub.pl+91−93 nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py+38−48 nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix+2−135 nixos/modules/system/boot/luksroot.nix+7−74 nixos/modules/system/boot/modprobe.nix−2 nixos/modules/system/boot/networkd.nix+6−285 nixos/modules/system/boot/plymouth.nix+1−7 nixos/modules/system/boot/resolved.nix−1 nixos/modules/system/boot/stage-1-init.sh+39−40 nixos/modules/system/boot/stage-1.nix+18−40 nixos/modules/system/boot/stage-2-init.sh+97−66 nixos/modules/system/boot/stage-2.nix+39−2 nixos/modules/system/boot/systemd-lib.nix+237 nixos/modules/system/boot/systemd-nspawn.nix+133 nixos/modules/system/boot/systemd-unit-options.nix+536 nixos/modules/system/boot/systemd.nix+676−72 nixos/modules/system/boot/systemd/coredump.nix−57 nixos/modules/system/boot/systemd/initrd-secrets.nix−36 nixos/modules/system/boot/systemd/initrd.nix−502 nixos/modules/system/boot/systemd/journald.nix−131 nixos/modules/system/boot/systemd/logind.nix−114 nixos/modules/system/boot/systemd/nspawn.nix−131 nixos/modules/system/boot/systemd/shutdown.nix−58 nixos/modules/system/boot/systemd/tmpfiles.nix−120 nixos/modules/system/boot/systemd/user.nix−153 nixos/modules/system/boot/timesyncd.nix+5−19 nixos/modules/system/boot/tmp.nix+1−6 nixos/modules/system/build.nix−21 nixos/modules/system/etc/etc-activation.nix−12 nixos/modules/system/etc/etc.nix+3−3 nixos/modules/system/etc/test.nix−70 nixos/modules/tasks/auto-upgrade.nix+20−105 nixos/modules/tasks/bcache.nix+6−16 nixos/modules/tasks/filesystems.nix+2−31 nixos/modules/tasks/filesystems/apfs.nix−22 nixos/modules/tasks/filesystems/btrfs.nix+3−3 nixos/modules/tasks/filesystems/cifs.nix+1−1 nixos/modules/tasks/filesystems/ext.nix+4−10 nixos/modules/tasks/filesystems/f2fs.nix+1−1 nixos/modules/tasks/filesystems/jfs.nix+1−1 nixos/modules/tasks/filesystems/reiserfs.nix+1−1 nixos/modules/tasks/filesystems/unionfs-fuse.nix+2−13 nixos/modules/tasks/filesystems/vfat.nix+1−1 nixos/modules/tasks/filesystems/xfs.nix+2−2 nixos/modules/tasks/filesystems/zfs.nix+34−13 nixos/modules/tasks/lvm.nix+6−55 nixos/modules/tasks/network-interfaces-scripted.nix−30 nixos/modules/tasks/network-interfaces-systemd.nix+1−84 nixos/modules/tasks/network-interfaces.nix+22−120 nixos/modules/tasks/snapraid.nix+2−2 nixos/modules/tasks/swraid.nix+9−35 nixos/modules/testing/test-instrumentation.nix+26−23 nixos/modules/virtualisation/amazon-ec2-amis.nix−444 nixos/modules/virtualisation/amazon-image.nix+1−6 nixos/modules/virtualisation/amazon-options.nix+1−2 nixos/modules/virtualisation/azure-agent.nix+10−6 nixos/modules/virtualisation/azure-common.nix+1−5 nixos/modules/virtualisation/build-vm.nix−58 nixos/modules/virtualisation/container-config.nix+1−1 nixos/modules/virtualisation/containerd.nix−1 nixos/modules/virtualisation/cri-o.nix−4 nixos/modules/virtualisation/docker-rootless.nix−102 nixos/modules/virtualisation/docker.nix+7−30 nixos/modules/virtualisation/ec2-amis.nix+371−9 nixos/modules/virtualisation/fetch-instance-ssh-keys.bash+36 nixos/modules/virtualisation/google-compute-config.nix+103−32 nixos/modules/virtualisation/kubevirt.nix−30 nixos/modules/virtualisation/kvmgt.nix+1−1 nixos/modules/virtualisation/libvirtd.nix−4 nixos/modules/virtualisation/nixos-containers.nix+13−28 nixos/modules/virtualisation/oci-containers.nix+10−8 nixos/modules/virtualisation/openstack-config.nix+7−39 nixos/modules/virtualisation/openstack-metadata-fetcher.nix+4−5 nixos/modules/virtualisation/openstack-options.nix−71 nixos/modules/virtualisation/openvswitch.nix+53−8 nixos/modules/virtualisation/podman/dnsname.nix → nixos/modules/virtualisation/podman-dnsname.nix nixos/modules/virtualisation/podman/network-socket-ghostunnel.nix → nixos/modules/virtualisation/podman-network-socket-ghostunnel.nix nixos/modules/virtualisation/podman-network-socket.nix+91 nixos/modules/virtualisation/podman.nix+184 nixos/modules/virtualisation/podman/default.nix−187 nixos/modules/virtualisation/podman/network-socket.nix−95 nixos/modules/virtualisation/proxmox-lxc.nix−64 nixos/modules/virtualisation/qemu-vm.nix+11−64 nixos/modules/virtualisation/virtualbox-guest.nix+2−2 nixos/modules/virtualisation/vmware-guest.nix+3−5 nixos/modules/virtualisation/vmware-host.nix−166 nixos/modules/virtualisation/waydroid.nix+3−12 nixos/modules/virtualisation/xen-dom0.nix+1 nixos/release-combined.nix+2−4 nixos/release-small.nix+2−4 nixos/release.nix+2−2 nixos/tests/acme.nix+210−366 nixos/tests/adguardhome.nix−57 nixos/tests/aesmd.nix−62 nixos/tests/agda.nix+1−1 nixos/tests/airsonic.nix+5−1 nixos/tests/all-terminfo.nix−31 nixos/tests/all-tests.nix+24−128 nixos/tests/amazon-init-shell.nix+1−1 nixos/tests/apfs.nix−54 nixos/tests/apparmor.nix+1−1 nixos/tests/atd.nix+1−1 nixos/tests/atop.nix+14−6 nixos/tests/avahi.nix+1−1 nixos/tests/bcachefs.nix+9−8 nixos/tests/beanstalkd.nix+1−1 nixos/tests/bees.nix+1−1 nixos/tests/bind.nix+1−1 nixos/tests/bird.nix−129 nixos/tests/bitcoind.nix+1−1 nixos/tests/blockbook-frontend.nix+1−1 nixos/tests/blocky.nix−34 nixos/tests/boot-stage1.nix+1−3 nixos/tests/boot.nix+5−40 nixos/tests/borgbackup.nix+1−1 nixos/tests/botamusique.nix−4 nixos/tests/bpf.nix−29 nixos/tests/breitbandmessung.nix−33 nixos/tests/brscan5.nix+1−2 nixos/tests/btrbk.nix+1−1 nixos/tests/buildkite-agents.nix+1−1 nixos/tests/caddy.nix+3−3 nixos/tests/cage.nix+2−1 nixos/tests/cagebreak.nix+2−1 nixos/tests/cassandra.nix+1 nixos/tests/ceph-multi-node.nix+2−1 nixos/tests/ceph-single-node-bluestore.nix+1 nixos/tests/ceph-single-node.nix+1 nixos/tests/cfssl.nix+1−1 nixos/tests/chromium.nix+18−20 nixos/tests/clickhouse.nix+1−1 nixos/tests/cloud-init.nix+2−27 nixos/tests/cntr.nix+5−17 nixos/tests/collectd.nix−38 nixos/tests/common/acme/client/default.nix+2−4 nixos/tests/common/acme/server/default.nix−5 nixos/tests/common/lxd/config.yaml−24 nixos/tests/common/wayland-cage.nix−13 nixos/tests/containers-bridge.nix+2−1 nixos/tests/containers-custom-pkgs.nix+1−1 nixos/tests/containers-ephemeral.nix+5−4 nixos/tests/containers-extra_veth.nix+2−1 nixos/tests/containers-hosts.nix+2−1 nixos/tests/containers-imperative.nix+10−9 nixos/tests/containers-ip.nix+2−1 nixos/tests/containers-macvlans.nix+2 nixos/tests/containers-names.nix+1−1 nixos/tests/containers-nested.nix+1−1 nixos/tests/containers-physical_interfaces.nix+4 nixos/tests/containers-portforward.nix+2−1 nixos/tests/containers-tmpfs.nix+7−6 nixos/tests/couchdb.nix−3 nixos/tests/cri-o.nix+1−1 nixos/tests/custom-ca.nix+89−104 nixos/tests/disable-installer-tools.nix+1−1 nixos/tests/dnsdist.nix−48 nixos/tests/doas.nix+1−1 nixos/tests/docker-rootless.nix−41 nixos/tests/docker-tools-cross.nix+2−2 nixos/tests/docker-tools.nix+5−28 nixos/tests/documize.nix+1−1 nixos/tests/doh-proxy-rust.nix+1−1 nixos/tests/domination.nix+1−1 nixos/tests/dovecot.nix+1−1 nixos/tests/drbd.nix−87 nixos/tests/earlyoom.nix−16 nixos/tests/ecryptfs.nix+1−1 nixos/tests/elk.nix+21−69 nixos/tests/emacs-daemon.nix+2−2 nixos/tests/empty-file nixos/tests/enlightenment.nix+2−1 nixos/tests/env.nix+1−1 nixos/tests/envoy.nix−33 nixos/tests/ergochat.nix−97 nixos/tests/etebase-server.nix+1−1 nixos/tests/etesync-dav.nix+1−1 nixos/tests/fancontrol.nix+1−1 nixos/tests/fcitx/default.nix+2−1 nixos/tests/fenics.nix+2−1 nixos/tests/firefox.nix+4−1 nixos/tests/fish.nix+1−1 nixos/tests/fluentd.nix+1−1 nixos/tests/fontconfig-default-fonts.nix+1−1 nixos/tests/frr.nix−104 nixos/tests/fsck.nix+1−1 nixos/tests/ft2-clone.nix+1−1 nixos/tests/gerrit.nix+1 nixos/tests/geth.nix+2−2 nixos/tests/gitlab.nix+21−300 nixos/tests/gitolite-fcgiwrap.nix+2−2 nixos/tests/gnome-xorg.nix+2−2 nixos/tests/gnome.nix+2−2 nixos/tests/google-oslogin/default.nix+2−2 nixos/tests/google-oslogin/server.nix+4−2 nixos/tests/google-oslogin/server.py nixos/tests/gotify-server.nix+1−1 nixos/tests/graphite.nix+1 nixos/tests/graylog.nix+1−1 nixos/tests/grocy.nix+1−1 nixos/tests/grub.nix+1−1 nixos/tests/hadoop/default.nix−7 nixos/tests/hadoop/hadoop.nix+125−150 nixos/tests/hadoop/hdfs.nix+19−43 nixos/tests/hadoop/yarn.nix+13−21 nixos/tests/handbrake.nix+33 nixos/tests/haproxy.nix+1 nixos/tests/hardened.nix+2−2 nixos/tests/haste-server.nix−23 nixos/tests/hbase.nix−30 nixos/tests/herbstluftwm.nix+1−1 nixos/tests/hibernate.nix+5−16 nixos/tests/hitch/default.nix+1−1 nixos/tests/hocker-fetchdocker/default.nix+1−1 nixos/tests/hockeypuck.nix+1−1 nixos/tests/home-assistant.nix+35−85 nixos/tests/hostname.nix+1−1 nixos/tests/hound.nix+1−1 nixos/tests/hydra/common.nix+1−1 nixos/tests/hydra/default.nix+2−2 nixos/tests/i3wm.nix+1−1 nixos/tests/ihatemoney/default.nix+1−1 nixos/tests/incron.nix+1−1 nixos/tests/initrd-network.nix+1−1 nixos/tests/initrd-secrets.nix+3−9 nixos/tests/input-remapper.nix−52 nixos/tests/installed-tests/appstream-qt.nix−9 nixos/tests/installed-tests/appstream.nix−9 nixos/tests/installed-tests/default.nix+1−3 nixos/tests/installed-tests/flatpak.nix−1 nixos/tests/installed-tests/fwupd.nix+1 nixos/tests/installed-tests/gjs.nix−6 nixos/tests/installer-systemd-stage-1.nix−33 nixos/tests/installer.nix+32−38 nixos/tests/invidious.nix+1−1 nixos/tests/invoiceplane.nix−82 nixos/tests/ipfs.nix−5 nixos/tests/iscsi-multipath-root.nix+5−5 nixos/tests/iscsi-root.nix+5−5 nixos/tests/isso.nix+1−1 nixos/tests/jellyfin.nix+1−1 nixos/tests/jenkins.nix−2 nixos/tests/jibri.nix+2−2 nixos/tests/jitsi-meet.nix+3−2 nixos/tests/k3s-single-node-docker.nix−84 nixos/tests/k3s-single-node.nix−82 nixos/tests/k3s.nix+78 nixos/tests/kafka.nix+1 nixos/tests/kbd-setfont-decompress.nix+1−1 nixos/tests/kbd-update-search-paths-patch.nix+1−1 nixos/tests/keepassxc.nix+9−43 nixos/tests/kerberos/heimdal.nix+1−1 nixos/tests/kerberos/mit.nix+1−1 nixos/tests/kernel-generic.nix+1−2 nixos/tests/kernel-latest-ath-user-regd.nix+1−1 nixos/tests/kexec.nix+16−44 nixos/tests/keycloak.nix+14−33 nixos/tests/knot.nix−6 nixos/tests/krb5/deprecated-config.nix+1−1 nixos/tests/krb5/example-config.nix+1−1 nixos/tests/ksm.nix+1−1 nixos/tests/kubernetes/base.nix+10−2 nixos/tests/kubernetes/default.nix+1−1 nixos/tests/kubernetes/dns.nix+3−3 nixos/tests/kubernetes/e2e.nix+1−1 nixos/tests/kubernetes/rbac.nix+9−9 nixos/tests/libinput.nix−38 nixos/tests/libresprite.nix−30 nixos/tests/libreswan.nix+2−2 nixos/tests/lightdm.nix+1−1 nixos/tests/limesurvey.nix+1−1 nixos/tests/litestream.nix+1−1 nixos/tests/login.nix+1−1 nixos/tests/logrotate.nix−152 nixos/tests/loki.nix+1−1 nixos/tests/lorri/default.nix+2−2 nixos/tests/lvm2/default.nix−45 nixos/tests/lvm2/systemd-stage-1.nix−104 nixos/tests/lvm2/thinpool.nix−32 nixos/tests/lvm2/vdo.nix−27 nixos/tests/lxd-image-server.nix+49−16 nixos/tests/lxd-image.nix+91 nixos/tests/lxd-nftables.nix+1−1 nixos/tests/lxd.nix+64−41 nixos/tests/maddy.nix−58 nixos/tests/maestral.nix−72 nixos/tests/magnetico.nix+1−1 nixos/tests/mailcatcher.nix+3−8 nixos/tests/mailhog.nix+1−1 nixos/tests/man.nix−100 nixos/tests/matomo.nix+1−1 nixos/tests/matrix-appservice-irc.nix+21−28 nixos/tests/matrix-conduit.nix−95 nixos/tests/matrix-synapse.nix+18−46 nixos/tests/matrix/mjolnir.nix+19−24 nixos/tests/matrix/pantalaimon.nix+4−27 nixos/tests/mattermost.nix−124 nixos/tests/mediawiki.nix+1−1 nixos/tests/meilisearch.nix+1−1 nixos/tests/memcached.nix+1−1 nixos/tests/metabase.nix+1 nixos/tests/minidlna.nix+2−4 nixos/tests/miniflux.nix+6−18 nixos/tests/misc.nix+4−4 nixos/tests/mod_perl.nix+1−1 nixos/tests/moinmoin.nix+28 nixos/tests/mongodb.nix−4 nixos/tests/moodle.nix+1−1 nixos/tests/moonraker.nix−45 nixos/tests/moosefs.nix−89 nixos/tests/mpd.nix+1−1 nixos/tests/mtp.nix−109 nixos/tests/musescore.nix+1−1 nixos/tests/mysql/common.nix−10 nixos/tests/mysql/mariadb-galera-mariabackup.nix+233 nixos/tests/mysql/mariadb-galera-rsync.nix+226 nixos/tests/mysql/mariadb-galera.nix−250 nixos/tests/mysql/mysql-autobackup.nix+33−48 nixos/tests/mysql/mysql-backup.nix+44−60 nixos/tests/mysql/mysql-replication.nix+74−84 nixos/tests/mysql/mysql.nix+210−134 nixos/tests/nagios.nix+1−1 nixos/tests/nano.nix+44 nixos/tests/nar-serve.nix+1−1 nixos/tests/nats.nix+13−11 nixos/tests/navidrome.nix+1−1 nixos/tests/nbd.nix−103 nixos/tests/ncdns.nix+9−6 nixos/tests/networking-proxy.nix+1 nixos/tests/networking.nix+10−134 nixos/tests/nextcloud/default.nix+5−5 nixos/tests/nextcloud/with-mysql-and-memcached.nix+21−1 nixos/tests/nginx-etag.nix+1 nixos/tests/nginx-modsecurity.nix−39 nixos/tests/nginx-pubhtml.nix+1−1 nixos/tests/nginx-sandbox.nix+1−1 nixos/tests/nginx-sso.nix+1−1 nixos/tests/nginx-variants.nix+1−1 nixos/tests/nix-ld.nix−20 nixos/tests/nix-serve-ssh.nix−45 nixos/tests/nix-serve.nix+1−1 nixos/tests/nix-ssh-serve.nix+45 nixos/tests/nixops/default.nix+4−3 nixos/tests/nixops/legacy/base-configuration.nix+1−1 nixos/tests/nixos-generate-config.nix+1−1 nixos/tests/noto-fonts.nix−44 nixos/tests/novacomd.nix+1−1 nixos/tests/oh-my-zsh.nix+1−1 nixos/tests/openldap.nix+3−3 nixos/tests/opensmtpd-rspamd.nix+1 nixos/tests/openssh.nix+6−12 nixos/tests/opentabletdriver.nix+1−1 nixos/tests/os-prober.nix+9−9 nixos/tests/osrm-backend.nix+1−1 nixos/tests/overlayfs.nix+1−1 nixos/tests/pacemaker.nix−110 nixos/tests/packagekit.nix+1−1 nixos/tests/pam/pam-oath-login.nix → nixos/tests/pam-oath-login.nix+3−3 nixos/tests/pam/pam-u2f.nix → nixos/tests/pam-u2f.nix+2−2 nixos/tests/pam/pam-file-contents.nix−25 nixos/tests/pam/pam-ussh.nix−70 nixos/tests/pam/test_chfn.py−27 nixos/tests/pantheon.nix+2−1 nixos/tests/paperless-ng.nix+46 nixos/tests/paperless.nix−44 nixos/tests/parsedmarc/default.nix+8−19 nixos/tests/pdns-recursor.nix+1−4 nixos/tests/pgadmin4-standalone.nix−43 nixos/tests/pgadmin4.nix−132 nixos/tests/php/fpm.nix+2−2 nixos/tests/php/httpd.nix+1−1 nixos/tests/php/pcre.nix+1−1 nixos/tests/pict-rs.nix+1−1 nixos/tests/plasma5-systemd-start.nix+2−1 nixos/tests/plasma5.nix+2−1 nixos/tests/plausible.nix+1−4 nixos/tests/pleroma.nix+19−2 nixos/tests/plikd.nix+1−1 nixos/tests/plotinus.nix+1−1 nixos/tests/podman-dnsname.nix+42 nixos/tests/podman-tls-ghostunnel.nix+150 nixos/tests/podman.nix+144 nixos/tests/podman/default.nix−144 nixos/tests/podman/dnsname.nix−42 nixos/tests/podman/tls-ghostunnel.nix−150 nixos/tests/postfix-raise-smtpd-tls-security-level.nix+1−1 nixos/tests/postfix.nix+1−1 nixos/tests/postgresql-wal-receiver.nix+1−1 nixos/tests/postgresql.nix+1−1 nixos/tests/power-profiles-daemon.nix+1−1 nixos/tests/powerdns-admin.nix−117 nixos/tests/powerdns.nix−1 nixos/tests/predictable-interface-names.nix+1−1 nixos/tests/privacyidea.nix+2−1 nixos/tests/privoxy.nix+1−1 nixos/tests/prometheus-exporters.nix+4−67 nixos/tests/prometheus.nix+1 nixos/tests/pt2-clone.nix+1−1 nixos/tests/pulseaudio.nix−71 nixos/tests/qboot.nix+1−1 nixos/tests/quorum.nix+9−32 nixos/tests/rabbitmq.nix+1−1 nixos/tests/radicale.nix+1−1 nixos/tests/rasdaemon.nix+1−1 nixos/tests/redis.nix+17−19 nixos/tests/redmine.nix+1−1 nixos/tests/restart-by-activation-script.nix+1−1 nixos/tests/retroarch.nix−49 nixos/tests/riak.nix+1−1 nixos/tests/rspamd.nix+10−5 nixos/tests/rstudio-server.nix−24 nixos/tests/rsyslogd.nix+2−2 nixos/tests/sabnzbd.nix−22 nixos/tests/samba-wsdd.nix+1−1 nixos/tests/sddm.nix+2−2 nixos/tests/seafile.nix+2 nixos/tests/sfxr-qt.nix−32 nixos/tests/shattered-pixel-dungeon.nix+1−1 nixos/tests/shiori.nix+2−1 nixos/tests/signal-desktop.nix+2−1 nixos/tests/simple.nix+1−1 nixos/tests/snapcast.nix−9 nixos/tests/snapper.nix+1−1 nixos/tests/soapui.nix+1−1 nixos/tests/solr.nix+1−1 nixos/tests/sourcehut.nix+10−193 nixos/tests/spark/default.nix+1 nixos/tests/ssh-keys.nix+1−1 nixos/tests/sssd-ldap.nix+1−1 nixos/tests/sssd.nix+1−1 nixos/tests/starship.nix−42 nixos/tests/step-ca.nix−77 nixos/tests/sudo.nix+1−5 nixos/tests/sway.nix+26−51 nixos/tests/switch-test.nix+167−797 nixos/tests/sympa.nix+2−1 nixos/tests/syncthing-init.nix+1−1 nixos/tests/syncthing-relay.nix+1−1 nixos/tests/systemd-analyze.nix+1−1 nixos/tests/systemd-binfmt.nix+20−86 nixos/tests/systemd-boot.nix+6−147 nixos/tests/systemd-confinement.nix+4−27 nixos/tests/systemd-cryptenroll.nix+2−1 nixos/tests/systemd-escaping.nix−45 nixos/tests/systemd-initrd-btrfs-raid.nix−45 nixos/tests/systemd-initrd-luks-keyfile.nix−53 nixos/tests/systemd-initrd-luks-password.nix−48 nixos/tests/systemd-initrd-simple.nix−44 nixos/tests/systemd-initrd-swraid.nix−50 nixos/tests/systemd-journal.nix+1−1 nixos/tests/systemd-machinectl.nix−85 nixos/tests/systemd-misc.nix−62 nixos/tests/systemd-networkd-dhcpserver-static-leases.nix−81 nixos/tests/systemd-networkd-ipv6-prefix-delegation.nix+14−5 nixos/tests/systemd-networkd-vrf.nix−2 nixos/tests/systemd-networkd.nix−10 nixos/tests/systemd-shutdown.nix−26 nixos/tests/systemd-unit-path.nix+47 nixos/tests/systemd.nix+2−17 nixos/tests/taskserver.nix−1 nixos/tests/teeworlds.nix+2−2 nixos/tests/telegraf.nix+1−1 nixos/tests/teleport.nix−99 nixos/tests/terminal-emulators.nix−207 nixos/tests/thelounge.nix−29 nixos/tests/tinywl.nix−57 nixos/tests/tomcat.nix−21 nixos/tests/tor.nix+15−10 nixos/tests/trac.nix+19 nixos/tests/transmission.nix+1−1 nixos/tests/tsm-client-gui.nix−57 nixos/tests/tuptime.nix+1−1 nixos/tests/turbovnc-headless-server.nix+1−1 nixos/tests/tuxguitar.nix+1−1 nixos/tests/txredisapi.nix+4−6 nixos/tests/udisks2.nix+1−1 nixos/tests/unifi.nix−36 nixos/tests/usbguard.nix+1−1 nixos/tests/user-activation-scripts.nix+1−1 nixos/tests/uwsgi.nix+1−1 nixos/tests/v2ray.nix+1−1 nixos/tests/vault-postgresql.nix+3−2 nixos/tests/vault.nix+2−1 nixos/tests/vaultwarden.nix+2 nixos/tests/vector.nix+1−1 nixos/tests/vengi-tools.nix−29 nixos/tests/virtualbox.nix+1−1 nixos/tests/vscodium.nix+35−66 nixos/tests/vsftpd.nix−42 nixos/tests/web-apps/mastodon.nix−170 nixos/tests/web-apps/netbox.nix−30 nixos/tests/web-apps/nifi.nix−30 nixos/tests/web-apps/peertube.nix+2−6 nixos/tests/web-servers/agate.nix−29 nixos/tests/web-servers/unit-php.nix+1−1 nixos/tests/wiki-js.nix+1−1 nixos/tests/wine.nix+6−13 nixos/tests/without-nix.nix+6−15 nixos/tests/wmderland.nix+1−1 nixos/tests/wordpress.nix+6−3 nixos/tests/wpa_supplicant.nix+3−18 nixos/tests/xfce.nix+2−1 nixos/tests/xmonad-xdg-autostart.nix−35 nixos/tests/xmonad.nix+17−84 nixos/tests/xmpp/prosody-mysql.nix+33−65 nixos/tests/xmpp/prosody.nix−1 nixos/tests/xmpp/xmpp-sendmessage.nix+4−1 nixos/tests/xterm.nix+1−1 nixos/tests/xxh.nix−67 nixos/tests/yabar.nix+1−1 nixos/tests/zammad.nix−60 nixos/tests/zfs.nix+1−51 nixos/tests/zigbee2mqtt.nix+1−1 nixos/tests/zoneminder.nix+1−1 nixos/tests/zrepl.nix−66 pkgs/applications/accessibility/contrast/default.nix+14−14 pkgs/applications/accessibility/espeakup/default.nix−46 pkgs/applications/accessibility/squeekboard/default.nix+15−8 pkgs/applications/accessibility/svkbd/default.nix+2−2 pkgs/applications/accessibility/wvkbd/default.nix−36 pkgs/applications/audio/CHOWTapeModel/default.nix+32−40 pkgs/applications/audio/ChowCentaur/default.nix−53 pkgs/applications/audio/ChowKick/default.nix+2−2 pkgs/applications/audio/ChowPhaser/default.nix−76 pkgs/applications/audio/LibreArp/default.nix−53 pkgs/applications/audio/LibreArp/lv2.nix−53 pkgs/applications/audio/airwave/default.nix+2−2 pkgs/applications/audio/aj-snapshot/default.nix+3−2 pkgs/applications/audio/amberol/default.nix−75 pkgs/applications/audio/ams/default.nix+1−1 pkgs/applications/audio/ardour/default.nix+1−1 pkgs/applications/audio/ashuffle/default.nix+2−2 pkgs/applications/audio/audacious/default.nix+4−6 pkgs/applications/audio/audacity/default.nix+59−99 pkgs/applications/audio/audio-recorder/default.nix+1−1 pkgs/applications/audio/aumix/default.nix−11 pkgs/applications/audio/bespokesynth/default.nix+85−114 pkgs/applications/audio/bitwig-studio/bitwig-studio2.nix+1−1 pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix+2−2 pkgs/applications/audio/blanket/default.nix+7−7 pkgs/applications/audio/bucklespring/default.nix+3−3 pkgs/applications/audio/cadence/default.nix+38−48 pkgs/applications/audio/callaudiod/default.nix+3−5 pkgs/applications/audio/cantata/default.nix+2−2 pkgs/applications/audio/cardinal/default.nix−67 pkgs/applications/audio/carla/default.nix+3−3 pkgs/applications/audio/caudec/default.nix+10−6 pkgs/applications/audio/cider/default.nix−30 pkgs/applications/audio/clementine/default.nix+10−3 pkgs/applications/audio/clerk/default.nix+6−19 pkgs/applications/audio/cmt/default.nix+2−2 pkgs/applications/audio/cmus/default.nix+2−2 pkgs/applications/audio/cmusfm/default.nix+10−16 pkgs/applications/audio/cozy/default.nix+2−2 pkgs/applications/audio/csound/default.nix+4−4 pkgs/applications/audio/cyanrip/default.nix+3−3 pkgs/applications/audio/deadbeef/default.nix+1 pkgs/applications/audio/denemo/default.nix+2−2 pkgs/applications/audio/dfasma/default.nix+1−1 pkgs/applications/audio/dragonfly-reverb/default.nix+2−2 pkgs/applications/audio/easyeffects/default.nix+8−10 pkgs/applications/audio/espeak-ng/default.nix−4 pkgs/applications/audio/eteroj.lv2/default.nix+23 pkgs/applications/audio/faust/faust2.nix+2−2 pkgs/applications/audio/faust/faustlive.nix+12−9 pkgs/applications/audio/faustPhysicalModeling/default.nix+2−2 pkgs/applications/audio/flac/default.nix+10−2 pkgs/applications/audio/fluidsynth/default.nix+4−4 pkgs/applications/audio/fomp/default.nix+4−4 pkgs/applications/audio/foo-yc20/default.nix+29 pkgs/applications/audio/freac/default.nix+2−2 pkgs/applications/audio/freewheeling/default.nix+2−2 pkgs/applications/audio/friture/default.nix+12−3 pkgs/applications/audio/ft2-clone/default.nix+2−2 pkgs/applications/audio/furnace/default.nix−100 pkgs/applications/audio/game-music-emu/default.nix+1−1 pkgs/applications/audio/geonkick/default.nix+2−2 pkgs/applications/audio/gigedit/default.nix+3−20 pkgs/applications/audio/gmu/default.nix+1−19 pkgs/applications/audio/gnome-podcasts/default.nix+3−15 pkgs/applications/audio/goattracker/default.nix+3−2 pkgs/applications/audio/gpodder/default.nix+4−9 pkgs/applications/audio/gpodder/disable-autoupdate.patch+29−8 pkgs/applications/audio/greg/default.nix+3−3 pkgs/applications/audio/gspeech/default.nix+2−2 pkgs/applications/audio/gtklick/default.nix+34 pkgs/applications/audio/gtkpod/default.nix+4−5 pkgs/applications/audio/guitarix/default.nix−2 pkgs/applications/audio/helio-workstation/default.nix+5−5 pkgs/applications/audio/helvum/default.nix+23−36 pkgs/applications/audio/hivelytracker/default.nix+1−1 pkgs/applications/audio/hqplayer-desktop/default.nix−1 pkgs/applications/audio/hybridreverb2/default.nix+10−45 pkgs/applications/audio/hydrogen/0.nix+6−28 pkgs/applications/audio/hydrogen/default.nix+2−2 pkgs/applications/audio/indicator-sound-switcher/default.nix−62 pkgs/applications/audio/industrializer/default.nix+3−1 pkgs/applications/audio/jacktrip/default.nix−61 pkgs/applications/audio/jamesdsp/default.nix−95 pkgs/applications/audio/jamin/default.nix+1−1 pkgs/applications/audio/jamulus/default.nix+2−2 pkgs/applications/audio/japa/default.nix+2−2 pkgs/applications/audio/jellycli/default.nix−33 pkgs/applications/audio/jellycli/fix-test-dir.patch−13 pkgs/applications/audio/jmusicbot/default.nix+3−3 pkgs/applications/audio/kid3/default.nix+2−2 pkgs/applications/audio/ladspa-plugins/default.nix+7−17 pkgs/applications/audio/lastfmsubmitd/default.nix+21 pkgs/applications/audio/libopenmpt/default.nix+32 pkgs/applications/audio/librespot/default.nix+13−8 pkgs/applications/audio/linuxband/default.nix+37 pkgs/applications/audio/lmms/default.nix+1−1 pkgs/applications/audio/lollypop/default.nix+2−2 pkgs/applications/audio/losslessaudiochecker/default.nix−29 pkgs/applications/audio/lsp-plugins/default.nix+2−2 pkgs/applications/audio/lv2lint/default.nix−22 pkgs/applications/audio/lyrebird/default.nix+2−2 pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix+1−1 pkgs/applications/audio/mbrola/default.nix−3 pkgs/applications/audio/meters_lv2/default.nix+36−43 pkgs/applications/audio/mi2ly/default.nix+25−16 pkgs/applications/audio/mi2ly/default.upstream+3 pkgs/applications/audio/mid2key/default.nix+4−7 pkgs/applications/audio/midas/generic.nix+5−4 pkgs/applications/audio/milkytracker/default.nix+2−8 pkgs/applications/audio/mimms/default.nix+31 pkgs/applications/audio/miniaudicle/default.nix+2−2 pkgs/applications/audio/mixxx/default.nix+3−3 pkgs/applications/audio/moc/default.nix+3−5 pkgs/applications/audio/mod-arpeggiator-lv2/default.nix−26 pkgs/applications/audio/molot-lite/default.nix+4−5 pkgs/applications/audio/mopidy/default.nix−4 pkgs/applications/audio/mopidy/iris.nix+2−2 pkgs/applications/audio/mopidy/jellyfin.nix−25 pkgs/applications/audio/mopidy/mopidy.nix+3−3 pkgs/applications/audio/mopidy/muse.nix−29 pkgs/applications/audio/mopidy/youtube.nix+5−6 pkgs/applications/audio/mopidy/ytmusic.nix+2−11 pkgs/applications/audio/mp3blaster/default.nix+1−11 pkgs/applications/audio/mpc/default.nix+13−41 pkgs/applications/audio/mpg123/default.nix+2−2 pkgs/applications/audio/munt/default.nix+50 pkgs/applications/audio/munt/libmt32emu.nix−38 pkgs/applications/audio/munt/mt32emu-qt.nix−75 pkgs/applications/audio/munt/mt32emu-smf2wav.nix−50 pkgs/applications/audio/musescore/darwin.nix+1 pkgs/applications/audio/musescore/default.nix+5−4 pkgs/applications/audio/musikcube/default.nix+4−19 pkgs/applications/audio/ncmpc/default.nix+2−2 pkgs/applications/audio/ncspot/default.nix+7−7 pkgs/applications/audio/netease-cloud-music-gtk/default.nix+1 pkgs/applications/audio/netease-music-tui/default.nix+3−3 pkgs/applications/audio/new-session-manager/default.nix+3−3 pkgs/applications/audio/noise-repellent/default.nix+9−11 pkgs/applications/audio/noisetorch/default.nix+1−1 pkgs/applications/audio/non/default.nix+7−7 pkgs/applications/audio/ocenaudio/default.nix+3−3 pkgs/applications/audio/odin2/default.nix−79 pkgs/applications/audio/open-music-kontrollers/eteroj.nix−10 pkgs/applications/audio/open-music-kontrollers/generic.nix−37 pkgs/applications/audio/open-music-kontrollers/jit.nix−12 pkgs/applications/audio/open-music-kontrollers/mephisto.nix−17 pkgs/applications/audio/open-music-kontrollers/midi_matrix.nix−10 pkgs/applications/audio/open-music-kontrollers/moony.nix−13 pkgs/applications/audio/open-music-kontrollers/orbit.nix−12 pkgs/applications/audio/open-music-kontrollers/patchmatrix.nix−13 pkgs/applications/audio/open-music-kontrollers/router.nix−11 pkgs/applications/audio/open-music-kontrollers/sherlock.nix−12 pkgs/applications/audio/open-music-kontrollers/synthpod.nix−13 pkgs/applications/audio/open-music-kontrollers/vm.nix−10 pkgs/applications/audio/orca-c/default.nix−3 pkgs/applications/audio/osdlyrics/default.nix−87 pkgs/applications/audio/padthv1/default.nix+2−2 pkgs/applications/audio/pamix/default.nix+1−15 pkgs/applications/audio/paprefs/default.nix+2−2 pkgs/applications/audio/parlatype/default.nix+68 pkgs/applications/audio/patchage/default.nix+11−33 pkgs/applications/audio/pd-plugins/zexy/default.nix+1−2 pkgs/applications/audio/pianobar/default.nix+2−2 pkgs/applications/audio/picard/default.nix+2−5 pkgs/applications/audio/pifi/Gemfile+2 pkgs/applications/audio/pifi/Gemfile.lock+39 pkgs/applications/audio/pifi/default.nix+18 pkgs/applications/audio/pifi/gemset.nix+137 pkgs/applications/audio/pipecontrol/default.nix−50 pkgs/applications/audio/pithos/default.nix+2−2 pkgs/applications/audio/plexamp/default.nix+3−3 pkgs/applications/audio/plujain-ramp/default.nix+1−1 pkgs/applications/audio/praat/default.nix+2−2 pkgs/applications/audio/psst/default.nix−39 pkgs/applications/audio/pt2-clone/default.nix+2−2 pkgs/applications/audio/ptcollab/default.nix+4−13 pkgs/applications/audio/puddletag/default.nix+9−46 pkgs/applications/audio/pulseaudio-ctl/default.nix+2−2 pkgs/applications/audio/pulseaudio-dlna/0001-setup.py-remove-dbus-python-from-list.patch−25 pkgs/applications/audio/pulseaudio-dlna/default.nix+33−54 pkgs/applications/audio/pulseaudio-modules-bt/default.nix+91 pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch+11 pkgs/applications/audio/pyradio/default.nix+3−9 pkgs/applications/audio/qjackctl/default.nix+2−2 pkgs/applications/audio/qmidiarp/default.nix+2−2 pkgs/applications/audio/qmmp/default.nix+1 pkgs/applications/audio/qpwgraph/default.nix−34 pkgs/applications/audio/qtractor/default.nix+2−2 pkgs/applications/audio/r128gain/default.nix+8−2 pkgs/applications/audio/reaper/default.nix+4−4 pkgs/applications/audio/redux/default.nix−49 pkgs/applications/audio/rhvoice/default.nix+2−2 pkgs/applications/audio/rhythmbox/default.nix−10 pkgs/applications/audio/rofi-pulse-select/default.nix−40 pkgs/applications/audio/roomeqwizard/default.nix−118 pkgs/applications/audio/rubyripper/default.nix+11−23 pkgs/applications/audio/schismtracker/default.nix+4−6 pkgs/applications/audio/scream/default.nix+2−2 pkgs/applications/audio/setbfree/default.nix+5−7 pkgs/applications/audio/sfizz/default.nix+12−15 pkgs/applications/audio/sfxr-qt/default.nix+3−29 pkgs/applications/audio/sfxr-qt/test-export-square-wave/default.nix−6 pkgs/applications/audio/sfxr-qt/test-export-square-wave/input.sfxj−29 pkgs/applications/audio/shortwave/default.nix+11−9 pkgs/applications/audio/sidplayfp/default.nix+2−2 pkgs/applications/audio/sisco.lv2/default.nix+2−2 pkgs/applications/audio/snapcast/default.nix+2−2 pkgs/applications/audio/snd/default.nix+2−2 pkgs/applications/audio/songrec/default.nix+4−5 pkgs/applications/audio/sonic-pi/default.nix+41−59 pkgs/applications/audio/sonixd/default.nix−27 pkgs/applications/audio/sony-headphones-client/default.nix−44 pkgs/applications/audio/sorcer/default.nix+2−2 pkgs/applications/audio/sound-juicer/default.nix−10 pkgs/applications/audio/soundconverter/default.nix−85 pkgs/applications/audio/soundkonverter/default.nix+1−1 pkgs/applications/audio/soundscape-renderer/default.nix+11−13 pkgs/applications/audio/soundwireserver/default.nix−40 pkgs/applications/audio/spectmorph/default.nix+1−1 pkgs/applications/audio/split2flac/default.nix+2−2 pkgs/applications/audio/spot/default.nix+3−3 pkgs/applications/audio/spotify-qt/default.nix+2−2 pkgs/applications/audio/spotify-tui/default.nix−1 pkgs/applications/audio/spotify/default.nix+5−5 pkgs/applications/audio/spotifyd/default.nix+9−10 pkgs/applications/audio/sptlrx/default.nix−24 pkgs/applications/audio/squeezelite/default.nix+30−48 pkgs/applications/audio/squishyball/default.nix+11−21 pkgs/applications/audio/strawberry/default.nix+2−6 pkgs/applications/audio/sunvox/default.nix+3−3 pkgs/applications/audio/surge-XT/default.nix+11−71 pkgs/applications/audio/swh-lv2/default.nix+4−6 pkgs/applications/audio/synaesthesia/default.nix−33 pkgs/applications/audio/tauon/default.nix+5−17 pkgs/applications/audio/tenacity/default.nix+2−2 pkgs/applications/audio/termusic/default.nix−28 pkgs/applications/audio/timemachine/default.nix+2−2 pkgs/applications/audio/tonelib-gfx/default.nix+3−3 pkgs/applications/audio/tonelib-jam/default.nix+3−3 pkgs/applications/audio/tonelib-metal/default.nix−60 pkgs/applications/audio/transcribe/default.nix+13−50 pkgs/applications/audio/vgmstream/default.nix+12−21 pkgs/applications/audio/vgmstream/update.sh−77 pkgs/applications/audio/vimpc/default.nix−11 pkgs/applications/audio/viper4linux-gui/default.nix−82 pkgs/applications/audio/viper4linux/default.nix−61 pkgs/applications/audio/vmpk/default.nix+2−2 pkgs/applications/audio/vocal/default.nix+1−7 pkgs/applications/audio/wavegain/default.nix+1−12 pkgs/applications/audio/whipper/default.nix−8 pkgs/applications/audio/x42-plugins/default.nix+2−2 pkgs/applications/audio/xsynth-dssi/default.nix+1−2 pkgs/applications/audio/yoshimi/default.nix+18−49 pkgs/applications/audio/zrythm/default.nix+15−20 pkgs/applications/audio/zynaddsubfx/default.nix−13 pkgs/applications/backup/deja-dup/default.nix+10−10 pkgs/applications/backup/deja-dup/fix-paths.patch+3−3 pkgs/applications/backup/pika-backup/default.nix−9 pkgs/applications/backup/vorta/default.nix+3−2 pkgs/applications/blockchains/aeon/default.nix+2−2 pkgs/applications/blockchains/alfis/default.nix+12−23 pkgs/applications/blockchains/besu/default.nix−29 pkgs/applications/blockchains/bisq-desktop/default.nix+5−4 pkgs/applications/blockchains/bitcoin-classic/default.nix+1−1 pkgs/applications/blockchains/bitcoin-knots/default.nix+27−69 pkgs/applications/blockchains/bitcoin-unlimited/default.nix+1−1 pkgs/applications/blockchains/bitcoin/default.nix+4−4 pkgs/applications/blockchains/btcpayserver/default.nix+12−6 pkgs/applications/blockchains/btcpayserver/deps.nix+684−649 pkgs/applications/blockchains/cgminer/default.nix+2−2 pkgs/applications/blockchains/chia-plotter/default.nix+8−15 pkgs/applications/blockchains/chia-plotter/dont_fetch_dependencies.patch+11−24 pkgs/applications/blockchains/chia/default.nix+3−7 pkgs/applications/blockchains/clightning/default.nix+9−17 pkgs/applications/blockchains/crypto-org-wallet/default.nix+1−1 pkgs/applications/blockchains/dashpay/default.nix+1−1 pkgs/applications/blockchains/dero/default.nix+25 pkgs/applications/blockchains/dogecoin/default.nix+3−3 pkgs/applications/blockchains/electrs/default.nix+3−3 pkgs/applications/blockchains/elements/default.nix+5−7 pkgs/applications/blockchains/ergo/default.nix+2−2 pkgs/applications/blockchains/erigon.nix+4−4 pkgs/applications/blockchains/exodus/default.nix+2−2 pkgs/applications/blockchains/fulcrum/default.nix−36 pkgs/applications/blockchains/go-ethereum/default.nix+5−6 pkgs/applications/blockchains/groestlcoin/default.nix−93 pkgs/applications/blockchains/ledger-live-desktop/default.nix+2−2 pkgs/applications/blockchains/lightning-loop/default.nix+3−3 pkgs/applications/blockchains/lightning-pool/default.nix+3−3 pkgs/applications/blockchains/lightwalletd/default.nix+2−2 pkgs/applications/blockchains/litecoin/default.nix+2−1 pkgs/applications/blockchains/lnd/default.nix+4−4 pkgs/applications/blockchains/lndmanage/default.nix+2−2 pkgs/applications/blockchains/monero-cli/default.nix−60 pkgs/applications/blockchains/monero-cli/use-system-libraries.patch−52 pkgs/applications/blockchains/monero-gui/default.nix+7−7 pkgs/applications/blockchains/monero/default.nix+60 pkgs/applications/blockchains/monero/use-system-libraries.patch+69 pkgs/applications/blockchains/mycrypto/default.nix+1−1 pkgs/applications/blockchains/namecoin/default.nix+7−6 pkgs/applications/blockchains/nbxplorer/default.nix+5−5 pkgs/applications/blockchains/nbxplorer/deps.nix+221−241 pkgs/applications/blockchains/nbxplorer/util/create-deps.sh+2−2 pkgs/applications/blockchains/nbxplorer/util/update-common.sh+3−3 pkgs/applications/blockchains/nearcore/default.nix−42 pkgs/applications/blockchains/openethereum/default.nix+4−4 pkgs/applications/blockchains/oxen/default.nix+3−4 pkgs/applications/blockchains/parity-ui/default.nix+48 pkgs/applications/blockchains/parity-ui/env.nix+19 pkgs/applications/blockchains/particl-core/default.nix+6−9 pkgs/applications/blockchains/pivx/default.nix+1−1 pkgs/applications/blockchains/polkadot/default.nix+4−27 pkgs/applications/blockchains/snarkos/default.nix−61 pkgs/applications/blockchains/solana/default.nix−61 pkgs/applications/blockchains/solana/pin.json−5 pkgs/applications/blockchains/solana/update.sh−33 pkgs/applications/blockchains/stellar-core/default.nix+3−7 pkgs/applications/blockchains/trezor-suite/default.nix+3−3 pkgs/applications/blockchains/wasabibackend/create_deps.sh+98 pkgs/applications/blockchains/wasabibackend/default.nix+72−22 pkgs/applications/blockchains/wasabibackend/deps.nix+955−202 pkgs/applications/blockchains/wasabiwallet/default.nix+1−1 pkgs/applications/blockchains/whirlpool-gui/default.nix+104 pkgs/applications/blockchains/wownero/default.nix+16−17 pkgs/applications/blockchains/zcash/default.nix+6−6 pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix+7−8 pkgs/applications/editors/android-studio/common.nix+9−13 pkgs/applications/editors/android-studio/default.nix+7−8 pkgs/applications/editors/apostrophe/default.nix+2−2 pkgs/applications/editors/bless/default.nix+6−12 pkgs/applications/editors/bluefish/default.nix+1−1 pkgs/applications/editors/bluej/default.nix+10−37 pkgs/applications/editors/bonzomatic/default.nix+2−2 pkgs/applications/editors/bviplus/default.nix+1−13 pkgs/applications/editors/code-browser/default.nix+20−31 pkgs/applications/editors/cpeditor/default.nix−40 pkgs/applications/editors/cudatext/default.nix+2−4 pkgs/applications/editors/cudatext/deps.json+16−16 pkgs/applications/editors/cudatext/update.sh−23 pkgs/applications/editors/deadpixi-sam/default.nix+7−9 pkgs/applications/editors/eclipse/build-eclipse.nix+5−5 pkgs/applications/editors/eclipse/default.nix+14−18 pkgs/applications/editors/eclipse/plugins.nix+2−2 pkgs/applications/editors/ed/default.nix+2−2 pkgs/applications/editors/em/default.nix−29 pkgs/applications/editors/emacs/27.nix+12 pkgs/applications/editors/emacs/28.nix−5 pkgs/applications/editors/emacs/at-fdcwd.patch+15 pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix+4−8 pkgs/applications/editors/emacs/elisp-packages/bqn-mode/default.nix+4−4 pkgs/applications/editors/emacs/elisp-packages/cedet/default.nix+52 pkgs/applications/editors/emacs/elisp-packages/control-lock/default.nix−23 pkgs/applications/editors/emacs/elisp-packages/ebuild-mode/default.nix+2−2 pkgs/applications/editors/emacs/elisp-packages/elpa-generated.nix+211−609 pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix+9−12 pkgs/applications/editors/emacs/elisp-packages/emacs2nix.nix+3−4 pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix+1−2 pkgs/applications/editors/emacs/elisp-packages/ement/default.nix+3−11 pkgs/applications/editors/emacs/elisp-packages/ess-R-object-popup/default.nix−7 pkgs/applications/editors/emacs/elisp-packages/header-file-mode/default.nix−30 pkgs/applications/editors/emacs/elisp-packages/libgenerated.nix+1−4 pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix+3−34 pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix+2−47 pkgs/applications/editors/emacs/elisp-packages/nongnu-generated.nix+62−1177 pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix+1−2 pkgs/applications/editors/emacs/elisp-packages/org-generated.nix+33 pkgs/applications/editors/emacs/elisp-packages/org-packages.nix+33 pkgs/applications/editors/emacs/elisp-packages/plz/default.nix+4−12 pkgs/applications/editors/emacs/elisp-packages/prolog/default.nix+1−1 pkgs/applications/editors/emacs/elisp-packages/railgun/default.nix+25 pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json+6119−8716 pkgs/applications/editors/emacs/elisp-packages/tramp/default.nix+29 pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default-grammars.json−32 pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix−44 pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/update-defaults.py−74 pkgs/applications/editors/emacs/elisp-packages/tsc/default.nix−89 pkgs/applications/editors/emacs/elisp-packages/tsc/src.json−10 pkgs/applications/editors/emacs/elisp-packages/tsc/update.py−122 pkgs/applications/editors/emacs/elisp-packages/update−10 pkgs/applications/editors/emacs/elisp-packages/update-from-overlay+4 pkgs/applications/editors/emacs/elisp-packages/update-manual−7 pkgs/applications/editors/emacs/elisp-packages/update-manual.nix−11 pkgs/applications/editors/emacs/elisp-packages/update-org+4 pkgs/applications/editors/emacs/generic.nix+7−33 pkgs/applications/editors/emacs/macport.nix+4−5 pkgs/applications/editors/emacs/tramp-detect-wrapped-gvfsd-26.patch+14 pkgs/applications/editors/emacs/tramp-detect-wrapped-gvfsd.patch+11 pkgs/applications/editors/featherpad/default.nix+2−2 pkgs/applications/editors/ghostwriter/default.nix+2−2 pkgs/applications/editors/gnome-builder/default.nix+10−10 pkgs/applications/editors/gobby/default.nix+1−1 pkgs/applications/editors/gophernotes/default.nix+3−3 pkgs/applications/editors/helix/default.nix+10−13 pkgs/applications/editors/heme/default.nix+29 pkgs/applications/editors/hexdino/default.nix+6−6 pkgs/applications/editors/jetbrains/common.nix+97 pkgs/applications/editors/jetbrains/darwin.nix−36 pkgs/applications/editors/jetbrains/default.nix+113−130 pkgs/applications/editors/jetbrains/linux.nix−93 pkgs/applications/editors/jetbrains/update.pl+101 pkgs/applications/editors/jetbrains/update.py−100 pkgs/applications/editors/jetbrains/versions.json−296 pkgs/applications/editors/jove/default.nix+1−2 pkgs/applications/editors/jucipp/default.nix+4−3 pkgs/applications/editors/jupyter-kernels/octave/default.nix+1−2 pkgs/applications/editors/jupyter-kernels/octave/kernel.nix+6−4 pkgs/applications/editors/jupyter-kernels/wolfram/default.nix−22 pkgs/applications/editors/jupyter-kernels/wolfram/kernel.nix−32 pkgs/applications/editors/kakoune/default.nix−1 pkgs/applications/editors/kakoune/plugins/default.nix+1−1 pkgs/applications/editors/kakoune/plugins/kakoune-plugin-names+19−20 pkgs/applications/editors/kakoune/plugins/update.py+2−2 pkgs/applications/editors/kdevelop5/kdev-php.nix+2−2 pkgs/applications/editors/kdevelop5/kdev-python.nix+2−2 pkgs/applications/editors/kodestudio/default.nix+2−2 pkgs/applications/editors/lapce/default.nix−99 pkgs/applications/editors/leo-editor/default.nix+7−5 pkgs/applications/editors/libresprite/default.nix−111 pkgs/applications/editors/lifeograph/default.nix−40 pkgs/applications/editors/lite-xl/0001-replace-unpack-with-table-unpack.patch−91 pkgs/applications/editors/lite-xl/default.nix−52 pkgs/applications/editors/manuskript/default.nix+3−3 pkgs/applications/editors/marker/default.nix+3−6 pkgs/applications/editors/mg/default.nix+2−6 pkgs/applications/editors/micro/default.nix+1−3 pkgs/applications/editors/micro/test-with-expect.nix−30 pkgs/applications/editors/mle/default.nix+1−11 pkgs/applications/editors/moe/default.nix+2−2 pkgs/applications/editors/monodevelop/default.nix+81 pkgs/applications/editors/monodevelop/git-revert-12d610fb3f6dce121df538e36f21d8c2eeb0a6e3.patch+57 pkgs/applications/editors/music/tuxguitar/default.nix+3−3 pkgs/applications/editors/nano/default.nix+4−6 pkgs/applications/editors/nano/test-with-expect.nix−35 pkgs/applications/editors/ne/default.nix+2−2 pkgs/applications/editors/neovim/default.nix+17−13 pkgs/applications/editors/neovim/neovide/default.nix+8−10 pkgs/applications/editors/neovim/neovide/skia-externals.json+6−6 pkgs/applications/editors/neovim/neovim-remote.nix+3−2 pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock+2−2 pkgs/applications/editors/neovim/ruby_provider/gemset.nix+5−5 pkgs/applications/editors/neovim/utils.nix+1−1 pkgs/applications/editors/neovim/wrapper.nix+2−3 pkgs/applications/editors/netbeans/default.nix+5−5 pkgs/applications/editors/nvi/default.nix−1 pkgs/applications/editors/nvpy/default.nix+7−11 pkgs/applications/editors/oed/default.nix−9 pkgs/applications/editors/okteta/default.nix+2−4 pkgs/applications/editors/oni2/common.nix+1 pkgs/applications/editors/pinegrow/default.nix−80 pkgs/applications/editors/poke/default.nix+3−28 pkgs/applications/editors/quartus-prime/default.nix+1−2 pkgs/applications/editors/qxmledit/default.nix+1−1 pkgs/applications/editors/rednotebook/default.nix+3−4 pkgs/applications/editors/rehex/default.nix+8−14 pkgs/applications/editors/retext/default.nix+16−37 pkgs/applications/editors/rstudio/default.nix+141−171 pkgs/applications/editors/setzer/default.nix+2−3 pkgs/applications/editors/sigil/default.nix+2−2 pkgs/applications/editors/spacevim/default.nix+2−2 pkgs/applications/editors/standardnotes/default.nix+8−9 pkgs/applications/editors/sublime/2/default.nix+1−1 pkgs/applications/editors/sublime/3/common.nix+1−1 pkgs/applications/editors/sublime/4/common.nix+1−1 pkgs/applications/editors/sublime/4/packages.nix+6−6 pkgs/applications/editors/texmaker/default.nix+2−2 pkgs/applications/editors/texstudio/default.nix+2−2 pkgs/applications/editors/texworks/default.nix+2−2 pkgs/applications/editors/thonny/default.nix+1−1 pkgs/applications/editors/tiled/default.nix+4−4 pkgs/applications/editors/vim/common.nix+2−2 pkgs/applications/editors/vim/configurable.nix+34−7 pkgs/applications/editors/vim/macvim.nix+3−3 pkgs/applications/editors/vim/macvim.patch+34−32 pkgs/applications/editors/vim/plugins/aliases.nix−143 pkgs/applications/editors/vim/plugins/default.nix−52 pkgs/applications/editors/vim/plugins/overrides.nix−1160 pkgs/applications/editors/vim/plugins/patches/sniprun/fix-paths.patch−36 pkgs/applications/editors/vim/plugins/update-shell.nix−16 pkgs/applications/editors/vim/plugins/update.py−128 pkgs/applications/editors/vim/plugins/vim-command-check-hook.sh−25 pkgs/applications/editors/vim/plugins/vim-plugin-names−1014 pkgs/applications/editors/vis/default.nix+8−4 pkgs/applications/editors/vscode/extensions/cpptools/default.nix−111 pkgs/applications/editors/vscode/extensions/default.nix−2348 pkgs/applications/editors/vscode/extensions/language-packs.nix−89 pkgs/applications/editors/vscode/extensions/ms-dotnettools-csharp/default.nix−152 pkgs/applications/editors/vscode/extensions/ms-dotnettools-csharp/rt-deps-bin-srcs.json−94 pkgs/applications/editors/vscode/extensions/ms-vsliveshare-vsliveshare/default.nix−133 pkgs/applications/editors/vscode/extensions/python/default.nix−128 pkgs/applications/editors/vscode/extensions/remote-ssh/default.nix−54 pkgs/applications/editors/vscode/extensions/rust-analyzer/build-deps/package.json−19 pkgs/applications/editors/vscode/extensions/rust-analyzer/default.nix−88 pkgs/applications/editors/vscode/extensions/rust-analyzer/update.sh−49 pkgs/applications/editors/vscode/extensions/terraform/default.nix−20 pkgs/applications/editors/vscode/extensions/vscode-lldb/default.nix−104 pkgs/applications/editors/vscode/extensions/vscode-lldb/update.sh−46 pkgs/applications/editors/vscode/extensions/wakatime/default.nix−22 pkgs/applications/editors/vscode/generic.nix+32−32 pkgs/applications/editors/vscode/update-shell.nix−18 pkgs/applications/editors/vscode/update-vscode.sh+2−2 pkgs/applications/editors/vscode/update-vscodium.sh+14−18 pkgs/applications/editors/vscode/vscode.nix+7−7 pkgs/applications/editors/vscode/vscodium.nix+14−11 pkgs/applications/editors/wxhexeditor/default.nix+2−3 pkgs/applications/editors/xed-editor/default.nix+2−2 pkgs/applications/editors/xedit/default.nix−45 pkgs/applications/editors/xxe-pe/default.nix+1−1 pkgs/applications/editors/your-editor/default.nix+5−6 pkgs/applications/emulators/attract-mode/default.nix−33 pkgs/applications/emulators/basiliskii/default.nix−28 pkgs/applications/emulators/basiliskii/remove-redhat-6-workaround-for-scsi-sg.h.patch−10 pkgs/applications/emulators/bsnes/ares/default.nix−84 pkgs/applications/emulators/bsnes/ares/fix-ruby.patch−27 pkgs/applications/emulators/bsnes/higan/default.nix−155 pkgs/applications/emulators/ccemux/default.nix−67 pkgs/applications/emulators/cdemu/base.nix−36 pkgs/applications/emulators/cdemu/client.nix−16 pkgs/applications/emulators/cdemu/daemon.nix−9 pkgs/applications/emulators/cdemu/vhba.nix−22 pkgs/applications/emulators/citra/default.nix−91 pkgs/applications/emulators/collapseos-cvm/default.nix−30 pkgs/applications/emulators/commanderx16/emulator.nix−44 pkgs/applications/emulators/commanderx16/rom.nix−52 pkgs/applications/emulators/dolphin-emu/primehack.nix−151 pkgs/applications/emulators/dosbox-staging/default.nix−112 pkgs/applications/emulators/dosbox/default.nix−75 pkgs/applications/emulators/duckstation/default.nix−106 pkgs/applications/emulators/dynamips/default.nix−36 pkgs/applications/emulators/fceux/default.nix−24 pkgs/applications/emulators/flycast/default.nix−52 pkgs/applications/emulators/fs-uae/default.nix−65 pkgs/applications/emulators/fs-uae/launcher.nix−43 pkgs/applications/emulators/goldberg-emu/default.nix−52 pkgs/applications/emulators/goldberg-emu/dont-install-unsupported.patch−34 pkgs/applications/emulators/hercules/default.nix−27 pkgs/applications/emulators/libdsk/default.nix−19 pkgs/applications/emulators/mame/0001-Revert-Added-PDF-documentation-to-dist.mak.patch−37 pkgs/applications/emulators/mame/default.nix−155 pkgs/applications/emulators/mednafen/default.nix−98 pkgs/applications/emulators/mednaffe/default.nix−41 pkgs/applications/emulators/melonDS/default.nix−43 pkgs/applications/emulators/mgba/default.nix−87 pkgs/applications/emulators/nestopia/default.nix−72 pkgs/applications/emulators/pcsx2/default.nix−93 pkgs/applications/emulators/ppsspp/default.nix−72 pkgs/applications/emulators/proton-caller/default.nix−24 pkgs/applications/emulators/punes/default.nix−64 pkgs/applications/emulators/resim/default.nix−21 pkgs/applications/emulators/retroarch/cores.nix−892 pkgs/applications/emulators/retroarch/default.nix−139 pkgs/applications/emulators/retroarch/disable-menu_show_core_updater.patch−25 pkgs/applications/emulators/retroarch/fix-config.patch−26 pkgs/applications/emulators/retroarch/fix-libretro-paths.patch−28 pkgs/applications/emulators/retroarch/hashes.json−488 pkgs/applications/emulators/retroarch/update_cores.py−173 pkgs/applications/emulators/retroarch/use-fixed-paths-on-libretro_info_path.patch−84 pkgs/applications/emulators/retroarch/wrapper.nix−41 pkgs/applications/emulators/retrofe/default.nix−78 pkgs/applications/emulators/ripes/default.nix−50 pkgs/applications/emulators/rpcs3/0001-llvm-ExecutionEngine-IntelJITEvents-only-use-ITTAPI_.patch−62 pkgs/applications/emulators/rpcs3/default.nix−80 pkgs/applications/emulators/rpcs3/update.sh−59 pkgs/applications/emulators/ruffle/default.nix−60 pkgs/applications/emulators/ryujinx/appdir.patch−23 pkgs/applications/emulators/ryujinx/default.nix−108 pkgs/applications/emulators/ryujinx/deps.nix−227 pkgs/applications/emulators/ryujinx/updater.sh−86 pkgs/applications/emulators/sameboy/default.nix−48 pkgs/applications/emulators/snes9x/default.nix−130 pkgs/applications/emulators/stella/default.nix−45 pkgs/applications/emulators/tiny8086/default.nix−68 pkgs/applications/emulators/tinyemu/default.nix−46 pkgs/applications/emulators/uae/default.nix−27 pkgs/applications/emulators/vice/default.nix−187 pkgs/applications/emulators/wine/base.nix−199 pkgs/applications/emulators/wine/cert-path.patch−15 pkgs/applications/emulators/wine/darwin-metal-compat.patch−31 pkgs/applications/emulators/wine/default.nix−67 pkgs/applications/emulators/wine/packages.nix−44 pkgs/applications/emulators/wine/setup-hook-darwin.sh−37 pkgs/applications/emulators/wine/sources.nix−93 pkgs/applications/emulators/wine/vkd3d.nix−28 pkgs/applications/emulators/yuzu/compatibility-list.json−1 pkgs/applications/emulators/yuzu/default.nix−40 pkgs/applications/emulators/yuzu/generic.nix−157 pkgs/applications/emulators/yuzu/update.sh−102 pkgs/applications/emulators/zesarux/default.nix−97 pkgs/applications/emulators/zsnes/default.nix−64 pkgs/applications/finance/cryptowatch/default.nix−57 pkgs/applications/finance/irpf/default.nix−73 pkgs/applications/finance/odoo/default.nix+4−10 pkgs/applications/gis/gmt/dcw.nix+2−2 pkgs/applications/gis/gmt/default.nix+2−2 pkgs/applications/gis/grass/default.nix+44−32 pkgs/applications/gis/qgis/default.nix+4−10 pkgs/applications/gis/qgis/ltr.nix−32 pkgs/applications/gis/qgis/unwrapped-ltr.nix−153 pkgs/applications/gis/qgis/unwrapped.nix+19−36 pkgs/applications/gis/qmapshack/default.nix+2−2 pkgs/applications/gis/whitebox-tools/default.nix+4−8 pkgs/applications/gis/whitebox-tools/update-cargo-lock.patch−578 pkgs/applications/gis/zombietrackergps/default.nix+5−15 pkgs/applications/graphics/ImageMagick/6.x.nix+1−1 pkgs/applications/graphics/ImageMagick/7.0.nix+21−55 pkgs/applications/graphics/antimony/default.nix+7−3 pkgs/applications/graphics/apitrace/default.nix−6 pkgs/applications/graphics/apitrace/glibc-2.34-compat.patch−13 pkgs/applications/graphics/ascii-image-converter/default.nix−22 pkgs/applications/graphics/avocode/default.nix+3−3 pkgs/applications/graphics/awesomebump/default.nix+1−1 pkgs/applications/graphics/azpainter/default.nix+11−20 pkgs/applications/graphics/blockbench-electron/default.nix+4−4 pkgs/applications/graphics/c3d/default.nix+6−8 pkgs/applications/graphics/cloudcompare/default.nix+12−47 pkgs/applications/graphics/cq-editor/default.nix+1−1 pkgs/applications/graphics/darktable/default.nix+29−117 pkgs/applications/graphics/deskew/default.nix+9−11 pkgs/applications/graphics/digikam/default.nix+4−15 pkgs/applications/graphics/displaycal/default.nix+72 pkgs/applications/graphics/drawing/default.nix+2−15 pkgs/applications/graphics/drawio/default.nix+2−8 pkgs/applications/graphics/evilpixie/default.nix+4−4 pkgs/applications/graphics/exrtools/default.nix+1−1 pkgs/applications/graphics/f3d/default.nix+7−6 pkgs/applications/graphics/fbida/default.nix+2−2 pkgs/applications/graphics/feh/default.nix+9−9 pkgs/applications/graphics/fig2dev/default.nix+1−3 pkgs/applications/graphics/fiji/default.nix+9−4 pkgs/applications/graphics/fluxus/default.nix+2−3 pkgs/applications/graphics/foxotron/default.nix+3−3 pkgs/applications/graphics/gcolor3/default.nix+2−6 pkgs/applications/graphics/geeqie/default.nix+8−21 pkgs/applications/graphics/gimp/default.nix+5−6 pkgs/applications/graphics/gimp/plugins/default.nix+6−51 pkgs/applications/graphics/gimp/wrapper.nix−2 pkgs/applications/graphics/glabels/default.nix+1−1 pkgs/applications/graphics/glimpse/default.nix−1 pkgs/applications/graphics/glimpse/wrapper.nix−2 pkgs/applications/graphics/gnome-obfuscate/default.nix−70 pkgs/applications/graphics/gnome-photos/default.nix+3−2 pkgs/applications/graphics/gpicview/default.nix+1 pkgs/applications/graphics/grafx2/default.nix+1−1 pkgs/applications/graphics/graphicsmagick/default.nix+4−17 pkgs/applications/graphics/gscan2pdf/default.nix+5−3 pkgs/applications/graphics/gthumb/default.nix+2−2 pkgs/applications/graphics/hdr-plus/default.nix+13−5 pkgs/applications/graphics/hdrmerge/default.nix−76 pkgs/applications/graphics/hugin/default.nix+11−2 pkgs/applications/graphics/hydrus/default.nix+3−6 pkgs/applications/graphics/icon-library/default.nix−37 pkgs/applications/graphics/image-roll/default.nix+3−9 pkgs/applications/graphics/imagej/default.nix+4−11 pkgs/applications/graphics/imgbrd-grabber/default.nix+3−3 pkgs/applications/graphics/imlibsetroot/default.nix+6−13 pkgs/applications/graphics/imv/default.nix+5−6 pkgs/applications/graphics/inkscape/default.nix+10−7 pkgs/applications/graphics/inkscape/extensions.nix+2−2 pkgs/applications/graphics/ipe/default.nix+6−4 pkgs/applications/graphics/jpegrescan/default.nix+1−5 pkgs/applications/graphics/k3d/default.nix+51 pkgs/applications/graphics/krita/beta.nix+7 pkgs/applications/graphics/krita/default.nix+2−2 pkgs/applications/graphics/krita/generic.nix+1−1 pkgs/applications/graphics/lightburn/default.nix+2−2 pkgs/applications/graphics/mandelbulber/default.nix+3−3 pkgs/applications/graphics/mcomix3/default.nix+1−2 pkgs/applications/graphics/megapixels/default.nix+4−4 pkgs/applications/graphics/menyoki/default.nix+5−7 pkgs/applications/graphics/meshlab/default.nix+2−11 pkgs/applications/graphics/mtpaint/default.nix+5−3 pkgs/applications/graphics/mypaint/default.nix−10 pkgs/applications/graphics/nomacs/default.nix+1 pkgs/applications/graphics/nsxiv/default.nix−61 pkgs/applications/graphics/ocrfeeder/default.nix+8−5 pkgs/applications/graphics/odafileconverter/default.nix+1−1 pkgs/applications/graphics/openboard/default.nix+3−11 pkgs/applications/graphics/openscad/default.nix+2−5 pkgs/applications/graphics/opentoonz/default.nix+2−4 pkgs/applications/graphics/opentoonz/libtiff.nix+9−44 pkgs/applications/graphics/opentoonz/source.nix+3−3 pkgs/applications/graphics/ovito/default.nix+10−31 pkgs/applications/graphics/paraview/default.nix+2−2 pkgs/applications/graphics/pbrt/default.nix+1−1 pkgs/applications/graphics/pdfcpu/default.nix+3−9 pkgs/applications/graphics/photivo/default.nix+54 pkgs/applications/graphics/photivo/gcc6.patch+13 pkgs/applications/graphics/pinta/default.nix+65−64 pkgs/applications/graphics/pinta/deps.nix−12 pkgs/applications/graphics/pixeluvo/default.nix−56 pkgs/applications/graphics/pixinsight/default.nix−132 pkgs/applications/graphics/qiv/default.upstream+3 pkgs/applications/graphics/qvge/default.nix+5−7 pkgs/applications/graphics/rawtherapee/default.nix−3 pkgs/applications/graphics/rawtherapee/fix-6324.patch−356 pkgs/applications/graphics/renderdoc/default.nix+7−28 pkgs/applications/graphics/rnote/default.nix−78 pkgs/applications/graphics/sane/backends/brscan4/default.nix+2−2 pkgs/applications/graphics/sane/backends/brscan5/default.nix+22−32 pkgs/applications/graphics/sane/config.nix+1−1 pkgs/applications/graphics/scantailor/default.nix+4−6 pkgs/applications/graphics/screencloud/default.nix+3−3 pkgs/applications/graphics/shotwell/default.nix+2−2 pkgs/applications/graphics/solvespace/default.nix+15−63 pkgs/applications/graphics/swingsane/default.nix+1−1 pkgs/applications/graphics/symbolic-preview/default.nix−31 pkgs/applications/graphics/synfigstudio/default.nix+2−2 pkgs/applications/graphics/tesseract/default.nix−6 pkgs/applications/graphics/tesseract/fetch-language-hashes+2−2 pkgs/applications/graphics/tesseract/languages.nix+245−245 pkgs/applications/graphics/tesseract/tesseract3.nix+3−14 pkgs/applications/graphics/tesseract/tesseract4.nix+3−15 pkgs/applications/graphics/tesseract/tesseract5.nix−39 pkgs/applications/graphics/tesseract/wrapper.nix+3−29 pkgs/applications/graphics/tev/default.nix+9−5 pkgs/applications/graphics/unigine-heaven/default.nix−107 pkgs/applications/graphics/unigine-sanctuary/default.nix−97 pkgs/applications/graphics/unigine-superposition/default.nix−146 pkgs/applications/graphics/unigine-tropics/default.nix−95 pkgs/applications/graphics/unigine-valley/default.nix+99−120 pkgs/applications/graphics/vengi-tools/default.nix−112 pkgs/applications/graphics/vengi-tools/test-voxconvert-all-formats.nix−15 pkgs/applications/graphics/vengi-tools/test-voxconvert-roundtrip.nix−15 pkgs/applications/graphics/viewnior/default.nix+2−2 pkgs/applications/graphics/weylus/default.nix+28−56 pkgs/applications/graphics/write_stylus/default.nix+1−1 pkgs/applications/graphics/xfig/default.nix+2−13 pkgs/applications/graphics/xournal/default.nix+5−5 pkgs/applications/graphics/xournalpp/default.nix+3−4 pkgs/applications/graphics/xrgears/default.nix+3−14 pkgs/applications/graphics/yed/default.nix+2−2 pkgs/applications/kde/akonadi/default.nix−7 pkgs/applications/kde/bovo.nix+1−1 pkgs/applications/kde/default.nix+1−8 pkgs/applications/kde/falkon.nix−40 pkgs/applications/kde/fetch.sh+1−1 pkgs/applications/kde/k3b.nix+1−1 pkgs/applications/kde/kaddressbook.nix−4 pkgs/applications/kde/kalarm.nix+3−3 pkgs/applications/kde/kalarmcal.nix+19 pkgs/applications/kde/kalendar.nix−94 pkgs/applications/kde/kalzium.nix+1−1 pkgs/applications/kde/kamoso.nix+1−1 pkgs/applications/kde/kbreakout.nix+1−1 pkgs/applications/kde/kdebugsettings.nix+1−1 pkgs/applications/kde/kdegraphics-thumbnailers.nix+2−2 pkgs/applications/kde/kdepim-addons.nix+2−2 pkgs/applications/kde/kdepim-runtime/default.nix+2−2 pkgs/applications/kde/kio-extras.nix−7 pkgs/applications/kde/kipi-plugins.nix+1−1 pkgs/applications/kde/kitinerary.nix+4−8 pkgs/applications/kde/klettres.nix+1−1 pkgs/applications/kde/kmousetool.nix−35 pkgs/applications/kde/konsole.nix+1−3 pkgs/applications/kde/krfb.nix+8−7 pkgs/applications/kde/ktorrent.nix−22 pkgs/applications/kde/kturtle.nix+1−1 pkgs/applications/kde/libktorrent.nix−22 pkgs/applications/kde/picmi.nix−1 pkgs/applications/kde/pimcommon.nix+2−2 pkgs/applications/kde/skanlite.nix−18 pkgs/applications/kde/skanpage.nix−32 pkgs/applications/kde/srcs.nix+905−953 pkgs/applications/kde/yakuake.nix−2 pkgs/applications/kde/zanshin.nix−18 pkgs/applications/logging/sosreport/default.nix−51 pkgs/applications/misc/1password-gui/beta.nix−132 pkgs/applications/misc/1password-gui/default.nix+5−18 pkgs/applications/misc/1password/default.nix+30−47 pkgs/applications/misc/ArchiSteamFarm/default.nix+13−17 pkgs/applications/misc/ArchiSteamFarm/deps-aarch64-linux.nix−280 pkgs/applications/misc/ArchiSteamFarm/deps-x86_64-linux.nix−280 pkgs/applications/misc/ArchiSteamFarm/deps.nix+277 pkgs/applications/misc/ArchiSteamFarm/mutable-customdir.patch+13 pkgs/applications/misc/ArchiSteamFarm/updater.sh+8−16 pkgs/applications/misc/ArchiSteamFarm/web-ui/default.nix−40 pkgs/applications/misc/ArchiSteamFarm/web-ui/node-composition.nix−17 pkgs/applications/misc/ArchiSteamFarm/web-ui/node-packages.nix−7645 pkgs/applications/misc/ArchiSteamFarm/web-ui/update.sh−26 pkgs/applications/misc/HentaiAtHome/default.nix−37 pkgs/applications/misc/OSCAR/default.nix+4−6 pkgs/applications/misc/ablog/default.nix−36 pkgs/applications/misc/abook/default.nix+1−1 pkgs/applications/misc/airtame/default.nix+79 pkgs/applications/misc/almanah/default.nix+1−13 pkgs/applications/misc/anytype/default.nix+2−2 pkgs/applications/misc/appeditor/default.nix+2−7 pkgs/applications/misc/apvlv/default.nix+2−2 pkgs/applications/misc/archivebox/default.nix+24−16 pkgs/applications/misc/archivy/default.nix+26−16 pkgs/applications/misc/artha/default.nix+8−4 pkgs/applications/misc/artha/gio-underlink.patch+13 pkgs/applications/misc/audio/sox/default.nix+7−14 pkgs/applications/misc/audio/soxr/default.nix+10−13 pkgs/applications/misc/audio/wavesurfer/default.nix+30 pkgs/applications/misc/ausweisapp2/default.nix+2−2 pkgs/applications/misc/authy/default.nix+7−30 pkgs/applications/misc/auto-multiple-choice/default.nix+4−5 pkgs/applications/misc/autospotting/default.nix−1 pkgs/applications/misc/avizo/default.nix+4−4 pkgs/applications/misc/avrdudess/default.nix+4−5 pkgs/applications/misc/azuredatastudio/default.nix+23−19 pkgs/applications/misc/barrier/default.nix+1−12 pkgs/applications/misc/batsignal/default.nix+2−2 pkgs/applications/misc/bemenu/default.nix+11−2 pkgs/applications/misc/bicon/default.nix+1−1 pkgs/applications/misc/bikeshed/default.nix−77 pkgs/applications/misc/binance/default.nix+2−2 pkgs/applications/misc/blender/default.nix+15−16 pkgs/applications/misc/blender/wrapper.nix−39 pkgs/applications/misc/bluetooth_battery/default.nix+2−2 pkgs/applications/misc/bottles/default.nix+16−33 pkgs/applications/misc/buku/default.nix+20−28 pkgs/applications/misc/bukut/default.nix−28 pkgs/applications/misc/calcoo/0001-javac-encoding.diff−21 pkgs/applications/misc/calcoo/default.nix−58 pkgs/applications/misc/calcurse/default.nix+3−4 pkgs/applications/misc/calibre/default.nix+9−18 pkgs/applications/misc/cardpeek/default.nix+22−43 pkgs/applications/misc/catclock/default.nix−1 pkgs/applications/misc/cbatticon/default.nix+2−2 pkgs/applications/misc/cfm/default.nix−26 pkgs/applications/misc/charm/default.nix+5−3 pkgs/applications/misc/cherrytree/default.nix+2−2 pkgs/applications/misc/clifm/default.nix+9−6 pkgs/applications/misc/clight/clightd.nix+2−2 pkgs/applications/misc/clight/default.nix+2−2 pkgs/applications/misc/clipcat/default.nix+1−1 pkgs/applications/misc/cloak/default.nix+4−6 pkgs/applications/misc/cobalt/default.nix+3−3 pkgs/applications/misc/cobang/0001-Poetry-core-and-pillow-9.patch−31 pkgs/applications/misc/cobang/default.nix−102 pkgs/applications/misc/cointop/default.nix+6−6 pkgs/applications/misc/copyq/default.nix+11−2 pkgs/applications/misc/corectrl/default.nix+5−5 pkgs/applications/misc/cpu-x/default.nix+2−2 pkgs/applications/misc/crow-translate/default.nix+4−4 pkgs/applications/misc/crow-translate/dont-fetch-external-libs.patch+4−4 pkgs/applications/misc/crow-translate/fix-qttranslations-path.patch+8−8 pkgs/applications/misc/cubiomes-viewer/default.nix−70 pkgs/applications/misc/cubocore-packages/coreaction/default.nix+11−3 pkgs/applications/misc/cubocore-packages/corearchiver/default.nix+2−2 pkgs/applications/misc/cubocore-packages/corefm/default.nix+2−2 pkgs/applications/misc/cubocore-packages/coregarage/default.nix+2−2 pkgs/applications/misc/cubocore-packages/corehunt/default.nix+2−2 pkgs/applications/misc/cubocore-packages/coreimage/default.nix+2−2 pkgs/applications/misc/cubocore-packages/coreinfo/default.nix+2−2 pkgs/applications/misc/cubocore-packages/corekeyboard/0001-fix-installPhase.patch−8 pkgs/applications/misc/cubocore-packages/corekeyboard/default.nix+2−7 pkgs/applications/misc/cubocore-packages/corepad/default.nix+2−2 pkgs/applications/misc/cubocore-packages/corepaint/default.nix+2−2 pkgs/applications/misc/cubocore-packages/corepdf/default.nix+3−4 pkgs/applications/misc/cubocore-packages/corepins/default.nix+2−2 pkgs/applications/misc/cubocore-packages/corerenamer/default.nix+2−2 pkgs/applications/misc/cubocore-packages/coreshot/default.nix+2−2 pkgs/applications/misc/cubocore-packages/corestats/default.nix+2−2 pkgs/applications/misc/cubocore-packages/corestuff/0001-fix-installPhase.patch−11 pkgs/applications/misc/cubocore-packages/corestuff/default.nix+2−7 pkgs/applications/misc/cubocore-packages/coreterminal/default.nix+2−2 pkgs/applications/misc/cubocore-packages/coretime/default.nix+2−2 pkgs/applications/misc/cubocore-packages/coretoppings/0001-fix-install-phase.patch+3−3 pkgs/applications/misc/cubocore-packages/coretoppings/default.nix+2−2 pkgs/applications/misc/cubocore-packages/coreuniverse/default.nix+2−2 pkgs/applications/misc/cubocore-packages/libcprime/default.nix+2−2 pkgs/applications/misc/cubocore-packages/libcsys/default.nix+2−2 pkgs/applications/misc/cura/default.nix+2−2 pkgs/applications/misc/cura/stable.nix+12−11 pkgs/applications/misc/curabydagoma/default.nix+78 pkgs/applications/misc/curaengine/default.nix+2−2 pkgs/applications/misc/curaengine/stable.nix+9−9 pkgs/applications/misc/dasel/default.nix+4−5 pkgs/applications/misc/dbeaver/default.nix+38−16 pkgs/applications/misc/ddcui/default.nix+2−2 pkgs/applications/misc/ddgr/default.nix+2−2 pkgs/applications/misc/debian-goodies/default.nix−70 pkgs/applications/misc/deco/default.nix+3−3 pkgs/applications/misc/dmenu/default.nix+2−2 pkgs/applications/misc/dozenal/default.nix−8 pkgs/applications/misc/dunst/default.nix+4−4 pkgs/applications/misc/dupeguru/default.nix+17−12 pkgs/applications/misc/edgetx/default.nix−47 pkgs/applications/misc/electron-cash/default.nix+2−3 pkgs/applications/misc/electrum-grs/default.nix−111 pkgs/applications/misc/electrum/dash.nix+47 pkgs/applications/misc/electrum/default.nix+22−5 pkgs/applications/misc/electrum/ltc.nix+29−151 pkgs/applications/misc/emojipick/default.nix−71 pkgs/applications/misc/eos-installer/default.nix−48 pkgs/applications/misc/etesync-dav/default.nix+7−23 pkgs/applications/misc/eureka-editor/default.nix+14−10 pkgs/applications/misc/evtest/default.nix+1−1 pkgs/applications/misc/expenses/default.nix+5−14 pkgs/applications/misc/faircamp/default.nix−56 pkgs/applications/misc/faircamp/test-wav.nix−14 pkgs/applications/misc/far2l/default.nix+53−53 pkgs/applications/misc/far2l/python_prebuild.patch−20 pkgs/applications/misc/feedbackd/default.nix+3−13 pkgs/applications/misc/fetchmail/default.nix+2−2 pkgs/applications/misc/ff2mpv/default.nix−34 pkgs/applications/misc/firefly-desktop/default.nix−34 pkgs/applications/misc/firestarter/default.nix+1−3 pkgs/applications/misc/fluidd/default.nix+2−2 pkgs/applications/misc/fme/default.nix+57 pkgs/applications/misc/fnott/default.nix+2−2 pkgs/applications/misc/font-manager/default.nix+12−2 pkgs/applications/misc/foxitreader/default.nix−1 pkgs/applications/misc/free42/default.nix+12−19 pkgs/applications/misc/freeplane/default.nix+15−20 pkgs/applications/misc/fslint/default.nix+41 pkgs/applications/misc/fspy/default.nix−26 pkgs/applications/misc/fuzzel/default.nix+2−4 pkgs/applications/misc/gImageReader/default.nix+2−2 pkgs/applications/misc/gallery-dl/default.nix+4−4 pkgs/applications/misc/ganttproject-bin/default.nix+1−1 pkgs/applications/misc/genact/default.nix+3−3 pkgs/applications/misc/geoipupdate/default.nix+3−5 pkgs/applications/misc/girara/default.nix+2−2 pkgs/applications/misc/gkrellm/default.nix+1−1 pkgs/applications/misc/gksu/default.nix+53 pkgs/applications/misc/gksu/gksu-2.0.2-glib-2.31.patch+29 pkgs/applications/misc/globe-cli/default.nix−21 pkgs/applications/misc/gnome-firmware-updater/default.nix+75 pkgs/applications/misc/gnome-firmware/default.nix−63 pkgs/applications/misc/gnome-passwordsafe/default.nix+67 pkgs/applications/misc/gnome-secrets/default.nix−73 pkgs/applications/misc/gnome-solanum/default.nix−80 pkgs/applications/misc/gofu/default.nix+3−3 pkgs/applications/misc/golden-cheetah/0001-Fix-building-with-bison-3.7.patch−63 pkgs/applications/misc/golden-cheetah/default.nix+10−18 pkgs/applications/misc/gometer/default.nix−47 pkgs/applications/misc/googleearth/default.nix+106 pkgs/applications/misc/gosmore/default.nix+4−2 pkgs/applications/misc/gphoto2/default.nix+2−2 pkgs/applications/misc/gpsprune/default.nix+22−27 pkgs/applications/misc/gpxsee/default.nix+6−8 pkgs/applications/misc/gramps/default.nix+2−6 pkgs/applications/misc/gremlin-console/default.nix+2−2 pkgs/applications/misc/gremlin-server/default.nix−33 pkgs/applications/misc/grip/default.nix+12−2 pkgs/applications/misc/gsctl/default.nix+7−18 pkgs/applications/misc/gsimplecal/default.nix+6−8 pkgs/applications/misc/gtk2fontsel/default.nix+1−1 pkgs/applications/misc/gxmessage/default.nix+3−3 pkgs/applications/misc/haxor-news/default.nix+1−2 pkgs/applications/misc/hcl2json/default.nix−27 pkgs/applications/misc/heimer/default.nix+2−2 pkgs/applications/misc/hello/default.nix+10−21 pkgs/applications/misc/hello/test.nix−8 pkgs/applications/misc/hivemind/default.nix+5−5 pkgs/applications/misc/hubstaff/default.nix+4−4 pkgs/applications/misc/hugo/default.nix+7−7 pkgs/applications/misc/ideamaker/default.nix+2−2 pkgs/applications/misc/ikiwiki/default.nix+5−20 pkgs/applications/misc/index-fm/default.nix+5−8 pkgs/applications/misc/inherd-quake/default.nix−40 pkgs/applications/misc/ipmiview/default.nix+4−4 pkgs/applications/misc/iptsd/default.nix+3−3 pkgs/applications/misc/jgmenu/default.nix+2−2 pkgs/applications/misc/join-desktop/default.nix−73 pkgs/applications/misc/joplin-desktop/default.nix+3−3 pkgs/applications/misc/joshuto/default.nix+7−4 pkgs/applications/misc/joshuto/fix-cargo-lock.patch+11 pkgs/applications/misc/josm/default.nix+4−4 pkgs/applications/misc/jotta-cli/default.nix+2−2 pkgs/applications/misc/jp2a/default.nix+2−2 pkgs/applications/misc/jquake/default.nix+1−1 pkgs/applications/misc/jrnl/default.nix+11−6 pkgs/applications/misc/k40-whisperer/default.nix−74 pkgs/applications/misc/k4dirstat/default.nix+2−2 pkgs/applications/misc/kanboard/default.nix+2−2 pkgs/applications/misc/kchmviewer/default.nix−48 pkgs/applications/misc/keepass-plugins/charactercopy/default.nix−41 pkgs/applications/misc/keepass-plugins/keetraytotp/default.nix−40 pkgs/applications/misc/keepass-plugins/qrcodeview/default.nix−39 pkgs/applications/misc/keepass/default.nix+9−10 pkgs/applications/misc/keepassx/community.nix+1−2 pkgs/applications/misc/keylight-controller-mschneider82/default.nix−53 pkgs/applications/misc/kiln/default.nix+3−3 pkgs/applications/misc/kjv/default.nix+2−2 pkgs/applications/misc/klayout/default.nix+6−8 pkgs/applications/misc/kondo/default.nix+3−3 pkgs/applications/misc/koreader/default.nix+2−2 pkgs/applications/misc/kratos/default.nix+4−4 pkgs/applications/misc/kup/default.nix−60 pkgs/applications/misc/latte-dock/default.nix+2−2 pkgs/applications/misc/leetcode-cli/default.nix−41 pkgs/applications/misc/lemonade/default.nix−35 pkgs/applications/misc/liberasurecode/default.nix+3−27 pkgs/applications/misc/libosmocore/default.nix+6−21 pkgs/applications/misc/librecad/default.nix+3−11 pkgs/applications/misc/lighthouse/default.nix+35 pkgs/applications/misc/limesctl/default.nix+3−3 pkgs/applications/misc/llama/default.nix−22 pkgs/applications/misc/logseq/default.nix+5−6 pkgs/applications/misc/loxodo/default.nix+7−9 pkgs/applications/misc/lscolors/default.nix+4−7 pkgs/applications/misc/lsd2dsl/default.nix+1−1 pkgs/applications/misc/lutris/default.nix+12−14 pkgs/applications/misc/lutris/fhsenv.nix+4−5 pkgs/applications/misc/lutris/fixes.patch+67 pkgs/applications/misc/makeself/default.nix+2−2 pkgs/applications/misc/maliit-framework/default.nix−68 pkgs/applications/misc/maliit-keyboard/default.nix−82 pkgs/applications/misc/mapproxy/default.nix+2−2 pkgs/applications/misc/markets/default.nix+2−2 pkgs/applications/misc/marktext/default.nix+9−22 pkgs/applications/misc/masterpdfeditor/default.nix+2−2 pkgs/applications/misc/mdzk/default.nix+3−3 pkgs/applications/misc/mediaelch/default.nix+5−17 pkgs/applications/misc/mediainfo/default.nix+2−2 pkgs/applications/misc/megacmd/default.nix+16−6 pkgs/applications/misc/megasync/default.nix+8−9 pkgs/applications/misc/megasync/ffmpeg_44.patch−14 pkgs/applications/misc/mepo/default.nix−83 pkgs/applications/misc/metadata-cleaner/default.nix+2−2 pkgs/applications/misc/metamorphose2/default.nix+43 pkgs/applications/misc/michabo/default.nix+1 pkgs/applications/misc/minder/default.nix+2−4 pkgs/applications/misc/minigalaxy/default.nix−80 pkgs/applications/misc/mkgmap/default.nix+3−3 pkgs/applications/misc/mkgmap/splitter/default.nix+3−3 pkgs/applications/misc/mob/default.nix+6−23 pkgs/applications/misc/mobilecoin-wallet/default.nix−39 pkgs/applications/misc/moolticute/default.nix+4−4 pkgs/applications/misc/moonlight-embedded/default.nix+2−2 pkgs/applications/misc/moonlight-qt/default.nix+2−3 pkgs/applications/misc/mop/default.nix+13−12 pkgs/applications/misc/mop/deps.nix+11 pkgs/applications/misc/moz-phab/default.nix−57 pkgs/applications/misc/mucommander/default.nix+4−4 pkgs/applications/misc/multibootusb/default.nix+1−1 pkgs/applications/misc/mupdf/0001-Use-command-v-in-favor-of-which.patch−25 pkgs/applications/misc/mupdf/0002-Add-Darwin-deps.patch−57 pkgs/applications/misc/mupdf/1.17.nix+1 pkgs/applications/misc/mupdf/default.nix+45−46 pkgs/applications/misc/mupdf/default.upstream+7 pkgs/applications/misc/mysql-workbench/default.nix+2−2 pkgs/applications/misc/natural-docs/default.nix+2−2 pkgs/applications/misc/navi/default.nix+5−5 pkgs/applications/misc/neap/default.nix+44 pkgs/applications/misc/neo/default.nix−25 pkgs/applications/misc/neo4j-desktop/default.nix+2−2 pkgs/applications/misc/nerd-font-patcher/default.nix+8−9 pkgs/applications/misc/nimbo/default.nix+6−27 pkgs/applications/misc/nix-tour/default.nix+19−35 pkgs/applications/misc/nnn/default.nix+2−2 pkgs/applications/misc/noice/default.nix−6 pkgs/applications/misc/notejot/default.nix+19−6 pkgs/applications/misc/notejot/use-gtk4-update-icon-cache.patch+20 pkgs/applications/misc/numberstation/default.nix+2−2 pkgs/applications/misc/nut/default.nix+1−2 pkgs/applications/misc/nwg-drawer/default.nix+7−21 pkgs/applications/misc/nwg-menu/default.nix+3−1 pkgs/applications/misc/nwg-panel/default.nix+2−2 pkgs/applications/misc/nwg-wrapper/default.nix+2−2 pkgs/applications/misc/obinskit/default.nix+6−6 pkgs/applications/misc/obsidian/default.nix+60−74 pkgs/applications/misc/ocropus/default.nix+3−3 pkgs/applications/misc/octoprint/default.nix+140−43 pkgs/applications/misc/octoprint/plugins.nix+2−26 pkgs/applications/misc/oil-buku/default.nix−44 pkgs/applications/misc/opencpn/default.nix+16−85 pkgs/applications/misc/openlp/default.nix+1−2 pkgs/applications/misc/openrgb/default.nix+4−7 pkgs/applications/misc/openring/default.nix+4−4 pkgs/applications/misc/opentrack/default.nix+1−1 pkgs/applications/misc/orca/default.nix+2−2 pkgs/applications/misc/organicmaps/default.nix−86 pkgs/applications/misc/osmium-tool/default.nix+2−2 pkgs/applications/misc/osmscout-server/default.nix+28−9 pkgs/applications/misc/otpclient/default.nix+2−2 pkgs/applications/misc/p2pool/default.nix−50 pkgs/applications/misc/pcmanx-gtk2/default.nix+2−2 pkgs/applications/misc/pdfarranger/default.nix+2−2 pkgs/applications/misc/pdfdiff/default.nix+8−6 pkgs/applications/misc/pdfmod/default.nix+49 pkgs/applications/misc/pdfpc/default.nix+4−3 pkgs/applications/misc/pdfsam-basic/default.nix+4−4 pkgs/applications/misc/pdfslicer/default.nix−6 pkgs/applications/misc/pdfstudio/common.nix−96 pkgs/applications/misc/pdfstudio/default.nix−42 pkgs/applications/misc/pgadmin/default.nix+58 pkgs/applications/misc/phoc/default.nix+8−22 pkgs/applications/misc/phwmon/default.nix+5−5 pkgs/applications/misc/plasma-theme-switcher/default.nix−42 pkgs/applications/misc/plater/default.nix+1−1 pkgs/applications/misc/playonlinux/default.nix+3−18 pkgs/applications/misc/plover/default.nix+7−11 pkgs/applications/misc/polybar/default.nix+2−12 pkgs/applications/misc/polybar/remove-hardcoded-etc.diff−13 pkgs/applications/misc/pomotroid/default.nix−60 pkgs/applications/misc/portfolio-filemanager/default.nix+2−6 pkgs/applications/misc/premid/default.nix+1−1 pkgs/applications/misc/privacyidea/default.nix+5−18 pkgs/applications/misc/prusa-slicer/default.nix+12−17 pkgs/applications/misc/prusa-slicer/super-slicer.nix+5−8 pkgs/applications/misc/pueue/default.nix+3−3 pkgs/applications/misc/pure-maps/default.nix+10−6 pkgs/applications/misc/pwsafe/default.nix+6−8 pkgs/applications/misc/pytrainer/default.nix+2−2 pkgs/applications/misc/q4wine/default.nix−37 pkgs/applications/misc/qMasterPassword/default.nix+7−11 pkgs/applications/misc/qcad/default.nix+39−54 pkgs/applications/misc/qmetro/default.nix+3−2 pkgs/applications/misc/qpdfview/default.nix+27−35 pkgs/applications/misc/qt-video-wlr/default.nix+1−1 pkgs/applications/misc/qtbitcointrader/default.nix+9−8 pkgs/applications/misc/ranger/default.nix+4−13 pkgs/applications/misc/ratt/default.nix−26 pkgs/applications/misc/redshift/575.patch+1−1 pkgs/applications/misc/redshift/default.nix+22−13 pkgs/applications/misc/regextester/default.nix+1 pkgs/applications/misc/remarkable/remarkable-mouse/default.nix+2−2 pkgs/applications/misc/remarkable/restream/default.nix+8−19 pkgs/applications/misc/remarkable/rmapi/default.nix+2−2 pkgs/applications/misc/remarkable/rmview/default.nix+7−3 pkgs/applications/misc/rivercarro/default.nix−51 pkgs/applications/misc/rm-improved/default.nix−1 pkgs/applications/misc/robo3t/default.nix+1−1 pkgs/applications/misc/rofi-emoji/default.nix+2−2 pkgs/applications/misc/rofi-file-browser/default.nix+2−2 pkgs/applications/misc/rofi/default.nix+6−8 pkgs/applications/misc/rofi/wayland.nix−31 pkgs/applications/misc/sampler/default.nix+2−5 pkgs/applications/misc/scli/default.nix+2−2 pkgs/applications/misc/seatd/default.nix+5−9 pkgs/applications/misc/sidequest/default.nix+1−1 pkgs/applications/misc/sigal/default.nix+13−17 pkgs/applications/misc/sigi/default.nix−30 pkgs/applications/misc/simplenote/default.nix+3−2 pkgs/applications/misc/sioyek/default.nix−56 pkgs/applications/misc/skate/default.nix−26 pkgs/applications/misc/skytemple/default.nix+2−5 pkgs/applications/misc/sleepyhead/default.nix+4−2 pkgs/applications/misc/slic3r/default.nix+5−6 pkgs/applications/misc/slides/default.nix+4−5 pkgs/applications/misc/slmenu/default.nix+21−10 pkgs/applications/misc/slstatus/default.nix−2 pkgs/applications/misc/smos/default.nix+27 pkgs/applications/misc/snapmaker-luban/default.nix+3−3 pkgs/applications/misc/snowsql/default.nix+3−4 pkgs/applications/misc/solaar/default.nix+2−3 pkgs/applications/misc/spicetify-cli/default.nix+3−3 pkgs/applications/misc/spotify-tray/default.nix−33 pkgs/applications/misc/sqliteman/default.nix+4−4 pkgs/applications/misc/sqls/default.nix+3−5 pkgs/applications/misc/stag/default.nix+1−1 pkgs/applications/misc/stog/default.nix+14−26 pkgs/applications/misc/stog/install.patch+18 pkgs/applications/misc/stog/uri.patch+13 pkgs/applications/misc/stork/default.nix+4−10 pkgs/applications/misc/stretchly/default.nix+5−5 pkgs/applications/misc/subsurface/default.nix+1−2 pkgs/applications/misc/surface-control/default.nix+5−6 pkgs/applications/misc/survex/default.nix+43−36 pkgs/applications/misc/sway-launcher-desktop/default.nix−42 pkgs/applications/misc/swaynotificationcenter/default.nix−43 pkgs/applications/misc/sweethome3d/default.nix+1−1 pkgs/applications/misc/sweethome3d/editors.nix+1−1 pkgs/applications/misc/systembus-notify/default.nix+5−39 pkgs/applications/misc/tagtime/default.nix−79 pkgs/applications/misc/taskwarrior-tui/default.nix+3−3 pkgs/applications/misc/taskwarrior/default.nix+2−2 pkgs/applications/misc/teleprompter/default.nix+1 pkgs/applications/misc/terminal-typeracer/default.nix+4−5 pkgs/applications/misc/thedesk/default.nix−50 pkgs/applications/misc/ticker/default.nix+3−3 pkgs/applications/misc/timew-sync-server/default.nix+3−3 pkgs/applications/misc/timewarrior/default.nix−1 pkgs/applications/misc/tint2/default.nix+2−2 pkgs/applications/misc/tiramisu/default.nix+7−7 pkgs/applications/misc/tiv/default.nix+2−2 pkgs/applications/misc/tmatrix/default.nix+2−2 pkgs/applications/misc/todiff/default.nix+1−1 pkgs/applications/misc/todoist-electron/default.nix+4−4 pkgs/applications/misc/todoist/default.nix+3−7 pkgs/applications/misc/toggldesktop/default.nix+15−23 pkgs/applications/misc/toipe/default.nix−20 pkgs/applications/misc/tomboy/default.nix+43 pkgs/applications/misc/tootle/default.nix+5−24 pkgs/applications/misc/topydo/default.nix+2−2 pkgs/applications/misc/tpmmanager/default.nix+5−6 pkgs/applications/misc/translate-shell/default.nix+1−2 pkgs/applications/misc/trenchbroom/default.nix+1−14 pkgs/applications/misc/tsukae/default.nix+3−1 pkgs/applications/misc/tty-share/default.nix+6−8 pkgs/applications/misc/tty-solitaire/default.nix−1 pkgs/applications/misc/ttyper/default.nix+4−4 pkgs/applications/misc/tuhi/default.nix−63 pkgs/applications/misc/tut/default.nix+3−3 pkgs/applications/misc/tvbrowser/bin.nix+6−4 pkgs/applications/misc/udevil/default.nix+13−31 pkgs/applications/misc/udiskie/default.nix+26−35 pkgs/applications/misc/udiskie/locale-path.patch−17 pkgs/applications/misc/ulauncher/default.nix+1−6 pkgs/applications/misc/upwork/default.nix+4−14 pkgs/applications/misc/urlscan/default.nix+2−2 pkgs/applications/misc/urlview/default.nix+5−5 pkgs/applications/misc/variety/default.nix+38−43 pkgs/applications/misc/veracrypt/default.nix+2−2 pkgs/applications/misc/vifm/default.nix+1 pkgs/applications/misc/viking/default.nix+2−2 pkgs/applications/misc/visidata/default.nix+3−5 pkgs/applications/misc/vit/default.nix+5−3 pkgs/applications/misc/waybar/default.nix+2−7 pkgs/applications/misc/weather/default.nix+5−5 pkgs/applications/misc/wego/default.nix+13−11 pkgs/applications/misc/wego/deps.nix+48 pkgs/applications/misc/whalebird/default.nix+3−3 pkgs/applications/misc/wike/default.nix+11−11 pkgs/applications/misc/wlclock/default.nix−46 pkgs/applications/misc/wmname/default.nix+1−7 pkgs/applications/misc/worker/default.nix+2−2 pkgs/applications/misc/wtf/default.nix+4−5 pkgs/applications/misc/xastir/default.nix+4−8 pkgs/applications/misc/xchm/default.nix+2−2 pkgs/applications/misc/xdg-launch/default.nix+2−2 pkgs/applications/misc/xdragon/default.nix+28 pkgs/applications/misc/xiphos/0001-Add-dbus-glib-dependency-to-main.patch−38 pkgs/applications/misc/xiphos/default.nix+21−78 pkgs/applications/misc/xkblayout-state/default.nix+4−6 pkgs/applications/misc/xmind/default.nix+2−2 pkgs/applications/misc/xmr-stak/default.nix+1−1 pkgs/applications/misc/xmrig/default.nix+2−2 pkgs/applications/misc/xmrig/moneroocean.nix+2−2 pkgs/applications/misc/xmrig/proxy.nix+2−2 pkgs/applications/misc/xpdf/default.nix+4−3 pkgs/applications/misc/xplr/default.nix+3−3 pkgs/applications/misc/xrandr-invert-colors/default.nix+5−8 pkgs/applications/misc/xteddy/default.nix+1−1 pkgs/applications/misc/yambar/default.nix+20−21 pkgs/applications/misc/yarssr/default.nix+81 pkgs/applications/misc/yate/default.nix+5−7 pkgs/applications/misc/ydict/default.nix−28 pkgs/applications/misc/yubioath-desktop/default.nix+1−1 pkgs/applications/misc/zathura/core/default.nix+2−2 pkgs/applications/misc/zathura/default.nix+1−1 pkgs/applications/misc/zathura/wrapper.nix+1−2 pkgs/applications/misc/zettlr/default.nix+2−2 pkgs/applications/misc/zola/default.nix+6−8 pkgs/applications/misc/zscroll/default.nix+3−3 pkgs/applications/networking/aether/default.nix+19−15 pkgs/applications/networking/alpnpass/default.nix−34 pkgs/applications/networking/apache-directory-studio/default.nix+1−1 pkgs/applications/networking/appgate-sdp/default.nix+3−2 pkgs/applications/networking/bee/bee.nix+4−2 pkgs/applications/networking/blocky/default.nix−33 pkgs/applications/networking/breitbandmessung/default.nix−153 pkgs/applications/networking/browsers/amfora/default.nix+3−3 pkgs/applications/networking/browsers/bombadillo/default.nix+2−2 pkgs/applications/networking/browsers/brave/default.nix+55−72 pkgs/applications/networking/browsers/chromium/browser.nix+1−3 pkgs/applications/networking/browsers/chromium/common.nix+39−32 pkgs/applications/networking/browsers/chromium/default.nix+11−10 pkgs/applications/networking/browsers/chromium/get-commit-message.py+3−3 pkgs/applications/networking/browsers/chromium/ungoogled-flags.toml−23 pkgs/applications/networking/browsers/chromium/update.py+3−17 pkgs/applications/networking/browsers/chromium/upstream-info.json+29−30 pkgs/applications/networking/browsers/elinks/default.nix+2−2 pkgs/applications/networking/browsers/eolie/default.nix+1−1 pkgs/applications/networking/browsers/falkon/default.nix+57 pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix+393−393 pkgs/applications/networking/browsers/firefox-bin/default.nix+2−2 pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix+393−393 pkgs/applications/networking/browsers/firefox-bin/release_sources.nix+393−393 pkgs/applications/networking/browsers/firefox/common.nix+200−331 pkgs/applications/networking/browsers/firefox/librewolf/default.nix−41 pkgs/applications/networking/browsers/firefox/librewolf/src.json−11 pkgs/applications/networking/browsers/firefox/librewolf/src.nix−18 pkgs/applications/networking/browsers/firefox/librewolf/update.nix−65 pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx96.patch−27 pkgs/applications/networking/browsers/firefox/packages.nix+5−31 pkgs/applications/networking/browsers/firefox/wrapper.nix+47−41 pkgs/applications/networking/browsers/google-chrome/default.nix+14−16 pkgs/applications/networking/browsers/icecat-bin/default.nix+130 pkgs/applications/networking/browsers/kristall/default.nix+14−27 pkgs/applications/networking/browsers/lagrange/default.nix+10−4 pkgs/applications/networking/browsers/links2/default.nix+2−3 pkgs/applications/networking/browsers/microsoft-edge/browser.nix−191 pkgs/applications/networking/browsers/microsoft-edge/default.nix−20 pkgs/applications/networking/browsers/microsoft-edge/update.sh−50 pkgs/applications/networking/browsers/nyxt/default.nix+3−3 pkgs/applications/networking/browsers/opera/default.nix+5−8 pkgs/applications/networking/browsers/palemoon/default.nix+85−62 pkgs/applications/networking/browsers/palemoon/mozconfig−46 pkgs/applications/networking/browsers/qtchan/default.nix+1−1 pkgs/applications/networking/browsers/qutebrowser/default.nix+5−8 pkgs/applications/networking/browsers/surf/default.nix+1−1 pkgs/applications/networking/browsers/telescope/default.nix+2−7 pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix+10−26 pkgs/applications/networking/browsers/vieb/default.nix+4−4 pkgs/applications/networking/browsers/vieb/package.json+17−12 pkgs/applications/networking/browsers/vieb/yarn.lock+1481−1276 pkgs/applications/networking/browsers/vieb/yarn.nix+1546−1330 pkgs/applications/networking/browsers/vivaldi/default.nix+7−11 pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix+8−5 pkgs/applications/networking/browsers/vivaldi/update.sh+1−5 pkgs/applications/networking/browsers/vivaldi/widevine.nix+2−2 pkgs/applications/networking/browsers/webbrowser/default.nix+109 pkgs/applications/networking/browsers/yandex-browser/default.nix+11−18 pkgs/applications/networking/c14/default.nix+22 pkgs/applications/networking/calls/default.nix+8−16 pkgs/applications/networking/cawbird/default.nix+2−2 pkgs/applications/networking/charles/default.nix+3−10 pkgs/applications/networking/cisco-packet-tracer/7.nix+1−1 pkgs/applications/networking/cisco-packet-tracer/8.nix+3−4 pkgs/applications/networking/cloudflare-dyndns/default.nix−53 pkgs/applications/networking/cloudflared/default.nix+9−20 pkgs/applications/networking/cluster/argo-rollouts/default.nix−27 pkgs/applications/networking/cluster/argo/default.nix+6−9 pkgs/applications/networking/cluster/argocd-autopilot/default.nix−54 pkgs/applications/networking/cluster/argocd/default.nix+32−16 pkgs/applications/networking/cluster/arkade/default.nix−47 pkgs/applications/networking/cluster/assign-lb-ip/default.nix+2−2 pkgs/applications/networking/cluster/atlantis/default.nix+5−8 pkgs/applications/networking/cluster/bosh-cli/default.nix+2−2 pkgs/applications/networking/cluster/cilium/default.nix+2−2 pkgs/applications/networking/cluster/cloudfoundry-cli/default.nix+3−4 pkgs/applications/networking/cluster/clusterctl/default.nix−41 pkgs/applications/networking/cluster/cmctl/default.nix−38 pkgs/applications/networking/cluster/cni/plugins.nix+2−2 pkgs/applications/networking/cluster/driftctl/default.nix−56 pkgs/applications/networking/cluster/flink/default.nix+3−2 pkgs/applications/networking/cluster/fluxcd/default.nix+13−12 pkgs/applications/networking/cluster/fluxcd/patches/disable-tests-ssh_key.patch+7−5 pkgs/applications/networking/cluster/fluxcd/update.sh+31−38 pkgs/applications/networking/cluster/fluxctl/default.nix+3−3 pkgs/applications/networking/cluster/fn-cli/default.nix+2−2 pkgs/applications/networking/cluster/glooctl/default.nix−36 pkgs/applications/networking/cluster/hadoop/default.nix+16−52 pkgs/applications/networking/cluster/helm-docs/default.nix+3−3 pkgs/applications/networking/cluster/helm/chart-testing/default.nix+4−12 pkgs/applications/networking/cluster/helm/default.nix+10−23 pkgs/applications/networking/cluster/helm/plugins/helm-diff.nix+1−1 pkgs/applications/networking/cluster/helm/plugins/helm-s3.nix+1−1 pkgs/applications/networking/cluster/helm/plugins/helm-secrets.nix+1−1 pkgs/applications/networking/cluster/helmfile/default.nix+3−3 pkgs/applications/networking/cluster/helmsman/default.nix+3−3 pkgs/applications/networking/cluster/hubble/default.nix+2−2 pkgs/applications/networking/cluster/istioctl/default.nix+6−9 pkgs/applications/networking/cluster/k0sctl/default.nix+1−1 pkgs/applications/networking/cluster/k3s/default.nix+126−165 pkgs/applications/networking/cluster/k3s/patches/0001-scrips-download-strip-downloading-just-package-CRD.patch−41 pkgs/applications/networking/cluster/k3s/patches/0002-Add-nixpkgs-patches.patch+81 pkgs/applications/networking/cluster/k3s/update.sh+7−49 pkgs/applications/networking/cluster/k3sup/default.nix−48 pkgs/applications/networking/cluster/k9s/default.nix+6−9 pkgs/applications/networking/cluster/kbst/default.nix−40 pkgs/applications/networking/cluster/kconf/default.nix+3−7 pkgs/applications/networking/cluster/kn/default.nix+3−3 pkgs/applications/networking/cluster/kompose/default.nix+7−17 pkgs/applications/networking/cluster/kontemplate/default.nix+1 pkgs/applications/networking/cluster/kops/default.nix+10−10 pkgs/applications/networking/cluster/kpt/default.nix+3−3 pkgs/applications/networking/cluster/krane/Gemfile.lock+29−30 pkgs/applications/networking/cluster/krane/default.nix+9 pkgs/applications/networking/cluster/krane/gemset.nix+60−61 pkgs/applications/networking/cluster/krelay/default.nix−31 pkgs/applications/networking/cluster/kube-capacity/default.nix+3−3 pkgs/applications/networking/cluster/kube-score/default.nix+3−3 pkgs/applications/networking/cluster/kube3d/default.nix+14−31 pkgs/applications/networking/cluster/kubebuilder/default.nix+3−3 pkgs/applications/networking/cluster/kubecfg/default.nix+7−7 pkgs/applications/networking/cluster/kubecolor/default.nix−25 pkgs/applications/networking/cluster/kubeconform/default.nix+2−2 pkgs/applications/networking/cluster/kubectl-doctor/default.nix+3−3 pkgs/applications/networking/cluster/kubectl-example/default.nix+2−2 pkgs/applications/networking/cluster/kubectl-tree/default.nix−23 pkgs/applications/networking/cluster/kubectl/default.nix+29 pkgs/applications/networking/cluster/kubedb-cli/default.nix+2−2 pkgs/applications/networking/cluster/kubeless/default.nix+38 pkgs/applications/networking/cluster/kubelogin-oidc/default.nix+3−3 pkgs/applications/networking/cluster/kubelogin/default.nix+2−2 pkgs/applications/networking/cluster/kubemqctl/default.nix−25 pkgs/applications/networking/cluster/kubent/default.nix−29 pkgs/applications/networking/cluster/kubeone/default.nix+3−3 pkgs/applications/networking/cluster/kubergrunt/default.nix−31 pkgs/applications/networking/cluster/kubernetes/default.nix+17−18 pkgs/applications/networking/cluster/kubernetes/kubectl.nix−38 pkgs/applications/networking/cluster/kubeseal/default.nix+4−2 pkgs/applications/networking/cluster/kubeval/default.nix+5−9 pkgs/applications/networking/cluster/kuma/default.nix−65 pkgs/applications/networking/cluster/kumactl/default.nix+34 pkgs/applications/networking/cluster/kuttl/default.nix−1 pkgs/applications/networking/cluster/lens/default.nix+6−11 pkgs/applications/networking/cluster/levant/default.nix+3−1 pkgs/applications/networking/cluster/linkerd/default.nix+1−1 pkgs/applications/networking/cluster/linkerd/edge.nix+3−3 pkgs/applications/networking/cluster/linkerd/generic.nix+1 pkgs/applications/networking/cluster/minikube/default.nix+3−3 pkgs/applications/networking/cluster/nerdctl/default.nix+3−3 pkgs/applications/networking/cluster/nixops/default.nix+3−7 pkgs/applications/networking/cluster/nixops/poetry-git-overlay.nix+7−27 pkgs/applications/networking/cluster/nixops/poetry.lock+130−190 pkgs/applications/networking/cluster/nixops/pyproject.toml+3−8 pkgs/applications/networking/cluster/nomad-autoscaler/default.nix+14−12 pkgs/applications/networking/cluster/nomad-pack/default.nix−38 pkgs/applications/networking/cluster/nomad/1.0.nix+11 pkgs/applications/networking/cluster/nomad/1.1.nix+4−4 pkgs/applications/networking/cluster/nomad/1.2.nix−12 pkgs/applications/networking/cluster/nomad/generic.nix+6−11 pkgs/applications/networking/cluster/nomad/genericModule.nix+54 pkgs/applications/networking/cluster/ocm/default.nix−32 pkgs/applications/networking/cluster/octant/default.nix+5−5 pkgs/applications/networking/cluster/odo/default.nix−38 pkgs/applications/networking/cluster/openshift/default.nix+45−36 pkgs/applications/networking/cluster/pachyderm/default.nix−1 pkgs/applications/networking/cluster/pgo-client/default.nix+3−4 pkgs/applications/networking/cluster/pluto/default.nix−27 pkgs/applications/networking/cluster/popeye/default.nix+4−3 pkgs/applications/networking/cluster/qbec/default.nix+3−3 pkgs/applications/networking/cluster/rancher/default.nix+6−4 pkgs/applications/networking/cluster/sonobuoy/default.nix+4−4 pkgs/applications/networking/cluster/spacegun/node-composition.nix+1−1 pkgs/applications/networking/cluster/spark/default.nix+27−42 pkgs/applications/networking/cluster/ssm-session-manager-plugin/default.nix+7−10 pkgs/applications/networking/cluster/starboard/default.nix+7−39 pkgs/applications/networking/cluster/stern/default.nix+3−3 pkgs/applications/networking/cluster/talosctl/default.nix−60 pkgs/applications/networking/cluster/tanka/default.nix+3−4 pkgs/applications/networking/cluster/tektoncd-cli/default.nix+9−16 pkgs/applications/networking/cluster/temporal/default.nix+7−8 pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix+26 pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix+11 pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix+29 pkgs/applications/networking/cluster/terraform-providers/default.nix+51−96 pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix+26 pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix+21 pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix+32 pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix+57 pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix+26 pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix+27 pkgs/applications/networking/cluster/terraform-providers/providers.json+667−771 pkgs/applications/networking/cluster/terraform-providers/teleport/default.nix+31 pkgs/applications/networking/cluster/terraform-providers/update-all-providers+7−10 pkgs/applications/networking/cluster/terraform-providers/update-provider+81−65 pkgs/applications/networking/cluster/terraform-providers/vercel/default.nix+23 pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix+29 pkgs/applications/networking/cluster/terraform/default.nix+62−59 pkgs/applications/networking/cluster/terragrunt/default.nix+3−3 pkgs/applications/networking/cluster/terranix/default.nix+3−3 pkgs/applications/networking/cluster/tfswitch/default.nix+5−3 pkgs/applications/networking/cluster/tgswitch/default.nix−21 pkgs/applications/networking/cluster/tilt/default.nix+2−2 pkgs/applications/networking/cluster/vcluster/default.nix−45 pkgs/applications/networking/cluster/velero/default.nix+7−4 pkgs/applications/networking/cluster/waypoint/default.nix+6−4 pkgs/applications/networking/cluster/werf/default.nix−60 pkgs/applications/networking/compactor/default.nix+21−33 pkgs/applications/networking/cozy-drive/default.nix+2−2 pkgs/applications/networking/dnscontrol/default.nix+3−3 pkgs/applications/networking/droopy/default.nix−4 pkgs/applications/networking/dropbox/default.nix+2−2 pkgs/applications/networking/feedreaders/gnome-feeds/default.nix−2 pkgs/applications/networking/feedreaders/indigenous-desktop/default.nix−54 pkgs/applications/networking/feedreaders/newsboat/default.nix+6−3 pkgs/applications/networking/feedreaders/photon/default.nix−27 pkgs/applications/networking/feedreaders/rawdog/default.nix+26 pkgs/applications/networking/feedreaders/rss2email/default.nix+1−1 pkgs/applications/networking/feedreaders/rssguard/default.nix+2−2 pkgs/applications/networking/firewalld/default.nix−104 pkgs/applications/networking/firewalld/respect-xml-catalog-files-var.patch−13 pkgs/applications/networking/flexget/default.nix+4−10 pkgs/applications/networking/ftp/filezilla/default.nix+2−2 pkgs/applications/networking/ftp/gftp/default.nix−57 pkgs/applications/networking/gftp/default.nix+56 pkgs/applications/networking/giara/default.nix+10−28 pkgs/applications/networking/gmailctl/default.nix+6−5 pkgs/applications/networking/gns3/default.nix+8−7 pkgs/applications/networking/gns3/gui.nix+7−47 pkgs/applications/networking/gns3/server.nix+17−48 pkgs/applications/networking/gopher/sacc/default.nix+3−3 pkgs/applications/networking/hydroxide/default.nix+3−3 pkgs/applications/networking/hyprspace/default.nix+3−3 pkgs/applications/networking/ids/suricata/default.nix+2−2 pkgs/applications/networking/ids/zeek/default.nix+6−23 pkgs/applications/networking/instant-messengers/SkypeExport/default.nix+1−1 pkgs/applications/networking/instant-messengers/alfaview/default.nix−78 pkgs/applications/networking/instant-messengers/baresip/default.nix+24−92 pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix+1−1 pkgs/applications/networking/instant-messengers/bitlbee-mastodon/default.nix+2−2 pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix+2−2 pkgs/applications/networking/instant-messengers/bitlbee/default.nix+3−3 pkgs/applications/networking/instant-messengers/blink/default.nix+68 pkgs/applications/networking/instant-messengers/blink/pythonpath.patch+49 pkgs/applications/networking/instant-messengers/bluejeans/default.nix+2−2 pkgs/applications/networking/instant-messengers/caprine-bin/build-from-appimage.nix−50 pkgs/applications/networking/instant-messengers/caprine-bin/build-from-dmg.nix−35 pkgs/applications/networking/instant-messengers/caprine-bin/default.nix−25 pkgs/applications/networking/instant-messengers/chatty/default.nix+2−7 pkgs/applications/networking/instant-messengers/cinny/default.nix−31 pkgs/applications/networking/instant-messengers/coyim/default.nix−1 pkgs/applications/networking/instant-messengers/deltachat-cursed/default.nix+2−2 pkgs/applications/networking/instant-messengers/deltachat-desktop/default.nix+26−53 pkgs/applications/networking/instant-messengers/deltachat-desktop/no-static-lib.patch−39 pkgs/applications/networking/instant-messengers/deltachat-desktop/package.json+12−15 pkgs/applications/networking/instant-messengers/deltachat-desktop/update.sh+7−10 pkgs/applications/networking/instant-messengers/dino/default.nix+5−14 pkgs/applications/networking/instant-messengers/discord/base.nix+93 pkgs/applications/networking/instant-messengers/discord/darwin.nix−14 pkgs/applications/networking/instant-messengers/discord/default.nix+29−78 pkgs/applications/networking/instant-messengers/discord/linux.nix−118 pkgs/applications/networking/instant-messengers/element/element-desktop-package.json+12−18 pkgs/applications/networking/instant-messengers/element/element-desktop.nix+14−34 pkgs/applications/networking/instant-messengers/element/keytar/default.nix+1−8 pkgs/applications/networking/instant-messengers/element/pin.json+4−4 pkgs/applications/networking/instant-messengers/element/seshat/default.nix+3−9 pkgs/applications/networking/instant-messengers/ferdi/default.nix+3−3 pkgs/applications/networking/instant-messengers/fluffychat/default.nix−81 pkgs/applications/networking/instant-messengers/fractal/default.nix+1−12 pkgs/applications/networking/instant-messengers/franz/default.nix+2−2 pkgs/applications/networking/instant-messengers/franz/generic.nix+3−2 pkgs/applications/networking/instant-messengers/gajim/default.nix+4−19 pkgs/applications/networking/instant-messengers/gitter/default.nix+3−2 pkgs/applications/networking/instant-messengers/gomuks/default.nix+2−2 pkgs/applications/networking/instant-messengers/gotktrix/default.nix−42 pkgs/applications/networking/instant-messengers/gtmess/default.nix+20 pkgs/applications/networking/instant-messengers/gurk-rs/default.nix−30 pkgs/applications/networking/instant-messengers/jackline/default.nix+3−3 pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_args_common−1 pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_patches−1 pkgs/applications/networking/instant-messengers/jami/config/pjsip_patches+19 pkgs/applications/networking/instant-messengers/jami/daemon.nix+3−11 pkgs/applications/networking/instant-messengers/jami/default.nix+2−2 pkgs/applications/networking/instant-messengers/jami/pjproject-src.nix−6 pkgs/applications/networking/instant-messengers/jami/update.sh+1−9 pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix+3−5 pkgs/applications/networking/instant-messengers/jitsi/default.nix+1−1 pkgs/applications/networking/instant-messengers/kaidan/default.nix−2 pkgs/applications/networking/instant-messengers/kdeltachat/default.nix+3−3 pkgs/applications/networking/instant-messengers/linphone/default.nix+13−40 pkgs/applications/networking/instant-messengers/linphone/do-not-build-linphone-sdk.patch+31−56 pkgs/applications/networking/instant-messengers/linphone/no-store-path-in-autostart.patch−27 pkgs/applications/networking/instant-messengers/linphone/remove-bc_compute_full_version-usage.patch+6−6 pkgs/applications/networking/instant-messengers/matrixcli/default.nix+5−5 pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix+100−86 pkgs/applications/networking/instant-messengers/mcabber/default.nix+2 pkgs/applications/networking/instant-messengers/mikutter/default.nix+2−2 pkgs/applications/networking/instant-messengers/mirage/default.nix+6−9 pkgs/applications/networking/instant-messengers/mm/default.nix+1−1 pkgs/applications/networking/instant-messengers/neochat/default.nix+3−9 pkgs/applications/networking/instant-messengers/nheko/default.nix+2−12 pkgs/applications/networking/instant-messengers/pantalaimon/default.nix+2−2 pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix+10−8 pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix+2−2 pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-googlechat/default.nix−27 pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix+2−2 pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix+8−6 pkgs/applications/networking/instant-messengers/pond/default.nix+8−8 pkgs/applications/networking/instant-messengers/profanity/default.nix+4−4 pkgs/applications/networking/instant-messengers/psi-plus/default.nix+2−4 pkgs/applications/networking/instant-messengers/pybitmessage/default.nix+40 pkgs/applications/networking/instant-messengers/qtox/default.nix+2−2 pkgs/applications/networking/instant-messengers/rambox/pro.nix+1−1 pkgs/applications/networking/instant-messengers/rambox/rambox.nix+2−1 pkgs/applications/networking/instant-messengers/ricochet/default.nix+9−26 pkgs/applications/networking/instant-messengers/ripcord/darwin.nix−33 pkgs/applications/networking/instant-messengers/ripcord/default.nix+1−1 pkgs/applications/networking/instant-messengers/rocketchat-desktop/default.nix+4−8 pkgs/applications/networking/instant-messengers/schildichat/pin.json+4−7 pkgs/applications/networking/instant-messengers/schildichat/schildichat-desktop.nix+20−20 pkgs/applications/networking/instant-messengers/schildichat/schildichat-web.nix+10−35 pkgs/applications/networking/instant-messengers/schildichat/update.sh+8−16 pkgs/applications/networking/instant-messengers/scudcloud/default.nix+7−9 pkgs/applications/networking/instant-messengers/session-desktop-appimage/default.nix+5−41 pkgs/applications/networking/instant-messengers/signal-cli/default.nix+7−7 pkgs/applications/networking/instant-messengers/signal-desktop/default.nix+41−11 pkgs/applications/networking/instant-messengers/signalbackup-tools/apple-sdk-missing-utimensat.patch−34 pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix−45 pkgs/applications/networking/instant-messengers/signald/0001-Fetch-buildconfig-during-gradle-build-inside-Nix-FOD.patch−35 pkgs/applications/networking/instant-messengers/signald/0002-buildconfig-local-deps-fixes.patch−60 pkgs/applications/networking/instant-messengers/signald/default.nix+26−20 pkgs/applications/networking/instant-messengers/signald/gradle-plugin.patch+19 pkgs/applications/networking/instant-messengers/sky/default.nix−66 pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix+4−3 pkgs/applications/networking/instant-messengers/slack/default.nix+31−32 pkgs/applications/networking/instant-messengers/slack/update.sh+2−9 pkgs/applications/networking/instant-messengers/teams/default.nix+78−119 pkgs/applications/networking/instant-messengers/teamspeak/client.nix+3−3 pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix+33−191 pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/kf594.patch−57 pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/kotato-10.12-sdk.patch−424 pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/shortcuts-binary-path.patch−38 pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt-10.12-sdk.patch−68 pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix+15−111 pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/with-webkit.nix−23 pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix+6−20 pkgs/applications/networking/instant-messengers/telegram/tdesktop/kf594.diff−57 pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix+3−5 pkgs/applications/networking/instant-messengers/tensor/default.nix+6−7 pkgs/applications/networking/instant-messengers/threema-desktop/default.nix+3−3 pkgs/applications/networking/instant-messengers/torchat/default.nix+6−6 pkgs/applications/networking/instant-messengers/twinkle/default.nix+18−4 pkgs/applications/networking/instant-messengers/viber/default.nix+4−4 pkgs/applications/networking/instant-messengers/vk-messenger/default.nix+5−5 pkgs/applications/networking/instant-messengers/wavebox/default.nix+1−1 pkgs/applications/networking/instant-messengers/whatsapp-for-linux/default.nix+2−2 pkgs/applications/networking/instant-messengers/wire-desktop/default.nix+9−8 pkgs/applications/networking/instant-messengers/zoom-us/default.nix+9−48 pkgs/applications/networking/instant-messengers/zulip-term/default.nix−1 pkgs/applications/networking/instant-messengers/zulip/default.nix+2−2 pkgs/applications/networking/ipfs-cluster/default.nix+4−4 pkgs/applications/networking/ipfs-migrator/all-migrations.nix−63 pkgs/applications/networking/ipfs-migrator/default.nix+20−16 pkgs/applications/networking/ipfs-migrator/unwrapped.nix−35 pkgs/applications/networking/ipfs/default.nix+10−20 pkgs/applications/networking/ipget/default.nix+3−3 pkgs/applications/networking/irc/bip/default.nix+1−2 pkgs/applications/networking/irc/catgirl/default.nix+2−4 pkgs/applications/networking/irc/communi/default.nix+4−5 pkgs/applications/networking/irc/convos/default.nix+5−6 pkgs/applications/networking/irc/hexchat/default.nix+3−3 pkgs/applications/networking/irc/ii/default.nix+5−5 pkgs/applications/networking/irc/ircdog/default.nix+4−5 pkgs/applications/networking/irc/irssi/default.nix+5−15 pkgs/applications/networking/irc/irssi/fish/default.nix+3−3 pkgs/applications/networking/irc/kirc/default.nix+3−3 pkgs/applications/networking/irc/quassel/0001-common-Disable-enum-type-stream-operators-for-Qt-5.1.patch+37 pkgs/applications/networking/irc/quassel/default.nix+13−6 pkgs/applications/networking/irc/senpai/default.nix+4−4 pkgs/applications/networking/irc/sic/default.nix+1−4 pkgs/applications/networking/irc/srain/default.nix+2−2 pkgs/applications/networking/irc/tiny/default.nix+5−9 pkgs/applications/networking/irc/weechat/default.nix+3−3 pkgs/applications/networking/irc/wraith/configure.patch+3−3 pkgs/applications/networking/irc/wraith/default.nix+5−5 pkgs/applications/networking/irc/wraith/dlopen.patch+6−6 pkgs/applications/networking/jmeter/default.nix+2−2 pkgs/applications/networking/juju/default.nix+3−3 pkgs/applications/networking/libcoap/default.nix+9−11 pkgs/applications/networking/lieer/default.nix+1 pkgs/applications/networking/linssid/default.nix+3−3 pkgs/applications/networking/maestral-qt/default.nix+2−7 pkgs/applications/networking/mailreaders/aerc/default.nix+16−25 pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch+56−86 pkgs/applications/networking/mailreaders/afew/default.nix+1−1 pkgs/applications/networking/mailreaders/alot/default.nix−97 pkgs/applications/networking/mailreaders/claws-mail/default.nix+41−14 pkgs/applications/networking/mailreaders/electron-mail/default.nix+4−7 pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix+3−3 pkgs/applications/networking/mailreaders/evolution/evolution/default.nix+4−11 pkgs/applications/networking/mailreaders/hasmail/default.nix+1−1 pkgs/applications/networking/mailreaders/himalaya/default.nix+6−10 pkgs/applications/networking/mailreaders/mailpile/default.nix+52 pkgs/applications/networking/mailreaders/mailspring/default.nix+4−9 pkgs/applications/networking/mailreaders/mblaze/default.nix+2−2 pkgs/applications/networking/mailreaders/meli/default.nix+4−3 pkgs/applications/networking/mailreaders/mlarchive2maildir/default.nix+1−1 pkgs/applications/networking/mailreaders/mutt/default.nix+2−2 pkgs/applications/networking/mailreaders/neomutt/default.nix+12−2 pkgs/applications/networking/mailreaders/notbit/default.nix+30 pkgs/applications/networking/mailreaders/notmuch-bower/default.nix+2−2 pkgs/applications/networking/mailreaders/notmuch/default.nix+7−24 pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix+67−88 pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix+261−261 pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch−13 pkgs/applications/networking/mailreaders/thunderbird/packages.nix+4−8 pkgs/applications/networking/mailreaders/tutanota-desktop/default.nix+2−2 pkgs/applications/networking/mhost/default.nix+1−3 pkgs/applications/networking/misc/zammad/0001-nulldb.patch−15 pkgs/applications/networking/misc/zammad/default.nix−141 pkgs/applications/networking/misc/zammad/gemset.nix−2608 pkgs/applications/networking/misc/zammad/package.json−18 pkgs/applications/networking/misc/zammad/source.json−7 pkgs/applications/networking/misc/zammad/update.nix−37

12671 more files changed are not listed.

.editorconfig+14−5
@@ -55,23 +55,25 @@ trim_trailing_whitespace = unset
5555[*.lock]
5656indent_size = unset
5757
58−# trailing whitespace is an actual syntax element of classic Markdown/
59−# CommonMark to enforce a line break
60−[*.md]
61−trim_trailing_whitespace = unset
62−
6358[eggs.nix]
6459trim_trailing_whitespace = unset
6560
6661[nixos/modules/services/networking/ircd-hybrid/*.{conf,in}]
6762trim_trailing_whitespace = unset
6863
64+[nixos/tests/systemd-networkd-vrf.nix]
65+trim_trailing_whitespace = unset
66+
6967[pkgs/build-support/dotnetenv/Wrapper/**]
7068end_of_line = unset
7169indent_style = unset
7270insert_final_newline = unset
7371trim_trailing_whitespace = unset
7472
73+[pkgs/build-support/upstream-updater/**]
74+indent_style = unset
75+trim_trailing_whitespace = unset
76+
7577[pkgs/development/compilers/elm/registry.dat]
7678end_of_line = unset
7779insert_final_newline = unset
@@ -85,3 +87,10 @@ trim_trailing_whitespace = unset
8587
8688[pkgs/tools/misc/timidity/timidity.cfg]
8789trim_trailing_whitespace = unset
90+
91+[pkgs/tools/security/enpass/data.json]
92+insert_final_newline = unset
93+trim_trailing_whitespace = unset
94+
95+[pkgs/top-level/emscripten-packages.nix]
96+trim_trailing_whitespace = unset
.git-blame-ignore-revsdeleted−32
@@ -1,32 +0,0 @@
1−# This file contains a list of commits that are not likely what you
2−# are looking for in a blame, such as mass reformatting or renaming.
3−# You can set this file as a default ignore file for blame by running
4−# the following command.
5−#
6−# $ git config blame.ignoreRevsFile .git-blame-ignore-revs
7−#
8−# To temporarily not use this file add
9−# --ignore-revs-file=""
10−# to your blame command.
11−#
12−# The ignoreRevsFile can't be set globally due to blame failing if the file isn't present.
13−# To not have to set the option in every repository it is needed in,
14−# save the following script in your path with the name "git-bblame"
15−# now you can run
16−# $ git bblame $FILE
17−# to use the .git-blame-ignore-revs file if it is present.
18−#
19−# #!/usr/bin/env bash
20−# repo_root=$(git rev-parse --show-toplevel)
21−# if [[ -e $repo_root/.git-blame-ignore-revs ]]; then
22−# git blame --ignore-revs-file="$repo_root/.git-blame-ignore-revs" $@
23−# else
24−# git blame $@
25−# fi
26−
27−
28−# nixos/modules/rename: Sort alphabetically
29−1f71224fe86605ef4cd23ed327b3da7882dad382
30−
31−# nixos: fix module paths in rename.nix
32−d08ede042b74b8199dc748323768227b88efcf7c
.github/CODEOWNERS+47−99
@@ -6,10 +6,6 @@
66#
77# For documentation on this file, see https://help.github.com/articles/about-codeowners/
88# Mentioned users will get code review requests.
9−#
10−# IMPORTANT NOTE: in order to actually get pinged, commit access is required.
11−# This also holds true for GitHub teams. Since almost none of our teams have write
12−# permissions, you need to list all members of the team with commit access individually.
139
1410# This file
1511/.github/CODEOWNERS @edolstra
@@ -38,11 +34,10 @@
3834/pkgs/top-level/release-cross.nix @Ericson2314 @matthewbauer
3935/pkgs/stdenv/generic @Ericson2314 @matthewbauer
4036/pkgs/stdenv/cross @Ericson2314 @matthewbauer
41−/pkgs/build-support/cc-wrapper @Ericson2314
42−/pkgs/build-support/bintools-wrapper @Ericson2314
37+/pkgs/build-support/cc-wrapper @Ericson2314 @orivej
38+/pkgs/build-support/bintools-wrapper @Ericson2314 @orivej
4339/pkgs/build-support/setup-hooks @Ericson2314
44−/pkgs/build-support/setup-hooks/auto-patchelf.sh @layus
45−/pkgs/build-support/setup-hooks/auto-patchelf.py @layus
40+/pkgs/build-support/setup-hooks/auto-patchelf.sh @aszlig
4641
4742# Nixpkgs build-support
4843/pkgs/build-support/writers @lassulus @Profpatsch
@@ -75,12 +70,6 @@
7570# NixOS integration test driver
7671/nixos/lib/test-driver @tfc
7772
78−# Systemd
79−/nixos/modules/system/boot/systemd.nix @NixOS/systemd
80−/nixos/modules/system/boot/systemd @NixOS/systemd
81−/nixos/lib/systemd-*.nix @NixOS/systemd
82−/pkgs/os-specific/linux/systemd @NixOS/systemd
83−
8473# Updaters
8574## update.nix
8675/maintainers/scripts/update.nix @jtojnar
@@ -95,7 +84,8 @@
9584/pkgs/development/python-modules @FRidh @jonringer
9685/doc/languages-frameworks/python.section.md @FRidh
9786/pkgs/development/tools/poetry2nix @adisbladis
98−/pkgs/development/interpreters/python/hooks @FRidh @jonringer
87+/pkgs/development/interpreters/python/hooks @FRidh @jonringer @DavHau
88+/pkgs/development/interpreters/python/conda @DavHau
9989
10090# Haskell
10191/doc/languages-frameworks/haskell.section.md @cdepillabout @sternenseemann @maralorn @expipiplus1
@@ -107,13 +97,13 @@
10797/pkgs/top-level/haskell-packages.nix @cdepillabout @sternenseemann @maralorn @expipiplus1
10898
10999# Perl
110−/pkgs/development/interpreters/perl @stigtsp @zakame
111−/pkgs/top-level/perl-packages.nix @stigtsp @zakame
112−/pkgs/development/perl-modules @stigtsp @zakame
100+/pkgs/development/interpreters/perl @volth @stigtsp @zakame
101+/pkgs/top-level/perl-packages.nix @volth @stigtsp @zakame
102+/pkgs/development/perl-modules @volth @stigtsp @zakame
113103
114104# R
115−/pkgs/applications/science/math/R @jbedo
116−/pkgs/development/r-modules @jbedo
105+/pkgs/applications/science/math/R @jbedo @bcdarwin
106+/pkgs/development/r-modules @jbedo @bcdarwin
117107
118108# Ruby
119109/pkgs/development/interpreters/ruby @marsam
@@ -121,8 +111,11 @@
121111
122112# Rust
123113/pkgs/development/compilers/rust @Mic92 @LnL7 @zowoq
124−/pkgs/build-support/rust @zowoq
125−/doc/languages-frameworks/rust.section.md @zowoq
114+/pkgs/build-support/rust @andir @zowoq
115+
116+# Darwin-related
117+/pkgs/stdenv/darwin @NixOS/darwin-maintainers
118+/pkgs/os-specific/darwin @NixOS/darwin-maintainers
126119
127120# C compilers
128121/pkgs/development/compilers/gcc @matthewbauer
@@ -132,14 +125,14 @@
132125/pkgs/top-level/unix-tools.nix @matthewbauer
133126/pkgs/development/tools/xcbuild @matthewbauer
134127
135−# Audio
136−/nixos/modules/services/audio/botamusique.nix @mweinelt
137−/nixos/modules/services/audio/snapserver.nix @mweinelt
138−/nixos/tests/modules/services/audio/botamusique.nix @mweinelt
139−/nixos/tests/snapcast.nix @mweinelt
140−
141−# Browsers
142−/pkgs/applications/networking/browsers/firefox @mweinelt
128+# Beam-related (Erlang, Elixir, LFE, etc)
129+/pkgs/development/beam-modules @gleber
130+/pkgs/development/interpreters/erlang @gleber
131+/pkgs/development/interpreters/lfe @gleber
132+/pkgs/development/interpreters/elixir @gleber
133+/pkgs/development/tools/build-managers/rebar @gleber
134+/pkgs/development/tools/build-managers/rebar3 @gleber
135+/pkgs/development/tools/erlang @gleber
143136
144137# Jetbrains
145138/pkgs/applications/editors/jetbrains @edwtjo
@@ -167,30 +160,12 @@
167160/nixos/tests/hardened.nix @joachifm
168161/pkgs/os-specific/linux/kernel/hardened-config.nix @joachifm
169162
170−# Home Automation
171−/nixos/modules/services/misc/home-assistant.nix @mweinelt
172−/nixos/modules/services/misc/zigbee2mqtt.nix @mweinelt
173−/nixos/tests/home-assistant.nix @mweinelt
174−/nixos/tests/zigbee2mqtt.nix @mweinelt
175−/pkgs/servers/home-assistant @mweinelt
176−/pkgs/tools/misc/esphome @mweinelt
177−
178163# Network Time Daemons
179164/pkgs/tools/networking/chrony @thoughtpolice
180165/pkgs/tools/networking/ntp @thoughtpolice
181166/pkgs/tools/networking/openntpd @thoughtpolice
182167/nixos/modules/services/networking/ntp @thoughtpolice
183168
184−# Network
185−/pkgs/tools/networking/kea/default.nix @mweinelt
186−/pkgs/tools/networking/babeld/default.nix @mweinelt
187−/nixos/modules/services/networking/babeld.nix @mweinelt
188−/nixos/modules/services/networking/kea.nix @mweinelt
189−/nixos/modules/services/networking/knot.nix @mweinelt
190−/nixos/tests/babeld.nix @mweinelt
191−/nixos/tests/kea.nix @mweinelt
192−/nixos/tests/knot.nix @mweinelt
193−
194169# Dhall
195170/pkgs/development/dhall-modules @Gabriel439 @Profpatsch @ehmry
196171/pkgs/development/interpreters/dhall @Gabriel439 @Profpatsch @ehmry
@@ -199,7 +174,7 @@
199174/pkgs/development/idris-modules @Infinisil
200175
201176# Bazel
202−/pkgs/development/tools/build-managers/bazel @Profpatsch
177+/pkgs/development/tools/build-managers/bazel @mboes @Profpatsch
203178
204179# NixOS modules for e-mail and dns services
205180/nixos/modules/services/mail/mailman.nix @peti
@@ -208,18 +183,18 @@
208183/nixos/modules/services/mail/rspamd.nix @peti
209184
210185# Emacs
211−/pkgs/applications/editors/emacs/elisp-packages @adisbladis
212−/pkgs/applications/editors/emacs @adisbladis
213−/pkgs/top-level/emacs-packages.nix @adisbladis
186+/pkgs/applications/editors/emacs-modes @adisbladis
187+/pkgs/applications/editors/emacs @adisbladis
188+/pkgs/top-level/emacs-packages.nix @adisbladis
214189
215190# Neovim
216191/pkgs/applications/editors/neovim @jonringer @teto
217192
218193# VimPlugins
219−/pkgs/applications/editors/vim/plugins @jonringer
194+/pkgs/misc/vim-plugins @jonringer @softinio
220195
221196# VsCode Extensions
222−/pkgs/applications/editors/vscode/extensions @jonringer
197+/pkgs/misc/vscode-extensions @jonringer
223198
224199# Prometheus exporter modules and tests
225200/nixos/modules/services/monitoring/prometheus/exporters.nix @WilliButz
@@ -227,65 +202,38 @@
227202/nixos/tests/prometheus-exporters.nix @WilliButz
228203
229204# PHP interpreter, packages, extensions, tests and documentation
230−/doc/languages-frameworks/php.section.md @aanderse @etu @globin @ma27 @talyz
231−/nixos/tests/php @aanderse @etu @globin @ma27 @talyz
232−/pkgs/build-support/build-pecl.nix @aanderse @etu @globin @ma27 @talyz
233−/pkgs/development/interpreters/php @jtojnar @aanderse @etu @globin @ma27 @talyz
234−/pkgs/development/php-packages @aanderse @etu @globin @ma27 @talyz
235−/pkgs/top-level/php-packages.nix @jtojnar @aanderse @etu @globin @ma27 @talyz
205+/doc/languages-frameworks/php.section.md @NixOS/php @aanderse @etu @globin @ma27 @talyz
206+/nixos/tests/php @NixOS/php @aanderse @etu @globin @ma27 @talyz
207+/pkgs/build-support/build-pecl.nix @NixOS/php @aanderse @etu @globin @ma27 @talyz
208+/pkgs/development/interpreters/php @jtojnar @NixOS/php @aanderse @etu @globin @ma27 @talyz
209+/pkgs/development/php-packages @NixOS/php @aanderse @etu @globin @ma27 @talyz
210+/pkgs/top-level/php-packages.nix @jtojnar @NixOS/php @aanderse @etu @globin @ma27 @talyz
236211
237212# Podman, CRI-O modules and related
238−/nixos/modules/virtualisation/containers.nix @zowoq @adisbladis
239−/nixos/modules/virtualisation/cri-o.nix @zowoq @adisbladis
240−/nixos/modules/virtualisation/podman @zowoq @adisbladis
241−/nixos/tests/cri-o.nix @zowoq @adisbladis
242−/nixos/tests/podman @zowoq @adisbladis
213+/nixos/modules/virtualisation/containers.nix @NixOS/podman @zowoq
214+/nixos/modules/virtualisation/cri-o.nix @NixOS/podman @zowoq
215+/nixos/modules/virtualisation/podman.nix @NixOS/podman @zowoq
216+/nixos/tests/cri-o.nix @NixOS/podman @zowoq
217+/nixos/tests/podman.nix @NixOS/podman @zowoq
243218
244219# Docker tools
245−/pkgs/build-support/docker @roberth
246−/nixos/tests/docker-tools* @roberth
247−/doc/builders/images/dockertools.section.md @roberth
220+/pkgs/build-support/docker @roberth @utdemir
221+/nixos/tests/docker-tools-overlay.nix @roberth
222+/nixos/tests/docker-tools.nix @roberth
223+/doc/builders/images/dockertools.xml @roberth
248224
249225# Blockchains
250226/pkgs/applications/blockchains @mmahut @RaghavSood
251227
252228# Go
253−/doc/languages-frameworks/go.section.md @kalbasit @Mic92 @zowoq
254229/pkgs/development/compilers/go @kalbasit @Mic92 @zowoq
255230/pkgs/development/go-modules @kalbasit @Mic92 @zowoq
256231/pkgs/development/go-packages @kalbasit @Mic92 @zowoq
257232
258−# GNOME
259−/pkgs/desktops/gnome @jtojnar @hedning
260−/pkgs/desktops/gnome/extensions @piegamesde @jtojnar @hedning
261−
262233# Cinnamon
263234/pkgs/desktops/cinnamon @mkg20001
264235
265−# nim
266−/pkgs/development/compilers/nim @ehmry
267−/pkgs/development/nim-packages @ehmry
236+#nim
237+/pkgs/development/compilers/nim @ehmry
238+/pkgs/development/nim-packages @ehmry
268239/pkgs/top-level/nim-packages.nix @ehmry
269−
270−# terraform providers
271−/pkgs/applications/networking/cluster/terraform-providers @zowoq
272−
273−# kubernetes
274−/nixos/doc/manual/configuration/kubernetes.chapter.md @zowoq
275−/nixos/modules/services/cluster/kubernetes @zowoq
276−/nixos/tests/kubernetes @zowoq
277−/pkgs/applications/networking/cluster/kubernetes @zowoq
278−
279−# Matrix
280−/pkgs/servers/heisenbridge @piegamesde
281−/pkgs/servers/matrix-conduit @piegamesde
282−/pkgs/servers/matrix-synapse/matrix-appservice-irc @piegamesde
283−/nixos/modules/services/misc/heisenbridge.nix @piegamesde
284−/nixos/modules/services/misc/matrix-appservice-irc.nix @piegamesde
285−/nixos/modules/services/misc/matrix-conduit.nix @piegamesde
286−/nixos/tests/matrix-appservice-irc.nix @piegamesde
287−/nixos/tests/matrix-conduit.nix @piegamesde
288−
289−# Dotnet
290−/pkgs/build-support/dotnet @IvarWithoutBones
291−/pkgs/development/compilers/dotnet @IvarWithoutBones
.github/ISSUE_TEMPLATE/bug_report.md+8
@@ -38,3 +38,11 @@ Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result.
3838[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
3939output here
4040```
41+
42+Maintainer information:
43+```yaml
44+# a list of nixpkgs attributes affected by the problem
45+attribute:
46+# a list of nixos modules affected by the problem
47+module:
48+```
.github/ISSUE_TEMPLATE/out_of_date_package_report.md+3−3
@@ -13,10 +13,10 @@ assignees: ''
1313<!-- Note that these are hard requirements -->
1414
1515<!--
16−You can use the "Go to file" functionality on GitHub to find the package
16+You can use the "Go to file" functionality on github to find the package
1717Then you can go to the history for this package
1818Find the latest "package_name: old_version -> new_version" commit
19−The "new_version" is the current version of the package
19+The "new_version" is the the current version of the package
2020-->
2121- [ ] Checked the [nixpkgs master branch](https://github.com/NixOS/nixpkgs)
2222<!--
@@ -29,7 +29,7 @@ There's a high chance that you'll have the new version right away while helping
2929###### Project name
3030`nix search` name:
3131<!--
32−The current version can be found easily with the same process as above for checking the master branch
32+The current version can be found easily with the same process than above for checking the master branch
3333If an open PR is present for the package, take this version as the current one and link to the PR
3434-->
3535current version:
.github/PULL_REQUEST_TEMPLATE.md+12−18
@@ -1,10 +1,16 @@
1−###### Description of changes
2−
31<!--
4−For package updates please link to a changelog or describe changes, this helps your fellow maintainers discover breaking updates.
5−For new packages please briefly describe the package or provide a link to its homepage.
2+To help with the large amounts of pull requests, we would appreciate your
3+reviews of other pull requests, especially simple package updates. Just leave a
4+comment describing what you have tested in the relevant package/service.
5+Reviewing helps to reduce the average time-to-merge for everyone.
6+Thanks a lot if you do!
7+List of open PRs: https://github.com/NixOS/nixpkgs/pulls
8+Reviewing guidelines: https://nixos.org/manual/nixpkgs/unstable/#chap-reviewing-contributions
69-->
710
11+###### Motivation for this change
12+
13+
814###### Things done
915
1016<!-- Please check what applies. Note that these are not hard requirements but merely serve as information for reviewers. -->
@@ -14,7 +20,7 @@ For new packages please briefly describe the package or provide a link to its ho
1420 - [ ] aarch64-linux
1521 - [ ] x86_64-darwin
1622 - [ ] aarch64-darwin
17−- [ ] For non-Linux: Is `sandbox = true` set in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
23+- [ ] For non-Linux: Is `sandbox = true` set in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/#sec-conf-file))
1824- [ ] Tested, as applicable:
1925 - [NixOS test(s)](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
2026 - and/or [package tests](https://nixos.org/manual/nixpkgs/unstable/#sec-package-tests)
@@ -22,20 +28,8 @@ For new packages please briefly describe the package or provide a link to its ho
2228 - made sure NixOS tests are [linked](https://nixos.org/manual/nixpkgs/unstable/#ssec-nixos-tests-linking) to the relevant packages
2329- [ ] Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)
2430- [ ] Tested basic functionality of all binary files (usually in `./result/bin/`)
25−- [22.05 Release Notes (or backporting 21.11 Release notes)](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#generating-2205-release-notes)
31+- [21.11 Release Notes (or backporting 21.05 Release notes)](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#generating-2111-release-notes)
2632 - [ ] (Package updates) Added a release notes entry if the change is major or breaking
2733 - [ ] (Module updates) Added a release notes entry if the change is significant
2834 - [ ] (Module addition) Added a release notes entry if adding a new NixOS module
29− - [ ] (Release notes changes) Ran `nixos/doc/manual/md-to-db.sh` to update generated release notes
3035- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
31−
32−<!--
33−To help with the large amounts of pull requests, we would appreciate your
34−reviews of other pull requests, especially simple package updates. Just leave a
35−comment describing what you have tested in the relevant package/service.
36−Reviewing helps to reduce the average time-to-merge for everyone.
37−Thanks a lot if you do!
38−
39−List of open PRs: https://github.com/NixOS/nixpkgs/pulls
40−Reviewing guidelines: https://nixos.org/manual/nixpkgs/unstable/#chap-reviewing-contributions
41−-->
.github/labeler.yml+6−4
@@ -5,6 +5,10 @@
55 - pkgs/development/libraries/agda/**/*
66 - pkgs/top-level/agda-packages.nix
77
8+"6.topic: bsd":
9+ - pkgs/os-specific/bsd/**/*
10+ - pkgs/stdenv/freebsd/**/*
11+
812"6.topic: cinnamon":
913 - pkgs/desktops/cinnamon/**/*
1014
@@ -12,7 +16,7 @@
1216 - nixos/modules/services/editors/emacs.nix
1317 - nixos/modules/services/editors/emacs.xml
1418 - nixos/tests/emacs-daemon.nix
15− - pkgs/applications/editors/emacs/elisp-packages/**/*
19+ - pkgs/applications/editors/emacs-modes/**/*
1620 - pkgs/applications/editors/emacs/**/*
1721 - pkgs/build-support/emacs/**/*
1822 - pkgs/top-level/emacs-packages.nix
@@ -138,9 +142,7 @@
138142"6.topic: vim":
139143 - doc/languages-frameworks/vim.section.md
140144 - pkgs/applications/editors/vim/**/*
141− - pkgs/applications/editors/vim/plugins/**/*
142− - nixos/modules/programs/neovim.nix
143− - pkgs/applications/editors/neovim/**/*
145+ - pkgs/misc/vim-plugins/**/*
144146
145147"6.topic: xfce":
146148 - nixos/doc/manual/configuration/xfce.xml
.github/workflows/backport.yml+1−7
@@ -2,19 +2,13 @@ name: Backport
22on:
33 pull_request_target:
44 types: [closed, labeled]
5−
6−# WARNING:
7−# When extending this action, be aware that $GITHUB_TOKEN allows write access to
8−# the GitHub repository. This means that it should not evaluate user input in a
9−# way that allows code injection.
10−
115jobs:
126 backport:
137 name: Backport Pull Request
148 if: github.repository_owner == 'NixOS' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name))
159 runs-on: ubuntu-latest
1610 steps:
17− - uses: actions/checkout@v3
11+ - uses: actions/checkout@v2
1812 with:
1913 # required to find all branches
2014 fetch-depth: 0
.github/workflows/basic-eval.yml+10−16
@@ -1,26 +1,20 @@
11name: Basic evaluation checks
22
33on:
4− workflow_dispatch
5− # pull_request:
6− # branches:
7− # - master
8− # - release-**
9− # push:
10− # branches:
11− # - master
12− # - release-**
4+ pull_request:
5+ branches:
6+ - master
7+ - release-**
8+ push:
9+ branches:
10+ - master
11+ - release-**
1312jobs:
1413 tests:
1514 runs-on: ubuntu-latest
1615 # we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
1716 steps:
18− - uses: actions/checkout@v3
19− - uses: cachix/install-nix-action@v17
20− - uses: cachix/cachix-action@v10
21− with:
22− # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
23− name: nixpkgs-ci
24− signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
17+ - uses: actions/checkout@v2
18+ - uses: cachix/install-nix-action@v15
2519 # explicit list of supportedSystems is needed until aarch64-darwin becomes part of the trunk jobset
2620 - run: nix-build pkgs/top-level/release.nix -A tarball.nixpkgs-basic-release-checks --arg supportedSystems '[ "aarch64-darwin" "aarch64-linux" "x86_64-linux" "x86_64-darwin" ]'
.github/workflows/direct-push.yml+1−1
@@ -22,7 +22,7 @@ jobs:
2222 if: steps.ismerge.outputs.ismerge != 'true'
2323 - name: Warn if the commit was a direct push
2424 if: steps.ismerge.outputs.ismerge != 'true'
25− uses: peter-evans/commit-comment@v2
25+ uses: peter-evans/commit-comment@v1
2626 with:
2727 body: |
2828 @${{ github.actor }}, you pushed a commit directly to master/release branch
.github/workflows/editorconfig.yml+13−10
@@ -11,33 +11,36 @@ on:
1111jobs:
1212 tests:
1313 runs-on: ubuntu-latest
14− if: "github.repository_owner == 'NixOS' && !contains(github.event.pull_request.title, '[skip editorconfig]')"
14+ if: github.repository_owner == 'NixOS'
1515 steps:
1616 - name: Get list of changed files from PR
1717 env:
1818 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1919 run: |
20+ echo 'PR_DIFF<<EOF' >> $GITHUB_ENV
2021 gh api \
2122 repos/NixOS/nixpkgs/pulls/${{github.event.number}}/files --paginate \
2223 | jq '.[] | select(.status != "removed") | .filename' \
23− > "$HOME/changed_files"
24− - name: print list of changed files
25− run: |
26− cat "$HOME/changed_files"
27− - uses: actions/checkout@v3
24+ >> $GITHUB_ENV
25+ echo 'EOF' >> $GITHUB_ENV
26+ - uses: actions/checkout@v2
2827 with:
2928 # pull_request_target checks out the base branch by default
3029 ref: refs/pull/${{ github.event.pull_request.number }}/merge
31− - uses: cachix/install-nix-action@v17
30+ if: env.PR_DIFF
31+ - uses: cachix/install-nix-action@v15
32+ if: env.PR_DIFF
3233 with:
3334 # nixpkgs commit is pinned so that it doesn't break
34− # editorconfig-checker 2.4.0
35− nix_path: nixpkgs=https://github.com/NixOS/nixpkgs/archive/c473cc8714710179df205b153f4e9fa007107ff9.tar.gz
35+ nix_path: nixpkgs=https://github.com/NixOS/nixpkgs/archive/f93ecc4f6bc60414d8b73dbdf615ceb6a2c604df.tar.gz
3636 - name: install editorconfig-checker
3737 run: nix-env -iA editorconfig-checker -f '<nixpkgs>'
38+ if: env.PR_DIFF
3839 - name: Checking EditorConfig
40+ if: env.PR_DIFF
3941 run: |
40− cat "$HOME/changed_files" | xargs -r editorconfig-checker -disable-indent-size
42+ echo "$PR_DIFF" | xargs editorconfig-checker -disable-indent-size
4143 - if: ${{ failure() }}
4244 run: |
4345 echo "::error :: Hey! It looks like your changes don't follow our editorconfig settings. Read https://editorconfig.org/#download to configure your editor so you never see this error again."
46+
.github/workflows/labels.yml+1−6
@@ -4,11 +4,6 @@ on:
44 pull_request_target:
55 types: [edited, opened, synchronize, reopened]
66
7−# WARNING:
8−# When extending this action, be aware that $GITHUB_TOKEN allows some write
9−# access to the GitHub API. This means that it should not evaluate user input in
10−# a way that allows code injection.
11−
127permissions:
138 contents: read
149 pull-requests: write
@@ -18,7 +13,7 @@ jobs:
1813 runs-on: ubuntu-latest
1914 if: github.repository_owner == 'NixOS'
2015 steps:
21− - uses: actions/labeler@v4
16+ - uses: actions/labeler@v3
2217 with:
2318 repo-token: ${{ secrets.GITHUB_TOKEN }}
2419 sync-labels: true
.github/workflows/manual-nixos.yml+3−3
@@ -14,17 +14,17 @@ jobs:
1414 runs-on: ubuntu-latest
1515 if: github.repository_owner == 'NixOS'
1616 steps:
17− - uses: actions/checkout@v3
17+ - uses: actions/checkout@v2
1818 with:
1919 # pull_request_target checks out the base branch by default
2020 ref: refs/pull/${{ github.event.pull_request.number }}/merge
21− - uses: cachix/install-nix-action@v17
21+ - uses: cachix/install-nix-action@v15
2222 with:
2323 # explicitly enable sandbox
2424 extra_nix_config: sandbox = true
2525 - uses: cachix/cachix-action@v10
2626 with:
27− # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
27+ # This cache is for the nixos/nixpkgs manual builds and should not be trusted or used elsewhere.
2828 name: nixpkgs-ci
2929 signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
3030 - name: Building NixOS manual
.github/workflows/manual-nixpkgs.yml+3−3
@@ -14,17 +14,17 @@ jobs:
1414 runs-on: ubuntu-latest
1515 if: github.repository_owner == 'NixOS'
1616 steps:
17− - uses: actions/checkout@v3
17+ - uses: actions/checkout@v2
1818 with:
1919 # pull_request_target checks out the base branch by default
2020 ref: refs/pull/${{ github.event.pull_request.number }}/merge
21− - uses: cachix/install-nix-action@v17
21+ - uses: cachix/install-nix-action@v15
2222 with:
2323 # explicitly enable sandbox
2424 extra_nix_config: sandbox = true
2525 - uses: cachix/cachix-action@v10
2626 with:
27− # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
27+ # This cache is for the nixos/nixpkgs manual builds and should not be trusted or used elsewhere.
2828 name: nixpkgs-ci
2929 signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
3030 - name: Building Nixpkgs manual
.github/workflows/nixos-manual.yml+2−2
@@ -15,11 +15,11 @@ jobs:
1515 runs-on: ubuntu-latest
1616 if: github.repository_owner == 'NixOS'
1717 steps:
18− - uses: actions/checkout@v3
18+ - uses: actions/checkout@v2
1919 with:
2020 # pull_request_target checks out the base branch by default
2121 ref: refs/pull/${{ github.event.pull_request.number }}/merge
22− - uses: cachix/install-nix-action@v17
22+ - uses: cachix/install-nix-action@v15
2323 - name: Check DocBook files generated from Markdown are consistent
2424 run: |
2525 nixos/doc/manual/md-to-db.sh
.github/workflows/pending-set.yml−5
@@ -3,11 +3,6 @@ name: "set pending status"
33on:
44 pull_request_target:
55
6−# WARNING:
7−# When extending this action, be aware that $GITHUB_TOKEN allows write access to
8−# the GitHub repository. This means that it should not evaluate user input in a
9−# way that allows code injection.
10−
116jobs:
127 action:
138 runs-on: ubuntu-latest
.github/workflows/periodic-merge-24h.yml+2−6
@@ -32,13 +32,9 @@ jobs:
3232 into: staging-next-21.05
3333 - from: staging-next-21.05
3434 into: staging-21.05
35− - from: release-21.11
36− into: staging-next-21.11
37− - from: staging-next-21.11
38− into: staging-21.11
3935 name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
4036 steps:
41− - uses: actions/checkout@v3
37+ - uses: actions/checkout@v2
4238
4339 - name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
4440 uses: devmasx/merge-branch@1.4.0
@@ -49,7 +45,7 @@ jobs:
4945 github_token: ${{ secrets.GITHUB_TOKEN }}
5046
5147 - name: Comment on failure
52− uses: peter-evans/create-or-update-comment@v2
48+ uses: peter-evans/create-or-update-comment@v1
5349 if: ${{ failure() }}
5450 with:
5551 issue-number: 105153
.github/workflows/periodic-merge-6h.yml+2−2
@@ -32,7 +32,7 @@ jobs:
3232 into: staging
3333 name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
3434 steps:
35− - uses: actions/checkout@v3
35+ - uses: actions/checkout@v2
3636
3737 - name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
3838 uses: devmasx/merge-branch@1.4.0
@@ -43,7 +43,7 @@ jobs:
4343 github_token: ${{ secrets.GITHUB_TOKEN }}
4444
4545 - name: Comment on failure
46− uses: peter-evans/create-or-update-comment@v2
46+ uses: peter-evans/create-or-update-comment@v1
4747 if: ${{ failure() }}
4848 with:
4949 issue-number: 105153
.github/workflows/update-terraform-providers.ymldeleted−48
@@ -1,48 +0,0 @@
1−name: "Update terraform-providers"
2−
3−on:
4− schedule:
5− - cron: "14 3 * * 1"
6− workflow_dispatch:
7−
8−jobs:
9− tf-providers:
10− if: github.repository_owner == 'NixOS' && github.ref == 'refs/heads/master' # ensure workflow_dispatch only runs on master
11− runs-on: ubuntu-latest
12− steps:
13− - uses: actions/checkout@v3
14− - uses: cachix/install-nix-action@v17
15− - name: setup
16− id: setup
17− run: |
18− echo ::set-output name=title::"terraform-providers: update $(date -u +"%Y-%m-%d")"
19− - name: update terraform-providers
20− run: |
21− git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
22− git config user.name "github-actions[bot]"
23− pushd pkgs/applications/networking/cluster/terraform-providers
24− ./update-all-providers --no-build
25− git commit -m "${{ steps.setup.outputs.title }}" providers.json
26− popd
27− - name: create PR
28− uses: peter-evans/create-pull-request@v4
29− with:
30− body: |
31− Automatic update by [update-terraform-providers](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/update-terraform-providers.yml) action.
32−
33− Check that all providers build with:
34− ```
35− @ofborg build terraform-full
36− ```
37− branch: terraform-providers-update
38− delete-branch: false
39− labels: "2.status: work-in-progress"
40− title: ${{ steps.setup.outputs.title }}
41− token: ${{ secrets.GITHUB_TOKEN }}
42− - name: comment on failure
43− uses: peter-evans/create-or-update-comment@v2
44− if: ${{ failure() }}
45− with:
46− issue-number: 153416
47− body: |
48− Automatic update of terraform providers [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).
.gitignore−6
@@ -3,11 +3,8 @@
33.*.swp
44.*.swo
55.idea/
6−.vscode/
7−outputs/
86result
97result-*
10−source/
118/doc/NEWS.html
129/doc/NEWS.txt
1310/doc/manual.html
@@ -24,6 +21,3 @@ __pycache__
2421
2522# generated by pkgs/common-updater/update-script.nix
2623update-git-commits.txt
27−
28−# JetBrains IDEA module declaration file
29−/nixpkgs.iml
.version+1−1
@@ -1 +1 @@
1−22.05
1+21.11
CONTRIBUTING.md+10−55
@@ -11,16 +11,12 @@ under the terms of [COPYING](COPYING), which is an MIT-like license.
1111
1212## Submitting changes
1313
14−Read the ["Submitting changes"](https://nixos.org/nixpkgs/manual/#chap-submitting-changes) section of the nixpkgs manual. It explains how to write, test, and iterate on your change, and which branch to base your pull request against.
15−
16−Below is a short excerpt of some points in there:
17−
1814* Format the commit messages in the following way:
1915
2016 ```
2117 (pkg-name | nixos/<module>): (from -> to | init at version | refactor | etc)
2218
23− (Motivation for change. Link to release notes. Additional information.)
19+ (Motivation for change. Additional information.)
2420 ```
2521
2622 For consistency, there should not be a period at the end of the commit message's summary line (the first line of the commit message).
@@ -29,7 +25,6 @@ Below is a short excerpt of some points in there:
2925
3026 * nginx: init at 2.0.1
3127 * firefox: 54.0.1 -> 55.0
32− https://www.mozilla.org/en-US/firefox/55.0/releasenotes/
3328 * nixos/hydra: add bazBaz option
3429
3530 Dual baz behavior is needed to do foo.
@@ -45,7 +40,7 @@ Below is a short excerpt of some points in there:
4540 * If there is no upstream license, `meta.license` should default to `lib.licenses.unfree`.
4641* `meta.maintainers` must be set.
4742
48−See the nixpkgs manual for more details on [standard meta-attributes](https://nixos.org/nixpkgs/manual/#sec-standard-meta-attributes).
43+See the nixpkgs manual for more details on [standard meta-attributes](https://nixos.org/nixpkgs/manual/#sec-standard-meta-attributes) and on how to [submit changes to nixpkgs](https://nixos.org/nixpkgs/manual/#chap-submitting-changes).
4944
5045## Writing good commit messages
5146
@@ -53,55 +48,15 @@ In addition to writing properly formatted commit messages, it's important to inc
5348
5449For package version upgrades and such a one-line commit message is usually sufficient.
5550
56−## Rebasing between branches (i.e. from master to staging)
57−
58−From time to time, changes between branches must be rebased, for example, if the
59−number of new rebuilds they would cause is too large for the target branch. When
60−rebasing, care must be taken to include only the intended changes, otherwise
61−many CODEOWNERS will be inadvertently requested for review. To achieve this,
62−rebasing should not be performed directly on the target branch, but on the merge
63−base between the current and target branch.
64−
65−In the following example, we see a rebase from `master` onto the merge base
66−between `master` and `staging`, so that a change can eventually be retargeted to
67−`staging`. The example uses `upstream` as the remote for `NixOS/nixpkgs.git`
68−while the `origin` remote is used for the remote you are pushing to.
69−
70−
71−```console
72−# Find the common base between two branches
73−common=$(git merge-base upstream/master upstream/staging)
74−# Find the common base between your feature branch and master
75−commits=$(git merge-base $(git branch --show-current) upstream/master)
76−# Rebase all commits onto the common base
77−git rebase --onto=$common $commits
78−# Force push your changes
79−git push origin $(git branch --show-current) --force-with-lease
80−```
81−
82−Then change the base branch in the GitHub PR using the *Edit* button in the upper
83−right corner, and switch from `master` to `staging`. After the PR has been
84−retargeted it might be necessary to do a final rebase onto the target branch, to
85−resolve any outstanding merge conflicts.
86−
87−```console
88−# Rebase onto target branch
89−git rebase upstream/staging
90−# Review and fixup possible conflicts
91−git status
92−# Force push your changes
93−git push origin $(git branch --show-current) --force-with-lease
94−```
95−
9651## Backporting changes
9752
9853Follow these steps to backport a change into a release branch in compliance with the [commit policy](https://nixos.org/nixpkgs/manual/#submitting-changes-stable-release-branches).
9954
100551. Take note of the commits in which the change was introduced into `master` branch.
101−2. Check out the target _release branch_, e.g. `release-21.11`. Do not use a _channel branch_ like `nixos-21.11` or `nixpkgs-21.11-darwin`.
56+2. Check out the target _release branch_, e.g. `release-20.09`. Do not use a _channel branch_ like `nixos-20.09` or `nixpkgs-20.09`.
102573. Create a branch for your change, e.g. `git checkout -b backport`.
103584. When the reason to backport is not obvious from the original commit message, use `git cherry-pick -xe <original commit>` and add a reason. Otherwise use `git cherry-pick -x <original commit>`. That's fine for minor version updates that only include security and bug fixes, commits that fixes an otherwise broken package or similar. Please also ensure the commits exists on the master branch; in the case of squashed or rebased merges, the commit hash will change and the new commits can be found in the merge message at the bottom of the master pull request.
104−5. Push to GitHub and open a backport pull request. Make sure to select the release branch (e.g. `release-21.11`) as the target branch of the pull request, and link to the pull request in which the original change was comitted to `master`. The pull request title should be the commit title with the release version as prefix, e.g. `[21.11]`.
59+5. Push to GitHub and open a backport pull request. Make sure to select the release branch (e.g. `release-20.09`) as the target branch of the pull request, and link to the pull request in which the original change was comitted to `master`. The pull request title should be the commit title with the release version as prefix, e.g. `[20.09]`.
105606. When the backport pull request is merged and you have the necessary privileges you can also replace the label `9.needs: port to stable` with `8.has: port to stable` on the original pull request. This way maintainers can keep track of missing backports easier.
10661
10762## Criteria for Backporting changes
@@ -113,17 +68,17 @@ Anything that does not cause user or downstream dependency regressions can be ba
11368- Services which require a client to be up-to-date regardless. (E.g. `spotify`, `steam`, or `discord`)
11469- Security critical applications (E.g. `firefox`)
11570
116−## Generating 22.05 Release Notes
71+## Generating 21.11 Release Notes
11772
118−(This section also applies to backporting 21.11 release notes: substitute "rl-2205" for "rl-2111".)
73+(This section also applies to backporting 21.05 release notes: substitute "rl-2111" for "rl-2105".)
11974
12075Documentation in nixpkgs is transitioning to a markdown-centric workflow. Release notes now require a translation step to convert from markdown to a compatible docbook document.
12176
122−Steps for updating 22.05 Release notes:
77+Steps for updating 21.11 Release notes:
12378
124−1. Edit `nixos/doc/manual/release-notes/rl-2205.section.md` with the desired changes
125−2. Run `./nixos/doc/manual/md-to-db.sh` to render `nixos/doc/manual/from_md/release-notes/rl-2205.section.xml`
126−3. Include changes to `rl-2205.section.md` and `rl-2205.section.xml` in the same commit.
79+1. Edit `nixos/doc/manual/release-notes/rl-2111.section.md` with the desired changes
80+2. Run `./nixos/doc/manual/md-to-db.sh` to render `nixos/doc/manual/from_md/release-notes/rl-2111.section.xml`
81+3. Include changes to `rl-2111.section.md` and `rl-2111.section.xml` in the same commit.
12782
12883## Reviewing contributions
12984
COPYING+1−1
@@ -1,4 +1,4 @@
1−Copyright (c) 2003-2022 Eelco Dolstra and the Nixpkgs/NixOS contributors
1+Copyright (c) 2003-2021 Eelco Dolstra and the Nixpkgs/NixOS contributors
22
33Permission is hereby granted, free of charge, to any person obtaining
44a copy of this software and associated documentation files (the
README.md+5−10
@@ -1,15 +1,10 @@
11<p align="center">
2− <a href="https://nixos.org#gh-light-mode-only">
3− <img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/master/logo/nixos-hires.png" width="500px" alt="NixOS logo"/>
4− </a>
5− <a href="https://nixos.org#gh-dark-mode-only">
6− <img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png" width="500px" alt="NixOS logo"/>
7− </a>
2+ <a href="https://nixos.org/nixos"><img src="https://nixos.org/logo/nixos-hires.png" width="500px" alt="NixOS logo" /></a>
83</p>
94
105<p align="center">
11− <a href="https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md"><img src="https://img.shields.io/github/contributors-anon/NixOS/nixpkgs" alt="Contributors badge" /></a>
12− <a href="https://opencollective.com/nixos"><img src="https://opencollective.com/nixos/tiers/supporter/badge.svg?label=supporters&color=brightgreen" alt="Open Collective supporters" /></a>
6+ <a href="https://www.codetriage.com/nixos/nixpkgs"><img src="https://www.codetriage.com/nixos/nixpkgs/badges/users.svg" alt="Code Triagers badge" /></a>
7+ <a href="https://opencollective.com/nixos"><img src="https://opencollective.com/nixos/tiers/supporter/badge.svg?label=Supporter&color=brightgreen" alt="Open Collective supporters" /></a>
138</p>
149
1510[Nixpkgs](https://github.com/nixos/nixpkgs) is a collection of over
@@ -51,9 +46,9 @@ Nixpkgs and NixOS are built and tested by our continuous integration
5146system, [Hydra](https://hydra.nixos.org/).
5247
5348* [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
54−* [Continuous package builds for the NixOS 21.11 release](https://hydra.nixos.org/jobset/nixos/release-21.11)
49+* [Continuous package builds for the NixOS 21.05 release](https://hydra.nixos.org/jobset/nixos/release-21.05)
5550* [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)
56−* [Tests for the NixOS 21.11 release](https://hydra.nixos.org/job/nixos/release-21.11/tested#tabs-constituents)
51+* [Tests for the NixOS 21.05 release](https://hydra.nixos.org/job/nixos/release-21.05/tested#tabs-constituents)
5752
5853Artifacts successfully built with Hydra are published to cache at
5954https://cache.nixos.org/. When successful build and test criteria are
doc/build-aux/pandoc-filters/link-unix-man-references.lua+2−1
@@ -1,5 +1,6 @@
11--[[
2−Turns a manpage reference into a link, when a mapping is defined below.
2+Turns a manpage reference into a link, when a mapping is defined
3+in the unix-man-urls.lua file.
34]]
45
56local man_urls = {
doc/builders/fetchers.chapter.md+11−40
@@ -6,11 +6,11 @@ When using Nix, you will frequently need to download source code and other files
66
77Because fixed output derivations are _identified_ by their hash, a common mistake is to update a fetcher's URL or a version parameter, without updating the hash. **This will cause the old contents to be used.** So remember to always invalidate the hash argument.
88
9−For those who develop and maintain fetchers, a similar problem arises with changes to the implementation of a fetcher. These may cause a fixed output derivation to fail, but won't normally be caught by tests because the supposed output is already in the store or cache. For the purpose of testing, you can use a trick that is embodied by the [`invalidateFetcherByDrvHash`](#tester-invalidateFetcherByDrvHash) function. It uses the derivation `name` to create a unique output path per fetcher implementation, defeating the caching precisely where it would be harmful.
9+For those who develop and maintain fetchers, a similar problem arises with changes to the implementation of a fetcher. These may cause a fixed output derivation to fail, but won't normally be caught by tests because the supposed output is already in the store or cache. For the purpose of testing, you can use a trick that is embodied by the [`invalidateFetcherByDrvHash`](#sec-pkgs-invalidateFetcherByDrvHash) function. It uses the derivation `name` to create a unique output path per fetcher implementation, defeating the caching precisely where it would be harmful.
1010
1111## `fetchurl` and `fetchzip` {#fetchurl}
1212
13−Two basic fetchers are `fetchurl` and `fetchzip`. Both of these have two required arguments, a URL and a hash. The hash is typically `sha256`, although many more hash algorithms are supported. Nixpkgs contributors are currently recommended to use `sha256`. This hash will be used by Nix to identify your source. A typical usage of `fetchurl` is provided below.
13+Two basic fetchers are `fetchurl` and `fetchzip`. Both of these have two required arguments, a URL and a hash. The hash is typically `sha256`, although many more hash algorithms are supported. Nixpkgs contributors are currently recommended to use `sha256`. This hash will be used by Nix to identify your source. A typical usage of fetchurl is provided below.
1414
1515```nix
1616{ stdenv, fetchurl }:
@@ -24,9 +24,9 @@ stdenv.mkDerivation {
2424}
2525```
2626
27−The main difference between `fetchurl` and `fetchzip` is in how they store the contents. `fetchurl` will store the unaltered contents of the URL within the Nix store. `fetchzip` on the other hand, will decompress the archive for you, making files and directories directly accessible in the future. `fetchzip` can only be used with archives. Despite the name, `fetchzip` is not limited to .zip files and can also be used with any tarball.
27+The main difference between `fetchurl` and `fetchzip` is in how they store the contents. `fetchurl` will store the unaltered contents of the URL within the Nix store. `fetchzip` on the other hand will decompress the archive for you, making files and directories directly accessible in the future. `fetchzip` can only be used with archives. Despite the name, `fetchzip` is not limited to .zip files and can also be used with any tarball.
2828
29−`fetchpatch` works very similarly to `fetchurl` with the same arguments expected. It expects patch files as a source and performs normalization on them before computing the checksum. For example, it will remove comments or other unstable parts that are sometimes added by version control systems and can change over time.
29+`fetchpatch` works very similarly to `fetchurl` with the same arguments expected. It expects patch files as a source and performs normalization on them before computing the checksum. For example it will remove comments or other unstable parts that are sometimes added by version control systems and can change over time.
3030
3131Most other fetchers return a directory rather than a single file.
3232
@@ -38,25 +38,7 @@ Used with Subversion. Expects `url` to a Subversion directory, `rev`, and `sha25
3838
3939Used with Git. Expects `url` to a Git repo, `rev`, and `sha256`. `rev` in this case can be full the git commit id (SHA1 hash) or a tag name like `refs/tags/v1.0`.
4040
41−Additionally, the following optional arguments can be given: `fetchSubmodules = true` makes `fetchgit` also fetch the submodules of a repository. If `deepClone` is set to true, the entire repository is cloned as opposing to just creating a shallow clone. `deepClone = true` also implies `leaveDotGit = true` which means that the `.git` directory of the clone won't be removed after checkout.
42−
43−If only parts of the repository are needed, `sparseCheckout` can be used. This will prevent git from fetching unnecessary blobs from server, see [git sparse-checkout](https://git-scm.com/docs/git-sparse-checkout) and [git clone --filter](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---filterltfilter-specgt) for more information:
44−
45−```nix
46−{ stdenv, fetchgit }:
47−
48−stdenv.mkDerivation {
49− name = "hello";
50− src = fetchgit {
51− url = "https://...";
52− sparseCheckout = ''
53− path/to/be/included
54− another/path
55− '';
56− sha256 = "0000000000000000000000000000000000000000000000000000";
57− };
58−}
59−```
41+Additionally the following optional arguments can be given: `fetchSubmodules = true` makes `fetchgit` also fetch the submodules of a repository. If `deepClone` is set to true, the entire repository is cloned as opposing to just creating a shallow clone. `deepClone = true` also implies `leaveDotGit = true` which means that the `.git` directory of the clone won't be removed after checkout.
6042
6143## `fetchfossil` {#fetchfossil}
6244
@@ -72,23 +54,19 @@ Used with Mercurial. Expects `url`, `rev`, and `sha256`.
7254
7355A number of fetcher functions wrap part of `fetchurl` and `fetchzip`. They are mainly convenience functions intended for commonly used destinations of source code in Nixpkgs. These wrapper fetchers are listed below.
7456
75−## `fetchFromGitea` {#fetchfromgitea}
76−
77−`fetchFromGitea` expects five arguments. `domain` is the gitea server name. `owner` is a string corresponding to the Gitea user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every Gitea HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `sha256` is currently preferred.
78−
7957## `fetchFromGitHub` {#fetchfromgithub}
8058
81−`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, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available, but `sha256` is currently preferred.
59+`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, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `sha256` is currently preferred.
8260
8361`fetchFromGitHub` uses `fetchzip` to download the source archive generated by GitHub for the specified revision. If `leaveDotGit`, `deepClone` or `fetchSubmodules` are set to `true`, `fetchFromGitHub` will use `fetchgit` instead. Refer to its section for documentation of these options.
8462
8563## `fetchFromGitLab` {#fetchfromgitlab}
8664
87−This is used with GitLab repositories. The arguments expected are very similar to `fetchFromGitHub` above.
65+This is used with GitLab repositories. The arguments expected are very similar to fetchFromGitHub above.
8866
8967## `fetchFromGitiles` {#fetchfromgitiles}
9068
91−This is used with Gitiles repositories. The arguments expected are similar to `fetchgit`.
69+This is used with Gitiles repositories. The arguments expected are similar to fetchgit.
9270
9371## `fetchFromBitbucket` {#fetchfrombitbucket}
9472
@@ -96,19 +74,12 @@ This is used with BitBucket repositories. The arguments expected are very simila
9674
9775## `fetchFromSavannah` {#fetchfromsavannah}
9876
99−This is used with Savannah repositories. The arguments expected are very similar to `fetchFromGitHub` above.
77+This is used with Savannah repositories. The arguments expected are very similar to fetchFromGitHub above.
10078
10179## `fetchFromRepoOrCz` {#fetchfromrepoorcz}
10280
103−This is used with repo.or.cz repositories. The arguments expected are very similar to `fetchFromGitHub` above.
81+This is used with repo.or.cz repositories. The arguments expected are very similar to fetchFromGitHub above.
10482
10583## `fetchFromSourcehut` {#fetchfromsourcehut}
10684
107−This is used with sourcehut repositories. Similar to `fetchFromGitHub` above,
108−it expects `owner`, `repo`, `rev` and `sha256`, but don't forget the tilde (~)
109−in front of the username! Expected arguments also include `vc` ("git" (default)
110−or "hg"), `domain` and `fetchSubmodules`.
111−
112−If `fetchSubmodules` is `true`, `fetchFromSourcehut` uses `fetchgit`
113−or `fetchhg` with `fetchSubmodules` or `fetchSubrepos` set to `true`,
114−respectively. Otherwise, the fetcher uses `fetchzip`.
85+This is used with sourcehut repositories. The arguments expected are very similar to fetchFromGitHub above. Don't forget the tilde (~) in front of the user name!
doc/builders/images/dockertools.section.md+8−14
@@ -58,7 +58,7 @@ After the new layer has been created, its closure (to which `contents`, `config`
5858
5959At the end of the process, only one new single layer will be produced and added to the resulting image.
6060
61−The resulting repository will only list the single image `image/tag`. In the case of [the `buildImage` example](#ex-dockerTools-buildImage), it would be `redis/latest`.
61+The resulting repository will only list the single image `image/tag`. In the case of [the `buildImage` example](#ex-dockerTools-buildImage) it would be `redis/latest`.
6262
6363It is possible to inspect the arguments with which an image was built using its `buildArgs` attribute.
6464
@@ -87,7 +87,7 @@ pkgs.dockerTools.buildImage {
8787}
8888```
8989
90−Now the Docker CLI will display a reasonable date and sort the images as expected:
90+and now the Docker CLI will display a reasonable date and sort the images as expected:
9191
9292```ShellSession
9393$ docker images
@@ -95,7 +95,7 @@ REPOSITORY TAG IMAGE ID CREATED SIZE
9595hello latest de2bf4786de6 About a minute ago 25.2MB
9696```
9797
98−However, the produced images will not be binary reproducible.
98+however, the produced images will not be binary reproducible.
9999
100100## buildLayeredImage {#ssec-pkgs-dockerTools-buildLayeredImage}
101101
@@ -119,13 +119,13 @@ Create a Docker image with many of the store paths being on their own layer to i
119119
120120`contents` _optional_
121121
122−: Top-level paths in the container. Either a single derivation, or a list of derivations.
122+: Top level paths in the container. Either a single derivation, or a list of derivations.
123123
124124 *Default:* `[]`
125125
126126`config` _optional_
127127
128−: Run-time configuration of the container. A full list of the options are available at in the [Docker Image Specification v1.2.0](https://github.com/moby/moby/blob/master/image/spec/v1.2.md#image-json-field-descriptions).
128+: Run-time configuration of the container. A full list of the options are available at in the [ Docker Image Specification v1.2.0 ](https://github.com/moby/moby/blob/master/image/spec/v1.2.md#image-json-field-descriptions).
129129
130130 *Default:* `{}`
131131
@@ -151,12 +151,6 @@ Create a Docker image with many of the store paths being on their own layer to i
151151
152152: Shell commands to run while creating the archive for the final layer in a fakeroot environment. Unlike `extraCommands`, you can run `chown` to change the owners of the files in the archive, changing fakeroot's state instead of the real filesystem. The latter would require privileges that the build user does not have. Static binaries do not interact with the fakeroot environment. By default all files in the archive will be owned by root.
153153
154−`enableFakechroot` _optional_
155−
156−: Whether to run in `fakeRootCommands` in `fakechroot`, making programs behave as though `/` is the root of the image being created, while files in the Nix store are available as usual. This allows scripts that perform installation in `/` to work as expected. Considering that `fakechroot` is implemented via the same mechanism as `fakeroot`, the same caveats apply.
157−
158− *Default:* `false`
159−
160154### Behavior of `contents` in the final image {#dockerTools-buildLayeredImage-arg-contents}
161155
162156Each path directly listed in `contents` will have a symlink in the root of the image.
@@ -195,9 +189,9 @@ pkgs.dockerTools.buildLayeredImage {
195189
196190Increasing the `maxLayers` increases the number of layers which have a chance to be shared between different images.
197191
198−Modern Docker installations support up to 128 layers, but older versions support as few as 42.
192+Modern Docker installations support up to 128 layers, however older versions support as few as 42.
199193
200−If the produced image will not be extended by other Docker builds, it is safe to set `maxLayers` to `128`. However, it will be impossible to extend the image further.
194+If the produced image will not be extended by other Docker builds, it is safe to set `maxLayers` to `128`. However it will be impossible to extend the image further.
201195
202196The first (`maxLayers-2`) most "popular" paths will have their own individual layers, then layer \#`maxLayers-1` will contain all the remaining "unpopular" paths, and finally layer \#`maxLayers` will contain the Image configuration.
203197
@@ -213,7 +207,7 @@ The image produced by running the output script can be piped directly into `dock
213207$(nix-build) | docker load
214208```
215209
216−Alternatively, the image be piped via `gzip` into `skopeo`, e.g., to copy it into a registry:
210+Alternatively, the image be piped via `gzip` into `skopeo`, e.g. to copy it into a registry:
217211
218212```ShellSession
219213$(nix-build) | gzip --fast | skopeo copy docker-archive:/dev/stdin docker://some_docker_registry/myimage:tag
doc/builders/images/ocitools.section.md+3−3
@@ -1,10 +1,10 @@
11# pkgs.ociTools {#sec-pkgs-ociTools}
22
3−`pkgs.ociTools` is a set of functions for creating containers according to the [OCI container specification v1.0.0](https://github.com/opencontainers/runtime-spec). Beyond that, it makes no assumptions about the container runner you choose to use to run the created container.
3+`pkgs.ociTools` is a set of functions for creating containers according to the [OCI container specification v1.0.0](https://github.com/opencontainers/runtime-spec). Beyond that it makes no assumptions about the container runner you choose to use to run the created container.
44
55## buildContainer {#ssec-pkgs-ociTools-buildContainer}
66
7−This function creates a simple OCI container that runs a single command inside of it. An OCI container consists of a `config.json` and a rootfs directory. The nix store of the container will contain all referenced dependencies of the given command.
7+This function creates a simple OCI container that runs a single command inside of it. An OCI container consists of a `config.json` and a rootfs directory.The nix store of the container will contain all referenced dependencies of the given command.
88
99The parameters of `buildContainer` with an example value are described below:
1010
@@ -30,7 +30,7 @@ buildContainer {
3030}
3131```
3232
33−- `args` specifies a set of arguments to run inside the container. This is the only required argument for `buildContainer`. All referenced packages inside the derivation will be made available inside the container.
33+- `args` specifies a set of arguments to run inside the container. This is the only required argument for `buildContainer`. All referenced packages inside the derivation will be made available inside the container
3434
3535- `mounts` specifies additional mount points chosen by the user. By default only a minimal set of necessary filesystems are mounted into the container (e.g procfs, cgroupfs)
3636
doc/builders/images/snaptools.section.md+1−1
@@ -33,7 +33,7 @@ in snapTools.makeSnap {
3333
3434## Build a Graphical Snap {#ssec-pkgs-snapTools-build-a-snap-firefox}
3535
36−Graphical programs require many more integrations with the host. This example uses Firefox as an example because it is one of the most complicated programs we could package.
36+Graphical programs require many more integrations with the host. This example uses Firefox as an example, because it is one of the most complicated programs we could package.
3737
3838``` {#ex-snapTools-buildSnap-firefox .nix}
3939let
doc/builders/packages/citrix.section.md+5−5
@@ -4,13 +4,13 @@ The [Citrix Workspace App](https://www.citrix.com/products/workspace-app/) is a
44
55## Basic usage {#sec-citrix-base}
66
7−The tarball archive needs to be downloaded manually, as the license agreements of the vendor for [Citrix Workspace](https://www.citrix.de/downloads/workspace-app/linux/workspace-app-for-linux-latest.html) needs to be accepted first. Then run `nix-prefetch-url file://$PWD/linuxx64-$version.tar.gz`. With the archive available in the store, the package can be built and installed with Nix.
7+The tarball archive needs to be downloaded manually as the license agreements of the vendor for [Citrix Workspace](https://www.citrix.de/downloads/workspace-app/linux/workspace-app-for-linux-latest.html) needs to be accepted first. Then run `nix-prefetch-url file://$PWD/linuxx64-$version.tar.gz`. With the archive available in the store the package can be built and installed with Nix.
88
9−## Citrix Self-service {#sec-citrix-selfservice}
9+## Citrix Selfservice {#sec-citrix-selfservice}
1010
11−The [self-service](https://support.citrix.com/article/CTX200337) is an application managing Citrix desktops and applications. Please note that this feature only works with at least citrix_workspace_20_06_0 and later versions.
11+The [selfservice](https://support.citrix.com/article/CTX200337) is an application managing Citrix desktops and applications. Please note that this feature only works with at least citrix_workspace_20_06_0 and later versions.
1212
13−In order to set this up, you first have to [download the `.cr` file from the Netscaler Gateway](https://its.uiowa.edu/support/article/102186). After that, you can configure the `selfservice` like this:
13+In order to set this up, you first have to [download the `.cr` file from the Netscaler Gateway](https://its.uiowa.edu/support/article/102186). After that you can configure the `selfservice` like this:
1414
1515```ShellSession
1616$ storebrowse -C ~/Downloads/receiverconfig.cr
@@ -19,7 +19,7 @@ $ selfservice
1919
2020## Custom certificates {#sec-citrix-custom-certs}
2121
22−The `Citrix Workspace App` in `nixpkgs` trusts several certificates [from the Mozilla database](https://curl.haxx.se/docs/caextract.html) by default. However, several companies using Citrix might require their own corporate certificate. On distros with imperative packaging, these certs can be stored easily in [`$ICAROOT`](https://developer-docs.citrix.com/projects/receiver-for-linux-command-reference/en/13.7/), however this directory is a store path in `nixpkgs`. In order to work around this issue, the package provides a simple mechanism to add custom certificates without rebuilding the entire package using `symlinkJoin`:
22+The `Citrix Workspace App` in `nixpkgs` trusts several certificates [from the Mozilla database](https://curl.haxx.se/docs/caextract.html) by default. However several companies using Citrix might require their own corporate certificate. On distros with imperative packaging these certs can be stored easily in [`$ICAROOT`](https://developer-docs.citrix.com/projects/receiver-for-linux-command-reference/en/13.7/), however this directory is a store path in `nixpkgs`. In order to work around this issue the package provides a simple mechanism to add custom certificates without rebuilding the entire package using `symlinkJoin`:
2323
2424```nix
2525with import <nixpkgs> { config.allowUnfree = true; };
doc/builders/packages/eclipse.section.md+5−5
@@ -8,9 +8,9 @@ Nixpkgs provides a number of packages that will install Eclipse in its various f
88$ nix-env -f '<nixpkgs>' -qaP -A eclipses --description
99```
1010
11−Once an Eclipse variant is installed, it can be run using the `eclipse` command, as expected. From within Eclipse, it is then possible to install plugins in the usual manner by either manually specifying an Eclipse update site or by installing the Marketplace Client plugin and using it to discover and install other plugins. This installation method provides an Eclipse installation that closely resemble a manually installed Eclipse.
11+Once an Eclipse variant is installed it can be run using the `eclipse` command, as expected. From within Eclipse it is then possible to install plugins in the usual manner by either manually specifying an Eclipse update site or by installing the Marketplace Client plugin and using it to discover and install other plugins. This installation method provides an Eclipse installation that closely resemble a manually installed Eclipse.
1212
13−If you prefer to install plugins in a more declarative manner, then Nixpkgs also offer a number of Eclipse plugins that can be installed in an _Eclipse environment_. This type of environment is created using the function `eclipseWithPlugins` found inside the `nixpkgs.eclipses` attribute set. This function takes as argument `{ eclipse, plugins ? [], jvmArgs ? [] }` where `eclipse` is a one of the Eclipse packages described above, `plugins` is a list of plugin derivations, and `jvmArgs` is a list of arguments given to the JVM running the Eclipse. For example, say you wish to install the latest Eclipse Platform with the popular Eclipse Color Theme plugin and also allow Eclipse to use more RAM. You could then add:
13+If you prefer to install plugins in a more declarative manner then Nixpkgs also offer a number of Eclipse plugins that can be installed in an _Eclipse environment_. This type of environment is created using the function `eclipseWithPlugins` found inside the `nixpkgs.eclipses` attribute set. This function takes as argument `{ eclipse, plugins ? [], jvmArgs ? [] }` where `eclipse` is a one of the Eclipse packages described above, `plugins` is a list of plugin derivations, and `jvmArgs` is a list of arguments given to the JVM running the Eclipse. For example, say you wish to install the latest Eclipse Platform with the popular Eclipse Color Theme plugin and also allow Eclipse to use more RAM. You could then add
1414
1515```nix
1616packageOverrides = pkgs: {
@@ -22,15 +22,15 @@ packageOverrides = pkgs: {
2222}
2323```
2424
25−to your Nixpkgs configuration (`~/.config/nixpkgs/config.nix`) and install it by running `nix-env -f '<nixpkgs>' -iA myEclipse` and afterward run Eclipse as usual. It is possible to find out which plugins are available for installation using `eclipseWithPlugins` by running:
25+to your Nixpkgs configuration (`~/.config/nixpkgs/config.nix`) and install it by running `nix-env -f '<nixpkgs>' -iA myEclipse` and afterward run Eclipse as usual. It is possible to find out which plugins are available for installation using `eclipseWithPlugins` by running
2626
2727```ShellSession
2828$ nix-env -f '<nixpkgs>' -qaP -A eclipses.plugins --description
2929```
3030
31−If there is a need to install plugins that are not available in Nixpkgs then it may be possible to define these plugins outside Nixpkgs using the `buildEclipseUpdateSite` and `buildEclipsePlugin` functions found in the `nixpkgs.eclipses.plugins` attribute set. Use the `buildEclipseUpdateSite` function to install a plugin distributed as an Eclipse update site. This function takes `{ name, src }` as argument, where `src` indicates the Eclipse update site archive. All Eclipse features and plugins within the downloaded update site will be installed. When an update site archive is not available, then the `buildEclipsePlugin` function can be used to install a plugin that consists of a pair of feature and plugin JARs. This function takes an argument `{ name, srcFeature, srcPlugin }` where `srcFeature` and `srcPlugin` are the feature and plugin JARs, respectively.
31+If there is a need to install plugins that are not available in Nixpkgs then it may be possible to define these plugins outside Nixpkgs using the `buildEclipseUpdateSite` and `buildEclipsePlugin` functions found in the `nixpkgs.eclipses.plugins` attribute set. Use the `buildEclipseUpdateSite` function to install a plugin distributed as an Eclipse update site. This function takes `{ name, src }` as argument where `src` indicates the Eclipse update site archive. All Eclipse features and plugins within the downloaded update site will be installed. When an update site archive is not available then the `buildEclipsePlugin` function can be used to install a plugin that consists of a pair of feature and plugin JARs. This function takes an argument `{ name, srcFeature, srcPlugin }` where `srcFeature` and `srcPlugin` are the feature and plugin JARs, respectively.
3232
33−Expanding the previous example with two plugins using the above functions, we have:
33+Expanding the previous example with two plugins using the above functions we have
3434
3535```nix
3636packageOverrides = pkgs: {
doc/builders/packages/elm.section.md+1−1
@@ -1,6 +1,6 @@
11# Elm {#sec-elm}
22
3−To start a development environment, run:
3+To start a development environment do
44
55```ShellSession
66nix-shell -p elmPackages.elm elmPackages.elm-format
doc/builders/packages/emacs.section.md+3−3
@@ -20,7 +20,7 @@ The Emacs package comes with some extra helpers to make it easier to configure.
2020}
2121```
2222
23−You can install it like any other packages via `nix-env -iA myEmacs`. However, this will only install those packages. It will not `configure` them for us. To do this, we need to provide a configuration file. Luckily, it is possible to do this from within Nix! By modifying the above example, we can make Emacs load a custom config file. The key is to create a package that provides a `default.el` file in `/share/emacs/site-start/`. Emacs knows to load this file automatically when it starts.
23+You can install it like any other packages via `nix-env -iA myEmacs`. However, this will only install those packages. It will not `configure` them for us. To do this, we need to provide a configuration file. Luckily, it is possible to do this from within Nix! By modifying the above example, we can make Emacs load a custom config file. The key is to create a package that provide a `default.el` file in `/share/emacs/site-start/`. Emacs knows to load this file automatically when it starts.
2424
2525```nix
2626{
@@ -101,9 +101,9 @@ You can install it like any other packages via `nix-env -iA myEmacs`. However, t
101101}
102102```
103103
104−This provides a fairly full Emacs start file. It will load in addition to the user's personal config. You can always disable it by passing `-q` to the Emacs command.
104+This provides a fairly full Emacs start file. It will load in addition to the user's presonal config. You can always disable it by passing `-q` to the Emacs command.
105105
106−Sometimes `emacs.pkgs.withPackages` is not enough, as this package set has some priorities imposed on packages (with the lowest priority assigned to Melpa Unstable, and the highest for packages manually defined in `pkgs/top-level/emacs-packages.nix`). But you can't control these priorities when some package is installed as a dependency. You can override it on a per-package-basis, providing all the required dependencies manually, but it's tedious and there is always a possibility that an unwanted dependency will sneak in through some other package. To completely override such a package, you can use `overrideScope'`.
106+Sometimes `emacs.pkgs.withPackages` is not enough, as this package set has some priorities imposed on packages (with the lowest priority assigned to Melpa Unstable, and the highest for packages manually defined in `pkgs/top-level/emacs-packages.nix`). But you can't control this priorities when some package is installed as a dependency. You can override it on per-package-basis, providing all the required dependencies manually - but it's tedious and there is always a possibility that an unwanted dependency will sneak in through some other package. To completely override such a package you can use `overrideScope'`.
107107
108108```nix
109109overrides = self: super: rec {
doc/builders/packages/etc-files.section.md+4−4
@@ -1,10 +1,10 @@
11# /etc files {#etc}
22
3−Certain calls in glibc require access to runtime files found in `/etc` such as `/etc/protocols` or `/etc/services` -- [getprotobyname](https://linux.die.net/man/3/getprotobyname) is one such function.
3+Certain calls in glibc require access to runtime files found in /etc such as `/etc/protocols` or `/etc/services` -- [getprotobyname](https://linux.die.net/man/3/getprotobyname) is one such function.
44
5−On non-NixOS distributions these files are typically provided by packages (i.e., [netbase](https://packages.debian.org/sid/netbase)) if not already pre-installed in your distribution. This can cause non-reproducibility for code if they rely on these files being present.
5+On non-NixOS distributions these files are typically provided by packages (i.e. [netbase](https://packages.debian.org/sid/netbase)) if not already pre-installed in your distribution. This can cause non-reproducibility for code if they rely on these files being present.
66
7−If [iana-etc](https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.iana-etc.x86_64-linux) is part of your `buildInputs`, then it will set the environment variables `NIX_ETC_PROTOCOLS` and `NIX_ETC_SERVICES` to the corresponding files in the package through a setup hook.
7+If [iana-etc](https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.iana-etc.x86_64-linux) is part of your _buildInputs_ then it will set the environment varaibles `NIX_ETC_PROTOCOLS` and `NIX_ETC_SERVICES` to the corresponding files in the package through a _setup-hook_.
88
99
1010```bash
@@ -15,4 +15,4 @@ NIX_ETC_SERVICES=/nix/store/aj866hr8fad8flnggwdhrldm0g799ccz-iana-etc-20210225/e
1515NIX_ETC_PROTOCOLS=/nix/store/aj866hr8fad8flnggwdhrldm0g799ccz-iana-etc-20210225/etc/protocols
1616```
1717
18−Nixpkg's version of [glibc](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/glibc/default.nix) has been patched to check for the existence of these environment variables. If the environment variables are *not* set, then it will attempt to find the files at the default location within `/etc`.
18+Nixpkg's version of [glibc](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/glibc/default.nix) has been patched to check for the existence of these environment variables. If the environment variable are *not set*, then it will attempt to find the files at the default location within _/etc_.
doc/builders/packages/firefox.section.md+8−7
@@ -2,7 +2,7 @@
22
33## Build wrapped Firefox with extensions and policies {#build-wrapped-firefox-with-extensions-and-policies}
44
5−The `wrapFirefox` function allows to pass policies, preferences and extensions that are available to Firefox. With the help of `fetchFirefoxAddon` this allows to build a Firefox version that already comes with add-ons pre-installed:
5+The `wrapFirefox` function allows to pass policies, preferences and extension that are available to Firefox. With the help of `fetchFirefoxAddon` this allows build a Firefox version that already comes with addons pre-installed:
66
77```nix
88{
@@ -40,12 +40,13 @@ The `wrapFirefox` function allows to pass policies, preferences and extensions t
4040}
4141```
4242
43−If `nixExtensions != null`, then all manually installed add-ons will be uninstalled from your browser profile.
44−To view available enterprise policies, visit [enterprise policies](https://github.com/mozilla/policy-templates#enterprisepoliciesenabled)
45−or type into the Firefox URL bar: `about:policies#documentation`.
46−Nix installed add-ons do not have a valid signature, which is why signature verification is disabled. This does not compromise security because downloaded add-ons are checksummed and manual add-ons can't be installed. Also, make sure that the `name` field of `fetchFirefoxAddon` is unique. If you remove an add-on from the `nixExtensions` array, rebuild and start Firefox: the removed add-on will be completely removed with all of its settings.
43+If `nixExtensions != null` then all manually installed addons will be uninstalled from your browser profile.
44+To view available enterprise policies visit [enterprise policies](https://github.com/mozilla/policy-templates#enterprisepoliciesenabled)
45+or type into the Firefox url bar: `about:policies#documentation`.
46+Nix installed addons do not have a valid signature, which is why signature verification is disabled. This does not compromise security because downloaded addons are checksumed and manual addons can't be installed. Also make sure that the `name` field of fetchFirefoxAddon is unique. If you remove an addon from the nixExtensions array, rebuild and start Firefox the removed addon will be completly removed with all of its settings.
4747
4848## Troubleshooting {#sec-firefox-troubleshooting}
49−If add-ons are marked as broken or the signature is invalid, make sure you have Firefox ESR installed. Normal Firefox does not provide the ability anymore to disable signature verification for add-ons thus nix add-ons get disabled by the normal Firefox binary.
49+If addons are marked as broken or the signature is invalid, make sure you have Firefox ESR installed. Normal Firefox does not provide the ability anymore to disable signature verification for addons thus nix addons get disabled by the normal Firefox binary.
50+
51+If addons do not appear installed although they have been defined in your nix configuration file reset the local addon state of your Firefox profile by clicking `help -> restart with addons disabled -> restart -> refresh firefox`. This can happen if you switch from manual addon mode to nix addon mode and then back to manual mode and then again to nix addon mode.
5052
51−If add-ons do not appear installed despite being defined in your nix configuration file, reset the local add-on state of your Firefox profile by clicking `Help -> More Troubleshooting Information -> Refresh Firefox`. This can happen if you switch from manual add-on mode to nix add-on mode and then back to manual mode and then again to nix add-on mode.
doc/builders/packages/fish.section.md+1−1
@@ -36,7 +36,7 @@ using `buildFishPlugin` and running unit tests with the `fishtape` test runner.
3636## Fish wrapper {#sec-fish-wrapper}
3737
3838The `wrapFish` package is a wrapper around Fish which can be used to create
39−Fish shells initialized with some plugins as well as completions, configuration
39+Fish shells initialised with some plugins as well as completions, configuration
4040snippets and functions sourced from the given paths. This provides a convenient
4141way to test Fish plugins and scripts without having to alter the environment.
4242
doc/builders/packages/fuse.section.md+2−2
@@ -24,10 +24,10 @@ packages on macOS:
2424 checking for fuse.h... no
2525 configure: error: No fuse.h found.
2626
27−This happens on autoconf based projects that use `AC_CHECK_HEADERS` or
27+This happens on autoconf based projects that uses `AC_CHECK_HEADERS` or
2828`AC_CHECK_LIBS` to detect libfuse, and will occur even when the `fuse` package
2929is included in `buildInputs`. It happens because libfuse headers throw an error
30−on macOS if the `FUSE_USE_VERSION` macro is undefined. Many projects do define
30+on macOS if the `FUSE_USE_VERSION` macro is undefined. Many proejcts do define
3131`FUSE_USE_VERSION`, but only inside C source files. This results in the above
3232error at configure time because the configure script would attempt to compile
3333sample FUSE programs without defining `FUSE_USE_VERSION`.
doc/builders/packages/ibus.section.md+3−3
@@ -6,7 +6,7 @@ This package is an ibus-based completion method to speed up typing.
66
77IBus needs to be configured accordingly to activate `typing-booster`. The configuration depends on the desktop manager in use. For detailed instructions, please refer to the [upstream docs](https://mike-fabian.github.io/ibus-typing-booster/documentation.html).
88
9−On NixOS, you need to explicitly enable `ibus` with given engines before customizing your desktop to use `typing-booster`. This can be achieved using the `ibus` module:
9+On NixOS you need to explicitly enable `ibus` with given engines before customizing your desktop to use `typing-booster`. This can be achieved using the `ibus` module:
1010
1111```nix
1212{ pkgs, ... }: {
@@ -19,7 +19,7 @@ On NixOS, you need to explicitly enable `ibus` with given engines before customi
1919
2020## Using custom hunspell dictionaries {#sec-ibus-typing-booster-customize-hunspell}
2121
22−The IBus engine is based on `hunspell` to support completion in many languages. By default, the dictionaries `de-de`, `en-us`, `fr-moderne` `es-es`, `it-it`, `sv-se` and `sv-fi` are in use. To add another dictionary, the package can be overridden like this:
22+The IBus engine is based on `hunspell` to support completion in many languages. By default the dictionaries `de-de`, `en-us`, `fr-moderne` `es-es`, `it-it`, `sv-se` and `sv-fi` are in use. To add another dictionary, the package can be overridden like this:
2323
2424```nix
2525ibus-engines.typing-booster.override { langs = [ "de-at" "en-gb" ]; }
@@ -31,7 +31,7 @@ _Note: each language passed to `langs` must be an attribute name in `pkgs.hunspe
3131
3232The `ibus-engines.typing-booster` package contains a program named `emoji-picker`. To display all emojis correctly, a special font such as `noto-fonts-emoji` is needed:
3333
34−On NixOS, it can be installed using the following expression:
34+On NixOS it can be installed using the following expression:
3535
3636```nix
3737{ pkgs, ... }: { fonts.fonts = with pkgs; [ noto-fonts-emoji ]; }
doc/builders/packages/linux.section.md+8−8
@@ -4,7 +4,7 @@ The Nix expressions to build the Linux kernel are in [`pkgs/os-specific/linux/ke
44
55The function that builds the kernel has an argument `kernelPatches` which should be a list of `{name, patch, extraConfig}` attribute sets, where `name` is the name of the patch (which is included in the kernel’s `meta.description` attribute), `patch` is the patch itself (possibly compressed), and `extraConfig` (optional) is a string specifying extra options to be concatenated to the kernel configuration file (`.config`).
66
7−The kernel derivation exports an attribute `features` specifying whether optional functionality is or isn’t enabled. This is used in NixOS to implement kernel-specific behaviour. For instance, if the kernel has the `iwlwifi` feature (i.e., has built-in support for Intel wireless chipsets), then NixOS doesn’t have to build the external `iwlwifi` package:
7+The kernel derivation exports an attribute `features` specifying whether optional functionality is or isn’t enabled. This is used in NixOS to implement kernel-specific behaviour. For instance, if the kernel has the `iwlwifi` feature (i.e. has built-in support for Intel wireless chipsets), then NixOS doesn’t have to build the external `iwlwifi` package:
88
99```nix
1010modulesTree = [kernel]
@@ -14,27 +14,27 @@ modulesTree = [kernel]
1414
1515How to add a new (major) version of the Linux kernel to Nixpkgs:
1616
17−1. Copy the old Nix expression (e.g., `linux-2.6.21.nix`) to the new one (e.g., `linux-2.6.22.nix`) and update it.
17+1. Copy the old Nix expression (e.g. `linux-2.6.21.nix`) to the new one (e.g. `linux-2.6.22.nix`) and update it.
1818
19192. Add the new kernel to the `kernels` attribute set in `linux-kernels.nix` (e.g., create an attribute `kernel_2_6_22`).
2020
21213. Now we’re going to update the kernel configuration. First unpack the kernel. Then for each supported platform (`i686`, `x86_64`, `uml`) do the following:
2222
23− 1. Make a copy from the old config (e.g., `config-2.6.21-i686-smp`) to the new one (e.g., `config-2.6.22-i686-smp`).
23+ 1. Make an copy from the old config (e.g. `config-2.6.21-i686-smp`) to the new one (e.g. `config-2.6.22-i686-smp`).
2424
25− 2. Copy the config file for this platform (e.g., `config-2.6.22-i686-smp`) to `.config` in the kernel source tree.
25+ 2. Copy the config file for this platform (e.g. `config-2.6.22-i686-smp`) to `.config` in the kernel source tree.
2626
27− 3. Run `make oldconfig ARCH={i386,x86_64,um}` and answer all questions. (For the uml configuration, also add `SHELL=bash`.) Make sure to keep the configuration consistent between platforms (i.e., don’t enable some feature on `i686` and disable it on `x86_64`).
27+ 3. Run `make oldconfig ARCH={i386,x86_64,um}` and answer all questions. (For the uml configuration, also add `SHELL=bash`.) Make sure to keep the configuration consistent between platforms (i.e. don’t enable some feature on `i686` and disable it on `x86_64`).
2828
29− 4. If needed, you can also run `make menuconfig`:
29+ 4. If needed you can also run `make menuconfig`:
3030
3131 ```ShellSession
32− $ nix-env -f "<nixpkgs>" -iA ncurses
32+ $ nix-env -i ncurses
3333 $ export NIX_CFLAGS_LINK=-lncurses
3434 $ make menuconfig ARCH=arch
3535 ```
3636
37− 5. Copy `.config` over the new config file (e.g., `config-2.6.22-i686-smp`).
37+ 5. Copy `.config` over the new config file (e.g. `config-2.6.22-i686-smp`).
3838
39394. Test building the kernel: `nix-build -A linuxKernel.kernels.kernel_2_6_22`. If it compiles, ship it! For extra credit, try booting NixOS with it.
4040
doc/builders/packages/locales.section.md+2−2
@@ -1,5 +1,5 @@
11# Locales {#locales}
22
3−To allow simultaneous use of packages linked against different versions of `glibc` with different locale archive formats, Nixpkgs patches `glibc` to rely on `LOCALE_ARCHIVE` environment variable.
3+To allow simultaneous use of packages linked against different versions of `glibc` with different locale archive formats Nixpkgs patches `glibc` to rely on `LOCALE_ARCHIVE` environment variable.
44
5−On non-NixOS distributions, this variable is obviously not set. This can cause regressions in language support or even crashes in some Nixpkgs-provided programs. The simplest way to mitigate this problem is exporting the `LOCALE_ARCHIVE` variable pointing to `${glibcLocales}/lib/locale/locale-archive`. The drawback (and the reason this is not the default) is the relatively large (a hundred MiB) size of the full set of locales. It is possible to build a custom set of locales by overriding parameters `allLocales` and `locales` of the package.
5+On non-NixOS distributions this variable is obviously not set. This can cause regressions in language support or even crashes in some Nixpkgs-provided programs. The simplest way to mitigate this problem is exporting the `LOCALE_ARCHIVE` variable pointing to `${glibcLocales}/lib/locale/locale-archive`. The drawback (and the reason this is not the default) is the relatively large (a hundred MiB) size of the full set of locales. It is possible to build a custom set of locales by overriding parameters `allLocales` and `locales` of the package.
doc/builders/packages/nginx.section.md+2−2
@@ -4,8 +4,8 @@
44
55## ETags on static files served from the Nix store {#sec-nginx-etag}
66
7−HTTP has a couple of different mechanisms for caching to prevent clients from having to download the same content repeatedly if a resource has not changed since the last time it was requested. When nginx is used as a server for static files, it implements the caching mechanism based on the [`Last-Modified`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified) response header automatically; unfortunately, it works by using filesystem timestamps to determine the value of the `Last-Modified` header. This doesn't give the desired behavior when the file is in the Nix store because all file timestamps are set to 0 (for reasons related to build reproducibility).
7+HTTP has a couple different mechanisms for caching to prevent clients from having to download the same content repeatedly if a resource has not changed since the last time it was requested. When nginx is used as a server for static files, it implements the caching mechanism based on the [`Last-Modified`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified) response header automatically; unfortunately, it works by using filesystem timestamps to determine the value of the `Last-Modified` header. This doesn't give the desired behavior when the file is in the Nix store, because all file timestamps are set to 0 (for reasons related to build reproducibility).
88
9−Fortunately, HTTP supports an alternative (and more effective) caching mechanism: the [`ETag`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) response header. The value of the `ETag` header specifies some identifier for the particular content that the server is sending (e.g., a hash). When a client makes a second request for the same resource, it sends that value back in an `If-None-Match` header. If the ETag value is unchanged, then the server does not need to resend the content.
9+Fortunately, HTTP supports an alternative (and more effective) caching mechanism: the [`ETag`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) response header. The value of the `ETag` header specifies some identifier for the particular content that the server is sending (e.g. a hash). When a client makes a second request for the same resource, it sends that value back in an `If-None-Match` header. If the ETag value is unchanged, then the server does not need to resend the content.
1010
1111As of NixOS 19.09, the nginx package in Nixpkgs is patched such that when nginx serves a file out of `/nix/store`, the hash in the store path is used as the `ETag` header in the HTTP response, thus providing proper caching functionality. This happens automatically; you do not need to do modify any configuration to get this behavior.
doc/builders/packages/opengl.section.md+1−1
@@ -12,4 +12,4 @@ The NixOS desktop or other non-headless configurations are the primary target fo
1212
1313If you are using a non-NixOS GNU/Linux/X11 desktop with free software video drivers, consider launching OpenGL-dependent programs from Nixpkgs with Nixpkgs versions of `libglvnd` and `mesa.drivers` in `LD_LIBRARY_PATH`. For Mesa drivers, the Linux kernel version doesn't have to match nixpkgs.
1414
15−For proprietary video drivers, you might have luck with also adding the corresponding video driver package.
15+For proprietary video drivers you might have luck with also adding the corresponding video driver package.
doc/builders/packages/shell-helpers.section.md+1−1
@@ -4,7 +4,7 @@ Some packages provide the shell integration to be more useful. But unlike other
44
55- `fzf` : `fzf-share`
66
7−E.g. `fzf` can then be used in the `.bashrc` like this:
7+E.g. `fzf` can then used in the `.bashrc` like this:
88
99```bash
1010source "$(fzf-share)/completion.bash"
doc/builders/packages/steam.section.md+8−8
@@ -2,20 +2,20 @@
22
33## Steam in Nix {#sec-steam-nix}
44
5−Steam is distributed as a `.deb` file, for now only as an i686 package (the amd64 package only has documentation). When unpacked, it has a script called `steam` that in Ubuntu (their target distro) would go to `/usr/bin`. When run for the first time, this script copies some files to the user's home, which include another script that is the ultimate responsible for launching the steam binary, which is also in `$HOME`.
5+Steam is distributed as a `.deb` file, for now only as an i686 package (the amd64 package only has documentation). When unpacked, it has a script called `steam` that in Ubuntu (their target distro) would go to `/usr/bin`. When run for the first time, this script copies some files to the user's home, which include another script that is the ultimate responsible for launching the steam binary, which is also in \$HOME.
66
77Nix problems and constraints:
88
9−- We don't have `/bin/bash` and many scripts point there. Same thing for `/usr/bin/python`.
9+- We don't have `/bin/bash` and many scripts point there. Similarly for `/usr/bin/python`.
1010- We don't have the dynamic loader in `/lib`.
11−- The `steam.sh` script in `$HOME` cannot be patched, as it is checked and rewritten by steam.
11+- The `steam.sh` script in \$HOME can not be patched, as it is checked and rewritten by steam.
1212- The steam binary cannot be patched, it's also checked.
1313
1414The current approach to deploy Steam in NixOS is composing a FHS-compatible chroot environment, as documented [here](http://sandervanderburg.blogspot.nl/2013/09/composing-fhs-compatible-chroot.html). This allows us to have binaries in the expected paths without disrupting the system, and to avoid patching them to work in a non FHS environment.
1515
1616## How to play {#sec-steam-play}
1717
18−Use `programs.steam.enable = true;` if you want to add steam to `systemPackages` and also enable a few workarounds as well as Steam controller support or other Steam supported controllers such as the DualShock 4 or Nintendo Switch Pro Controller.
18+Use `programs.steam.enable = true;` if you want to add steam to systemPackages and also enable a few workarrounds aswell as Steam controller support or other Steam supported controllers such as the DualShock 4 or Nintendo Switch Pr.
1919
2020## Troubleshooting {#sec-steam-troub}
2121
@@ -32,7 +32,7 @@ Use `programs.steam.enable = true;` if you want to add steam to `systemPackages`
3232- **Using the FOSS Radeon or nouveau (nvidia) drivers**
3333
3434 - The `newStdcpp` parameter was removed since NixOS 17.09 and should not be needed anymore.
35− - Steam ships statically linked with a version of `libcrypto` that conflicts with the one dynamically loaded by radeonsi_dri.so. If you get the error:
35+ - Steam ships statically linked with a version of libcrypto that conflics with the one dynamically loaded by radeonsi_dri.so. If you get the error
3636
3737 ```
3838 steam.sh: line 713: 7842 Segmentation fault (core dumped)
@@ -42,13 +42,13 @@ Use `programs.steam.enable = true;` if you want to add steam to `systemPackages`
4242
4343- **Java**
4444
45− 1. There is no java in steam chrootenv by default. If you get a message like:
45+ 1. There is no java in steam chrootenv by default. If you get a message like
4646
4747 ```
4848 /home/foo/.local/share/Steam/SteamApps/common/towns/towns.sh: line 1: java: command not found
4949 ```
5050
51− you need to add:
51+ you need to add
5252
5353 ```nix
5454 steam.override { withJava = true; };
@@ -56,7 +56,7 @@ Use `programs.steam.enable = true;` if you want to add steam to `systemPackages`
5656
5757## steam-run {#sec-steam-run}
5858
59−The FHS-compatible chroot used for Steam can also be used to run other Linux games that expect a FHS environment. To use it, install the `steam-run` package and run the game with:
59+The FHS-compatible chroot used for Steam can also be used to run other Linux games that expect a FHS environment. To use it, install the `steam-run-native` package and run the game with
6060
6161```
6262steam-run ./foo
doc/builders/packages/urxvt.section.md+4−4
@@ -4,7 +4,7 @@ Urxvt, also known as rxvt-unicode, is a highly customizable terminal emulator.
44
55## Configuring urxvt {#sec-urxvt-conf}
66
7−In `nixpkgs`, urxvt is provided by the package `rxvt-unicode`. It can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, use an overlay or directly install an expression that overrides its configuration, such as:
7+In `nixpkgs`, urxvt is provided by the package `rxvt-unicode`. It can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, use an overlay or directly install an expression that overrides its configuration, such as
88
99```nix
1010rxvt-unicode.override {
@@ -58,14 +58,14 @@ rxvt-unicode.override {
5858
5959## Packaging urxvt plugins {#sec-urxvt-pkg}
6060
61−Urxvt plugins resides in `pkgs/applications/misc/rxvt-unicode-plugins`. To add a new plugin, create an expression in a subdirectory and add the package to the set in `pkgs/applications/misc/rxvt-unicode-plugins/default.nix`.
61+Urxvt plugins resides in `pkgs/applications/misc/rxvt-unicode-plugins`. To add a new plugin create an expression in a subdirectory and add the package to the set in `pkgs/applications/misc/rxvt-unicode-plugins/default.nix`.
6262
6363A plugin can be any kind of derivation, the only requirement is that it should always install perl scripts in `$out/lib/urxvt/perl`. Look for existing plugins for examples.
6464
65−If the plugin is itself a Perl package that needs to be imported from other plugins or scripts, add the following passthrough:
65+If the plugin is itself a perl package that needs to be imported from other plugins or scripts, add the following passthrough:
6666
6767```nix
6868passthru.perlPackages = [ "self" ];
6969```
7070
71−This will make the urxvt wrapper pick up the dependency and set up the Perl path accordingly.
71+This will make the urxvt wrapper pick up the dependency and set up the perl path accordingly.
doc/builders/packages/weechat.section.md+5−5
@@ -1,6 +1,6 @@
1−# WeeChat {#sec-weechat}
1+# Weechat {#sec-weechat}
22
3−WeeChat can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, install an expression that overrides its configuration, such as:
3+Weechat can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, install an expression that overrides its configuration such as
44
55```nix
66weechat.override {configure = {availablePlugins, ...}: {
@@ -13,7 +13,7 @@ If the `configure` function returns an attrset without the `plugins` attribute,
1313
1414The plugins currently available are `python`, `perl`, `ruby`, `guile`, `tcl` and `lua`.
1515
16−The Python and Perl plugins allows the addition of extra libraries. For instance, the `inotify.py` script in `weechat-scripts` requires D-Bus or libnotify, and the `fish.py` script requires `pycrypto`. To use these scripts, use the plugin's `withPackages` attribute:
16+The python and perl plugins allows the addition of extra libraries. For instance, the `inotify.py` script in `weechat-scripts` requires D-Bus or libnotify, and the `fish.py` script requires `pycrypto`. To use these scripts, use the plugin's `withPackages` attribute:
1717
1818```nix
1919weechat.override { configure = {availablePlugins, ...}: {
@@ -49,7 +49,7 @@ weechat.override {
4949
5050Further values can be added to the list of commands when running `weechat --run-command "your-commands"`.
5151
52−Additionally, it's possible to specify scripts to be loaded when starting `weechat`. These will be loaded before the commands from `init`:
52+Additionally it's possible to specify scripts to be loaded when starting `weechat`. These will be loaded before the commands from `init`:
5353
5454```nix
5555weechat.override {
@@ -64,7 +64,7 @@ weechat.override {
6464}
6565```
6666
67−In `nixpkgs` there's a subpackage which contains derivations for WeeChat scripts. Such derivations expect a `passthru.scripts` attribute, which contains a list of all scripts inside the store path. Furthermore, all scripts have to live in `$out/share`. An exemplary derivation looks like this:
67+In `nixpkgs` there's a subpackage which contains derivations for WeeChat scripts. Such derivations expect a `passthru.scripts` attribute which contains a list of all scripts inside the store path. Furthermore all scripts have to live in `$out/share`. An exemplary derivation looks like this:
6868
6969```nix
7070{ stdenv, fetchurl }:
doc/builders/special.xml+1
@@ -7,4 +7,5 @@
77 </para>
88 <xi:include href="special/fhs-environments.section.xml" />
99 <xi:include href="special/mkshell.section.xml" />
10+ <xi:include href="special/invalidateFetcherByDrvHash.section.xml" />
1011</chapter>
doc/builders/special/fhs-environments.section.md−2
@@ -45,5 +45,3 @@ One can create a simple environment using a `shell.nix` like that:
4545```
4646
4747Running `nix-shell` would then drop you into a shell with these libraries and binaries available. You can use this to run closed-source applications which expect FHS structure without hassles: simply change `runScript` to the application path, e.g. `./bin/start.sh` -- relative paths are supported.
48−
49−Additionally, the FHS builder links all relocated gsettings-schemas (the glib setup-hook moves them to `share/gsettings-schemas/${name}/glib-2.0/schemas`) to their standard FHS location. This means you don't need to wrap binaries with `wrapGAppsHook`.
doc/builders/special/invalidateFetcherByDrvHash.section.mdnew file+31
@@ -0,0 +1,31 @@
1+
2+## `invalidateFetcherByDrvHash` {#sec-pkgs-invalidateFetcherByDrvHash}
3+
4+Use the derivation hash to invalidate the output via name, for testing.
5+
6+Type: `(a@{ name, ... } -> Derivation) -> a -> Derivation`
7+
8+Normally, fixed output derivations can and should be cached by their output
9+hash only, but for testing we want to re-fetch everytime the fetcher changes.
10+
11+Changes to the fetcher become apparent in the drvPath, which is a hash of
12+how to fetch, rather than a fixed store path.
13+By inserting this hash into the name, we can make sure to re-run the fetcher
14+every time the fetcher changes.
15+
16+This relies on the assumption that Nix isn't clever enough to reuse its
17+database of local store contents to optimize fetching.
18+
19+You might notice that the "salted" name derives from the normal invocation,
20+not the final derivation. `invalidateFetcherByDrvHash` has to invoke the fetcher
21+function twice: once to get a derivation hash, and again to produce the final
22+fixed output derivation.
23+
24+Example:
25+
26+ tests.fetchgit = invalidateFetcherByDrvHash fetchgit {
27+ name = "nix-source";
28+ url = "https://github.com/NixOS/nix";
29+ rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
30+ sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
31+ };
doc/builders/special/mkshell.section.md+6−26
@@ -1,37 +1,17 @@
11# pkgs.mkShell {#sec-pkgs-mkShell}
22
3−`pkgs.mkShell` is a specialized `stdenv.mkDerivation` that removes some
4−repetition when using it with `nix-shell` (or `nix develop`).
3+`pkgs.mkShell` is a special kind of derivation that is only useful when using
4+it combined with `nix-shell`. It will in fact fail to instantiate when invoked
5+with `nix-build`.
56
67## Usage {#sec-pkgs-mkShell-usage}
78
8−Here is a common usage example:
9−
109```nix
1110{ pkgs ? import <nixpkgs> {} }:
1211pkgs.mkShell {
12+ # specify which packages to add to the shell environment
1313 packages = [ pkgs.gnumake ];
14−
15− inputsFrom = [ pkgs.hello pkgs.gnutar ];
16−
17− shellHook = ''
18− export DEBUG=1
19− '';
14+ # add all the dependencies, of the given packages, to the shell environment
15+ inputsFrom = with pkgs; [ hello gnutar ];
2016}
2117```
22−
23−## Attributes
24−
25−* `name` (default: `nix-shell`). Set the name of the derivation.
26−* `packages` (default: `[]`). Add executable packages to the `nix-shell` environment.
27−* `inputsFrom` (default: `[]`). Add build dependencies of the listed derivations to the `nix-shell` environment.
28−* `shellHook` (default: `""`). Bash statements that are executed by `nix-shell`.
29−
30−... all the attributes of `stdenv.mkDerivation`.
31−
32−## Building the shell
33−
34−This derivation output will contain a text file that contains a reference to
35−all the build inputs. This is useful in CI where we want to make sure that
36−every derivation, and its dependencies, build properly. Or when creating a GC
37−root so that the build dependencies don't get garbage-collected.
doc/builders/testers.chapter.mddeleted−82
@@ -1,82 +0,0 @@
1−# Testers {#chap-testers}
2−This chapter describes several testing builders which are available in the <literal>testers</literal> namespace.
3−
4−## `testVersion` {#tester-testVersion}
5−
6−Checks the command output contains the specified version
7−
8−Although simplistic, this test assures that the main program
9−can run. While there's no substitute for a real test case,
10−it does catch dynamic linking errors and such. It also provides
11−some protection against accidentally building the wrong version,
12−for example when using an 'old' hash in a fixed-output derivation.
13−
14−Examples:
15−
16−```nix
17−passthru.tests.version = testVersion { package = hello; };
18−
19−passthru.tests.version = testVersion {
20− package = seaweedfs;
21− command = "weed version";
22−};
23−
24−passthru.tests.version = testVersion {
25− package = key;
26− command = "KeY --help";
27− # Wrong '2.5' version in the code. Drop on next version.
28− version = "2.5";
29−};
30−```
31−
32−## `testEqualDerivation` {#tester-testEqualDerivation}
33−
34−Checks that two packages produce the exact same build instructions.
35−
36−This can be used to make sure that a certain difference of configuration,
37−such as the presence of an overlay does not cause a cache miss.
38−
39−When the derivations are equal, the return value is an empty file.
40−Otherwise, the build log explains the difference via `nix-diff`.
41−
42−Example:
43−
44−```nix
45−testEqualDerivation
46− "The hello package must stay the same when enabling checks."
47− hello
48− (hello.overrideAttrs(o: { doCheck = true; }))
49−```
50−
51−## `invalidateFetcherByDrvHash` {#tester-invalidateFetcherByDrvHash}
52−
53−Use the derivation hash to invalidate the output via name, for testing.
54−
55−Type: `(a@{ name, ... } -> Derivation) -> a -> Derivation`
56−
57−Normally, fixed output derivations can and should be cached by their output
58−hash only, but for testing we want to re-fetch everytime the fetcher changes.
59−
60−Changes to the fetcher become apparent in the drvPath, which is a hash of
61−how to fetch, rather than a fixed store path.
62−By inserting this hash into the name, we can make sure to re-run the fetcher
63−every time the fetcher changes.
64−
65−This relies on the assumption that Nix isn't clever enough to reuse its
66−database of local store contents to optimize fetching.
67−
68−You might notice that the "salted" name derives from the normal invocation,
69−not the final derivation. `invalidateFetcherByDrvHash` has to invoke the fetcher
70−function twice: once to get a derivation hash, and again to produce the final
71−fixed output derivation.
72−
73−Example:
74−
75−```nix
76−tests.fetchgit = invalidateFetcherByDrvHash fetchgit {
77− name = "nix-source";
78− url = "https://github.com/NixOS/nix";
79− rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
80− sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
81−};
82−```
doc/builders/trivial-builders.chapter.md+3−105
@@ -35,10 +35,10 @@ This works just like `runCommand`. The only difference is that it also provides
3535
3636## `runCommandLocal` {#trivial-builder-runCommandLocal}
3737
38−Variant of `runCommand` that forces the derivation to be built locally, it is not substituted. This is intended for very cheap commands (<1s execution time). It saves on the network round-trip and can speed up a build.
38+Variant of `runCommand` that forces the derivation to be built locally, it is not substituted. This is intended for very cheap commands (<1s execution time). It saves on the network roundrip and can speed up a build.
3939
4040::: {.note}
41−This sets [`allowSubstitutes` to `false`](https://nixos.org/nix/manual/#adv-attr-allowSubstitutes), so only use `runCommandLocal` if you are certain the user will always have a builder for the `system` of the derivation. This should be true for most trivial use cases (e.g., just copying some files to a different location or adding symlinks) because there the `system` is usually the same as `builtins.currentSystem`.
41+This sets [`allowSubstitutes` to `false`](https://nixos.org/nix/manual/#adv-attr-allowSubstitutes), so only use `runCommandLocal` if you are certain the user will always have a builder for the `system` of the derivation. This should be true for most trivial use cases (e.g. just copying some files to a different location or adding symlinks), because there the `system` is usually the same as `builtins.currentSystem`.
4242:::
4343
4444## `writeTextFile`, `writeText`, `writeTextDir`, `writeScript`, `writeScriptBin` {#trivial-builder-writeText}
@@ -47,88 +47,6 @@ These functions write `text` to the Nix store. This is useful for creating scrip
4747
4848Many more commands wrap `writeTextFile` including `writeText`, `writeTextDir`, `writeScript`, and `writeScriptBin`. These are convenience functions over `writeTextFile`.
4949
50−Here are a few examples:
51−```nix
52−# Writes my-file to /nix/store/<store path>
53−writeTextFile {
54− name = "my-file";
55− text = ''
56− Contents of File
57− '';
58−}
59−# See also the `writeText` helper function below.
60−
61−# Writes executable my-file to /nix/store/<store path>/bin/my-file
62−writeTextFile {
63− name = "my-file";
64− text = ''
65− Contents of File
66− '';
67− executable = true;
68− destination = "/bin/my-file";
69−}
70−# Writes contents of file to /nix/store/<store path>
71−writeText "my-file"
72− ''
73− Contents of File
74− '';
75−# Writes contents of file to /nix/store/<store path>/share/my-file
76−writeTextDir "share/my-file"
77− ''
78− Contents of File
79− '';
80−# Writes my-file to /nix/store/<store path> and makes executable
81−writeScript "my-file"
82− ''
83− Contents of File
84− '';
85−# Writes my-file to /nix/store/<store path>/bin/my-file and makes executable.
86−writeScriptBin "my-file"
87− ''
88− Contents of File
89− '';
90−# Writes my-file to /nix/store/<store path> and makes executable.
91−writeShellScript "my-file"
92− ''
93− Contents of File
94− '';
95−# Writes my-file to /nix/store/<store path>/bin/my-file and makes executable.
96−writeShellScriptBin "my-file"
97− ''
98− Contents of File
99− '';
100−
101−```
102−
103−## `concatTextFile`, `concatText`, `concatScript` {#trivial-builder-concatText}
104−
105−These functions concatenate `files` to the Nix store in a single file. This is useful for configuration files structured in lines of text. `concatTextFile` takes an attribute set and expects two arguments, `name` and `files`. `name` corresponds to the name used in the Nix store path. `files` will be the files to be concatenated. You can also set `executable` to true to make this file have the executable bit set.
106−`concatText` and`concatScript` are simple wrappers over `concatTextFile`.
107−
108−Here are a few examples:
109−```nix
110−
111−# Writes my-file to /nix/store/<store path>
112−concatTextFile {
113− name = "my-file";
114− files = [ drv1 "${drv2}/path/to/file" ];
115−}
116−# See also the `concatText` helper function below.
117−
118−# Writes executable my-file to /nix/store/<store path>/bin/my-file
119−concatTextFile {
120− name = "my-file";
121− files = [ drv1 "${drv2}/path/to/file" ];
122− executable = true;
123− destination = "/bin/my-file";
124−}
125−# Writes contents of files to /nix/store/<store path>
126−concatText "my-file" [ file1 file2 ]
127−
128−# Writes contents of files to /nix/store/<store path>
129−concatScript "my-file" [ file1 file2 ]
130−```
131−
13250## `writeShellApplication` {#trivial-builder-writeShellApplication}
13351
13452This can be used to easily produce a shell script that has some dependencies (`runtimeInputs`). It automatically sets the `PATH` of the script to contain all of the listed inputs, sets some sanity shellopts (`errexit`, `nounset`, `pipefail`), and checks the resulting script with [`shellcheck`](https://github.com/koalaman/shellcheck).
@@ -154,26 +72,6 @@ validation.
15472## `symlinkJoin` {#trivial-builder-symlinkJoin}
15573
15674This can be used to put many derivations into the same directory structure. It works by creating a new derivation and adding symlinks to each of the paths listed. It expects two arguments, `name`, and `paths`. `name` is the name used in the Nix store path for the created derivation. `paths` is a list of paths that will be symlinked. These paths can be to Nix store derivations or any other subdirectory contained within.
157−Here is an example:
158−```nix
159−# adds symlinks of hello and stack to current build and prints "links added"
160−symlinkJoin { name = "myexample"; paths = [ pkgs.hello pkgs.stack ]; postBuild = "echo links added"; }
161−```
162−This creates a derivation with a directory structure like the following:
163−```
164−/nix/store/sglsr5g079a5235hy29da3mq3hv8sjmm-myexample
165−|-- bin
166−| |-- hello -> /nix/store/qy93dp4a3rqyn2mz63fbxjg228hffwyw-hello-2.10/bin/hello
167−| `-- stack -> /nix/store/6lzdpxshx78281vy056lbk553ijsdr44-stack-2.1.3.1/bin/stack
168−`-- share
169− |-- bash-completion
170− | `-- completions
171− | `-- stack -> /nix/store/6lzdpxshx78281vy056lbk553ijsdr44-stack-2.1.3.1/share/bash-completion/completions/stack
172− |-- fish
173− | `-- vendor_completions.d
174− | `-- stack.fish -> /nix/store/6lzdpxshx78281vy056lbk553ijsdr44-stack-2.1.3.1/share/fish/vendor_completions.d/stack.fish
175−...
176−```
17775
17876## `writeReferencesToFile` {#trivial-builder-writeReferencesToFile}
17977
@@ -219,5 +117,5 @@ produces an output path `/nix/store/<hash>-runtime-references` containing
219117/nix/store/<hash>-hello-2.10
220118```
221119
222−but none of `hello`'s dependencies because those are not referenced directly
120+but none of `hello`'s dependencies, because those are not referenced directly
223121by `hi`'s output.
doc/contributing/coding-conventions.chapter.md+8−9
@@ -214,17 +214,17 @@ Most of the time, these are the same. For instance, the package `e2fsprogs` has
214214
215215There are a few naming guidelines:
216216
217−- The `pname` attribute _should_ be identical to the upstream package name.
217+- The `name` attribute _should_ be identical to the upstream package name.
218218
219−- The `pname` and the `version` attribute _must not_ contain uppercase letters — e.g., `"mplayer" instead of `"MPlayer"`.
219+- The `name` attribute _must not_ contain uppercase letters — e.g., `"mplayer-1.0rc2"` instead of `"MPlayer-1.0rc2"`.
220220
221−- The `version` attribute _must_ start with a digit e.g`"0.3.1rc2".
221+- The version part of the `name` attribute _must_ start with a digit (following a dash) — e.g., `"hello-0.3.1rc2"`.
222222
223−- If a package is not a release but a commit from a repository, then the `version` attribute _must_ be the date of that (fetched) commit. The date _must_ be in `"unstable-YYYY-MM-DD"` format.
223+- If a package is not a release but a commit from a repository, then the version part of the name _must_ be the date of that (fetched) commit. The date _must_ be in `"YYYY-MM-DD"` format. Also append `"unstable"` to the name - e.g., `"pkgname-unstable-2014-09-23"`.
224224
225−- Dashes in the package `pname` _should_ be preserved in new variable names, rather than converted to underscores or camel cased — e.g., `http-parser` instead of `http_parser` or `httpParser`. The hyphenated style is preferred in all three package names.
225+- Dashes in the package name _should_ be preserved in new variable names, rather than converted to underscores or camel cased — e.g., `http-parser` instead of `http_parser` or `httpParser`. The hyphenated style is preferred in all three package names.
226226
227−- If there are multiple versions of a package, this _should_ be reflected in the variable names in `all-packages.nix`, e.g. `json-c_0_9` and `json-c_0_11`. If there is an obvious “default” version, make an attribute like `json-c = json-c_0_9;`. See also [](#sec-versioning)
227+- If there are multiple versions of a package, this _should_ be reflected in the variable names in `all-packages.nix`, e.g. `json-c-0-9` and `json-c-0-11`. If there is an obvious “default” version, make an attribute like `json-c = json-c-0-9;`. See also [](#sec-versioning)
228228
229229## File naming and organisation {#sec-organisation}
230230
@@ -540,11 +540,10 @@ If you do need to do create this sort of patch file, one way to do so is with gi
540540
541541If a patch is available online but does not cleanly apply, it can be modified in some fixed ways by using additional optional arguments for `fetchpatch`:
542542
543−- `relative`: Similar to using `git-diff`'s `--relative` flag, only keep changes inside the specified directory, making paths relative to it.
544543- `stripLen`: Remove the first `stripLen` components of pathnames in the patch.
545544- `extraPrefix`: Prefix pathnames by this string.
546−- `excludes`: Exclude files matching these patterns (applies after the above arguments).
547−- `includes`: Include only files matching these patterns (applies after the above arguments).
545+- `excludes`: Exclude files matching this pattern.
546+- `includes`: Include only files matching this pattern.
548547- `revert`: Revert the patch.
549548
550549Note that because the checksum is computed after applying these effects, using or modifying these arguments will have no effect unless the `sha256` argument is changed as well.
doc/contributing/contributing-to-documentation.chapter.md+1−1
@@ -55,7 +55,7 @@ Additionally, the following syntax extensions are currently used:
5555- []{#ssec-contributing-markup-inline-roles}
5656 If you want to link to a man page, you can use `` {manpage}`nix.conf(5)` ``, which will turn into {manpage}`nix.conf(5)`.
5757
58− The references will turn into links when a mapping exists in {file}`doc/build-aux/pandoc-filters/link-unix-man-references.lua`.
58+ The references will turn into links when a mapping exists in {file}`doc/build-aux/pandoc-filters/unix-man-urls.lua`.
5959
6060 This syntax is taken from [MyST](https://myst-parser.readthedocs.io/en/latest/syntax/syntax.html#roles-an-in-line-extension-point). Though, the feature originates from [reStructuredText](https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-manpage) with slightly different syntax.
6161
doc/contributing/reviewing-contributions.chapter.md+4−5
@@ -103,8 +103,7 @@ Sample template for a new package review is provided below.
103103- [ ] `meta.maintainers` is set
104104- [ ] build time only dependencies are declared in `nativeBuildInputs`
105105- [ ] source is fetched using the appropriate function
106−- [ ] the list of `phases` is not overridden
107−- [ ] when a phase (like `installPhase`) is overridden it starts with `runHook preInstall` and ends with `runHook postInstall`.
106+- [ ] phases are respected
108107- [ ] patches that are remotely available are fetched with `fetchpatch`
109108
110109##### Possible improvements
@@ -122,10 +121,10 @@ Reviewing process:
122121 - [CODEOWNERS](https://help.github.com/articles/about-codeowners/) will make GitHub notify users based on the submitted changes, but it can happen that it misses some of the package maintainers.
123122- Ensure that the module tests, if any, are succeeding.
124123- Ensure that the introduced options are correct.
125− - Type should be appropriate (string related types differs in their merging capabilities, `loaOf` and `string` types are deprecated).
124+ - Type should be appropriate (string related types differs in their merging capabilities, `optionSet` and `string` types are deprecated).
126125 - Description, default and example should be provided.
127126- Ensure that option changes are backward compatible.
128− - `mkRenamedOptionModuleWith` provides a way to make option changes backward compatible.
127+ - `mkRenamedOptionModule` and `mkAliasOptionModule` functions provide way to make option changes backward compatible.
129128- Ensure that removed options are declared with `mkRemovedOptionModule`
130129- Ensure that changes that are not backward compatible are mentioned in release notes.
131130- Ensure that documentations affected by the change is updated.
@@ -157,7 +156,7 @@ Reviewing process:
157156
158157- Ensure that the module tests, if any, are succeeding.
159158- Ensure that the introduced options are correct.
160− - Type should be appropriate (string related types differs in their merging capabilities, `loaOf` and `string` types are deprecated).
159+ - Type should be appropriate (string related types differs in their merging capabilities, `optionSet` and `string` types are deprecated).
161160 - Description, default and example should be provided.
162161- Ensure that module `meta` field is present
163162 - Maintainers should be declared in `meta.maintainers`.
doc/contributing/submitting-changes.chapter.md+10−20
@@ -43,13 +43,13 @@
4343 - nixpkgs:
4444
4545 - update pkg
46− - `nix-env -iA pkg-attribute-name -f <path to your local nixpkgs folder>`
46+ - `nix-env -i pkg-name -f <path to your local nixpkgs folder>`
4747 - add pkg
4848 - Make sure it’s in `pkgs/top-level/all-packages.nix`
49− - `nix-env -iA pkg-attribute-name -f <path to your local nixpkgs folder>`
49+ - `nix-env -i pkg-name -f <path to your local nixpkgs folder>`
5050 - _If you don’t want to install pkg in you profile_.
51− - `nix-build -A pkg-attribute-name <path to your local nixpkgs folder>` and check results in the folder `result`. It will appear in the same directory where you did `nix-build`.
52− - If you installed your package with `nix-env`, you can run `nix-env -e pkg-name` where `pkg-name` is as reported by `nix-env -q` to uninstall it from your system.
51+ - `nix-build -A pkg-attribute-name <path to your local nixpkgs folder>/default.nix` and check results in the folder `result`. It will appear in the same directory where you did `nix-build`.
52+ - If you did `nix-env -i pkg-name` you can do `nix-env -e pkg-name` to uninstall it from your system.
5353
5454 - NixOS and its modules:
5555 - You can add new module to your NixOS configuration file (usually it’s `/etc/nixos/configuration.nix`). And do `sudo nixos-rebuild test -I nixpkgs=<path to your local nixpkgs folder> --fast`.
@@ -96,9 +96,9 @@ We use jbidwatcher as an example for a discontinued project here.
9696
97971. Have Nixpkgs checked out locally and up to date.
98981. Create a new branch for your change, e.g. `git checkout -b jbidwatcher`
99−1. Remove the actual package including its directory, e.g. `git rm -rf pkgs/applications/misc/jbidwatcher`
99+1. Remove the actual package including its directory, e.g. `rm -rf pkgs/applications/misc/jbidwatcher`
1001001. Remove the package from the list of all packages (`pkgs/top-level/all-packages.nix`).
101−1. Add an alias for the package name in `pkgs/top-level/aliases.nix` (There is also `pkgs/applications/editors/vim/plugins/aliases.nix`. Package sets typically do not have aliases, so we can't add them there.)
101+1. Add an alias for the package name in `pkgs/top-level/aliases.nix` (There is also `pkgs/misc/vim-plugins/aliases.nix`. Package sets typically do not have aliases, so we can't add them there.)
102102
103103 For example in this case:
104104
@@ -227,7 +227,7 @@ digraph {
227227}
228228```
229229
230−[This GitHub Action](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/periodic-merge-6h.yml) brings changes from `master` to `staging-next` and from `staging-next` to `staging` every 6 hours.
230+[This GitHub Action](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/merge-staging.yml) brings changes from `master` to `staging-next` and from `staging-next` to `staging` every 6 hours.
231231
232232
233233### Master branch {#submitting-changes-master-branch}
@@ -246,21 +246,11 @@ If the branch is already in a broken state, please refrain from adding extra new
246246
247247### Stable release branches {#submitting-changes-stable-release-branches}
248248
249−The same staging workflow applies to stable release branches, but the main branch is called `release-*` instead of `master`.
249+For cherry-picking a commit to a stable release branch (“backporting”), use `git cherry-pick -x <original commit>` so that the original commit id is included in the commit.
250250
251−Example branch names: `release-21.11`, `staging-21.11`, `staging-next-21.11`.
251+Add a reason for the backport by using `git cherry-pick -xe <original commit>` instead when it is not obvious from the original commit message. It is not needed when it's a minor version update that includes security and bug fixes but don't add new features or when the commit fixes an otherwise broken package.
252252
253−Most changes added to the stable release branches are cherry-picked (“backported”) from the `master` and staging branches.
254−
255−#### Automatically backporting a Pull Request {#submitting-changes-stable-release-branches-automatic-backports}
256−
257−Assign label `backport <branch>` (e.g. `backport release-21.11`) to the PR and a backport PR is automatically created after the PR is merged.
258−
259−#### Manually backporting changes {#submitting-changes-stable-release-branches-manual-backports}
260−
261−Cherry-pick changes via `git cherry-pick -x <original commit>` so that the original commit id is included in the commit message.
262−
263−Add a reason for the backport when it is not obvious from the original commit message. You can do this by cherry picking with `git cherry-pick -xe <original commit>`, which allows editing the commit message. This is not needed for minor version updates that include security and bug fixes but don't add new features or when the commit fixes an otherwise broken package.
253+For backporting Pull Requests to stable branches, assign label `backport <branch>` to the original Pull Requests and automation should take care of the rest once the Pull Requests is merged.
264254
265255Here is an example of a cherry-picked commit message with good reason description:
266256
doc/functions/library/attrsets.xml+1−1
@@ -1474,7 +1474,7 @@ lib.attrsets.zipAttrsWith
14741474 <section xml:id="function-library-lib.attrsets.zipAttrs">
14751475 <title><function>lib.attrsets.zipAttrs</function></title>
14761476
1477− <subtitle><literal>zipAttrs :: [ AttrSet ] -> AttrSet</literal>
1477+ <subtitle><literal>zipAttrsWith :: [ AttrSet ] -> AttrSet</literal>
14781478 </subtitle>
14791479
14801480 <xi:include href="./locations.xml" xpointer="lib.attrsets.zipAttrs" />
doc/hooks/index.xmldeleted−10
@@ -1,10 +0,0 @@
1−<chapter xmlns="http://docbook.org/ns/docbook"
2− xmlns:xlink="http://www.w3.org/1999/xlink"
3− xmlns:xi="http://www.w3.org/2001/XInclude"
4− xml:id="chap-hooks">
5− <title>Hooks reference</title>
6− <para>
7− Nixpkgs has several hook packages that augment the stdenv phases.
8− </para>
9− <xi:include href="./postgresql-test-hook.section.xml" />
10−</chapter>
doc/hooks/postgresql-test-hook.section.mddeleted−59
@@ -1,59 +0,0 @@
1−
2−# `postgresqlTestHook` {#sec-postgresqlTestHook}
3−
4−This hook starts a PostgreSQL server during the `checkPhase`. Example:
5−
6−```nix
7−{ stdenv, postgresql, postgresqlTestHook }:
8−stdenv.mkDerivation {
9−
10− # ...
11−
12− checkInputs = [
13− postgresql
14− postgresqlTestHook
15− ];
16−}
17−```
18−
19−If you use a custom `checkPhase`, remember to add the `runHook` calls:
20−```nix
21− checkPhase ''
22− runHook preCheck
23−
24− # ... your tests
25−
26− runHook postCheck
27− ''
28−```
29−
30−## Variables {#sec-postgresqlTestHook-variables}
31−
32−The hook logic will read a number of variables and set them to a default value if unset or empty.
33−
34−Exported variables:
35−
36− - `PGDATA`: location of server files.
37− - `PGHOST`: location of UNIX domain socket directory; the default `host` in a connection string.
38− - `PGUSER`: user to create / log in with, default: `test_user`.
39− - `PGDATABASE`: database name, default: `test_db`.
40−
41−Bash-only variables:
42−
43− - `postgresqlTestUserOptions`: SQL options to use when creating the `$PGUSER` role, default: `LOGIN`.
44− - `postgresqlTestSetupSQL`: SQL commands to run as database administrator after startup, default: statements that create `$PGUSER` and `$PGDATABASE`.
45− - `postgresqlTestSetupCommands`: bash commands to run after database start, defaults to running `$postgresqlTestSetupSQL` as database administrator.
46− - `postgresqlEnableTCP`: set to `1` to enable TCP listening. Flaky; not recommended.
47− - `postgresqlStartCommands`: defaults to `pg_ctl start`.
48−
49−## TCP and the Nix sandbox {#sec-postgresqlTestHook-tcp}
50−
51−`postgresqlEnableTCP` relies on network sandboxing, which is not available on macOS and some custom Nix installations, resulting in flaky tests.
52−For this reason, it is disabled by default.
53−
54−The preferred solution is to make the test suite use a UNIX domain socket connection. This is the default behavior when no `host` connection parameter is provided.
55−Some test suites hardcode a value for `host` though, so a patch may be required. If you can upstream the patch, you can make `host` default to the `PGHOST` environment variable when set. Otherwise, you can patch it locally to omit the `host` connection string parameter altogether.
56−
57−::: {.note}
58−The error `libpq: failed (could not receive data from server: Connection refused` is generally an indication that the test suite is trying to connect through TCP.
59−:::
doc/languages-frameworks/beam.section.md+8−33
@@ -74,7 +74,7 @@ there are 3 steps, frontend dependencies (javascript), backend dependencies (eli
7474
7575##### mixRelease - Frontend dependencies (javascript) {#mix-release-javascript-deps}
7676
77−For phoenix projects, inside of nixpkgs you can either use yarn2nix (mkYarnModule) or node2nix. An example with yarn2nix can be found [here](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/web-apps/plausible/default.nix#L39). An example with node2nix will follow. To package something outside of nixpkgs, you have alternatives like [npmlock2nix](https://github.com/nix-community/npmlock2nix) or [nix-npm-buildpackage](https://github.com/serokell/nix-npm-buildpackage)
77+for phoenix projects, inside of nixpkgs you can either use yarn2nix (mkYarnModule) or node2nix. An example with yarn2nix can be found [here](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/web-apps/plausible/default.nix#L39). An example with node2nix will follow. To package something outside of nixpkgs, you have alternatives like [npmlock2nix](https://github.com/nix-community/npmlock2nix) or [nix-npm-buildpackage](https://github.com/serokell/nix-npm-buildpackage)
7878
7979##### mixRelease - backend dependencies (mix) {#mix-release-mix-deps}
8080
@@ -82,13 +82,13 @@ There are 2 ways to package backend dependencies. With mix2nix and with a fixed-
8282
8383###### mix2nix {#mix2nix}
8484
85−`mix2nix` is a cli tool available in nixpkgs. it will generate a nix expression from a mix.lock file. It is quite standard in the 2nix tool series.
85+mix2nix is a cli tool available in nixpkgs. it will generate a nix expression from a mix.lock file. It is quite standard in the 2nix tool series.
8686
8787Note that currently mix2nix can't handle git dependencies inside the mix.lock file. If you have git dependencies, you can either add them manually (see [example](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/pleroma/default.nix#L20)) or use the FOD method.
8888
8989The advantage of using mix2nix is that nix will know your whole dependency graph. On a dependency update, this won't trigger a full rebuild and download of all the dependencies, where FOD will do so.
9090
91−Practical steps:
91+practical steps:
9292
9393- run `mix2nix > mix_deps.nix` in the upstream repo.
9494- pass `mixNixDeps = with pkgs; import ./mix_deps.nix { inherit lib beamPackages; };` as an argument to mixRelease.
@@ -280,30 +280,6 @@ mkShell {
280280}
281281```
282282
283−### Using an overlay
284−
285−If you need to use an overlay to change some attributes of a derivation, e.g. if you need a bugfix from a version that is not yet available in nixpkgs, you can override attributes such as `version` (and the corresponding `sha256`) and then use this overlay in your development environment:
286−
287−#### `shell.nix`
288−
289−```nix
290−let
291− elixir_1_13_1_overlay = (self: super: {
292− elixir_1_13 = super.elixir_1_13.override {
293− version = "1.13.1";
294− sha256 = "0z0b1w2vvw4vsnb99779c2jgn9bgslg7b1pmd9vlbv02nza9qj5p";
295− };
296− });
297− pkgs = import <nixpkgs> { overlays = [ elixir_1_13_1_overlay ]; };
298−in
299−with pkgs;
300−mkShell {
301− buildInputs = [
302− elixir_1_13
303− ];
304−}
305−```
306−
307283#### Elixir - Phoenix project {#elixir---phoenix-project}
308284
309285Here is an example `shell.nix`.
@@ -315,10 +291,10 @@ let
315291 # define packages to install
316292 basePackages = [
317293 git
318− # replace with beam.packages.erlang.elixir_1_13 if you need
294+ # replace with beam.packages.erlang.elixir_1_11 if you need
319295 beam.packages.erlang.elixir
320296 nodejs
321− postgresql_14
297+ postgresql_13
322298 # only used for frontend dependencies
323299 # you are free to use yarn2nix as well
324300 nodePackages.node2nix
@@ -336,11 +312,10 @@ let
336312 mkdir -p .nix-mix .nix-hex
337313 export MIX_HOME=$PWD/.nix-mix
338314 export HEX_HOME=$PWD/.nix-mix
339− # make hex from Nixpkgs available
340− # `mix local.hex` will install hex into MIX_HOME and should take precedence
341− export MIX_PATH="${beam.packages.erlang.hex}/lib/erlang/lib/hex/ebin"
342315 export PATH=$MIX_HOME/bin:$HEX_HOME/bin:$PATH
343− export LANG=C.UTF-8
316+ # TODO: not sure how to make hex available without installing it afterwards.
317+ mix local.hex --if-missing
318+ export LANG=en_US.UTF-8
344319 # keep your shell history in iex
345320 export ERL_AFLAGS="-kernel shell_history enabled"
346321
doc/languages-frameworks/chicken.section.mddeleted−49
@@ -1,49 +0,0 @@
1−# CHICKEN {#sec-chicken}
2−
3−[CHICKEN](https://call-cc.org/) is a
4−[R⁵RS](https://schemers.org/Documents/Standards/R5RS/HTML/)-compliant Scheme
5−compiler. It includes an interactive mode and a custom package format, "eggs".
6−
7−## Using Eggs
8−
9−Eggs described in nixpkgs are available inside the
10−`chickenPackages.chickenEggs` attrset. Including an egg as a build input is
11−done in the typical Nix fashion. For example, to include support for [SRFI
12−189](https://srfi.schemers.org/srfi-189/srfi-189.html) in a derivation, one
13−might write:
14−
15−```nix
16− buildInputs = [
17− chicken
18− chickenPackages.chickenEggs.srfi-189
19− ];
20−```
21−
22−Both `chicken` and its eggs have a setup hook which configures the environment
23−variables `CHICKEN_INCLUDE_PATH` and `CHICKEN_REPOSITORY_PATH`.
24−
25−## Updating Eggs
26−
27−nixpkgs only knows about a subset of all published eggs. It uses
28−[egg2nix](https://github.com/the-kenny/egg2nix) to generate a
29−package set from a list of eggs to include.
30−
31−The package set is regenerated by running the following shell commands:
32−
33−```
34−$ nix-shell -p chickenPackages.egg2nix
35−$ cd pkgs/development/compilers/chicken/5/
36−$ egg2nix eggs.scm > eggs.nix
37−```
38−
39−## Adding Eggs
40−
41−When we run `egg2nix`, we obtain one collection of eggs with
42−mutually-compatible versions. This means that when we add new eggs, we may
43−need to update existing eggs. To keep those separate, follow the procedure for
44−updating eggs before including more eggs.
45−
46−To include more eggs, edit `pkgs/development/compilers/chicken/5/eggs.scm`.
47−The first section of this file lists eggs which are required by `egg2nix`
48−itself; all other eggs go into the second section. After editing, follow the
49−procedure for updating eggs.
doc/languages-frameworks/coq.section.md+1−2
@@ -29,8 +29,7 @@ The recommended way of defining a derivation for a Coq library, is to use the `c
2929* `releaseRev` (optional, defaults to `(v: v)`), provides a default mapping from release names to revision hashes/branch names/tags,
3030* `displayVersion` (optional), provides a way to alter the computation of `name` from `pname`, by explaining how to display version numbers,
3131* `namePrefix` (optional, defaults to `[ "coq" ]`), provides a way to alter the computation of `name` from `pname`, by explaining which dependencies must occur in `name`,
32−* `extraNativeBuildInputs` (optional), by default `nativeBuildInputs` just contains `coq`, this allows to add more native build inputs, `nativeBuildInputs` are executables and `buildInputs` are libraries and dependencies,
33−* `extraBuildInputs` (optional), this allows to add more build inputs,
32+* `extraBuildInputs` (optional), by default `buildInputs` just contains `coq`, this allows to add more build inputs,
3433* `mlPlugin` (optional, defaults to `false`). Some extensions (plugins) might require OCaml and sometimes other OCaml packages. Standard dependencies can be added by setting the current option to `true`. For a finer grain control, the `coq.ocamlPackages` attribute can be used in `extraBuildInputs` to depend on the same package set Coq was built against.
3534* `useDune2ifVersion` (optional, default to `(x: false)` uses Dune2 to build the package if the provided predicate evaluates to true on the version, e.g. `useDune2if = versions.isGe "1.1"` will use dune if the version of the package is greater or equal to `"1.1"`,
3635* `useDune2` (optional, defaults to `false`) uses Dune2 to build the package if set to true, the presence of this attribute overrides the behavior of the previous one.
doc/languages-frameworks/cuda.section.mddeleted−34
@@ -1,34 +0,0 @@
1−# CUDA {#cuda}
2−
3−CUDA-only packages are stored in the `cudaPackages` packages set. This set
4−includes the `cudatoolkit`, portions of the toolkit in separate derivations,
5−`cudnn`, `cutensor` and `nccl`.
6−
7−A package set is available for each CUDA version, so for example
8−`cudaPackages_11_6`. Within each set is a matching version of the above listed
9−packages. Additionally, other versions of the packages that are packaged and
10−compatible are available as well. For example, there can be a
11−`cudaPackages.cudnn_8_3_2` package.
12−
13−To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
14−```nix
15−cudaSupport ? false
16−cudaPackages ? {}
17−```
18−
19−When using `callPackage`, you can choose to pass in a different variant, e.g.
20−when a different version of the toolkit suffices
21−```nix
22−mypkg = callPackage { cudaPackages = cudaPackages_11_5; }
23−```
24−
25−If another version of say `cudnn` or `cutensor` is needed, you can override the
26−package set to make it the default. This guarantees you get a consistent package
27−set.
28−```nix
29−mypkg = let
30− cudaPackages = cudaPackages_11_5.overrideScope' (final: prev {
31− cudnn = prev.cudnn_8_3_2;
32− }});
33−in callPackage { inherit cudaPackages; };
34−```
doc/languages-frameworks/dotnet.section.md+7−27
@@ -71,52 +71,34 @@ The `dotnetCorePackages.sdk` contains both a runtime and the full sdk of a given
7171
7272To package Dotnet applications, you can use `buildDotnetModule`. This has similar arguments to `stdenv.mkDerivation`, with the following additions:
7373
74−* `projectFile` has to be used for specifying the dotnet project file relative to the source root. These usually have `.sln` or `.csproj` file extensions. This can be an array of multiple projects as well.
75−* `nugetDeps` has to be used to specify the NuGet dependency file. Unfortunately, these cannot be deterministically fetched without a lockfile. A script to fetch these is available as `passthru.fetch-deps`. This file can also be generated manually using `nuget-to-nix` tool, which is available in nixpkgs.
76−* `packNupkg` is used to pack project as a `nupkg`, and installs it to `$out/share`. If set to `true`, the derivation can be used as a dependency for another dotnet project by adding it to `projectReferences`.
77−* `projectReferences` can be used to resolve `ProjectReference` project items. Referenced projects can be packed with `buildDotnetModule` by setting the `packNupkg = true` attribute and passing a list of derivations to `projectReferences`. Since we are sharing referenced projects as NuGets they must be added to csproj/fsproj files as `PackageReference` as well.
78− For example, your project has a local dependency:
79− ```xml
80− <ProjectReference Include="../foo/bar.fsproj" />
81− ```
82− To enable discovery through `projectReferences` you would need to add:
83− ```xml
84− <ProjectReference Include="../foo/bar.fsproj" />
85− <PackageReference Include="bar" Version="*" Condition=" '$(ContinuousIntegrationBuild)'=='true' "/>
86− ```
87−* `executables` is used to specify which executables get wrapped to `$out/bin`, relative to `$out/lib/$pname`. If this is unset, all executables generated will get installed. If you do not want to install any, set this to `[]`. This gets done in the `preFixup` phase.
74+* `projectFile` has to be used for specifying the dotnet project file relative to the source root. These usually have `.sln` or `.csproj` file extensions.
75+* `nugetDeps` has to be used to specify the NuGet dependency file. Unfortunately, these cannot be deterministically fetched without a lockfile. This file should be generated using `nuget-to-nix` tool, which is available in nixpkgs.
76+* `executables` is used to specify which executables get wrapped to `$out/bin`, relative to `$out/lib/$pname`. If this is unset, all executables generated will get installed. If you do not want to install any, set this to `[]`.
8877* `runtimeDeps` is used to wrap libraries into `LD_LIBRARY_PATH`. This is how dotnet usually handles runtime dependencies.
8978* `buildType` is used to change the type of build. Possible values are `Release`, `Debug`, etc. By default, this is set to `Release`.
9079* `dotnet-sdk` is useful in cases where you need to change what dotnet SDK is being used.
9180* `dotnet-runtime` is useful in cases where you need to change what dotnet runtime is being used. This can be either a regular dotnet runtime, or an aspnetcore.
9281* `dotnet-test-sdk` is useful in cases where unit tests expect a different dotnet SDK. By default, this is set to the `dotnet-sdk` attribute.
93−* `testProjectFile` is useful in cases where the regular project file does not contain the unit tests. It gets restored and build, but not installed. You may need to regenerate your nuget lockfile after setting this.
82+* `testProjectFile` is useful in cases where the regular project file does not contain the unit tests. By default, this is set to the `projectFile` attribute.
9483* `disabledTests` is used to disable running specific unit tests. This gets passed as: `dotnet test --filter "FullyQualifiedName!={}"`, to ensure compatibility with all unit test frameworks.
9584* `dotnetRestoreFlags` can be used to pass flags to `dotnet restore`.
9685* `dotnetBuildFlags` can be used to pass flags to `dotnet build`.
97−* `dotnetTestFlags` can be used to pass flags to `dotnet test`. Used only if `doCheck` is set to `true`.
86+* `dotnetTestFlags` can be used to pass flags to `dotnet test`.
9887* `dotnetInstallFlags` can be used to pass flags to `dotnet install`.
99−* `dotnetPackFlags` can be used to pass flags to `dotnet pack`. Used only if `packNupkg` is set to `true`.
10088* `dotnetFlags` can be used to pass flags to all of the above phases.
10189
102−When packaging a new application, you need to fetch it's dependencies. You can set `nugetDeps` to an empty string to make the derivation temporarily evaluate, and then run `nix-build -A package.passthru.fetch-deps` to generate it's dependency fetching script. After running the script, you should have the location of the generated lockfile printed to the console. This can be copied to a stable directory. Note that if either `projectFile` or `nugetDeps` are unset, this script cannot be generated!
103−
10490Here is an example `default.nix`, using some of the previously discussed arguments:
10591```nix
10692{ lib, buildDotnetModule, dotnetCorePackages, ffmpeg }:
10793
108−let
109− referencedProject = import ../../bar { ... };
110−in buildDotnetModule rec {
94+buildDotnetModule rec {
11195 pname = "someDotnetApplication";
11296 version = "0.1";
11397
11498 src = ./.;
11599
116100 projectFile = "src/project.sln";
117− nugetDeps = ./deps.nix; # File generated with `nix-build -A package.passthru.fetch-deps`.
118−
119− projectReferences = [ referencedProject ]; # `referencedProject` must contain `nupkg` in the folder structure.
101+ nugetDeps = ./deps.nix; # File generated with `nuget-to-nix path/to/src > deps.nix`.
120102
121103 dotnet-sdk = dotnetCorePackages.sdk_3_1;
122104 dotnet-runtime = dotnetCorePackages.net_5_0;
@@ -125,8 +107,6 @@ in buildDotnetModule rec {
125107 executables = [ "foo" ]; # This wraps "$out/lib/$pname/foo" to `$out/bin/foo`.
126108 executables = []; # Don't install any executables.
127109
128− packNupkg = true; # This packs the project as "foo-0.1.nupkg" at `$out/share`.
129−
130110 runtimeDeps = [ ffmpeg ]; # This will wrap ffmpeg's library path into `LD_LIBRARY_PATH`.
131111}
132112```
doc/languages-frameworks/emscripten.section.md+2−2
@@ -15,12 +15,12 @@ Modes of use of `emscripten`:
1515
1616 If you want to work with `emcc`, `emconfigure` and `emmake` as you are used to from Ubuntu and similar distributions you can use these commands:
1717
18− * `nix-env -f "<nixpkgs>" -iA emscripten`
18+ * `nix-env -i emscripten`
1919 * `nix-shell -p emscripten`
2020
2121* **Declarative usage**:
2222
23− This mode is far more power full since this makes use of `nix` for dependency management of emscripten libraries and targets by using the `mkDerivation` which is implemented by `pkgs.emscriptenStdenv` and `pkgs.buildEmscriptenPackage`. The source for the packages is in `pkgs/top-level/emscripten-packages.nix` and the abstraction behind it in `pkgs/development/em-modules/generic/default.nix`. From the root of the nixpkgs repository:
23+ This mode is far more power full since this makes use of `nix` for dependency management of emscripten libraries and targets by using the `mkDerivation` which is implemented by `pkgs.emscriptenStdenv` and `pkgs.buildEmscriptenPackage`. The source for the packages is in `pkgs/top-level/emscripten-packages.nix` and the abstraction behind it in `pkgs/development/em-modules/generic/default.nix`.
2424 * build and install all packages:
2525 * `nix-env -iA emscriptenPackages`
2626
doc/languages-frameworks/gnome.section.md+3−17
@@ -42,21 +42,7 @@ Unlike other libraries mentioned in this section, GdkPixbuf only supports a sing
4242
4343### Icons {#ssec-gnome-icons}
4444
45−When an application uses icons, an icon theme should be available in `XDG_DATA_DIRS` during runtime. The package for the default, icon-less [hicolor-icon-theme](https://www.freedesktop.org/wiki/Software/icon-theme/) (should be propagated by every icon theme) contains [a setup hook](#ssec-gnome-hooks-hicolor-icon-theme) that will pick up icon themes from `buildInputs` and add their datadirs to `XDG_ICON_DIRS` environment variable (this is Nixpkgs specific, not actually a XDG standard variable). Unfortunately, relying on that would mean every user has to download the theme included in the package expression no matter their preference. For that reason, we leave the installation of icon theme on the user. If you use one of the desktop environments, you probably already have an icon theme installed.
46−
47−In the rare case you need to use icons from dependencies (e.g. when an app forces an icon theme), you can use the following to pick them up:
48−
49−```nix
50− buildInputs = [
51− pantheon.elementary-icon-theme
52− ];
53− preFixup = ''
54− gappsWrapperArgs+=(
55− # The icon theme is hardcoded.
56− --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
57− )
58− '';
59−```
45+When an application uses icons, an icon theme should be available in `XDG_DATA_DIRS` during runtime. The package for the default, icon-less [hicolor-icon-theme](https://www.freedesktop.org/wiki/Software/icon-theme/) (should be propagated by every icon theme) contains [a setup hook](#ssec-gnome-hooks-hicolor-icon-theme) that will pick up icon themes from `buildInputs` and pass it to our wrapper. Unfortunately, relying on that would mean every user has to download the theme included in the package expression no matter their preference. For that reason, we leave the installation of icon theme on the user. If you use one of the desktop environments, you probably already have an icon theme installed.
6046
6147To avoid costly file system access when locating icons, GTK, [as well as Qt](https://woboq.com/blog/qicon-reads-gtk-icon-cache-in-qt57.html), can rely on `icon-theme.cache` files from the themes' top-level directories. These files are generated using `gtk-update-icon-cache`, which is expected to be run whenever an icon is added or removed to an icon theme (typically an application icon into `hicolor` theme) and some programs do indeed run this after icon installation. However, since packages are installed into their own prefix by Nix, this would lead to conflicts. For that reason, `gtk3` provides a [setup hook](#ssec-gnome-hooks-gtk-drop-icon-theme-cache) that will clean the file from installation. Since most applications only ship their own icon that will be loaded on start-up, it should not affect them too much. On the other hand, icon themes are much larger and more widely used so we need to cache them. Because we recommend installing icon themes globally, we will generate the cache files from all packages in a profile using a NixOS module. You can enable the cache generation using `gtk.iconCache.enable` option if your desktop environment does not already do that.
6248
@@ -106,13 +92,13 @@ For convenience, it also adds `dconf.lib` for a GIO module implementing a GSetti
10692
10793- []{#ssec-gnome-hooks-glib} `glib` setup hook will populate `GSETTINGS_SCHEMAS_PATH` and then `wrapGAppsHook` will prepend it to `XDG_DATA_DIRS`.
10894
109−- []{#ssec-gnome-hooks-gdk-pixbuf} `gdk-pixbuf` setup hook will populate `GDK_PIXBUF_MODULE_FILE` with the path to biggest `loaders.cache` file from the dependencies containing [GdkPixbuf loaders](#ssec-gnome-gdk-pixbuf-loaders). This works fine when there are only two packages containing loaders (`gdk-pixbuf` and e.g. `librsvg`) – it will choose the second one, reasonably expecting that it will be bigger since it describes extra loader in addition to the default ones. But when there are more than two loader packages, this logic will break. One possible solution would be constructing a custom cache file for each package containing a program like `services/x11/gdk-pixbuf.nix` NixOS module does. `wrapGAppsHook` copies the `GDK_PIXBUF_MODULE_FILE` environment variable into the produced wrapper.
95+- []{#ssec-gnome-hooks-gdk-pixbuf} `gdk-pixbuf` setup hook will populate `GDK_PIXBUF_MODULE_FILE` with the path to biggest `loaders.cache` file from the dependencies containing [GdkPixbuf loaders](ssec-gnome-gdk-pixbuf-loaders). This works fine when there are only two packages containing loaders (`gdk-pixbuf` and e.g. `librsvg`) – it will choose the second one, reasonably expecting that it will be bigger since it describes extra loader in addition to the default ones. But when there are more than two loader packages, this logic will break. One possible solution would be constructing a custom cache file for each package containing a program like `services/x11/gdk-pixbuf.nix` NixOS module does. `wrapGAppsHook` copies the `GDK_PIXBUF_MODULE_FILE` environment variable into the produced wrapper.
11096
11197- []{#ssec-gnome-hooks-gtk-drop-icon-theme-cache} One of `gtk3`’s setup hooks will remove `icon-theme.cache` files from package’s icon theme directories to avoid conflicts. Icon theme packages should prevent this with `dontDropIconThemeCache = true;`.
11298
11399- []{#ssec-gnome-hooks-dconf} `dconf.lib` is a dependency of `wrapGAppsHook`, which then also adds it to the `GIO_EXTRA_MODULES` variable.
114100
115−- []{#ssec-gnome-hooks-hicolor-icon-theme} `hicolor-icon-theme`’s setup hook will add icon themes to `XDG_ICON_DIRS`.
101+- []{#ssec-gnome-hooks-hicolor-icon-theme} `hicolor-icon-theme`’s setup hook will add icon themes to `XDG_ICON_DIRS` which is prepended to `XDG_DATA_DIRS` by `wrapGAppsHook`.
116102
117103- []{#ssec-gnome-hooks-gobject-introspection} `gobject-introspection` setup hook populates `GI_TYPELIB_PATH` variable with `lib/girepository-1.0` directories of dependencies, which is then added to wrapper by `wrapGAppsHook`. It also adds `share` directories of dependencies to `XDG_DATA_DIRS`, which is intended to promote GIR files but it also [pollutes the closures](https://github.com/NixOS/nixpkgs/issues/32790) of packages using `wrapGAppsHook`.
118104
doc/languages-frameworks/go.section.md+6−6
@@ -12,7 +12,8 @@ The function `buildGoModule` builds Go programs managed with Go modules. It buil
1212In the following is an example expression using `buildGoModule`, the following arguments are of special significance to the function:
1313
1414- `vendorSha256`: is the hash of the output of the intermediate fetcher derivation. `vendorSha256` can also take `null` as an input. When `null` is used as a value, rather than fetching the dependencies and vendoring them, we use the vendoring included within the source repo. If you'd like to not have to update this field on dependency changes, run `go mod vendor` in your source repo and set `vendorSha256 = null;`
15−- `proxyVendor`: Fetches (go mod download) and proxies the vendor directory. This is useful if your code depends on c code and go mod tidy does not include the needed sources to build or if any dependency has case-insensitive conflicts which will produce platform dependant `vendorSha256` checksums.
15+- `runVend`: runs the vend command to generate the vendor directory. This is useful if your code depends on c code and go mod tidy does not include the needed sources to build.
16+- `proxyVendor`: Fetches (go mod download) and proxies the vendor directory. This is useful if any dependency has case-insensitive conflicts which will produce platform dependant `vendorSha256` checksums.
1617
1718```nix
1819pet = buildGoModule rec {
@@ -28,11 +29,14 @@ pet = buildGoModule rec {
2829
2930 vendorSha256 = "1879j77k96684wi554rkjxydrj8g3hpp0kvxz03sd8dmwr3lh83j";
3031
32+ runVend = true;
33+
3134 meta = with lib; {
3235 description = "Simple command-line snippet manager, written in Go";
3336 homepage = "https://github.com/knqyf263/pet";
3437 license = licenses.mit;
3538 maintainers = with maintainers; [ kalbasit ];
39+ platforms = platforms.linux ++ platforms.darwin;
3640 };
3741}
3842```
@@ -142,8 +146,4 @@ Removes the pre-existing vendor directory. This should only be used if the depen
142146
143147### `subPackages` {#var-go-subPackages}
144148
145−Specified as a string or list of strings. Limits the builder from building child packages that have not been listed. If `subPackages` is not specified, all child packages will be built.
146−
147−### `excludedPackages` {#var-go-excludedPackages}
148−
149−Specified as a string or list of strings. Causes the builder to skip building child packages that match any of the provided values. If `excludedPackages` is not specified, all child packages will be built.
149+Limits the builder from building child packages that have not been listed. If `subPackages` is not specified, all child packages will be built.
doc/languages-frameworks/idris.section.md+4−1
@@ -5,7 +5,10 @@
55The easiest way to get a working idris version is to install the `idris` attribute:
66
77```ShellSession
8−$ nix-env -f "<nixpkgs>" -iA idris
8+$ # On NixOS
9+$ nix-env -i nixos.idris
10+$ # On non-NixOS
11+$ nix-env -i nixpkgs.idris
912```
1013
1114This however only provides the `prelude` and `base` libraries. To install idris with additional libraries, you can use the `idrisPackages.with-packages` function, e.g. in an overlay in `~/.config/nixpkgs/overlays/my-idris.nix`:
doc/languages-frameworks/index.xml−2
@@ -9,10 +9,8 @@
99 <xi:include href="android.section.xml" />
1010 <xi:include href="beam.section.xml" />
1111 <xi:include href="bower.section.xml" />
12− <xi:include href="chicken.section.xml" />
1312 <xi:include href="coq.section.xml" />
1413 <xi:include href="crystal.section.xml" />
15− <xi:include href="cuda.section.xml" />
1614 <xi:include href="dhall.section.xml" />
1715 <xi:include href="dotnet.section.xml" />
1816 <xi:include href="emscripten.section.xml" />
doc/languages-frameworks/javascript.section.md+2−24
@@ -85,7 +85,7 @@ you will still need to commit the modified version of the lock files, but at lea
8585
8686each tool has an abstraction to just build the node_modules (dependencies) directory. you can always use the stdenv.mkDerivation with the node_modules to build the package (symlink the node_modules directory and then use the package build command). the node_modules abstraction can be also used to build some web framework frontends. For an example of this see how [plausible](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/web-apps/plausible/default.nix) is built. mkYarnModules to make the derivation containing node_modules. Then when building the frontend you can just symlink the node_modules directory
8787
88−## Javascript packages inside nixpkgs {#javascript-packages-nixpkgs}
88+## javascript packages inside nixpkgs {#javascript-packages-nixpkgs}
8989
9090The `pkgs/development/node-packages` folder contains a generated collection of
9191[NPM packages](https://npmjs.com/) that can be installed with the Nix package
@@ -121,14 +121,12 @@ requires `node-gyp-build`, so [we override](https://github.com/NixOS/nixpkgs/blo
121121 };
122122```
123123
124−### Adding and Updating Javascript packages in nixpkgs
125−
126124To add a package from NPM to nixpkgs:
127125
1281261. Modify `pkgs/development/node-packages/node-packages.json` to add, update
129127 or remove package entries to have it included in `nodePackages` and
130128 `nodePackages_latest`.
131−2. Run the script: `./pkgs/development/node-packages/generate.sh`.
129+2. Run the script: `cd pkgs/development/node-packages && ./generate.sh`.
1321303. Build your new package to test your changes:
133131 `cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.
134132 To build against the latest stable Current Node.js version (e.g. 14.x):
@@ -139,26 +137,6 @@ For more information about the generation process, consult the
139137[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix`
140138tool.
141139
142−To update NPM packages in nixpkgs, run the same `generate.sh` script:
143−
144−```sh
145−./pkgs/development/node-packages/generate.sh
146−```
147−
148−#### Git protocol error
149−
150−Some packages may have Git dependencies from GitHub specified with `git://`.
151−GitHub has
152−[disabled unecrypted Git connections](https://github.blog/2021-09-01-improving-git-protocol-security-github/#no-more-unauthenticated-git),
153−so you may see the following error when running the generate script:
154−`The unauthenticated git protocol on port 9418 is no longer supported`.
155−
156−Use the following Git configuration to resolve the issue:
157−
158−```sh
159−git config --global url."https://github.com/".insteadOf git://github.com/
160−```
161−
162140## Tool specific instructions {#javascript-tool-specific}
163141
164142### node2nix {#javascript-node2nix}
doc/languages-frameworks/lua.section.md+1−1
@@ -128,7 +128,7 @@ Let's present the luarocks way first and the manual one in a second time.
128128
129129### Packaging a library on luarocks {#packaging-a-library-on-luarocks}
130130
131−[Luarocks.org](https://luarocks.org/) is the main repository of lua packages.
131+[Luarocks.org](www.luarocks.org) is the main repository of lua packages.
132132The site proposes two types of packages, the rockspec and the src.rock
133133(equivalent of a [rockspec](https://github.com/luarocks/luarocks/wiki/Rockspec-format) but with the source).
134134These packages can have different build types such as `cmake`, `builtin` etc .
doc/languages-frameworks/ocaml.section.md+6−44
@@ -1,49 +1,19 @@
11# OCaml {#sec-language-ocaml}
22
3−## User guide {#sec-language-ocaml-user-guide}
4−
5−OCaml libraries are available in attribute sets of the form `ocaml-ng.ocamlPackages_X_XX` where X is to be replaced with the desired compiler version. For example, ocamlgraph compiled with OCaml 4.12 can be found in `ocaml-ng.ocamlPackages_4_12.ocamlgraph`. The compiler itself is also located in this set, under the name `ocaml`.
6−
7−If you don't care about the exact compiler version, `ocamlPackages` is a top-level alias pointing to a recent version of OCaml.
8−
9−OCaml applications are usually available top-level, and not inside `ocamlPackages`. Notable exceptions are build tools that must be built with the same compiler version as the compiler you intend to use like `dune` or `ocaml-lsp`.
10−
11−To open a shell able to build a typical OCaml project, put the dependencies in `buildInputs` and add `ocamlPackages.ocaml` and `ocamlPackages.findlib` to `nativeBuildInputs` at least.
12−For example:
13−```nix
14−let
15− pkgs = import <nixpkgs> {};
16− # choose the ocaml version you want to use
17− ocamlPackages = pkgs.ocaml-ng.ocamlPackages_4_12;
18−in
19−pkgs.mkShell {
20− # build tools
21− nativeBuildInputs = with ocamlPackages; [ ocaml findlib dune_2 ocaml-lsp ];
22− # dependencies
23− buildInputs = with ocamlPackages; [ ocamlgraph ];
24−}
25−```
26−
27−## Packaging guide {#sec-language-ocaml-packaging}
28−
293OCaml libraries should be installed in `$(out)/lib/ocaml/${ocaml.version}/site-lib/`. Such directories are automatically added to the `$OCAMLPATH` environment variable when building another package that depends on them or when opening a `nix-shell`.
304
315Given that most of the OCaml ecosystem is now built with dune, nixpkgs includes a convenience build support function called `buildDunePackage` that will build an OCaml package using dune, OCaml and findlib and any additional dependencies provided as `buildInputs` or `propagatedBuildInputs`.
326
337Here is a simple package example.
348
35−- It defines an (optional) attribute `minimalOCamlVersion` (see note below)
36− that will be used to throw a descriptive evaluation error if building with
37− an older OCaml is attempted.
9+- It defines an (optional) attribute `minimalOCamlVersion` that will be used to
10+ throw a descriptive evaluation error if building with an older OCaml is
11+ attempted.
3812
3913- It uses the `fetchFromGitHub` fetcher to get its source.
4014
41−- `duneVersion = "2"` ensures that Dune version 2 is used for the
42− build (this is the default; valid values are `"1"`, `"2"`, and `"3"`);
43− note that there is also a legacy `useDune2` boolean attribute:
44− set to `false` it corresponds to `duneVersion = "1"`; set to `true` it
45− corresponds to `duneVersion = "2"`. If both arguments (`duneVersion` and
46− `useDune2`) are given, the second one (`useDune2`) is silently ignored.
15+- `useDune2 = true` ensures that the latest version of Dune is used for the
16+ build (this may become the default value in a future release).
4717
4818- It sets the optional `doCheck` attribute such that tests will be run with
4919 `dune runtest -p angstrom` after the build (`dune build -p angstrom`) is
@@ -71,7 +41,7 @@ Here is a simple package example.
7141buildDunePackage rec {
7242 pname = "angstrom";
7343 version = "0.15.0";
74− duneVersion = "2";
44+ useDune2 = true;
7545
7646 minimalOCamlVersion = "4.04";
7747
@@ -121,11 +91,3 @@ buildDunePackage rec {
12191 };
12292}
12393```
124−
125−Note about `minimalOCamlVersion`. A deprecated version of this argument was
126−spelled `minimumOCamlVersion`; setting the old attribute wrongly modifies the
127−derivation hash and is therefore inappropriate. As a technical dept, currently
128−packaged libraries may still use the old spelling: maintainers are invited to
129−fix this when updating packages. Massive renaming is strongly discouraged as it
130−would be challenging to review, difficult to test, and will cause unnecessary
131−rebuild.
doc/languages-frameworks/octave.section.md+10−2
@@ -24,10 +24,18 @@ You can test building an Octave package as follows:
2424$ nix-build -A octavePackages.symbolic
2525```
2626
27−To install it into your user profile, run this command from the root of the repository:
27+When building Octave packages with `nix-build`, the `buildOctavePackage` function adds `octave-octaveVersion` to; the start of the package's name attribute.
28+
29+This can be required when installing the package using `nix-env`:
30+
31+```ShellSession
32+$ nix-env -i octave-6.2.0-symbolic
33+```
34+
35+Although, you can also install it using the attribute name:
2836
2937```ShellSession
30−$ nix-env -f. -iA octavePackages.symbolic
38+$ nix-env -i -A octavePackages.symbolic
3139```
3240
3341You can build Octave with packages by using the `withPackages` passed-through function.
doc/languages-frameworks/perl.section.md+8−4
@@ -58,7 +58,13 @@ in `all-packages.nix`. You can test building a Perl package as follows:
5858$ nix-build -A perlPackages.ClassC3
5959```
6060
61−To install it with `nix-env` instead: `nix-env -f. -iA perlPackages.ClassC3`.
61+`buildPerlPackage` adds `perl-` to the start of the name attribute, so the package above is actually called `perl-Class-C3-0.21`. So to install it, you can say:
62+
63+```ShellSession
64+$ nix-env -i perl-Class-C3
65+```
66+
67+(Of course you can also install using the attribute name: `nix-env -i -A perlPackages.ClassC3`.)
6268
6369So what does `buildPerlPackage` do? It does the following:
6470
@@ -129,11 +135,9 @@ This will remove the `-I` flags from the shebang line, rewrite them in the `use
129135Nix expressions for Perl packages can be generated (almost) automatically from CPAN. This is done by the program `nix-generate-from-cpan`, which can be installed as follows:
130136
131137```ShellSession
132−$ nix-env -f "<nixpkgs>" -iA nix-generate-from-cpan
138+$ nix-env -i nix-generate-from-cpan
133139```
134140
135−Substitute `<nixpkgs>` by the path of a nixpkgs clone to use the latest version.
136−
137141This program takes a Perl module name, looks it up on CPAN, fetches and unpacks the corresponding package, and prints a Nix expression on standard output. For example:
138142
139143```ShellSession
doc/languages-frameworks/python.section.md+5−53
@@ -764,7 +764,7 @@ and in this case the `python38` interpreter is automatically used.
764764
765765### Interpreters {#interpreters}
766766
767−Versions 2.7, 3.7, 3.8 and 3.9 of the CPython interpreter are available as
767+Versions 2.7, 3.6, 3.7, 3.8 and 3.9 of the CPython interpreter are available as
768768respectively `python27`, `python37`, `python38` and `python39`. The
769769aliases `python2` and `python3` correspond to respectively `python27` and
770770`python39`. The attribute `python` maps to `python2`. The PyPy interpreters
@@ -834,7 +834,6 @@ sets are
834834* `pkgs.python38Packages`
835835* `pkgs.python39Packages`
836836* `pkgs.python310Packages`
837−* `pkgs.python311Packages`
838837* `pkgs.pypyPackages`
839838
840839and the aliases
@@ -979,31 +978,6 @@ with import <nixpkgs> {};
979978in python.withPackages(ps: [ps.blaze])).env
980979```
981980
982−#### Optional extra dependencies
983−
984−Some packages define optional dependencies for additional features. With
985−`setuptools` this is called `extras_require` and `flit` calls it `extras-require`. A
986−method for supporting this is by declaring the extras of a package in its
987−`passthru`, e.g. in case of the package `dask`
988−
989−```nix
990−passthru.extras-require = {
991− complete = [ distributed ];
992−};
993−```
994−
995−and letting the package requiring the extra add the list to its dependencies
996−
997−```nix
998−propagatedBuildInputs = [
999− ...
1000−] ++ dask.extras-require.complete;
1001−```
1002−
1003−Note this method is preferred over adding parameters to builders, as that can
1004−result in packages depending on different variants and thereby causing
1005−collisions.
1006−
1007981#### `buildPythonApplication` function {#buildpythonapplication-function}
1008982
1009983The `buildPythonApplication` function is practically the same as
@@ -1021,18 +995,18 @@ called with `callPackage` and passed `python` or `pythonPackages` (possibly
1021995specifying an interpreter version), like this:
1022996
1023997```nix
1024−{ lib, python3 }:
998+{ lib, python3Packages }:
1025999
1026−python3.pkgs.buildPythonApplication rec {
1000+python3Packages.buildPythonApplication rec {
10271001 pname = "luigi";
10281002 version = "2.7.9";
10291003
1030− src = python3.pkgs.fetchPypi {
1004+ src = python3Packages.fetchPypi {
10311005 inherit pname version;
10321006 sha256 = "035w8gqql36zlan0xjrzz9j4lh9hs0qrsgnbyw07qs7lnkvbdv9x";
10331007 };
10341008
1035− propagatedBuildInputs = with python3.pkgs; [ tornado python-daemon ];
1009+ propagatedBuildInputs = with python3Packages; [ tornado_4 python-daemon ];
10361010
10371011 meta = with lib; {
10381012 ...
@@ -1658,25 +1632,3 @@ would be:
16581632```ShellSession
16591633$ maintainers/scripts/update-python-libraries --target minor --commit --use-pkgs-prefix pkgs/development/python-modules/**/default.nix
16601634```
1661−
1662−## CPython Update Schedule
1663−
1664−With [PEP 602](https://www.python.org/dev/peps/pep-0602/), CPython now
1665−follows a yearly release cadence. In nixpkgs, all supported interpreters
1666−are made available, but only the most recent two
1667−interpreters package sets are built; this is a compromise between being
1668−the latest interpreter, and what the majority of the Python packages support.
1669−
1670−New CPython interpreters are released in October. Generally, it takes some
1671−time for the majority of active Python projects to support the latest stable
1672−interpreter. To help ease the migration for Nixpkgs users
1673−between Python interpreters the schedule below will be used:
1674−
1675−| When | Event |
1676−| --- | --- |
1677−| After YY.11 Release | Bump CPython package set window. The latest and previous latest stable should now be built. |
1678−| After YY.05 Release | Bump default CPython interpreter to latest stable. |
1679−
1680−In practice, this means that the Python community will have had a stable interpreter
1681−for ~2 months before attempting to update the package set. And this will
1682−allow for ~7 months for Python applications to support the latest interpreter.
doc/languages-frameworks/ruby.section.md−13
@@ -201,19 +201,6 @@ $ nix-shell --run 'ruby -rpg -e "puts PG.library_version"'
201201
202202Of course for this use-case one could also use overlays since the configuration for `pg` depends on the `postgresql` alias, but for demonstration purposes this has to suffice.
203203
204−### Platform-specific gems
205−
206−Right now, bundix has some issues with pre-built, platform-specific gems: [bundix PR #68](https://github.com/nix-community/bundix/pull/68).
207−Until this is solved, you can tell bundler to not use platform-specific gems and instead build them from source each time:
208−- globally (will be set in `~/.config/.bundle/config`):
209−```shell
210−$ bundle config set force_ruby_platform true
211−```
212−- locally (will be set in `<project-root>/.bundle/config`):
213−```shell
214−$ bundle config set --local force_ruby_platform true
215−```
216−
217204### Adding a gem to the default gemset {#adding-a-gem-to-the-default-gemset}
218205
219206Now that you know how to get a working Ruby environment with Nix, it's time to go forward and start actually developing with Ruby. We will first have a look at how Ruby gems are packaged on Nix. Then, we will look at how you can use development mode with your code.
doc/languages-frameworks/rust.section.md+1−3
@@ -293,7 +293,7 @@ Test flags, e.g., `--package foo`, can be passed to `cargo test` via the
293293
294294Another attribute, called `checkFlags`, is used to pass arguments to the test
295295binary itself, as stated
296−[here](https://doc.rust-lang.org/cargo/commands/cargo-test.html).
296+(here)[https://doc.rust-lang.org/cargo/commands/cargo-test.html].
297297
298298#### Tests relying on the structure of the `target/` directory {#tests-relying-on-the-structure-of-the-target-directory}
299299
@@ -464,8 +464,6 @@ you of the correct hash.
464464 be disabled by setting `dontUseCargoParallelTests`.
465465* `cargoInstallHook`: install binaries and static/shared libraries
466466 that were built using `cargoBuildHook`.
467−* `bindgenHook`: for crates which use `bindgen` as a build dependency, lets
468− `bindgen` find `libclang` and `libclang` find the libraries in `buildInputs`.
469467
470468### Examples {#examples}
471469
doc/languages-frameworks/texlive.section.md+1−1
@@ -6,7 +6,7 @@ Since release 15.09 there is a new TeX Live packaging that lives entirely under
66
77- For basic usage just pull `texlive.combined.scheme-basic` for an environment with basic LaTeX support.
88
9−- It typically won't work to use separately installed packages together. Instead, you can build a custom set of packages like this. Most CTAN packages should be available:
9+- It typically won't work to use separately installed packages together. Instead, you can build a custom set of packages like this:
1010
1111 ```nix
1212 texlive.combine {
doc/languages-frameworks/vim.section.md+6−9
@@ -18,7 +18,7 @@ Adding custom .vimrc lines can be done using the following code:
1818
1919```nix
2020vim_configurable.customize {
21− # `name` optionally specifies the name of the executable and package
21+ # `name` specifies the name of the executable and package
2222 name = "vim-with-plugins";
2323
2424 vimrcConfig.customRC = ''
@@ -28,9 +28,6 @@ vim_configurable.customize {
2828```
2929
3030This configuration is used when Vim is invoked with the command specified as name, in this case `vim-with-plugins`.
31−You can also omit `name` to customize Vim itself. See the
32−[definition of `vimUtils.makeCustomizable`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/vim-utils.nix#L408)
33−for all supported options.
3431
3532For Neovim the `configure` argument can be overridden to achieve the same:
3633
@@ -289,7 +286,7 @@ Sample output1:
289286"reload" = buildVimPluginFrom2Nix { # created by nix#NixDerivation
290287 name = "reload";
291288 src = fetchgit {
292− url = "https://github.com/xolox/vim-reload";
289+ url = "git://github.com/xolox/vim-reload";
293290 rev = "0a601a668727f5b675cb1ddc19f6861f3f7ab9e1";
294291 sha256 = "0vb832l9yxj919f5hfg6qj6bn9ni57gnjd3bj7zpq7d4iv2s4wdh";
295292 };
@@ -312,9 +309,9 @@ Sample output2:
312309
313310## Adding new plugins to nixpkgs {#adding-new-plugins-to-nixpkgs}
314311
315−Nix expressions for Vim plugins are stored in [pkgs/applications/editors/vim/plugins](https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/editors/vim/plugins). For the vast majority of plugins, Nix expressions are automatically generated by running [`./update.py`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/update.py). This creates a [generated.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/generated.nix) file based on the plugins listed in [vim-plugin-names](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/vim-plugin-names). Plugins are listed in alphabetical order in `vim-plugin-names` using the format `[github username]/[repository]@[gitref]`. For example https://github.com/scrooloose/nerdtree becomes `scrooloose/nerdtree`.
312+Nix expressions for Vim plugins are stored in [pkgs/misc/vim-plugins](/pkgs/misc/vim-plugins). For the vast majority of plugins, Nix expressions are automatically generated by running [`./update.py`](/pkgs/misc/vim-plugins/update.py). This creates a [generated.nix](/pkgs/misc/vim-plugins/generated.nix) file based on the plugins listed in [vim-plugin-names](/pkgs/misc/vim-plugins/vim-plugin-names). Plugins are listed in alphabetical order in `vim-plugin-names` using the format `[github username]/[repository]@[gitref]`. For example https://github.com/scrooloose/nerdtree becomes `scrooloose/nerdtree`.
316313
317−Some plugins require overrides in order to function properly. Overrides are placed in [overrides.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/overrides.nix). Overrides are most often required when a plugin requires some dependencies, or extra steps are required during the build process. For example `deoplete-fish` requires both `deoplete-nvim` and `vim-fish`, and so the following override was added:
314+Some plugins require overrides in order to function properly. Overrides are placed in [overrides.nix](/pkgs/misc/vim-plugins/overrides.nix). Overrides are most often required when a plugin requires some dependencies, or extra steps are required during the build process. For example `deoplete-fish` requires both `deoplete-nvim` and `vim-fish`, and so the following override was added:
318315
319316```nix
320317deoplete-fish = super.deoplete-fish.overrideAttrs(old: {
@@ -333,13 +330,13 @@ Finally, there are some plugins that are also packaged in nodePackages because t
333330Run the update script with a GitHub API token that has at least `public_repo` access. Running the script without the token is likely to result in rate-limiting (429 errors). For steps on creating an API token, please refer to [GitHub's token documentation](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token).
334331
335332```sh
336−GITHUB_API_TOKEN=my_token ./pkgs/applications/editors/vim/plugins/update.py
333+GITHUB_API_TOKEN=my_token ./pkgs/misc/vim-plugins/update.py
337334```
338335
339336Alternatively, set the number of processes to a lower count to avoid rate-limiting.
340337
341338```sh
342−./pkgs/applications/editors/vim/plugins/update.py --proc 1
339+./pkgs/misc/vim-plugins/update.py --proc 1
343340```
344341
345342## Important repositories {#important-repositories}
doc/manual.xml−2
@@ -25,10 +25,8 @@
2525 <title>Builders</title>
2626 <xi:include href="builders/fetchers.chapter.xml" />
2727 <xi:include href="builders/trivial-builders.chapter.xml" />
28− <xi:include href="builders/testers.chapter.xml" />
2928 <xi:include href="builders/special.xml" />
3029 <xi:include href="builders/images.xml" />
31− <xi:include href="hooks/index.xml" />
3230 <xi:include href="languages-frameworks/index.xml" />
3331 <xi:include href="builders/packages/index.xml" />
3432 </part>
doc/stdenv/cross-compilation.chapter.md+10−35
@@ -78,46 +78,21 @@ If both the dependency and depending packages aren't compilers or other machine-
7878
7979Finally, if the depending package is a compiler or other machine-code-producing tool, it might need dependencies that run at "emit time". This is for compilers that (regrettably) insist on being built together with their source languages' standard libraries. Assuming build != host != target, a run-time dependency of the standard library cannot be run at the compiler's build time or run time, but only at the run time of code emitted by the compiler.
8080
81−Putting this all together, that means that we have dependency types of the form "X→ E", which means that the dependency executes on X and emits code for E; each of X and E can be `build`, `host`, or `target`, and E can be `*` to indicate that the dependency is not a compiler-like package.
82−
83−Dependency types describe the relationships that a package has with each of its transitive dependencies. You could think of attaching one or more dependency types to each of the formal parameters at the top of a package's `.nix` file, as well as to all of *their* formal parameters, and so on. Triples like `(foo, bar, baz)`, on the other hand, are a property of an instantiated derivation -- you could would attach a triple `(mips-linux, mips-linux, sparc-solaris)` to a `.drv` file in `/nix/store`.
84−
85−Only nine dependency types matter in practice:
81+Putting this all together, that means we have dependencies in the form "host → target", in at most the following six combinations:
8682
8783#### Possible dependency types {#possible-dependency-types}
8884
89−| Dependency type | Dependency’s host platform | Dependency’s target platform |
90−|-----------------|----------------------------|------------------------------|
91−| build → * | build | (none) |
92−| build → build | build | build |
93−| build → host | build | host |
94−| build → target | build | target |
95−| host → * | host | (none) |
96−| host → host | host | host |
97−| host → target | host | target |
98−| target → * | target | (none) |
99−| target → target | target | target |
100−
101−Let's use `g++` as an example to make this table clearer. `g++` is a C++ compiler written in C. Suppose we are building `g++` with a `(build, host, target)` platform triple of `(foo, bar, baz)`. This means we are using a `foo`-machine to build a copy of `g++` which will run on a `bar`-machine and emit binaries for the `baz`-machine.
102−
103−* `g++` links against the host platform's `glibc` C library, which is a "host→ *" dependency with a triple of `(bar, bar, *)`. Since it is a library, not a compiler, it has no "target".
104−
105−* Since `g++` is written in C, the `gcc` compiler used to compile it is a "build→ host" dependency of `g++` with a triple of `(foo, foo, bar)`. This compiler runs on the build platform and emits code for the host platform.
106−
107−* `gcc` links against the build platform's `glibc` C library, which is a "build→ *" dependency with a triple of `(foo, foo, *)`. Since it is a library, not a compiler, it has no "target".
108−
109−* This `gcc` is itself compiled by an *earlier* copy of `gcc`. This earlier copy of `gcc` is a "build→ build" dependency of `g++` with a triple of `(foo, foo, foo)`. This "early `gcc`" runs on the build platform and emits code for the build platform.
110−
111−* `g++` is bundled with `libgcc`, which includes a collection of target-machine routines for exception handling and
112−software floating point emulation. `libgcc` would be a "target→ *" dependency with triple `(foo, baz, *)`, because it consists of machine code which gets linked against the output of the compiler that we are building. It is a library, not a compiler, so it has no target of its own.
113−
114−* `libgcc` is written in C and compiled with `gcc`. The `gcc` that compiles it will be a "build→ target" dependency with triple `(foo, foo, baz)`. It gets compiled *and run* at `g++`-build-time (on platform `foo`), but must emit code for the `baz`-platform.
115−
116−* `g++` allows inline assembler code, so it depends on access to a copy of the `gas` assembler. This would be a "host→ target" dependency with triple `(foo, bar, baz)`.
85+| Dependency’s host platform | Dependency’s target platform |
86+|----------------------------|------------------------------|
87+| build | build |
88+| build | host |
89+| build | target |
90+| host | host |
91+| host | target |
92+| target | target |
11793
118−* `g++` (and `gcc`) include a library `libgccjit.so`, which wrap the compiler in a library to create a just-in-time compiler. In nixpkgs, this library is in the `libgccjit` package; if C++ required that programs have access to a JIT, `g++` would need to add a "target→ target" dependency for `libgccjit` with triple `(foo, baz, baz)`. This would ensure that the compiler ships with a copy of `libgccjit` which both executes on and generates code for the `baz`-platform.
11994
120−* If `g++` itself linked against `libgccjit.so` (for example, to allow compile-time-evaluated C++ expressions), then the `libgccjit` package used to provide this functionality would be a "host→ host" dependency of `g++`: it is code which runs on the `host` and emits code for execution on the `host`.
95+Some examples will make this table clearer. Suppose there's some package that is being built with a `(build, host, target)` platform triple of `(foo, bar, baz)`. If it has a build-time library dependency, that would be a "host → build" dependency with a triple of `(foo, foo, *)` (the target platform is irrelevant). If it needs a compiler to be built, that would be a "build → host" dependency with a triple of `(foo, foo, *)` (the target platform is irrelevant). That compiler, would be built with another compiler, also "build → host" dependency, with a triple of `(foo, foo, foo)`.
12196
12297### Cross packaging cookbook {#ssec-cross-cookbook}
12398
doc/stdenv/meta.chapter.md+4−34
@@ -175,40 +175,6 @@ The NixOS tests are available as `nixosTests` in parameters of derivations. For
175175
176176NixOS tests run in a VM, so they are slower than regular package tests. For more information see [NixOS module tests](https://nixos.org/manual/nixos/stable/#sec-nixos-tests).
177177
178−Alternatively, you can specify other derivations as tests. You can make use of
179−the optional parameter to inject the correct package without
180−relying on non-local definitions, even in the presence of `overrideAttrs`.
181−Here that's `finalAttrs.finalPackage`, but you could choose a different name if
182−`finalAttrs` already exists in your scope.
183−
184−`(mypkg.overrideAttrs f).passthru.tests` will be as expected, as long as the
185−definition of `tests` does not rely on the original `mypkg` or overrides it in
186−all places.
187−
188−```nix
189−# my-package/default.nix
190−{ stdenv, callPackage }:
191−stdenv.mkDerivation (finalAttrs: {
192− # ...
193− passthru.tests.example = callPackage ./example.nix { my-package = finalAttrs.finalPackage; };
194−})
195−```
196−
197−```nix
198−# my-package/example.nix
199−{ runCommand, lib, my-package, ... }:
200−runCommand "my-package-test" {
201− nativeBuildInputs = [ my-package ];
202− src = lib.sources.sourcesByRegex ./. [ ".*.in" ".*.expected" ];
203−} ''
204− my-package --help
205− my-package <example.in >example.actual
206− diff -U3 --color=auto example.expected example.actual
207− mkdir $out
208−''
209−```
210−
211−
212178### `timeout` {#var-meta-timeout}
213179
214180A timeout (in seconds) for building the derivation. If the derivation takes longer than this time to build, it can fail due to breaking the timeout. However, all computers do not have the same computing power, hence some builders may decide to apply a multiplicative factor to this value. When filling this value in, try to keep it approximately consistent with other values already present in `nixpkgs`.
@@ -226,6 +192,10 @@ meta.hydraPlatforms = [];
226192
227193If set to `true`, the package is marked as "broken", meaning that it won’t show up in `nix-env -qa`, and cannot be built or installed. Such packages should be removed from Nixpkgs eventually unless they are fixed.
228194
195+### `updateWalker` {#var-meta-updateWalker}
196+
197+If set to `true`, the package is tested to be updated correctly by the `update-walker.sh` script without additional settings. Such packages have `meta.version` set and their homepage (or the page specified by `meta.downloadPage`) contains a direct link to the package tarball.
198+
229199## Licenses {#sec-meta-license}
230200
231201The `meta.license` attribute should preferably contain a value from `lib.licenses` defined in [`nixpkgs/lib/licenses.nix`](https://github.com/NixOS/nixpkgs/blob/master/lib/licenses.nix), or in-place license description of the same format if the license is unlikely to be useful in another expression.
doc/stdenv/stdenv.chapter.md+10−86
@@ -125,7 +125,7 @@ The extension of `PATH` with dependencies, alluded to above, proceeds according
125125A dependency is said to be **propagated** when some of its other-transitive (non-immediate) downstream dependencies also need it as an immediate dependency.
126126[^footnote-stdenv-propagated-dependencies]
127127
128−It is important to note that dependencies are not necessarily propagated as the same sort of dependency that they were before, but rather as the corresponding sort so that the platform rules still line up. To determine the exact rules for dependency propagation, we start by assigning to each dependency a couple of ternary numbers (`-1` for `build`, `0` for `host`, and `1` for `target`) representing its [dependency type](#possible-dependency-types), which captures how its host and target platforms are each "offset" from the depending derivation’s host and target platforms. The following table summarize the different combinations that can be obtained:
128+It is important to note that dependencies are not necessarily propagated as the same sort of dependency that they were before, but rather as the corresponding sort so that the platform rules still line up. To determine the exact rules for dependency propagation, we start by assigning to each dependency a couple of ternary numbers (`-1` for `build`, `0` for `host`, and `1` for `target`), representing how respectively its host and target platforms are "offset" from the depending derivation’s platforms. The following table summarize the different combinations that can be obtained:
129129
130130| `host → target` | attribute name | offset |
131131| ------------------- | ------------------- | -------- |
@@ -317,72 +317,12 @@ The script will be usually run from the root of the Nixpkgs repository but you s
317317
318318For information about how to run the updates, execute `nix-shell maintainers/scripts/update.nix`.
319319
320−### Recursive attributes in `mkDerivation`
321−
322−If you pass a function to `mkDerivation`, it will receive as its argument the final arguments, including the overrides when reinvoked via `overrideAttrs`. For example:
323−
324−```nix
325−mkDerivation (finalAttrs: {
326− pname = "hello";
327− withFeature = true;
328− configureFlags =
329− lib.optionals finalAttrs.withFeature ["--with-feature"];
330−})
331−```
332−
333−Note that this does not use the `rec` keyword to reuse `withFeature` in `configureFlags`.
334−The `rec` keyword works at the syntax level and is unaware of overriding.
335−
336−Instead, the definition references `finalAttrs`, allowing users to change `withFeature`
337−consistently with `overrideAttrs`.
338−
339−`finalAttrs` also contains the attribute `finalPackage`, which includes the output paths, etc.
340−
341−Let's look at a more elaborate example to understand the differences between
342−various bindings:
343−
344−```nix
345−# `pkg` is the _original_ definition (for illustration purposes)
346−let pkg =
347− mkDerivation (finalAttrs: {
348− # ...
349−
350− # An example attribute
351− packages = [];
352−
353− # `passthru.tests` is a commonly defined attribute.
354− passthru.tests.simple = f finalAttrs.finalPackage;
355−
356− # An example of an attribute containing a function
357− passthru.appendPackages = packages':
358− finalAttrs.finalPackage.overrideAttrs (newSelf: super: {
359− packages = super.packages ++ packages';
360− });
361−
362− # For illustration purposes; referenced as
363− # `(pkg.overrideAttrs(x)).finalAttrs` etc in the text below.
364− passthru.finalAttrs = finalAttrs;
365− passthru.original = pkg;
366− });
367−in pkg
368−```
369−
370−Unlike the `pkg` binding in the above example, the `finalAttrs` parameter always references the final attributes. For instance `(pkg.overrideAttrs(x)).finalAttrs.finalPackage` is identical to `pkg.overrideAttrs(x)`, whereas `(pkg.overrideAttrs(x)).original` is the same as the original `pkg`.
371−
372−See also the section about [`passthru.tests`](#var-meta-tests).
373−
374320## Phases {#sec-stdenv-phases}
375321
376−`stdenv.mkDerivation` sets the Nix [derivation](https://nixos.org/manual/nix/stable/expressions/derivations.html#derivations)'s builder to a script that loads the stdenv `setup.sh` bash library and calls `genericBuild`. Most packaging functions rely on this default builder.
377−
378−This generic command invokes a number of *phases*. Package builds are split into phases to make it easier to override specific parts of the build (e.g., unpacking the sources or installing the binaries).
322+The generic builder has a number of *phases*. Package builds are split into phases to make it easier to override specific parts of the build (e.g., unpacking the sources or installing the binaries). Furthermore, it allows a nicer presentation of build logs in the Nix build farm.
379323
380324Each phase can be overridden in its entirety either by setting the environment variable `namePhase` to a string containing some shell commands to be executed, or by redefining the shell function `namePhase`. The former is convenient to override a phase from the derivation, while the latter is convenient from a build script. However, typically one only wants to *add* some commands to a phase, e.g. by defining `postInstall` or `preFixup`, as skipping some of the default actions may have unexpected consequences. The default script for each phase is defined in the file `pkgs/stdenv/generic/setup.sh`.
381325
382−When overriding a phase, for example `installPhase`, it is important to start with `runHook preInstall` and end it with `runHook postInstall`, otherwise `preInstall` and `postInstall` will not be run. Even if you don't use them directly, it is good practice to do so anyways for downstream users who would want to add a `postInstall` by overriding your derivation.
383−
384−While inside an interactive `nix-shell`, if you wanted to run all phases in the order they would be run in an actual build, you can invoke `genericBuild` yourself.
385−
386326### Controlling phases {#ssec-controlling-phases}
387327
388328There are a number of variables that control what phases are executed and in what order:
@@ -393,8 +333,7 @@ There are a number of variables that control what phases are executed and in wha
393333
394334Specifies the phases. You can change the order in which phases are executed, or add new phases, by setting this variable. If it’s not set, the default value is used, which is `$prePhases unpackPhase patchPhase $preConfigurePhases configurePhase $preBuildPhases buildPhase checkPhase $preInstallPhases installPhase fixupPhase installCheckPhase $preDistPhases distPhase $postPhases`.
395335
396−It is discouraged to set this variable, as it is easy to miss some important functionality hidden in some of the less obviously needed phases (like `fixupPhase` which patches the shebang of scripts).
397−Usually, if you just want to add a few phases, it’s more convenient to set one of the variables below (such as `preInstallPhases`).
336+Usually, if you just want to add a few phases, it’s more convenient to set one of the variables below (such as `preInstallPhases`), as you then don’t specify all the normal phases.
398337
399338##### `prePhases` {#var-stdenv-prePhases}
400339
@@ -851,13 +790,13 @@ Hook executed at the start of the distribution phase.
851790
852791Hook executed at the end of the distribution phase.
853792
854−## Shell functions and utilities {#ssec-stdenv-functions}
793+## Shell functions {#ssec-stdenv-functions}
855794
856795The standard environment provides a number of useful functions.
857796
858797### `makeWrapper` \<executable\> \<wrapperfile\> \<args\> {#fun-makeWrapper}
859798
860−Constructs a wrapper for a program with various possible arguments. It is defined as part of 2 setup-hooks named `makeWrapper` and `makeBinaryWrapper` that implement the same bash functions. Hence, to use it you have to add `makeWrapper` to your `nativeBuildInputs`. Here's an example usage:
799+Constructs a wrapper for a program with various possible arguments. For example:
861800
862801```bash
863802# adds `FOOBAR=baz` to `$out/bin/foo`’s environment
@@ -869,24 +808,9 @@ makeWrapper $out/bin/foo $wrapperfile --set FOOBAR baz
869808makeWrapper $out/bin/foo $wrapperfile --prefix PATH : ${lib.makeBinPath [ hello git ]}
870809```
871810
872−There’s many more kinds of arguments, they are documented in `nixpkgs/pkgs/build-support/setup-hooks/make-wrapper.sh` for the `makeWrapper` implementation and in `nixpkgs/pkgs/build-support/setup-hooks/make-binary-wrapper.sh` for the `makeBinaryWrapper` implementation.
873−
874−`wrapProgram` is a convenience function you probably want to use most of the time, implemented by both `makeWrapper` and `makeBinaryWrapper`.
875−
876−Using the `makeBinaryWrapper` implementation is usually preferred, as it creates a tiny _compiled_ wrapper executable, that can be used as a shebang interpreter. This is needed mostly on Darwin, where shebangs cannot point to scripts, [due to a limitation with the `execve`-syscall](https://stackoverflow.com/questions/67100831/macos-shebang-with-absolute-path-not-working). Compiled wrappers generated by `makeBinaryWrapper` can be inspected with `less <path-to-wrapper>` - by scrolling past the binary data you should be able to see the shell command that generated the executable and there see the environment variables that were injected into the wrapper.
811+There’s many more kinds of arguments, they are documented in `nixpkgs/pkgs/build-support/setup-hooks/make-wrapper.sh`.
877812
878−### `remove-references-to -t` \<storepath\> [ `-t` \<storepath\> ... ] \<file\> ... {#fun-remove-references-to}
879−
880−Removes the references of the specified files to the specified store files. This is done without changing the size of the file by replacing the hash by `eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`, and should work on compiled executables. This is meant to be used to remove the dependency of the output on inputs that are known to be unnecessary at runtime. Of course, reckless usage will break the patched programs.
881−To use this, add `removeReferencesTo` to `nativeBuildInputs`.
882−
883−As `remove-references-to` is an actual executable and not a shell function, it can be used with `find`.
884−Example removing all references to the compiler in the output:
885−```nix
886−postInstall = ''
887− find "$out" -type f -exec remove-references-to -t ${stdenv.cc} '{}' +
888−'';
889−```
813+`wrapProgram` is a convenience function you probably want to use most of the time.
890814
891815### `substitute` \<infile\> \<outfile\> \<subs\> {#fun-substitute}
892816
@@ -961,9 +885,9 @@ someVar=$(stripHash $name)
961885
962886### `wrapProgram` \<executable\> \<makeWrapperArgs\> {#fun-wrapProgram}
963887
964−Convenience function for `makeWrapper` that replaces `<\executable\>` with a wrapper that executes the original program. It takes all the same arguments as `makeWrapper`, except for `--inherit-argv0` (used by the `makeBinaryWrapper` implementation) and `--argv0` (used by both `makeWrapper` and `makeBinaryWrapper` wrapper implementations).
888+Convenience function for `makeWrapper` that automatically creates a sane wrapper file. It takes all the same arguments as `makeWrapper`, except for `--argv0`.
965889
966−If you will apply it multiple times, it will overwrite the wrapper file and you will end up with double wrapping, which should be avoided.
890+It cannot be applied multiple times, since it will overwrite the wrapper file.
967891
968892## Package setup hooks {#ssec-setup-hooks}
969893
@@ -1097,7 +1021,7 @@ You can also specify a `runtimeDependencies` variable which lists dependencies t
10971021
10981022In certain situations you may want to run the main command (`autoPatchelf`) of the setup hook on a file or a set of directories instead of unconditionally patching all outputs. This can be done by setting the `dontAutoPatchelf` environment variable to a non-empty value.
10991023
1100−By default `autoPatchelf` will fail as soon as any ELF file requires a dependency which cannot be resolved via the given build inputs. In some situations you might prefer to just leave missing dependencies unpatched and continue to patch the rest. This can be achieved by setting the `autoPatchelfIgnoreMissingDeps` environment variable to a non-empty value. `autoPatchelfIgnoreMissingDeps` can be set to a list like `autoPatchelfIgnoreMissingDeps = [ "libcuda.so.1" "libcudart.so.1" ];` or to simply `[ "*" ]` to ignore all missing dependencies.
1024+By default `autoPatchelf` will fail as soon as any ELF file requires a dependency which cannot be resolved via the given build inputs. In some situations you might prefer to just leave missing dependencies unpatched and continue to patch the rest. This can be achieved by setting the `autoPatchelfIgnoreMissingDeps` environment variable to a non-empty value.
11011025
11021026The `autoPatchelf` command also recognizes a `--no-recurse` command line flag, which prevents it from recursing into subdirectories.
11031027
doc/using/overlays.chapter.md+2−18
@@ -77,7 +77,7 @@ In Nixpkgs, we have multiple implementations of the BLAS/LAPACK numerical linear
7777
7878 The Nixpkgs attribute is `openblas` for ILP64 (integer width = 64 bits) and `openblasCompat` for LP64 (integer width = 32 bits). `openblasCompat` is the default.
7979
80−- [LAPACK reference](http://www.netlib.org/lapack/) (also provides BLAS and CBLAS)
80+- [LAPACK reference](http://www.netlib.org/lapack/) (also provides BLAS)
8181
8282 The Nixpkgs attribute is `lapack-reference`.
8383
@@ -117,23 +117,7 @@ $ LD_LIBRARY_PATH=$(nix-build -A mkl)/lib${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH n
117117
118118Intel MKL requires an `openmp` implementation when running with multiple processors. By default, `mkl` will use Intel's `iomp` implementation if no other is specified, but this is a runtime-only dependency and binary compatible with the LLVM implementation. To use that one instead, Intel recommends users set it with `LD_PRELOAD`. Note that `mkl` is only available on `x86_64-linux` and `x86_64-darwin`. Moreover, Hydra is not building and distributing pre-compiled binaries using it.
119119
120−To override `blas` and `lapack` with its reference implementations (i.e. for development purposes), one can use the following overlay:
121−
122−```nix
123−self: super:
124−
125−{
126− blas = super.blas.override {
127− blasProvider = self.lapack-reference;
128− };
129−
130− lapack = super.lapack.override {
131− lapackProvider = self.lapack-reference;
132− };
133−}
134−```
135−
136−For BLAS/LAPACK switching to work correctly, all packages must depend on `blas` or `lapack`. This ensures that only one BLAS/LAPACK library is used at one time. There are two versions of BLAS/LAPACK currently in the wild, `LP64` (integer size = 32 bits) and `ILP64` (integer size = 64 bits). The attributes `blas` and `lapack` are `LP64` by default. Their `ILP64` version are provided through the attributes `blas-ilp64` and `lapack-ilp64`. Some software needs special flags or patches to work with `ILP64`. You can check if `ILP64` is used in Nixpkgs with `blas.isILP64` and `lapack.isILP64`. Some software does NOT work with `ILP64`, and derivations need to specify an assertion to prevent this. You can prevent `ILP64` from being used with the following:
120+For BLAS/LAPACK switching to work correctly, all packages must depend on `blas` or `lapack`. This ensures that only one BLAS/LAPACK library is used at one time. There are two versions of BLAS/LAPACK currently in the wild, `LP64` (integer size = 32 bits) and `ILP64` (integer size = 64 bits). Some software needs special flags or patches to work with `ILP64`. You can check if `ILP64` is used in Nixpkgs with `blas.isILP64` and `lapack.isILP64`. Some software does NOT work with `ILP64`, and derivations need to specify an assertion to prevent this. You can prevent `ILP64` from being used with the following:
137121
138122```nix
139123{ stdenv, blas, lapack, ... }:
doc/using/overrides.chapter.md+2−6
@@ -39,18 +39,14 @@ The function `overrideAttrs` allows overriding the attribute set passed to a `st
3939Example usage:
4040
4141```nix
42−helloWithDebug = pkgs.hello.overrideAttrs (finalAttrs: previousAttrs: {
42+helloWithDebug = pkgs.hello.overrideAttrs (oldAttrs: rec {
4343 separateDebugInfo = true;
4444});
4545```
4646
4747In the above example, the `separateDebugInfo` attribute is overridden to be true, thus building debug info for `helloWithDebug`, while all other attributes will be retained from the original `hello` package.
4848
49−The argument `previousAttrs` is conventionally used to refer to the attr set originally passed to `stdenv.mkDerivation`.
50−
51−The argument `finalAttrs` refers to the final attributes passed to `mkDerivation`, plus the `finalPackage` attribute which is equal to the result of `mkDerivation` or subsequent `overrideAttrs` calls.
52−
53−If only a one-argument function is written, the argument has the meaning of `previousAttrs`.
49+The argument `oldAttrs` is conventionally used to refer to the attr set originally passed to `stdenv.mkDerivation`.
5450
5551::: {.note}
5652Note that `separateDebugInfo` is processed only by the `stdenv.mkDerivation` function, not the generated, raw Nix derivation. Thus, using `overrideDerivation` will not work in this case, as it overrides only the attributes of the final derivation. It is for this reason that `overrideAttrs` should be preferred in (almost) all cases to `overrideDerivation`, i.e. to allow using `stdenv.mkDerivation` to process input arguments, as well as the fact that it is easier to use (you can use the same attribute names you see in your Nix code, instead of the ones generated (e.g. `buildInputs` vs `nativeBuildInputs`), and it involves less typing).
flake.nix+50−8
@@ -18,16 +18,58 @@
1818 in
1919 {
2020 lib = lib.extend (final: prev: {
21+ nixosSystem = { modules, ... } @ args:
22+ import ./nixos/lib/eval-config.nix (args // {
23+ modules =
24+ let
25+ vmConfig = (import ./nixos/lib/eval-config.nix
26+ (args // {
27+ modules = modules ++ [ ./nixos/modules/virtualisation/qemu-vm.nix ];
28+ })).config;
2129
22− nixos = import ./nixos/lib { lib = final; };
30+ vmWithBootLoaderConfig = (import ./nixos/lib/eval-config.nix
31+ (args // {
32+ modules = modules ++ [
33+ ./nixos/modules/virtualisation/qemu-vm.nix
34+ { virtualisation.useBootLoader = true; }
35+ ({ config, ... }: {
36+ virtualisation.useEFIBoot =
37+ config.boot.loader.systemd-boot.enable ||
38+ config.boot.loader.efi.canTouchEfiVariables;
39+ })
40+ ];
41+ })).config;
2342
24− nixosSystem = args:
25− import ./nixos/lib/eval-config.nix (args // {
26− modules = args.modules ++ [ {
27− system.nixos.versionSuffix =
28− ".${final.substring 0 8 (self.lastModifiedDate or self.lastModified or "19700101")}.${self.shortRev or "dirty"}";
29− system.nixos.revision = final.mkIf (self ? rev) self.rev;
30− } ];
43+ moduleDeclarationFile =
44+ let
45+ # Even though `modules` is a mandatory argument for `nixosSystem`, it doesn't
46+ # mean that the evaluator always keeps track of its position. If there
47+ # are too many levels of indirection, the position gets lost at some point.
48+ intermediatePos = builtins.unsafeGetAttrPos "modules" args;
49+ in
50+ if intermediatePos == null then null else intermediatePos.file;
51+
52+ # Add the invoking file as error message location for modules
53+ # that don't have their own locations; presumably inline modules.
54+ addModuleDeclarationFile =
55+ m: if moduleDeclarationFile == null then m else {
56+ _file = moduleDeclarationFile;
57+ imports = [ m ];
58+ };
59+
60+ in
61+ map addModuleDeclarationFile modules ++ [
62+ {
63+ system.nixos.versionSuffix =
64+ ".${final.substring 0 8 (self.lastModifiedDate or self.lastModified or "19700101")}.${self.shortRev or "dirty"}";
65+ system.nixos.revision = final.mkIf (self ? rev) self.rev;
66+
67+ system.build = {
68+ vm = vmConfig.system.build.vm;
69+ vmWithBootLoader = vmWithBootLoaderConfig.system.build.vm;
70+ };
71+ }
72+ ];
3173 });
3274 });
3375
lib/asserts.nix+12−10
@@ -2,33 +2,35 @@
22
33rec {
44
5− /* Throw if pred is false, else return pred.
5+ /* Print a trace message if pred is false.
66 Intended to be used to augment asserts with helpful error messages.
77
88 Example:
99 assertMsg false "nope"
10− stderr> error: nope
10+ => false
11+ stderr> trace: nope
1112
12− assert assertMsg ("foo" == "bar") "foo is not bar, silly"; ""
13− stderr> error: foo is not bar, silly
13+ assert (assertMsg ("foo" == "bar") "foo is not bar, silly"); ""
14+ stderr> trace: foo is not bar, silly
15+ stderr> assert failed at …
1416
1517 Type:
1618 assertMsg :: Bool -> String -> Bool
1719 */
1820 # TODO(Profpatsch): add tests that check stderr
1921 assertMsg = pred: msg:
20− pred || builtins.throw msg;
22+ if pred
23+ then true
24+ else builtins.trace msg false;
2125
2226 /* Specialized `assertMsg` for checking if val is one of the elements
2327 of a list. Useful for checking enums.
2428
2529 Example:
26− let sslLibrary = "libressl";
30+ let sslLibrary = "libressl"
2731 in assertOneOf "sslLibrary" sslLibrary [ "openssl" "bearssl" ]
28− stderr> error: sslLibrary must be one of [
29− stderr> "openssl"
30− stderr> "bearssl"
31− stderr> ], but is: "libressl"
32+ => false
33+ stderr> trace: sslLibrary must be one of "openssl", "bearssl", but is: "libressl"
3234
3335 Type:
3436 assertOneOf :: String -> ComparableVal -> List ComparableVal -> Bool
lib/attrsets.nix+21−130
@@ -3,9 +3,9 @@
33
44let
55 inherit (builtins) head tail length;
6− inherit (lib.trivial) id;
7− inherit (lib.strings) concatStringsSep concatMapStringsSep escapeNixIdentifier sanitizeDerivationName;
8− inherit (lib.lists) foldr foldl' concatMap concatLists elemAt all partition groupBy take foldl;
6+ inherit (lib.trivial) and;
7+ inherit (lib.strings) concatStringsSep sanitizeDerivationName;
8+ inherit (lib.lists) foldr foldl' concatMap concatLists elemAt;
99in
1010
1111rec {
@@ -73,107 +73,10 @@ rec {
7373 getAttrFromPath ["z" "z"] x
7474 => error: cannot find attribute `z.z'
7575 */
76− getAttrFromPath = attrPath:
76+ getAttrFromPath = attrPath: set:
7777 let errorMsg = "cannot find attribute `" + concatStringsSep "." attrPath + "'";
78− in attrByPath attrPath (abort errorMsg);
79−
80−
81− /* Update or set specific paths of an attribute set.
82−
83− Takes a list of updates to apply and an attribute set to apply them to,
84− and returns the attribute set with the updates applied. Updates are
85− represented as { path = ...; update = ...; } values, where `path` is a
86− list of strings representing the attribute path that should be updated,
87− and `update` is a function that takes the old value at that attribute path
88− as an argument and returns the new
89− value it should be.
90−
91− Properties:
92− - Updates to deeper attribute paths are applied before updates to more
93− shallow attribute paths
94− - Multiple updates to the same attribute path are applied in the order
95− they appear in the update list
96− - If any but the last `path` element leads into a value that is not an
97− attribute set, an error is thrown
98− - If there is an update for an attribute path that doesn't exist,
99− accessing the argument in the update function causes an error, but
100− intermediate attribute sets are implicitly created as needed
78+ in attrByPath attrPath (abort errorMsg) set;
10179
102− Example:
103− updateManyAttrsByPath [
104− {
105− path = [ "a" "b" ];
106− update = old: { d = old.c; };
107− }
108− {
109− path = [ "a" "b" "c" ];
110− update = old: old + 1;
111− }
112− {
113− path = [ "x" "y" ];
114− update = old: "xy";
115− }
116− ] { a.b.c = 0; }
117− => { a = { b = { d = 1; }; }; x = { y = "xy"; }; }
118− */
119− updateManyAttrsByPath = let
120− # When recursing into attributes, instead of updating the `path` of each
121− # update using `tail`, which needs to allocate an entirely new list,
122− # we just pass a prefix length to use and make sure to only look at the
123− # path without the prefix length, so that we can reuse the original list
124− # entries.
125− go = prefixLength: hasValue: value: updates:
126− let
127− # Splits updates into ones on this level (split.right)
128− # And ones on levels further down (split.wrong)
129− split = partition (el: length el.path == prefixLength) updates;
130−
131− # Groups updates on further down levels into the attributes they modify
132− nested = groupBy (el: elemAt el.path prefixLength) split.wrong;
133−
134− # Applies only nested modification to the input value
135− withNestedMods =
136− # Return the value directly if we don't have any nested modifications
137− if split.wrong == [] then
138− if hasValue then value
139− else
140− # Throw an error if there is no value. This `head` call here is
141− # safe, but only in this branch since `go` could only be called
142− # with `hasValue == false` for nested updates, in which case
143− # it's also always called with at least one update
144− let updatePath = (head split.right).path; in
145− throw
146− ( "updateManyAttrsByPath: Path '${showAttrPath updatePath}' does "
147− + "not exist in the given value, but the first update to this "
148− + "path tries to access the existing value.")
149− else
150− # If there are nested modifications, try to apply them to the value
151− if ! hasValue then
152− # But if we don't have a value, just use an empty attribute set
153− # as the value, but simplify the code a bit
154− mapAttrs (name: go (prefixLength + 1) false null) nested
155− else if isAttrs value then
156− # If we do have a value and it's an attribute set, override it
157− # with the nested modifications
158− value //
159− mapAttrs (name: go (prefixLength + 1) (value ? ${name}) value.${name}) nested
160− else
161− # However if it's not an attribute set, we can't apply the nested
162− # modifications, throw an error
163− let updatePath = (head split.wrong).path; in
164− throw
165− ( "updateManyAttrsByPath: Path '${showAttrPath updatePath}' needs to "
166− + "be updated, but path '${showAttrPath (take prefixLength updatePath)}' "
167− + "of the given value is not an attribute set, so we can't "
168− + "update an attribute inside of it.");
169−
170− # We get the final result by applying all the updates on this level
171− # after having applied all the nested updates
172− # We use foldl instead of foldl' so that in case of multiple updates,
173− # intermediate values aren't evaluated if not needed
174− in foldl (acc: el: el.update acc) withNestedMods split.right;
175−
176− in updates: value: go 0 true value updates;
17780
17881 /* Return the specified attributes from a set.
17982
@@ -251,12 +154,12 @@ rec {
251154 foldAttrs (n: a: [n] ++ a) [] [{ a = 2; } { a = 3; }]
252155 => { a = [ 2 3 ]; }
253156 */
254− foldAttrs = op: nul:
157+ foldAttrs = op: nul: list_of_attrs:
255158 foldr (n: a:
256159 foldr (name: o:
257160 o // { ${name} = op n.${name} (a.${name} or nul); }
258161 ) a (attrNames n)
259− ) {};
162+ ) {} list_of_attrs;
260163
261164
262165 /* Recursively collect sets that verify a given predicate named `pred'
@@ -373,7 +276,7 @@ rec {
373276
374277
375278 /* Like `mapAttrsRecursive', but it takes an additional predicate
376− function that tells it whether to recurse into an attribute
279+ function that tells it whether to recursive into an attribute
377280 set. If it returns false, `mapAttrsRecursiveCond' does not
378281 recurse, but does apply the map function. If it returns true, it
379282 does recurse, and does not apply the map function.
@@ -392,14 +295,14 @@ rec {
392295 */
393296 mapAttrsRecursiveCond = cond: f: set:
394297 let
395− recurse = path:
298+ recurse = path: set:
396299 let
397300 g =
398301 name: value:
399302 if isAttrs value && cond value
400303 then recurse (path ++ [name]) value
401304 else f (path ++ [name]) value;
402− in mapAttrs g;
305+ in mapAttrs g set;
403306 in recurse [] set;
404307
405308
@@ -424,7 +327,7 @@ rec {
424327 isDerivation "foobar"
425328 => false
426329 */
427− isDerivation = x: x.type or null == "derivation";
330+ isDerivation = x: isAttrs x && x ? type && x.type == "derivation";
428331
429332 /* Converts a store path to a fake derivation. */
430333 toDerivation = path:
@@ -466,7 +369,7 @@ rec {
466369 value = f name (catAttrs name sets);
467370 }) names);
468371
469− /* Implementation note: Common names appear multiple times in the list of
372+ /* Implementation note: Common names appear multiple times in the list of
470373 names, hopefully this does not affect the system because the maximal
471374 laziness avoid computing twice the same expression and listToAttrs does
472375 not care about duplicated attribute names.
@@ -475,8 +378,7 @@ rec {
475378 zipAttrsWith (name: values: values) [{a = "x";} {a = "y"; b = "z";}]
476379 => { a = ["x" "y"]; b = ["z"] }
477380 */
478− zipAttrsWith =
479− builtins.zipAttrsWith or (f: sets: zipAttrsWithNames (concatMap attrNames sets) f sets);
381+ zipAttrsWith = f: sets: zipAttrsWithNames (concatMap attrNames sets) f sets;
480382 /* Like `zipAttrsWith' with `(name: values: values)' as the function.
481383
482384 Example:
@@ -517,8 +419,8 @@ rec {
517419 let f = attrPath:
518420 zipAttrsWith (n: values:
519421 let here = attrPath ++ [n]; in
520− if length values == 1
521− || pred here (elemAt values 1) (head values) then
422+ if tail values == []
423+ || pred here (head (tail values)) (head values) then
522424 head values
523425 else
524426 f here values
@@ -544,7 +446,10 @@ rec {
544446 }
545447
546448 */
547− recursiveUpdate = recursiveUpdateUntil (path: lhs: rhs: !(isAttrs lhs && isAttrs rhs));
449+ recursiveUpdate = lhs: rhs:
450+ recursiveUpdateUntil (path: lhs: rhs:
451+ !(isAttrs lhs && isAttrs rhs)
452+ ) lhs rhs;
548453
549454 /* Returns true if the pattern is contained in the set. False otherwise.
550455
@@ -553,8 +458,8 @@ rec {
553458 => true
554459 */
555460 matchAttrs = pattern: attrs: assert isAttrs pattern;
556− all id (attrValues (zipAttrsWithNames (attrNames pattern) (n: values:
557− let pat = head values; val = elemAt values 1; in
461+ foldr and true (attrValues (zipAttrsWithNames (attrNames pattern) (n: values:
462+ let pat = head values; val = head (tail values); in
558463 if length values == 1 then false
559464 else if isAttrs pat then isAttrs val && matchAttrs pat val
560465 else pat == val
@@ -574,20 +479,6 @@ rec {
574479 overrideExisting = old: new:
575480 mapAttrs (name: value: new.${name} or value) old;
576481
577− /* Turns a list of strings into a human-readable description of those
578− strings represented as an attribute path. The result of this function is
579− not intended to be machine-readable.
580−
581− Example:
582− showAttrPath [ "foo" "10" "bar" ]
583− => "foo.\"10\".bar"
584− showAttrPath []
585− => "<root attribute path>"
586− */
587− showAttrPath = path:
588− if path == [] then "<root attribute path>"
589− else concatMapStringsSep "." escapeNixIdentifier path;
590−
591482 /* Get a package output.
592483 If no output is found, fallback to `.out` and then to the default.
593484
lib/customisation.nix+2−49
@@ -117,55 +117,8 @@ rec {
117117 callPackageWith = autoArgs: fn: args:
118118 let
119119 f = if lib.isFunction fn then fn else import fn;
120− fargs = lib.functionArgs f;
121−
122− # All arguments that will be passed to the function
123− # This includes automatic ones and ones passed explicitly
124− allArgs = builtins.intersectAttrs fargs autoArgs // args;
125−
126− # A list of argument names that the function requires, but
127− # wouldn't be passed to it
128− missingArgs = lib.attrNames
129− # Filter out arguments that have a default value
130− (lib.filterAttrs (name: value: ! value)
131− # Filter out arguments that would be passed
132− (removeAttrs fargs (lib.attrNames allArgs)));
133−
134− # Get a list of suggested argument names for a given missing one
135− getSuggestions = arg: lib.pipe (autoArgs // args) [
136− lib.attrNames
137− # Only use ones that are at most 2 edits away. While mork would work,
138− # levenshteinAtMost is only fast for 2 or less.
139− (lib.filter (lib.strings.levenshteinAtMost 2 arg))
140− # Put strings with shorter distance first
141− (lib.sort (x: y: lib.strings.levenshtein x arg < lib.strings.levenshtein y arg))
142− # Only take the first couple results
143− (lib.take 3)
144− # Quote all entries
145− (map (x: "\"" + x + "\""))
146− ];
147−
148− prettySuggestions = suggestions:
149− if suggestions == [] then ""
150− else if lib.length suggestions == 1 then ", did you mean ${lib.elemAt suggestions 0}?"
151− else ", did you mean ${lib.concatStringsSep ", " (lib.init suggestions)} or ${lib.last suggestions}?";
152−
153− errorForArg = arg:
154− let
155− loc = builtins.unsafeGetAttrPos arg fargs;
156− # loc' can be removed once lib/minver.nix is >2.3.4, since that includes
157− # https://github.com/NixOS/nix/pull/3468 which makes loc be non-null
158− loc' = if loc != null then loc.file + ":" + toString loc.line
159− else if ! lib.isFunction fn then
160− toString fn + lib.optionalString (lib.sources.pathIsDirectory fn) "/default.nix"
161− else "<unknown location>";
162− in "Function called without required argument \"${arg}\" at "
163− + "${loc'}${prettySuggestions (getSuggestions arg)}";
164−
165− # Only show the error for the first missing argument
166− error = errorForArg (lib.head missingArgs);
167−
168− in if missingArgs == [] then makeOverridable f allArgs else throw error;
120+ auto = builtins.intersectAttrs (lib.functionArgs f) autoArgs;
121+ in makeOverridable f (auto // args);
169122
170123
171124 /* Like callPackage, but for a function that returns an attribute
lib/default.nix+12−22
@@ -11,9 +11,6 @@ let
1111 callLibs = file: import file { lib = self; };
1212 in {
1313
14− # interacting with flakes
15− flakes = callLibs ./flakes.nix;
16−
1714 # often used, or depending on very little
1815 trivial = callLibs ./trivial.nix;
1916 fixedPoints = callLibs ./fixed-points.nix;
@@ -62,7 +59,6 @@ let
6259 # linux kernel configuration
6360 kernel = callLibs ./kernel.nix;
6461
65− inherit (self.flakes) callLocklessFlake;
6662 inherit (builtins) add addErrorContext attrNames concatLists
6763 deepSeq elem elemAt filter genericClosure genList getAttr
6864 hasAttr head isAttrs isBool isInt isList isString length
@@ -70,10 +66,8 @@ let
7066 stringLength sub substring tail trace;
7167 inherit (self.trivial) id const pipe concat or and bitAnd bitOr bitXor
7268 bitNot boolToString mergeAttrs flip mapNullable inNixShell isFloat min max
73− importJSON importTOML warn warnIf warnIfNot throwIf throwIfNot checkListOfEnum
74− info showWarnings nixpkgsVersion version isInOldestRelease
75− mod compare splitByAndCompare
76− functionArgs setFunctionArgs isFunction toFunction
69+ importJSON importTOML warn warnIf info showWarnings nixpkgsVersion version
70+ mod compare splitByAndCompare functionArgs setFunctionArgs isFunction
7771 toHexString toBaseDigits;
7872 inherit (self.fixedPoints) fix fix' converge extends composeExtensions
7973 composeManyExtensions makeExtensible makeExtensibleWithCustomName;
@@ -83,10 +77,9 @@ let
8377 mapAttrs' mapAttrsToList mapAttrsRecursive mapAttrsRecursiveCond
8478 genAttrs isDerivation toDerivation optionalAttrs
8579 zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil
86− recursiveUpdate matchAttrs overrideExisting showAttrPath getOutput getBin
80+ recursiveUpdate matchAttrs overrideExisting getOutput getBin
8781 getLib getDev getMan chooseDevOutputs zipWithNames zip
88− recurseIntoAttrs dontRecurseIntoAttrs cartesianProductOfSets
89− updateManyAttrsByPath;
82+ recurseIntoAttrs dontRecurseIntoAttrs cartesianProductOfSets;
9083 inherit (self.lists) singleton forEach foldr fold foldl foldl' imap0 imap1
9184 concatMap flatten remove findSingle findFirst any all count
9285 optional optionals toList range partition zipListsWith zipLists
@@ -98,8 +91,7 @@ let
9891 concatImapStringsSep makeSearchPath makeSearchPathOutput
9992 makeLibraryPath makeBinPath optionalString
10093 hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
101− escapeShellArg escapeShellArgs isValidPosixName toShellVar toShellVars
102− escapeRegex escapeXML replaceChars lowerChars
94+ escapeShellArg escapeShellArgs escapeRegex escapeXML replaceChars lowerChars
10395 upperChars toLower toUpper addContextFrom splitString
10496 removePrefix removeSuffix versionOlder versionAtLeast
10597 getName getVersion
@@ -113,28 +105,26 @@ let
113105 makeScope makeScopeWithSplicing;
114106 inherit (self.meta) addMetaAttrs dontDistribute setName updateName
115107 appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio
116− hiPrioSet getLicenseFromSpdxId getExe;
108+ hiPrioSet;
117109 inherit (self.sources) pathType pathIsDirectory cleanSourceFilter
118110 cleanSource sourceByRegex sourceFilesBySuffices
119111 commitIdFromGitRepo cleanSourceWith pathHasContext
120112 canCleanSource pathIsRegularFile pathIsGitRepo;
121− inherit (self.modules) evalModules setDefaultModuleLocation
122− unifyModuleSyntax applyModuleArgsIfFunction mergeModules
113+ inherit (self.modules) evalModules unifyModuleSyntax
114+ applyIfFunction mergeModules
123115 mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
124116 pushDownProperties dischargeProperties filterOverrides
125117 sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride
126118 mkOptionDefault mkDefault mkImageMediaOverride mkForce mkVMOverride
127119 mkFixStrictness mkOrder mkBefore mkAfter mkAliasDefinitions
128120 mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule
129− mkRenamedOptionModule mkRenamedOptionModuleWith
130− mkMergedOptionModule mkChangedOptionModule
121+ mkRenamedOptionModule mkMergedOptionModule mkChangedOptionModule
131122 mkAliasOptionModule mkDerivedConfig doRename;
132123 inherit (self.options) isOption mkEnableOption mkSinkUndeclaredOptions
133− mergeDefaultOption mergeOneOption mergeEqualOption mergeUniqueOption
134− getValues getFiles
135− optionAttrSetToDocList optionAttrSetToDocList'
124+ mergeDefaultOption mergeOneOption mergeEqualOption getValues
125+ getFiles optionAttrSetToDocList optionAttrSetToDocList'
136126 scrubOptionValue literalExpression literalExample literalDocBook
137− showOption showFiles unknownModule mkOption mkPackageOption;
127+ showOption showFiles unknownModule mkOption;
138128 inherit (self.types) isType setType defaultTypeMerge defaultFunctor
139129 isOptionType mkOptionType;
140130 inherit (self.asserts)
lib/flakes.nixdeleted−22
@@ -1,22 +0,0 @@
1−{ lib }:
2−
3−rec {
4−
5− /* imports a flake.nix without acknowledging its lock file, useful for
6− referencing subflakes from a parent flake. The second argument allows
7− specifying the inputs of this flake.
8−
9− Example:
10− callLocklessFlake {
11− path = ./directoryContainingFlake;
12− inputs = { inherit nixpkgs; };
13− }
14− */
15− callLocklessFlake = { path, inputs ? { } }:
16− let
17− self = { outPath = path; } //
18− ((import (path + "/flake.nix")).outputs (inputs // { self = self; }));
19− in
20− self;
21−
22−}
lib/generators.nix+2−47
@@ -10,7 +10,7 @@
1010 * are mostly generators themselves, called with
1111 * their respective default values; they can be reused.
1212 *
13− * Tests can be found in ./tests/misc.nix
13+ * Tests can be found in ./tests.nix
1414 * Documentation in the manual, #sec-generators
1515 */
1616{ lib }:
@@ -108,7 +108,7 @@ rec {
108108 * The mk* configuration attributes can generically change
109109 * the way sections and key-value strings are generated.
110110 *
111− * For more examples see the test cases in ./tests/misc.nix.
111+ * For more examples see the test cases in ./tests.nix.
112112 */
113113 toINI = {
114114 # apply transformations (e.g. escapes) to section names
@@ -130,51 +130,6 @@ rec {
130130 # map input to ini sections
131131 mapAttrsToStringsSep "\n" mkSection attrsOfAttrs;
132132
133− /* Generate an INI-style config file from an attrset
134− * specifying the global section (no header), and an
135− * attrset of sections to an attrset of key-value pairs.
136− *
137− * generators.toINIWithGlobalSection {} {
138− * globalSection = {
139− * someGlobalKey = "hi";
140− * };
141− * sections = {
142− * foo = { hi = "${pkgs.hello}"; ciao = "bar"; };
143− * baz = { "also, integers" = 42; };
144− * }
145− *
146− *> someGlobalKey=hi
147− *>
148− *> [baz]
149− *> also, integers=42
150− *>
151− *> [foo]
152− *> ciao=bar
153− *> hi=/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10
154− *
155− * The mk* configuration attributes can generically change
156− * the way sections and key-value strings are generated.
157− *
158− * For more examples see the test cases in ./tests/misc.nix.
159− *
160− * If you don’t need a global section, you can also use
161− * `generators.toINI` directly, which only takes
162− * the part in `sections`.
163− */
164− toINIWithGlobalSection = {
165− # apply transformations (e.g. escapes) to section names
166− mkSectionName ? (name: libStr.escape [ "[" "]" ] name),
167− # format a setting line from key and value
168− mkKeyValue ? mkKeyValueDefault {} "=",
169− # allow lists as values for duplicate keys
170− listsAsDuplicateKeys ? false
171− }: { globalSection, sections }:
172− ( if globalSection == {}
173− then ""
174− else (toKeyValue { inherit mkKeyValue listsAsDuplicateKeys; } globalSection)
175− + "\n")
176− + (toINI { inherit mkSectionName mkKeyValue listsAsDuplicateKeys; } sections);
177−
178133 /* Generate a git-config file from an attrset.
179134 *
180135 * It has two major differences from the regular INI format:
lib/licenses.nix−30
@@ -67,11 +67,6 @@ in mkLicense lset) ({
6767 free = false;
6868 };
6969
70− aom = {
71− fullName = "Alliance for Open Media Patent License 1.0";
72− url = "https://aomedia.org/license/patent-license/";
73− };
74−
7570 apsl20 = {
7671 spdxId = "APSL-2.0";
7772 fullName = "Apple Public Source License 2.0";
@@ -389,11 +384,6 @@ in mkLicense lset) ({
389384 free = false;
390385 };
391386
392− generaluser = {
393− fullName = "GeneralUser GS License v2.0";
394− url = "http://www.schristiancollins.com/generaluser.php"; # license included in sources
395− };
396−
397387 gpl1Only = {
398388 spdxId = "GPL-1.0-only";
399389 fullName = "GNU General Public License v1.0 only";
@@ -470,11 +460,6 @@ in mkLicense lset) ({
470460 spdxId = "imagemagick";
471461 };
472462
473− imlib2 = {
474− spdxId = "Imlib2";
475− fullName = "Imlib2 License";
476− };
477−
478463 inria-compcert = {
479464 fullName = "INRIA Non-Commercial License Agreement for the CompCert verified compiler";
480465 url = "https://compcert.org/doc/LICENSE.txt";
@@ -601,21 +586,6 @@ in mkLicense lset) ({
601586 spdxId = "MIT";
602587 fullName = "MIT License";
603588 };
604− # https://spdx.org/licenses/MIT-feh.html
605− mit-feh = {
606− spdxId = "MIT-feh";
607− fullName = "feh License";
608− };
609−
610− mitAdvertising = {
611− spdxId = "MIT-advertising";
612− fullName = "Enlightenment License (e16)";
613− };
614−
615− mit0 = {
616− spdxId = "MIT-0";
617− fullName = "MIT No Attribution";
618− };
619589
620590 mpl10 = {
621591 spdxId = "MPL-1.0";
lib/lists.nix+8−9
@@ -4,7 +4,6 @@
44let
55 inherit (lib.strings) toInt;
66 inherit (lib.trivial) compare min;
7− inherit (lib.attrsets) mapAttrs;
87in
98rec {
109
@@ -341,15 +340,15 @@ rec {
341340 groupBy' builtins.add 0 (x: boolToString (x > 2)) [ 5 1 2 3 4 ]
342341 => { true = 12; false = 3; }
343342 */
344− groupBy' = op: nul: pred: lst: mapAttrs (name: foldl op nul) (groupBy pred lst);
343+ groupBy' = op: nul: pred: lst:
344+ foldl' (r: e:
345+ let
346+ key = pred e;
347+ in
348+ r // { ${key} = op (r.${key} or nul) e; }
349+ ) {} lst;
345350
346− groupBy = builtins.groupBy or (
347− pred: foldl' (r: e:
348− let
349− key = pred e;
350− in
351− r // { ${key} = (r.${key} or []) ++ [e]; }
352− ) {});
351+ groupBy = groupBy' (sum: e: sum ++ [e]) [];
353352
354353 /* Merges two lists of the same size together. If the sizes aren't the same
355354 the merging stops at the shortest. How both lists are merged is defined
lib/meta.nix+1−42
@@ -78,7 +78,7 @@ rec {
7878
7979 2. (modern) a pattern for the platform `parsed` field.
8080
81− We can inject these into a pattern for the whole of a structured platform,
81+ We can inject these into a patten for the whole of a structured platform,
8282 and then match that.
8383 */
8484 platformMatch = platform: elem: let
@@ -99,45 +99,4 @@ rec {
9999 availableOn = platform: pkg:
100100 lib.any (platformMatch platform) pkg.meta.platforms &&
101101 lib.all (elem: !platformMatch platform elem) (pkg.meta.badPlatforms or []);
102−
103− /* Get the corresponding attribute in lib.licenses
104− from the SPDX ID.
105− For SPDX IDs, see
106− https://spdx.org/licenses
107−
108− Type:
109− getLicenseFromSpdxId :: str -> AttrSet
110−
111− Example:
112− lib.getLicenseFromSpdxId "MIT" == lib.licenses.mit
113− => true
114− lib.getLicenseFromSpdxId "mIt" == lib.licenses.mit
115− => true
116− lib.getLicenseFromSpdxId "MY LICENSE"
117− => trace: warning: getLicenseFromSpdxId: No license matches the given SPDX ID: MY LICENSE
118− => { shortName = "MY LICENSE"; }
119− */
120− getLicenseFromSpdxId =
121− let
122− spdxLicenses = lib.mapAttrs (id: ls: assert lib.length ls == 1; builtins.head ls)
123− (lib.groupBy (l: lib.toLower l.spdxId) (lib.filter (l: l ? spdxId) (lib.attrValues lib.licenses)));
124− in licstr:
125− spdxLicenses.${ lib.toLower licstr } or (
126− lib.warn "getLicenseFromSpdxId: No license matches the given SPDX ID: ${licstr}"
127− { shortName = licstr; }
128− );
129−
130− /* Get the path to the main program of a derivation with either
131− meta.mainProgram or pname or name
132−
133− Type: getExe :: derivation -> string
134−
135− Example:
136− getExe pkgs.hello
137− => "/nix/store/g124820p9hlv4lj8qplzxw1c44dxaw1k-hello-2.12/bin/hello"
138− getExe pkgs.mustache-go
139− => "/nix/store/am9ml4f4ywvivxnkiaqwr0hyxka1xjsf-mustache-go-1.3.0/bin/mustache"
140− */
141− getExe = x:
142− "${lib.getBin x}/bin/${x.meta.mainProgram or (lib.getName x)}";
143102}
lib/modules.nix+77−252
@@ -9,10 +9,12 @@ let
99 catAttrs
1010 concatLists
1111 concatMap
12− concatStringsSep
12+ count
1313 elem
1414 filter
1515 findFirst
16+ flip
17+ foldl
1618 foldl'
1719 getAttrFromPath
1820 head
@@ -37,7 +39,6 @@ let
3739 toList
3840 types
3941 warnIf
40− zipAttrsWith
4142 ;
4243 inherit (lib.options)
4344 isOption
@@ -46,22 +47,7 @@ let
4647 showFiles
4748 showOption
4849 unknownModule
49− literalExpression
5050 ;
51−
52− showDeclPrefix = loc: decl: prefix:
53− " - option(s) with prefix `${showOption (loc ++ [prefix])}' in module `${decl._file}'";
54− showRawDecls = loc: decls:
55− concatStringsSep "\n"
56− (sort (a: b: a < b)
57− (concatMap
58− (decl: map
59− (showDeclPrefix loc decl)
60− (attrNames decl.options)
61− )
62− decls
63− ));
64−
6551in
6652
6753rec {
@@ -76,8 +62,6 @@ rec {
7662 ‘type’: A module system type representing the module set as a submodule,
7763 to be extended by configuration from the containing module set.
7864
79− This is also available as the module argument ‘moduleType’.
80−
8165 ‘extendModules’: A function similar to ‘evalModules’ but building on top
8266 of the module set. Its arguments, ‘modules’ and ‘specialArgs’ are
8367 added to the existing values.
@@ -90,8 +74,6 @@ rec {
9074 override existing configuration fundamentally requires a new
9175 fixpoint to be constructed.
9276
93− This is also available as a module argument.
94−
9577 ‘_module’: A portion of the configuration tree which is elided from
9678 ‘config’. It contains some values that are mostly internal to the
9779 module system implementation.
@@ -113,39 +95,13 @@ rec {
11395 args ? {}
11496 , # This would be remove in the future, Prefer _module.check option instead.
11597 check ? true
116− # Internal variable to avoid `_key` collisions regardless
117− # of `extendModules`. Used in `submoduleWith`.
118− # Test case: lib/tests/modules, "168767"
119− , extensionOffset ? 0
12098 }:
12199 let
122− withWarnings = x:
123− lib.warnIf (evalModulesArgs?args) "The args argument to evalModules is deprecated. Please set config._module.args instead."
124− lib.warnIf (evalModulesArgs?check) "The check argument to evalModules is deprecated. Please set config._module.check instead."
125− x;
126−
127− legacyModules =
128− optional (evalModulesArgs?args) {
129− config = {
130− _module.args = args;
131− };
132− }
133− ++ optional (evalModulesArgs?check) {
134− config = {
135− _module.check = mkDefault check;
136− };
137− };
138− regularModules = modules ++ legacyModules;
139−
140100 # This internal module declare internal options under the `_module'
141101 # attribute. These options are fragile, as they are used by the
142102 # module system to change the interpretation of modules.
143− #
144− # When extended with extendModules or moduleType, a fresh instance of
145− # this module is used, to avoid conflicts and allow chaining of
146− # extendModules.
147103 internalModule = rec {
148− _file = "lib/modules.nix";
104+ _file = ./modules.nix;
149105
150106 key = _file;
151107
@@ -157,106 +113,21 @@ rec {
157113 # support for that, in turn it's lazy in its values. This means e.g.
158114 # a `_module.args.pkgs = import (fetchTarball { ... }) {}` won't
159115 # start a download when `pkgs` wasn't evaluated.
160− type = types.lazyAttrsOf types.raw;
161− # Only render documentation once at the root of the option tree,
162− # not for all individual submodules.
163− # Allow merging option decls to make this internal regardless.
164− ${if prefix == []
165− then null # unset => visible
166− else "internal"} = true;
167− # TODO: Change the type of this option to a submodule with a
168− # freeformType, so that individual arguments can be documented
169− # separately
170− description = ''
171− Additional arguments passed to each module in addition to ones
172− like <literal>lib</literal>, <literal>config</literal>,
173− and <literal>pkgs</literal>, <literal>modulesPath</literal>.
174− </para>
175− <para>
176− This option is also available to all submodules. Submodules do not
177− inherit args from their parent module, nor do they provide args to
178− their parent module or sibling submodules. The sole exception to
179− this is the argument <literal>name</literal> which is provided by
180− parent modules to a submodule and contains the attribute name
181− the submodule is bound to, or a unique generated name if it is
182− not bound to an attribute.
183− </para>
184− <para>
185− Some arguments are already passed by default, of which the
186− following <emphasis>cannot</emphasis> be changed with this option:
187− <itemizedlist>
188− <listitem>
189− <para>
190− <varname>lib</varname>: The nixpkgs library.
191− </para>
192− </listitem>
193− <listitem>
194− <para>
195− <varname>config</varname>: The results of all options after merging the values from all modules together.
196− </para>
197− </listitem>
198− <listitem>
199− <para>
200− <varname>options</varname>: The options declared in all modules.
201− </para>
202− </listitem>
203− <listitem>
204− <para>
205− <varname>specialArgs</varname>: The <literal>specialArgs</literal> argument passed to <literal>evalModules</literal>.
206− </para>
207− </listitem>
208− <listitem>
209− <para>
210− All attributes of <varname>specialArgs</varname>
211− </para>
212− <para>
213− Whereas option values can generally depend on other option values
214− thanks to laziness, this does not apply to <literal>imports</literal>, which
215− must be computed statically before anything else.
216− </para>
217− <para>
218− For this reason, callers of the module system can provide <literal>specialArgs</literal>
219− which are available during import resolution.
220− </para>
221− <para>
222− For NixOS, <literal>specialArgs</literal> includes
223− <varname>modulesPath</varname>, which allows you to import
224− extra modules from the nixpkgs package tree without having to
225− somehow make the module aware of the location of the
226− <literal>nixpkgs</literal> or NixOS directories.
227− <programlisting>
228− { modulesPath, ... }: {
229− imports = [
230− (modulesPath + "/profiles/minimal.nix")
231− ];
232− }
233− </programlisting>
234− </para>
235− </listitem>
236− </itemizedlist>
237− </para>
238− <para>
239− For NixOS, the default value for this option includes at least this argument:
240− <itemizedlist>
241− <listitem>
242− <para>
243− <varname>pkgs</varname>: The nixpkgs package set according to
244− the <option>nixpkgs.pkgs</option> option.
245− </para>
246− </listitem>
247− </itemizedlist>
248− '';
116+ type = types.lazyAttrsOf types.unspecified;
117+ internal = true;
118+ description = "Arguments passed to each module.";
249119 };
250120
251121 _module.check = mkOption {
252122 type = types.bool;
253123 internal = true;
254− default = true;
124+ default = check;
255125 description = "Whether to check whether all option definitions have matching declarations.";
256126 };
257127
258128 _module.freeformType = mkOption {
259− type = types.nullOr types.optionType;
129+ # Disallow merging for now, but could be implemented nicely with a `types.optionType`
130+ type = types.nullOr (types.uniq types.attrs);
260131 internal = true;
261132 default = null;
262133 description = ''
@@ -275,15 +146,14 @@ rec {
275146 config = {
276147 _module.args = {
277148 inherit extendModules;
278− moduleType = type;
279− };
149+ } // args;
280150 };
281151 };
282152
283153 merged =
284154 let collected = collectModules
285155 (specialArgs.modulesPath or "")
286− (regularModules ++ [ internalModule ])
156+ (modules ++ [ internalModule ])
287157 ({ inherit lib options config specialArgs; } // specialArgs);
288158 in mergeModules prefix (reverseList collected);
289159
@@ -345,20 +215,18 @@ rec {
345215 modules ? [],
346216 specialArgs ? {},
347217 prefix ? [],
348− extensionOffset ? length modules,
349218 }:
350219 evalModules (evalModulesArgs // {
351− modules = regularModules ++ modules;
220+ modules = evalModulesArgs.modules ++ modules;
352221 specialArgs = evalModulesArgs.specialArgs or {} // specialArgs;
353222 prefix = extendArgs.prefix or evalModulesArgs.prefix;
354− inherit extensionOffset;
355223 });
356224
357225 type = lib.types.submoduleWith {
358− inherit modules specialArgs extensionOffset;
226+ inherit modules specialArgs;
359227 };
360228
361− result = withWarnings {
229+ result = {
362230 options = checked options;
363231 config = checked (removeAttrs config [ "_module" ]);
364232 _module = checked (config._module);
@@ -375,11 +243,11 @@ rec {
375243 # Like unifyModuleSyntax, but also imports paths and calls functions if necessary
376244 loadModule = args: fallbackFile: fallbackKey: m:
377245 if isFunction m || isAttrs m then
378− unifyModuleSyntax fallbackFile fallbackKey (applyModuleArgsIfFunction fallbackKey m args)
246+ unifyModuleSyntax fallbackFile fallbackKey (applyIfFunction fallbackKey m args)
379247 else if isList m then
380248 let defs = [{ file = fallbackFile; value = m; }]; in
381249 throw "Module imports can't be nested lists. Perhaps you meant to remove one level of lists? Definitions: ${showDefs defs}"
382− else unifyModuleSyntax (toString m) (toString m) (applyModuleArgsIfFunction (toString m) (import m) args);
250+ else unifyModuleSyntax (toString m) (toString m) (applyIfFunction (toString m) (import m) args);
383251
384252 /*
385253 Collects all modules recursively into the form
@@ -440,10 +308,6 @@ rec {
440308 in modulesPath: initialModules: args:
441309 filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args);
442310
443− /* Wrap a module with a default location for reporting errors. */
444− setDefaultModuleLocation = file: m:
445− { _file = file; imports = [ m ]; };
446−
447311 /* Massage a module into canonical form, that is, a set consisting
448312 of ‘options’, ‘config’ and ‘imports’ attributes. */
449313 unifyModuleSyntax = file: key: m:
@@ -476,7 +340,7 @@ rec {
476340 config = addFreeformType (addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports" "freeformType"]));
477341 };
478342
479− applyModuleArgsIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
343+ applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
480344 let
481345 # Module arguments are resolved in a strict manner when attribute set
482346 # deconstruction is used. As the arguments are now defined with the
@@ -553,11 +417,10 @@ rec {
553417 }
554418 */
555419 byName = attr: f: modules:
556− zipAttrsWith (n: concatLists)
557− (map (module: let subtree = module.${attr}; in
558− if !(builtins.isAttrs subtree) then
420+ foldl' (acc: module:
421+ if !(builtins.isAttrs module.${attr}) then
559422 throw ''
560− You're trying to declare a value of type `${builtins.typeOf subtree}'
423+ You're trying to declare a value of type `${builtins.typeOf module.${attr}}'
561424 rather than an attribute-set for the option
562425 `${builtins.concatStringsSep "." prefix}'!
563426
@@ -566,8 +429,11 @@ rec {
566429 this option by e.g. referring to `man 5 configuration.nix'!
567430 ''
568431 else
569− mapAttrs (n: f module) subtree
570− ) modules);
432+ acc // (mapAttrs (n: v:
433+ (acc.${n} or []) ++ f module v
434+ ) module.${attr}
435+ )
436+ ) {} modules;
571437 # an attrset 'name' => list of submodules that declare ‘name’.
572438 declsByName = byName "options" (module: option:
573439 [{ inherit (module) _file; options = option; }]
@@ -581,63 +447,28 @@ rec {
581447 [{ inherit (module) file; inherit value; }]
582448 ) configs;
583449
584− # Convert an option tree decl to a submodule option decl
585− optionTreeToOption = decl:
586− if isOption decl.options
587− then decl
588− else decl // {
589− options = mkOption {
590− type = types.submoduleWith {
591− modules = [ { options = decl.options; } ];
592− # `null` is not intended for use by modules. It is an internal
593− # value that means "whatever the user has declared elsewhere".
594− # This might become obsolete with https://github.com/NixOS/nixpkgs/issues/162398
595− shorthandOnlyDefinesConfig = null;
596− };
597− };
598− };
599−
600− resultsByName = mapAttrs (name: decls:
450+ resultsByName = flip mapAttrs declsByName (name: decls:
601451 # We're descending into attribute ‘name’.
602452 let
603453 loc = prefix ++ [name];
604454 defns = defnsByName.${name} or [];
605455 defns' = defnsByName'.${name} or [];
606− optionDecls = filter (m: isOption m.options) decls;
456+ nrOptions = count (m: isOption m.options) decls;
607457 in
608− if length optionDecls == length decls then
458+ if nrOptions == length decls then
609459 let opt = fixupOptionType loc (mergeOptionDecls loc decls);
610460 in {
611461 matchedOptions = evalOptionValue loc opt defns';
612462 unmatchedDefns = [];
613463 }
614− else if optionDecls != [] then
615− if all (x: x.options.type.name == "submodule") optionDecls
616− # Raw options can only be merged into submodules. Merging into
617− # attrsets might be nice, but ambiguous. Suppose we have
618− # attrset as a `attrsOf submodule`. User declares option
619− # attrset.foo.bar, this could mean:
620− # a. option `bar` is only available in `attrset.foo`
621− # b. option `foo.bar` is available in all `attrset.*`
622− # c. reject and require "<name>" as a reminder that it behaves like (b).
623− # d. magically combine (a) and (c).
624− # All of the above are merely syntax sugar though.
625− then
626− let opt = fixupOptionType loc (mergeOptionDecls loc (map optionTreeToOption decls));
627− in {
628− matchedOptions = evalOptionValue loc opt defns';
629− unmatchedDefns = [];
630− }
631− else
632− let
633− firstNonOption = findFirst (m: !isOption m.options) "" decls;
634− nonOptions = filter (m: !isOption m.options) decls;
635− in
636− throw "The option `${showOption loc}' in module `${(lib.head optionDecls)._file}' would be a parent of the following options, but its type `${(lib.head optionDecls).options.type.description or "<no description>"}' does not support nested options.\n${
637− showRawDecls loc nonOptions
638− }"
464+ else if nrOptions != 0 then
465+ let
466+ firstOption = findFirst (m: isOption m.options) "" decls;
467+ firstNonOption = findFirst (m: !isOption m.options) "" decls;
468+ in
469+ throw "The option `${showOption loc}' in `${firstOption._file}' is a prefix of options in `${firstNonOption._file}'."
639470 else
640− mergeModules' loc decls defns) declsByName;
471+ mergeModules' loc decls defns);
641472
642473 matchedOptions = mapAttrs (n: v: v.matchedOptions) resultsByName;
643474
@@ -651,19 +482,12 @@ rec {
651482 inherit matchedOptions;
652483
653484 # Transforms unmatchedDefnsByName into a list of definitions
654− unmatchedDefns =
655− if configs == []
656− then
657− # When no config values exist, there can be no unmatched config, so
658− # we short circuit and avoid evaluating more _options_ than necessary.
659− []
660− else
661− concatLists (mapAttrsToList (name: defs:
662− map (def: def // {
663− # Set this so we know when the definition first left unmatched territory
664− prefix = [name] ++ (def.prefix or []);
665− }) defs
666− ) unmatchedDefnsByName);
485+ unmatchedDefns = concatLists (mapAttrsToList (name: defs:
486+ map (def: def // {
487+ # Set this so we know when the definition first left unmatched territory
488+ prefix = [name] ++ (def.prefix or []);
489+ }) defs
490+ ) unmatchedDefnsByName);
667491 };
668492
669493 /* Merge multiple option declarations into a single declaration. In
@@ -679,9 +503,11 @@ rec {
679503 correspond to the definition of 'loc' in 'opt.file'. */
680504 mergeOptionDecls =
681505 let
506+ packSubmodule = file: m:
507+ { _file = file; imports = [ m ]; };
682508 coerceOption = file: opt:
683− if isFunction opt then setDefaultModuleLocation file opt
684− else setDefaultModuleLocation file { options = opt; };
509+ if isFunction opt then packSubmodule file opt
510+ else packSubmodule file { options = opt; };
685511 in loc: opts:
686512 foldl' (res: opt:
687513 let t = res.type;
@@ -702,9 +528,17 @@ rec {
702528 throw "The option `${showOption loc}' in `${opt._file}' is already declared in ${showFiles res.declarations}."
703529 else
704530 let
531+ /* Add the modules of the current option to the list of modules
532+ already collected. The options attribute except either a list of
533+ submodules or a submodule. For each submodule, we add the file of the
534+ current option declaration as the file use for the submodule. If the
535+ submodule defines any filename, then we ignore the enclosing option file. */
536+ options' = toList opt.options.options;
537+
705538 getSubModules = opt.options.type.getSubModules or null;
706539 submodules =
707− if getSubModules != null then map (setDefaultModuleLocation opt._file) getSubModules ++ res.options
540+ if getSubModules != null then map (packSubmodule opt._file) getSubModules ++ res.options
541+ else if opt.options ? options then map (coerceOption opt._file) options' ++ res.options
708542 else res.options;
709543 in opt.options // res //
710544 { declarations = res.declarations ++ [opt._file];
@@ -748,8 +582,6 @@ rec {
748582 definitions = map (def: def.value) res.defsFinal;
749583 files = map (def: def.file) res.defsFinal;
750584 inherit (res) isDefined;
751− # This allows options to be correctly displayed using `${options.path.to.it}`
752− __toString = _: showOption loc;
753585 };
754586
755587 # Merge definitions of a value of a given type.
@@ -887,13 +719,26 @@ rec {
887719 compare = a: b: (a.priority or 1000) < (b.priority or 1000);
888720 in sort compare defs';
889721
890− # This calls substSubModules, whose entire purpose is only to ensure that
891− # option declarations in submodules have accurate position information.
892− # TODO: Merge this into mergeOptionDecls
722+ /* Hack for backward compatibility: convert options of type
723+ optionSet to options of type submodule. FIXME: remove
724+ eventually. */
893725 fixupOptionType = loc: opt:
894− if opt.type.getSubModules or null == null
895− then opt // { type = opt.type or types.unspecified; }
896− else opt // { type = opt.type.substSubModules opt.options; options = []; };
726+ let
727+ options = opt.options or
728+ (throw "Option `${showOption loc}' has type optionSet but has no option attribute, in ${showFiles opt.declarations}.");
729+ f = tp:
730+ let optionSetIn = type: (tp.name == type) && (tp.functor.wrapped.name == "optionSet");
731+ in
732+ if tp.name == "option set" || tp.name == "submodule" then
733+ throw "The option ${showOption loc} uses submodules without a wrapping type, in ${showFiles opt.declarations}."
734+ else if optionSetIn "attrsOf" then types.attrsOf (types.submodule options)
735+ else if optionSetIn "listOf" then types.listOf (types.submodule options)
736+ else if optionSetIn "nullOr" then types.nullOr (types.submodule options)
737+ else tp;
738+ in
739+ if opt.type.getSubModules or null == null
740+ then opt // { type = f (opt.type or types.unspecified); }
741+ else opt // { type = opt.type.substSubModules opt.options; options = []; };
897742
898743
899744 /* Properties. */
@@ -1025,26 +870,6 @@ rec {
1025870 use = builtins.trace "Obsolete option `${showOption from}' is used. It was renamed to `${showOption to}'.";
1026871 };
1027872
1028− mkRenamedOptionModuleWith = {
1029− /* Old option path as list of strings. */
1030− from,
1031− /* New option path as list of strings. */
1032− to,
1033−
1034− /*
1035− Release number of the first release that contains the rename, ignoring backports.
1036− Set it to the upcoming release, matching the nixpkgs/.version file.
1037− */
1038− sinceRelease,
1039−
1040− }: doRename {
1041− inherit from to;
1042− visible = false;
1043− warn = lib.isInOldestRelease sinceRelease;
1044− use = lib.warnIf (lib.isInOldestRelease sinceRelease)
1045− "Obsolete option `${showOption from}' is used. It was renamed to `${showOption to}'.";
1046− };
1047−
1048873 /* Return a module that causes a warning to be shown if any of the "from"
1049874 option is defined; the defined values can be used in the "mergeFn" to set
1050875 the "to" value.
@@ -1076,7 +901,7 @@ rec {
1076901 mkMergedOptionModule = from: to: mergeFn:
1077902 { config, options, ... }:
1078903 {
1079− options = foldl' recursiveUpdate {} (map (path: setAttrByPath path (mkOption {
904+ options = foldl recursiveUpdate {} (map (path: setAttrByPath path (mkOption {
1080905 visible = false;
1081906 # To use the value in mergeFn without triggering errors
1082907 default = "_mkMergedOptionModule";
@@ -1180,7 +1005,7 @@ rec {
11801005
11811006 /* Use this function to import a JSON file as NixOS configuration.
11821007
1183− modules.importJSON :: path -> attrs
1008+ importJSON -> path -> attrs
11841009 */
11851010 importJSON = file: {
11861011 _file = file;
@@ -1189,7 +1014,7 @@ rec {
11891014
11901015 /* Use this function to import a TOML file as NixOS configuration.
11911016
1192− modules.importTOML :: path -> attrs
1017+ importTOML -> path -> attrs
11931018 */
11941019 importTOML = file: {
11951020 _file = file;
lib/options.nix+9−53
@@ -26,7 +26,6 @@ let
2626 take
2727 ;
2828 inherit (lib.attrsets)
29− attrByPath
3029 optionalAttrs
3130 ;
3231 inherit (lib.strings)
@@ -79,6 +78,8 @@ rec {
7978 visible ? null,
8079 # Whether the option can be set only once
8180 readOnly ? null,
81+ # Deprecated, used by types.optionSet.
82+ options ? null
8283 } @ attrs:
8384 attrs // { _type = "option"; };
8485
@@ -98,49 +99,6 @@ rec {
9899 type = lib.types.bool;
99100 };
100101
101− /* Creates an Option attribute set for an option that specifies the
102− package a module should use for some purpose.
103−
104− Type: mkPackageOption :: pkgs -> string -> { default :: [string], example :: null | string | [string] } -> option
105−
106− The package is specified as a list of strings representing its attribute path in nixpkgs.
107−
108− Because of this, you need to pass nixpkgs itself as the first argument.
109−
110− The second argument is the name of the option, used in the description "The <name> package to use.".
111−
112− You can also pass an example value, either a literal string or a package's attribute path.
113−
114− You can omit the default path if the name of the option is also attribute path in nixpkgs.
115−
116− Example:
117− mkPackageOption pkgs "hello" { }
118− => { _type = "option"; default = «derivation /nix/store/3r2vg51hlxj3cx5vscp0vkv60bqxkaq0-hello-2.10.drv»; defaultText = { ... }; description = "The hello package to use."; type = { ... }; }
119−
120− Example:
121− mkPackageOption pkgs "GHC" {
122− default = [ "ghc" ];
123− example = "pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])";
124− }
125− => { _type = "option"; default = «derivation /nix/store/jxx55cxsjrf8kyh3fp2ya17q99w7541r-ghc-8.10.7.drv»; defaultText = { ... }; description = "The GHC package to use."; example = { ... }; type = { ... }; }
126− */
127− mkPackageOption =
128− # Package set (a specific version of nixpkgs)
129− pkgs:
130− # Name for the package, shown in option description
131− name:
132− { default ? [ name ], example ? null }:
133− let default' = if !isList default then [ default ] else default;
134− in mkOption {
135− type = lib.types.package;
136− description = "The ${name} package to use.";
137− default = attrByPath default'
138− (throw "${concatStringsSep "." default'} cannot be found in pkgs") pkgs;
139− defaultText = literalExpression ("pkgs." + concatStringsSep "." default');
140− ${if example != null then "example" else null} = literalExpression
141− (if isList example then "pkgs." + concatStringsSep "." example else example);
142− };
143−
144102 /* This option accepts anything, but it does not produce any result.
145103
146104 This is useful for sharing a module across different module sets
@@ -170,13 +128,11 @@ rec {
170128 else if all isInt list && all (x: x == head list) list then head list
171129 else throw "Cannot merge definitions of `${showOption loc}'. Definition values:${showDefs defs}";
172130
173− mergeOneOption = mergeUniqueOption { message = ""; };
174−
175− mergeUniqueOption = { message }: loc: defs:
176− if length defs == 1
177− then (head defs).value
178− else assert length defs > 1;
179− throw "The option `${showOption loc}' is defined multiple times.\n${message}\nDefinition values:${showDefs defs}";
131+ mergeOneOption = loc: defs:
132+ if defs == [] then abort "This case should never happen."
133+ else if length defs != 1 then
134+ throw "The unique option `${showOption loc}' is defined multiple times. Definition values:${showDefs defs}"
135+ else (head defs).value;
180136
181137 /* "Merge" option definitions by checking that they all have the same value. */
182138 mergeEqualOption = loc: defs:
@@ -221,7 +177,7 @@ rec {
221177 docOption = rec {
222178 loc = opt.loc;
223179 name = showOption opt.loc;
224− description = opt.description or null;
180+ description = opt.description or (lib.warn "Option `${name}' has no description." "This option has no description.");
225181 declarations = filter (x: x != unknownModule) opt.declarations;
226182 internal = opt.internal or false;
227183 visible =
@@ -229,7 +185,7 @@ rec {
229185 then true
230186 else opt.visible or true;
231187 readOnly = opt.readOnly or false;
232− type = opt.type.description or "unspecified";
188+ type = opt.type.description or null;
233189 }
234190 // optionalAttrs (opt ? example) { example = scrubOptionValue opt.example; }
235191 // optionalAttrs (opt ? default) { default = scrubOptionValue opt.default; }
lib/sources.nix+48−67
@@ -20,26 +20,17 @@ let
2020 readFile
2121 ;
2222
23− /*
24− Returns the type of a path: regular (for file), symlink, or directory.
25− */
26− pathType = path: getAttr (baseNameOf path) (readDir (dirOf path));
23+ # Returns the type of a path: regular (for file), symlink, or directory
24+ pathType = p: getAttr (baseNameOf p) (readDir (dirOf p));
2725
28− /*
29− Returns true if the path exists and is a directory, false otherwise.
30− */
31− pathIsDirectory = path: if pathExists path then (pathType path) == "directory" else false;
26+ # Returns true if the path exists and is a directory, false otherwise
27+ pathIsDirectory = p: if pathExists p then (pathType p) == "directory" else false;
3228
33− /*
34− Returns true if the path exists and is a regular file, false otherwise.
35− */
36− pathIsRegularFile = path: if pathExists path then (pathType path) == "regular" else false;
29+ # Returns true if the path exists and is a regular file, false otherwise
30+ pathIsRegularFile = p: if pathExists p then (pathType p) == "regular" else false;
3731
38− /*
39− A basic filter for `cleanSourceWith` that removes
40− directories of version control system, backup files (*~)
41− and some generated files.
42− */
32+ # Bring in a path as a source, filtering out all Subversion and CVS
33+ # directories, as well as backup files (*~).
4334 cleanSourceFilter = name: type: let baseName = baseNameOf (toString name); in ! (
4435 # Filter out version control software files/directories
4536 (baseName == ".git" || type == "directory" && (baseName == ".svn" || baseName == "CVS" || baseName == ".hg")) ||
@@ -57,48 +48,43 @@ let
5748 (type == "unknown")
5849 );
5950
60− /*
61− Filters a source tree removing version control files and directories using cleanSourceFilter.
62−
63− Example:
64− cleanSource ./.
65− */
51+ # Filters a source tree removing version control files and directories using cleanSourceWith
52+ #
53+ # Example:
54+ # cleanSource ./.
6655 cleanSource = src: cleanSourceWith { filter = cleanSourceFilter; inherit src; };
6756
68− /*
69− Like `builtins.filterSource`, except it will compose with itself,
70− allowing you to chain multiple calls together without any
71− intermediate copies being put in the nix store.
72−
73− Example:
74− lib.cleanSourceWith {
75− filter = f;
76− src = lib.cleanSourceWith {
77− filter = g;
78− src = ./.;
79− };
80− }
81− # Succeeds!
82−
83− builtins.filterSource f (builtins.filterSource g ./.)
84− # Fails!
85−
86− */
87− cleanSourceWith =
88− {
89− # A path or cleanSourceWith result to filter and/or rename.
90− src,
91− # Optional with default value: constant true (include everything)
92− # The function will be combined with the && operator such
93− # that src.filter is called lazily.
94− # For implementing a filter, see
95− # https://nixos.org/nix/manual/#builtin-filterSource
96− # Type: A function (path -> type -> bool)
97− filter ? _path: _type: true,
98− # Optional name to use as part of the store path.
99− # This defaults to `src.name` or otherwise `"source"`.
100− name ? null
101− }:
57+ # Like `builtins.filterSource`, except it will compose with itself,
58+ # allowing you to chain multiple calls together without any
59+ # intermediate copies being put in the nix store.
60+ #
61+ # lib.cleanSourceWith {
62+ # filter = f;
63+ # src = lib.cleanSourceWith {
64+ # filter = g;
65+ # src = ./.;
66+ # };
67+ # }
68+ # # Succeeds!
69+ #
70+ # builtins.filterSource f (builtins.filterSource g ./.)
71+ # # Fails!
72+ #
73+ # Parameters:
74+ #
75+ # src: A path or cleanSourceWith result to filter and/or rename.
76+ #
77+ # filter: A function (path -> type -> bool)
78+ # Optional with default value: constant true (include everything)
79+ # The function will be combined with the && operator such
80+ # that src.filter is called lazily.
81+ # For implementing a filter, see
82+ # https://nixos.org/nix/manual/#builtin-filterSource
83+ #
84+ # name: Optional name to use as part of the store path.
85+ # This defaults to `src.name` or otherwise `"source"`.
86+ #
87+ cleanSourceWith = { filter ? _path: _type: true, src, name ? null }:
10288 let
10389 orig = toSourceAttributes src;
10490 in fromSourceAttributes {
@@ -130,11 +116,9 @@ let
130116 satisfiesSubpathInvariant = src ? satisfiesSubpathInvariant && src.satisfiesSubpathInvariant;
131117 };
132118
133− /*
134− Filter sources by a list of regular expressions.
135−
136− Example: src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]
137− */
119+ # Filter sources by a list of regular expressions.
120+ #
121+ # E.g. `src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]`
138122 sourceByRegex = src: regexes:
139123 let
140124 isFiltered = src ? _isLibCleanSourceWith;
@@ -169,11 +153,8 @@ let
169153
170154 pathIsGitRepo = path: (tryEval (commitIdFromGitRepo path)).success;
171155
172− /*
173− Get the commit id of a git repo.
174−
175− Example: commitIdFromGitRepo <nixpkgs/.git>
176− */
156+ # Get the commit id of a git repo
157+ # Example: commitIdFromGitRepo <nixpkgs/.git>
177158 commitIdFromGitRepo =
178159 let readCommitFromFile = file: path:
179160 let fileName = toString path + "/" + file;
lib/strings.nix+5−196
@@ -17,7 +17,6 @@ rec {
1717 head
1818 isInt
1919 isList
20− isAttrs
2120 isString
2221 match
2322 parseDrvName
@@ -254,7 +253,10 @@ rec {
254253 => false
255254 */
256255 hasInfix = infix: content:
257− builtins.match ".*${escapeRegex infix}.*" "${content}" != null;
256+ let
257+ drop = x: substring 1 (stringLength x) x;
258+ in hasPrefix infix content
259+ || content != "" && hasInfix infix (drop content);
258260
259261 /* Convert a string to a list of characters (i.e. singleton strings).
260262 This allows you to, e.g., map a function over each character. However,
@@ -325,65 +327,6 @@ rec {
325327 */
326328 escapeShellArgs = concatMapStringsSep " " escapeShellArg;
327329
328− /* Test whether the given name is a valid POSIX shell variable name.
329−
330− Type: string -> bool
331−
332− Example:
333− isValidPosixName "foo_bar000"
334− => true
335− isValidPosixName "0-bad.jpg"
336− => false
337− */
338− isValidPosixName = name: match "[a-zA-Z_][a-zA-Z0-9_]*" name != null;
339−
340− /* Translate a Nix value into a shell variable declaration, with proper escaping.
341−
342− Supported value types are strings (mapped to regular variables), lists of strings
343− (mapped to Bash-style arrays) and attribute sets of strings (mapped to Bash-style
344− associative arrays). Note that "strings" include string-coercible values like paths.
345−
346− Strings are translated into POSIX sh-compatible code; lists and attribute sets
347− assume a shell that understands Bash syntax (e.g. Bash or ZSH).
348−
349− Type: string -> (string | listOf string | attrsOf string) -> string
350−
351− Example:
352− ''
353− ${toShellVar "foo" "some string"}
354− [[ "$foo" == "some string" ]]
355− ''
356− */
357− toShellVar = name: value:
358− lib.throwIfNot (isValidPosixName name) "toShellVar: ${name} is not a valid shell variable name" (
359− if isAttrs value then
360− "declare -A ${name}=(${
361− concatStringsSep " " (lib.mapAttrsToList (n: v:
362− "[${escapeShellArg n}]=${escapeShellArg v}"
363− ) value)
364− })"
365− else if isList value then
366− "declare -a ${name}=(${escapeShellArgs value})"
367− else
368− "${name}=${escapeShellArg value}"
369− );
370−
371− /* Translate an attribute set into corresponding shell variable declarations
372− using `toShellVar`.
373−
374− Type: attrsOf (string | listOf string | attrsOf string) -> string
375−
376− Example:
377− let
378− foo = "value";
379− bar = foo;
380− in ''
381− ${toShellVars { inherit foo bar; }}
382− [[ "$foo" == "$bar" ]]
383− ''
384− */
385− toShellVars = vars: concatStringsSep "\n" (lib.mapAttrsToList toShellVar vars);
386−
387330 /* Turn a string into a Nix expression representing that string
388331
389332 Type: string -> string
@@ -813,14 +756,7 @@ rec {
813756 sanitizeDerivationName pkgs.hello
814757 => "-nix-store-2g75chlbpxlrqn15zlby2dfh8hr9qwbk-hello-2.10"
815758 */
816− sanitizeDerivationName =
817− let okRegex = match "[[:alnum:]+_?=-][[:alnum:]+._?=-]*";
818− in
819− string:
820− # First detect the common case of already valid strings, to speed those up
821− if stringLength string <= 207 && okRegex string != null
822− then unsafeDiscardStringContext string
823− else lib.pipe string [
759+ sanitizeDerivationName = string: lib.pipe string [
824760 # Get rid of string context. This is safe under the assumption that the
825761 # resulting string is only used as a derivation name
826762 unsafeDiscardStringContext
@@ -838,131 +774,4 @@ rec {
838774 (x: if stringLength x == 0 then "unknown" else x)
839775 ];
840776
841− /* Computes the Levenshtein distance between two strings.
842− Complexity O(n*m) where n and m are the lengths of the strings.
843− Algorithm adjusted from https://stackoverflow.com/a/9750974/6605742
844−
845− Type: levenshtein :: string -> string -> int
846−
847− Example:
848− levenshtein "foo" "foo"
849− => 0
850− levenshtein "book" "hook"
851− => 1
852− levenshtein "hello" "Heyo"
853− => 3
854− */
855− levenshtein = a: b: let
856− # Two dimensional array with dimensions (stringLength a + 1, stringLength b + 1)
857− arr = lib.genList (i:
858− lib.genList (j:
859− dist i j
860− ) (stringLength b + 1)
861− ) (stringLength a + 1);
862− d = x: y: lib.elemAt (lib.elemAt arr x) y;
863− dist = i: j:
864− let c = if substring (i - 1) 1 a == substring (j - 1) 1 b
865− then 0 else 1;
866− in
867− if j == 0 then i
868− else if i == 0 then j
869− else lib.min
870− ( lib.min (d (i - 1) j + 1) (d i (j - 1) + 1))
871− ( d (i - 1) (j - 1) + c );
872− in d (stringLength a) (stringLength b);
873−
874− /* Returns the length of the prefix common to both strings.
875− */
876− commonPrefixLength = a: b:
877− let
878− m = lib.min (stringLength a) (stringLength b);
879− go = i: if i >= m then m else if substring i 1 a == substring i 1 b then go (i + 1) else i;
880− in go 0;
881−
882− /* Returns the length of the suffix common to both strings.
883− */
884− commonSuffixLength = a: b:
885− let
886− m = lib.min (stringLength a) (stringLength b);
887− go = i: if i >= m then m else if substring (stringLength a - i - 1) 1 a == substring (stringLength b - i - 1) 1 b then go (i + 1) else i;
888− in go 0;
889−
890− /* Returns whether the levenshtein distance between two strings is at most some value
891− Complexity is O(min(n,m)) for k <= 2 and O(n*m) otherwise
892−
893− Type: levenshteinAtMost :: int -> string -> string -> bool
894−
895− Example:
896− levenshteinAtMost 0 "foo" "foo"
897− => true
898− levenshteinAtMost 1 "foo" "boa"
899− => false
900− levenshteinAtMost 2 "foo" "boa"
901− => true
902− levenshteinAtMost 2 "This is a sentence" "this is a sentense."
903− => false
904− levenshteinAtMost 3 "This is a sentence" "this is a sentense."
905− => true
906−
907− */
908− levenshteinAtMost = let
909− infixDifferAtMost1 = x: y: stringLength x <= 1 && stringLength y <= 1;
910−
911− # This function takes two strings stripped by their common pre and suffix,
912− # and returns whether they differ by at most two by Levenshtein distance.
913− # Because of this stripping, if they do indeed differ by at most two edits,
914− # we know that those edits were (if at all) done at the start or the end,
915− # while the middle has to have stayed the same. This fact is used in the
916− # implementation.
917− infixDifferAtMost2 = x: y:
918− let
919− xlen = stringLength x;
920− ylen = stringLength y;
921− # This function is only called with |x| >= |y| and |x| - |y| <= 2, so
922− # diff is one of 0, 1 or 2
923− diff = xlen - ylen;
924−
925− # Infix of x and y, stripped by the left and right most character
926− xinfix = substring 1 (xlen - 2) x;
927− yinfix = substring 1 (ylen - 2) y;
928−
929− # x and y but a character deleted at the left or right
930− xdelr = substring 0 (xlen - 1) x;
931− xdell = substring 1 (xlen - 1) x;
932− ydelr = substring 0 (ylen - 1) y;
933− ydell = substring 1 (ylen - 1) y;
934− in
935− # A length difference of 2 can only be gotten with 2 delete edits,
936− # which have to have happened at the start and end of x
937− # Example: "abcdef" -> "bcde"
938− if diff == 2 then xinfix == y
939− # A length difference of 1 can only be gotten with a deletion on the
940− # right and a replacement on the left or vice versa.
941− # Example: "abcdef" -> "bcdez" or "zbcde"
942− else if diff == 1 then xinfix == ydelr || xinfix == ydell
943− # No length difference can either happen through replacements on both
944− # sides, or a deletion on the left and an insertion on the right or
945− # vice versa
946− # Example: "abcdef" -> "zbcdez" or "bcdefz" or "zabcde"
947− else xinfix == yinfix || xdelr == ydell || xdell == ydelr;
948−
949− in k: if k <= 0 then a: b: a == b else
950− let f = a: b:
951− let
952− alen = stringLength a;
953− blen = stringLength b;
954− prelen = commonPrefixLength a b;
955− suflen = commonSuffixLength a b;
956− presuflen = prelen + suflen;
957− ainfix = substring prelen (alen - presuflen) a;
958− binfix = substring prelen (blen - presuflen) b;
959− in
960− # Make a be the bigger string
961− if alen < blen then f b a
962− # If a has over k more characters than b, even with k deletes on a, b can't be reached
963− else if alen - blen > k then false
964− else if k == 1 then infixDifferAtMost1 ainfix binfix
965− else if k == 2 then infixDifferAtMost2 ainfix binfix
966− else levenshtein ainfix binfix <= k;
967− in f;
968777}
lib/systems/default.nix+1−2
@@ -105,8 +105,7 @@ rec {
105105 else if final.isAarch64 then "arm64"
106106 else if final.isx86_32 then "i386"
107107 else if final.isx86_64 then "x86_64"
108− else if final.isMips32 then "mips"
109− else if final.isMips64 then "mips" # linux kernel does not distinguish mips32/mips64
108+ else if final.isMips then "mips"
110109 else if final.isPower then "powerpc"
111110 else if final.isRiscV then "riscv"
112111 else if final.isS390 then "s390"
lib/systems/doubles.nix+4−10
@@ -26,7 +26,7 @@ let
2626
2727 # Linux
2828 "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux"
29− "armv7l-linux" "i686-linux" "m68k-linux" "mipsel-linux" "mips64el-linux"
29+ "armv7l-linux" "i686-linux" "m68k-linux" "mipsel-linux"
3030 "powerpc64-linux" "powerpc64le-linux" "riscv32-linux"
3131 "riscv64-linux" "s390-linux" "s390x-linux" "x86_64-linux"
3232
@@ -39,8 +39,8 @@ let
3939 "riscv32-netbsd" "riscv64-netbsd" "x86_64-netbsd"
4040
4141 # none
42− "aarch64_be-none" "aarch64-none" "arm-none" "armv6l-none" "avr-none" "i686-none"
43− "msp430-none" "or1k-none" "m68k-none" "powerpc-none" "powerpcle-none"
42+ "aarch64-none" "arm-none" "armv6l-none" "avr-none" "i686-none"
43+ "msp430-none" "or1k-none" "m68k-none" "powerpc-none"
4444 "riscv32-none" "riscv64-none" "s390-none" "s390x-none" "vc4-none"
4545 "x86_64-none"
4646
@@ -74,8 +74,6 @@ in {
7474 mips = filterDoubles predicates.isMips;
7575 mmix = filterDoubles predicates.isMmix;
7676 riscv = filterDoubles predicates.isRiscV;
77− riscv32 = filterDoubles predicates.isRiscV32;
78− riscv64 = filterDoubles predicates.isRiscV64;
7977 vc4 = filterDoubles predicates.isVc4;
8078 or1k = filterDoubles predicates.isOr1k;
8179 m68k = filterDoubles predicates.isM68k;
@@ -89,11 +87,7 @@ in {
8987 darwin = filterDoubles predicates.isDarwin;
9088 freebsd = filterDoubles predicates.isFreeBSD;
9189 # Should be better, but MinGW is unclear.
92− gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; })
93− ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabi; })
94− ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabihf; })
95− ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnuabin32; })
96− ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnuabi64; });
90+ gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabi; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabihf; });
9791 illumos = filterDoubles predicates.isSunOS;
9892 linux = filterDoubles predicates.isLinux;
9993 netbsd = filterDoubles predicates.isNetBSD;
lib/systems/examples.nix−21
@@ -93,26 +93,6 @@ rec {
9393 config = "mipsel-unknown-linux-gnu";
9494 } // platforms.fuloong2f_n32;
9595
96− # MIPS ABI table transcribed from here: https://wiki.debian.org/Multiarch/Tuples
97−
98− # can execute on 32bit chip
99− mips-linux-gnu = { config = "mips-linux-gnu"; } // platforms.gcc_mips32r2_o32;
100− mipsel-linux-gnu = { config = "mipsel-linux-gnu"; } // platforms.gcc_mips32r2_o32;
101− mipsisa32r6-linux-gnu = { config = "mipsisa32r6-linux-gnu"; } // platforms.gcc_mips32r6_o32;
102− mipsisa32r6el-linux-gnu = { config = "mipsisa32r6el-linux-gnu"; } // platforms.gcc_mips32r6_o32;
103−
104− # require 64bit chip (for more registers, 64-bit floating point, 64-bit "long long") but use 32bit pointers
105− mips64-linux-gnuabin32 = { config = "mips64-linux-gnuabin32"; } // platforms.gcc_mips64r2_n32;
106− mips64el-linux-gnuabin32 = { config = "mips64el-linux-gnuabin32"; } // platforms.gcc_mips64r2_n32;
107− mipsisa64r6-linux-gnuabin32 = { config = "mipsisa64r6-linux-gnuabin32"; } // platforms.gcc_mips64r6_n32;
108− mipsisa64r6el-linux-gnuabin32 = { config = "mipsisa64r6el-linux-gnuabin32"; } // platforms.gcc_mips64r6_n32;
109−
110− # 64bit pointers
111− mips64-linux-gnuabi64 = { config = "mips64-linux-gnuabi64"; } // platforms.gcc_mips64r2_64;
112− mips64el-linux-gnuabi64 = { config = "mips64el-linux-gnuabi64"; } // platforms.gcc_mips64r2_64;
113− mipsisa64r6-linux-gnuabi64 = { config = "mipsisa64r6-linux-gnuabi64"; } // platforms.gcc_mips64r6_64;
114− mipsisa64r6el-linux-gnuabi64 = { config = "mipsisa64r6el-linux-gnuabi64"; } // platforms.gcc_mips64r6_64;
115−
11696 muslpi = raspberryPi // {
11797 config = "armv6l-unknown-linux-musleabihf";
11898 };
@@ -310,7 +290,6 @@ rec {
310290 libc = "nblibc";
311291 };
312292
313− # this is broken and never worked fully
314293 x86_64-netbsd-llvm = {
315294 config = "x86_64-unknown-netbsd";
316295 libc = "nblibc";
lib/systems/inspect.nix+1−8
@@ -13,19 +13,12 @@ rec {
1313 isx86_64 = { cpu = { family = "x86"; bits = 64; }; };
1414 isPowerPC = { cpu = cpuTypes.powerpc; };
1515 isPower = { cpu = { family = "power"; }; };
16− isPower64 = { cpu = { family = "power"; bits = 64; }; };
1716 isx86 = { cpu = { family = "x86"; }; };
1817 isAarch32 = { cpu = { family = "arm"; bits = 32; }; };
1918 isAarch64 = { cpu = { family = "arm"; bits = 64; }; };
2019 isMips = { cpu = { family = "mips"; }; };
21− isMips32 = { cpu = { family = "mips"; bits = 32; }; };
22− isMips64 = { cpu = { family = "mips"; bits = 64; }; };
23− isMips64n32 = { cpu = { family = "mips"; bits = 64; }; abi = { abi = "n32"; }; };
24− isMips64n64 = { cpu = { family = "mips"; bits = 64; }; abi = { abi = "64"; }; };
2520 isMmix = { cpu = { family = "mmix"; }; };
2621 isRiscV = { cpu = { family = "riscv"; }; };
27− isRiscV32 = { cpu = { family = "riscv"; bits = 32; }; };
28− isRiscV64 = { cpu = { family = "riscv"; bits = 64; }; };
2922 isSparc = { cpu = { family = "sparc"; }; };
3023 isWasm = { cpu = { family = "wasm"; }; };
3124 isMsp430 = { cpu = { family = "msp430"; }; };
@@ -64,7 +57,7 @@ rec {
6457
6558 isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ];
6659 isGnu = with abis; map (a: { abi = a; }) [ gnuabi64 gnu gnueabi gnueabihf ];
67− isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf muslabin32 muslabi64 ];
60+ isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ];
6861 isUClibc = with abis; map (a: { abi = a; }) [ uclibc uclibceabi uclibceabihf ];
6962
7063 isEfi = map (family: { cpu.family = family; })
lib/systems/parse.nix+2−9
@@ -359,20 +359,13 @@ rec {
359359 ];
360360 };
361361 gnuabi64 = { abi = "64"; };
362− muslabi64 = { abi = "64"; };
363−
364− # NOTE: abi=n32 requires a 64-bit MIPS chip! That is not a typo.
365− # It is basically the 64-bit abi with 32-bit pointers. Details:
366− # https://www.linux-mips.org/pub/linux/mips/doc/ABI/MIPS-N32-ABI-Handbook.pdf
367− gnuabin32 = { abi = "n32"; };
368− muslabin32 = { abi = "n32"; };
369362
370363 musleabi = { float = "soft"; };
371364 musleabihf = { float = "hard"; };
372365 musl = {};
373366
374− uclibceabi = { float = "soft"; };
375− uclibceabihf = { float = "hard"; };
367+ uclibceabihf = { float = "soft"; };
368+ uclibceabi = { float = "hard"; };
376369 uclibc = {};
377370
378371 unknown = {};
lib/systems/platforms.nix+1−48
@@ -1,10 +1,3 @@
1−# Note: lib/systems/default.nix takes care of producing valid,
2−# fully-formed "platform" values (e.g. hostPlatform, buildPlatform,
3−# targetPlatform, etc) containing at least the minimal set of attrs
4−# required (see types.parsedPlatform in lib/systems/parse.nix). This
5−# file takes an already-valid platform and further elaborates it with
6−# optional fields; currently these are: linux-kernel, gcc, and rustc.
7−
81{ lib }:
92rec {
103 pc = {
@@ -489,43 +482,6 @@ rec {
489482 };
490483 };
491484
492− # can execute on 32bit chip
493− gcc_mips32r2_o32 = { gcc = { arch = "mips32r2"; abi = "o32"; }; };
494− gcc_mips32r6_o32 = { gcc = { arch = "mips32r6"; abi = "o32"; }; };
495− gcc_mips64r2_n32 = { gcc = { arch = "mips64r2"; abi = "n32"; }; };
496− gcc_mips64r6_n32 = { gcc = { arch = "mips64r6"; abi = "n32"; }; };
497− gcc_mips64r2_64 = { gcc = { arch = "mips64r2"; abi = "64"; }; };
498− gcc_mips64r6_64 = { gcc = { arch = "mips64r6"; abi = "64"; }; };
499−
500− # based on:
501− # https://www.mail-archive.com/qemu-discuss@nongnu.org/msg05179.html
502− # https://gmplib.org/~tege/qemu.html#mips64-debian
503− mips64el-qemu-linux-gnuabi64 = {
504− linux-kernel = {
505− name = "mips64el";
506− baseConfig = "64r2el_defconfig";
507− target = "vmlinuz";
508− autoModules = false;
509− DTB = true;
510− # for qemu 9p passthrough filesystem
511− extraConfig = ''
512− MIPS_MALTA y
513− PAGE_SIZE_4KB y
514− CPU_LITTLE_ENDIAN y
515− CPU_MIPS64_R2 y
516− 64BIT y
517− CPU_MIPS64_R2 y
518−
519− NET_9P y
520− NET_9P_VIRTIO y
521− 9P_FS y
522− 9P_FS_POSIX_ACL y
523− PCI y
524− VIRTIO_PCI y
525− '';
526− };
527− };
528−
529485 ##
530486 ## Other
531487 ##
@@ -543,9 +499,6 @@ rec {
543499 };
544500 };
545501
546− # This function takes a minimally-valid "platform" and returns an
547− # attrset containing zero or more additional attrs which should be
548− # included in the platform in order to further elaborate it.
549502 select = platform:
550503 # x86
551504 /**/ if platform.isx86 then pc
@@ -568,5 +521,5 @@ rec {
568521
569522 else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv
570523
571− else { };
524+ else pc;
572525}
lib/systems/supported.nix+2−3
@@ -4,9 +4,7 @@
44{ lib }:
55rec {
66 # List of systems that are built by Hydra.
7− hydra = tier1 ++ tier2 ++ tier3 ++ [
8− "aarch64-darwin"
9− ];
7+ hydra = tier1 ++ tier2 ++ tier3;
108
119 tier1 = [
1210 "x86_64-linux"
@@ -18,6 +16,7 @@ rec {
1816 ];
1917
2018 tier3 = [
19+ "aarch64-darwin"
2120 "armv6l-linux"
2221 "armv7l-linux"
2322 "i686-linux"
lib/tests/flakes/subflakeTest/flake.nixdeleted−8
@@ -1,8 +0,0 @@
1−{
2− outputs = { self, subflake, callLocklessFlake }: rec {
3− x = (callLocklessFlake {
4− path = subflake;
5− inputs = {};
6− }).subflakeOutput;
7− };
8−}
lib/tests/flakes/subflakeTest/subflake/flake.nixdeleted−5
@@ -1,5 +0,0 @@
1−{
2− outputs = { self }: {
3− subflakeOutput = 1;
4− };
5−}
lib/tests/misc.nix+2−430
@@ -22,15 +22,6 @@ in
2222
2323runTests {
2424
25−# FLAKES
26−
27− testCallLocklessFlake = {
28− expr = callLocklessFlake {
29− path = ./flakes/subflakeTest;
30− inputs = { subflake = ./flakes/subflakeTest/subflake; inherit callLocklessFlake; };
31− };
32− expected = { x = 1; outPath = ./flakes/subflakeTest; };
33− };
3425
3526# TRIVIAL
3627
@@ -260,56 +251,6 @@ runTests {
260251 expected = "&quot;test&quot; &apos;test&apos; &lt; &amp; &gt;";
261252 };
262253
263− testToShellVars = {
264− expr = ''
265− ${toShellVars {
266− STRing01 = "just a 'string'";
267− _array_ = [ "with" "more strings" ];
268− assoc."with some" = ''
269− strings
270− possibly newlines
271− '';
272− }}
273− '';
274− expected = ''
275− STRing01='just a '\'''string'\''''
276− declare -a _array_=('with' 'more strings')
277− declare -A assoc=(['with some']='strings
278− possibly newlines
279− ')
280− '';
281− };
282−
283− testHasInfixFalse = {
284− expr = hasInfix "c" "abde";
285− expected = false;
286− };
287−
288− testHasInfixTrue = {
289− expr = hasInfix "c" "abcde";
290− expected = true;
291− };
292−
293− testHasInfixDerivation = {
294− expr = hasInfix "hello" (import ../.. { system = "x86_64-linux"; }).hello;
295− expected = true;
296− };
297−
298− testHasInfixPath = {
299− expr = hasInfix "tests" ./.;
300− expected = true;
301− };
302−
303− testHasInfixPathStoreDir = {
304− expr = hasInfix builtins.storeDir ./.;
305− expected = true;
306− };
307−
308− testHasInfixToString = {
309− expr = hasInfix "a" { __toString = _: "a"; };
310− expected = true;
311− };
312−
313254# LISTS
314255
315256 testFilter = {
@@ -530,66 +471,6 @@ runTests {
530471 '';
531472 };
532473
533− testToINIWithGlobalSectionEmpty = {
534− expr = generators.toINIWithGlobalSection {} {
535− globalSection = {
536− };
537− sections = {
538− };
539− };
540− expected = ''
541− '';
542− };
543−
544− testToINIWithGlobalSectionGlobalEmptyIsTheSameAsToINI =
545− let
546− sections = {
547− "section 1" = {
548− attribute1 = 5;
549− x = "Me-se JarJar Binx";
550− };
551− "foo" = {
552− "he\\h=he" = "this is okay";
553− };
554− };
555− in {
556− expr =
557− generators.toINIWithGlobalSection {} {
558− globalSection = {};
559− sections = sections;
560− };
561− expected = generators.toINI {} sections;
562− };
563−
564− testToINIWithGlobalSectionFull = {
565− expr = generators.toINIWithGlobalSection {} {
566− globalSection = {
567− foo = "bar";
568− test = false;
569− };
570− sections = {
571− "section 1" = {
572− attribute1 = 5;
573− x = "Me-se JarJar Binx";
574− };
575− "foo" = {
576− "he\\h=he" = "this is okay";
577− };
578− };
579− };
580− expected = ''
581− foo=bar
582− test=false
583−
584− [foo]
585− he\h\=he=this is okay
586−
587− [section 1]
588− attribute1=5
589− x=Me-se JarJar Binx
590− '';
591− };
592−
593474 /* right now only invocation check */
594475 testToJSONSimple =
595476 let val = {
@@ -615,7 +496,7 @@ runTests {
615496
616497 testToPretty =
617498 let
618− deriv = derivation { name = "test"; builder = "/bin/sh"; system = "aarch64-linux"; };
499+ deriv = derivation { name = "test"; builder = "/bin/sh"; system = builtins.currentSystem; };
619500 in {
620501 expr = mapAttrs (const (generators.toPretty { multiline = false; })) rec {
621502 int = 42;
@@ -768,11 +649,6 @@ runTests {
768649 expected = "foo";
769650 };
770651
771− testSanitizeDerivationNameUnicode = testSanitizeDerivationName {
772− name = "fö";
773− expected = "f-";
774− };
775−
776652 testSanitizeDerivationNameAscii = testSanitizeDerivationName {
777653 name = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
778654 expected = "-+--.-0123456789-=-?-ABCDEFGHIJKLMNOPQRSTUVWXYZ-_-abcdefghijklmnopqrstuvwxyz-";
@@ -815,7 +691,7 @@ runTests {
815691
816692 locs = filter (o: ! o.internal) (optionAttrSetToDocList options);
817693 in map (o: o.loc) locs;
818− expected = [ [ "_module" "args" ] [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ];
694+ expected = [ [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ];
819695 };
820696
821697 testCartesianProductOfEmptySet = {
@@ -885,308 +761,4 @@ runTests {
885761 { a = 3; b = 30; c = 300; }
886762 ];
887763 };
888−
889− # The example from the showAttrPath documentation
890− testShowAttrPathExample = {
891− expr = showAttrPath [ "foo" "10" "bar" ];
892− expected = "foo.\"10\".bar";
893− };
894−
895− testShowAttrPathEmpty = {
896− expr = showAttrPath [];
897− expected = "<root attribute path>";
898− };
899−
900− testShowAttrPathVarious = {
901− expr = showAttrPath [
902− "."
903− "foo"
904− "2"
905− "a2-b"
906− "_bc'de"
907− ];
908− expected = ''".".foo."2".a2-b._bc'de'';
909− };
910−
911− testGroupBy = {
912− expr = groupBy (n: toString (mod n 5)) (range 0 16);
913− expected = {
914− "0" = [ 0 5 10 15 ];
915− "1" = [ 1 6 11 16 ];
916− "2" = [ 2 7 12 ];
917− "3" = [ 3 8 13 ];
918− "4" = [ 4 9 14 ];
919− };
920− };
921−
922− testGroupBy' = {
923− expr = groupBy' builtins.add 0 (x: boolToString (x > 2)) [ 5 1 2 3 4 ];
924− expected = { false = 3; true = 12; };
925− };
926−
927− # The example from the updateManyAttrsByPath documentation
928− testUpdateManyAttrsByPathExample = {
929− expr = updateManyAttrsByPath [
930− {
931− path = [ "a" "b" ];
932− update = old: { d = old.c; };
933− }
934− {
935− path = [ "a" "b" "c" ];
936− update = old: old + 1;
937− }
938− {
939− path = [ "x" "y" ];
940− update = old: "xy";
941− }
942− ] { a.b.c = 0; };
943− expected = { a = { b = { d = 1; }; }; x = { y = "xy"; }; };
944− };
945−
946− # If there are no updates, the value is passed through
947− testUpdateManyAttrsByPathNone = {
948− expr = updateManyAttrsByPath [] "something";
949− expected = "something";
950− };
951−
952− # A single update to the root path is just like applying the function directly
953− testUpdateManyAttrsByPathSingleIncrement = {
954− expr = updateManyAttrsByPath [
955− {
956− path = [ ];
957− update = old: old + 1;
958− }
959− ] 0;
960− expected = 1;
961− };
962−
963− # Multiple updates can be applied are done in order
964− testUpdateManyAttrsByPathMultipleIncrements = {
965− expr = updateManyAttrsByPath [
966− {
967− path = [ ];
968− update = old: old + "a";
969− }
970− {
971− path = [ ];
972− update = old: old + "b";
973− }
974− {
975− path = [ ];
976− update = old: old + "c";
977− }
978− ] "";
979− expected = "abc";
980− };
981−
982− # If an update doesn't use the value, all previous updates are not evaluated
983− testUpdateManyAttrsByPathLazy = {
984− expr = updateManyAttrsByPath [
985− {
986− path = [ ];
987− update = old: old + throw "nope";
988− }
989− {
990− path = [ ];
991− update = old: "untainted";
992− }
993− ] (throw "start");
994− expected = "untainted";
995− };
996−
997− # Deeply nested attributes can be updated without affecting others
998− testUpdateManyAttrsByPathDeep = {
999− expr = updateManyAttrsByPath [
1000− {
1001− path = [ "a" "b" "c" ];
1002− update = old: old + 1;
1003− }
1004− ] {
1005− a.b.c = 0;
1006−
1007− a.b.z = 0;
1008− a.y.z = 0;
1009− x.y.z = 0;
1010− };
1011− expected = {
1012− a.b.c = 1;
1013−
1014− a.b.z = 0;
1015− a.y.z = 0;
1016− x.y.z = 0;
1017− };
1018− };
1019−
1020− # Nested attributes are updated first
1021− testUpdateManyAttrsByPathNestedBeforehand = {
1022− expr = updateManyAttrsByPath [
1023− {
1024− path = [ "a" ];
1025− update = old: old // { x = old.b; };
1026− }
1027− {
1028− path = [ "a" "b" ];
1029− update = old: old + 1;
1030− }
1031− ] {
1032− a.b = 0;
1033− };
1034− expected = {
1035− a.b = 1;
1036− a.x = 1;
1037− };
1038− };
1039−
1040− ## Levenshtein distance functions and co.
1041− testCommonPrefixLengthEmpty = {
1042− expr = strings.commonPrefixLength "" "hello";
1043− expected = 0;
1044− };
1045−
1046− testCommonPrefixLengthSame = {
1047− expr = strings.commonPrefixLength "hello" "hello";
1048− expected = 5;
1049− };
1050−
1051− testCommonPrefixLengthDiffering = {
1052− expr = strings.commonPrefixLength "hello" "hey";
1053− expected = 2;
1054− };
1055−
1056− testCommonSuffixLengthEmpty = {
1057− expr = strings.commonSuffixLength "" "hello";
1058− expected = 0;
1059− };
1060−
1061− testCommonSuffixLengthSame = {
1062− expr = strings.commonSuffixLength "hello" "hello";
1063− expected = 5;
1064− };
1065−
1066− testCommonSuffixLengthDiffering = {
1067− expr = strings.commonSuffixLength "test" "rest";
1068− expected = 3;
1069− };
1070−
1071− testLevenshteinEmpty = {
1072− expr = strings.levenshtein "" "";
1073− expected = 0;
1074− };
1075−
1076− testLevenshteinOnlyAdd = {
1077− expr = strings.levenshtein "" "hello there";
1078− expected = 11;
1079− };
1080−
1081− testLevenshteinOnlyRemove = {
1082− expr = strings.levenshtein "hello there" "";
1083− expected = 11;
1084− };
1085−
1086− testLevenshteinOnlyTransform = {
1087− expr = strings.levenshtein "abcdef" "ghijkl";
1088− expected = 6;
1089− };
1090−
1091− testLevenshteinMixed = {
1092− expr = strings.levenshtein "kitchen" "sitting";
1093− expected = 5;
1094− };
1095−
1096− testLevenshteinAtMostZeroFalse = {
1097− expr = strings.levenshteinAtMost 0 "foo" "boo";
1098− expected = false;
1099− };
1100−
1101− testLevenshteinAtMostZeroTrue = {
1102− expr = strings.levenshteinAtMost 0 "foo" "foo";
1103− expected = true;
1104− };
1105−
1106− testLevenshteinAtMostOneFalse = {
1107− expr = strings.levenshteinAtMost 1 "car" "ct";
1108− expected = false;
1109− };
1110−
1111− testLevenshteinAtMostOneTrue = {
1112− expr = strings.levenshteinAtMost 1 "car" "cr";
1113− expected = true;
1114− };
1115−
1116− # We test levenshteinAtMost 2 particularly well because it uses a complicated
1117− # implementation
1118− testLevenshteinAtMostTwoIsEmpty = {
1119− expr = strings.levenshteinAtMost 2 "" "";
1120− expected = true;
1121− };
1122−
1123− testLevenshteinAtMostTwoIsZero = {
1124− expr = strings.levenshteinAtMost 2 "abcdef" "abcdef";
1125− expected = true;
1126− };
1127−
1128− testLevenshteinAtMostTwoIsOne = {
1129− expr = strings.levenshteinAtMost 2 "abcdef" "abddef";
1130− expected = true;
1131− };
1132−
1133− testLevenshteinAtMostTwoDiff0False = {
1134− expr = strings.levenshteinAtMost 2 "abcdef" "aczyef";
1135− expected = false;
1136− };
1137−
1138− testLevenshteinAtMostTwoDiff0Outer = {
1139− expr = strings.levenshteinAtMost 2 "abcdef" "zbcdez";
1140− expected = true;
1141− };
1142−
1143− testLevenshteinAtMostTwoDiff0DelLeft = {
1144− expr = strings.levenshteinAtMost 2 "abcdef" "bcdefz";
1145− expected = true;
1146− };
1147−
1148− testLevenshteinAtMostTwoDiff0DelRight = {
1149− expr = strings.levenshteinAtMost 2 "abcdef" "zabcde";
1150− expected = true;
1151− };
1152−
1153− testLevenshteinAtMostTwoDiff1False = {
1154− expr = strings.levenshteinAtMost 2 "abcdef" "bddez";
1155− expected = false;
1156− };
1157−
1158− testLevenshteinAtMostTwoDiff1DelLeft = {
1159− expr = strings.levenshteinAtMost 2 "abcdef" "bcdez";
1160− expected = true;
1161− };
1162−
1163− testLevenshteinAtMostTwoDiff1DelRight = {
1164− expr = strings.levenshteinAtMost 2 "abcdef" "zbcde";
1165− expected = true;
1166− };
1167−
1168− testLevenshteinAtMostTwoDiff2False = {
1169− expr = strings.levenshteinAtMost 2 "hello" "hxo";
1170− expected = false;
1171− };
1172−
1173− testLevenshteinAtMostTwoDiff2True = {
1174− expr = strings.levenshteinAtMost 2 "hello" "heo";
1175− expected = true;
1176− };
1177−
1178− testLevenshteinAtMostTwoDiff3 = {
1179− expr = strings.levenshteinAtMost 2 "hello" "ho";
1180− expected = false;
1181− };
1182−
1183− testLevenshteinAtMostThreeFalse = {
1184− expr = strings.levenshteinAtMost 3 "hello" "Holla!";
1185− expected = false;
1186− };
1187−
1188− testLevenshteinAtMostThreeTrue = {
1189− expr = strings.levenshteinAtMost 3 "hello" "Holla";
1190− expected = true;
1191− };
1192764}
lib/tests/modules.sh+113−163
@@ -1,11 +1,8 @@
1−#!/usr/bin/env bash
1+#!/bin/sh
22#
33# This script is used to test that the module system is working as expected.
44# By default it test the version of nixpkgs which is defined in the NIX_PATH.
55
6−set -o errexit -o noclobber -o nounset -o pipefail
7−shopt -s failglob inherit_errexit
8−
96# https://stackoverflow.com/a/246128/6605742
107DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
118
@@ -16,103 +13,101 @@ fail=0
1613
1714evalConfig() {
1815 local attr=$1
19− shift
20− local script="import ./default.nix { modules = [ $* ];}"
16+ shift;
17+ local script="import ./default.nix { modules = [ $@ ];}"
2118 nix-instantiate --timeout 1 -E "$script" -A "$attr" --eval-only --show-trace --read-write-mode
2219}
2320
2421reportFailure() {
2522 local attr=$1
26− shift
27− local script="import ./default.nix { modules = [ $* ];}"
23+ shift;
24+ local script="import ./default.nix { modules = [ $@ ];}"
2825 echo 2>&1 "$ nix-instantiate -E '$script' -A '$attr' --eval-only"
29− evalConfig "$attr" "$@" || true
30− ((++fail))
26+ evalConfig "$attr" "$@"
27+ fail=$((fail + 1))
3128}
3229
3330checkConfigOutput() {
3431 local outputContains=$1
35− shift
32+ shift;
3633 if evalConfig "$@" 2>/dev/null | grep --silent "$outputContains" ; then
37− ((++pass))
34+ pass=$((pass + 1))
35+ return 0;
3836 else
3937 echo 2>&1 "error: Expected result matching '$outputContains', while evaluating"
4038 reportFailure "$@"
39+ return 1
4140 fi
4241}
4342
4443checkConfigError() {
4544 local errorContains=$1
4645 local err=""
47− shift
48− if err="$(evalConfig "$@" 2>&1 >/dev/null)"; then
46+ shift;
47+ if err==$(evalConfig "$@" 2>&1 >/dev/null); then
4948 echo 2>&1 "error: Expected error code, got exit code 0, while evaluating"
5049 reportFailure "$@"
50+ return 1
5151 else
5252 if echo "$err" | grep -zP --silent "$errorContains" ; then
53− ((++pass))
53+ pass=$((pass + 1))
54+ return 0;
5455 else
5556 echo 2>&1 "error: Expected error matching '$errorContains', while evaluating"
5657 reportFailure "$@"
58+ return 1
5759 fi
5860 fi
5961}
6062
6163# Check boolean option.
62−checkConfigOutput '^false$' config.enable ./declare-enable.nix
64+checkConfigOutput "false" config.enable ./declare-enable.nix
6365checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*: true' config.enable ./define-enable.nix
6466
65−checkConfigOutput '^1$' config.bare-submodule.nested ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix
66−checkConfigOutput '^2$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix
67−checkConfigOutput '^42$' config.bare-submodule.nested ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix ./declare-bare-submodule-deep-option.nix ./define-bare-submodule-values.nix
68−checkConfigOutput '^420$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix ./declare-bare-submodule-deep-option.nix ./define-bare-submodule-values.nix
69−checkConfigOutput '^2$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix ./define-shorthandOnlyDefinesConfig-true.nix
70−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
71−
7267# Check integer types.
7368# unsigned
74−checkConfigOutput '^42$' config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
69+checkConfigOutput "42" config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
7570checkConfigError 'A definition for option .* is not of type.*unsigned integer.*. Definition values:\n\s*- In .*: -23' config.value ./declare-int-unsigned-value.nix ./define-value-int-negative.nix
7671# positive
7772checkConfigError 'A definition for option .* is not of type.*positive integer.*. Definition values:\n\s*- In .*: 0' config.value ./declare-int-positive-value.nix ./define-value-int-zero.nix
7873# between
79−checkConfigOutput '^42$' config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
74+checkConfigOutput "42" config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
8075checkConfigError 'A definition for option .* is not of type.*between.*-21 and 43.*inclusive.*. Definition values:\n\s*- In .*: -23' config.value ./declare-int-between-value.nix ./define-value-int-negative.nix
8176
8277# Check either types
8378# types.either
84−checkConfigOutput '^42$' config.value ./declare-either.nix ./define-value-int-positive.nix
85−checkConfigOutput '^"24"$' config.value ./declare-either.nix ./define-value-string.nix
79+checkConfigOutput "42" config.value ./declare-either.nix ./define-value-int-positive.nix
80+checkConfigOutput "\"24\"" config.value ./declare-either.nix ./define-value-string.nix
8681# types.oneOf
87−checkConfigOutput '^42$' config.value ./declare-oneOf.nix ./define-value-int-positive.nix
88−checkConfigOutput '^\[ \]$' config.value ./declare-oneOf.nix ./define-value-list.nix
89−checkConfigOutput '^"24"$' config.value ./declare-oneOf.nix ./define-value-string.nix
82+checkConfigOutput "42" config.value ./declare-oneOf.nix ./define-value-int-positive.nix
83+checkConfigOutput "[ ]" config.value ./declare-oneOf.nix ./define-value-list.nix
84+checkConfigOutput "\"24\"" config.value ./declare-oneOf.nix ./define-value-string.nix
9085
9186# Check mkForce without submodules.
9287set -- config.enable ./declare-enable.nix ./define-enable.nix
93−checkConfigOutput '^true$' "$@"
94−checkConfigOutput '^false$' "$@" ./define-force-enable.nix
95−checkConfigOutput '^false$' "$@" ./define-enable-force.nix
88+checkConfigOutput "true" "$@"
89+checkConfigOutput "false" "$@" ./define-force-enable.nix
90+checkConfigOutput "false" "$@" ./define-enable-force.nix
9691
9792# Check mkForce with option and submodules.
9893checkConfigError 'attribute .*foo.* .* not found' config.attrsOfSub.foo.enable ./declare-attrsOfSub-any-enable.nix
99−checkConfigOutput '^false$' config.attrsOfSub.foo.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix
94+checkConfigOutput 'false' config.attrsOfSub.foo.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix
10095set -- config.attrsOfSub.foo.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo-enable.nix
101−checkConfigOutput '^true$' "$@"
102−checkConfigOutput '^false$' "$@" ./define-force-attrsOfSub-foo-enable.nix
103−checkConfigOutput '^false$' "$@" ./define-attrsOfSub-force-foo-enable.nix
104−checkConfigOutput '^false$' "$@" ./define-attrsOfSub-foo-force-enable.nix
105−checkConfigOutput '^false$' "$@" ./define-attrsOfSub-foo-enable-force.nix
96+checkConfigOutput 'true' "$@"
97+checkConfigOutput 'false' "$@" ./define-force-attrsOfSub-foo-enable.nix
98+checkConfigOutput 'false' "$@" ./define-attrsOfSub-force-foo-enable.nix
99+checkConfigOutput 'false' "$@" ./define-attrsOfSub-foo-force-enable.nix
100+checkConfigOutput 'false' "$@" ./define-attrsOfSub-foo-enable-force.nix
106101
107102# Check overriding effect of mkForce on submodule definitions.
108103checkConfigError 'attribute .*bar.* .* not found' config.attrsOfSub.bar.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix
109−checkConfigOutput '^false$' config.attrsOfSub.bar.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix ./define-attrsOfSub-bar.nix
104+checkConfigOutput 'false' config.attrsOfSub.bar.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix ./define-attrsOfSub-bar.nix
110105set -- config.attrsOfSub.bar.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix ./define-attrsOfSub-bar-enable.nix
111−checkConfigOutput '^true$' "$@"
106+checkConfigOutput 'true' "$@"
112107checkConfigError 'attribute .*bar.* .* not found' "$@" ./define-force-attrsOfSub-foo-enable.nix
113108checkConfigError 'attribute .*bar.* .* not found' "$@" ./define-attrsOfSub-force-foo-enable.nix
114−checkConfigOutput '^true$' "$@" ./define-attrsOfSub-foo-force-enable.nix
115−checkConfigOutput '^true$' "$@" ./define-attrsOfSub-foo-enable-force.nix
109+checkConfigOutput 'true' "$@" ./define-attrsOfSub-foo-force-enable.nix
110+checkConfigOutput 'true' "$@" ./define-attrsOfSub-foo-enable-force.nix
116111
117112# Check mkIf with submodules.
118113checkConfigError 'attribute .*foo.* .* not found' config.attrsOfSub.foo.enable ./declare-enable.nix ./declare-attrsOfSub-any-enable.nix
@@ -120,16 +115,16 @@ set -- config.attrsOfSub.foo.enable ./declare-enable.nix ./declare-attrsOfSub-an
120115checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-if-attrsOfSub-foo-enable.nix
121116checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-attrsOfSub-if-foo-enable.nix
122117checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-attrsOfSub-foo-if-enable.nix
123−checkConfigOutput '^false$' "$@" ./define-attrsOfSub-foo-enable-if.nix
124−checkConfigOutput '^true$' "$@" ./define-enable.nix ./define-if-attrsOfSub-foo-enable.nix
125−checkConfigOutput '^true$' "$@" ./define-enable.nix ./define-attrsOfSub-if-foo-enable.nix
126−checkConfigOutput '^true$' "$@" ./define-enable.nix ./define-attrsOfSub-foo-if-enable.nix
127−checkConfigOutput '^true$' "$@" ./define-enable.nix ./define-attrsOfSub-foo-enable-if.nix
118+checkConfigOutput 'false' "$@" ./define-attrsOfSub-foo-enable-if.nix
119+checkConfigOutput 'true' "$@" ./define-enable.nix ./define-if-attrsOfSub-foo-enable.nix
120+checkConfigOutput 'true' "$@" ./define-enable.nix ./define-attrsOfSub-if-foo-enable.nix
121+checkConfigOutput 'true' "$@" ./define-enable.nix ./define-attrsOfSub-foo-if-enable.nix
122+checkConfigOutput 'true' "$@" ./define-enable.nix ./define-attrsOfSub-foo-enable-if.nix
128123
129124# Check disabledModules with config definitions and option declarations.
130125set -- config.enable ./define-enable.nix ./declare-enable.nix
131−checkConfigOutput '^true$' "$@"
132−checkConfigOutput '^false$' "$@" ./disable-define-enable.nix
126+checkConfigOutput "true" "$@"
127+checkConfigOutput "false" "$@" ./disable-define-enable.nix
133128checkConfigError "The option .*enable.* does not exist. Definition values:\n\s*- In .*: true" "$@" ./disable-declare-enable.nix
134129checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-define-enable.nix ./disable-declare-enable.nix
135130checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-enable-modules.nix
@@ -137,7 +132,7 @@ checkConfigError "attribute .*enable.* in selection path .*config.enable.* not f
137132# Check _module.args.
138133set -- config.enable ./declare-enable.nix ./define-enable-with-custom-arg.nix
139134checkConfigError 'while evaluating the module argument .*custom.* in .*define-enable-with-custom-arg.nix.*:' "$@"
140−checkConfigOutput '^true$' "$@" ./define-_module-args-custom.nix
135+checkConfigOutput "true" "$@" ./define-_module-args-custom.nix
141136
142137# Check that using _module.args on imports cause infinite recursions, with
143138# the proper error context.
@@ -148,77 +143,77 @@ checkConfigError 'infinite recursion encountered' "$@"
148143# Check _module.check.
149144set -- config.enable ./declare-enable.nix ./define-enable.nix ./define-attrsOfSub-foo.nix
150145checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*' "$@"
151−checkConfigOutput '^true$' "$@" ./define-module-check.nix
146+checkConfigOutput "true" "$@" ./define-module-check.nix
152147
153148# Check coerced value.
154−checkConfigOutput '^"42"$' config.value ./declare-coerced-value.nix
155−checkConfigOutput '^"24"$' config.value ./declare-coerced-value.nix ./define-value-string.nix
149+checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
150+checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
156151checkConfigError 'A definition for option .* is not.*string or signed integer convertible to it.*. Definition values:\n\s*- In .*: \[ \]' config.value ./declare-coerced-value.nix ./define-value-list.nix
157152
158153# Check coerced value with unsound coercion
159−checkConfigOutput '^12$' config.value ./declare-coerced-value-unsound.nix
154+checkConfigOutput "12" config.value ./declare-coerced-value-unsound.nix
160155checkConfigError 'A definition for option .* is not of type .*. Definition values:\n\s*- In .*: "1000"' config.value ./declare-coerced-value-unsound.nix ./define-value-string-bigint.nix
161156checkConfigError 'json.exception.parse_error' config.value ./declare-coerced-value-unsound.nix ./define-value-string-arbitrary.nix
162157
163158# Check mkAliasOptionModule.
164−checkConfigOutput '^true$' config.enable ./alias-with-priority.nix
165−checkConfigOutput '^true$' config.enableAlias ./alias-with-priority.nix
166−checkConfigOutput '^false$' config.enable ./alias-with-priority-can-override.nix
167−checkConfigOutput '^false$' config.enableAlias ./alias-with-priority-can-override.nix
159+checkConfigOutput "true" config.enable ./alias-with-priority.nix
160+checkConfigOutput "true" config.enableAlias ./alias-with-priority.nix
161+checkConfigOutput "false" config.enable ./alias-with-priority-can-override.nix
162+checkConfigOutput "false" config.enableAlias ./alias-with-priority-can-override.nix
168163
169164# submoduleWith
170165
171166## specialArgs should work
172−checkConfigOutput '^"foo"$' config.submodule.foo ./declare-submoduleWith-special.nix
167+checkConfigOutput "foo" config.submodule.foo ./declare-submoduleWith-special.nix
173168
174169## shorthandOnlyDefines config behaves as expected
175−checkConfigOutput '^true$' config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-shorthand.nix
170+checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-shorthand.nix
176171checkConfigError 'is not of type `boolean' config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-noshorthand.nix
177172checkConfigError "You're trying to declare a value of type \`bool'\n\s*rather than an attribute-set for the option" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-shorthand.nix
178−checkConfigOutput '^true$' config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-noshorthand.nix
173+checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-noshorthand.nix
179174
180175## submoduleWith should merge all modules in one swoop
181−checkConfigOutput '^true$' config.submodule.inner ./declare-submoduleWith-modules.nix
182−checkConfigOutput '^true$' config.submodule.outer ./declare-submoduleWith-modules.nix
176+checkConfigOutput "true" config.submodule.inner ./declare-submoduleWith-modules.nix
177+checkConfigOutput "true" config.submodule.outer ./declare-submoduleWith-modules.nix
183178# Should also be able to evaluate the type name (which evaluates freeformType,
184179# which evaluates all the modules defined by the type)
185−checkConfigOutput '^"submodule"$' options.submodule.type.description ./declare-submoduleWith-modules.nix
180+checkConfigOutput "submodule" options.submodule.type.description ./declare-submoduleWith-modules.nix
186181
187182## submodules can be declared using (evalModules {...}).type
188−checkConfigOutput '^true$' config.submodule.inner ./declare-submodule-via-evalModules.nix
189−checkConfigOutput '^true$' config.submodule.outer ./declare-submodule-via-evalModules.nix
183+checkConfigOutput "true" config.submodule.inner ./declare-submodule-via-evalModules.nix
184+checkConfigOutput "true" config.submodule.outer ./declare-submodule-via-evalModules.nix
190185# Should also be able to evaluate the type name (which evaluates freeformType,
191186# which evaluates all the modules defined by the type)
192−checkConfigOutput '^"submodule"$' options.submodule.type.description ./declare-submodule-via-evalModules.nix
187+checkConfigOutput "submodule" options.submodule.type.description ./declare-submodule-via-evalModules.nix
193188
194189## Paths should be allowed as values and work as expected
195−checkConfigOutput '^true$' config.submodule.enable ./declare-submoduleWith-path.nix
190+checkConfigOutput "true" config.submodule.enable ./declare-submoduleWith-path.nix
196191
197192# Check that disabledModules works recursively and correctly
198−checkConfigOutput '^true$' config.enable ./disable-recursive/main.nix
199−checkConfigOutput '^true$' config.enable ./disable-recursive/{main.nix,disable-foo.nix}
200−checkConfigOutput '^true$' config.enable ./disable-recursive/{main.nix,disable-bar.nix}
193+checkConfigOutput "true" config.enable ./disable-recursive/main.nix
194+checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-foo.nix}
195+checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-bar.nix}
201196checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*: true' config.enable ./disable-recursive/{main.nix,disable-foo.nix,disable-bar.nix}
202197
203198# Check that imports can depend on derivations
204−checkConfigOutput '^true$' config.enable ./import-from-store.nix
199+checkConfigOutput "true" config.enable ./import-from-store.nix
205200
206201# Check that configs can be conditional on option existence
207−checkConfigOutput '^true$' config.enable ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix
208−checkConfigOutput '^360$' config.value ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix
209−checkConfigOutput '^7$' config.value ./define-option-dependently.nix ./declare-int-positive-value.nix
210−checkConfigOutput '^true$' config.set.enable ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix
211−checkConfigOutput '^360$' config.set.value ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix
212−checkConfigOutput '^7$' config.set.value ./define-option-dependently-nested.nix ./declare-int-positive-value-nested.nix
202+checkConfigOutput true config.enable ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix
203+checkConfigOutput 360 config.value ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix
204+checkConfigOutput 7 config.value ./define-option-dependently.nix ./declare-int-positive-value.nix
205+checkConfigOutput true config.set.enable ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix
206+checkConfigOutput 360 config.set.value ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix
207+checkConfigOutput 7 config.set.value ./define-option-dependently-nested.nix ./declare-int-positive-value-nested.nix
213208
214209# Check attrsOf and lazyAttrsOf. Only lazyAttrsOf should be lazy, and only
215210# attrsOf should work with conditional definitions
216211# In addition, lazyAttrsOf should honor an options emptyValue
217212checkConfigError "is not lazy" config.isLazy ./declare-attrsOf.nix ./attrsOf-lazy-check.nix
218−checkConfigOutput '^true$' config.isLazy ./declare-lazyAttrsOf.nix ./attrsOf-lazy-check.nix
219−checkConfigOutput '^true$' config.conditionalWorks ./declare-attrsOf.nix ./attrsOf-conditional-check.nix
220−checkConfigOutput '^false$' config.conditionalWorks ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix
221−checkConfigOutput '^"empty"$' config.value.foo ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix
213+checkConfigOutput "true" config.isLazy ./declare-lazyAttrsOf.nix ./attrsOf-lazy-check.nix
214+checkConfigOutput "true" config.conditionalWorks ./declare-attrsOf.nix ./attrsOf-conditional-check.nix
215+checkConfigOutput "false" config.conditionalWorks ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix
216+checkConfigOutput "empty" config.value.foo ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix
222217
223218
224219# Even with multiple assignments, a type error should be thrown if any of them aren't valid
@@ -227,109 +222,64 @@ checkConfigError 'A definition for option .* is not of type .*' \
227222
228223## Freeform modules
229224# Assigning without a declared option should work
230−checkConfigOutput '^"24"$' config.value ./freeform-attrsOf.nix ./define-value-string.nix
225+checkConfigOutput 24 config.value ./freeform-attrsOf.nix ./define-value-string.nix
231226# No freeform assigments shouldn't make it error
232−checkConfigOutput '^{ }$' config ./freeform-attrsOf.nix
227+checkConfigOutput '{ }' config ./freeform-attrsOf.nix
233228# but only if the type matches
234229checkConfigError 'A definition for option .* is not of type .*' config.value ./freeform-attrsOf.nix ./define-value-list.nix
235230# and properties should be applied
236−checkConfigOutput '^"yes"$' config.value ./freeform-attrsOf.nix ./define-value-string-properties.nix
231+checkConfigOutput yes config.value ./freeform-attrsOf.nix ./define-value-string-properties.nix
237232# Options should still be declarable, and be able to have a type that doesn't match the freeform type
238−checkConfigOutput '^false$' config.enable ./freeform-attrsOf.nix ./define-value-string.nix ./declare-enable.nix
239−checkConfigOutput '^"24"$' config.value ./freeform-attrsOf.nix ./define-value-string.nix ./declare-enable.nix
233+checkConfigOutput false config.enable ./freeform-attrsOf.nix ./define-value-string.nix ./declare-enable.nix
234+checkConfigOutput 24 config.value ./freeform-attrsOf.nix ./define-value-string.nix ./declare-enable.nix
240235# and this should work too with nested values
241−checkConfigOutput '^false$' config.nest.foo ./freeform-attrsOf.nix ./freeform-nested.nix
242−checkConfigOutput '^"bar"$' config.nest.bar ./freeform-attrsOf.nix ./freeform-nested.nix
236+checkConfigOutput false config.nest.foo ./freeform-attrsOf.nix ./freeform-nested.nix
237+checkConfigOutput bar config.nest.bar ./freeform-attrsOf.nix ./freeform-nested.nix
243238# Check whether a declared option can depend on an freeform-typed one
244−checkConfigOutput '^null$' config.foo ./freeform-attrsOf.nix ./freeform-str-dep-unstr.nix
245−checkConfigOutput '^"24"$' config.foo ./freeform-attrsOf.nix ./freeform-str-dep-unstr.nix ./define-value-string.nix
239+checkConfigOutput null config.foo ./freeform-attrsOf.nix ./freeform-str-dep-unstr.nix
240+checkConfigOutput 24 config.foo ./freeform-attrsOf.nix ./freeform-str-dep-unstr.nix ./define-value-string.nix
246241# Check whether an freeform-typed value can depend on a declared option, this can only work with lazyAttrsOf
247242checkConfigError 'infinite recursion encountered' config.foo ./freeform-attrsOf.nix ./freeform-unstr-dep-str.nix
248243checkConfigError 'The option .* is used but not defined' config.foo ./freeform-lazyAttrsOf.nix ./freeform-unstr-dep-str.nix
249−checkConfigOutput '^"24"$' config.foo ./freeform-lazyAttrsOf.nix ./freeform-unstr-dep-str.nix ./define-value-string.nix
250−# submodules in freeformTypes should have their locations annotated
251−checkConfigOutput '/freeform-submodules.nix"$' config.fooDeclarations.0 ./freeform-submodules.nix
252−# freeformTypes can get merged using `types.type`, including submodules
253−checkConfigOutput '^10$' config.free.xxx.foo ./freeform-submodules.nix
254−checkConfigOutput '^10$' config.free.yyy.bar ./freeform-submodules.nix
244+checkConfigOutput 24 config.foo ./freeform-lazyAttrsOf.nix ./freeform-unstr-dep-str.nix ./define-value-string.nix
255245
256246## types.anything
257247# Check that attribute sets are merged recursively
258−checkConfigOutput '^null$' config.value.foo ./types-anything/nested-attrs.nix
259−checkConfigOutput '^null$' config.value.l1.foo ./types-anything/nested-attrs.nix
260−checkConfigOutput '^null$' config.value.l1.l2.foo ./types-anything/nested-attrs.nix
261−checkConfigOutput '^null$' config.value.l1.l2.l3.foo ./types-anything/nested-attrs.nix
248+checkConfigOutput null config.value.foo ./types-anything/nested-attrs.nix
249+checkConfigOutput null config.value.l1.foo ./types-anything/nested-attrs.nix
250+checkConfigOutput null config.value.l1.l2.foo ./types-anything/nested-attrs.nix
251+checkConfigOutput null config.value.l1.l2.l3.foo ./types-anything/nested-attrs.nix
262252# Attribute sets that are coercible to strings shouldn't be recursed into
263−checkConfigOutput '^"foo"$' config.value.outPath ./types-anything/attrs-coercible.nix
253+checkConfigOutput foo config.value.outPath ./types-anything/attrs-coercible.nix
264254# Multiple lists aren't concatenated together
265255checkConfigError 'The option .* has conflicting definitions' config.value ./types-anything/lists.nix
266256# Check that all equalizable atoms can be used as long as all definitions are equal
267−checkConfigOutput '^0$' config.value.int ./types-anything/equal-atoms.nix
268−checkConfigOutput '^false$' config.value.bool ./types-anything/equal-atoms.nix
269−checkConfigOutput '^""$' config.value.string ./types-anything/equal-atoms.nix
270−checkConfigOutput '^/$' config.value.path ./types-anything/equal-atoms.nix
271−checkConfigOutput '^null$' config.value.null ./types-anything/equal-atoms.nix
272−checkConfigOutput '^0.1$' config.value.float ./types-anything/equal-atoms.nix
257+checkConfigOutput 0 config.value.int ./types-anything/equal-atoms.nix
258+checkConfigOutput false config.value.bool ./types-anything/equal-atoms.nix
259+checkConfigOutput '""' config.value.string ./types-anything/equal-atoms.nix
260+checkConfigOutput / config.value.path ./types-anything/equal-atoms.nix
261+checkConfigOutput null config.value.null ./types-anything/equal-atoms.nix
262+checkConfigOutput 0.1 config.value.float ./types-anything/equal-atoms.nix
273263# Functions can't be merged together
274264checkConfigError "The option .value.multiple-lambdas.<function body>. has conflicting option types" config.applied.multiple-lambdas ./types-anything/functions.nix
275−checkConfigOutput '^<LAMBDA>$' config.value.single-lambda ./types-anything/functions.nix
276−checkConfigOutput '^null$' config.applied.merging-lambdas.x ./types-anything/functions.nix
277−checkConfigOutput '^null$' config.applied.merging-lambdas.y ./types-anything/functions.nix
265+checkConfigOutput '<LAMBDA>' config.value.single-lambda ./types-anything/functions.nix
266+checkConfigOutput 'null' config.applied.merging-lambdas.x ./types-anything/functions.nix
267+checkConfigOutput 'null' config.applied.merging-lambdas.y ./types-anything/functions.nix
278268# Check that all mk* modifiers are applied
279269checkConfigError 'attribute .* not found' config.value.mkiffalse ./types-anything/mk-mods.nix
280−checkConfigOutput '^{ }$' config.value.mkiftrue ./types-anything/mk-mods.nix
281−checkConfigOutput '^1$' config.value.mkdefault ./types-anything/mk-mods.nix
282−checkConfigOutput '^{ }$' config.value.mkmerge ./types-anything/mk-mods.nix
283−checkConfigOutput '^true$' config.value.mkbefore ./types-anything/mk-mods.nix
284−checkConfigOutput '^1$' config.value.nested.foo ./types-anything/mk-mods.nix
285−checkConfigOutput '^"baz"$' config.value.nested.bar.baz ./types-anything/mk-mods.nix
270+checkConfigOutput '{ }' config.value.mkiftrue ./types-anything/mk-mods.nix
271+checkConfigOutput 1 config.value.mkdefault ./types-anything/mk-mods.nix
272+checkConfigOutput '{ }' config.value.mkmerge ./types-anything/mk-mods.nix
273+checkConfigOutput true config.value.mkbefore ./types-anything/mk-mods.nix
274+checkConfigOutput 1 config.value.nested.foo ./types-anything/mk-mods.nix
275+checkConfigOutput baz config.value.nested.bar.baz ./types-anything/mk-mods.nix
286276
287277## types.functionTo
288−checkConfigOutput '^"input is input"$' config.result ./functionTo/trivial.nix
289−checkConfigOutput '^"a b"$' config.result ./functionTo/merging-list.nix
278+checkConfigOutput "input is input" config.result ./functionTo/trivial.nix
279+checkConfigOutput "a b" config.result ./functionTo/merging-list.nix
290280checkConfigError 'A definition for option .fun.\[function body\]. is not of type .string.. Definition values:\n\s*- In .*wrong-type.nix' config.result ./functionTo/wrong-type.nix
291−checkConfigOutput '^"b a"$' config.result ./functionTo/list-order.nix
292−checkConfigOutput '^"a c"$' config.result ./functionTo/merging-attrs.nix
293−
294−# moduleType
295−checkConfigOutput '^"a b"$' config.resultFoo ./declare-variants.nix ./define-variant.nix
296−checkConfigOutput '^"a b y z"$' config.resultFooBar ./declare-variants.nix ./define-variant.nix
297−checkConfigOutput '^"a b c"$' config.resultFooFoo ./declare-variants.nix ./define-variant.nix
298−
299−## emptyValue's
300−checkConfigOutput "[ ]" config.list.a ./emptyValues.nix
301−checkConfigOutput "{ }" config.attrs.a ./emptyValues.nix
302−checkConfigOutput "null" config.null.a ./emptyValues.nix
303−checkConfigOutput "{ }" config.submodule.a ./emptyValues.nix
304−# These types don't have empty values
305−checkConfigError 'The option .int.a. is used but not defined' config.int.a ./emptyValues.nix
306−checkConfigError 'The option .nonEmptyList.a. is used but not defined' config.nonEmptyList.a ./emptyValues.nix
307−
308−## types.raw
309−checkConfigOutput "{ foo = <CODE>; }" config.unprocessedNesting ./raw.nix
310−checkConfigOutput "10" config.processedToplevel ./raw.nix
311−checkConfigError "The option .multiple. is defined multiple times" config.multiple ./raw.nix
312−checkConfigOutput "bar" config.priorities ./raw.nix
313−
314−## Option collision
315−checkConfigError \
316− 'The option .set. in module .*/declare-set.nix. would be a parent of the following options, but its type .attribute set of signed integers. does not support nested options.\n\s*- option[(]s[)] with prefix .set.enable. in module .*/declare-enable-nested.nix.' \
317− config.set \
318− ./declare-set.nix ./declare-enable-nested.nix
319−
320−# Test that types.optionType merges types correctly
321−checkConfigOutput '^10$' config.theOption.int ./optionTypeMerging.nix
322−checkConfigOutput '^"hello"$' config.theOption.str ./optionTypeMerging.nix
323−
324−# Test that types.optionType correctly annotates option locations
325−checkConfigError 'The option .theOption.nested. in .other.nix. is already declared in .optionTypeFile.nix.' config.theOption.nested ./optionTypeFile.nix
326−
327−# Test that types.optionType leaves types untouched as long as they don't need to be merged
328−checkConfigOutput 'ok' config.freeformItems.foo.bar ./adhoc-freeformType-survives-type-merge.nix
329−
330−# Anonymous submodules don't get nixed by import resolution/deduplication
331−# because of an `extendModules` bug, issue 168767.
332−checkConfigOutput '^1$' config.sub.specialisation.value ./extendModules-168767-imports.nix
281+checkConfigOutput "b a" config.result ./functionTo/list-order.nix
282+checkConfigOutput "a c" config.result ./functionTo/merging-attrs.nix
333283
334284cat <<EOF
335285====== module tests ======
@@ -337,7 +287,7 @@ $pass Pass
337287$fail Fail
338288EOF
339289
340−if [ "$fail" -ne 0 ]; then
290+if test $fail -ne 0; then
341291 exit 1
342292fi
343293exit 0
lib/tests/modules/adhoc-freeformType-survives-type-merge.nixdeleted−14
@@ -1,14 +0,0 @@
1−{ lib, ... }: {
2− options.dummy = lib.mkOption { type = lib.types.anything; default = {}; };
3− freeformType =
4− let
5− a = lib.types.attrsOf (lib.types.submodule { options.bar = lib.mkOption { }; });
6− in
7− # modifying types like this breaks type merging.
8− # This test makes sure that type merging is not performed when only a single declaration exists.
9− # Don't modify types in practice!
10− a // {
11− merge = loc: defs: { freeformItems = a.merge loc defs; };
12− };
13− config.foo.bar = "ok";
14−}
lib/tests/modules/declare-attrsOf.nix+1−8
@@ -1,13 +1,6 @@
1−{ lib, ... }:
2−let
3− deathtrapArgs = lib.mapAttrs
4− (k: _: throw "The module system is too strict, accessing an unused option's ${k} mkOption-attribute.")
5− (lib.functionArgs lib.mkOption);
6−in
7−{
1+{ lib, ... }: {
82 options.value = lib.mkOption {
93 type = lib.types.attrsOf lib.types.str;
104 default = {};
115 };
12− options.testing-laziness-so-don't-read-me = lib.mkOption deathtrapArgs;
136}
lib/tests/modules/declare-bare-submodule-deep-option-duplicate.nixdeleted−10
@@ -1,10 +0,0 @@
1−{ lib, ... }:
2−let
3− inherit (lib) mkOption types;
4−in
5−{
6− options.bare-submodule.deep = mkOption {
7− type = types.int;
8− default = 2;
9− };
10−}
lib/tests/modules/declare-bare-submodule-deep-option.nixdeleted−10
@@ -1,10 +0,0 @@
1−{ lib, ... }:
2−let
3− inherit (lib) mkOption types;
4−in
5−{
6− options.bare-submodule.deep = mkOption {
7− type = types.int;
8− default = 2;
9− };
10−}
lib/tests/modules/declare-bare-submodule-nested-option.nixdeleted−19
@@ -1,19 +0,0 @@
1−{ config, lib, ... }:
2−let
3− inherit (lib) mkOption types;
4−in
5−{
6− options.bare-submodule = mkOption {
7− type = types.submoduleWith {
8− shorthandOnlyDefinesConfig = config.shorthandOnlyDefinesConfig;
9− modules = [
10− {
11− options.nested = mkOption {
12− type = types.int;
13− default = 1;
14− };
15− }
16− ];
17− };
18− };
19−}
lib/tests/modules/declare-bare-submodule.nixdeleted−18
@@ -1,18 +0,0 @@
1−{ config, lib, ... }:
2−let
3− inherit (lib) mkOption types;
4−in
5−{
6− options.bare-submodule = mkOption {
7− type = types.submoduleWith {
8− modules = [ ];
9− shorthandOnlyDefinesConfig = config.shorthandOnlyDefinesConfig;
10− };
11− default = {};
12− };
13−
14− # config-dependent options: won't recommend, but useful for making this test parameterized
15− options.shorthandOnlyDefinesConfig = mkOption {
16− default = false;
17− };
18−}
lib/tests/modules/declare-set.nixdeleted−12
@@ -1,12 +0,0 @@
1−{ lib, ... }:
2−
3−{
4− options.set = lib.mkOption {
5− default = { };
6− example = { a = 1; };
7− type = lib.types.attrsOf lib.types.int;
8− description = ''
9− Some descriptive text
10− '';
11− };
12−}
lib/tests/modules/declare-variants.nixdeleted−9
@@ -1,9 +0,0 @@
1−{ lib, moduleType, ... }:
2−let inherit (lib) mkOption types;
3−in
4−{
5− options.variants = mkOption {
6− type = types.lazyAttrsOf moduleType;
7− default = {};
8− };
9−}
lib/tests/modules/define-bare-submodule-values.nixdeleted−4
@@ -1,4 +0,0 @@
1−{
2− bare-submodule.nested = 42;
3− bare-submodule.deep = 420;
4−}
lib/tests/modules/define-shorthandOnlyDefinesConfig-true.nixdeleted−1
@@ -1 +0,0 @@
1−{ shorthandOnlyDefinesConfig = true; }
lib/tests/modules/define-variant.nixdeleted−22
@@ -1,22 +0,0 @@
1−{ config, lib, ... }:
2−let inherit (lib) types mkOption attrNames;
3−in
4−{
5− options = {
6− attrs = mkOption { type = types.attrsOf lib.types.int; };
7− result = mkOption { };
8− resultFoo = mkOption { };
9− resultFooBar = mkOption { };
10− resultFooFoo = mkOption { };
11− };
12− config = {
13− attrs.a = 1;
14− variants.foo.attrs.b = 1;
15− variants.bar.attrs.y = 1;
16− variants.foo.variants.bar.attrs.z = 1;
17− variants.foo.variants.foo.attrs.c = 3;
18− resultFoo = lib.concatMapStringsSep " " toString (attrNames config.variants.foo.attrs);
19− resultFooBar = lib.concatMapStringsSep " " toString (attrNames config.variants.foo.variants.bar.attrs);
20− resultFooFoo = lib.concatMapStringsSep " " toString (attrNames config.variants.foo.variants.foo.attrs);
21− };
22−}
lib/tests/modules/emptyValues.nixdeleted−36
@@ -1,36 +0,0 @@
1−{ lib, ... }:
2−let
3− inherit (lib) types;
4−in {
5−
6− options = {
7− int = lib.mkOption {
8− type = types.lazyAttrsOf types.int;
9− };
10− list = lib.mkOption {
11− type = types.lazyAttrsOf (types.listOf types.int);
12− };
13− nonEmptyList = lib.mkOption {
14− type = types.lazyAttrsOf (types.nonEmptyListOf types.int);
15− };
16− attrs = lib.mkOption {
17− type = types.lazyAttrsOf (types.attrsOf types.int);
18− };
19− null = lib.mkOption {
20− type = types.lazyAttrsOf (types.nullOr types.int);
21− };
22− submodule = lib.mkOption {
23− type = types.lazyAttrsOf (types.submodule {});
24− };
25− };
26−
27− config = {
28− int.a = lib.mkIf false null;
29− list.a = lib.mkIf false null;
30− nonEmptyList.a = lib.mkIf false null;
31− attrs.a = lib.mkIf false null;
32− null.a = lib.mkIf false null;
33− submodule.a = lib.mkIf false null;
34− };
35−
36−}
lib/tests/modules/extendModules-168767-imports.nixdeleted−41
@@ -1,41 +0,0 @@
1−{ lib
2−, extendModules
3−, ...
4−}:
5−with lib;
6−{
7− imports = [
8−
9− {
10− options.sub = mkOption {
11− default = { };
12− type = types.submodule (
13− { config
14− , extendModules
15− , ...
16− }:
17− {
18− options.value = mkOption {
19− type = types.int;
20− };
21−
22− options.specialisation = mkOption {
23− default = { };
24− inherit
25− (extendModules {
26− modules = [{
27− specialisation = mkOverride 0 { };
28− }];
29− })
30− type;
31− };
32− }
33− );
34− };
35− }
36−
37− { config.sub.value = 1; }
38−
39−
40− ];
41−}
lib/tests/modules/freeform-nested.nix+1−8
@@ -1,14 +1,7 @@
1−{ lib, ... }:
2−let
3− deathtrapArgs = lib.mapAttrs
4− (k: _: throw "The module system is too strict, accessing an unused option's ${k} mkOption-attribute.")
5− (lib.functionArgs lib.mkOption);
6−in
7−{
1+{ lib, ... }: {
82 options.nest.foo = lib.mkOption {
93 type = lib.types.bool;
104 default = false;
115 };
12− options.nest.unused = lib.mkOption deathtrapArgs;
136 config.nest.bar = "bar";
147}
lib/tests/modules/freeform-submodules.nixdeleted−22
@@ -1,22 +0,0 @@
1−{ lib, options, ... }: with lib.types; {
2−
3− options.fooDeclarations = lib.mkOption {
4− default = (options.free.type.getSubOptions [])._freeformOptions.foo.declarations;
5− };
6−
7− options.free = lib.mkOption {
8− type = submodule {
9− config._module.freeformType = lib.mkMerge [
10− (attrsOf (submodule {
11− options.foo = lib.mkOption {};
12− }))
13− (attrsOf (submodule {
14− options.bar = lib.mkOption {};
15− }))
16− ];
17− };
18− };
19−
20− config.free.xxx.foo = 10;
21− config.free.yyy.bar = 10;
22−}
lib/tests/modules/optionTypeFile.nixdeleted−28
@@ -1,28 +0,0 @@
1−{ config, lib, ... }: {
2−
3− _file = "optionTypeFile.nix";
4−
5− options.theType = lib.mkOption {
6− type = lib.types.optionType;
7− };
8−
9− options.theOption = lib.mkOption {
10− type = config.theType;
11− default = {};
12− };
13−
14− config.theType = lib.mkMerge [
15− (lib.types.submodule {
16− options.nested = lib.mkOption {
17− type = lib.types.int;
18− };
19− })
20− (lib.types.submodule {
21− _file = "other.nix";
22− options.nested = lib.mkOption {
23− type = lib.types.str;
24− };
25− })
26− ];
27−
28−}
lib/tests/modules/optionTypeMerging.nixdeleted−27
@@ -1,27 +0,0 @@
1−{ config, lib, ... }: {
2−
3− options.theType = lib.mkOption {
4− type = lib.types.optionType;
5− };
6−
7− options.theOption = lib.mkOption {
8− type = config.theType;
9− };
10−
11− config.theType = lib.mkMerge [
12− (lib.types.submodule {
13− options.int = lib.mkOption {
14− type = lib.types.int;
15− default = 10;
16− };
17− })
18− (lib.types.submodule {
19− options.str = lib.mkOption {
20− type = lib.types.str;
21− };
22− })
23− ];
24−
25− config.theOption.str = "hello";
26−
27−}
lib/tests/modules/raw.nixdeleted−30
@@ -1,30 +0,0 @@
1−{ lib, ... }: {
2−
3− options = {
4− processedToplevel = lib.mkOption {
5− type = lib.types.raw;
6− };
7− unprocessedNesting = lib.mkOption {
8− type = lib.types.raw;
9− };
10− multiple = lib.mkOption {
11− type = lib.types.raw;
12− };
13− priorities = lib.mkOption {
14− type = lib.types.raw;
15− };
16− };
17−
18− config = {
19− processedToplevel = lib.mkIf true 10;
20− unprocessedNesting.foo = throw "foo";
21− multiple = lib.mkMerge [
22− "foo"
23− "foo"
24− ];
25− priorities = lib.mkMerge [
26− "foo"
27− (lib.mkForce "bar")
28− ];
29− };
30−}
lib/tests/sources.sh+6−8
@@ -1,6 +1,5 @@
11#!/usr/bin/env bash
22set -euo pipefail
3−shopt -s inherit_errexit
43
54# Use
65# || die
@@ -10,18 +9,17 @@ die() {
109}
1110
1211if test -n "${TEST_LIB:-}"; then
13− NIX_PATH=nixpkgs="$(dirname "$TEST_LIB")"
12+ export NIX_PATH=nixpkgs="$(dirname "$TEST_LIB")"
1413else
15− NIX_PATH=nixpkgs="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.."; pwd)"
14+ export NIX_PATH=nixpkgs="$(cd $(dirname ${BASH_SOURCE[0]})/../..; pwd)"
1615fi
17−export NIX_PATH
1816
1917work="$(mktemp -d)"
2018clean_up() {
2119 rm -rf "$work"
2220}
2321trap clean_up EXIT
24−cd "$work"
22+cd $work
2523
2624touch {README.md,module.o,foo.bar}
2725
@@ -31,7 +29,7 @@ touch {README.md,module.o,foo.bar}
3129dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${
3230 cleanSource ./.
3331}")')"
34−(cd "$dir"; find) | sort -f | diff -U10 - <(cat <<EOF
32+(cd $dir; find) | sort -f | diff -U10 - <(cat <<EOF
3533.
3634./foo.bar
3735./README.md
@@ -42,7 +40,7 @@ EOF
4240dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${
4341 cleanSourceWith { src = '"$work"'; filter = path: type: ! hasSuffix ".bar" path; }
4442}")')"
45−(cd "$dir"; find) | sort -f | diff -U10 - <(cat <<EOF
43+(cd $dir; find) | sort -f | diff -U10 - <(cat <<EOF
4644.
4745./module.o
4846./README.md
@@ -52,7 +50,7 @@ EOF
5250dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${
5351 cleanSourceWith { src = cleanSource '"$work"'; filter = path: type: ! hasSuffix ".bar" path; }
5452}")')"
55−(cd "$dir"; find) | sort -f | diff -U10 - <(cat <<EOF
53+(cd $dir; find) | sort -f | diff -U10 - <(cat <<EOF
5654.
5755./README.md
5856EOF
lib/tests/systems.nix+2−5
@@ -17,11 +17,8 @@ with lib.systems.doubles; lib.runTests {
1717
1818 testarm = mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv6l-netbsd" "armv6l-none" "armv7a-linux" "armv7a-netbsd" "armv7l-linux" "armv7l-netbsd" "arm-none" "armv7a-darwin" ];
1919 testi686 = mseteq i686 [ "i686-linux" "i686-freebsd" "i686-genode" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" "i686-none" "i686-darwin" ];
20− testmips = mseteq mips [ "mips64el-linux" "mipsel-linux" "mipsel-netbsd" ];
20+ testmips = mseteq mips [ "mipsel-linux" "mipsel-netbsd" ];
2121 testmmix = mseteq mmix [ "mmix-mmixware" ];
22− testriscv = mseteq riscv [ "riscv32-linux" "riscv64-linux" "riscv32-netbsd" "riscv64-netbsd" "riscv32-none" "riscv64-none" ];
23− testriscv32 = mseteq riscv32 [ "riscv32-linux" "riscv32-netbsd" "riscv32-none" ];
24− testriscv64 = mseteq riscv64 [ "riscv64-linux" "riscv64-netbsd" "riscv64-none" ];
2522 testx86_64 = mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-genode" "x86_64-redox" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" "x86_64-windows" "x86_64-none" ];
2623
2724 testcygwin = mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ];
@@ -31,7 +28,7 @@ with lib.systems.doubles; lib.runTests {
3128 testredox = mseteq redox [ "x86_64-redox" ];
3229 testgnu = mseteq gnu (linux /* ++ kfreebsd ++ ... */);
3330 testillumos = mseteq illumos [ "x86_64-solaris" ];
34− testlinux = mseteq linux [ "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "mips64el-linux" "mipsel-linux" "riscv32-linux" "riscv64-linux" "x86_64-linux" "powerpc64-linux" "powerpc64le-linux" "m68k-linux" "s390-linux" "s390x-linux" ];
31+ testlinux = mseteq linux [ "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "mipsel-linux" "riscv32-linux" "riscv64-linux" "x86_64-linux" "powerpc64-linux" "powerpc64le-linux" "m68k-linux" "s390-linux" "s390x-linux" ];
3532 testnetbsd = mseteq netbsd [ "aarch64-netbsd" "armv6l-netbsd" "armv7a-netbsd" "armv7l-netbsd" "i686-netbsd" "m68k-netbsd" "mipsel-netbsd" "powerpc-netbsd" "riscv32-netbsd" "riscv64-netbsd" "x86_64-netbsd" ];
3633 testopenbsd = mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ];
3734 testwindows = mseteq windows [ "i686-cygwin" "x86_64-cygwin" "i686-windows" "x86_64-windows" ];
lib/trivial.nix+7−103
@@ -61,11 +61,11 @@ rec {
6161 pipe = val: functions:
6262 let reverseApply = x: f: f x;
6363 in builtins.foldl' reverseApply val functions;
64−
65− # note please don’t add a function like `compose = flip pipe`.
66− # This would confuse users, because the order of the functions
67− # in the list is not clear. With pipe, it’s obvious that it
68− # goes first-to-last. With `compose`, not so much.
64+ /* note please don’t add a function like `compose = flip pipe`.
65+ This would confuse users, because the order of the functions
66+ in the list is not clear. With pipe, it’s obvious that it
67+ goes first-to-last. With `compose`, not so much.
68+ */
6969
7070 ## Named versions corresponding to some builtin operators.
7171
@@ -166,36 +166,12 @@ rec {
166166 /* Returns the current nixpkgs release number as string. */
167167 release = lib.strings.fileContents ../.version;
168168
169− /* The latest release that is supported, at the time of release branch-off,
170− if applicable.
171−
172− Ideally, out-of-tree modules should be able to evaluate cleanly with all
173− supported Nixpkgs versions (master, release and old release until EOL).
174− So if possible, deprecation warnings should take effect only when all
175− out-of-tree expressions/libs/modules can upgrade to the new way without
176− losing support for supported Nixpkgs versions.
177−
178− This release number allows deprecation warnings to be implemented such that
179− they take effect as soon as the oldest release reaches end of life. */
180− oldestSupportedRelease =
181− # Update on master only. Do not backport.
182− 2111;
183−
184− /* Whether a feature is supported in all supported releases (at the time of
185− release branch-off, if applicable). See `oldestSupportedRelease`. */
186− isInOldestRelease =
187− /* Release number of feature introduction as an integer, e.g. 2111 for 21.11.
188− Set it to the upcoming release, matching the nixpkgs/.version file.
189− */
190− release:
191− release <= lib.trivial.oldestSupportedRelease;
192−
193169 /* Returns the current nixpkgs release code name.
194170
195171 On each release the first letter is bumped and a new animal is chosen
196172 starting with that new letter.
197173 */
198− codeName = "Quokka";
174+ codeName = "Porcupine";
199175
200176 /* Returns the current nixpkgs version suffix as string. */
201177 versionSuffix =
@@ -347,60 +323,7 @@ rec {
347323
348324 Type: bool -> string -> a -> a
349325 */
350− warnIf = cond: msg: if cond then warn msg else x: x;
351−
352− /*
353− Like warnIf, but negated (warn if the first argument is `false`).
354−
355− Type: bool -> string -> a -> a
356− */
357− warnIfNot = cond: msg: if cond then x: x else warn msg;
358−
359− /*
360− Like the `assert b; e` expression, but with a custom error message and
361− without the semicolon.
362−
363− If true, return the identity function, `r: r`.
364−
365− If false, throw the error message.
366−
367− Calls can be juxtaposed using function application, as `(r: r) a = a`, so
368− `(r: r) (r: r) a = a`, and so forth.
369−
370− Type: bool -> string -> a -> a
371−
372− Example:
373−
374− throwIfNot (lib.isList overlays) "The overlays argument to nixpkgs must be a list."
375− lib.foldr (x: throwIfNot (lib.isFunction x) "All overlays passed to nixpkgs must be functions.") (r: r) overlays
376− pkgs
377−
378− */
379− throwIfNot = cond: msg: if cond then x: x else throw msg;
380−
381− /*
382− Like throwIfNot, but negated (throw if the first argument is `true`).
383−
384− Type: bool -> string -> a -> a
385− */
386− throwIf = cond: msg: if cond then throw msg else x: x;
387−
388− /* Check if the elements in a list are valid values from a enum, returning the identity function, or throwing an error message otherwise.
389−
390− Example:
391− let colorVariants = ["bright" "dark" "black"]
392− in checkListOfEnum "color variants" [ "standard" "light" "dark" ] colorVariants;
393− =>
394− error: color variants: bright, black unexpected; valid ones: standard, light, dark
395−
396− Type: String -> List ComparableVal -> List ComparableVal -> a -> a
397− */
398− checkListOfEnum = msg: valid: given:
399− let
400− unexpected = lib.subtractLists valid given;
401− in
402− lib.throwIfNot (unexpected == [])
403− "${msg}: ${builtins.concatStringsSep ", " (builtins.map builtins.toString unexpected)} unexpected; valid ones: ${builtins.concatStringsSep ", " (builtins.map builtins.toString valid)}";
326+ warnIf = cond: msg: if cond then warn msg else id;
404327
405328 info = msg: builtins.trace "INFO: ${msg}";
406329
@@ -441,25 +364,6 @@ rec {
441364 isFunction = f: builtins.isFunction f ||
442365 (f ? __functor && isFunction (f.__functor f));
443366
444− /*
445− Turns any non-callable values into constant functions.
446− Returns callable values as is.
447−
448− Example:
449−
450− nix-repl> lib.toFunction 1 2
451− 1
452−
453− nix-repl> lib.toFunction (x: x + 1) 2
454− 3
455− */
456− toFunction =
457− # Any value
458− v:
459− if isFunction v
460− then v
461− else k: v;
462−
463367 /* Convert the given positive integer to a string of its hexadecimal
464368 representation. For example:
465369
lib/types.nix+22−100
@@ -32,6 +32,7 @@ let
3232 last
3333 length
3434 tail
35+ unique
3536 ;
3637 inherit (lib.attrsets)
3738 attrNames
@@ -47,7 +48,6 @@ let
4748 mergeDefaultOption
4849 mergeEqualOption
4950 mergeOneOption
50− mergeUniqueOption
5151 showFiles
5252 showOption
5353 ;
@@ -61,11 +61,7 @@ let
6161 boolToString
6262 ;
6363
64− inherit (lib.modules)
65− mergeDefinitions
66− fixupOptionType
67− mergeOptionDecls
68− ;
64+ inherit (lib.modules) mergeDefinitions;
6965 outer_types =
7066rec {
7167 isType = type: x: (x._type or "") == type;
@@ -166,13 +162,6 @@ rec {
166162 # nixos/doc/manual/development/option-types.xml!
167163 types = rec {
168164
169− raw = mkOptionType rec {
170− name = "raw";
171− description = "raw value";
172− check = value: true;
173− merge = mergeOneOption;
174− };
175−
176165 anything = mkOptionType {
177166 name = "anything";
178167 description = "anything";
@@ -311,19 +300,6 @@ rec {
311300 inherit (str) merge;
312301 };
313302
314− # Allow a newline character at the end and trim it in the merge function.
315− singleLineStr =
316− let
317− inherit (strMatching "[^\n\r]*\n?") check merge;
318− in
319− mkOptionType {
320− name = "singleLineStr";
321− description = "(optionally newline-terminated) single-line string";
322− inherit check;
323− merge = loc: defs:
324− lib.removeSuffix "\n" (merge loc defs);
325− };
326−
327303 strMatching = pattern: mkOptionType {
328304 name = "strMatching ${escapeNixString pattern}";
329305 description = "string matching the pattern ${pattern}";
@@ -368,21 +344,13 @@ rec {
368344 emptyValue = { value = {}; };
369345 };
370346
371− # A package is a top-level store path (/nix/store/hash-name). This includes:
372− # - derivations
373− # - more generally, attribute sets with an `outPath` or `__toString` attribute
374− # pointing to a store path, e.g. flake inputs
375− # - strings with context, e.g. "${pkgs.foo}" or (toString pkgs.foo)
376− # - hardcoded store path literals (/nix/store/hash-foo) or strings without context
377− # ("/nix/store/hash-foo"). These get a context added to them using builtins.storePath.
347+ # derivation is a reserved keyword.
378348 package = mkOptionType {
379349 name = "package";
380350 check = x: isDerivation x || isStorePath x;
381351 merge = loc: defs:
382352 let res = mergeOneOption loc defs;
383− in if builtins.isPath res || (builtins.isString res && ! builtins.hasContext res)
384− then toDerivation res
385− else res;
353+ in if isDerivation res then res else toDerivation res;
386354 };
387355
388356 shellPackage = package // {
@@ -409,7 +377,7 @@ rec {
409377 ).optionalValue
410378 ) def.value
411379 ) defs)));
412− emptyValue = { value = []; };
380+ emptyValue = { value = {}; };
413381 getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["*"]);
414382 getSubModules = elemType.getSubModules;
415383 substSubModules = m: listOf (elemType.substSubModules m);
@@ -421,7 +389,7 @@ rec {
421389 let list = addCheck (types.listOf elemType) (l: l != []);
422390 in list // {
423391 description = "non-empty " + list.description;
424− emptyValue = { }; # no .value attr, meaning unset
392+ # Note: emptyValue is left as is, because another module may define an element.
425393 };
426394
427395 attrsOf = elemType: mkOptionType rec {
@@ -489,18 +457,6 @@ rec {
489457 nestedTypes.elemType = elemType;
490458 };
491459
492− unique = { message }: type: mkOptionType rec {
493− name = "unique";
494− inherit (type) description check;
495− merge = mergeUniqueOption { inherit message; };
496− emptyValue = type.emptyValue;
497− getSubOptions = type.getSubOptions;
498− getSubModules = type.getSubModules;
499− substSubModules = m: uniq (type.substSubModules m);
500− functor = (defaultFunctor name) // { wrapped = type; };
501− nestedTypes.elemType = type;
502− };
503−
504460 # Null or value of ...
505461 nullOr = elemType: mkOptionType rec {
506462 name = "nullOr";
@@ -522,7 +478,7 @@ rec {
522478
523479 functionTo = elemType: mkOptionType {
524480 name = "functionTo";
525− description = "function that evaluates to a(n) ${elemType.description}";
481+ description = "function that evaluates to a(n) ${elemType.name}";
526482 check = isFunction;
527483 merge = loc: defs:
528484 fnArgs: (mergeDefinitions (loc ++ [ "[function body]" ]) elemType (map (fn: { inherit (fn) file; value = fn.value fnArgs; }) defs)).mergedValue;
@@ -537,58 +493,22 @@ rec {
537493 modules = toList modules;
538494 };
539495
540− # The type of a type!
541− optionType = mkOptionType {
542− name = "optionType";
543− description = "optionType";
544− check = value: value._type or null == "option-type";
545− merge = loc: defs:
546− if length defs == 1
547− then (head defs).value
548− else let
549− # Prepares the type definitions for mergeOptionDecls, which
550− # annotates submodules types with file locations
551− optionModules = map ({ value, file }:
552− {
553− _file = file;
554− # There's no way to merge types directly from the module system,
555− # but we can cheat a bit by just declaring an option with the type
556− options = lib.mkOption {
557− type = value;
558− };
559− }
560− ) defs;
561− # Merges all the types into a single one, including submodule merging.
562− # This also propagates file information to all submodules
563− mergedOption = fixupOptionType loc (mergeOptionDecls loc optionModules);
564− in mergedOption.type;
565− };
566−
567496 submoduleWith =
568497 { modules
569498 , specialArgs ? {}
570499 , shorthandOnlyDefinesConfig ? false
571−
572− # Internal variable to avoid `_key` collisions regardless
573− # of `extendModules`. Wired through by `evalModules`.
574− # Test case: lib/tests/modules, "168767"
575− , extensionOffset ? 0
576500 }@attrs:
577501 let
578502 inherit (lib.modules) evalModules;
579503
580− shorthandToModule = if shorthandOnlyDefinesConfig == false
581− then value: value
582− else value: { config = value; };
504+ coerce = unify: value: if isFunction value
505+ then setFunctionArgs (args: unify (value args)) (functionArgs value)
506+ else unify (if shorthandOnlyDefinesConfig then { config = value; } else value);
583507
584508 allModules = defs: imap1 (n: { value, file }:
585− if isFunction value
586− then setFunctionArgs
587− (args: lib.modules.unifyModuleSyntax file "${toString file}-${toString (n + extensionOffset)}" (value args))
588− (functionArgs value)
589− else if isAttrs value
590− then
591− lib.modules.unifyModuleSyntax file "${toString file}-${toString (n + extensionOffset)}" (shorthandToModule value)
509+ if isAttrs value || isFunction value then
510+ # Annotate the value with the location of its definition for better error messages
511+ coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value
592512 else value
593513 ) defs;
594514
@@ -625,7 +545,6 @@ rec {
625545 (base.extendModules {
626546 modules = [ { _module.args.name = last loc; } ] ++ allModules defs;
627547 prefix = loc;
628− extensionOffset = extensionOffset + length defs;
629548 }).config;
630549 emptyValue = { value = {}; };
631550 getSubOptions = prefix: (base.extendModules
@@ -657,11 +576,7 @@ rec {
657576 then lhs.specialArgs // rhs.specialArgs
658577 else throw "A submoduleWith option is declared multiple times with the same specialArgs \"${toString (attrNames intersecting)}\"";
659578 shorthandOnlyDefinesConfig =
660− if lhs.shorthandOnlyDefinesConfig == null
661− then rhs.shorthandOnlyDefinesConfig
662− else if rhs.shorthandOnlyDefinesConfig == null
663− then lhs.shorthandOnlyDefinesConfig
664− else if lhs.shorthandOnlyDefinesConfig == rhs.shorthandOnlyDefinesConfig
579+ if lhs.shorthandOnlyDefinesConfig == rhs.shorthandOnlyDefinesConfig
665580 then lhs.shorthandOnlyDefinesConfig
666581 else throw "A submoduleWith option is declared multiple times with conflicting shorthandOnlyDefinesConfig values";
667582 };
@@ -671,7 +586,6 @@ rec {
671586 # A value from a set of allowed ones.
672587 enum = values:
673588 let
674− inherit (lib.lists) unique;
675589 show = v:
676590 if builtins.isString v then ''"${v}"''
677591 else if builtins.isInt v then builtins.toString v
@@ -755,6 +669,14 @@ rec {
755669 nestedTypes.finalType = finalType;
756670 };
757671
672+ # Obsolete alternative to configOf. It takes its option
673+ # declarations from the ‘options’ attribute of containing option
674+ # declaration.
675+ optionSet = mkOptionType {
676+ name = "optionSet";
677+ description = "option set";
678+ deprecationMessage = "Use `types.submodule' instead";
679+ };
758680 # Augment the given type with an additional type check function.
759681 addCheck = elemType: check: elemType // { check = x: elemType.check x && check x; };
760682
maintainers/maintainer-list.nix+156−1456
@@ -95,12 +95,6 @@
9595 githubId = 7414843;
9696 name = "Nicholas von Klitzing";
9797 };
98− _13r0ck = {
99− name = "Brock Szuszczewicz";
100− email = "bnr@tuta.io";
101− github = "13r0ck";
102− githubId = 58987761;
103− };
10498 _3noch = {
10599 email = "eacameron@gmail.com";
106100 github = "3noch";
@@ -125,12 +119,6 @@
125119 githubId = 241628;
126120 name = "Adam Russell";
127121 };
128− aadibajpai = {
129− email = "hello@aadibajpai.com";
130− github = "aadibajpai";
131− githubId = 27063113;
132− name = "Aadi Bajpai";
133− };
134122 aanderse = {
135123 email = "aaron@fosslib.net";
136124 matrix = "@aanderse:nixos.dev";
@@ -145,12 +133,6 @@
145133 githubId = 16829510;
146134 name = "Aaron Janse";
147135 };
148− aaronjheng = {
149− email = "wentworth@outlook.com";
150− github = "aaronjheng";
151− githubId = 806876;
152− name = "Aaron Jheng";
153− };
154136 aaronschif = {
155137 email = "aaronschif@gmail.com";
156138 github = "aaronschif";
@@ -296,12 +278,6 @@
296278 githubId = 1250775;
297279 name = "Adolfo E. García Castro";
298280 };
299− AdsonCicilioti = {
300− name = "Adson Cicilioti";
301− email = "adson.cicilioti@live.com";
302− github = "AdsonCicilioti";
303− githubId = 6278398;
304− };
305281 adsr = {
306282 email = "as@php.net";
307283 github = "adsr";
@@ -375,16 +351,10 @@
375351 name = "AmirHossein Roozbahani";
376352 };
377353 ahuzik = {
378− email = "ah1990au@gmail.com";
379− github = "alesya-h";
354+ email = "ales.guzik@gmail.com";
355+ github = "alesguzik";
380356 githubId = 209175;
381− name = "Alesya Huzik";
382− };
383− aidalgol = {
384− email = "aidalgol+nixpkgs@fastmail.net";
385− github = "aidalgol";
386− githubId = 2313201;
387− name = "Aidan Gauland";
357+ name = "Ales Huzik";
388358 };
389359 aij = {
390360 email = "aij+git@mrph.org";
@@ -525,11 +495,9 @@
525495 githubId = 38869148;
526496 name = "Alex Eyre";
527497 };
528− algram = {
529− email = "aliasgram@gmail.com";
530− github = "Algram";
531− githubId = 5053729;
532− name = "Alias Gram";
498+ algorith = {
499+ email = "dries_van_daele@telenet.be";
500+ name = "Dries Van Daele";
533501 };
534502 alibabzo = {
535503 email = "alistair.bill@gmail.com";
@@ -613,12 +581,6 @@
613581 githubId = 15623522;
614582 name = "Amar Paul";
615583 };
616− amarshall = {
617− email = "andrew@johnandrewmarshall.com";
618− github = "amarshall";
619− githubId = 153175;
620− name = "Andrew Marshall";
621− };
622584 ambroisie = {
623585 email = "bruno.nixpkgs@belanyi.fr";
624586 github = "ambroisie";
@@ -641,12 +603,6 @@
641603 fingerprint = "7931 EB4E 4712 D7BE 04F8 6D34 07EE 1FFC A58A 11C5";
642604 }];
643605 };
644− amfl = {
645− email = "amfl@none.none";
646− github = "amfl";
647− githubId = 382798;
648− name = "amfl";
649− };
650606 amiddelk = {
651607 email = "amiddelk@gmail.com";
652608 github = "amiddelk";
@@ -681,18 +637,6 @@
681637 githubId = 858965;
682638 name = "Andrew Morsillo";
683639 };
684− an-empty-string = {
685− name = "Tris Emmy Wilson";
686− email = "tris@tris.fyi";
687− github = "an-empty-string";
688− githubId = 681716;
689− };
690− AnatolyPopov = {
691− email = "aipopov@live.ru";
692− github = "AnatolyPopov";
693− githubId = 2312534;
694− name = "Anatolii Popov";
695− };
696640 andehen = {
697641 email = "git@andehen.net";
698642 github = "andehen";
@@ -795,6 +739,13 @@
795739 githubId = 11699655;
796740 name = "Stanislas Lange";
797741 };
742+ angustrau = {
743+ name = "Angus Trau";
744+ email = "nix@angus.ws";
745+ matrix = "@angustrau:matrix.org";
746+ github = "angustrau";
747+ githubId = 13267947;
748+ };
798749 anhdle14 = {
799750 name = "Le Anh Duc";
800751 email = "anhdle14@icloud.com";
@@ -841,13 +792,6 @@
841792 githubId = 5327697;
842793 name = "Anatolii Prylutskyi";
843794 };
844− anselmschueler = {
845− email = "mail@anselmschueler.com";
846− github = "schuelermine";
847− githubId = 48802534;
848− name = "Anselm Schüler";
849− matrix = "@schuelermine:matrix.org";
850− };
851795 antoinerg = {
852796 email = "roygobeil.antoine@gmail.com";
853797 github = "antoinerg";
@@ -960,12 +904,6 @@
960904 githubId = 1296771;
961905 name = "Anders Riutta";
962906 };
963− arjan-s = {
964− email = "github@anymore.nl";
965− github = "arjan-s";
966− githubId = 10400299;
967− name = "Arjan Schrijver";
968− };
969907 arkivm = {
970908 email = "vikram186@gmail.com";
971909 github = "arkivm";
@@ -990,12 +928,6 @@
990928 githubId = 59696216;
991929 name = "Arnold Farkas";
992930 };
993− arnoutkroeze = {
994− email = "nixpkgs@arnoutkroeze.nl";
995− github = "arnoutkroeze";
996− githubId = 37151054;
997− name = "Arnout Kroeze";
998− };
999931 arobyn = {
1000932 email = "shados@shados.net";
1001933 github = "shados";
@@ -1068,8 +1000,8 @@
10681000 name = "Kirill Boltaev";
10691001 };
10701002 ashley = {
1071− email = "ashley@kira64.xyz";
1072− github = "kira64xyz";
1003+ email = "personavinny@protonmail.com";
1004+ github = "paranoidcat";
10731005 githubId = 84152630;
10741006 name = "Ashley Chiara";
10751007 };
@@ -1119,12 +1051,6 @@
11191051 githubId = 55833;
11201052 name = "Troels Henriksen";
11211053 };
1122− atila = {
1123− name = "Átila Saraiva";
1124− email = "atilasaraiva@gmail.com";
1125− github = "AtilaSaraiva";
1126− githubId = 29521461;
1127− };
11281054 atkinschang = {
11291055 email = "atkinschang+nixpkgs@gmail.com";
11301056 github = "AtkinsChang";
@@ -1226,29 +1152,12 @@
12261152 githubId = 56650223;
12271153 name = "Artturi N";
12281154 };
1229− azahi = {
1230− name = "Azat Bahawi";
1231− email = "azat@bahawi.net";
1232− matrix = "@azahi:azahi.cc";
1233− github = "azahi";
1234− githubId = 22211000;
1235− keys = [{
1236− longkeyid = "rsa4096/0xC8C6BDDB3847F72B";
1237− fingerprint = "2688 0377 C31D 9E81 9BDF 83A8 C8C6 BDDB 3847 F72B";
1238− }];
1239− };
12401155 ayazhafiz = {
12411156 email = "ayaz.hafiz.1@gmail.com";
12421157 github = "ayazhafiz";
12431158 githubId = 262763;
12441159 name = "Ayaz Hafiz";
12451160 };
1246− azuwis = {
1247− email = "azuwis@gmail.com";
1248− github = "azuwis";
1249− githubId = 9315;
1250− name = "Zhong Jianxin";
1251− };
12521161 b4dm4n = {
12531162 email = "fabianm88@gmail.com";
12541163 github = "B4dM4n";
@@ -1332,24 +1241,12 @@
13321241 githubId = 127523;
13331242 name = "Herman Fries";
13341243 };
1335− BarinovMaxim = {
1336− name = "Barinov Maxim";
1337− email = "barinov274@gmail.com";
1338− github = "barinov274";
1339− githubId = 54442153;
1340− };
13411244 barrucadu = {
13421245 email = "mike@barrucadu.co.uk";
13431246 github = "barrucadu";
13441247 githubId = 75235;
13451248 name = "Michael Walker";
13461249 };
1347− bartsch = {
1348− email = "consume.noise@gmail.com";
1349− github = "bartsch";
1350− githubId = 3390885;
1351− name = "Daniel Martin";
1352− };
13531250 bartuka = {
13541251 email = "wand@hey.com";
13551252 github = "wandersoncferreira";
@@ -1409,12 +1306,6 @@
14091306 githubId = 164148;
14101307 name = "Ben Darwin";
14111308 };
1412− bdd = {
1413− email = "bdd@mindcast.org";
1414− github = "bdd";
1415− githubId = 11135;
1416− name = "Berk D. Demir";
1417− };
14181309 bdesham = {
14191310 email = "benjamin@esham.io";
14201311 github = "bdesham";
@@ -1511,12 +1402,6 @@
15111402 githubId = 251106;
15121403 name = "Daniel Bergey";
15131404 };
1514− bergkvist = {
1515− email = "tobias@bergkv.ist";
1516− github = "bergkvist";
1517− githubId = 410028;
1518− name = "Tobias Bergkvist";
1519− };
15201405 betaboon = {
15211406 email = "betaboon@0x80.ninja";
15221407 github = "betaboon";
@@ -1673,16 +1558,6 @@
16731558 githubId = 87764;
16741559 name = "Ben Ford";
16751560 };
1676− boppyt = {
1677− email = "boppy@nwcpz.com";
1678− github = "boppyt";
1679− githubId = 71049646;
1680− name = "Zack A";
1681− keys = [{
1682− longkeyid = "rsa4096/0x6310C97DE31D1545";
1683− fingerprint = "E8D7 5C19 9F65 269B 439D F77B 6310 C97D E31D 1545";
1684− }];
1685− };
16861561 borisbabic = {
16871562 email = "boris.ivan.babic@gmail.com";
16881563 github = "borisbabic";
@@ -1737,12 +1612,6 @@
17371612 githubId = 355401;
17381613 name = "Brian Hicks";
17391614 };
1740− brianmcgee = {
1741− name = "Brian McGee";
1742− email = "brian@41north.dev";
1743− github = "brianmcgee";
1744− githubId = 1173648;
1745− };
17461615 Br1ght0ne = {
17471616 email = "brightone@protonmail.com";
17481617 github = "Br1ght0ne";
@@ -1793,12 +1662,6 @@
17931662 fingerprint = "BF4FCB85C69989B4ED95BF938AE74787A4B7C07E";
17941663 }];
17951664 };
1796− broke = {
1797− email = "broke@in-fucking.space";
1798− github = "broke";
1799− githubId = 1071610;
1800− name = "Gunnar Nitsche";
1801− };
18021665 bryanasdev000 = {
18031666 email = "bryanasdev000@gmail.com";
18041667 matrix = "@bryanasdev000:matrix.org";
@@ -1831,12 +1694,6 @@
18311694 githubId = 7214361;
18321695 name = "Roman Gerasimenko";
18331696 };
1834− builditluc = {
1835− email = "builditluc@icloud.com";
1836− github = "builditluc";
1837− githubId = 37375448;
1838− name = "Buildit";
1839− };
18401697 bburdette = {
18411698 email = "bburdette@protonmail.com";
18421699 github = "bburdette";
@@ -1956,12 +1813,6 @@
19561813 githubId = 82591;
19571814 name = "Carl Sverre";
19581815 };
1959− carpinchomug = {
1960− email = "aki.suda@protonmail.com";
1961− github = "carpinchomug";
1962− githubId = 101536256;
1963− name = "Akiyoshi Suda";
1964− };
19651816 cartr = {
19661817 email = "carter.sande@duodecima.technology";
19671818 github = "cartr";
@@ -1986,13 +1837,6 @@
19861837 githubId = 495429;
19871838 name = "Claas Augner";
19881839 };
1989− cawilliamson = {
1990− email = "home@chrisaw.com";
1991− github = "cawilliamson";
1992− githubId = 1141769;
1993− matrix = "@cawilliamson:nixos.dev";
1994− name = "Christopher A. Williamson";
1995− };
19961840 cbley = {
19971841 email = "claudio.bley@gmail.com";
19981842 github = "avdv";
@@ -2004,10 +1848,12 @@
20041848 github = "cburstedde";
20051849 githubId = 109908;
20061850 name = "Carsten Burstedde";
2007− keys = [{
2008− longkeyid = "rsa2048/0x0704CD9E550A6BCD";
2009− fingerprint = "1127 A432 6524 BF02 737B 544E 0704 CD9E 550A 6BCD";
2010− }];
1851+ keys = [
1852+ {
1853+ longkeyid = "rsa2048/0x0704CD9E550A6BCD";
1854+ fingerprint = "1127 A432 6524 BF02 737B 544E 0704 CD9E 550A 6BCD";
1855+ }
1856+ ];
20111857 };
20121858 cdepillabout = {
20131859 email = "cdep.illabout@gmail.com";
@@ -2034,12 +1880,6 @@
20341880 githubId = 543423;
20351881 name = "Alex Wied";
20361882 };
2037− cfhammill = {
2038− email = "cfhammill@gmail.com";
2039− github = "cfhammill";
2040− githubId = 7467038;
2041− name = "Chris Hammill";
2042− };
20431883 cfouche = {
20441884 email = "chaddai.fouche@gmail.com";
20451885 github = "Chaddai";
@@ -2086,12 +1926,6 @@
20861926 githubId = 8228888;
20871927 name = "Charlie Hanley";
20881928 };
2089− charlesbaynham = {
2090− email = "charlesbaynham@gmail.com";
2091− github = "charlesbaynham";
2092− githubId = 4397637;
2093− name = "Charles Baynham";
2094− };
20951929 CharlesHD = {
20961930 email = "charleshdespointes@gmail.com";
20971931 github = "CharlesHD";
@@ -2132,6 +1966,12 @@
21321966 githubId = 18648043;
21331967 name = "Daniel Cartwright";
21341968 };
1969+ chiiruno = {
1970+ email = "okinan@protonmail.com";
1971+ github = "chiiruno";
1972+ githubId = 30435868;
1973+ name = "Okina Matara";
1974+ };
21351975 Chili-Man = {
21361976 email = "dr.elhombrechile@gmail.com";
21371977 name = "Diego Rodriguez";
@@ -2190,6 +2030,12 @@
21902030 githubId = 399718;
21912031 name = "Chris Martin";
21922032 };
2033+ chrisaw = {
2034+ email = "home@chrisaw.com";
2035+ github = "cawilliamson";
2036+ githubId = 1141769;
2037+ name = "Christopher A. Williamson";
2038+ };
21932039 chrisjefferson = {
21942040 email = "chris@bubblescope.net";
21952041 github = "chrisjefferson";
@@ -2230,17 +2076,6 @@
22302076 githubId = 12386805;
22312077 name = "Chua Hou";
22322078 };
2233− chuangzhu = {
2234− name = "Chuang Zhu";
2235− email = "chuang@melty.land";
2236− matrix = "@chuangzhu:matrix.org";
2237− github = "chuangzhu";
2238− githubId = 31200881;
2239− keys = [{
2240− longkeyid = "rsa4096/E838CED81CFFD3F9";
2241− fingerprint = "5D03 A5E6 0754 A3E3 CA57 5037 E838 CED8 1CFF D3F9";
2242− }];
2243− };
22442079 chvp = {
22452080 email = "nixpkgs@cvpetegem.be";
22462081 matrix = "@charlotte:vanpetegem.me";
@@ -2248,24 +2083,12 @@
22482083 githubId = 42220376;
22492084 name = "Charlotte Van Petegem";
22502085 };
2251− cigrainger = {
2252− name = "Christopher Grainger";
2253− email = "chris@amplified.ai";
2254− github = "cigrainger";
2255− githubId = 3984794;
2256− };
22572086 ciil = {
22582087 email = "simon@lackerbauer.com";
22592088 github = "ciil";
22602089 githubId = 3956062;
22612090 name = "Simon Lackerbauer";
22622091 };
2263− cirno-999 = {
2264− email = "reverene@protonmail.com";
2265− github = "cirno-999";
2266− githubId = 73712874;
2267− name = "cirno-999";
2268− };
22692092 citadelcore = {
22702093 email = "alex@arctarus.co.uk";
22712094 github = "citadelcore";
@@ -2297,13 +2120,12 @@
22972120 ckie = {
22982121 email = "nixpkgs-0efe364@ckie.dev";
22992122 github = "ckiee";
2300− githubId = 25263210;
2123+ githubId = 2526321;
23012124 keys = [{
23022125 longkeyid = "rsa4096/0x13E79449C0525215";
23032126 fingerprint = "539F 0655 4D35 38A5 429A E253 13E7 9449 C052 5215";
23042127 }];
23052128 name = "ckie";
2306− matrix = "@ckie:ckie.dev";
23072129 };
23082130 clkamp = {
23092131 email = "c@lkamp.de";
@@ -2382,12 +2204,6 @@
23822204 githubId = 34317;
23832205 name = "Corey O'Connor";
23842206 };
2385− CodeLongAndProsper90 = {
2386− github = "CodeLongAndProsper90";
2387− githubId = 50145141;
2388− email = "jupiter@m.rdis.dev";
2389− name = "Scott Little";
2390− };
23912207 codsl = {
23922208 email = "codsl@riseup.net";
23932209 github = "codsl";
@@ -2400,13 +2216,6 @@
24002216 githubId = 5561189;
24012217 name = "Cody Opel";
24022218 };
2403− Cogitri = {
2404− email = "oss@cogitri.dev";
2405− github = "Cogitri";
2406− githubId = 8766773;
2407− matrix = "@cogitri:cogitri.dev";
2408− name = "Rasmus Thomsen";
2409− };
24102219 cohei = {
24112220 email = "a.d.xvii.kal.mai@gmail.com";
24122221 github = "cohei";
@@ -2479,13 +2288,6 @@
24792288 githubId = 11145016;
24802289 name = "J.C.";
24812290 };
2482− congee = {
2483− email = "changshengwu@pm.me";
2484− matrix = "@congeec:matrix.org";
2485− github = "congee";
2486− name = "Changsheng Wu";
2487− githubId = 2083950;
2488− };
24892291 contrun = {
24902292 email = "uuuuuu@protonmail.com";
24912293 github = "contrun";
@@ -2498,23 +2300,6 @@
24982300 githubId = 5510514;
24992301 name = "Conrad Mearns";
25002302 };
2501− corbanr = {
2502− email = "corban@raunco.co";
2503− github = "CorbanR";
2504− githubId = 1918683;
2505− matrix = "@corbansolo:matrix.org";
2506− name = "Corban Raun";
2507− keys = [
2508− {
2509− longkeyid = "rsa4096/0xA697A56F1F151189";
2510− fingerprint = "6607 0B24 8CE5 64ED 22CE 0950 A697 A56F 1F15 1189";
2511− }
2512− {
2513− longkeyid = "ed25519/0x230F4AC153F90F29";
2514− fingerprint = "D8CB 816A B678 A4E6 1EC7 5325 230F 4AC1 53F9 0F29";
2515− }
2516− ];
2517− };
25182303 couchemar = {
25192304 email = "couchemar@yandex.ru";
25202305 github = "couchemar";
@@ -2555,12 +2340,6 @@
25552340 githubId = 12202789;
25562341 name = "CrazedProgrammer";
25572342 };
2558− creator54 = {
2559− email = "hi.creator54@gmail.com";
2560− github = "creator54";
2561− githubId = 34543609;
2562− name = "creator54";
2563− };
25642343 cript0nauta = {
25652344 email = "shareman1204@gmail.com";
25662345 github = "cript0nauta";
@@ -2752,17 +2531,6 @@
27522531 githubId = 1298344;
27532532 name = "Daniel Fullmer";
27542533 };
2755− danth = {
2756− name = "Daniel Thwaites";
2757− email = "danthwaites30@btinternet.com";
2758− matrix = "@danth:matrix.org";
2759− github = "danth";
2760− githubId = 28959268;
2761− keys = [{
2762− longkeyid = "rsa3072/0xD8AFC4BF05670F9D";
2763− fingerprint = "4779 D1D5 3C97 2EAE 34A5 ED3D D8AF C4BF 0567 0F9D";
2764− }];
2765− };
27662534 dan4ik605743 = {
27672535 email = "6057430gu@gmail.com";
27682536 github = "dan4ik605743";
@@ -2809,12 +2577,6 @@
28092577 email = "christoph.senjak@googlemail.com";
28102578 name = "Christoph-Simon Senjak";
28112579 };
2812− datafoo = {
2813− email = "34766150+datafoo@users.noreply.github.com";
2814− github = "datafoo";
2815− githubId = 34766150;
2816− name = "datafoo";
2817− };
28182580 davhau = {
28192581 email = "d.hauer.it@gmail.com";
28202582 name = "David Hauer";
@@ -2874,12 +2636,6 @@
28742636 githubId = 49904992;
28752637 name = "Dawid Sowa";
28762638 };
2877− dbeckwith = {
2878− email = "djbsnx@gmail.com";
2879− github = "dbeckwith";
2880− githubId = 1279939;
2881− name = "Daniel Beckwith";
2882− };
28832639 dbirks = {
28842640 email = "david@birks.dev";
28852641 github = "dbirks";
@@ -2958,12 +2714,6 @@
29582714 email = "d4delta@outlook.fr";
29592715 name = "Delta";
29602716 };
2961− deltadelta = {
2962− email = "contact@libellules.eu";
2963− name = "Dara Ly";
2964− github = "tournemire";
2965− githubId = 20159432;
2966− };
29672717 deltaevo = {
29682718 email = "deltaduartedavid@gmail.com";
29692719 github = "DeltaEvo";
@@ -2994,24 +2744,12 @@
29942744 githubId = 706758;
29952745 name = "Christian Gerbrandt";
29962746 };
2997− derekcollison = {
2998− email = "derek@nats.io";
2999− github = "derekcollison";
3000− githubId = 90097;
3001− name = "Derek Collison";
3002− };
30032747 DerGuteMoritz = {
30042748 email = "moritz@twoticketsplease.de";
30052749 github = "DerGuteMoritz";
30062750 githubId = 19733;
30072751 name = "Moritz Heidkamp";
30082752 };
3009− DerickEddington = {
3010− email = "derick.eddington@pm.me";
3011− github = "DerickEddington";
3012− githubId = 4731128;
3013− name = "Derick Eddington";
3014− };
30152753 dermetfan = {
30162754 email = "serverkorken@gmail.com";
30172755 github = "dermetfan";
@@ -3096,12 +2834,6 @@
30962834 githubId = 8404455;
30972835 name = "Diego Lelis";
30982836 };
3099− DieracDelta = {
3100− email = "justin@restivo.me";
3101− github = "DieracDelta";
3102− githubId = 13730968;
3103− name = "Justin Restivo";
3104− };
31052837 diffumist = {
31062838 email = "git@diffumist.me";
31072839 github = "diffumist";
@@ -3319,16 +3051,6 @@
33193051 githubId = 10198051;
33203052 name = "Drew Risinger";
33213053 };
3322− drperceptron = {
3323− email = "92106371+drperceptron@users.noreply.github.com";
3324− github = "drperceptron";
3325− githubId = 92106371;
3326− name = "Dr Perceptron";
3327− keys = [{
3328− longkeyid = "rsa4096/0x95EB6DFF26D1CEB0";
3329− fingerprint = "7E38 89D9 B1A8 B381 C8DE A15F 95EB 6DFF 26D1 CEB0";
3330− }];
3331− };
33323054 drupol = {
33333055 name = "Pol Dellaiera";
33343056 email = "pol.dellaiera@protonmail.com";
@@ -3340,18 +3062,6 @@
33403062 fingerprint = "85F3 72DF 4AF3 EF13 ED34 72A3 0AAF 2901 E804 0715";
33413063 }];
33423064 };
3343− drzoidberg = {
3344− email = "jakob@mast3rsoft.com";
3345− github = "jakobneufeld";
3346− githubId = 24791219;
3347− name = "Jakob Neufeld";
3348− };
3349− dsalaza4 = {
3350− email = "podany270895@gmail.com";
3351− github = "dsalaza4";
3352− githubId = 11205987;
3353− name = "Daniel Salazar";
3354− };
33553065 dschrempf = {
33563066 name = "Dominik Schrempf";
33573067 email = "dominik.schrempf@gmail.com";
@@ -3502,6 +3212,12 @@
35023212 github = "edlimerkaj";
35033213 githubId = 71988351;
35043214 };
3215+ edibopp = {
3216+ email = "eduard.bopp@aepsil0n.de";
3217+ github = "edibopp";
3218+ githubId = 3098430;
3219+ name = "Eduard Bopp";
3220+ };
35053221 emantor = {
35063222 email = "rouven+nixos@czerwinskis.de";
35073223 github = "emantor";
@@ -3520,12 +3236,6 @@
35203236 githubId = 18535642;
35213237 name = "Emily";
35223238 };
3523− emilytrau = {
3524− name = "Emily Trau";
3525− email = "nix@angus.ws";
3526− github = "emilytrau";
3527− githubId = 13267947;
3528− };
35293239 enderger = {
35303240 email = "endergeryt@gmail.com";
35313241 github = "enderger";
@@ -3599,12 +3309,6 @@
35993309 githubId = 4742;
36003310 name = "Aaron Bull Schaefer";
36013311 };
3602− elatov = {
3603− email = "elatov@gmail.com";
3604− github = "elatov";
3605− githubId = 7494394;
3606− name = "Karim Elatov";
3607− };
36083312 eleanor = {
36093313 email = "dejan@proteansec.com";
36103314 github = "proteansec";
@@ -3617,12 +3321,6 @@
36173321 githubId = 103082;
36183322 name = "Ed Brindley";
36193323 };
3620− elliot = {
3621− email = "hack00mind@gmail.com";
3622− github = "Eliot00";
3623− githubId = 18375468;
3624− name = "Elliot Xu";
3625− };
36263324 elliottvillars = {
36273325 email = "elliottvillars@gmail.com";
36283326 github = "elliottvillars";
@@ -3691,7 +3389,7 @@
36913389 name = "Leo Maroni";
36923390 };
36933391 emmanuelrosa = {
3694− email = "emmanuelrosa@protonmail.com";
3392+ email = "emmanuel_rosa@aol.com";
36953393 matrix = "@emmanuelrosa:matrix.org";
36963394 github = "emmanuelrosa";
36973395 githubId = 13485450;
@@ -3721,9 +3419,9 @@
37213419 githubId = 5493775;
37223420 name = "Ente";
37233421 };
3724− Enzime = {
3422+ enzime = {
37253423 email = "enzime@users.noreply.github.com";
3726− github = "Enzime";
3424+ github = "enzime";
37273425 githubId = 10492681;
37283426 name = "Michael Hoang";
37293427 };
@@ -3881,19 +3579,6 @@
38813579 githubId = 222467;
38823580 name = "Dmitry Ivanov";
38833581 };
3884− ethindp = {
3885− name = "Ethin Probst";
3886− email = "harlydavidsen@gmail.com";
3887− matrix = "@ethindp:the-gdn.net";
3888− github = "ethindp";
3889− githubId = 8030501;
3890− };
3891− Etjean = {
3892− email = "et.jean@outlook.fr";
3893− github = "Etjean";
3894− githubId = 32169529;
3895− name = "Etienne Jean";
3896− };
38973582 etu = {
38983583 email = "elis@hirwing.se";
38993584 matrix = "@etu:semi.social";
@@ -3948,7 +3633,6 @@
39483633 };
39493634 evils = {
39503635 email = "evils.devils@protonmail.com";
3951− matrix = "@evils:nixos.dev";
39523636 github = "evils";
39533637 githubId = 30512529;
39543638 name = "Evils";
@@ -4076,12 +3760,6 @@
40763760 githubId = 1276854;
40773761 name = "Florian Peter";
40783762 };
4079− fbeffa = {
4080− email = "beffa@fbengineering.ch";
4081− github = "fedeinthemix";
4082− githubId = 7670450;
4083− name = "Federico Beffa";
4084− };
40853763 fbrs = {
40863764 email = "yuuki@protonmail.com";
40873765 github = "cideM";
@@ -4124,18 +3802,11 @@
41243802 matrix = "@felschr:matrix.org";
41253803 github = "felschr";
41263804 githubId = 3314323;
4127− name = "Felix Schröter";
4128− keys = [
4129− {
4130− # historical
4131− longkeyid = "ed25519/0x910ACB9F6BD26F58";
4132− fingerprint = "6AB3 7A28 5420 9A41 82D9 0068 910A CB9F 6BD2 6F58";
4133− }
4134− {
4135− longkeyid = "ed25519/0x671E39E6744C807D";
4136− fingerprint = "7E08 6842 0934 AA1D 6821 1F2A 671E 39E6 744C 807D";
4137− }
4138− ];
3805+ name = "Felix Tenley";
3806+ keys = [{
3807+ longkeyid = "ed25519/0x910ACB9F6BD26F58";
3808+ fingerprint = "6AB3 7A28 5420 9A41 82D9 0068 910A CB9F 6BD2 6F58";
3809+ }];
41393810 };
41403811 ffinkdevs = {
41413812 email = "fink@h0st.space";
@@ -4181,12 +3852,6 @@
41813852 github = "fitzgibbon";
41823853 githubId = 617048;
41833854 };
4184− fkautz = {
4185− name = "Frederick F. Kautz IV";
4186− email = "fkautz@alumni.cmu.edu";
4187− github = "fkautz";
4188− githubId = 135706;
4189− };
41903855 Flakebi = {
41913856 email = "flakebi@t-online.de";
41923857 github = "Flakebi";
@@ -4221,12 +3886,6 @@
42213886 githubId = 183879;
42223887 name = "Florian Klink";
42233888 };
4224− florentc = {
4225− email = "florentc@users.noreply.github.com";
4226− github = "florentc";
4227− githubId = 1149048;
4228− name = "Florent Ch.";
4229− };
42303889 FlorianFranzen = {
42313890 email = "Florian.Franzen@gmail.com";
42323891 github = "FlorianFranzen";
@@ -4311,18 +3970,19 @@
43113970 githubId = 119691;
43123971 name = "Michael Gough";
43133972 };
4314− freax13 = {
4315− email = "erbse.13@gmx.de";
4316− github = "freax13";
4317− githubId = 14952658;
4318− name = "Tom Dohrmann";
4319− };
3973+
43203974 fredeb = {
43213975 email = "im@fredeb.dev";
43223976 github = "fredeeb";
43233977 githubId = 7551358;
43243978 name = "Frede Emil";
43253979 };
3980+ freepotion = {
3981+ email = "42352817+freepotion@users.noreply.github.com";
3982+ github = "freepotion";
3983+ githubId = 42352817;
3984+ name = "Free Potion";
3985+ };
43263986 freezeboy = {
43273987 email = "freezeboy@users.noreply.github.com";
43283988 github = "freezeboy";
@@ -4445,16 +4105,6 @@
44454105 githubId = 1313787;
44464106 name = "Gabriel Gonzalez";
44474107 };
4448− gador = {
4449− email = "florian.brandes@posteo.de";
4450− github = "gador";
4451− githubId = 1883533;
4452− name = "Florian Brandes";
4453− keys = [{
4454− longkeyid = "rsa4096/0xBBB3E40E53797FD9";
4455− fingerprint = "0200 3EF8 8D2B CF2D 8F00 FFDC BBB3 E40E 5379 7FD9";
4456− }];
4457− };
44584108 gal_bolle = {
44594109 email = "florent.becker@ens-lyon.org";
44604110 github = "FlorentBecker";
@@ -4515,16 +4165,6 @@
45154165 githubId = 313929;
45164166 name = "Gabriel Ebner";
45174167 };
4518− genofire = {
4519− name = "genofire";
4520− email = "geno+dev@fireorbit.de";
4521− github = "genofire";
4522− githubId = 6905586;
4523− keys = [{
4524− longkeyid = "rsa4096/0xFC83907C125BC2BC";
4525− fingerprint = "386E D1BF 848A BB4A 6B4A 3C45 FC83 907C 125B C2BC";
4526− }];
4527− };
45284168 georgewhewell = {
45294169 email = "georgerw@gmail.com";
45304170 github = "georgewhewell";
@@ -4560,12 +4200,6 @@
45604200 githubId = 3217744;
45614201 name = "Peter Ferenczy";
45624202 };
4563− ghostbuster91 = {
4564− name = "Kasper Kondzielski";
4565− email = "kghost0@gmail.com";
4566− github = "ghostbuster91";
4567− githubId = 5662622;
4568− };
45694203 ghuntley = {
45704204 email = "ghuntley@ghuntley.com";
45714205 github = "ghuntley";
@@ -4584,12 +4218,6 @@
45844218 githubId = 27668;
45854219 name = "Tobias Pflug";
45864220 };
4587− gin66 = {
4588− email = "jochen@kiemes.de";
4589− github = "gin66";
4590− githubId = 5549373;
4591− name = "Jochen Kiemes";
4592− };
45934221 giogadi = {
45944222 email = "lgtorres42@gmail.com";
45954223 github = "giogadi";
@@ -4666,16 +4294,6 @@
46664294 githubId = 1621335;
46674295 name = "Andrew Trachenko";
46684296 };
4669− gordias = {
4670− name = "Gordias";
4671− email = "gordias@disroot.org";
4672− github = "gordiasdot";
4673− githubId = 94724133;
4674− keys = [{
4675− longkeyid = "ed25519/0x5D47284830FAA4FA";
4676− fingerprint = "C006 B8A0 0618 F3B6 E0E4 2ECD 5D47 2848 30FA A4FA";
4677− }];
4678− };
46794297 govanify = {
46804298 name = "Gauvain 'GovanifY' Roussel-Tarbouriech";
46814299 email = "gauvain@govanify.com";
@@ -4720,12 +4338,6 @@
47204338 githubId = 4656860;
47214339 name = "Gaute Ravndal";
47224340 };
4723− graysonhead = {
4724− email = "grayson@graysonhead.net";
4725− github = "graysonhead";
4726− githubId = 6179496;
4727− name = "Grayson Head";
4728− };
47294341 grburst = {
47304342 email = "GRBurst@protonmail.com";
47314343 github = "GRBurst";
@@ -4754,12 +4366,6 @@
47544366 githubId = 201997;
47554367 name = "Eric Seidel";
47564368 };
4757− grindhold = {
4758− name = "grindhold";
4759− email = "grindhold+nix@skarphed.org";
4760− github = "grindhold";
4761− githubId = 2592640;
4762− };
47634369 gspia = {
47644370 email = "iahogsp@gmail.com";
47654371 github = "gspia";
@@ -4778,18 +4384,6 @@
47784384 githubId = 343415;
47794385 name = "Greg Roodt";
47804386 };
4781− grnnja = {
4782− email = "grnnja@gmail.com";
4783− github = "grnnja";
4784− githubId = 31556469;
4785− name = "Prem Netsuwan";
4786− };
4787− gruve-p = {
4788− email = "groestlcoin@gmail.com";
4789− github = "gruve-p";
4790− githubId = 11212268;
4791− name = "gruve-p";
4792− };
47934387 gschwartz = {
47944388 email = "gsch@pennmedicine.upenn.edu";
47954389 github = "GregorySchwartz";
@@ -5041,12 +4635,6 @@
50414635 github = "higebu";
50424636 githubId = 733288;
50434637 };
5044− hiljusti = {
5045− name = "J.R. Hill";
5046− email = "hiljusti@so.dang.cool";
5047− github = "hiljusti";
5048− githubId = 17605298;
5049− };
50504638 hinton = {
50514639 email = "t@larkery.com";
50524640 name = "Tom Hinton";
@@ -5117,12 +4705,6 @@
51174705 githubId = 896431;
51184706 name = "Chris Hodapp";
51194707 };
5120− hollowman6 = {
5121− email = "hollowman@hollowman.ml";
5122− github = "HollowMan6";
5123− githubId = 43995067;
5124− name = "Songlin Jiang";
5125− };
51264708 holymonson = {
51274709 email = "holymonson@gmail.com";
51284710 github = "holymonson";
@@ -5202,16 +4784,6 @@
52024784 githubId = 12491746;
52034785 name = "Masato Yonekawa";
52044786 };
5205− hyshka = {
5206− name = "Bryan Hyshka";
5207− email = "bryan@hyshka.com";
5208− github = "hyshka";
5209− githubId = 2090758;
5210− keys = [{
5211− longkeyid = "rsa2048/0xDB2D93D1BFAAA6EA";
5212− fingerprint = "24F4 1925 28C4 8797 E539 F247 DB2D 93D1 BFAA A6EA";
5213− }];
5214− };
52154787 hyzual = {
52164788 email = "hyzual@gmail.com";
52174789 github = "Hyzual";
@@ -5394,12 +4966,6 @@
53944966 githubId = 4085046;
53954967 name = "Imuli";
53964968 };
5397− ineol = {
5398− email = "leo.stefanesco@gmail.com";
5399− github = "ineol";
5400− githubId = 37965;
5401− name = "Léo Stefanesco";
5402− };
54034969 infinisil = {
54044970 email = "contact@infinisil.com";
54054971 matrix = "@infinisil:matrix.org";
@@ -5444,13 +5010,6 @@
54445010 fingerprint = "1412 816B A9FA F62F D051 1975 D3E1 B013 B463 1293";
54455011 }];
54465012 };
5447− ius = {
5448− email = "j.de.gram@gmail.com";
5449− name = "Joerie de Gram";
5450− matrix = "@ius:nltrix.net";
5451− github = "ius";
5452− githubId = 529626;
5453− };
54545013 ivan = {
54555014 email = "ivan@ludios.org";
54565015 github = "ivan";
@@ -5484,7 +5043,7 @@
54845043 }];
54855044 };
54865045 ivankovnatsky = {
5487− email = "75213+ivankovnatsky@users.noreply.github.com";
5046+ email = "ikovnatsky@protonmail.ch";
54885047 github = "ivankovnatsky";
54895048 githubId = 75213;
54905049 name = "Ivan Kovnatsky";
@@ -5499,12 +5058,6 @@
54995058 githubId = 41924494;
55005059 name = "Ivar";
55015060 };
5502− iwanb = {
5503− email = "tracnar@gmail.com";
5504− github = "iwanb";
5505− githubId = 4035835;
5506− name = "Iwan";
5507− };
55085061 ixmatus = {
55095062 email = "parnell@digitalmentat.com";
55105063 github = "ixmatus";
@@ -5649,12 +5202,6 @@
56495202 githubId = 488556;
56505203 name = "Javier Aguirre";
56515204 };
5652− jayesh-bhoot = {
5653− name = "Jayesh Bhoot";
5654− email = "jayesh@bhoot.sh";
5655− github = "jayesh-bhoot";
5656− githubId = 1915507;
5657− };
56585205 jb55 = {
56595206 email = "jb55@jb55.com";
56605207 github = "jb55";
@@ -5680,34 +5227,12 @@
56805227 githubId = 221929;
56815228 name = "Jean-Baptiste Giraudeau";
56825229 };
5683− jc = {
5684− name = "Josh Cooper";
5685− email = "josh@cooper.is";
5686− github = "joshua-cooper";
5687− githubId = 35612334;
5688− };
5689− jceb = {
5690− name = "jceb";
5691− email = "jceb@e-jc.de";
5692− github = "jceb";
5693− githubId = 101593;
5694− };
56955230 jchw = {
56965231 email = "johnwchadwick@gmail.com";
56975232 github = "jchv";
56985233 githubId = 938744;
56995234 name = "John Chadwick";
57005235 };
5701− jcouyang = {
5702− email = "oyanglulu@gmail.com";
5703− github = "jcouyang";
5704− githubId = 1235045;
5705− name = "Jichao Ouyang";
5706− keys = [{
5707− longkeyid = "rsa2048/0xDA8B833B52604E63";
5708− fingerprint = "A506 C38D 5CC8 47D0 DF01 134A DA8B 833B 5260 4E63";
5709− }];
5710− };
57115236 jcumming = {
57125237 email = "jack@mudshark.org";
57135238 github = "jcumming";
@@ -5760,12 +5285,6 @@
57605285 github = "jduan";
57615286 githubId = 452450;
57625287 };
5763− jdupak = {
5764− name = "Jakub Dupak";
5765− email = "dev@jakubdupak.com";
5766− github = "jdupak";
5767− githubId = 22683640;
5768− };
57695288 jecaro = {
57705289 email = "jeancharles.quillet@gmail.com";
57715290 github = "jecaro";
@@ -5820,16 +5339,6 @@
58205339 githubId = 143075;
58215340 name = "James Felix Black";
58225341 };
5823− jfchevrette = {
5824− email = "jfchevrette@gmail.com";
5825− github = "jfchevrette";
5826− githubId = 3001;
5827− name = "Jean-Francois Chevrette";
5828− keys = [{
5829− longkeyid = "rsa4096/0x67A0585801290DC6";
5830− fingerprint = "B612 96A9 498E EECD D5E9 C0F0 67A0 5858 0129 0DC6";
5831− }];
5832− };
58335342 jflanglois = {
58345343 email = "yourstruly@julienlanglois.me";
58355344 github = "jflanglois";
@@ -5962,36 +5471,12 @@
59625471 githubId = 8900;
59635472 name = "Johan Magnus Jonsson";
59645473 };
5965− jmc-figueira = {
5966− email = "business+nixos@jmc-figueira.dev";
5967− github = "jmc-figueira";
5968− githubId = 6634716;
5969− name = "João Figueira";
5970− keys = [
5971− # GitHub signing key
5972− {
5973− longkeyid = "rsa4096/0xDC7AE56AE98E02D7";
5974− fingerprint = "EC08 7AA3 DEAD A972 F015 6371 DC7A E56A E98E 02D7";
5975− }
5976− # Email encryption
5977− {
5978− longkeyid = "ed25519/0x197F9A632D139E30";
5979− fingerprint = "816D 23F5 E672 EC58 7674 4A73 197F 9A63 2D13 9E30";
5980− }
5981− ];
5982− };
59835474 jmettes = {
59845475 email = "jonathan@jmettes.com";
59855476 github = "jmettes";
59865477 githubId = 587870;
59875478 name = "Jonathan Mettes";
59885479 };
5989− jmgilman = {
5990− email = "joshuagilman@gmail.com";
5991− github = "jmgilman";
5992− githubId = 2308444;
5993− name = "Joshua Gilman";
5994− };
59955480 jo1gi = {
59965481 email = "joakimholm@protonmail.com";
59975482 github = "jo1gi";
@@ -6218,12 +5703,6 @@
62185703 githubId = 4611077;
62195704 name = "Raymond Gauthier";
62205705 };
6221− jrpotter = {
6222− email = "jrpotter2112@gmail.com";
6223− github = "jrpotter";
6224− githubId = 3267697;
6225− name = "Joshua Potter";
6226− };
62275706 jschievink = {
62285707 email = "jonasschievink@gmail.com";
62295708 matrix = "@jschievink:matrix.org";
@@ -6243,13 +5722,6 @@
62435722 githubId = 107689;
62445723 name = "Josh Holland";
62455724 };
6246− jsierles = {
6247− email = "joshua@hey.com";
6248− matrix = "@jsierles:matrix.org";
6249− name = "Joshua Sierles";
6250− github = "jsierles";
6251− githubId = 82;
6252− };
62535725 jtcoolen = {
62545726 email = "jtcoolen@pm.me";
62555727 name = "Julien Coolen";
@@ -6279,24 +5751,12 @@
62795751 githubId = 810075;
62805752 name = "Juan Rodal";
62815753 };
6282− juboba = {
6283− email = "juboba@gmail.com";
6284− github = "juboba";
6285− githubId = 1189739;
6286− name = "Julio Borja Barra";
6287− };
62885754 juliendehos = {
62895755 email = "dehos@lisic.univ-littoral.fr";
62905756 github = "juliendehos";
62915757 githubId = 11947756;
62925758 name = "Julien Dehos";
62935759 };
6294− julienmalka = {
6295− email = "julien.malka@me.com";
6296− github = "JulienMalka";
6297− githubId = 1792886;
6298− name = "Julien Malka";
6299− };
63005760 julm = {
63015761 email = "julm+nixpkgs@sourcephile.fr";
63025762 github = "ju1m";
@@ -6333,16 +5793,6 @@
63335793 githubId = 2396926;
63345794 name = "Justin Woo";
63355795 };
6336− jvanbruegge = {
6337− email = "supermanitu@gmail.com";
6338− github = "jvanbruegge";
6339− githubId = 1529052;
6340− name = "Jan van Brügge";
6341− keys = [{
6342− longkeyid = "rsa4096/0x366572BE7D6C78A2";
6343− fingerprint = "3513 5CE5 77AD 711F 3825 9A99 3665 72BE 7D6C 78A2";
6344− }];
6345− };
63465796 jwatt = {
63475797 email = "jwatt@broken.watch";
63485798 github = "jjwatt";
@@ -6405,13 +5855,6 @@
64055855 github = "k4leg";
64065856 githubId = 39882583;
64075857 };
6408− k900 = {
6409− name = "Ilya K.";
6410− email = "me@0upti.me";
6411− github = "K900";
6412− githubId = 386765;
6413− matrix = "@k900:0upti.me";
6414− };
64155858 kaction = {
64165859 name = "Dmitry Bogatov";
64175860 email = "KAction@disroot.org";
@@ -6463,12 +5906,6 @@
64635906 githubId = 3831860;
64645907 name = "Arnold Krille";
64655908 };
6466− kanashimia = {
6467− email = "chad@redpilled.dev";
6468− github = "kanashimia";
6469− githubId = 56224949;
6470− name = "Mia Kanashi";
6471− };
64725909 karantan = {
64735910 name = "Gasper Vozel";
64745911 email = "karantan@gmail.com";
@@ -6503,12 +5940,6 @@
65035940 githubId = 37185887;
65045941 name = "Calvin Kim";
65055942 };
6506− keldu = {
6507− email = "mail@keldu.de";
6508− github = "keldu";
6509− githubId = 15373888;
6510− name = "Claudius Holeksa";
6511− };
65125943 kennyballou = {
65135944 email = "kb@devnulllabs.io";
65145945 github = "kennyballou";
@@ -6544,12 +5975,6 @@
65445975 githubId = 209729;
65455976 name = "Kevin Griffin";
65465977 };
6547− kevink = {
6548− email = "kevin@kevink.dev";
6549− github = "Unkn0wnCat";
6550− githubId = 8211181;
6551− name = "Kevin Kandlbinder";
6552− };
65535978 kfollesdal = {
65545979 email = "kfollesdal@gmail.com";
65555980 github = "kfollesdal";
@@ -6665,7 +6090,7 @@
66656090 keys = [{
66666091 longkeyid = "rsa4096/0x7248991EFA8EFBEE";
66676092 fingerprint = "01F5 0A29 D4AA 9117 5A11 BDB1 7248 991E FA8E FBEE";
6668− }];
6093+ }];
66696094 };
66706095 kiwi = {
66716096 email = "envy1988@gmail.com";
@@ -6693,12 +6118,6 @@
66936118 email = "tierpluspluslists@gmail.com";
66946119 name = "Karn Kallio";
66956120 };
6696− klden = {
6697− name = "Kenzyme Le";
6698− email = "kl@kenzymele.com";
6699− github = "klDen";
6700− githubId = 5478260;
6701− };
67026121 klntsky = {
67036122 email = "klntsky@gmail.com";
67046123 name = "Vladimir Kalnitsky";
@@ -6706,7 +6125,7 @@
67066125 githubId = 18447310;
67076126 };
67086127 kloenk = {
6709− email = "me@kloenk.dev";
6128+ email = "me@kloenk.de";
67106129 matrix = "@kloenk:petabyte.dev";
67116130 name = "Finn Behrens";
67126131 github = "kloenk";
@@ -6730,7 +6149,7 @@
67306149 };
67316150
67326151 kmein = {
6733− email = "kmein@posteo.de";
6152+ email = "kieran.meinhardt@gmail.com";
67346153 name = "Kierán Meinhardt";
67356154 github = "kmein";
67366155 githubId = 10352507;
@@ -6783,12 +6202,6 @@
67836202 githubId = 15692230;
67846203 name = "Muhammad Herdiansyah";
67856204 };
6786− koozz = {
6787− email = "koozz@linux.com";
6788− github = "koozz";
6789− githubId = 264372;
6790− name = "Jan van den Berg";
6791− };
67926205 koral = {
67936206 email = "koral@mailoo.org";
67946207 github = "k0ral";
@@ -6813,12 +6226,6 @@
68136226 githubId = 787421;
68146227 name = "Kevin Quick";
68156228 };
6816− kradalby = {
6817− name = "Kristoffer Dalby";
6818− email = "kristoffer@dalby.cc";
6819− github = "kradalby";
6820− githubId = 98431;
6821− };
68226229 kraem = {
68236230 email = "me@kraem.xyz";
68246231 github = "kraem";
@@ -6885,6 +6292,12 @@
68856292 githubId = 99639;
68866293 name = "Pawel Kruszewski";
68876294 };
6295+ ktosiek = {
6296+ email = "tomasz.kontusz@gmail.com";
6297+ github = "ktosiek";
6298+ githubId = 278013;
6299+ name = "Tomasz Kontusz";
6300+ };
68886301 kubukoz = {
68896302 email = "kubukoz@gmail.com";
68906303 github = "kubukoz";
@@ -6903,13 +6316,6 @@
69036316 githubId = 449813;
69046317 name = "Roman Kuznetsov";
69056318 };
6906− kvark = {
6907− name = "Dzmitry Malyshau";
6908− email = "kvark@fastmail.com";
6909− matrix = "@kvark:matrix.org";
6910− github = "kvark";
6911− githubId = 107301;
6912− };
69136319 kwohlfahrt = {
69146320 email = "kai.wohlfahrt@gmail.com";
69156321 github = "kwohlfahrt";
@@ -6928,7 +6334,7 @@
69286334 };
69296335 kylesferrazza = {
69306336 name = "Kyle Sferrazza";
6931− email = "nixpkgs@kylesferrazza.com";
6337+ email = "kyle.sferrazza@gmail.com";
69326338
69336339 github = "kylesferrazza";
69346340 githubId = 6677292;
@@ -6972,12 +6378,6 @@
69726378 githubId = 55911173;
69736379 name = "Gwendolyn Quasebarth";
69746380 };
6975− lammermann = {
6976− email = "k.o.b.e.r@web.de";
6977− github = "lammermann";
6978− githubId = 695526;
6979− name = "Benjamin Kober";
6980− };
69816381 larsr = {
69826382 email = "Lars.Rasmusson@gmail.com";
69836383 github = "larsr";
@@ -7107,7 +6507,7 @@
71076507 githubId = 4158274;
71086508 name = "Michiel Leenaars";
71096509 };
7110− lom = {
6510+ legendofmiracles = {
71116511 email = "legendofmiracles@protonmail.com";
71126512 matrix = "@legendofmiracles:matrix.org";
71136513 github = "legendofmiracles";
@@ -7118,17 +6518,6 @@
71186518 fingerprint = "CC50 F82C 985D 2679 0703 AF15 19B0 82B3 DEFE 5451";
71196519 }];
71206520 };
7121− leixb = {
7122− email = "abone9999+nixpkgs@gmail.com";
7123− matrix = "@leix_b:matrix.org";
7124− github = "LeixB";
7125− githubId = 17183803;
7126− name = "Aleix Boné";
7127− keys = [{
7128− longkeyid = "rsa4096/0xFC035BB2BB28E15D";
7129− fingerprint = "63D3 F436 EDE8 7E1F 1292 24AF FC03 5BB2 BB28 E15D";
7130− }];
7131− };
71326521 lejonet = {
71336522 email = "daniel@kuehn.se";
71346523 github = "lejonet";
@@ -7218,13 +6607,6 @@
72186607 githubId = 1769386;
72196608 name = "Liam Diprose";
72206609 };
7221− libjared = {
7222− email = "jared@perrycode.com";
7223− github = "libjared";
7224− githubId = 3746656;
7225− matrix = "@libjared:matrix.org";
7226− name = "Jared Perry";
7227− };
72286610 liff = {
72296611 email = "liff@iki.fi";
72306612 github = "liff";
@@ -7255,19 +6637,18 @@
72556637 githubId = 714;
72566638 name = "Lily Ballard";
72576639 };
7258− lilyinstarlight = {
7259− email = "lily@lily.flowers";
7260− matrix = "@lily:lily.flowers";
7261− github = "lilyinstarlight";
7262− githubId = 298109;
7263− name = "Lily Foster";
7264− };
72656640 limeytexan = {
72666641 email = "limeytexan@gmail.com";
72676642 github = "limeytexan";
72686643 githubId = 36448130;
72696644 name = "Michael Brantley";
72706645 };
6646+ linarcx = {
6647+ email = "linarcx@gmail.com";
6648+ github = "linarcx";
6649+ githubId = 10884422;
6650+ name = "Kaveh Ahangar";
6651+ };
72716652 linc01n = {
72726653 email = "git@lincoln.hk";
72736654 github = "linc01n";
@@ -7324,18 +6705,6 @@
73246705 githubId = 22085373;
73256706 name = "Luis Hebendanz";
73266707 };
7327− lunarequest = {
7328− email = "nullarequest@vivlaid.net";
7329− github = "Lunarequest";
7330− githubId = 30698906;
7331− name = "Luna D Dragon";
7332− };
7333− LunNova = {
7334− email = "nixpkgs-maintainer@lunnova.dev";
7335− github = "LunNova";
7336− githubId = 782440;
7337− name = "Luna Nova";
7338− };
73396708 lionello = {
73406709 email = "lio@lunesu.com";
73416710 github = "lionello";
@@ -7372,29 +6741,6 @@
73726741 githubId = 1267527;
73736742 name = "Daniel Firth";
73746743 };
7375− lockejan = {
7376− email = "git@smittie.de";
7377− matrix = "@jan:smittie.de";
7378− github = "lockejan";
7379− githubId = 25434434;
7380− name = "Jan Schmitt";
7381− keys = [{
7382− longkeyid = "dsa2048/0xA2BC3C6F14351991";
7383− fingerprint = "1763 9903 2D7C 5B82 5D5A 0EAD A2BC 3C6F 1435 1991";
7384− }];
7385− };
7386− lodi = {
7387− email = "anthony.lodi@gmail.com";
7388− github = "lodi";
7389− githubId = 918448;
7390− name = "Anthony Lodi";
7391− };
7392− loicreynier = {
7393− email = "loic@loicreynier.fr";
7394− github = "loicreynier";
7395− githubId = 88983487;
7396− name = "Loïc Reynier";
7397− };
73986744 lopsided98 = {
73996745 email = "benwolsieffer@gmail.com";
74006746 github = "lopsided98";
@@ -7548,12 +6894,6 @@
75486894 githubId = 13791;
75496895 name = "Luke Gorrie";
75506896 };
7551− luker = {
7552− email = "luker@fenrirproject.org";
7553− github = "LucaFulchir";
7554− githubId = 2486026;
7555− name = "Luca Fulchir";
7556− };
75576897 lumi = {
75586898 email = "lumi@pew.im";
75596899 github = "lumi-me-not";
@@ -7571,12 +6911,6 @@
75716911 fingerprint = "BA3A 5886 AE6D 526E 20B4 57D6 6A37 DF94 8318 8492";
75726912 }];
75736913 };
7574− lux = {
7575− email = "lux@lux.name";
7576− githubId = 1208273;
7577− matrix = "@lux:ontheblueplanet.com";
7578− name = "Lux";
7579− };
75806914 luz = {
75816915 email = "luz666@daum.net";
75826916 github = "Luz";
@@ -7605,12 +6939,6 @@
76056939 email = "wheatdoge@gmail.com";
76066940 name = "Tim Liou";
76076941 };
7608− m00wl = {
7609− name = "Moritz Lumme";
7610− email = "moritz.lumme@gmail.com";
7611− github = "m00wl";
7612− githubId = 46034439;
7613− };
76146942 m1cr0man = {
76156943 email = "lucas+nix@m1cr0man.com";
76166944 github = "m1cr0man";
@@ -7646,12 +6974,6 @@
76466974 githubId = 109141;
76476975 name = "Georges Dubus";
76486976 };
7649− Madouura = {
7650− email = "madouura@gmail.com";
7651− github = "Madouura";
7652− githubId = 93990818;
7653− name = "Madoura";
7654− };
76556977 mafo = {
76566978 email = "Marc.Fontaine@gmx.de";
76576979 github = "MarcFontaine";
@@ -7790,12 +7112,6 @@
77907112 githubId = 623509;
77917113 name = "Martijn Vermaat";
77927114 };
7793− martinetd = {
7794− email = "f.ktfhrvnznqxacf@noclue.notk.org";
7795− github = "martinetd";
7796− githubId = 1729331;
7797− name = "Dominique Martinet";
7798− };
77997115 martingms = {
78007116 email = "martin@mg.am";
78017117 github = "martingms";
@@ -7830,6 +7146,16 @@
78307146 githubId = 29855073;
78317147 name = "Michael Colicchia";
78327148 };
7149+ matdsoupe = {
7150+ github = "matdsoupe";
7151+ githubId = 44469426;
7152+ name = "Matheus de Souza Pessanha";
7153+ email = "matheus_pessanha2001@outlook.com";
7154+ keys = [{
7155+ longkeyid = "rsa4096/0x2671964AB1E06A08";
7156+ fingerprint = "2F32 CFEF E11A D73B A740 FA47 2671 964A B1E0 6A08";
7157+ }];
7158+ };
78337159 matejc = {
78347160 email = "cotman.matej@gmail.com";
78357161 github = "matejc";
@@ -7885,16 +7211,6 @@
78857211 githubId = 279868;
78867212 name = "Matti Kariluoma";
78877213 };
7888− matthewpi = {
7889− email = "me+nix@matthewp.io";
7890− github = "matthewpi";
7891− githubId = 26559841;
7892− name = "Matthew Penner";
7893− keys = [{
7894− longkeyid = "ed25519/0x31311906AD4CF6D6";
7895− fingerprint = "5118 F1CC B7B0 6C17 4DD1 5267 3131 1906 AD4C F6D6";
7896− }];
7897− };
78987214 maurer = {
78997215 email = "matthew.r.maurer+nix@gmail.com";
79007216 github = "maurer";
@@ -7941,12 +7257,6 @@
79417257 githubId = 1187050;
79427258 name = "Maximilian Huber";
79437259 };
7944− maximsmol = {
7945− email = "maximsmol@gmail.com";
7946− github = "maximsmol";
7947− githubId = 1472826;
7948− name = "Max Smolin";
7949− };
79507260 maxxk = {
79517261 email = "maxim.krivchikov@gmail.com";
79527262 github = "maxxk";
@@ -8127,6 +7437,12 @@
81277437 github = "kira-bruneau";
81287438 githubId = 382041;
81297439 };
7440+ meutraa = {
7441+ email = "paul+nixpkgs@lost.host";
7442+ name = "Paul Meredith";
7443+ github = "meutraa";
7444+ githubId = 68550871;
7445+ };
81307446 mephistophiles = {
81317447 email = "mussitantesmortem@gmail.com";
81327448 name = "Maxim Zhukov";
@@ -8169,24 +7485,12 @@
81697485 githubId = 668926;
81707486 name = "Maximilian Güntner";
81717487 };
8172− mh = {
8173− email = "68288772+markus-heinrich@users.noreply.github.com";
8174− github = "markus-heinrich";
8175− githubId = 68288772;
8176− name = "Markus Heinrich";
8177− };
81787488 mhaselsteiner = {
81797489 email = "magdalena.haselsteiner@gmx.at";
81807490 github = "mhaselsteiner";
81817491 githubId = 20536514;
81827492 name = "Magdalena Haselsteiner";
81837493 };
8184− mh182 = {
8185− email = "mh182@chello.at";
8186− github = "mh182";
8187− githubId = 9980864;
8188− name = "Max Hofer";
8189− };
81907494 mic92 = {
81917495 email = "joerg@thalheim.io";
81927496 matrix = "@mic92:nixos.dev";
@@ -8229,12 +7533,6 @@
82297533 githubId = 21156022;
82307534 name = "Michal Minář";
82317535 };
8232− michzappa = {
8233− email = "me@michzappa.com";
8234− github = "michzappa";
8235− githubId = 59343378;
8236− name = "Michael Zappa";
8237− };
82387536 mickours = {
82397537 email = "mickours@gmail.com<";
82407538 github = "mickours";
@@ -8252,12 +7550,6 @@
82527550 fingerprint = "FEF0 AE2D 5449 3482 5F06 40AA 186A 1EDA C5C6 3F83";
82537551 }];
82547552 };
8255− mihnea-s = {
8256− email = "mihn.stn@gmail.com";
8257− github = "mihnea-s";
8258− githubId = 43088426;
8259− name = "Mihnea Stoian";
8260− };
82617553 mikefaille = {
82627554 email = "michael@faille.io";
82637555 github = "mikefaille";
@@ -8298,12 +7590,6 @@
82987590 githubId = 38543128;
82997591 name = "Miles Breslin";
83007592 };
8301− milibopp = {
8302− email = "contact@ebopp.de";
8303− github = "milibopp";
8304− githubId = 3098430;
8305− name = "Emilia Bopp";
8306− };
83077593 millerjason = {
83087594 email = "mailings-github@millerjason.com";
83097595 github = "millerjason";
@@ -8360,17 +7646,6 @@
83607646 githubId = 1776903;
83617647 name = "Andrew Abbott";
83627648 };
8363− misterio77 = {
8364− email = "eu@misterio.me";
8365− github = "misterio77";
8366− githubId = 5727578;
8367− matrix = "@misterio:matrix.org";
8368− name = "Gabriel Fontes";
8369− keys = [{
8370− longkeyid = "rsa3072/0x245CAB70B4C225E9";
8371− fingerprint = "7088 C742 1873 E0DB 97FF 17C2 245C AB70 B4C2 25E9";
8372− }];
8373− };
83747649 mitchmindtree = {
83757650 email = "mail@mitchellnordine.com";
83767651 github = "mitchmindtree";
@@ -8383,6 +7658,13 @@
83837658 githubId = 1001112;
83847659 name = "Marcin Janczyk";
83857660 };
7661+ mjlbach = {
7662+ email = "m.j.lbach@gmail.com";
7663+ matrix = "@atrius:matrix.org";
7664+ github = "mjlbach";
7665+ githubId = 13316262;
7666+ name = "Michael Lingelbach";
7667+ };
83867668 mjp = {
83877669 email = "mike@mythik.co.uk";
83887670 github = "MikePlayle";
@@ -8545,12 +7827,6 @@
85457827 githubId = 99988;
85467828 name = "Maarten Hoogendoorn";
85477829 };
8548− MoritzBoehme = {
8549− email = "mail@moritzboeh.me";
8550− github = "MoritzBoehme";
8551− githubId = 42215704;
8552− name = "Moritz Böhme";
8553− };
85547830 MostAwesomeDude = {
85557831 email = "cds@corbinsimpson.com";
85567832 github = "MostAwesomeDude";
@@ -8617,17 +7893,6 @@
86177893 githubId = 3073833;
86187894 name = "Massimo Redaelli";
86197895 };
8620− mrhedgehog = {
8621− name = "Mr Hedgehog";
8622− email = "hedgehog@mrhedgehog.xyz";
8623− matrix = "@mrhedgehog:jupiterbroadcasting.com";
8624− github = "ModdedGamers";
8625− githubId = 35778371;
8626− keys = [{
8627− longkeyid = "rsa4096/0x7D5107866B1C6752";
8628− fingerprint = "38A0 29B0 4A7E 4C13 A4BB 86C8 7D51 0786 6B1C 6752";
8629− }];
8630− };
86317896 mrkkrp = {
86327897 email = "markkarpov92@gmail.com";
86337898 github = "mrkkrp";
@@ -8668,7 +7933,7 @@
86687933 };
86697934 msfjarvis = {
86707935 github = "msfjarvis";
8671− githubId = 13348378;
7936+ githubId = 3348378;
86727937 name = "Harsh Shandilya";
86737938 email = "nixos@msfjarvis.dev";
86747939 keys = [{
@@ -8712,12 +7977,6 @@
87127977 githubId = 4996739;
87137978 name = "Masayuki Takeda";
87147979 };
8715− mtesseract = {
8716− email = "moritz@stackrox.com";
8717− github = "mtesseract";
8718− githubId = 11706080;
8719− name = "Moritz Clasmeier";
8720− };
87217980 MtP = {
87227981 email = "marko.nixos@poikonen.de";
87237982 github = "MtP76";
@@ -8772,17 +8031,6 @@
87728031 githubId = 25388474;
87738032 name = "Matej Urbas";
87748033 };
8775− mvisonneau = {
8776− name = "Maxime VISONNEAU";
8777− email = "maxime@visonneau.fr";
8778− matrix = "@maxime:visonneau.fr";
8779− github = "mvisonneau";
8780− githubId = 1761583;
8781− keys = [{
8782− longkeyid = "rsa4096/0x150D6F0AE9198D24";
8783− fingerprint = "EC63 0CEA E8BC 5EE5 5C58 F2E3 150D 6F0A E919 8D24";
8784− }];
8785− };
87868034 mvnetbiz = {
87878035 email = "mvnetbiz@gmail.com";
87888036 matrix = "@mvtva:matrix.org";
@@ -8808,12 +8056,6 @@
88088056 githubId = 9636071;
88098057 name = "Myrl Hex";
88108058 };
8811− n0emis = {
8812− email = "nixpkgs@n0emis.network";
8813− github = "n0emis";
8814− githubId = 22817873;
8815− name = "Ember Keske";
8816− };
88178059 nadrieril = {
88188060 email = "nadrieril@gmail.com";
88198061 github = "nadrieril";
@@ -8870,23 +8112,6 @@
88708112 githubId = 56316606;
88718113 name = "Amneesh Singh";
88728114 };
8873− nazarewk = {
8874− name = "Krzysztof Nazarewski";
8875− email = "3494992+nazarewk@users.noreply.github.com";
8876− matrix = "@nazarewk:matrix.org";
8877− github = "nazarewk";
8878− githubId = 3494992;
8879− keys = [{
8880− longkeyid = "rsa4096/0x916D8B67241892AE";
8881− fingerprint = "4BFF 0614 03A2 47F0 AA0B 4BC4 916D 8B67 2418 92AE";
8882− }];
8883− };
8884− nbr = {
8885− email = "nbr@users.noreply.github.com";
8886− github = "nbr";
8887− githubId = 3819225;
8888− name = "Nick Braga";
8889− };
88908115 nbren12 = {
88918116 email = "nbren12@gmail.com";
88928117 github = "nbren12";
@@ -8922,18 +8147,6 @@
89228147 githubId = 3747396;
89238148 name = "Nathan Isom";
89248149 };
8925− neilmayhew = {
8926− email = "nix@neil.mayhew.name";
8927− github = "neilmayhew";
8928− githubId = 166791;
8929− name = "Neil Mayhew";
8930− };
8931− nelsonjeppesen = {
8932− email = "nix@jeppesen.io";
8933− github = "NelsonJeppesen";
8934− githubId = 50854675;
8935− name = "Nelson Jeppesen";
8936− };
89378150 neonfuz = {
89388151 email = "neonfuz@gmail.com";
89398152 github = "neonfuz";
@@ -8982,16 +8195,10 @@
89828195 name = "Xinhao Luo";
89838196 };
89848197 newam = {
8985− email = "alex@thinglab.org";
8198+ email = "alexmgit@protonmail.com";
89868199 github = "newAM";
89878200 githubId = 7845120;
8988− name = "Alex Martens";
8989− };
8990− nialov = {
8991− email = "nikolasovaskainen@gmail.com";
8992− github = "nialov";
8993− githubId = 47318483;
8994− name = "Nikolas Ovaskainen";
8201+ name = "Alex M.";
89958202 };
89968203 nikitavoloboev = {
89978204 email = "nikita.voloboev@gmail.com";
@@ -9056,12 +8263,6 @@
90568263 githubId = 8214542;
90578264 name = "Nicolò Balzarotti";
90588265 };
9059− nidabdella = {
9060− name = "Mohamed Nidabdella";
9061− email = "nidabdella.mohamed@gmail.com";
9062− github = "nidabdella";
9063− githubId = 8083813;
9064− };
90658266 NieDzejkob = {
90668267 email = "kuba@kadziolka.net";
90678268 github = "NieDzejkob";
@@ -9164,12 +8365,6 @@
91648365 githubId = 7588406;
91658366 name = "Andrew R. M.";
91668367 };
9167− nkalupahana = {
9168− email = "hello@nisa.la";
9169− github = "nkalupahana";
9170− githubId = 7347290;
9171− name = "Nisala Kalupahana";
9172− };
91738368 nloomans = {
91748369 email = "noah@nixos.noahloomans.com";
91758370 github = "nloomans";
@@ -9221,7 +8416,7 @@
92218416 };
92228417 noreferences = {
92238418 email = "norkus@norkus.net";
9224− github = "jozuas";
8419+ github = "noreferences";
92258420 githubId = 13085275;
92268421 name = "Juozas Norkus";
92278422 };
@@ -9237,9 +8432,9 @@
92378432 githubId = 2946283;
92388433 name = "Brian Cohen";
92398434 };
9240− novoxd = {
8435+ novoxudonoser = {
92418436 email = "radnovox@gmail.com";
9242− github = "novoxd";
8437+ github = "novoxudonoser";
92438438 githubId = 6052922;
92448439 name = "Kirill Struokov";
92458440 };
@@ -9367,12 +8562,6 @@
93678562 githubId = 158758;
93688563 name = "Oliver Dunkl";
93698564 };
9370− ofek = {
9371− email = "oss@ofek.dev";
9372− github = "ofek";
9373− githubId = 9677399;
9374− name = "Ofek Lev";
9375− };
93768565 offline = {
93778566 email = "jaka@x-truder.net";
93788567 github = "offlinehacker";
@@ -9407,12 +8596,6 @@
94078596 githubId = 72201;
94088597 name = "Ole Jørgen Brønner";
94098598 };
9410− ollieB = {
9411− email = "1237862+oliverbunting@users.noreply.github.com";
9412− github = "oliverbunting";
9413− githubId = 1237862;
9414− name = "Ollie Bunting";
9415− };
94168599 olynch = {
94178600 email = "owen@olynch.me";
94188601 github = "olynch";
@@ -9467,12 +8650,6 @@
94678650 githubId = 23431373;
94688651 name = "Christoph Neidahl";
94698652 };
9470− opeik = {
9471− email = "sandro@stikic.com";
9472− github = "opeik";
9473− githubId = 11566773;
9474− name = "Sandro Stikić";
9475− };
94768653 orbekk = {
94778654 email = "kjetil.orbekk@gmail.com";
94788655 github = "orbekk";
@@ -9491,12 +8668,6 @@
94918668 githubId = 101514;
94928669 name = "Orivej Desh";
94938670 };
9494− ornxka = {
9495− email = "ornxka@littledevil.sh";
9496− github = "ornxka";
9497− githubId = 52086525;
9498− name = "ornxka";
9499− };
95008671 oro = {
95018672 email = "marco@orovecchia.at";
95028673 github = "oro";
@@ -9557,12 +8728,6 @@
95578728 githubId = 15930073;
95588729 name = "Moritz Scheuren";
95598730 };
9560− ozkutuk = {
9561− email = "ozkutuk@protonmail.com";
9562− github = "ozkutuk";
9563− githubId = 5948762;
9564− name = "Berk Özkütük";
9565− };
95668731 pablovsky = {
95678732 email = "dealberapablo07@gmail.com";
95688733 github = "pablo1107";
@@ -9631,13 +8796,6 @@
96318796 githubId = 71795;
96328797 name = "Mica Semrick";
96338798 };
9634− papojari = {
9635− email = "papojari-git.ovoid@aleeas.com";
9636− matrix = "@papojari:artemislena.eu";
9637− github = "papojari";
9638− githubId = 81317317;
9639− name = "papojari";
9640− };
96418799 paraseba = {
96428800 email = "paraseba@gmail.com";
96438801 github = "paraseba";
@@ -9669,7 +8827,7 @@
96698827 name = "pasqui23";
96708828 };
96718829 patryk27 = {
9672− email = "pwychowaniec@pm.me";
8830+ email = "wychowaniec.patryk@gmail.com";
96738831 github = "Patryk27";
96748832 githubId = 3395477;
96758833 name = "Patryk Wychowaniec";
@@ -9696,12 +8854,6 @@
96968854 githubId = 116740;
96978855 name = "Paweł Pacana";
96988856 };
9699− pb- = {
9700− email = "pbaecher@gmail.com";
9701− github = "pb-";
9702− githubId = 84886;
9703− name = "Paul Baecher";
9704− };
97058857 pbogdan = {
97068858 email = "ppbogdan@gmail.com";
97078859 github = "pbogdan";
@@ -9726,6 +8878,12 @@
97268878 githubId = 8641;
97278879 name = "Pierre Carrier";
97288880 };
8881+ pengmeiyu = {
8882+ email = "pengmyu@gmail.com";
8883+ github = "pmeiyu";
8884+ githubId = 8529551;
8885+ name = "Peng Mei Yu";
8886+ };
97298887 penguwin = {
97308888 email = "penguwin@penguwin.eu";
97318889 github = "penguwin";
@@ -9836,6 +8994,12 @@
98368994 githubId = 301903;
98378995 name = "Chip Collier";
98388996 };
8997+ phreedom = {
8998+ email = "phreedom@yandex.ru";
8999+ github = "phreedom";
9000+ githubId = 62577;
9001+ name = "Evgeny Egorochkin";
9002+ };
98399003 phryneas = {
98409004 email = "mail@lenzw.de";
98419005 github = "phryneas";
@@ -9995,12 +9159,6 @@
99959159 githubId = 178496;
99969160 name = "Philipp Middendorf";
99979161 };
9998− pmy = {
9999− email = "pmy@xqzp.net";
10000− github = "pmeiyu";
10001− githubId = 8529551;
10002− name = "Peng Mei Yu";
10003− };
100049162 pmyjavec = {
100059163 email = "pauly@myjavec.com";
100069164 github = "pmyjavec";
@@ -10035,12 +9193,6 @@
100359193 fingerprint = "2CD2 B030 BD22 32EF DF5A 008A 3618 20A4 5DB4 1E9A";
100369194 }];
100379195 };
10038− podocarp = {
10039− email = "xdjiaxd@gmail.com";
10040− github = "podocarp";
10041− githubId = 10473184;
10042− name = "Jia Xiaodong";
10043− };
100449196 polendri = {
100459197 email = "paul@ijj.li";
100469198 github = "polendri";
@@ -10081,18 +9233,6 @@
100819233 fingerprint = "48AD DE10 F27B AFB4 7BB0 CCAF 2D25 95A0 0D08 ACE0";
100829234 }];
100839235 };
10084− ppenguin = {
10085− name = "Jeroen Versteeg";
10086− email = "hieronymusv@gmail.com";
10087− github = "ppenguin";
10088− githubId = 17690377;
10089− };
10090− ppom = {
10091− name = "Paco Pompeani";
10092− email = "paco@ecomail.io";
10093− github = "aopom";
10094− githubId = 38916722;
10095− };
100969236 pradeepchhetri = {
100979237 email = "pradeep.chhetri89@gmail.com";
100989238 github = "pradeepchhetri";
@@ -10221,12 +9361,6 @@
102219361 githubId = 20524473;
102229362 name = "Psyanticy";
102239363 };
10224− psydvl = {
10225− email = "psydvl@fea.st";
10226− github = "psydvl";
10227− githubId = 43755002;
10228− name = "Dmitriy P";
10229− };
102309364 ptival = {
102319365 email = "valentin.robert.42@gmail.com";
102329366 github = "Ptival";
@@ -10300,12 +9434,6 @@
103009434 githubId = 115877;
103019435 name = "Kenny Shen";
103029436 };
10303− quag = {
10304− email = "quaggy@gmail.com";
10305− github = "quag";
10306− githubId = 35086;
10307− name = "Jonathan Wright";
10308− };
103099437 queezle = {
103109438 email = "git@queezle.net";
103119439 github = "qzle";
@@ -10359,13 +9487,6 @@
103599487 githubId = 1016742;
103609488 name = "Rafael García";
103619489 };
10362− raitobezarius = {
10363− email = "ryan@lahfa.xyz";
10364− matrix = "@raitobezarius:matrix.org";
10365− github = "RaitoBezarius";
10366− githubId = 314564;
10367− name = "Ryan Lahfa";
10368− };
103699490 raquelgb = {
103709491 email = "raquel.garcia.bautista@gmail.com";
103719492 github = "raquelgb";
@@ -10449,16 +9570,6 @@
104499570 githubId = 16487165;
104509571 name = "Rafael Basso";
104519572 };
10452− rbreslow = {
10453− name = "Rocky Breslow";
10454− email = "1774125+rbreslow@users.noreply.github.com";
10455− github = "rbreslow";
10456− githubId = 1774125;
10457− keys = [{
10458− longkeyid = "ed25519/0xA0D32ACCA38B88ED";
10459− fingerprint = "B5B7 BCA0 EE6F F31E 263A 69E3 A0D3 2ACC A38B 88ED";
10460− }];
10461− };
104629573 rbrewer = {
104639574 email = "rwb123@gmail.com";
104649575 github = "rbrewer123";
@@ -10477,20 +9588,6 @@
104779588 githubId = 16624;
104789589 name = "Maxim Ivanov";
104799590 };
10480− reckenrode = {
10481− name = "Randy Eckenrode";
10482− email = "randy@largeandhighquality.com";
10483− matrix = "@reckenrode:matrix.org";
10484− github = "reckenrode";
10485− githubId = 7413633;
10486− keys = [
10487− # compare with https://keybase.io/reckenrode
10488− {
10489− longkeyid = "ed25519/0xFBF19A982CCE0048";
10490− fingerprint = "01D7 5486 3A6D 64EA AC77 0D26 FBF1 9A98 2CCE 0048";
10491− }
10492− ];
10493− };
104949591 redfish64 = {
104959592 email = "engler@gmail.com";
104969593 github = "redfish64";
@@ -10585,18 +9682,6 @@
105859682 githubId = 22803888;
105869683 name = "Lu Hongxu";
105879684 };
10588− rgnns = {
10589− email = "jglievano@gmail.com";
10590− github = "rgnns";
10591− githubId = 811827;
10592− name = "Gabriel Lievano";
10593− };
10594− rgrinberg = {
10595− name = "Rudi Grinberg";
10596− email = "me@rgrinberg.com";
10597− github = "rgrinberg";
10598− githubId = 139003;
10599− };
106009685 rgrunbla = {
106019686 email = "remy@grunblatt.org";
106029687 github = "rgrunbla";
@@ -10621,13 +9706,6 @@
106219706 githubId = 6047658;
106229707 name = "Ryan Horiguchi";
106239708 };
10624− rhysmdnz = {
10625− email = "rhys@memes.nz";
10626− matrix = "@rhys:memes.nz";
10627− github = "rhysmdnz";
10628− githubId = 2162021;
10629− name = "Rhys Davies";
10630− };
106319709 ribose-jeffreylau = {
106329710 name = "Jeffrey Lau";
106339711 email = "jeffrey.lau@ribose.com";
@@ -10652,13 +9730,6 @@
106529730 githubId = 16779;
106539731 name = "Rickard Nilsson";
106549732 };
10655− ricochet = {
10656− email = "behayes2@gmail.com";
10657− github = "ricochet";
10658− githubId = 974323;
10659− matrix = "@ricochetcode:matrix.org";
10660− name = "Bailey Hayes";
10661− };
106629733 riey = {
106639734 email = "creeper844@gmail.com";
106649735 github = "Riey";
@@ -10677,12 +9748,6 @@
106779748 githubId = 37246692;
106789749 name = "Riley Inman";
106799750 };
10680− riotbib = {
10681− email = "github-nix@lnrt.de";
10682− github = "riotbib";
10683− githubId = 43172581;
10684− name = "Lennart Mühlenmeier";
10685− };
106869751 ris = {
106879752 email = "code@humanleg.org.uk";
106889753 github = "risicle";
@@ -10706,6 +9771,12 @@
107069771 }
107079772 ];
107089773 };
9774+ rittelle = {
9775+ email = "rittelle@posteo.de";
9776+ github = "rittelle";
9777+ githubId = 33598633;
9778+ name = "Lennart Rittel";
9779+ };
107099780 rixed = {
107109781 email = "rixed-github@happyleptic.org";
107119782 github = "rixed";
@@ -10890,12 +9961,6 @@
108909961 githubId = 592876;
108919962 name = "Robert W. Pearce";
108929963 };
10893− rprecenth = {
10894− email = "rasmus@precenth.eu";
10895− github = "Prillan";
10896− githubId = 1675190;
10897− name = "Rasmus Précenth";
10898− };
108999964 rprospero = {
109009965 email = "rprospero+nix@gmail.com";
109019966 github = "rprospero";
@@ -11126,22 +10191,22 @@
1112610191 githubId = 132835;
1112710192 name = "Samuel Dionne-Riel";
1112810193 };
10194+ samuelgrf = {
10195+ email = "git@samuelgrf.com";
10196+ github = "samuelgrf";
10197+ githubId = 67663538;
10198+ name = "Samuel Gräfenstein";
10199+ keys = [{
10200+ longkeyid = "rsa4096/0xEF76A063F15C63C8";
10201+ fingerprint = "FF24 5832 8FAF 4660 18C6 186E EF76 A063 F15C 63C8";
10202+ }];
10203+ };
1112910204 samuelrivas = {
1113010205 email = "samuelrivas@gmail.com";
1113110206 github = "samuelrivas";
1113210207 githubId = 107703;
1113310208 name = "Samuel Rivas";
1113410209 };
11135− samyak = {
11136− name = "Samyak Sarnayak";
11137− email = "samyak201@gmail.com";
11138− github = "Samyak2";
11139− githubId = 34161949;
11140− keys = [{
11141− longkeyid = "rsa4096/0x365873F2F0C6153B";
11142− fingerprint = "155C F413 0129 C058 9A5F 5524 3658 73F2 F0C6 153B";
11143− }];
11144− };
1114510210 sander = {
1114610211 email = "s.vanderburg@tudelft.nl";
1114710212 github = "svanderburg";
@@ -11248,16 +10313,6 @@
1124810313 email = "schristopher@konputa.com";
1124910314 name = "Scott Christopher";
1125010315 };
11251− sciencentistguy = {
11252− email = "jamie@quigley.xyz";
11253− name = "Jamie Quigley";
11254− github = "Sciencentistguy";
11255− githubId = 4983935;
11256− keys = [{
11257− longkeyid = "rsa2048/0x8E8FF66E2AE8D970";
11258− fingerprint = "30BB FF3F AB0B BB3E 0435 F83C 8E8F F66E 2AE8 D970";
11259− }];
11260−};
1126110316 scode = {
1126210317 email = "peter.schuller@infidyne.com";
1126310318 github = "scode";
@@ -11308,12 +10363,6 @@
1130810363 githubId = 19472270;
1130910364 name = "Sebastian";
1131010365 };
11311− sebastianblunt = {
11312− name = "Sebastian Blunt";
11313− email = "nix@sebastianblunt.com";
11314− github = "sebastianblunt";
11315− githubId = 47431204;
11316− };
1131710366 sebbadk = {
1131810367 email = "sebastian@sebba.dk";
1131910368 github = "SEbbaDK";
@@ -11368,12 +10417,6 @@
1136810417 githubId = 307899;
1136910418 name = "Gurkan Gur";
1137010419 };
11371− serge = {
11372− email = "sb@canva.com";
11373− github = "serge-belov";
11374− githubId = 38824235;
11375− name = "Serge Belov";
11376− };
1137710420 sersorrel = {
1137810421 email = "ash@sorrel.sh";
1137910422 github = "sersorrel";
@@ -11418,12 +10461,6 @@
1141810461 githubId = 1151264;
1141910462 name = "Sebastian Graf";
1142010463 };
11421− shadaj = {
11422− email = "shadaj@users.noreply.github.com";
11423− github = "shadaj";
11424− githubId = 543055;
11425− name = "Shadaj Laddad";
11426− };
1142710464 shahrukh330 = {
1142810465 email = "shahrukh330@gmail.com";
1142910466 github = "shahrukh330";
@@ -11448,28 +10485,12 @@
1144810485 githubId = 6720672;
1144910486 name = "Shane Pearlman";
1145010487 };
11451− shanesveller = {
11452− email = "shane@sveller.dev";
11453− github = "shanesveller";
11454− githubId = 831;
11455− keys = [{
11456− longkeyid = "rsa4096/0x9210C218023C15CD";
11457− fingerprint = "F83C 407C ADC4 5A0F 1F2F 44E8 9210 C218 023C 15CD";
11458− }];
11459− name = "Shane Sveller";
11460− };
1146110488 shawndellysse = {
1146210489 email = "sdellysse@gmail.com";
1146310490 github = "shawndellysse";
1146410491 githubId = 293035;
1146510492 name = "Shawn Dellysse";
1146610493 };
11467− shawn8901 = {
11468− email = "shawn8901@googlemail.com";
11469− github = "shawn8901";
11470− githubId = 12239057;
11471− name = "Shawn8901";
11472− };
1147310494 shazow = {
1147410495 email = "andrey.petrov@shazow.net";
1147510496 github = "shazow";
@@ -11500,22 +10521,6 @@
1150010521 githubId = 251028;
1150110522 name = "Shell Turner";
1150210523 };
11503− shikanime = {
11504− name = "William Phetsinorath";
11505− email = "deva.shikanime@protonmail.com";
11506− github = "shikanime";
11507− githubId = 22115108;
11508− };
11509− shiryel = {
11510− email = "contact@shiryel.com";
11511− name = "Shiryel";
11512− github = "shiryel";
11513− githubId = 35617139;
11514− keys = [{
11515− longkeyid = "ed25519/0xC4041EA6B32633DE";
11516− fingerprint = "AB63 4CD9 3322 BD42 6231 F764 C404 1EA6 B326 33DE";
11517− }];
11518− };
1151910524 shlevy = {
1152010525 email = "shea@shealevy.com";
1152110526 github = "shlevy";
@@ -11587,7 +10592,7 @@
1158710592 name = "Yann Hodique";
1158810593 };
1158910594 sikmir = {
11590− email = "sikmir@disroot.org";
10595+ email = "sikmir@gmail.com";
1159110596 github = "sikmir";
1159210597 githubId = 688044;
1159310598 name = "Nikolay Korotkiy";
@@ -11620,12 +10625,6 @@
1162010625 githubId = 2770647;
1162110626 name = "Simon Vandel Sillesen";
1162210627 };
11623− sir4ur0n = {
11624− email = "sir4ur0n@users.noreply.github.com";
11625− github = "sir4ur0n";
11626− githubId = 1204125;
11627− name = "sir4ur0n";
11628− };
1162910628 siraben = {
1163010629 email = "bensiraphob@gmail.com";
1163110630 matrix = "@siraben:matrix.org";
@@ -11738,12 +10737,6 @@
1173810737 fingerprint = "4242 834C D401 86EF 8281 4093 86E3 0E5A 0F5F C59C";
1173910738 }];
1174010739 };
11741− smasher164 = {
11742− email = "aindurti@gmail.com";
11743− github = "smasher164";
11744− githubId = 12636891;
11745− name = "Akhil Indurti";
11746− };
1174710740 smironov = {
1174810741 email = "grrwlf@gmail.com";
1174910742 github = "grwlf";
@@ -11800,13 +10793,6 @@
1180010793 githubId = 26806;
1180110794 name = "Scott Olson";
1180210795 };
11803− SomeoneSerge = {
11804− email = "sergei.kozlukov@aalto.fi";
11805− matrix = "@ss:someonex.net";
11806− github = "SomeoneSerge";
11807− githubId = 9720532;
11808− name = "Sergei K";
11809− };
1181010796 sondr3 = {
1181110797 email = "nilsen.sondre@gmail.com";
1181210798 github = "sondr3";
@@ -11933,35 +10919,12 @@
1193310919 githubId = 7512804;
1193410920 name = "Martin Langlotz";
1193510921 };
11936− steamwalker = {
11937− email = "steamwalker@xs4all.nl";
11938− github = "steamwalker";
11939− githubId = 94006354;
11940− name = "steamwalker";
11941− };
1194210922 steell = {
1194310923 email = "steve@steellworks.com";
1194410924 github = "Steell";
1194510925 githubId = 1699155;
1194610926 name = "Steve Elliott";
1194710927 };
11948− stehessel = {
11949− email = "stephan@stehessel.de";
11950− github = "stehessel";
11951− githubId = 55607356;
11952− name = "Stephan Heßelmann";
11953− };
11954− steinybot = {
11955− name = "Jason Pickens";
11956− email = "jasonpickensnz@gmail.com";
11957− matrix = "@steinybot:matrix.org";
11958− github = "steinybot";
11959− githubId = 4659562;
11960− keys = [{
11961− longkeyid = "ed25519/0x21DE1CAE59762A0F";
11962− fingerprint = "2709 1DEC CC42 4635 4299 569C 21DE 1CAE 5976 2A0F";
11963− }];
11964− };
1196510928 stelcodes = {
1196610929 email = "stel@stel.codes";
1196710930 github = "stelcodes";
@@ -12063,12 +11026,6 @@
1206311026 githubId = 1694705;
1206411027 name = "Sam Stites";
1206511028 };
12066− strager = {
12067− email = "strager.nds@gmail.com";
12068− github = "strager";
12069− githubId = 48666;
12070− name = "Matthew \"strager\" Glazar";
12071− };
1207211029 stumoss = {
1207311030 email = "samoss@gmail.com";
1207411031 github = "stumoss";
@@ -12088,10 +11045,10 @@
1208811045 name = "Justus K";
1208911046 };
1209011047 SubhrajyotiSen = {
12091− email = "subhrajyoti12@gmail.com";
12092− github = "SubhrajyotiSen";
12093− githubId = 12984845;
12094− name = "Subhrajyoti Sen";
11048+ email = "subhrajyoti12@gmail.com";
11049+ github = "SubhrajyotiSen";
11050+ githubId = 12984845;
11051+ name = "Subhrajyoti Sen";
1209511052 };
1209611053 suhr = {
1209711054 email = "suhr@i2pmail.org";
@@ -12111,13 +11068,6 @@
1211111068 githubId = 2666479;
1211211069 name = "Y Nguyen";
1211311070 };
12114− superherointj = {
12115− name = "Sérgio G.";
12116− email = "5861043+superherointj@users.noreply.github.com";
12117− matrix = "@superherointj:matrix.org";
12118− github = "superherointj";
12119− githubId = 5861043;
12120− };
1212111071 SuperSandro2000 = {
1212211072 email = "sandro.jaeckel@gmail.com";
1212311073 matrix = "@sandro:supersandro.de";
@@ -12274,16 +11224,6 @@
1227411224 githubId = 321799;
1227511225 name = "Paul Colomiets";
1227611226 };
12277− taikx4 = {
12278− email = "taikx4@taikx4szlaj2rsdupcwabg35inbny4jk322ngeb7qwbbhd5i55nf5yyd.onion";
12279− github = "taikx4";
12280− githubId = 94917129;
12281− name = "taikx4";
12282− keys = [{
12283− longkeyid = "ed25519/0xCCD52C7B37BB837E";
12284− fingerprint = "6B02 8103 C4E5 F68C D77C 9E54 CCD5 2C7B 37BB 837E";
12285− }];
12286− };
1228711227 takagiy = {
1228811228 email = "takagiy.4dev@gmail.com";
1228911229 github = "takagiy";
@@ -12358,13 +11298,6 @@
1235811298 githubId = 863327;
1235911299 name = "Tyler Benster";
1236011300 };
12361− tboerger = {
12362− email = "thomas@webhippie.de";
12363− matrix = "@tboerger:matrix.org";
12364− github = "tboerger";
12365− githubId = 156964;
12366− name = "Thomas Boerger";
12367− };
1236811301 tcbravo = {
1236911302 email = "tomas.bravo@protonmail.ch";
1237011303 github = "tcbravo";
@@ -12377,12 +11310,6 @@
1237711310 githubId = 2389333;
1237811311 name = "Andy Tockman";
1237911312 };
12380− techknowlogick = {
12381− email = "techknowlogick@gitea.io";
12382− github = "techknowlogick";
12383− githubId = 164197;
12384− name = "techknowlogick";
12385− };
1238611313 Technical27 = {
1238711314 email = "38222826+Technical27@users.noreply.github.com";
1238811315 github = "Technical27";
@@ -12419,12 +11346,6 @@
1241911346 githubId = 280235;
1242011347 name = "Terje Larsen";
1242111348 };
12422− terrorjack = {
12423− email = "astrohavoc@gmail.com";
12424− github = "TerrorJack";
12425− githubId = 3889585;
12426− name = "Cheng Shao";
12427− };
1242811349 tesq0 = {
1242911350 email = "mikolaj.galkowski@gmail.com";
1243011351 github = "tesq0";
@@ -12462,12 +11383,6 @@
1246211383 githubId = 378734;
1246311384 name = "TG ⊗ Θ";
1246411385 };
12465− tgunnoe = {
12466− email = "t@gvno.net";
12467− github = "tgunnoe";
12468− githubId = 7254833;
12469− name = "Taylor Gunnoe";
12470− };
1247111386 th0rgal = {
1247211387 email = "thomas.marchand@tuta.io";
1247311388 github = "Th0rgal";
@@ -12561,12 +11476,6 @@
1256111476 githubId = 844343;
1256211477 name = "Thiago K. Okada";
1256311478 };
12564− thibaultlemaire = {
12565− email = "thibault.lemaire@protonmail.com";
12566− github = "ThibaultLemaire";
12567− githubId = 21345269;
12568− name = "Thibault Lemaire";
12569− };
1257011479 thibautmarty = {
1257111480 email = "github@thibautmarty.fr";
1257211481 matrix = "@thibaut:thibautmarty.fr";
@@ -12632,13 +11541,6 @@
1263211541 githubId = 1618946;
1263311542 name = "Tiago Castro";
1263411543 };
12635− tilcreator = {
12636− name = "TilCreator";
12637− email = "contact.nixos@tc-j.de";
12638− matrix = "@tilcreator:matrix.org";
12639− github = "TilCreator";
12640− githubId = 18621411;
12641− };
1264211544 tilpner = {
1264311545 email = "till@hoeppner.ws";
1264411546 github = "tilpner";
@@ -12703,12 +11605,6 @@
1270311605 fingerprint = "556A 403F B0A2 D423 F656 3424 8489 B911 F9ED 617B";
1270411606 }];
1270511607 };
12706− tmarkovski = {
12707− email = "tmarkovski@gmail.com";
12708− github = "tmarkovski";
12709− githubId = 1280118;
12710− name = "Tomislav Markovski";
12711− };
1271211608 tmountain = {
1271311609 email = "tinymountain@gmail.com";
1271411610 github = "tmountain";
@@ -12730,7 +11626,6 @@
1273011626 };
1273111627 toastal = {
1273211628 email = "toastal+nix@posteo.net";
12733− matrix = "@toastal:matrix.org";
1273411629 github = "toastal";
1273511630 githubId = 561087;
1273611631 name = "toastal";
@@ -12813,13 +11708,6 @@
1281311708 githubId = 90456;
1281411709 name = "Rebecca (Bex) Kelly";
1281511710 };
12816− tpw_rules = {
12817− name = "Thomas Watson";
12818− email = "twatson52@icloud.com";
12819− matrix = "@tpw_rules:matrix.org";
12820− github = "tpwrules";
12821− githubId = 208010;
12822− };
1282311711 travisbhartwell = {
1282411712 email = "nafai@travishartwell.net";
1282511713 github = "travisbhartwell";
@@ -12880,12 +11768,6 @@
1288011768 githubId = 1183303;
1288111769 name = "Jakob Klepp";
1288211770 };
12883− trundle = {
12884− name = "Andreas Stührk";
12885− email = "andy@hammerhartes.de";
12886− github = "Trundle";
12887− githubId = 332418;
12888− };
1288911771 tscholak = {
1289011772 email = "torsten.scholak@googlemail.com";
1289111773 github = "tscholak";
@@ -12988,12 +11870,6 @@
1298811870 githubId = 1983821;
1298911871 name = "Eric Wolf";
1299011872 };
12991− uakci = {
12992− name = "uakci";
12993− email = "uakci@uakci.pl";
12994− github = "uakci";
12995− githubId = 6961268;
12996− };
1299711873 udono = {
1299811874 email = "udono@virtual-things.biz";
1299911875 github = "udono";
@@ -13030,12 +11906,6 @@
1303011906 githubId = 122319;
1303111907 name = "Renato Alves";
1303211908 };
13033− unrooted = {
13034− name = "Konrad Klawikowski";
13035− email = "konrad.root.klawikowski@gmail.com";
13036− github = "unrooted";
13037− githubId = 30440603;
13038− };
1303911909 uralbash = {
1304011910 email = "root@uralbash.ru";
1304111911 github = "uralbash";
@@ -13232,9 +12102,9 @@
1323212102 githubId = 5837359;
1323312103 name = "Adrian Pistol";
1323412104 };
13235− vikanezrimaya = {
12105+ vika_nezrimaya = {
1323612106 email = "vika@fireburn.ru";
13237− github = "vikanezrimaya";
12107+ github = "kisik21";
1323812108 githubId = 7953163;
1323912109 name = "Vika Shleina";
1324012110 keys = [{
@@ -13258,12 +12128,6 @@
1325812128 githubId = 118959;
1325912129 name = "VinyMeuh";
1326012130 };
13261− viraptor = {
13262− email = "nix@viraptor.info";
13263− github = "viraptor";
13264− githubId = 188063;
13265− name = "Stanisław Pitucha";
13266− };
1326712131 viric = {
1326812132 email = "viric@viric.name";
1326912133 github = "viric";
@@ -13294,12 +12158,6 @@
1329412158 githubId = 1771332;
1329512159 name = "László Vaskó";
1329612160 };
13297− vlinkz = {
13298− email = "vmfuentes64@gmail.com";
13299− github = "vlinkz";
13300− githubId = 20145996;
13301− name = "Victor Fuentes";
13302− };
1330312161 vlstill = {
1330412162 email = "xstill@fi.muni.cz";
1330512163 github = "vlstill";
@@ -13389,16 +12247,6 @@
1338912247 githubId = 3889405;
1339012248 name = "vyp";
1339112249 };
13392− wackbyte = {
13393− name = "wackbyte";
13394− email = "wackbyte@pm.me";
13395− github = "wackbyte";
13396− githubId = 29505620;
13397− keys = [{
13398− longkeyid = "rsa4096/0x937F2AE5CCEFBF59";
13399− fingerprint = "E595 7FE4 FEF6 714B 1AD3 1483 937F 2AE5 CCEF BF59";
13400− }];
13401− };
1340212250 wakira = {
1340312251 name = "Sheng Wang";
1340412252 email = "sheng@a64.work";
@@ -13427,22 +12275,10 @@
1342712275 githubId = 34962284;
1342812276 name = "wchresta";
1342912277 };
13430− wdavidw = {
13431− name = "David Worms";
13432− email = "david@adaltas.com";
13433− github = "wdavidw";
13434− githubId = 46896;
13435− };
1343612278 wedens = {
1343712279 email = "kirill.wedens@gmail.com";
1343812280 name = "wedens";
1343912281 };
13440− wegank = {
13441− name = "Weijia Wang";
13442− email = "contact@weijia.wang";
13443− github = "wegank";
13444− githubId = 9713184;
13445− };
1344612282 weihua = {
1344712283 email = "luwh364@gmail.com";
1344812284 github = "weihua-lu";
@@ -13503,12 +12339,6 @@
1350312339 email = "tim.williams.public@gmail.com";
1350412340 name = "Tim Philip Williams";
1350512341 };
13506− willcohen = {
13507− email = "willcohen@users.noreply.github.com";
13508− github = "willcohen";
13509− githubId = 5185341;
13510− name = "Will Cohen";
13511− };
1351212342 winden = {
1351312343 email = "windenntw@gmail.com";
1351412344 name = "Antonio Vargas Gonzalez";
@@ -13519,18 +12349,12 @@
1351912349 githubId = 6016963;
1352012350 name = "Patrick Winter";
1352112351 };
13522− winter = {
12352+ winterqt = {
1352312353 email = "nixos@winter.cafe";
1352412354 github = "winterqt";
1352512355 githubId = 78392041;
1352612356 name = "Winter";
1352712357 };
13528− wintrmvte = {
13529− name = "Jakub Lutczyn";
13530− email = "kubalutczyn@gmail.com";
13531− github = "wintrmvte";
13532− githubId = 41823252;
13533− };
1353412358 wirew0rm = {
1353512359 email = "alex@wirew0rm.de";
1353612360 github = "wirew0rm";
@@ -13592,7 +12416,7 @@
1359212416 name = "Andrei Pampu";
1359312417 };
1359412418 wolfangaukang = {
13595− email = "clone.gleeful135+nixpkgs@anonaddy.me";
12419+ email = "liquid.query960@4wrd.cc";
1359612420 github = "wolfangaukang";
1359712421 githubId = 8378365;
1359812422 name = "P. R. d. O.";
@@ -13609,12 +12433,6 @@
1360912433 githubId = 28888242;
1361012434 name = "WORLDofPEACE";
1361112435 };
13612− wr0belj = {
13613− name = "Jakub Wróbel";
13614− email = "wrobel.jakub@protonmail.com";
13615− github = "wr0belj";
13616− githubId = 40501814;
13617− };
1361812436 wscott = {
1361912437 email = "wsc9tt@gmail.com";
1362012438 github = "wscott";
@@ -13622,7 +12440,7 @@
1362212440 name = "Wayne Scott";
1362312441 };
1362412442 wucke13 = {
13625− email = "wucke13@gmail.com";
12443+ email = "info@wucke13.de";
1362612444 github = "wucke13";
1362712445 githubId = 20400405;
1362812446 name = "Wucke";
@@ -13645,13 +12463,6 @@
1364512463 github = "wunderbrick";
1364612464 githubId = 52174714;
1364712465 };
13648− wyndon = {
13649− email = "72203260+wyndon@users.noreply.github.com";
13650− matrix = "@wyndon:envs.net";
13651− github = "wyndon";
13652− githubId = 72203260;
13653− name = "wyndon";
13654− };
1365512466 wyvie = {
1365612467 email = "elijahrum@gmail.com";
1365712468 github = "wyvie";
@@ -13708,12 +12519,6 @@
1370812519 githubId = 1297598;
1370912520 name = "Konrad Borowski";
1371012521 };
13711− xgroleau = {
13712− email = "xgroleau@gmail.com";
13713− github = "xgroleau";
13714− githubId = 31734358;
13715− name = "Xavier Groleau";
13716− };
1371712522 xiorcale = {
1371812523 email = "quentin.vaucher@pm.me";
1371912524 github = "xiorcale";
@@ -13768,12 +12573,6 @@
1376812573 githubId = 2242427;
1376912574 name = "Yoann Ono";
1377012575 };
13771− yana = {
13772− email = "yana@riseup.net";
13773− github = "sowelisuwi";
13774− githubId = 1643293;
13775− name = "Yana Timoshenko";
13776− };
1377712576 yarny = {
1377812577 email = "41838844+Yarny0@users.noreply.github.com";
1377912578 github = "Yarny0";
@@ -13793,6 +12592,12 @@
1379312592 githubId = 73759599;
1379412593 name = "Lara A.";
1379512594 };
12595+ yegortimoshenko = {
12596+ email = "yegortimoshenko@riseup.net";
12597+ github = "yegortimoshenko";
12598+ githubId = 1643293;
12599+ name = "Yegor Timoshenko";
12600+ };
1379612601 yesbox = {
1379712602 email = "jesper.geertsen.jonsson@gmail.com";
1379812603 github = "yesbox";
@@ -13805,12 +12610,6 @@
1380512610 githubId = 11229748;
1380612611 name = "Lin Yinfeng";
1380712612 };
13808− ylecornec = {
13809− email = "yves.stan.lecornec@tweag.io";
13810− github = "ylecornec";
13811− githubId = 5978566;
13812− name = "Yves-Stan Le Cornec";
13813− };
1381412613 ylwghst = {
1381512614 email = "ylwghst@onionmail.info";
1381612615 github = "ylwghst";
@@ -14033,6 +12832,12 @@
1403312832 githubId = 1772064;
1403412833 name = "Tim Zook";
1403512834 };
12835+ zoomulator = {
12836+ email = "zoomulator@gmail.com";
12837+ github = "zoomulator";
12838+ githubId = 1069303;
12839+ name = "Kim Simmons";
12840+ };
1403612841 zopieux = {
1403712842 email = "zopieux@gmail.com";
1403812843 github = "zopieux";
@@ -14211,12 +13016,6 @@
1421113016 github = "deifactor";
1421213017 githubId = 30192992;
1421313018 };
14214− deinferno = {
14215− name = "deinferno";
14216− email = "14363193+deinferno@users.noreply.github.com";
14217− github = "deinferno";
14218− githubId = 14363193;
14219− };
1422013019 fzakaria = {
1422113020 name = "Farid Zakaria";
1422213021 email = "farid.m.zakaria@gmail.com";
@@ -14230,10 +13029,10 @@
1423013029 github = "nagisa";
1423113030 githubId = 679122;
1423213031 };
14233− yshym = {
13032+ yevhenshymotiuk = {
1423413033 name = "Yevhen Shymotiuk";
14235− email = "yshym@pm.me";
14236− github = "yshym";
13034+ email = "yevhenshymotiuk@gmail.com";
13035+ github = "yevhenshymotiuk";
1423713036 githubId = 44244245;
1423813037 };
1423913038 hmenke = {
@@ -14340,12 +13139,6 @@
1434013139 github = "zbioe";
1434113140 githubId = 7332055;
1434213141 };
14343− zendo = {
14344− name = "zendo";
14345− email = "linzway@qq.com";
14346− github = "zendo";
14347− githubId = 348013;
14348− };
1434913142 zenithal = {
1435013143 name = "zenithal";
1435113144 email = "i@zenithal.me";
@@ -14363,22 +13156,6 @@
1436313156 github = "zeri42";
1436413157 githubId = 68825133;
1436513158 };
14366− zoedsoupe = {
14367− github = "zoedsoupe";
14368− githubId = 44469426;
14369− name = "Zoey de Souza Pessanha";
14370− email = "zoey.spessanha@outlook.com";
14371− keys = [{
14372− longkeyid = "rsa4096/0x1E1E889CDBD6A315";
14373− fingerprint = "EAA1 51DB 472B 0122 109A CB17 1E1E 889C DBD6 A315";
14374− }];
14375− };
14376− zombiezen = {
14377− name = "Ross Light";
14378− email = "ross@zombiezen.com";
14379− github = "zombiezen";
14380− githubId = 181535;
14381− };
1438213159 zseri = {
1438313160 name = "zseri";
1438413161 email = "zseri.devel@ytrizja.de";
@@ -14401,81 +13178,4 @@
1440113178 github = "sei40kr";
1440213179 githubId = 11665236;
1440313180 };
14404− vdot0x23 = {
14405− name = "Victor Büttner";
14406− email = "nix.victor@0x23.dk";
14407− github = "vdot0x23";
14408− githubId = 40716069;
14409− };
14410− jpagex = {
14411− name = "Jérémy Pagé";
14412− email = "contact@jeremypage.me";
14413− github = "jpagex";
14414− githubId = 635768;
14415− };
14416− vbrandl = {
14417− name = "Valentin Brandl";
14418− email = "mail+nixpkgs@vbrandl.net";
14419− github = "vbrandl";
14420− githubId = 20639051;
14421− };
14422− portothree = {
14423− name = "Gustavo Porto";
14424− email = "gustavoporto@ya.ru";
14425− github = "portothree";
14426− githubId = 3718120;
14427− };
14428− pwoelfel = {
14429− name = "Philipp Woelfel";
14430− email = "philipp.woelfel@gmail.com";
14431− github = "PhilippWoelfel";
14432− githubId = 19400064;
14433− };
14434− qbit = {
14435− name = "Aaron Bieber";
14436− email = "aaron@bolddaemon.com";
14437− github = "qbit";
14438− githubId = 68368;
14439− matrix = "@qbit:tapenet.org";
14440− keys = [{
14441− longkeyid = "rsa4096/0x1F81112D62A9ADCE";
14442− fingerprint = "3586 3350 BFEA C101 DB1A 4AF0 1F81 112D 62A9 ADCE";
14443− }];
14444− };
14445− ameer = {
14446− name = "Ameer Taweel";
14447− email = "ameertaweel2002@gmail.com";
14448− github = "AmeerTaweel";
14449− githubId = 20538273;
14450− };
14451− nigelgbanks = {
14452− name = "Nigel Banks";
14453− email = "nigel.g.banks@gmail.com";
14454− github = "nigelgbanks";
14455− githubId = 487373;
14456− };
14457− zanculmarktum = {
14458− name = "Azure Zanculmarktum";
14459− email = "zanculmarktum@gmail.com";
14460− github = "zanculmarktum";
14461− githubId = 16958511;
14462− };
14463− kuwii = {
14464− name = "kuwii";
14465− email = "kuwii.someone@gmail.com";
14466− github = "kuwii";
14467− githubId = 10705175;
14468− };
14469− melias122 = {
14470− name = "Martin Elias";
14471− email = "martin+nixpkgs@elias.sx";
14472− github = "melias122";
14473− githubId = 1027766;
14474− };
14475− bryanhonof = {
14476− name = "Bryan Honof";
14477− email = "bryanhonof@gmail.com";
14478− github = "bryanhonof";
14479− githubId = 5932804;
14480− };
1448113181}
maintainers/scripts/check-maintainer-github-handles.sh+9−9
@@ -4,19 +4,20 @@
44# Example how to work with the `lib.maintainers` attrset.
55# Can be used to check whether all user handles are still valid.
66
7−set -o errexit -o noclobber -o nounset -o pipefail
8−shopt -s failglob inherit_errexit
7+set -e
8+
9+# nixpkgs='<nixpkgs>'
10+# if [ -n "$1" ]; then
911
1012function checkCommits {
11− local ret status tmp user
12− user="$1"
13− tmp=$(mktemp)
13+ local user="$1"
14+ local tmp=$(mktemp)
1415 curl --silent -w "%{http_code}" \
1516 "https://github.com/NixOS/nixpkgs/commits?author=$user" \
1617 > "$tmp"
1718 # the last line of tmp contains the http status
18− status=$(tail -n1 "$tmp")
19− ret=
19+ local status=$(tail -n1 "$tmp")
20+ local ret=
2021 case $status in
2122 200) if <"$tmp" grep -i "no commits found" > /dev/null; then
2223 ret=1
@@ -30,7 +31,7 @@ function checkCommits {
3031 checkCommits "$user"
3132 ret=$?
3233 ;;
33− *) printf "BAD STATUS: $(tail -n1 "$tmp") for %s\n" "$user"; ret=1
34+ *) printf "BAD STATUS: $(tail -n1 $tmp) for %s\n" "$user"; ret=1
3435 ret=1
3536 ;;
3637 esac
@@ -62,5 +63,4 @@ nix-instantiate -A lib.maintainers --eval --strict --json \
6263 | jq -r '.[]|.github|select(.)' \
6364 | parallel -j5 checkUser
6465
65−# To check some arbitrary users:
6666# parallel -j100 checkUser ::: "eelco" "profpatsch" "Profpatsch" "a"
maintainers/scripts/dep-licenses.sh+1−1
@@ -9,7 +9,7 @@ tmp=$(mktemp --tmpdir -d nixpkgs-dep-license.XXXXXX)
99exitHandler() {
1010 exitCode=$?
1111 rm -rf "$tmp"
12− return $exitCode
12+ exit $exitCode
1313}
1414
1515trap "exitHandler" EXIT
maintainers/scripts/feature-freeze-teams.pldeleted−98
@@ -1,98 +0,0 @@
1−#!/usr/bin/env nix-shell
2−#!nix-shell -i perl -p perl -p perlPackages.JSON perlPackages.LWPUserAgent perlPackages.LWPProtocolHttps perlPackages.TermReadKey
3−
4−# This script generates a list of teams to ping for the Feature Freeze announcement on Discourse.
5−# It's intended to be used by Release Managers before creating such posts.
6−#
7−# The script interactively reads a GitHub username and a corresponding GitHub Personal Access token.
8−# This is required to access the GitHub Teams API so the token needs at least the read:org privilege.
9−
10−## no critic (InputOutput::RequireCheckedSyscalls, InputOutput::ProhibitBacktickOperators)
11−use strict;
12−use warnings;
13−use Carp;
14−use Cwd 'abs_path';
15−use File::Basename;
16−use JSON qw(decode_json);
17−use LWP::UserAgent;
18−use Term::ReadKey qw(ReadLine ReadMode);
19−
20−sub github_team_members {
21− my ($team_name, $username, $token) = @_;
22− my @ret;
23−
24− my $req = HTTP::Request->new('GET', "https://api.github.com/orgs/NixOS/teams/$team_name/members", [ 'Accept' => 'application/vnd.github.v3+json' ]);
25− $req->authorization_basic($username, $token);
26− my $response = LWP::UserAgent->new->request($req);
27−
28− if ($response->is_success) {
29− my $content = decode_json($response->decoded_content);
30− foreach (@{$content}) {
31− push @ret, $_->{'login'};
32− }
33− } else {
34− print {*STDERR} "!! Requesting members of GitHub Team '$team_name' failed: $response->status_line";
35− }
36−
37− return \@ret;
38−}
39−
40−# Read GitHub credentials
41−print {*STDERR} 'GitHub username: ';
42−my $github_user = ReadLine(0);
43−ReadMode('noecho');
44−print {*STDERR} 'GitHub personal access token (no echo): ';
45−my $github_token = ReadLine(0);
46−ReadMode('restore');
47−print {*STDERR} "\n";
48−chomp $github_user;
49−chomp $github_token;
50−
51−# Read nix output
52−my $nix_version = `nix --version`;
53−my $out;
54−my $lib_path = abs_path(dirname(__FILE__)) . '../../../lib';
55−if ($nix_version =~ m/2[.]3[.]/msx) {
56− $out = `nix eval --json '(import $lib_path).teams'` || croak 'nix eval failed';
57−} else {
58− $out = `nix --extra-experimental-features nix-command eval --json --impure --expr '(import $lib_path).teams'` || croak('nix eval failed');
59−}
60−my $data = decode_json($out);
61−
62−# Process teams
63−print {*STDERR} "\n";
64−while (my ($team_nix_key, $team_config) = each %{$data}) {
65− # Ignore teams that don't want to be or can't be pinged
66− if (not defined $team_config->{enableFeatureFreezePing} or not $team_config->{enableFeatureFreezePing}) {
67− next;
68− }
69− if (not defined $team_config->{shortName}) {
70− print {*STDERR} "!! The team with the nix key '$team_nix_key' has no shortName set - ignoring";
71− next;
72− }
73− # Team name
74− print {*STDERR} "$team_config->{shortName}:";
75− # GitHub Teams
76− my @github_members;
77− if (defined $team_config->{githubTeams}) {
78− foreach (@{$team_config->{githubTeams}}) {
79− print {*STDERR} " \@NixOS/${_}";
80− push @github_members, @{github_team_members($_, $github_user, $github_token)};
81− }
82− }
83− my %github_members = map { $_ => 1 } @github_members;
84− # Members
85− if (defined $team_config->{members}) {
86− foreach (@{$team_config->{members}}) {
87− my %user = %{$_};
88− my $github_handle = $user{'github'};
89− # Ensure we don't ping team members twice (as team member and directly)
90− if (defined $github_members{$github_handle}) {
91− next;
92− }
93− print {*STDERR} " \@$github_handle";
94− }
95− }
96−
97− print {*STDERR} "\n";
98−}
maintainers/scripts/haskell/maintained-broken-pkgs.nixdeleted−22
@@ -1,22 +0,0 @@
1−let
2− nixpkgs = import ../../..;
3− inherit (nixpkgs {}) haskellPackages lib;
4− maintainedPkgs = lib.filterAttrs (
5− _: v: builtins.length (v.meta.maintainers or []) > 0
6− ) haskellPackages;
7− brokenPkgs = lib.filterAttrs (_: v: v.meta.broken) maintainedPkgs;
8− transitiveBrokenPkgs = lib.filterAttrs
9− (_: v: !(builtins.tryEval (v.outPath or null)).success && !v.meta.broken)
10− maintainedPkgs;
11− infoList = pkgs: lib.concatStringsSep "\n" (lib.mapAttrsToList (name: drv: "${name} ${(builtins.elemAt drv.meta.maintainers 0).github}") pkgs);
12−in {
13− report = ''
14− BROKEN:
15− ${infoList brokenPkgs}
16−
17− TRANSITIVE BROKEN:
18− ${infoList transitiveBrokenPkgs}
19− '';
20− transitiveErrors =
21− builtins.attrValues transitiveBrokenPkgs;
22−}
maintainers/scripts/haskell/merge-and-open-pr.sh+1−1
@@ -99,7 +99,7 @@ This PR is the regular merge of the \`haskell-updates\` branch into \`master\`.
9999
100100This branch is being continually built and tested by hydra at https://hydra.nixos.org/jobset/nixpkgs/haskell-updates. You may be able to find an up-to-date Hydra build report at [cdepillabout/nix-haskell-updates-status](https://github.com/cdepillabout/nix-haskell-updates-status).
101101
102−We roughly aim to merge these \`haskell-updates\` PRs at least once every two weeks. See the @NixOS/haskell [team calendar](https://cloud.maralorn.de/apps/calendar/p/H6migHmKX7xHoTFa) for who is currently in charge of this branch.
102+We roughly aim to merge these \`haskell-updates\` PRs at least once every two weeks. See the @NixOS/haskell [team calendar](https://cloud.maralorn.de/apps/calendar/p/Mw5WLnzsP7fC4Zky) for who is currently in charge of this branch.
103103
104104### haskellPackages Workflow Summary
105105
maintainers/scripts/haskell/regenerate-hackage-packages.sh+1−1
@@ -20,7 +20,7 @@ HACKAGE2NIX="${HACKAGE2NIX:-hackage2nix}"
2020# See: https://github.com/NixOS/nixpkgs/pull/122023
2121export LC_ALL=C.UTF-8
2222
23−extraction_derivation='with import ./. {}; runCommandLocal "unpacked-cabal-hashes" { } "tar xf ${all-cabal-hashes} --strip-components=1 --one-top-level=$out"'
23+extraction_derivation='with import ./. {}; runCommand "unpacked-cabal-hashes" { } "tar xf ${all-cabal-hashes} --strip-components=1 --one-top-level=$out"'
2424unpacked_hackage="$(nix-build -E "$extraction_derivation" --no-out-link)"
2525config_dir=pkgs/development/haskell-modules/configuration-hackage2nix
2626
maintainers/scripts/haskell/test-configurations.nixdeleted−136
@@ -1,136 +0,0 @@
1−/* Nix expression to test for regressions in the Haskell configuration overlays.
2−
3− test-configurations.nix determines all attributes touched by given Haskell
4− configuration overlays (i. e. pkgs/development/haskell-modules/configuration-*.nix)
5− and builds all derivations (or at least a reasonable subset) affected by
6− these overrides.
7−
8− By default, it checks `configuration-{common,nix,ghc-8.10.x}.nix`. You can
9− invoke it like this:
10−
11− nix-build maintainers/scripts/haskell/test-configurations.nix --keep-going
12−
13− It is possible to specify other configurations:
14−
15− nix-build maintainers/scripts/haskell/test-configurations.nix \
16− --arg files '[ "configuration-ghc-9.0.x.nix" "configuration-ghc-9.2.x.nix" ]' \
17− --keep-going
18−
19− You can also just supply a single string:
20−
21− nix-build maintainers/scripts/haskell/test-configurations.nix \
22− --argstr files "configuration-arm.nix" --keep-going
23−
24− You can even supply full paths which is handy, as it allows for tab-completing
25− the configurations:
26−
27− nix-build maintainers/scripts/haskell/test-configurations.nix \
28− --argstr files pkgs/development/haskell-modules/configuration-arm.nix \
29− --keep-going
30−
31− By default, derivation that fail to evaluate are skipped, unless they are
32− “just” marked as broken. You can check for other eval errors like this:
33−
34− nix-build maintainers/scripts/haskell/test-configurations.nix \
35− --arg skipEvalErrors false --keep-going
36−
37− You can also disable checking broken packages by passing a nixpkgs config:
38−
39− nix-build maintainers/scripts/haskell/test-configurations.nix \
40− --arg config '{ allowBroken = false; }' --keep-going
41−
42− By default the haskell.packages.ghc*Binary sets used for bootstrapping GHC
43− are _not_ tested. You can change this using:
44−
45− nix-build maintainers/scripts/haskell/test-configurations.nix \
46− --arg skipBinaryGHCs false --keep-going
47−
48−*/
49−{ files ? [
50− "configuration-common.nix"
51− "configuration-nix.nix"
52− "configuration-ghc-8.10.x.nix"
53− ]
54−, nixpkgsPath ? ../../..
55−, config ? { allowBroken = true; }
56−, skipEvalErrors ? true
57−, skipBinaryGHCs ? true
58−}:
59−
60−let
61− pkgs = import nixpkgsPath { inherit config; };
62− inherit (pkgs) lib;
63−
64− # see usage explanation for the input format `files` allows
65− files' = builtins.map builtins.baseNameOf (
66− if !builtins.isList files then [ files ] else files
67− );
68−
69− setsForFile = fileName:
70− let
71− # extract the unique part of the config's file name
72− configName = builtins.head (
73− builtins.match "configuration-(.+).nix" fileName
74− );
75− # match the major and minor version of the GHC the config is intended for, if any
76− configVersion = lib.concatStrings (
77− builtins.match "ghc-([0-9]+).([0-9]+).x" configName
78− );
79− # return all package sets under haskell.packages matching the version components
80− setsForVersion = builtins.map (name: pkgs.haskell.packages.${name}) (
81− builtins.filter (setName:
82− lib.hasPrefix "ghc${configVersion}" setName
83− && (skipBinaryGHCs -> !(lib.hasInfix "Binary" setName))
84− ) (
85− builtins.attrNames pkgs.haskell.packages
86− )
87− );
88−
89− defaultSets = [ pkgs.haskellPackages ];
90− in {
91− # use plain haskellPackages for the version-agnostic files
92− # TODO(@sternenseemann): also consider currently selected versioned sets
93− "common" = defaultSets;
94− "nix" = defaultSets;
95− "arm" = defaultSets;
96− "darwin" = defaultSets;
97− }.${configName} or setsForVersion;
98−
99− # attribute set that has all the attributes of haskellPackages set to null
100− availableHaskellPackages = builtins.listToAttrs (
101− builtins.map (attr: lib.nameValuePair attr null) (
102− builtins.attrNames pkgs.haskellPackages
103− )
104− );
105−
106− # evaluate a configuration and only return the attributes changed by it,
107− # pass availableHaskellPackages as super in case intersectAttrs is used
108− overriddenAttrs = fileName: builtins.attrNames (
109− lib.fix (self:
110− import (nixpkgsPath + "/pkgs/development/haskell-modules/${fileName}") {
111− haskellLib = pkgs.haskell.lib.compose;
112− inherit pkgs;
113− } self availableHaskellPackages
114− )
115− );
116−
117− # list of derivations that are affected by overrides in the given configuration
118− # overlays. For common, nix, darwin etc. only the derivation from the default
119− # package set will be emitted.
120− packages = builtins.filter (v:
121− lib.warnIf (v.meta.broken or false) "${v.pname} is marked as broken" (
122− v != null
123− && (skipEvalErrors -> (builtins.tryEval (v.outPath or v)).success)
124− )
125− ) (
126− lib.concatMap (fileName:
127− let
128− sets = setsForFile fileName;
129− attrs = overriddenAttrs fileName;
130− in
131− lib.concatMap (set: builtins.map (attr: set.${attr}) attrs) sets
132− ) files'
133− );
134−in
135−
136−packages
maintainers/scripts/haskell/update-stackage.sh+12−25
@@ -1,38 +1,26 @@
11#! /usr/bin/env nix-shell
22#! nix-shell -i bash -p nix curl jq nix-prefetch-github git gnused gnugrep -I nixpkgs=.
3−# shellcheck shell=bash
43
54set -eu -o pipefail
65
7−# Stackage solver to use, LTS or Nightly
8−# (should be capitalized like the display name)
9−SOLVER=LTS
10−TMP_TEMPLATE=update-stackage.XXXXXXX
11−readonly SOLVER
12−readonly TMP_TEMPLATE
13−
14−toLower() {
15− printf "%s" "$1" | tr '[:upper:]' '[:lower:]'
16−}
17−
18−tmpfile=$(mktemp "$TMP_TEMPLATE")
19−tmpfile_new=$(mktemp "$TMP_TEMPLATE")
6+tmpfile=$(mktemp "update-stackage.XXXXXXX")
7+# shellcheck disable=SC2064
208
219stackage_config="pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml"
2210
23−trap 'rm "${tmpfile}" "${tmpfile_new}"' 0
24−touch "$tmpfile" "$tmpfile_new" # Creating files here so that trap creates no errors.
11+trap "rm ${tmpfile} ${tmpfile}.new" 0
12+touch "$tmpfile" "$tmpfile.new" # Creating files here so that trap creates no errors.
2513
26−curl -L -s "https://stackage.org/$(toLower "$SOLVER")/cabal.config" >"$tmpfile"
27−old_version=$(grep '^# Stackage' $stackage_config | sed -e 's/.\+ \([A-Za-z]\+ [0-9.-]\+\)$/\1/g')
28−version="$SOLVER $(sed -rn "s/^--.*http:..(www.)?stackage.org.snapshot.$(toLower "$SOLVER")-//p" "$tmpfile")"
14+curl -L -s "https://stackage.org/lts/cabal.config" >"$tmpfile"
15+old_version=$(grep "# Stackage" $stackage_config | sed -E 's/.*([0-9]{2}\.[0-9]+)/\1/')
16+version=$(sed -rn "s/^--.*http:..(www.)?stackage.org.snapshot.lts-//p" "$tmpfile")
2917
3018if [[ "$old_version" == "$version" ]]; then
3119 echo "No new stackage version"
3220 exit 0 # Nothing to do
3321fi
3422
35−echo "Updating Stackage from $old_version to $version."
23+echo "Updating Stackage LTS from $old_version to $version."
3624
3725# Create a simple yaml version of the file.
3826sed -r \
@@ -42,10 +30,10 @@ sed -r \
4230 -e 's|,$||' \
4331 -e '/installed$/d' \
4432 -e '/^$/d' \
45− < "${tmpfile}" | sort --ignore-case >"${tmpfile_new}"
33+ < "${tmpfile}" | sort --ignore-case >"${tmpfile}.new"
4634
4735cat > $stackage_config << EOF
48−# Stackage $version
36+# Stackage LTS $version
4937# This file is auto-generated by
5038# maintainers/scripts/haskell/update-stackage.sh
5139default-package-overrides:
@@ -57,13 +45,12 @@ sed -r \
5745 -e '/ distribution-nixpkgs /d' \
5846 -e '/ jailbreak-cabal /d' \
5947 -e '/ language-nix /d' \
60− -e '/ cabal-install /d' \
61− < "${tmpfile_new}" >> $stackage_config
48+ < "${tmpfile}.new" >> $stackage_config
6249
6350if [[ "${1:-}" == "--do-commit" ]]; then
6451git add $stackage_config
6552git commit -F - << EOF
66−haskellPackages: stackage $old_version -> $version
53+haskellPackages: stackage-lts $old_version -> $version
6754
6855This commit has been generated by maintainers/scripts/haskell/update-stackage.sh
6956EOF
maintainers/scripts/luarocks-packages.csv+4−5
@@ -52,7 +52,7 @@ luadbi-postgresql,,,,,,
5252luadbi-sqlite3,,,,,,
5353luaepnf,,,,,,
5454luaevent,,,,,,
55−luaexpat,,,,1.4.1-1,,arobyn flosse
55+luaexpat,,,,1.3.0-1,,arobyn flosse
5656luaffi,,,http://luarocks.org/dev,,,
5757luafilesystem,,,,1.7.0-2,,flosse
5858lualogging,,,,,,
@@ -64,17 +64,16 @@ luasocket,,,,,,
6464luasql-sqlite3,,,,,,vyp
6565luassert,,,,,,
6666luasystem,,,,,,
67−luaunbound,,,,,
6867luautf8,,,,,,pstn
6968luazip,,,,,,
7069lua-yajl,,,,,,pstn
7170luuid,,,,,,
72−luv,,,,1.43.0-0,,
71+luv,,,,1.42.0-0,,
7372lyaml,,,,,,lblasc
7473markdown,,,,,,
7574mediator_lua,,,,,,
7675mpack,,,,,,
77−moonscript,https://github.com/leafo/moonscript.git,dev-1,,,,arobyn
76+moonscript,,,,,,arobyn
7877nvim-client,https://github.com/neovim/lua-client.git,,,,,
7978penlight,https://github.com/lunarmodules/Penlight.git,,,,,alerque
8079plenary.nvim,https://github.com/nvim-lua/plenary.nvim.git,,,,lua5_1,
@@ -82,6 +81,6 @@ rapidjson,https://github.com/xpol/lua-rapidjson.git,,,,,
8281readline,,,,,,
8382say,https://github.com/Olivine-Labs/say.git,,,,,
8483std._debug,https://github.com/lua-stdlib/_debug.git,,,,,
85−std.normalize,https://github.com/lua-stdlib/normalize.git,,,,,
84+std.normalize,git://github.com/lua-stdlib/normalize.git,,,,,
8685stdlib,,,,41.2.2,,vyp
8786vstruct,https://github.com/ToxicFrog/vstruct.git,,,,,
maintainers/scripts/pluginupdate.py+165−284
@@ -1,4 +1,4 @@
1−# Used by pkgs/applications/editors/vim/plugins/update.py and pkgs/applications/editors/kakoune/plugins/update.py
1+# Used by pkgs/misc/vim-plugins/update.py and pkgs/applications/editors/kakoune/plugins/update.py
22
33# format:
44# $ nix run nixpkgs.python3Packages.black -c black update.py
@@ -8,7 +8,6 @@
88# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265 update.py
99
1010import argparse
11−import csv
1211import functools
1312import http
1413import json
@@ -29,7 +28,7 @@ from pathlib import Path
2928from typing import Dict, List, Optional, Tuple, Union, Any, Callable
3029from urllib.parse import urljoin, urlparse
3130from tempfile import NamedTemporaryFile
32−from dataclasses import dataclass, asdict
31+from dataclasses import dataclass
3332
3433import git
3534
@@ -74,103 +73,42 @@ def retry(ExceptionToCheck: Any, tries: int = 4, delay: float = 3, backoff: floa
7473
7574 return deco_retry
7675
77−@dataclass
78−class FetchConfig:
79− proc: int
80− github_token: str
81−
8276
83−def make_request(url: str, token=None) -> urllib.request.Request:
77+def make_request(url: str) -> urllib.request.Request:
78+ token = os.getenv("GITHUB_API_TOKEN")
8479 headers = {}
8580 if token is not None:
8681 headers["Authorization"] = f"token {token}"
8782 return urllib.request.Request(url, headers=headers)
8883
84+@dataclass
85+class PluginDesc:
86+ owner: str
87+ repo: str
88+ branch: str
89+ alias: Optional[str]
8990
90−# a dictionary of plugins and their new repositories
91−Redirects = Dict['PluginDesc', 'Repo']
9291
9392class Repo:
9493 def __init__(
95− self, uri: str, branch: str
96− ) -> None:
97− self.uri = uri
98− '''Url to the repo'''
99− self._branch = branch
100− # Redirect is the new Repo to use
101− self.redirect: Optional['Repo'] = None
102− self.token = "dummy_token"
103−
104− @property
105− def name(self):
106− return self.uri.split('/')[-1]
107−
108− @property
109− def branch(self):
110− return self._branch or "HEAD"
111−
112− def __str__(self) -> str:
113− return f"{self.uri}"
114− def __repr__(self) -> str:
115− return f"Repo({self.name}, {self.uri})"
116−
117− @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
118− def has_submodules(self) -> bool:
119− return True
120−
121− @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
122− def latest_commit(self) -> Tuple[str, datetime]:
123− log.debug("Latest commit")
124− loaded = self._prefetch(None)
125− updated = datetime.strptime(loaded['date'], "%Y-%m-%dT%H:%M:%S%z")
126−
127− return loaded['rev'], updated
128−
129− def _prefetch(self, ref: Optional[str]):
130− cmd = ["nix-prefetch-git", "--quiet", "--fetch-submodules", self.uri]
131− if ref is not None:
132− cmd.append(ref)
133− log.debug(cmd)
134− data = subprocess.check_output(cmd)
135− loaded = json.loads(data)
136− return loaded
137−
138− def prefetch(self, ref: Optional[str]) -> str:
139− print("Prefetching")
140− loaded = self._prefetch(ref)
141− return loaded["sha256"]
142−
143− def as_nix(self, plugin: "Plugin") -> str:
144− return f'''fetchgit {{
145− url = "{self.uri}";
146− rev = "{plugin.commit}";
147− sha256 = "{plugin.sha256}";
148− }}'''
149−
150−
151−class RepoGitHub(Repo):
152− def __init__(
153− self, owner: str, repo: str, branch: str
94+ self, owner: str, name: str, branch: str, alias: Optional[str]
15495 ) -> None:
15596 self.owner = owner
156− self.repo = repo
157− self.token = None
158− '''Url to the repo'''
159− super().__init__(self.url(""), branch)
160− log.debug("Instantiating github repo owner=%s and repo=%s", self.owner, self.repo)
161−
162− @property
163− def name(self):
164− return self.repo
97+ self.name = name
98+ self.branch = branch
99+ self.alias = alias
100+ self.redirect: Dict[str, str] = {}
165101
166102 def url(self, path: str) -> str:
167− res = urljoin(f"https://github.com/{self.owner}/{self.repo}/", path)
168− return res
103+ return urljoin(f"https://github.com/{self.owner}/{self.name}/", path)
104+
105+ def __repr__(self) -> str:
106+ return f"Repo({self.owner}, {self.name})"
169107
170108 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
171109 def has_submodules(self) -> bool:
172110 try:
173− req = make_request(self.url(f"blob/{self.branch}/.gitmodules"), self.token)
111+ req = make_request(self.url(f"blob/{self.branch}/.gitmodules"))
174112 urllib.request.urlopen(req, timeout=10).close()
175113 except urllib.error.HTTPError as e:
176114 if e.code == 404:
@@ -182,10 +120,9 @@ class RepoGitHub(Repo):
182120 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
183121 def latest_commit(self) -> Tuple[str, datetime]:
184122 commit_url = self.url(f"commits/{self.branch}.atom")
185− log.debug("Sending request to %s", commit_url)
186− commit_req = make_request(commit_url, self.token)
123+ commit_req = make_request(commit_url)
187124 with urllib.request.urlopen(commit_req, timeout=10) as req:
188− self._check_for_redirect(commit_url, req)
125+ self.check_for_redirect(commit_url, req)
189126 xml = req.read()
190127 root = ET.fromstring(xml)
191128 latest_entry = root.find(ATOM_ENTRY)
@@ -200,89 +137,46 @@ class RepoGitHub(Repo):
200137 updated = datetime.strptime(updated_tag.text, "%Y-%m-%dT%H:%M:%SZ")
201138 return Path(str(url.path)).name, updated
202139
203− def _check_for_redirect(self, url: str, req: http.client.HTTPResponse):
140+ def check_for_redirect(self, url: str, req: http.client.HTTPResponse):
204141 response_url = req.geturl()
205142 if url != response_url:
206143 new_owner, new_name = (
207144 urllib.parse.urlsplit(response_url).path.strip("/").split("/")[:2]
208145 )
146+ end_line = "\n" if self.alias is None else f" as {self.alias}\n"
147+ plugin_line = "{owner}/{name}" + end_line
209148
210− new_repo = RepoGitHub(owner=new_owner, repo=new_name, branch=self.branch)
211− self.redirect = new_repo
212−
149+ old_plugin = plugin_line.format(owner=self.owner, name=self.name)
150+ new_plugin = plugin_line.format(owner=new_owner, name=new_name)
151+ self.redirect[old_plugin] = new_plugin
213152
214− def prefetch(self, commit: str) -> str:
215− if self.has_submodules():
216− sha256 = super().prefetch(commit)
217− else:
218− sha256 = self.prefetch_github(commit)
219− return sha256
153+ def prefetch_git(self, ref: str) -> str:
154+ data = subprocess.check_output(
155+ ["nix-prefetch-git", "--fetch-submodules", self.url(""), ref]
156+ )
157+ return json.loads(data)["sha256"]
220158
221159 def prefetch_github(self, ref: str) -> str:
222− cmd = ["nix-prefetch-url", "--unpack", self.url(f"archive/{ref}.tar.gz")]
223− log.debug("Running %s", cmd)
224− data = subprocess.check_output(cmd)
160+ data = subprocess.check_output(
161+ ["nix-prefetch-url", "--unpack", self.url(f"archive/{ref}.tar.gz")]
162+ )
225163 return data.strip().decode("utf-8")
226164
227− def as_nix(self, plugin: "Plugin") -> str:
228− if plugin.has_submodules:
229− submodule_attr = "\n fetchSubmodules = true;"
230− else:
231− submodule_attr = ""
232−
233− return f'''fetchFromGitHub {{
234− owner = "{self.owner}";
235− repo = "{self.repo}";
236− rev = "{plugin.commit}";
237− sha256 = "{plugin.sha256}";{submodule_attr}
238− }}'''
239−
240−
241−@dataclass(frozen=True)
242−class PluginDesc:
243− repo: Repo
244− branch: str
245− alias: Optional[str]
246−
247− @property
248− def name(self):
249− if self.alias is None:
250− return self.repo.name
251− else:
252− return self.alias
253−
254− def __lt__(self, other):
255− return self.repo.name < other.repo.name
256−
257− @staticmethod
258− def load_from_csv(config: FetchConfig, row: Dict[str, str]) -> 'PluginDesc':
259− branch = row["branch"]
260− repo = make_repo(row['repo'], branch.strip())
261− repo.token = config.github_token
262− return PluginDesc(repo, branch.strip(), row["alias"])
263−
264−
265− @staticmethod
266− def load_from_string(config: FetchConfig, line: str) -> 'PluginDesc':
267− branch = "HEAD"
268− alias = None
269− uri = line
270− if " as " in uri:
271− uri, alias = uri.split(" as ")
272− alias = alias.strip()
273− if "@" in uri:
274− uri, branch = uri.split("@")
275− repo = make_repo(uri.strip(), branch.strip())
276− repo.token = config.github_token
277− return PluginDesc(repo, branch.strip(), alias)
278165
279−@dataclass
280166class Plugin:
281− name: str
282− commit: str
283− has_submodules: bool
284− sha256: str
285− date: Optional[datetime] = None
167+ def __init__(
168+ self,
169+ name: str,
170+ commit: str,
171+ has_submodules: bool,
172+ sha256: str,
173+ date: Optional[datetime] = None,
174+ ) -> None:
175+ self.name = name
176+ self.commit = commit
177+ self.has_submodules = has_submodules
178+ self.sha256 = sha256
179+ self.date = date
286180
287181 @property
288182 def normalized_name(self) -> str:
@@ -299,28 +193,6 @@ class Plugin:
299193 return copy
300194
301195
302−def load_plugins_from_csv(config: FetchConfig, input_file: Path,) -> List[PluginDesc]:
303− log.debug("Load plugins from csv %s", input_file)
304− plugins = []
305− with open(input_file, newline='') as csvfile:
306− log.debug("Writing into %s", input_file)
307− reader = csv.DictReader(csvfile,)
308− for line in reader:
309− plugin = PluginDesc.load_from_csv(config, line)
310− plugins.append(plugin)
311−
312− return plugins
313−
314−def run_nix_expr(expr):
315− with CleanEnvironment():
316− cmd = ["nix", "eval", "--extra-experimental-features",
317− "nix-command", "--impure", "--json", "--expr", expr]
318− log.debug("Running command %s", cmd)
319− out = subprocess.check_output(cmd)
320− data = json.loads(out)
321− return data
322−
323−
324196class Editor:
325197 """The configuration of the update script."""
326198
@@ -343,45 +215,19 @@ class Editor:
343215 self.deprecated = deprecated or root.joinpath("deprecated.json")
344216 self.cache_file = cache_file or f"{name}-plugin-cache.json"
345217
346− def get_current_plugins(self) -> List[Plugin]:
218+ def get_current_plugins(self):
347219 """To fill the cache"""
348− data = run_nix_expr(self.get_plugins)
349− plugins = []
350− for name, attr in data.items():
351− print("get_current_plugins: name %s" % name)
352− p = Plugin(name, attr["rev"], attr["submodules"], attr["sha256"])
353− plugins.append(p)
354− return plugins
355−
356− def load_plugin_spec(self, config: FetchConfig, plugin_file) -> List[PluginDesc]:
357− '''CSV spec'''
358− return load_plugins_from_csv(config, plugin_file)
220+ return get_current_plugins(self)
221+
222+ def load_plugin_spec(self, plugin_file) -> List[PluginDesc]:
223+ return load_plugin_spec(plugin_file)
359224
360225 def generate_nix(self, plugins, outfile: str):
361226 '''Returns nothing for now, writes directly to outfile'''
362227 raise NotImplementedError()
363228
364− def get_update(self, input_file: str, outfile: str, config: FetchConfig):
365− cache: Cache = Cache(self.get_current_plugins(), self.cache_file)
366− _prefetch = functools.partial(prefetch, cache=cache)
367−
368− def update() -> dict:
369− plugins = self.load_plugin_spec(config, input_file)
370−
371− try:
372− pool = Pool(processes=config.proc)
373− results = pool.map(_prefetch, plugins)
374− finally:
375− cache.store()
376−
377− plugins, redirects = check_results(results)
378−
379− self.generate_nix(plugins, outfile)
380−
381− return redirects
382−
383− return update
384−
229+ def get_update(self, input_file: str, outfile: str, proc: int):
230+ return get_update(input_file, outfile, proc, editor=self)
385231
386232 @property
387233 def attr_path(self):
@@ -395,9 +241,9 @@ class Editor:
395241
396242 def create_parser(self):
397243 parser = argparse.ArgumentParser(
398− description=(f"""
399− Updates nix derivations for {self.name} plugins.\n
400− By default from {self.default_in} to {self.default_out}"""
244+ description=(
245+ f"Updates nix derivations for {self.name} plugins"
246+ f"By default from {self.default_in} to {self.default_out}"
401247 )
402248 )
403249 parser.add_argument(
@@ -427,15 +273,7 @@ class Editor:
427273 dest="proc",
428274 type=int,
429275 default=30,
430− help="Number of concurrent processes to spawn. Setting --github-token allows higher values.",
431− )
432− parser.add_argument(
433− "--github-token",
434− "-t",
435− type=str,
436− default=os.getenv("GITHUB_API_TOKEN"),
437− help="""Allows to set --proc to higher values.
438− Uses GITHUB_API_TOKEN environment variables as the default value.""",
276+ help="Number of concurrent processes to spawn.",
439277 )
440278 parser.add_argument(
441279 "--no-commit", "-n", action="store_true", default=False,
@@ -465,33 +303,53 @@ class CleanEnvironment(object):
465303 self.empty_config.close()
466304
467305
306+def get_current_plugins(editor: Editor) -> List[Plugin]:
307+ with CleanEnvironment():
308+ cmd = ["nix", "eval", "--impure", "--json", "--expr", editor.get_plugins]
309+ log.debug("Running command %s", cmd)
310+ out = subprocess.check_output(cmd)
311+ data = json.loads(out)
312+ plugins = []
313+ for name, attr in data.items():
314+ p = Plugin(name, attr["rev"], attr["submodules"], attr["sha256"])
315+ plugins.append(p)
316+ return plugins
317+
318+
468319def prefetch_plugin(
469320 p: PluginDesc,
470321 cache: "Optional[Cache]" = None,
471−) -> Tuple[Plugin, Optional[Repo]]:
472− repo, branch, alias = p.repo, p.branch, p.alias
473− name = alias or p.repo.name
474− commit = None
475− log.info(f"Fetching last commit for plugin {name} from {repo.uri}@{branch}")
322+) -> Tuple[Plugin, Dict[str, str]]:
323+ user, repo_name, branch, alias = p.owner, p.repo, p.branch, p.alias
324+ log.info(f"Fetching last commit for plugin {user}/{repo_name}@{branch}")
325+ repo = Repo(user, repo_name, branch, alias)
476326 commit, date = repo.latest_commit()
327+ has_submodules = repo.has_submodules()
477328 cached_plugin = cache[commit] if cache else None
478329 if cached_plugin is not None:
479330 log.debug("Cache hit !")
480− cached_plugin.name = name
331+ cached_plugin.name = alias or repo_name
481332 cached_plugin.date = date
482333 return cached_plugin, repo.redirect
483334
484− has_submodules = repo.has_submodules()
485− log.debug(f"prefetch {name}")
486− sha256 = repo.prefetch(commit)
335+ print(f"prefetch {user}/{repo_name}")
336+ if has_submodules:
337+ sha256 = repo.prefetch_git(commit)
338+ else:
339+ sha256 = repo.prefetch_github(commit)
487340
488341 return (
489− Plugin(name, commit, has_submodules, sha256, date=date),
342+ Plugin(alias or repo_name, commit, has_submodules, sha256, date=date),
490343 repo.redirect,
491344 )
492345
493346
494−def print_download_error(plugin: PluginDesc, ex: Exception):
347+def fetch_plugin_from_pluginline(plugin_line: str) -> Plugin:
348+ plugin, _ = prefetch_plugin(parse_plugin_line(plugin_line))
349+ return plugin
350+
351+
352+def print_download_error(plugin: str, ex: Exception):
495353 print(f"{plugin}: {ex}", file=sys.stderr)
496354 ex_traceback = ex.__traceback__
497355 tb_lines = [
@@ -500,22 +358,19 @@ def print_download_error(plugin: PluginDesc, ex: Exception):
500358 ]
501359 print("\n".join(tb_lines))
502360
361+
503362def check_results(
504− results: List[Tuple[PluginDesc, Union[Exception, Plugin], Optional[Repo]]]
505−) -> Tuple[List[Tuple[PluginDesc, Plugin]], Redirects]:
506− ''' '''
507− failures: List[Tuple[PluginDesc, Exception]] = []
363+ results: List[Tuple[str, str, Union[Exception, Plugin], Dict[str, str]]]
364+) -> Tuple[List[Tuple[str, str, Plugin]], Dict[str, str]]:
365+ failures: List[Tuple[str, Exception]] = []
508366 plugins = []
509− redirects: Redirects = {}
510− for (pdesc, result, redirect) in results:
367+ redirects: Dict[str, str] = {}
368+ for (owner, name, result, redirect) in results:
511369 if isinstance(result, Exception):
512− failures.append((pdesc, result))
370+ failures.append((name, result))
513371 else:
514− new_pdesc = pdesc
515− if redirect is not None:
516− redirects.update({pdesc: redirect})
517− new_pdesc = PluginDesc(redirect, pdesc.branch, pdesc.alias)
518− plugins.append((new_pdesc, result))
372+ plugins.append((owner, name, result))
373+ redirects.update(redirect)
519374
520375 print(f"{len(results) - len(failures)} plugins were checked", end="")
521376 if len(failures) == 0:
@@ -529,16 +384,30 @@ def check_results(
529384
530385 sys.exit(1)
531386
532−def make_repo(uri: str, branch) -> Repo:
533− '''Instantiate a Repo with the correct specialization depending on server (gitub spec)'''
534− # dumb check to see if it's of the form owner/repo (=> github) or https://...
535− res = urlparse(uri)
536− if res.netloc in [ "github.com", ""]:
537− res = res.path.strip('/').split('/')
538− repo = RepoGitHub(res[0], res[1], branch)
539− else:
540− repo = Repo(uri.strip(), branch)
541− return repo
387+def parse_plugin_line(line: str) -> PluginDesc:
388+ branch = "master"
389+ alias = None
390+ name, repo = line.split("/")
391+ if " as " in repo:
392+ repo, alias = repo.split(" as ")
393+ alias = alias.strip()
394+ if "@" in repo:
395+ repo, branch = repo.split("@")
396+
397+ return PluginDesc(name.strip(), repo.strip(), branch.strip(), alias)
398+
399+
400+def load_plugin_spec(plugin_file: str) -> List[PluginDesc]:
401+ plugins = []
402+ with open(plugin_file) as f:
403+ for line in f:
404+ plugin = parse_plugin_line(line)
405+ if not plugin.owner:
406+ msg = f"Invalid repository {line}, must be in the format owner/repo[ as alias]"
407+ print(msg, file=sys.stderr)
408+ sys.exit(1)
409+ plugins.append(plugin)
410+ return plugins
542411
543412
544413def get_cache_path(cache_file_name: str) -> Optional[Path]:
@@ -596,37 +465,36 @@ class Cache:
596465
597466def prefetch(
598467 pluginDesc: PluginDesc, cache: Cache
599−) -> Tuple[PluginDesc, Union[Exception, Plugin], Optional[Repo]]:
468+) -> Tuple[str, str, Union[Exception, Plugin], dict]:
469+ owner, repo = pluginDesc.owner, pluginDesc.repo
600470 try:
601471 plugin, redirect = prefetch_plugin(pluginDesc, cache)
602472 cache[plugin.commit] = plugin
603− return (pluginDesc, plugin, redirect)
473+ return (owner, repo, plugin, redirect)
604474 except Exception as e:
605− return (pluginDesc, e, None)
606−
475+ return (owner, repo, e, {})
607476
608477
609478def rewrite_input(
610− config: FetchConfig,
611479 input_file: Path,
612480 deprecated: Path,
613− # old pluginDesc and the new
614− redirects: Redirects = {},
615− append: List[PluginDesc] = [],
481+ redirects: Dict[str, str] = None,
482+ append: Tuple = (),
616483):
617− plugins = load_plugins_from_csv(config, input_file,)
484+ with open(input_file, "r") as f:
485+ lines = f.readlines()
618486
619− plugins.extend(append)
487+ lines.extend(append)
620488
621489 if redirects:
490+ lines = [redirects.get(line, line) for line in lines]
622491
623492 cur_date_iso = datetime.now().strftime("%Y-%m-%d")
624493 with open(deprecated, "r") as f:
625494 deprecations = json.load(f)
626− for pdesc, new_repo in redirects.items():
627− new_pdesc = PluginDesc(new_repo, pdesc.branch, pdesc.alias)
628− old_plugin, _ = prefetch_plugin(pdesc)
629− new_plugin, _ = prefetch_plugin(new_pdesc)
495+ for old, new in redirects.items():
496+ old_plugin = fetch_plugin_from_pluginline(old)
497+ new_plugin = fetch_plugin_from_pluginline(new)
630498 if old_plugin.normalized_name != new_plugin.normalized_name:
631499 deprecations[old_plugin.normalized_name] = {
632500 "new": new_plugin.normalized_name,
@@ -636,14 +504,10 @@ def rewrite_input(
636504 json.dump(deprecations, f, indent=4, sort_keys=True)
637505 f.write("\n")
638506
507+ lines = sorted(lines, key=str.casefold)
508+
639509 with open(input_file, "w") as f:
640− log.debug("Writing into %s", input_file)
641− # fields = dataclasses.fields(PluginDesc)
642− fieldnames = ['repo', 'branch', 'alias']
643− writer = csv.DictWriter(f, fieldnames, dialect='unix', quoting=csv.QUOTE_NONE)
644− writer.writeheader()
645− for plugin in sorted(plugins):
646− writer.writerow(asdict(plugin))
510+ f.writelines(lines)
647511
648512
649513def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
@@ -656,21 +520,40 @@ def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
656520 print("no changes in working tree to commit")
657521
658522
523+def get_update(input_file: str, outfile: str, proc: int, editor: Editor):
524+ cache: Cache = Cache(editor.get_current_plugins(), editor.cache_file)
525+ _prefetch = functools.partial(prefetch, cache=cache)
526+
527+ def update() -> dict:
528+ plugin_names = editor.load_plugin_spec(input_file)
529+
530+ try:
531+ pool = Pool(processes=proc)
532+ results = pool.map(_prefetch, plugin_names)
533+ finally:
534+ cache.store()
535+
536+ plugins, redirects = check_results(results)
537+
538+ editor.generate_nix(plugins, outfile)
539+
540+ return redirects
541+
542+ return update
543+
659544
660545def update_plugins(editor: Editor, args):
661546 """The main entry function of this module. All input arguments are grouped in the `Editor`."""
662547
663548 log.setLevel(LOG_LEVELS[args.debug])
664549 log.info("Start updating plugins")
665− fetch_config = FetchConfig(args.proc, args.github_token)
666− update = editor.get_update(args.input_file, args.outfile, fetch_config)
550+ update = editor.get_update(args.input_file, args.outfile, args.proc)
667551
668552 redirects = update()
669− editor.rewrite_input(fetch_config, args.input_file, editor.deprecated, redirects)
553+ editor.rewrite_input(args.input_file, editor.deprecated, redirects)
670554
671555 autocommit = not args.no_commit
672556
673− nixpkgs_repo = None
674557 if autocommit:
675558 nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True)
676559 commit(nixpkgs_repo, f"{editor.attr_path}: update", [args.outfile])
@@ -685,11 +568,9 @@ def update_plugins(editor: Editor, args):
685568 )
686569
687570 for plugin_line in args.add_plugins:
688− pdesc = PluginDesc.load_from_string(fetch_config, plugin_line)
689− append = [ pdesc ]
690− editor.rewrite_input(fetch_config, args.input_file, editor.deprecated, append=append)
571+ editor.rewrite_input(args.input_file, editor.deprecated, append=(plugin_line + "\n",))
691572 update()
692− plugin, _ = prefetch_plugin(pdesc, )
573+ plugin = fetch_plugin_from_pluginline(plugin_line)
693574 if autocommit:
694575 commit(
695576 nixpkgs_repo,
maintainers/scripts/remove-old-aliases.pydeleted−211
@@ -1,211 +0,0 @@
1−#!/usr/bin/env nix-shell
2−#!nix-shell -i python3 -p "python3.withPackages(ps: with ps; [ ])" nix
3−"""
4−A program to remove old aliases or convert old aliases to throws
5−Example usage:
6−./maintainers/scripts/remove-old-aliases.py --year 2018 --file ./pkgs/top-level/aliases.nix
7−
8−Check this file with mypy after every change!
9−$ mypy --strict maintainers/scripts/remove-old-aliases.py
10−"""
11−import argparse
12−import shutil
13−import subprocess
14−from datetime import date as datetimedate
15−from datetime import datetime
16−from pathlib import Path
17−
18−
19−def process_args() -> argparse.Namespace:
20− """process args"""
21− arg_parser = argparse.ArgumentParser()
22− arg_parser.add_argument(
23− "--year", required=True, type=int, help="operate on aliases older than $year"
24− )
25− arg_parser.add_argument(
26− "--month",
27− type=int,
28− default=1,
29− help="operate on aliases older than $year-$month",
30− )
31− arg_parser.add_argument(
32− "--only-throws",
33− action="store_true",
34− help="only operate on throws. e.g remove throws older than $date",
35− )
36− arg_parser.add_argument("--file", required=True, type=Path, help="alias file")
37− arg_parser.add_argument(
38− "--dry-run", action="store_true", help="don't modify files, only print results"
39− )
40− return arg_parser.parse_args()
41−
42−
43−def get_date_lists(
44− txt: list[str], cutoffdate: datetimedate, only_throws: bool
45−) -> tuple[list[str], list[str], list[str]]:
46− """get a list of lines in which the date is older than $cutoffdate"""
47− date_older_list: list[str] = []
48− date_older_throw_list: list[str] = []
49− date_sep_line_list: list[str] = []
50−
51− for lineno, line in enumerate(txt, start=1):
52− line = line.rstrip()
53− my_date = None
54− for string in line.split():
55− string = string.strip(":")
56− try:
57− # strip ':' incase there is a string like 2019-11-01:
58− my_date = datetime.strptime(string, "%Y-%m-%d").date()
59− except ValueError:
60− try:
61− my_date = datetime.strptime(string, "%Y-%m").date()
62− except ValueError:
63− continue
64−
65− if (
66− my_date is None
67− or my_date > cutoffdate
68− or "preserve, reason:" in line.lower()
69− ):
70− continue
71−
72− if "=" not in line:
73− date_sep_line_list.append(f"{lineno} {line}")
74− # 'if' lines could be complicated
75− elif "if " in line and "if =" not in line:
76− print(f"RESOLVE MANUALLY {line}")
77− elif "throw" in line:
78− date_older_throw_list.append(line)
79− elif not only_throws:
80− date_older_list.append(line)
81−
82− return (
83− date_older_list,
84− date_sep_line_list,
85− date_older_throw_list,
86− )
87−
88−
89−def convert_to_throw(date_older_list: list[str]) -> list[tuple[str, str]]:
90− """convert a list of lines to throws"""
91− converted_list = []
92− for line in date_older_list.copy():
93− indent: str = " " * (len(line) - len(line.lstrip()))
94− before_equal = ""
95− after_equal = ""
96− try:
97− before_equal, after_equal = (x.strip() for x in line.split("=", maxsplit=2))
98− except ValueError as err:
99− print(err, line, "\n")
100− date_older_list.remove(line)
101− continue
102−
103− alias = before_equal.strip()
104− after_equal_list = [x.strip(";:") for x in after_equal.split()]
105−
106− converted = (
107− f"{indent}{alias} = throw \"'{alias}' has been renamed to/replaced by"
108− f" '{after_equal_list.pop(0)}'\";"
109− f' # Converted to throw {datetime.today().strftime("%Y-%m-%d")}'
110− )
111− converted_list.append((line, converted))
112−
113− return converted_list
114−
115−
116−def generate_text_to_write(
117− txt: list[str],
118− date_older_list: list[str],
119− converted_to_throw: list[tuple[str, str]],
120− date_older_throw_list: list[str],
121−) -> list[str]:
122− """generate a list of text to be written to the aliasfile"""
123− text_to_write: list[str] = []
124− for line in txt:
125− text_to_append: str = ""
126− if converted_to_throw:
127− for tupl in converted_to_throw:
128− if line == tupl[0]:
129− text_to_append = f"{tupl[1]}\n"
130− if line not in date_older_list and line not in date_older_throw_list:
131− text_to_append = f"{line}\n"
132− if text_to_append:
133− text_to_write.append(text_to_append)
134−
135− return text_to_write
136−
137−
138−def write_file(
139− aliasfile: Path,
140− text_to_write: list[str],
141−) -> None:
142− """write file"""
143− temp_aliasfile = Path(f"{aliasfile}.raliases")
144− with open(temp_aliasfile, "w", encoding="utf-8") as far:
145− for line in text_to_write:
146− far.write(line)
147− print("\nChecking the syntax of the new aliasfile")
148− try:
149− subprocess.run(
150− ["nix-instantiate", "--eval", temp_aliasfile],
151− check=True,
152− stdout=subprocess.DEVNULL,
153− )
154− except subprocess.CalledProcessError:
155− print(
156− "\nSyntax check failed,",
157− "there may have been a line which only has\n"
158− 'aliasname = "reason why";\n'
159− "when it should have been\n"
160− 'aliasname = throw "reason why";',
161− )
162− temp_aliasfile.unlink()
163− return
164− shutil.move(f"{aliasfile}.raliases", aliasfile)
165− print(f"{aliasfile} modified! please verify with 'git diff'.")
166−
167−
168−def main() -> None:
169− """main"""
170− args = process_args()
171−
172− only_throws = args.only_throws
173− aliasfile = Path(args.file).absolute()
174− cutoffdate = (datetime.strptime(f"{args.year}-{args.month}-01", "%Y-%m-%d")).date()
175−
176− txt: list[str] = (aliasfile.read_text(encoding="utf-8")).splitlines()
177−
178− date_older_list: list[str] = []
179− date_sep_line_list: list[str] = []
180− date_older_throw_list: list[str] = []
181−
182− date_older_list, date_sep_line_list, date_older_throw_list = get_date_lists(
183− txt, cutoffdate, only_throws
184− )
185−
186− converted_to_throw: list[tuple[str, str]] = []
187− if date_older_list:
188− converted_to_throw = convert_to_throw(date_older_list)
189− print(" Will be converted to throws. ".center(100, "-"))
190− for l_n in date_older_list:
191− print(l_n)
192−
193− if date_older_throw_list:
194− print(" Will be removed. ".center(100, "-"))
195− for l_n in date_older_throw_list:
196− print(l_n)
197−
198− if date_sep_line_list:
199− print(" On separate line, resolve manually. ".center(100, "-"))
200− for l_n in date_sep_line_list:
201− print(l_n)
202−
203− if not args.dry_run:
204− text_to_write = generate_text_to_write(
205− txt, date_older_list, converted_to_throw, date_older_throw_list
206− )
207− write_file(aliasfile, text_to_write)
208−
209−
210−if __name__ == "__main__":
211− main()
maintainers/scripts/update-luarocks-packages+8−5
@@ -25,8 +25,8 @@ from pathlib import Path
2525log = logging.getLogger()
2626log.addHandler(logging.StreamHandler())
2727
28−ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))).parent.parent # type: ignore
29−from pluginupdate import Editor, update_plugins, FetchConfig, CleanEnvironment
28+ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))).parent.parent
29+from pluginupdate import Editor, update_plugins, PluginDesc, CleanEnvironment, LOG_LEVELS, Cache
3030
3131PKG_LIST="maintainers/scripts/luarocks-packages.csv"
3232TMP_FILE="$(mktemp)"
@@ -118,7 +118,7 @@ class LuaEditor(Editor):
118118 def attr_path(self):
119119 return "luaPackages"
120120
121− def get_update(self, input_file: str, outfile: str, config: FetchConfig):
121+ def get_update(self, input_file: str, outfile: str, proc: int):
122122 _prefetch = generate_pkg_nix
123123
124124 def update() -> dict:
@@ -126,14 +126,14 @@ class LuaEditor(Editor):
126126 sorted_plugin_specs = sorted(plugin_specs, key=lambda v: v.name.lower())
127127
128128 try:
129− pool = Pool(processes=config.proc)
129+ pool = Pool(processes=proc)
130130 results = pool.map(_prefetch, sorted_plugin_specs)
131131 finally:
132132 pass
133133
134134 self.generate_nix(results, outfile)
135135
136− redirects = {}
136+ redirects = []
137137 return redirects
138138
139139 return update
@@ -181,9 +181,11 @@ def generate_pkg_nix(plug: LuaPlugin):
181181
182182 cmd.append(plug.version)
183183
184+ #
184185 if plug.server != "src" and plug.server:
185186 cmd.append(f"--only-server={plug.server}")
186187
188+
187189 if plug.luaversion:
188190 with CleanEnvironment():
189191 local_pkgs = str(ROOT.resolve())
@@ -207,6 +209,7 @@ def main():
207209
208210 parser = editor.create_parser()
209211 args = parser.parse_args()
212+ log.setLevel(LOG_LEVELS[args.debug])
210213
211214 update_plugins(editor, args)
212215
maintainers/scripts/update.nix+1−1
@@ -147,7 +147,7 @@ let
147147
148148 to run update script for specific package, or
149149
150− % nix-shell maintainers/scripts/update.nix --arg predicate '(path: pkg: pkg.updateScript.name or null == "gnome-update-script")'
150+ % nix-shell maintainers/scripts/update.nix --arg predicate '(path: pkg: builtins.isList pkg.updateScript && builtins.length pkg.updateScript >= 1 && (let script = builtins.head pkg.updateScript; in builtins.isAttrs script && script.name == "gnome-update-script"))'
151151
152152 to run update script for all packages matching given predicate, or
153153
maintainers/scripts/update.py−4
@@ -88,10 +88,6 @@ async def commit_changes(name: str, merge_lock: asyncio.Lock, worktree: str, bra
8888 async with merge_lock:
8989 await check_subprocess('git', 'add', *change['files'], cwd=worktree)
9090 commit_message = '{attrPath}: {oldVersion} → {newVersion}'.format(**change)
91− if 'commitMessage' in change:
92− commit_message = change['commitMessage']
93− elif 'commitBody' in change:
94− commit_message = commit_message + '\n\n' + change['commitBody']
9591 await check_subprocess('git', 'commit', '--quiet', '-m', commit_message, cwd=worktree)
9692 await check_subprocess('git', 'cherry-pick', branch)
9793
maintainers/scripts/vanity.sh+19−19
@@ -30,7 +30,7 @@ fetchGithubName () {
3030 curl https://github.com/NixOS/nixpkgs/commit/"$commitid" 2>/dev/null |
3131 grep committed -B10 | grep 'href="/' |
3232 sed -re 's@.* href="/@@; s@".*@@' |
33− grep -v "/commit/"
33+ grep -v "/commit/"
3434 )";
3535 echo "$userid"
3636}
@@ -38,7 +38,7 @@ fetchGithubName () {
3838[ -n "$NIXPKGS_GITHUB_NAME_CACHE" ] && {
3939 echo "$emails" | while read email; do
4040 line="$(grep "$email " "$NIXPKGS_GITHUB_NAME_CACHE")"
41− [ -z "$line" ] && {
41+ [ -z "$line" ] && {
4242 echo "$email $(fetchGithubName "$email")" >> \
4343 "$NIXPKGS_GITHUB_NAME_CACHE"
4444 }
@@ -47,11 +47,11 @@ fetchGithubName () {
4747
4848# For RDF
4949normalize_name () {
50− sed -e 's/%/%25/g; s/ /%20/g; s/'\''/%27/g; s/"/%22/g; s/`/%60/g; s/\^/%5e/g; '
50+ sed -e 's/%/%25/g; s/ /%20/g; s/'\''/%27/g; s/"/%22/g; s/`/%60/g; s/\^/%5e/g; '
5151}
5252
5353denormalize_name () {
54− sed -e 's/%20/ /g; s/%27/'\''/g; s/%22/"/g; s/%60/`/g; s/%5e/^/g; s/%25/%/g;';
54+ sed -e 's/%20/ /g; s/%27/'\''/g; s/%22/"/g; s/%60/`/g; s/%5e/^/g; s/%25/%/g;';
5555}
5656
5757n3="$(mktemp --suffix .n3)"
@@ -75,22 +75,22 @@ echo "$maintainers" | cut -f 2 | sed -e 's@.*@<my://name/&> <my://is-name> <my:/
7575# Get transitive closure
7676sparql="$(nix-build '<nixpkgs>' -Q -A apache-jena --no-out-link)/bin/sparql"
7777name_list="$(
78− "$sparql" --results=TSV --data="$n3" "
79− select ?x ?y ?g where {
80− ?x <my://can-be>+ ?y.
81− ?x <my://is-name> ?g.
78+ "$sparql" --results=TSV --data="$n3" "
79+ select ?x ?y ?g where {
80+ ?x <my://can-be>+ ?y.
81+ ?x <my://is-name> ?g.
8282 }
83− " | tail -n +2 |
84− sed -re 's@<my://name/@@g; s@<my://@@g; s@>@@g;' |
85− sort -k 2,3 -t ' '
83+ " | tail -n +2 |
84+ sed -re 's@<my://name/@@g; s@<my://@@g; s@>@@g;' |
85+ sort -k 2,3 -t ' '
8686)"
8787github_name_list="$(
88− "$sparql" --results=TSV --data="$n3" "
89− select ?x ?y where {
90− ?x (<my://can-be>+ / <my://at-github>) ?y.
88+ "$sparql" --results=TSV --data="$n3" "
89+ select ?x ?y where {
90+ ?x (<my://can-be>+ / <my://at-github>) ?y.
9191 }
92− " | tail -n +2 |
93− sed -re 's@<my://(name|github)/@@g; s@<my://@@g; s@>@@g;'
92+ " | tail -n +2 |
93+ sed -re 's@<my://(name|github)/@@g; s@<my://@@g; s@>@@g;'
9494)"
9595
9696# Take first spelling option for every person
@@ -104,10 +104,10 @@ if [ -n "$NIXPKGS_GITHUB_NAME_CACHE" ]; then
104104 github_adder_script="$(mktemp)"
105105 echo "$github_name_list" |
106106 grep -E "$(echo "$name_list_canonical" | cut -f 2 |
107− tr '\n' '|' )" |
108− sort | uniq |
107+ tr '\n' '|' )" |
108+ sort | uniq |
109109 sed -re 's/(.*)\t(.*)/s| \1$| \1\t\2|g;/' |
110− denormalize_name > "$github_adder_script"
110+ denormalize_name > "$github_adder_script"
111111else
112112 github_adder_script='/dev/null'
113113fi
maintainers/team-list.nix+4−410
@@ -3,19 +3,12 @@
33 # Required
44 members = [ maintainer1 maintainer2 ];
55 scope = "Maintain foo packages.";
6− shortName = "foo";
7− # Optional
8− enableFeatureFreezePing = true;
9− githubTeams = [ "my-subsystem" ];
106 };
117
128 where
139
1410 - `members` is the list of maintainers belonging to the group,
1511 - `scope` describes the scope of the group.
16− - `shortName` short human-readable name
17− - `enableFeatureFreezePing` will ping this team during the Feature Freeze announcements on releases
18− - `githubTeams` will ping specified GitHub teams as well
1912
2013 More fields may be added in the future.
2114
@@ -34,23 +27,6 @@ with lib.maintainers; {
3427 m1cr0man
3528 ];
3629 scope = "Maintain ACME-related packages and modules.";
37− shortName = "ACME";
38− };
39−
40− bazel = {
41− members = [
42− mboes
43− marsam
44− uri-canva
45− cbley
46− olebedev
47− groodt
48− aherrmann
49− ylecornec
50− ];
51− scope = "Bazel build tool & related tools https://bazel.build/";
52− shortName = "Bazel";
53− enableFeatureFreezePing = true;
5430 };
5531
5632 beam = {
@@ -60,35 +36,9 @@ with lib.maintainers; {
6036 DianaOlympos
6137 gleber
6238 happysalada
63− minijackson
6439 yurrriq
6540 ];
66− githubTeams = [
67− "beam"
68− ];
6941 scope = "Maintain BEAM-related packages and modules.";
70− shortName = "BEAM";
71− enableFeatureFreezePing = true;
72− };
73−
74− blockchains = {
75− members = [
76− mmahut
77− RaghavSood
78− ];
79− scope = "Maintain Blockchain packages and modules.";
80− shortName = "Blockchains";
81− enableFeatureFreezePing = true;
82− };
83−
84− c = {
85− members = [
86− matthewbauer
87− mic92
88− ];
89− scope = "Maintain C libraries and tooling.";
90− shortName = "C";
91− enableFeatureFreezePing = true;
9242 };
9343
9444 cinnamon = {
@@ -96,49 +46,14 @@ with lib.maintainers; {
9646 mkg20001
9747 ];
9848 scope = "Maintain Cinnamon desktop environment and applications made by the LinuxMint team.";
99− shortName = "Cinnamon";
100− enableFeatureFreezePing = true;
10149 };
10250
10351 chia = {
10452 members = [
53+ atemu
10554 lourkeur
10655 ];
10756 scope = "Maintain the Chia blockchain and its dependencies";
108− shortName = "Chia Blockchain";
109− };
110−
111− coq = {
112− members = [
113− cohencyril
114− Zimmi48
115− # gares has no entry in the maintainers list
116− siraben
117− vbgl
118− ];
119− scope = "Maintain the Coq theorem prover and related packages.";
120− shortName = "Coq";
121− enableFeatureFreezePing = true;
122− };
123−
124− darwin = {
125− members = [
126− toonn
127− ];
128− githubTeams = [
129− "darwin-maintainers"
130− ];
131− scope = "Maintain Darwin compatibility of packages and Darwin-only packages.";
132− shortName = "Darwin";
133− enableFeatureFreezePing = true;
134− };
135−
136− cosmopolitan = {
137− members = [
138− lourkeur
139− tomberek
140− ];
141− scope = "Maintain the Cosmopolitan LibC and related programs.";
14257 };
14358
14459 deshaw = {
@@ -147,7 +62,6 @@ with lib.maintainers; {
14762 limeytexan
14863 ];
14964 scope = "Group registration for D. E. Shaw employees who collectively maintain packages.";
150− shortName = "Shaw employees";
15165 };
15266
15367 determinatesystems = {
@@ -157,75 +71,11 @@ with lib.maintainers; {
15771 grahamc
15872 ];
15973 scope = "Group registration for packages maintained by Determinate Systems.";
160− shortName = "Determinate Systems employees";
161− };
162−
163− dhall = {
164− members = [
165− Gabriel439
166− ehmry
167− ];
168− scope = "Maintain Dhall and related packages.";
169− shortName = "Dhall";
170− enableFeatureFreezePing = true;
171− };
172−
173− docker = {
174− members = [
175− roberth
176− utdemir
177− ];
178− scope = "Maintain Docker and related tools.";
179− shortName = "DockerTools";
180− enableFeatureFreezePing = true;
181− };
182−
183− docs = {
184− members = [
185− ryantm
186− ];
187− scope = "Maintain nixpkgs/NixOS documentation and tools for building it.";
188− shortName = "Docs";
189− enableFeatureFreezePing = true;
190− };
191−
192− emacs = {
193− members = [
194− adisbladis
195− ];
196− scope = "Maintain the Emacs editor and packages.";
197− shortName = "Emacs";
198− enableFeatureFreezePing = true;
199− };
200−
201− enlightenment = {
202− members = [
203− romildo
204− ];
205− githubTeams = [
206− "enlightenment"
207− ];
208− scope = "Maintain Enlightenment desktop environment and related packages.";
209− shortName = "Enlightenment";
210− enableFeatureFreezePing = true;
211− };
212−
213− # Dummy group for the "everyone else" section
214− feature-freeze-everyone-else = {
215− members = [ ];
216− githubTeams = [
217− "nixpkgs-committers"
218− "release-engineers"
219− ];
220− scope = "Dummy team for the #everyone else' section during feture freezes, not to be used as package maintainers!";
221− shortName = "Everyone else";
222− enableFeatureFreezePing = true;
22374 };
22475
22576 freedesktop = {
22677 members = [ jtojnar ];
22778 scope = "Maintain Freedesktop.org packages for graphical desktop.";
228− shortName = "freedesktop.org packaging";
22979 };
23080
23181 gcc = {
@@ -235,7 +85,6 @@ with lib.maintainers; {
23585 ericson2314
23686 ];
23787 scope = "Maintain GCC (GNU Compiler Collection) compilers";
238− shortName = "GCC";
23988 };
24089
24190 golang = {
@@ -244,30 +93,23 @@ with lib.maintainers; {
24493 cstrahan
24594 Frostman
24695 kalbasit
96+ mdlayher
24797 mic92
24898 orivej
24999 rvolosatovs
250100 zowoq
251101 ];
252102 scope = "Maintain Golang compilers.";
253− shortName = "Go";
254− enableFeatureFreezePing = true;
255103 };
256104
257105 gnome = {
258106 members = [
259− bobby285271
260107 hedning
261108 jtojnar
262109 dasj19
263110 maxeaubrey
264111 ];
265− githubTeams = [
266− "gnome"
267− ];
268112 scope = "Maintain GNOME desktop environment and platform.";
269− shortName = "GNOME";
270− enableFeatureFreezePing = true;
271113 };
272114
273115 haskell = {
@@ -277,12 +119,7 @@ with lib.maintainers; {
277119 maralorn
278120 sternenseemann
279121 ];
280− githubTeams = [
281− "haskell"
282− ];
283122 scope = "Maintain Haskell packages and infrastructure.";
284− shortName = "Haskell";
285− enableFeatureFreezePing = true;
286123 };
287124
288125 home-assistant = {
@@ -293,7 +130,6 @@ with lib.maintainers; {
293130 mic92
294131 ];
295132 scope = "Maintain the Home Assistant ecosystem";
296− shortName = "Home Assistant";
297133 };
298134
299135 iog = {
@@ -305,7 +141,6 @@ with lib.maintainers; {
305141 nrdxp
306142 ];
307143 scope = "Input-Output Global employees, which maintain critical software";
308− shortName = "Input-Output Global employees";
309144 };
310145
311146 jitsi = {
@@ -316,19 +151,6 @@ with lib.maintainers; {
316151 yuka
317152 ];
318153 scope = "Maintain Jitsi.";
319− shortName = "Jitsi";
320− };
321−
322− kubernetes = {
323− members = [
324− johanot
325− offline
326− saschagrunert
327− srhb
328− zowoq
329− ];
330− scope = "Maintain the Kubernetes package and module";
331− shortName = "Kubernetes";
332154 };
333155
334156 kodi = {
@@ -341,7 +163,6 @@ with lib.maintainers; {
341163 sephalon
342164 ];
343165 scope = "Maintain Kodi and related packages.";
344− shortName = "Kodi";
345166 };
346167
347168 linux-kernel = {
@@ -352,41 +173,6 @@ with lib.maintainers; {
352173 qyliss
353174 ];
354175 scope = "Maintain the Linux kernel.";
355− shortName = "Linux Kernel";
356− };
357−
358− lumina = {
359− members = [
360− romildo
361− ];
362− githubTeams = [
363− "lumina"
364− ];
365− scope = "Maintain lumina desktop environment and related packages.";
366− shortName = "Lumina";
367− enableFeatureFreezePing = true;
368− };
369−
370− lxqt = {
371− members = [
372− romildo
373− ];
374− githubTeams = [
375− "lxqt"
376− ];
377− scope = "Maintain LXQt desktop environment and related packages.";
378− shortName = "LXQt";
379− enableFeatureFreezePing = true;
380− };
381−
382− marketing = {
383− members = [
384− garbas
385− tomberek
386− ];
387− scope = "Marketing of Nix/NixOS/nixpkgs.";
388− shortName = "Marketing";
389− enableFeatureFreezePing = true;
390176 };
391177
392178 mate = {
@@ -395,7 +181,6 @@ with lib.maintainers; {
395181 romildo
396182 ];
397183 scope = "Maintain Mate desktop environment and related packages.";
398− shortName = "MATE";
399184 };
400185
401186 matrix = {
@@ -405,53 +190,19 @@ with lib.maintainers; {
405190 mguentner
406191 ekleog
407192 ralith
193+ mjlbach
408194 dandellion
409195 sumnerevans
410196 ];
411197 scope = "Maintain the ecosystem around Matrix, a decentralized messenger.";
412− shortName = "Matrix";
413− };
414−
415− mobile = {
416− members = [
417− samueldr
418− ];
419− scope = "Maintain Mobile NixOS.";
420− shortName = "Mobile";
421− enableFeatureFreezePing = true;
422− };
423−
424− nix = {
425− members = [
426− Profpatsch
427− eelco
428− grahamc
429− pierron
430− ];
431− scope = "Maintain the Nix package manager.";
432− shortName = "Nix/nix-cli ecosystem";
433− enableFeatureFreezePing = true;
434− };
435−
436− nixos-modules = {
437− members = [
438− ericson2314
439− infinisil
440− qyliss
441− roberth
442− ];
443− scope = "Maintain nixpkgs module system internals.";
444− shortName = "NixOS Modules / internals";
445− enableFeatureFreezePing = true;
446198 };
447199
448200 openstack = {
449201 members = [
450− emilytrau
202+ angustrau
451203 SuperSandro2000
452204 ];
453205 scope = "Maintain the ecosystem around OpenStack";
454− shortName = "OpenStack";
455206 };
456207
457208 pantheon = {
@@ -459,38 +210,18 @@ with lib.maintainers; {
459210 davidak
460211 bobby285271
461212 ];
462− githubTeams = [
463− "pantheon"
464− ];
465213 scope = "Maintain Pantheon desktop environment and platform.";
466− shortName = "Pantheon";
467− enableFeatureFreezePing = true;
468− };
469−
470− perl = {
471− members = [
472− sgo
473− ];
474− scope = "Maintain the Perl interpreter and Perl packages.";
475− shortName = "Perl";
476− enableFeatureFreezePing = true;
477214 };
478215
479216 php = {
480217 members = [
481218 aanderse
482− drupol
483219 etu
484220 globin
485221 ma27
486222 talyz
487223 ];
488− githubTeams = [
489− "php"
490− ];
491224 scope = "Maintain PHP related packages and extensions.";
492− shortName = "PHP";
493− enableFeatureFreezePing = true;
494225 };
495226
496227 podman = {
@@ -500,95 +231,7 @@ with lib.maintainers; {
500231 vdemeester
501232 zowoq
502233 ];
503− githubTeams = [
504− "podman"
505− ];
506234 scope = "Maintain Podman and CRI-O related packages and modules.";
507− shortName = "Podman";
508− enableFeatureFreezePing = true;
509− };
510−
511− postgres = {
512− members = [
513− thoughtpolice
514− ];
515− scope = "Maintain the PostgreSQL package and plugins along with the NixOS module.";
516− shortName = "PostgreSQL";
517− enableFeatureFreezePing = true;
518− };
519−
520− python = {
521− members = [
522− fridh
523− hexa
524− jonringer
525− ];
526− scope = "Maintain the Python interpreter and related packages.";
527− shortName = "Python";
528− enableFeatureFreezePing = true;
529− };
530−
531− qt-kde = {
532− members = [
533− ttuegel
534− ];
535− githubTeams = [
536− "qt-kde"
537− ];
538− scope = "Maintain the KDE desktop environment and Qt.";
539− shortName = "Qt / KDE";
540− enableFeatureFreezePing = true;
541− };
542−
543− r = {
544− members = [
545− bcdarwin
546− jbedo
547− ];
548− scope = "Maintain the R programming language and related packages.";
549− shortName = "R";
550− enableFeatureFreezePing = true;
551− };
552−
553− redcodelabs = {
554− members = [
555− unrooted
556− wr0belj
557− wintrmvte
558− ];
559− scope = "Maintain Red Code Labs related packages and modules.";
560− shortName = "Red Code Labs";
561− };
562−
563− release = {
564− members = [ ];
565− githubTeams = [
566− "nixos-release-managers"
567− ];
568− scope = "Manage the current nixpkgs/NixOS release.";
569− shortName = "Release";
570− enableFeatureFreezePing = true;
571− };
572−
573− ruby = {
574− members = [
575− marsam
576− ];
577− scope = "Maintain the Ruby interpreter and related packages.";
578− shortName = "Ruby";
579− enableFeatureFreezePing = true;
580− };
581−
582− rust = {
583− members = [
584− andir
585− lnl7
586− mic92
587− zowoq
588− ];
589− scope = "Maintain the Rust compiler toolchain and nixpkgs integration.";
590− shortName = "Rust";
591− enableFeatureFreezePing = true;
592235 };
593236
594237 sage = {
@@ -599,15 +242,6 @@ with lib.maintainers; {
599242 collares
600243 ];
601244 scope = "Maintain SageMath and the dependencies that are likely to break it.";
602− shortName = "SageMath";
603− };
604−
605− sphinx = {
606− members = [
607− SuperSandro2000
608− ];
609− scope = "Maintain Sphinx related packages.";
610− shortName = "Sphinx";
611245 };
612246
613247 serokell = {
@@ -617,26 +251,6 @@ with lib.maintainers; {
617251 mkaito
618252 ];
619253 scope = "Group registration for Serokell employees who collectively maintain packages.";
620− shortName = "Serokell employees";
621− };
622−
623− systemd = {
624− members = [ ];
625− githubTeams = [
626− "systemd"
627− ];
628− scope = "Maintain systemd for NixOS.";
629− shortName = "systemd";
630− enableFeatureFreezePing = true;
631− };
632−
633− tests = {
634− members = [
635− tfc
636− ];
637− scope = "Maintain the NixOS VM test runner.";
638− shortName = "NixOS tests";
639− enableFeatureFreezePing = true;
640254 };
641255
642256 tts = {
@@ -645,25 +259,5 @@ with lib.maintainers; {
645259 mic92
646260 ];
647261 scope = "coqui-ai TTS (formerly Mozilla TTS) and leaf packages";
648− shortName = "coqui-ai TTS";
649− };
650−
651− vim = {
652− members = [
653− jonringer
654− softinio
655− teto
656− ];
657− scope = "Maintain the vim and neovim text editors and related packages.";
658− shortName = "Vim/Neovim";
659− enableFeatureFreezePing = true;
660− };
661−
662− xfce = {
663− members = [
664− romildo
665− ];
666− scope = "Maintain Xfce desktop environment and related packages.";
667− shortName = "Xfce";
668262 };
669263}
nixos/default.nix+24−1
@@ -9,6 +9,27 @@ let
99 modules = [ configuration ];
1010 };
1111
12+ # This is for `nixos-rebuild build-vm'.
13+ vmConfig = (import ./lib/eval-config.nix {
14+ inherit system;
15+ modules = [ configuration ./modules/virtualisation/qemu-vm.nix ];
16+ }).config;
17+
18+ # This is for `nixos-rebuild build-vm-with-bootloader'.
19+ vmWithBootLoaderConfig = (import ./lib/eval-config.nix {
20+ inherit system;
21+ modules =
22+ [ configuration
23+ ./modules/virtualisation/qemu-vm.nix
24+ { virtualisation.useBootLoader = true; }
25+ ({ config, ... }: {
26+ virtualisation.useEFIBoot =
27+ config.boot.loader.systemd-boot.enable ||
28+ config.boot.loader.efi.canTouchEfiVariables;
29+ })
30+ ];
31+ }).config;
32+
1233in
1334
1435{
@@ -16,5 +37,7 @@ in
1637
1738 system = eval.config.system.build.toplevel;
1839
19− inherit (eval.config.system.build) vm vmWithBootLoader;
40+ vm = vmConfig.system.build.vm;
41+
42+ vmWithBootLoader = vmWithBootLoaderConfig.system.build.vm;
2043}
nixos/doc/manual/administration/declarative-containers.section.md+2−2
@@ -9,7 +9,7 @@ containers.database =
99 { config =
1010 { config, pkgs, ... }:
1111 { services.postgresql.enable = true;
12− services.postgresql.package = pkgs.postgresql_10;
12+ services.postgresql.package = pkgs.postgresql_9_6;
1313 };
1414 };
1515```
@@ -40,7 +40,7 @@ section for details on container networking.)
4040To disable the container, just remove it from `configuration.nix` and
4141run `nixos-rebuild
4242 switch`. Note that this will not delete the root directory of the
43−container in `/var/lib/nixos-containers`. Containers can be destroyed using
43+container in `/var/lib/containers`. Containers can be destroyed using
4444the imperative method: `nixos-container destroy foo`.
4545
4646Declarative containers can be started and stopped using the
nixos/doc/manual/administration/imperative-containers.section.md+2−2
@@ -10,8 +10,8 @@ You create a container with identifier `foo` as follows:
1010# nixos-container create foo
1111```
1212
13−This creates the container's root directory in `/var/lib/nixos-containers/foo`
14−and a small configuration file in `/etc/nixos-containers/foo.conf`. It also
13+This creates the container's root directory in `/var/lib/containers/foo`
14+and a small configuration file in `/etc/containers/foo.conf`. It also
1515builds the container's initial system configuration and stores it in
1616`/nix/var/nix/profiles/per-container/foo/system`. You can modify the
1717initial configuration of the container on the command line. For
nixos/doc/manual/configuration/renaming-interfaces.section.md+1−1
@@ -26,7 +26,7 @@ we assign the name `wan` to the interface with MAC address
2626
2727```nix
2828systemd.network.links."10-wan" = {
29− matchConfig.PermanentMACAddress = "52:54:00:12:01:01";
29+ matchConfig.MACAddress = "52:54:00:12:01:01";
3030 linkConfig.Name = "wan";
3131};
3232```
nixos/doc/manual/default.nix+5−18
@@ -1,34 +1,21 @@
1−{ pkgs
2−, options
3−, config
4−, version
5−, revision
6−, extraSources ? []
7−, baseOptionsJSON ? null
8−, warningsAreErrors ? true
9−, prefix ? ../../..
10−}:
1+{ pkgs, options, config, version, revision, extraSources ? [] }:
112
123with pkgs;
134
145let
156 lib = pkgs.lib;
167
17− docbook_xsl_ns = pkgs.docbook-xsl-ns.override {
18− withManOptDedupPatch = true;
19− };
20−
218 # We need to strip references to /nix/store/* from options,
229 # including any `extraSources` if some modules came from elsewhere,
2310 # or else the build will fail.
2411 #
2512 # E.g. if some `options` came from modules in ${pkgs.customModules}/nix,
2613 # you'd need to include `extraSources = [ pkgs.customModules ]`
27− prefixesToStrip = map (p: "${toString p}/") ([ prefix ] ++ extraSources);
14+ prefixesToStrip = map (p: "${toString p}/") ([ ../../.. ] ++ extraSources);
2815 stripAnyPrefixes = lib.flip (lib.foldr lib.removePrefix) prefixesToStrip;
2916
3017 optionsDoc = buildPackages.nixosOptionsDoc {
31− inherit options revision baseOptionsJSON warningsAreErrors;
18+ inherit options revision;
3219 transformOptions = opt: opt // {
3320 # Clean up declaration sites to not refer to the NixOS source tree.
3421 declarations = map stripAnyPrefixes opt.declarations;
@@ -174,7 +161,7 @@ let
174161in rec {
175162 inherit generatedSources;
176163
177− inherit (optionsDoc) optionsJSON optionsNix optionsDocBook;
164+ inherit (optionsDoc) optionsJSON optionsXML optionsDocBook;
178165
179166 # Generate the NixOS manual.
180167 manualHTML = runCommand "nixos-manual-html"
@@ -218,7 +205,7 @@ in rec {
218205
219206 manualEpub = runCommand "nixos-manual-epub"
220207 { inherit sources;
221− nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin buildPackages.zip ];
208+ buildInputs = [ libxml2.bin libxslt.bin zip ];
222209 }
223210 ''
224211 # Generate the epub manual.
nixos/doc/manual/development/activation-script.section.mddeleted−72
@@ -1,72 +0,0 @@
1−# Activation script {#sec-activation-script}
2−
3−The activation script is a bash script called to activate the new
4−configuration which resides in a NixOS system in `$out/activate`. Since its
5−contents depend on your system configuration, the contents may differ.
6−This chapter explains how the script works in general and some common NixOS
7−snippets. Please be aware that the script is executed on every boot and system
8−switch, so tasks that can be performed in other places should be performed
9−there (for example letting a directory of a service be created by systemd using
10−mechanisms like `StateDirectory`, `CacheDirectory`, ... or if that's not
11−possible using `preStart` of the service).
12−
13−Activation scripts are defined as snippets using
14−[](#opt-system.activationScripts). They can either be a simple multiline string
15−or an attribute set that can depend on other snippets. The builder for the
16−activation script will take these dependencies into account and order the
17−snippets accordingly. As a simple example:
18−
19−```nix
20−system.activationScripts.my-activation-script = {
21− deps = [ "etc" ];
22− # supportsDryActivation = true;
23− text = ''
24− echo "Hallo i bims"
25− '';
26−};
27−```
28−
29−This example creates an activation script snippet that is run after the `etc`
30−snippet. The special variable `supportsDryActivation` can be set so the snippet
31−is also run when `nixos-rebuild dry-activate` is run. To differentiate between
32−real and dry activation, the `$NIXOS_ACTION` environment variable can be
33−read which is set to `dry-activate` when a dry activation is done.
34−
35−An activation script can write to special files instructing
36−`switch-to-configuration` to restart/reload units. The script will take these
37−requests into account and will incorperate the unit configuration as described
38−above. This means that the activation script will "fake" a modified unit file
39−and `switch-to-configuration` will act accordingly. By doing so, configuration
40−like [systemd.services.\<name\>.restartIfChanged](#opt-systemd.services) is
41−respected. Since the activation script is run **after** services are already
42−stopped, [systemd.services.\<name\>.stopIfChanged](#opt-systemd.services)
43−cannot be taken into account anymore and the unit is always restarted instead
44−of being stopped and started afterwards.
45−
46−The files that can be written to are `/run/nixos/activation-restart-list` and
47−`/run/nixos/activation-reload-list` with their respective counterparts for
48−dry activation being `/run/nixos/dry-activation-restart-list` and
49−`/run/nixos/dry-activation-reload-list`. Those files can contain
50−newline-separated lists of unit names where duplicates are being ignored. These
51−files are not create automatically and activation scripts must take the
52−possiblility into account that they have to create them first.
53−
54−## NixOS snippets {#sec-activation-script-nixos-snippets}
55−
56−There are some snippets NixOS enables by default because disabling them would
57−most likely break you system. This section lists a few of them and what they
58−do:
59−
60−- `binsh` creates `/bin/sh` which points to the runtime shell
61−- `etc` sets up the contents of `/etc`, this includes systemd units and
62− excludes `/etc/passwd`, `/etc/group`, and `/etc/shadow` (which are managed by
63− the `users` snippet)
64−- `hostname` sets the system's hostname in the kernel (not in `/etc`)
65−- `modprobe` sets the path to the `modprobe` binary for module auto-loading
66−- `nix` prepares the nix store and adds a default initial channel
67−- `specialfs` is responsible for mounting filesystems like `/proc` and `sys`
68−- `users` creates and removes users and groups by managing `/etc/passwd`,
69− `/etc/group` and `/etc/shadow`. This also creates home directories
70−- `usrbinenv` creates `/usr/bin/env`
71−- `var` creates some directories in `/var` that are not service-specific
72−- `wrappers` creates setuid wrappers like `ping` and `sudo`
nixos/doc/manual/development/building-nixos.chapter.mdnew file+46
@@ -0,0 +1,46 @@
1+# Building a NixOS (Live) ISO {#sec-building-image}
2+
3+Default live installer configurations are available inside `nixos/modules/installer/cd-dvd`.
4+For building other system images, [nixos-generators] is a good place to start looking at.
5+
6+You have two options:
7+
8+- Use any of those default configurations as is
9+- Combine them with (any of) your host config(s)
10+
11+System images, such as the live installer ones, know how to enforce configuration settings
12+on wich they immediately depend in order to work correctly.
13+
14+However, if you are confident, you can opt to override those
15+enforced values with `mkForce`.
16+
17+[nixos-generators]: https://github.com/nix-community/nixos-generators
18+
19+## Practical Instructions {#sec-building-image-instructions}
20+
21+```ShellSession
22+$ git clone https://github.com/NixOS/nixpkgs.git
23+$ cd nixpkgs/nixos
24+$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-minimal.nix default.nix
25+```
26+
27+To check the content of an ISO image, mount it like so:
28+
29+```ShellSession
30+# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
31+```
32+
33+## Technical Notes {#sec-building-image-tech-notes}
34+
35+The config value enforcement is implemented via `mkImageMediaOverride = mkOverride 60;`
36+and therefore primes over simple value assignments, but also yields to `mkForce`.
37+
38+This property allows image designers to implement in semantically correct ways those
39+configuration values upon which the correct functioning of the image depends.
40+
41+For example, the iso base image overrides those file systems which it needs at a minimum
42+for correct functioning, while the installer base image overrides the entire file system
43+layout because there can't be any other guarantees on a live medium than those given
44+by the live medium itself. The latter is especially true befor formatting the target
45+block device(s). On the other hand, the netboot iso only overrides its minimum dependencies
46+since netboot images are always made-to-target.
nixos/doc/manual/development/development.xml+1−1
@@ -12,8 +12,8 @@
1212 <xi:include href="../from_md/development/sources.chapter.xml" />
1313 <xi:include href="../from_md/development/writing-modules.chapter.xml" />
1414 <xi:include href="../from_md/development/building-parts.chapter.xml" />
15− <xi:include href="../from_md/development/what-happens-during-a-system-switch.chapter.xml" />
1615 <xi:include href="../from_md/development/writing-documentation.chapter.xml" />
16+ <xi:include href="../from_md/development/building-nixos.chapter.xml" />
1717 <xi:include href="../from_md/development/nixos-tests.chapter.xml" />
1818 <xi:include href="../from_md/development/testing-installer.chapter.xml" />
1919</part>
nixos/doc/manual/development/meta-attributes.section.md+1−27
@@ -5,7 +5,7 @@ extra information. Module meta attributes are defined in the `meta.nix`
55special module.
66
77`meta` is a top level attribute like `options` and `config`. Available
8−meta-attributes are `maintainers`, `doc`, and `buildDocsInSandbox`.
8+meta-attributes are `maintainers` and `doc`.
99
1010Each of the meta-attributes must be defined at most once per module
1111file.
@@ -24,7 +24,6 @@ file.
2424 meta = {
2525 maintainers = with lib.maintainers; [ ericsagnes ];
2626 doc = ./default.xml;
27− buildDocsInSandbox = true;
2827 };
2928}
3029```
@@ -39,28 +38,3 @@ file.
3938 ```ShellSession
4039 $ nix-build nixos/release.nix -A manual.x86_64-linux
4140 ```
42−
43−- `buildDocsInSandbox` indicates whether the option documentation for the
44− module can be built in a derivation sandbox. This option is currently only
45− honored for modules shipped by nixpkgs. User modules and modules taken from
46− `NIXOS_EXTRA_MODULE_PATH` are always built outside of the sandbox, as has
47− been the case in previous releases.
48−
49− Building NixOS option documentation in a sandbox allows caching of the built
50− documentation, which greatly decreases the amount of time needed to evaluate
51− a system configuration that has NixOS documentation enabled. The sandbox also
52− restricts which attributes may be referenced by documentation attributes
53− (such as option descriptions) to the `options` and `lib` module arguments and
54− the `pkgs.formats` attribute of the `pkgs` argument, `config` and the rest of
55− `pkgs` are disallowed and will cause doc build failures when used. This
56− restriction is necessary because we cannot reproduce the full nixpkgs
57− instantiation with configuration and overlays from a system configuration
58− inside the sandbox. The `options` argument only includes options of modules
59− that are also built inside the sandbox, referencing an option of a module
60− that isn't built in the sandbox is also forbidden.
61−
62− The default is `true` and should usually not be changed; set it to `false`
63− only if the module requires access to `pkgs` in its documentation (e.g.
64− because it loads information from a linked package to build an option type)
65− or if its documentation depends on other modules that also aren't sandboxed
66− (e.g. by using types defined in the other module).
nixos/doc/manual/development/option-declarations.section.md+16−91
@@ -27,10 +27,9 @@ The function `mkOption` accepts the following arguments.
2727
2828`type`
2929
30−: The type of the option (see [](#sec-option-types)). This
31− argument is mandatory for nixpkgs modules. Setting this is highly
32− recommended for the sake of documentation and type checking. In case it is
33− not set, a fallback type with unspecified behavior is used.
30+: The type of the option (see [](#sec-option-types)). It may be
31+ omitted, but that's not advisable since it may lead to errors that
32+ are hard to diagnose.
3433
3534`default`
3635
@@ -58,80 +57,6 @@ The function `mkOption` accepts the following arguments.
5857: A textual description of the option, in DocBook format, that will be
5958 included in the NixOS manual.
6059
61−## Utility functions for common option patterns {#sec-option-declarations-util}
62−
63−### `mkEnableOption` {#sec-option-declarations-util-mkEnableOption}
64−
65−Creates an Option attribute set for a boolean value option i.e an
66−option to be toggled on or off.
67−
68−This function takes a single string argument, the name of the thing to be toggled.
69−
70−The option's description is "Whether to enable \<name\>.".
71−
72−For example:
73−
74−::: {#ex-options-declarations-util-mkEnableOption-magic .example}
75−```nix
76−lib.mkEnableOption "magic"
77−# is like
78−lib.mkOption {
79− type = lib.types.bool;
80− default = false;
81− example = true;
82− description = "Whether to enable magic.";
83−}
84−```
85−
86−### `mkPackageOption` {#sec-option-declarations-util-mkPackageOption}
87−
88−Usage:
89−
90−```nix
91−mkPackageOption pkgs "name" { default = [ "path" "in" "pkgs" ]; example = "literal example"; }
92−```
93−
94−Creates an Option attribute set for an option that specifies the package a module should use for some purpose.
95−
96−**Note**: You shouldn’t necessarily make package options for all of your modules. You can always overwrite a specific package throughout nixpkgs by using [nixpkgs overlays](https://nixos.org/manual/nixpkgs/stable/#chap-overlays).
97−
98−The default package is specified as a list of strings representing its attribute path in nixpkgs. Because of this, you need to pass nixpkgs itself as the first argument.
99−
100−The second argument is the name of the option, used in the description "The \<name\> package to use.". You can also pass an example value, either a literal string or a package's attribute path.
101−
102−You can omit the default path if the name of the option is also attribute path in nixpkgs.
103−
104−::: {#ex-options-declarations-util-mkPackageOption .title}
105−Examples:
106−
107−::: {#ex-options-declarations-util-mkPackageOption-hello .example}
108−```nix
109−lib.mkPackageOption pkgs "hello" { }
110−# is like
111−lib.mkOption {
112− type = lib.types.package;
113− default = pkgs.hello;
114− defaultText = lib.literalExpression "pkgs.hello";
115− description = "The hello package to use.";
116−}
117−```
118−
119−::: {#ex-options-declarations-util-mkPackageOption-ghc .example}
120−```nix
121−lib.mkPackageOption pkgs "GHC" {
122− default = [ "ghc" ];
123− example = "pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])";
124−}
125−# is like
126−lib.mkOption {
127− type = lib.types.package;
128− default = pkgs.ghc;
129− defaultText = lib.literalExpression "pkgs.ghc";
130− example = lib.literalExpression "pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])";
131− description = "The GHC package to use.";
132−}
133−```
134−
13560## Extensible Option Types {#sec-option-declarations-eot}
13661
13762Extensible option types is a feature that allow to extend certain types
@@ -146,26 +71,26 @@ As an example, we will take the case of display managers. There is a
14671central display manager module for generic display manager options and a
14772module file per display manager backend (sddm, gdm \...).
14873
149−There are two approaches we could take with this module structure:
74+There are two approach to this module structure:
15075
151−- Configuring the display managers independently by adding an enable
76+- Managing the display managers independently by adding an enable
15277 option to every display manager module backend. (NixOS)
15378
154−- Configuring the display managers in the central module by adding
155− an option to select which display manager backend to use.
79+- Managing the display managers in the central module by adding an
80+ option to select which display manager backend to use.
15681
15782Both approaches have problems.
15883
15984Making backends independent can quickly become hard to manage. For
160−display managers, there can only be one enabled at a time, but the
161−type system cannot enforce this restriction as there is no relation
162−between each backend's `enable` option. As a result, this restriction
163−has to be done explicitly by adding assertions in each display manager
164−backend module.
85+display managers, there can be only one enabled at a time, but the type
86+system can not enforce this restriction as there is no relation between
87+each backend `enable` option. As a result, this restriction has to be
88+done explicitely by adding assertions in each display manager backend
89+module.
16590
166−On the other hand, managing the display manager backends in the
167−central module will require changing the central module option every
168−time a new backend is added or removed.
91+On the other hand, managing the display managers backends in the central
92+module will require to change the central module option every time a new
93+backend is added or removed.
16994
17095By using extensible option types, it is possible to create a placeholder
17196option in the central module
@@ -176,7 +101,7 @@ and to extend it in each backend module
176101
177102As a result, `displayManager.enable` option values can be added without
178103changing the main service module file and the type system automatically
179−enforces that there can only be a single display manager enabled.
104+enforce that there can only be a single display manager enabled.
180105
181106::: {#ex-option-declaration-eot-service .example}
182107::: {.title}
nixos/doc/manual/development/option-types.section.md+4−29
@@ -16,14 +16,13 @@ merging is handled.
1616
1717`types.path`
1818
19−: A filesystem path is anything that starts with a slash when
20− coerced to a string. Even if derivations can be considered as
21− paths, the more specific `types.package` should be preferred.
19+: A filesystem path, defined as anything that when coerced to a string
20+ starts with a slash. Even if derivations can be considered as path,
21+ the more specific `types.package` should be preferred.
2222
2323`types.package`
2424
25−: A top-level store path. This can be an attribute set pointing
26− to a store path, like a derivation or a flake input.
25+: A derivation or a store path.
2726
2827`types.anything`
2928
@@ -64,24 +63,6 @@ merging is handled.
6463 ```
6564 :::
6665
67−`types.raw`
68−
69−: A type which doesn't do any checking, merging or nested evaluation. It
70− accepts a single arbitrary value that is not recursed into, making it
71− useful for values coming from outside the module system, such as package
72− sets or arbitrary data. Options of this type are still evaluated according
73− to priorities and conditionals, so `mkForce`, `mkIf` and co. still work on
74− the option value itself, but not for any value nested within it. This type
75− should only be used when checking, merging and nested evaluation are not
76− desirable.
77−
78−`types.optionType`
79−
80−: The type of an option's type. Its merging operation ensures that nested
81− options have the correct file location annotated, and that if possible,
82− multiple option definitions are correctly merged together. The main use
83− case is as the type of the `_module.freeformType` option.
84−
8566`types.attrs`
8667
8768: A free-form attribute set.
@@ -269,12 +250,6 @@ Composed types are types that take a type as parameter. `listOf
269250: Ensures that type *`t`* cannot be merged. It is used to ensure option
270251 definitions are declared only once.
271252
272−`types.unique` `{ message = m }` *`t`*
273−
274−: Ensures that type *`t`* cannot be merged. Prints the message *`m`*, after
275− the line `The option <option path> is defined multiple times.` and before
276− a list of definition locations.
277−
278253`types.either` *`t1 t2`*
279254
280255: Type *`t1`* or type *`t2`*, e.g. `with types; either int str`.
nixos/doc/manual/development/running-nixos-tests-interactively.section.md+9−9
@@ -4,19 +4,19 @@ The test itself can be run interactively. This is particularly useful
44when developing or debugging a test:
55
66```ShellSession
7−$ nix-build . -A nixosTests.login.driverInteractive
8−$ ./result/bin/nixos-test-driver
9−[...]
10−>>>
7+$ nix-build nixos/tests/login.nix -A driverInteractive
8+$ ./result/bin/nixos-test-driver --interactive
9+starting VDE switch for network 1
10+>
1111```
1212
1313You can then take any Python statement, e.g.
1414
1515```py
16−>>> start_all()
17−>>> test_script()
18−>>> machine.succeed("touch /tmp/foo")
19−>>> print(machine.succeed("pwd")) # Show stdout of command
16+> start_all()
17+> test_script()
18+> machine.succeed("touch /tmp/foo")
19+> print(machine.succeed("pwd")) # Show stdout of command
2020```
2121
2222The function `test_script` executes the entire test script and drops you
@@ -28,7 +28,7 @@ You can re-use the VM states coming from a previous run by setting the
2828`--keep-vm-state` flag.
2929
3030```ShellSession
31−$ ./result/bin/nixos-test-driver --keep-vm-state
31+$ ./result/bin/nixos-test-driver --interactive --keep-vm-state
3232```
3333
3434The machine state is stored in the `$TMPDIR/vm-state-machinename`
nixos/doc/manual/development/running-nixos-tests.section.md+2−2
@@ -24,8 +24,8 @@ After building/downloading all required dependencies, this will perform
2424a build that starts a QEMU/KVM virtual machine containing a NixOS
2525system. The virtual machine mounts the Nix store of the host; this makes
2626VM creation very fast, as no disk image needs to be created. Afterwards,
27−you can view a log of the test:
27+you can view a pretty-printed log of the test:
2828
2929```ShellSession
30−$ nix-store --read-log result
30+$ firefox result/log.html
3131```
nixos/doc/manual/development/settings-options.section.md−59
@@ -32,20 +32,6 @@ type of this option should represent the format. The most common formats
3232have a predefined type and string generator already declared under
3333`pkgs.formats`:
3434
35−`pkgs.formats.javaProperties` { *`comment`* ? `"Generated with Nix"` }
36−
37−: A function taking an attribute set with values
38−
39− `comment`
40−
41− : A string to put at the start of the
42− file in a comment. It can have multiple
43− lines.
44−
45− It returns the `type`: `attrsOf str` and a function
46− `generate` to build a Java `.properties` file, taking
47− care of the correct escaping, etc.
48−
4935`pkgs.formats.json` { }
5036
5137: A function taking an empty attribute set (for future extensibility)
@@ -80,45 +66,6 @@ have a predefined type and string generator already declared under
8066 and returning a set with TOML-specific attributes `type` and
8167 `generate` as specified [below](#pkgs-formats-result).
8268
83−`pkgs.formats.elixirConf { elixir ? pkgs.elixir }`
84−
85−: A function taking an attribute set with values
86−
87− `elixir`
88−
89− : The Elixir package which will be used to format the generated output
90−
91− It returns a set with Elixir-Config-specific attributes `type`, `lib`, and
92− `generate` as specified [below](#pkgs-formats-result).
93−
94− The `lib` attribute contains functions to be used in settings, for
95− generating special Elixir values:
96−
97− `mkRaw elixirCode`
98−
99− : Outputs the given string as raw Elixir code
100−
101− `mkGetEnv { envVariable, fallback ? null }`
102−
103− : Makes the configuration fetch an environment variable at runtime
104−
105− `mkAtom atom`
106−
107− : Outputs the given string as an Elixir atom, instead of the default
108− Elixir binary string. Note: lowercase atoms still needs to be prefixed
109− with `:`
110−
111− `mkTuple array`
112−
113− : Outputs the given array as an Elixir tuple, instead of the default
114− Elixir list
115−
116− `mkMap attrset`
117−
118− : Outputs the given attribute set as an Elixir map, instead of the
119− default Elixir keyword list
120−
121−
12269::: {#pkgs-formats-result}
12370These functions all return an attribute set with these values:
12471:::
@@ -127,12 +74,6 @@ These functions all return an attribute set with these values:
12774
12875: A module system type representing a value of the format
12976
130−`lib`
131−
132−: Utility functions for convenience, or special interactions with the format.
133− This attribute is optional. It may contain inside a `types` attribute
134− containing types specific to this format.
135−
13677`generate` *`filename jsonValue`*
13778
13879: A function that can render a value of the format to a file. Returns
nixos/doc/manual/development/unit-handling.section.mddeleted−62
@@ -1,62 +0,0 @@
1−# Unit handling {#sec-unit-handling}
2−
3−To figure out what units need to be started/stopped/restarted/reloaded, the
4−script first checks the current state of the system, similar to what `systemctl
5−list-units` shows. For each of the units, the script goes through the following
6−checks:
7−
8−- Is the unit file still in the new system? If not, **stop** the service unless
9− it sets `X-StopOnRemoval` in the `[Unit]` section to `false`.
10−
11−- Is it a `.target` unit? If so, **start** it unless it sets
12− `RefuseManualStart` in the `[Unit]` section to `true` or `X-OnlyManualStart`
13− in the `[Unit]` section to `true`. Also **stop** the unit again unless it
14− sets `X-StopOnReconfiguration` to `false`.
15−
16−- Are the contents of the unit files different? They are compared by parsing
17− them and comparing their contents. If they are different but only
18− `X-Reload-Triggers` in the `[Unit]` section is changed, **reload** the unit.
19− The NixOS module system allows setting these triggers with the option
20− [systemd.services.\<name\>.reloadTriggers](#opt-systemd.services). There are
21− some additional keys in the `[Unit]` section that are ignored as well. If the
22− unit files differ in any way, the following actions are performed:
23−
24− - `.path` and `.slice` units are ignored. There is no need to restart them
25− since changes in their values are applied by systemd when systemd is
26− reloaded.
27−
28− - `.mount` units are **reload**ed. These mostly come from the `/etc/fstab`
29− parser.
30−
31− - `.socket` units are currently ignored. This is to be fixed at a later
32− point.
33−
34− - The rest of the units (mostly `.service` units) are then **reload**ed if
35− `X-ReloadIfChanged` in the `[Service]` section is set to `true` (exposed
36− via [systemd.services.\<name\>.reloadIfChanged](#opt-systemd.services)).
37− A little exception is done for units that were deactivated in the meantime,
38− for example because they require a unit that got stopped before. These
39− are **start**ed instead of reloaded.
40−
41− - If the reload flag is not set, some more flags decide if the unit is
42− skipped. These flags are `X-RestartIfChanged` in the `[Service]` section
43− (exposed via
44− [systemd.services.\<name\>.restartIfChanged](#opt-systemd.services)),
45− `RefuseManualStop` in the `[Unit]` section, and `X-OnlyManualStart` in the
46− `[Unit]` section.
47−
48− - Further behavior depends on the unit having `X-StopIfChanged` in the
49− `[Service]` section set to `true` (exposed via
50− [systemd.services.\<name\>.stopIfChanged](#opt-systemd.services)). This is
51− set to `true` by default and must be explicitly turned off if not wanted.
52− If the flag is enabled, the unit is **stop**ped and then **start**ed. If
53− not, the unit is **restart**ed. The goal of the flag is to make sure that
54− the new unit never runs in the old environment which is still in place
55− before the activation script is run. This behavior is different when the
56− service is socket-activated, as outlined in the following steps.
57−
58− - The last thing that is taken into account is whether the unit is a service
59− and socket-activated. If `X-StopIfChanged` is **not** set, the service
60− is **restart**ed with the others. If it is set, both the service and the
61− socket are **stop**ped and the socket is **start**ed, leaving socket
62− activation to start the service when it's needed.
nixos/doc/manual/development/what-happens-during-a-system-switch.chapter.mddeleted−53
@@ -1,53 +0,0 @@
1−# What happens during a system switch? {#sec-switching-systems}
2−
3−Running `nixos-rebuild switch` is one of the more common tasks under NixOS.
4−This chapter explains some of the internals of this command to make it simpler
5−for new module developers to configure their units correctly and to make it
6−easier to understand what is happening and why for curious administrators.
7−
8−`nixos-rebuild`, like many deployment solutions, calls `switch-to-configuration`
9−which resides in a NixOS system at `$out/bin/switch-to-configuration`. The
10−script is called with the action that is to be performed like `switch`, `test`,
11−`boot`. There is also the `dry-activate` action which does not really perform
12−the actions but rather prints what it would do if you called it with `test`.
13−This feature can be used to check what service states would be changed if the
14−configuration was switched to.
15−
16−If the action is `switch` or `boot`, the bootloader is updated first so the
17−configuration will be the next one to boot. Unless `NIXOS_NO_SYNC` is set to
18−`1`, `/nix/store` is synced to disk.
19−
20−If the action is `switch` or `test`, the currently running system is inspected
21−and the actions to switch to the new system are calculated. This process takes
22−two data sources into account: `/etc/fstab` and the current systemd status.
23−Mounts and swaps are read from `/etc/fstab` and the corresponding actions are
24−generated. If a new mount is added, for example, the proper `.mount` unit is
25−marked to be started. The current systemd state is inspected, the difference
26−between the current system and the desired configuration is calculated and
27−actions are generated to get to this state. There are a lot of nuances that can
28−be controlled by the units which are explained here.
29−
30−After calculating what should be done, the actions are carried out. The order
31−of actions is always the same:
32−- Stop units (`systemctl stop`)
33−- Run activation script (`$out/activate`)
34−- See if the activation script requested more units to restart
35−- Restart systemd if needed (`systemd daemon-reexec`)
36−- Forget about the failed state of units (`systemctl reset-failed`)
37−- Reload systemd (`systemctl daemon-reload`)
38−- Reload systemd user instances (`systemctl --user daemon-reload`)
39−- Set up tmpfiles (`systemd-tmpfiles --create`)
40−- Reload units (`systemctl reload`)
41−- Restart units (`systemctl restart`)
42−- Start units (`systemctl start`)
43−- Inspect what changed during these actions and print units that failed and
44− that were newly started
45−
46−Most of these actions are either self-explaining but some of them have to do
47−with our units or the activation script. For this reason, these topics are
48−explained in the next sections.
49−
50−```{=docbook}
51−<xi:include href="unit-handling.section.xml" />
52−<xi:include href="activation-script.section.xml" />
53−```
nixos/doc/manual/development/writing-modules.chapter.md−42
@@ -90,17 +90,6 @@ modules: `systemd.services` (the set of all systemd services) and
9090`systemd.timers` (the list of commands to be executed periodically by
9191`systemd`).
9292
93−Care must be taken when writing systemd services using `Exec*` directives. By
94−default systemd performs substitution on `%<char>` specifiers in these
95−directives, expands environment variables from `$FOO` and `${FOO}`, splits
96−arguments on whitespace, and splits commands on `;`. All of these must be escaped
97−to avoid unexpected substitution or splitting when interpolating into an `Exec*`
98−directive, e.g. when using an `extraArgs` option to pass additional arguments to
99−the service. The functions `utils.escapeSystemdExecArg` and
100−`utils.escapeSystemdExecArgs` are provided for this, see [Example: Escaping in
101−Exec directives](#exec-escaping-example) for an example. When using these
102−functions system environment substitution should *not* be disabled explicitly.
103−
10493::: {#locate-example .example}
10594::: {.title}
10695**Example: NixOS Module for the "locate" Service**
@@ -164,37 +153,6 @@ in {
164153```
165154:::
166155
167−::: {#exec-escaping-example .example}
168−::: {.title}
169−**Example: Escaping in Exec directives**
170−:::
171−```nix
172−{ config, lib, pkgs, utils, ... }:
173−
174−with lib;
175−
176−let
177− cfg = config.services.echo;
178− echoAll = pkgs.writeScript "echo-all" ''
179− #! ${pkgs.runtimeShell}
180− for s in "$@"; do
181− printf '%s\n' "$s"
182− done
183− '';
184− args = [ "a%Nything" "lang=\${LANG}" ";" "/bin/sh -c date" ];
185−in {
186− systemd.services.echo =
187− { description = "Echo to the journal";
188− wantedBy = [ "multi-user.target" ];
189− serviceConfig.Type = "oneshot";
190− serviceConfig.ExecStart = ''
191− ${echoAll} ${utils.escapeSystemdExecArgs args}
192− '';
193− };
194−}
195−```
196−:::
197−
198156```{=docbook}
199157<xi:include href="option-declarations.section.xml" />
200158<xi:include href="option-types.section.xml" />
nixos/doc/manual/development/writing-nixos-tests.section.md+36−103
@@ -5,9 +5,15 @@ A NixOS test is a Nix expression that has the following structure:
55```nix
66import ./make-test-python.nix {
77
8− # One or more machines:
8+ # Either the configuration of a single machine:
9+ machine =
10+ { config, pkgs, ... }:
11+ { configuration…
12+ };
13+
14+ # Or a set of machines:
915 nodes =
10− { machine =
16+ { machine1 =
1117 { config, pkgs, ... }: { … };
1218 machine2 =
1319 { config, pkgs, ... }: { … };
@@ -23,16 +29,17 @@ import ./make-test-python.nix {
2329
2430The attribute `testScript` is a bit of Python code that executes the
2531test (described below). During the test, it will start one or more
26−virtual machines, the configuration of which is described by
27−the attribute `nodes`.
28−
29−An example of a single-node test is
30−[`login.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix).
31−It only needs a single machine to test whether users can log in
32+virtual machines, the configuration of which is described by the
33+attribute `machine` (if you need only one machine in your test) or by
34+the attribute `nodes` (if you need multiple machines). For instance,
35+[`login.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix)
36+only needs a single machine to test whether users can log in
3237on the virtual console, whether device ownership is correctly maintained
33−when switching between consoles, and so on. An interesting multi-node test is
34−[`nfs/simple.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nfs/simple.nix).
35−It uses two client nodes to test correct locking across server crashes.
38+when switching between consoles, and so on. On the other hand,
39+[`nfs/simple.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nfs/simple.nix),
40+which tests NFS client and server functionality in the
41+Linux kernel (including whether locks are maintained across server
42+crashes), requires three machines: a server and two clients.
3643
3744There are a few special NixOS configuration options for test VMs:
3845
@@ -60,7 +67,8 @@ The test script is a sequence of Python statements that perform various
6067actions, such as starting VMs, executing commands in the VMs, and so on.
6168Each virtual machine is represented as an object stored in the variable
6269`name` if this is also the identifier of the machine in the declarative
63−config. If you specified a node `nodes.machine`, the following example starts the
70+config. If you didn\'t specify multiple machines using the `nodes`
71+attribute, it is just `machine`. The following example starts the
6472machine, waits until it has finished booting, then executes a command
6573and checks that the output is more-or-less correct:
6674
@@ -71,7 +79,7 @@ if not "Linux" in machine.succeed("uname"):
7179 raise Exception("Wrong OS")
7280```
7381
74−The first line is technically unnecessary; machines are implicitly started
82+The first line is actually unnecessary; machines are implicitly started
7583when you first execute an action on them (such as `wait_for_unit` or
7684`succeed`). If you have multiple machines, you can speed up the test by
7785starting them in parallel:
@@ -80,8 +88,6 @@ starting them in parallel:
8088start_all()
8189```
8290
83−## Machine objects {#ssec-machine-objects}
84−
8591The following methods are available on machine objects:
8692
8793`start`
@@ -150,51 +156,37 @@ The following methods are available on machine objects:
150156 e.g., `send_chars("foobar\n")` will type the string `foobar`
151157 followed by the Enter key.
152158
153−`send_console`
154−
155−: Send keys to the kernel console. This allows interaction with the systemd
156− emergency mode, for example. Takes a string that is sent, e.g.,
157− `send_console("\n\nsystemctl default\n")`.
158−
159159`execute`
160160
161161: Execute a shell command, returning a list `(status, stdout)`.
162−
163− Commands are run with `set -euo pipefail` set:
164−
165− - If several commands are separated by `;` and one fails, the
166− command as a whole will fail.
167−
168− - For pipelines, the last non-zero exit status will be returned
169− (if there is one; otherwise zero will be returned).
170−
171− - Dereferencing unset variables fails the command.
172−
173− - It will wait for stdout to be closed.
174−
175162 If the command detaches, it must close stdout, as `execute` will wait
176163 for this to consume all output reliably. This can be achieved by
177164 redirecting stdout to stderr `>&2`, to `/dev/console`, `/dev/null` or
178165 a file. Examples of detaching commands are `sleep 365d &`, where the
179166 shell forks a new process that can write to stdout and `xclip -i`, where
180167 the `xclip` command itself forks without closing stdout.
181−
182168 Takes an optional parameter `check_return` that defaults to `True`.
183169 Setting this parameter to `False` will not check for the return code
184170 and return -1 instead. This can be used for commands that shut down
185171 the VM and would therefore break the pipe that would be used for
186172 retrieving the return code.
187173
188− A timeout for the command can be specified (in seconds) using the optional
189− `timeout` parameter, e.g., `execute(cmd, timeout=10)` or
190− `execute(cmd, timeout=None)`. The default is 900 seconds.
191−
192174`succeed`
193175
194176: Execute a shell command, raising an exception if the exit status is
195− not zero, otherwise returning the standard output. Similar to `execute`,
196− except that the timeout is `None` by default. See `execute` for details on
197− command execution.
177+ not zero, otherwise returning the standard output. Commands are run
178+ with `set -euo pipefail` set:
179+
180+ - If several commands are separated by `;` and one fails, the
181+ command as a whole will fail.
182+
183+ - For pipelines, the last non-zero exit status will be returned
184+ (if there is one, zero will be returned otherwise).
185+
186+ - Dereferencing unset variables fail the command.
187+
188+ - It will wait for stdout to be closed. See `execute` for the
189+ implications.
198190
199191`fail`
200192
@@ -204,13 +196,10 @@ The following methods are available on machine objects:
204196`wait_until_succeeds`
205197
206198: Repeat a shell command with 1-second intervals until it succeeds.
207− Has a default timeout of 900 seconds which can be modified, e.g.
208− `wait_until_succeeds(cmd, timeout=10)`. See `execute` for details on
209− command execution.
210199
211200`wait_until_fails`
212201
213−: Like `wait_until_succeeds`, but repeating the command until it fails.
202+: Repeat a shell command with 1-second intervals until it fails.
214203
215204`wait_for_unit`
216205
@@ -281,13 +270,6 @@ The following methods are available on machine objects:
281270 Killing the interactive session with `Ctrl-d` or `Ctrl-c` also ends
282271 the guest session.
283272
284−`console_interact`
285−
286−: Allows you to directly interact with QEMU's stdin. This should
287− only be used during test development, not in production tests.
288− Output from QEMU is only read line-wise. `Ctrl-c` kills QEMU and
289− `Ctrl-d` closes console and returns to the test runner.
290−
291273To test user units declared by `systemd.user.services` the optional
292274`user` argument can be used:
293275
@@ -306,7 +288,7 @@ For faster dev cycles it\'s also possible to disable the code-linters
306288```nix
307289import ./make-test-python.nix {
308290 skipLint = true;
309− nodes.machine =
291+ machine =
310292 { config, pkgs, ... }:
311293 { configuration…
312294 };
@@ -331,52 +313,3 @@ repository):
331313 # fmt: on
332314 '';
333315```
334−
335−## Failing tests early {#ssec-failing-tests-early}
336−
337−To fail tests early when certain invariables are no longer met (instead of waiting for the build to time out), the decorator `polling_condition` is provided. For example, if we are testing a program `foo` that should not quit after being started, we might write the following:
338−
339−```py
340−@polling_condition
341−def foo_running():
342− machine.succeed("pgrep -x foo")
343−
344−
345−machine.succeed("foo --start")
346−machine.wait_until_succeeds("pgrep -x foo")
347−
348−with foo_running:
349− ... # Put `foo` through its paces
350−```
351−
352−
353−`polling_condition` takes the following (optional) arguments:
354−
355−`seconds_interval`
356−
357−:
358− specifies how often the condition should be polled:
359−
360− ```py
361− @polling_condition(seconds_interval=10)
362− def foo_running():
363− machine.succeed("pgrep -x foo")
364− ```
365−
366−`description`
367−
368−:
369− is used in the log when the condition is checked. If this is not provided, the description is pulled from the docstring of the function. These two are therefore equivalent:
370−
371− ```py
372− @polling_condition
373− def foo_running():
374− "check that foo is running"
375− machine.succeed("pgrep -x foo")
376− ```
377−
378− ```py
379− @polling_condition(description="check that foo is running")
380− def foo_running():
381− machine.succeed("pgrep -x foo")
382− ```
nixos/doc/manual/from_md/administration/declarative-containers.section.xml+3−3
@@ -11,7 +11,7 @@ containers.database =
1111 { config =
1212 { config, pkgs, ... }:
1313 { services.postgresql.enable = true;
14− services.postgresql.package = pkgs.postgresql_10;
14+ services.postgresql.package = pkgs.postgresql_9_6;
1515 };
1616 };
1717</programlisting>
@@ -48,8 +48,8 @@ containers.database = {
4848 <literal>configuration.nix</literal> and run
4949 <literal>nixos-rebuild switch</literal>. Note that this will not
5050 delete the root directory of the container in
51− <literal>/var/lib/nixos-containers</literal>. Containers can be
52− destroyed using the imperative method:
51+ <literal>/var/lib/containers</literal>. Containers can be destroyed
52+ using the imperative method:
5353 <literal>nixos-container destroy foo</literal>.
5454 </para>
5555 <para>
nixos/doc/manual/from_md/administration/imperative-containers.section.xml+2−3
@@ -14,9 +14,8 @@
1414</programlisting>
1515 <para>
1616 This creates the container’s root directory in
17− <literal>/var/lib/nixos-containers/foo</literal> and a small
18− configuration file in
19− <literal>/etc/nixos-containers/foo.conf</literal>. It also builds
17+ <literal>/var/lib/containers/foo</literal> and a small configuration
18+ file in <literal>/etc/containers/foo.conf</literal>. It also builds
2019 the container’s initial system configuration and stores it in
2120 <literal>/nix/var/nix/profiles/per-container/foo/system</literal>.
2221 You can modify the initial configuration of the container on the
nixos/doc/manual/from_md/configuration/renaming-interfaces.section.xml+1−1
@@ -32,7 +32,7 @@
3232 </para>
3333 <programlisting language="bash">
3434systemd.network.links.&quot;10-wan&quot; = {
35− matchConfig.PermanentMACAddress = &quot;52:54:00:12:01:01&quot;;
35+ matchConfig.MACAddress = &quot;52:54:00:12:01:01&quot;;
3636 linkConfig.Name = &quot;wan&quot;;
3737};
3838</programlisting>
nixos/doc/manual/from_md/development/activation-script.section.xmldeleted−150
@@ -1,150 +0,0 @@
1−<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-activation-script">
2− <title>Activation script</title>
3− <para>
4− The activation script is a bash script called to activate the new
5− configuration which resides in a NixOS system in
6− <literal>$out/activate</literal>. Since its contents depend on your
7− system configuration, the contents may differ. This chapter explains
8− how the script works in general and some common NixOS snippets.
9− Please be aware that the script is executed on every boot and system
10− switch, so tasks that can be performed in other places should be
11− performed there (for example letting a directory of a service be
12− created by systemd using mechanisms like
13− <literal>StateDirectory</literal>,
14− <literal>CacheDirectory</literal>, … or if that’s not possible using
15− <literal>preStart</literal> of the service).
16− </para>
17− <para>
18− Activation scripts are defined as snippets using
19− <xref linkend="opt-system.activationScripts" />. They can either be
20− a simple multiline string or an attribute set that can depend on
21− other snippets. The builder for the activation script will take
22− these dependencies into account and order the snippets accordingly.
23− As a simple example:
24− </para>
25− <programlisting language="bash">
26−system.activationScripts.my-activation-script = {
27− deps = [ &quot;etc&quot; ];
28− # supportsDryActivation = true;
29− text = ''
30− echo &quot;Hallo i bims&quot;
31− '';
32−};
33−</programlisting>
34− <para>
35− This example creates an activation script snippet that is run after
36− the <literal>etc</literal> snippet. The special variable
37− <literal>supportsDryActivation</literal> can be set so the snippet
38− is also run when <literal>nixos-rebuild dry-activate</literal> is
39− run. To differentiate between real and dry activation, the
40− <literal>$NIXOS_ACTION</literal> environment variable can be read
41− which is set to <literal>dry-activate</literal> when a dry
42− activation is done.
43− </para>
44− <para>
45− An activation script can write to special files instructing
46− <literal>switch-to-configuration</literal> to restart/reload units.
47− The script will take these requests into account and will
48− incorperate the unit configuration as described above. This means
49− that the activation script will <quote>fake</quote> a modified unit
50− file and <literal>switch-to-configuration</literal> will act
51− accordingly. By doing so, configuration like
52− <link linkend="opt-systemd.services">systemd.services.&lt;name&gt;.restartIfChanged</link>
53− is respected. Since the activation script is run
54− <emphasis role="strong">after</emphasis> services are already
55− stopped,
56− <link linkend="opt-systemd.services">systemd.services.&lt;name&gt;.stopIfChanged</link>
57− cannot be taken into account anymore and the unit is always
58− restarted instead of being stopped and started afterwards.
59− </para>
60− <para>
61− The files that can be written to are
62− <literal>/run/nixos/activation-restart-list</literal> and
63− <literal>/run/nixos/activation-reload-list</literal> with their
64− respective counterparts for dry activation being
65− <literal>/run/nixos/dry-activation-restart-list</literal> and
66− <literal>/run/nixos/dry-activation-reload-list</literal>. Those
67− files can contain newline-separated lists of unit names where
68− duplicates are being ignored. These files are not create
69− automatically and activation scripts must take the possiblility into
70− account that they have to create them first.
71− </para>
72− <section xml:id="sec-activation-script-nixos-snippets">
73− <title>NixOS snippets</title>
74− <para>
75− There are some snippets NixOS enables by default because disabling
76− them would most likely break you system. This section lists a few
77− of them and what they do:
78− </para>
79− <itemizedlist spacing="compact">
80− <listitem>
81− <para>
82− <literal>binsh</literal> creates <literal>/bin/sh</literal>
83− which points to the runtime shell
84− </para>
85− </listitem>
86− <listitem>
87− <para>
88− <literal>etc</literal> sets up the contents of
89− <literal>/etc</literal>, this includes systemd units and
90− excludes <literal>/etc/passwd</literal>,
91− <literal>/etc/group</literal>, and
92− <literal>/etc/shadow</literal> (which are managed by the
93− <literal>users</literal> snippet)
94− </para>
95− </listitem>
96− <listitem>
97− <para>
98− <literal>hostname</literal> sets the system’s hostname in the
99− kernel (not in <literal>/etc</literal>)
100− </para>
101− </listitem>
102− <listitem>
103− <para>
104− <literal>modprobe</literal> sets the path to the
105− <literal>modprobe</literal> binary for module auto-loading
106− </para>
107− </listitem>
108− <listitem>
109− <para>
110− <literal>nix</literal> prepares the nix store and adds a
111− default initial channel
112− </para>
113− </listitem>
114− <listitem>
115− <para>
116− <literal>specialfs</literal> is responsible for mounting
117− filesystems like <literal>/proc</literal> and
118− <literal>sys</literal>
119− </para>
120− </listitem>
121− <listitem>
122− <para>
123− <literal>users</literal> creates and removes users and groups
124− by managing <literal>/etc/passwd</literal>,
125− <literal>/etc/group</literal> and
126− <literal>/etc/shadow</literal>. This also creates home
127− directories
128− </para>
129− </listitem>
130− <listitem>
131− <para>
132− <literal>usrbinenv</literal> creates
133− <literal>/usr/bin/env</literal>
134− </para>
135− </listitem>
136− <listitem>
137− <para>
138− <literal>var</literal> creates some directories in
139− <literal>/var</literal> that are not service-specific
140− </para>
141− </listitem>
142− <listitem>
143− <para>
144− <literal>wrappers</literal> creates setuid wrappers like
145− <literal>ping</literal> and <literal>sudo</literal>
146− </para>
147− </listitem>
148− </itemizedlist>
149− </section>
150−</section>
nixos/doc/manual/from_md/development/building-nixos.chapter.xmlnew file+72
@@ -0,0 +1,72 @@
1+<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-building-image">
2+ <title>Building a NixOS (Live) ISO</title>
3+ <para>
4+ Default live installer configurations are available inside
5+ <literal>nixos/modules/installer/cd-dvd</literal>. For building
6+ other system images,
7+ <link xlink:href="https://github.com/nix-community/nixos-generators">nixos-generators</link>
8+ is a good place to start looking at.
9+ </para>
10+ <para>
11+ You have two options:
12+ </para>
13+ <itemizedlist spacing="compact">
14+ <listitem>
15+ <para>
16+ Use any of those default configurations as is
17+ </para>
18+ </listitem>
19+ <listitem>
20+ <para>
21+ Combine them with (any of) your host config(s)
22+ </para>
23+ </listitem>
24+ </itemizedlist>
25+ <para>
26+ System images, such as the live installer ones, know how to enforce
27+ configuration settings on wich they immediately depend in order to
28+ work correctly.
29+ </para>
30+ <para>
31+ However, if you are confident, you can opt to override those
32+ enforced values with <literal>mkForce</literal>.
33+ </para>
34+ <section xml:id="sec-building-image-instructions">
35+ <title>Practical Instructions</title>
36+ <programlisting>
37+$ git clone https://github.com/NixOS/nixpkgs.git
38+$ cd nixpkgs/nixos
39+$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-minimal.nix default.nix
40+</programlisting>
41+ <para>
42+ To check the content of an ISO image, mount it like so:
43+ </para>
44+ <programlisting>
45+# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
46+</programlisting>
47+ </section>
48+ <section xml:id="sec-building-image-tech-notes">
49+ <title>Technical Notes</title>
50+ <para>
51+ The config value enforcement is implemented via
52+ <literal>mkImageMediaOverride = mkOverride 60;</literal> and
53+ therefore primes over simple value assignments, but also yields to
54+ <literal>mkForce</literal>.
55+ </para>
56+ <para>
57+ This property allows image designers to implement in semantically
58+ correct ways those configuration values upon which the correct
59+ functioning of the image depends.
60+ </para>
61+ <para>
62+ For example, the iso base image overrides those file systems which
63+ it needs at a minimum for correct functioning, while the installer
64+ base image overrides the entire file system layout because there
65+ can’t be any other guarantees on a live medium than those given by
66+ the live medium itself. The latter is especially true befor
67+ formatting the target block device(s). On the other hand, the
68+ netboot iso only overrides its minimum dependencies since netboot
69+ images are always made-to-target.
70+ </para>
71+ </section>
72+</chapter>
nixos/doc/manual/from_md/development/meta-attributes.section.xml+2−42
@@ -8,8 +8,8 @@
88 <para>
99 <literal>meta</literal> is a top level attribute like
1010 <literal>options</literal> and <literal>config</literal>. Available
11− meta-attributes are <literal>maintainers</literal>,
12− <literal>doc</literal>, and <literal>buildDocsInSandbox</literal>.
11+ meta-attributes are <literal>maintainers</literal> and
12+ <literal>doc</literal>.
1313 </para>
1414 <para>
1515 Each of the meta-attributes must be defined at most once per module
@@ -29,7 +29,6 @@
2929 meta = {
3030 maintainers = with lib.maintainers; [ ericsagnes ];
3131 doc = ./default.xml;
32− buildDocsInSandbox = true;
3332 };
3433}
3534</programlisting>
@@ -52,44 +51,5 @@
5251$ nix-build nixos/release.nix -A manual.x86_64-linux
5352</programlisting>
5453 </listitem>
55− <listitem>
56− <para>
57− <literal>buildDocsInSandbox</literal> indicates whether the
58− option documentation for the module can be built in a derivation
59− sandbox. This option is currently only honored for modules
60− shipped by nixpkgs. User modules and modules taken from
61− <literal>NIXOS_EXTRA_MODULE_PATH</literal> are always built
62− outside of the sandbox, as has been the case in previous
63− releases.
64− </para>
65− <para>
66− Building NixOS option documentation in a sandbox allows caching
67− of the built documentation, which greatly decreases the amount
68− of time needed to evaluate a system configuration that has NixOS
69− documentation enabled. The sandbox also restricts which
70− attributes may be referenced by documentation attributes (such
71− as option descriptions) to the <literal>options</literal> and
72− <literal>lib</literal> module arguments and the
73− <literal>pkgs.formats</literal> attribute of the
74− <literal>pkgs</literal> argument, <literal>config</literal> and
75− the rest of <literal>pkgs</literal> are disallowed and will
76− cause doc build failures when used. This restriction is
77− necessary because we cannot reproduce the full nixpkgs
78− instantiation with configuration and overlays from a system
79− configuration inside the sandbox. The <literal>options</literal>
80− argument only includes options of modules that are also built
81− inside the sandbox, referencing an option of a module that isn’t
82− built in the sandbox is also forbidden.
83− </para>
84− <para>
85− The default is <literal>true</literal> and should usually not be
86− changed; set it to <literal>false</literal> only if the module
87− requires access to <literal>pkgs</literal> in its documentation
88− (e.g. because it loads information from a linked package to
89− build an option type) or if its documentation depends on other
90− modules that also aren’t sandboxed (e.g. by using types defined
91− in the other module).
92− </para>
93− </listitem>
9454 </itemizedlist>
9555</section>
nixos/doc/manual/from_md/development/option-declarations.section.xml+106−212
@@ -38,11 +38,9 @@ options = {
3838 <listitem>
3939 <para>
4040 The type of the option (see
41− <xref linkend="sec-option-types" />). This argument is
42− mandatory for nixpkgs modules. Setting this is highly
43− recommended for the sake of documentation and type checking.
44− In case it is not set, a fallback type with unspecified
45− behavior is used.
41+ <xref linkend="sec-option-types" />). It may be omitted, but
42+ that’s not advisable since it may lead to errors that are hard
43+ to diagnose.
4644 </para>
4745 </listitem>
4846 </varlistentry>
@@ -99,229 +97,125 @@ options = {
9997 </listitem>
10098 </varlistentry>
10199 </variablelist>
102− <section xml:id="sec-option-declarations-util">
103− <title>Utility functions for common option patterns</title>
104− <section xml:id="sec-option-declarations-util-mkEnableOption">
105− <title><literal>mkEnableOption</literal></title>
106− <para>
107− Creates an Option attribute set for a boolean value option i.e
108− an option to be toggled on or off.
109− </para>
110− <para>
111− This function takes a single string argument, the name of the
112− thing to be toggled.
113− </para>
114− <para>
115− The option’s description is <quote>Whether to enable
116− &lt;name&gt;.</quote>.
117− </para>
118− <para>
119− For example:
120− </para>
121− <anchor xml:id="ex-options-declarations-util-mkEnableOption-magic" />
122− <programlisting language="bash">
123−lib.mkEnableOption &quot;magic&quot;
124−# is like
125−lib.mkOption {
126− type = lib.types.bool;
127− default = false;
128− example = true;
129− description = &quot;Whether to enable magic.&quot;;
130−}
131−</programlisting>
132− <section xml:id="sec-option-declarations-util-mkPackageOption">
133− <title><literal>mkPackageOption</literal></title>
134− <para>
135− Usage:
136− </para>
137− <programlisting language="bash">
138−mkPackageOption pkgs &quot;name&quot; { default = [ &quot;path&quot; &quot;in&quot; &quot;pkgs&quot; ]; example = &quot;literal example&quot;; }
139−</programlisting>
140− <para>
141− Creates an Option attribute set for an option that specifies
142− the package a module should use for some purpose.
143− </para>
144− <para>
145− <emphasis role="strong">Note</emphasis>: You shouldn’t
146− necessarily make package options for all of your modules. You
147− can always overwrite a specific package throughout nixpkgs by
148− using
149− <link xlink:href="https://nixos.org/manual/nixpkgs/stable/#chap-overlays">nixpkgs
150− overlays</link>.
151− </para>
152− <para>
153− The default package is specified as a list of strings
154− representing its attribute path in nixpkgs. Because of this,
155− you need to pass nixpkgs itself as the first argument.
156− </para>
157− <para>
158− The second argument is the name of the option, used in the
159− description <quote>The &lt;name&gt; package to use.</quote>.
160− You can also pass an example value, either a literal string or
161− a package’s attribute path.
162− </para>
100+ <section xml:id="sec-option-declarations-eot">
101+ <title>Extensible Option Types</title>
102+ <para>
103+ Extensible option types is a feature that allow to extend certain
104+ types declaration through multiple module files. This feature only
105+ work with a restricted set of types, namely
106+ <literal>enum</literal> and <literal>submodules</literal> and any
107+ composed forms of them.
108+ </para>
109+ <para>
110+ Extensible option types can be used for <literal>enum</literal>
111+ options that affects multiple modules, or as an alternative to
112+ related <literal>enable</literal> options.
113+ </para>
114+ <para>
115+ As an example, we will take the case of display managers. There is
116+ a central display manager module for generic display manager
117+ options and a module file per display manager backend (sddm, gdm
118+ ...).
119+ </para>
120+ <para>
121+ There are two approach to this module structure:
122+ </para>
123+ <itemizedlist>
124+ <listitem>
163125 <para>
164− You can omit the default path if the name of the option is
165− also attribute path in nixpkgs.
126+ Managing the display managers independently by adding an
127+ enable option to every display manager module backend. (NixOS)
166128 </para>
167− <anchor xml:id="ex-options-declarations-util-mkPackageOption" />
129+ </listitem>
130+ <listitem>
168131 <para>
169− Examples:
132+ Managing the display managers in the central module by adding
133+ an option to select which display manager backend to use.
170134 </para>
171− <anchor xml:id="ex-options-declarations-util-mkPackageOption-hello" />
172− <programlisting language="bash">
173−lib.mkPackageOption pkgs &quot;hello&quot; { }
174−# is like
175−lib.mkOption {
176− type = lib.types.package;
177− default = pkgs.hello;
178− defaultText = lib.literalExpression &quot;pkgs.hello&quot;;
179− description = &quot;The hello package to use.&quot;;
180−}
181−</programlisting>
182− <anchor xml:id="ex-options-declarations-util-mkPackageOption-ghc" />
183− <programlisting language="bash">
184−lib.mkPackageOption pkgs &quot;GHC&quot; {
185− default = [ &quot;ghc&quot; ];
186− example = &quot;pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])&quot;;
187−}
188−# is like
189−lib.mkOption {
190− type = lib.types.package;
191− default = pkgs.ghc;
192− defaultText = lib.literalExpression &quot;pkgs.ghc&quot;;
193− example = lib.literalExpression &quot;pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])&quot;;
194− description = &quot;The GHC package to use.&quot;;
195−}
196−</programlisting>
197− <section xml:id="sec-option-declarations-eot">
198− <title>Extensible Option Types</title>
199− <para>
200− Extensible option types is a feature that allow to extend
201− certain types declaration through multiple module files.
202− This feature only work with a restricted set of types,
203− namely <literal>enum</literal> and
204− <literal>submodules</literal> and any composed forms of
205− them.
206− </para>
207− <para>
208− Extensible option types can be used for
209− <literal>enum</literal> options that affects multiple
210− modules, or as an alternative to related
211− <literal>enable</literal> options.
212− </para>
213− <para>
214− As an example, we will take the case of display managers.
215− There is a central display manager module for generic
216− display manager options and a module file per display
217− manager backend (sddm, gdm ...).
218− </para>
219− <para>
220− There are two approaches we could take with this module
221− structure:
222− </para>
223− <itemizedlist>
224− <listitem>
225− <para>
226− Configuring the display managers independently by adding
227− an enable option to every display manager module
228− backend. (NixOS)
229− </para>
230− </listitem>
231− <listitem>
232− <para>
233− Configuring the display managers in the central module
234− by adding an option to select which display manager
235− backend to use.
236− </para>
237− </listitem>
238− </itemizedlist>
239− <para>
240− Both approaches have problems.
241− </para>
242− <para>
243− Making backends independent can quickly become hard to
244− manage. For display managers, there can only be one enabled
245− at a time, but the type system cannot enforce this
246− restriction as there is no relation between each backend’s
247− <literal>enable</literal> option. As a result, this
248− restriction has to be done explicitly by adding assertions
249− in each display manager backend module.
250− </para>
251− <para>
252− On the other hand, managing the display manager backends in
253− the central module will require changing the central module
254− option every time a new backend is added or removed.
255− </para>
256− <para>
257− By using extensible option types, it is possible to create a
258− placeholder option in the central module
259− (<link linkend="ex-option-declaration-eot-service">Example:
260− Extensible type placeholder in the service module</link>),
261− and to extend it in each backend module
262− (<link linkend="ex-option-declaration-eot-backend-gdm">Example:
263− Extending
264− <literal>services.xserver.displayManager.enable</literal> in
265− the <literal>gdm</literal> module</link>,
266− <link linkend="ex-option-declaration-eot-backend-sddm">Example:
267− Extending
268− <literal>services.xserver.displayManager.enable</literal> in
269− the <literal>sddm</literal> module</link>).
270− </para>
271− <para>
272− As a result, <literal>displayManager.enable</literal> option
273− values can be added without changing the main service module
274− file and the type system automatically enforces that there
275− can only be a single display manager enabled.
276− </para>
277− <anchor xml:id="ex-option-declaration-eot-service" />
278− <para>
279− <emphasis role="strong">Example: Extensible type placeholder
280− in the service module</emphasis>
281− </para>
282− <programlisting language="bash">
135+ </listitem>
136+ </itemizedlist>
137+ <para>
138+ Both approaches have problems.
139+ </para>
140+ <para>
141+ Making backends independent can quickly become hard to manage. For
142+ display managers, there can be only one enabled at a time, but the
143+ type system can not enforce this restriction as there is no
144+ relation between each backend <literal>enable</literal> option. As
145+ a result, this restriction has to be done explicitely by adding
146+ assertions in each display manager backend module.
147+ </para>
148+ <para>
149+ On the other hand, managing the display managers backends in the
150+ central module will require to change the central module option
151+ every time a new backend is added or removed.
152+ </para>
153+ <para>
154+ By using extensible option types, it is possible to create a
155+ placeholder option in the central module
156+ (<link linkend="ex-option-declaration-eot-service">Example:
157+ Extensible type placeholder in the service module</link>), and to
158+ extend it in each backend module
159+ (<link linkend="ex-option-declaration-eot-backend-gdm">Example:
160+ Extending
161+ <literal>services.xserver.displayManager.enable</literal> in the
162+ <literal>gdm</literal> module</link>,
163+ <link linkend="ex-option-declaration-eot-backend-sddm">Example:
164+ Extending
165+ <literal>services.xserver.displayManager.enable</literal> in the
166+ <literal>sddm</literal> module</link>).
167+ </para>
168+ <para>
169+ As a result, <literal>displayManager.enable</literal> option
170+ values can be added without changing the main service module file
171+ and the type system automatically enforce that there can only be a
172+ single display manager enabled.
173+ </para>
174+ <anchor xml:id="ex-option-declaration-eot-service" />
175+ <para>
176+ <emphasis role="strong">Example: Extensible type placeholder in
177+ the service module</emphasis>
178+ </para>
179+ <programlisting language="bash">
283180services.xserver.displayManager.enable = mkOption {
284181 description = &quot;Display manager to use&quot;;
285182 type = with types; nullOr (enum [ ]);
286183};
287184</programlisting>
288− <anchor xml:id="ex-option-declaration-eot-backend-gdm" />
289− <para>
290− <emphasis role="strong">Example: Extending
291− <literal>services.xserver.displayManager.enable</literal> in
292− the <literal>gdm</literal> module</emphasis>
293− </para>
294− <programlisting language="bash">
185+ <anchor xml:id="ex-option-declaration-eot-backend-gdm" />
186+ <para>
187+ <emphasis role="strong">Example: Extending
188+ <literal>services.xserver.displayManager.enable</literal> in the
189+ <literal>gdm</literal> module</emphasis>
190+ </para>
191+ <programlisting language="bash">
295192services.xserver.displayManager.enable = mkOption {
296193 type = with types; nullOr (enum [ &quot;gdm&quot; ]);
297194};
298195</programlisting>
299− <anchor xml:id="ex-option-declaration-eot-backend-sddm" />
300− <para>
301− <emphasis role="strong">Example: Extending
302− <literal>services.xserver.displayManager.enable</literal> in
303− the <literal>sddm</literal> module</emphasis>
304− </para>
305− <programlisting language="bash">
196+ <anchor xml:id="ex-option-declaration-eot-backend-sddm" />
197+ <para>
198+ <emphasis role="strong">Example: Extending
199+ <literal>services.xserver.displayManager.enable</literal> in the
200+ <literal>sddm</literal> module</emphasis>
201+ </para>
202+ <programlisting language="bash">
306203services.xserver.displayManager.enable = mkOption {
307204 type = with types; nullOr (enum [ &quot;sddm&quot; ]);
308205};
309206</programlisting>
310− <para>
311− The placeholder declaration is a standard
312− <literal>mkOption</literal> declaration, but it is important
313− that extensible option declarations only use the
314− <literal>type</literal> argument.
315− </para>
316− <para>
317− Extensible option types work with any of the composed
318− variants of <literal>enum</literal> such as
319− <literal>with types; nullOr (enum [ &quot;foo&quot; &quot;bar&quot; ])</literal>
320− or
321− <literal>with types; listOf (enum [ &quot;foo&quot; &quot;bar&quot; ])</literal>.
322− </para>
323− </section>
324− </section>
325− </section>
207+ <para>
208+ The placeholder declaration is a standard
209+ <literal>mkOption</literal> declaration, but it is important that
210+ extensible option declarations only use the
211+ <literal>type</literal> argument.
212+ </para>
213+ <para>
214+ Extensible option types work with any of the composed variants of
215+ <literal>enum</literal> such as
216+ <literal>with types; nullOr (enum [ &quot;foo&quot; &quot;bar&quot; ])</literal>
217+ or
218+ <literal>with types; listOf (enum [ &quot;foo&quot; &quot;bar&quot; ])</literal>.
219+ </para>
326220 </section>
327221</section>
nixos/doc/manual/from_md/development/option-types.section.xml+5−56
@@ -30,10 +30,10 @@
3030 </term>
3131 <listitem>
3232 <para>
33− A filesystem path is anything that starts with a slash when
34− coerced to a string. Even if derivations can be considered
35− as paths, the more specific <literal>types.package</literal>
36− should be preferred.
33+ A filesystem path, defined as anything that when coerced to
34+ a string starts with a slash. Even if derivations can be
35+ considered as path, the more specific
36+ <literal>types.package</literal> should be preferred.
3737 </para>
3838 </listitem>
3939 </varlistentry>
@@ -43,9 +43,7 @@
4343 </term>
4444 <listitem>
4545 <para>
46− A top-level store path. This can be an attribute set
47− pointing to a store path, like a derivation or a flake
48− input.
46+ A derivation or a store path.
4947 </para>
5048 </listitem>
5149 </varlistentry>
@@ -94,39 +92,6 @@
9492</programlisting>
9593 </listitem>
9694 </varlistentry>
97− <varlistentry>
98− <term>
99− <literal>types.raw</literal>
100− </term>
101− <listitem>
102− <para>
103− A type which doesn’t do any checking, merging or nested
104− evaluation. It accepts a single arbitrary value that is not
105− recursed into, making it useful for values coming from
106− outside the module system, such as package sets or arbitrary
107− data. Options of this type are still evaluated according to
108− priorities and conditionals, so <literal>mkForce</literal>,
109− <literal>mkIf</literal> and co. still work on the option
110− value itself, but not for any value nested within it. This
111− type should only be used when checking, merging and nested
112− evaluation are not desirable.
113− </para>
114− </listitem>
115− </varlistentry>
116− <varlistentry>
117− <term>
118− <literal>types.optionType</literal>
119− </term>
120− <listitem>
121− <para>
122− The type of an option’s type. Its merging operation ensures
123− that nested options have the correct file location
124− annotated, and that if possible, multiple option definitions
125− are correctly merged together. The main use case is as the
126− type of the <literal>_module.freeformType</literal> option.
127− </para>
128− </listitem>
129− </varlistentry>
13095 <varlistentry>
13196 <term>
13297 <literal>types.attrs</literal>
@@ -531,22 +496,6 @@
531496 </para>
532497 </listitem>
533498 </varlistentry>
534− <varlistentry>
535− <term>
536− <literal>types.unique</literal>
537− <literal>{ message = m }</literal>
538− <emphasis><literal>t</literal></emphasis>
539− </term>
540− <listitem>
541− <para>
542− Ensures that type <emphasis><literal>t</literal></emphasis>
543− cannot be merged. Prints the message
544− <emphasis><literal>m</literal></emphasis>, after the line
545− <literal>The option &lt;option path&gt; is defined multiple times.</literal>
546− and before a list of definition locations.
547− </para>
548− </listitem>
549− </varlistentry>
550499 <varlistentry>
551500 <term>
552501 <literal>types.either</literal>
nixos/doc/manual/from_md/development/running-nixos-tests-interactively.section.xml+9−9
@@ -5,19 +5,19 @@
55 useful when developing or debugging a test:
66 </para>
77 <programlisting>
8−$ nix-build . -A nixosTests.login.driverInteractive
9−$ ./result/bin/nixos-test-driver
10−[...]
11−&gt;&gt;&gt;
8+$ nix-build nixos/tests/login.nix -A driverInteractive
9+$ ./result/bin/nixos-test-driver --interactive
10+starting VDE switch for network 1
11+&gt;
1212</programlisting>
1313 <para>
1414 You can then take any Python statement, e.g.
1515 </para>
1616 <programlisting language="python">
17−&gt;&gt;&gt; start_all()
18−&gt;&gt;&gt; test_script()
19−&gt;&gt;&gt; machine.succeed(&quot;touch /tmp/foo&quot;)
20−&gt;&gt;&gt; print(machine.succeed(&quot;pwd&quot;)) # Show stdout of command
17+&gt; start_all()
18+&gt; test_script()
19+&gt; machine.succeed(&quot;touch /tmp/foo&quot;)
20+&gt; print(machine.succeed(&quot;pwd&quot;)) # Show stdout of command
2121</programlisting>
2222 <para>
2323 The function <literal>test_script</literal> executes the entire test
@@ -30,7 +30,7 @@ $ ./result/bin/nixos-test-driver
3030 the <literal>--keep-vm-state</literal> flag.
3131 </para>
3232 <programlisting>
33−$ ./result/bin/nixos-test-driver --keep-vm-state
33+$ ./result/bin/nixos-test-driver --interactive --keep-vm-state
3434</programlisting>
3535 <para>
3636 The machine state is stored in the
nixos/doc/manual/from_md/development/running-nixos-tests.section.xml+2−2
@@ -26,9 +26,9 @@ machine: QEMU running (pid 8841)
2626 perform a build that starts a QEMU/KVM virtual machine containing a
2727 NixOS system. The virtual machine mounts the Nix store of the host;
2828 this makes VM creation very fast, as no disk image needs to be
29− created. Afterwards, you can view a log of the test:
29+ created. Afterwards, you can view a pretty-printed log of the test:
3030 </para>
3131 <programlisting>
32−$ nix-store --read-log result
32+$ firefox result/log.html
3333</programlisting>
3434</section>
nixos/doc/manual/from_md/development/settings-options.section.xml−136
@@ -53,38 +53,6 @@
5353 <literal>pkgs.formats</literal>:
5454 </para>
5555 <variablelist>
56− <varlistentry>
57− <term>
58− <literal>pkgs.formats.javaProperties</literal> {
59− <emphasis><literal>comment</literal></emphasis> ?
60− <literal>&quot;Generated with Nix&quot;</literal> }
61− </term>
62− <listitem>
63− <para>
64− A function taking an attribute set with values
65− </para>
66− <variablelist>
67− <varlistentry>
68− <term>
69− <literal>comment</literal>
70− </term>
71− <listitem>
72− <para>
73− A string to put at the start of the file in a comment.
74− It can have multiple lines.
75− </para>
76− </listitem>
77− </varlistentry>
78− </variablelist>
79− <para>
80− It returns the <literal>type</literal>:
81− <literal>attrsOf str</literal> and a function
82− <literal>generate</literal> to build a Java
83− <literal>.properties</literal> file, taking care of the
84− correct escaping, etc.
85− </para>
86− </listitem>
87− </varlistentry>
8856 <varlistentry>
8957 <term>
9058 <literal>pkgs.formats.json</literal> { }
@@ -169,97 +137,6 @@
169137 </para>
170138 </listitem>
171139 </varlistentry>
172− <varlistentry>
173− <term>
174− <literal>pkgs.formats.elixirConf { elixir ? pkgs.elixir }</literal>
175− </term>
176− <listitem>
177− <para>
178− A function taking an attribute set with values
179− </para>
180− <variablelist>
181− <varlistentry>
182− <term>
183− <literal>elixir</literal>
184− </term>
185− <listitem>
186− <para>
187− The Elixir package which will be used to format the
188− generated output
189− </para>
190− </listitem>
191− </varlistentry>
192− </variablelist>
193− <para>
194− It returns a set with Elixir-Config-specific attributes
195− <literal>type</literal>, <literal>lib</literal>, and
196− <literal>generate</literal> as specified
197− <link linkend="pkgs-formats-result">below</link>.
198− </para>
199− <para>
200− The <literal>lib</literal> attribute contains functions to
201− be used in settings, for generating special Elixir values:
202− </para>
203− <variablelist>
204− <varlistentry>
205− <term>
206− <literal>mkRaw elixirCode</literal>
207− </term>
208− <listitem>
209− <para>
210− Outputs the given string as raw Elixir code
211− </para>
212− </listitem>
213− </varlistentry>
214− <varlistentry>
215− <term>
216− <literal>mkGetEnv { envVariable, fallback ? null }</literal>
217− </term>
218− <listitem>
219− <para>
220− Makes the configuration fetch an environment variable
221− at runtime
222− </para>
223− </listitem>
224− </varlistentry>
225− <varlistentry>
226− <term>
227− <literal>mkAtom atom</literal>
228− </term>
229− <listitem>
230− <para>
231− Outputs the given string as an Elixir atom, instead of
232− the default Elixir binary string. Note: lowercase
233− atoms still needs to be prefixed with
234− <literal>:</literal>
235− </para>
236− </listitem>
237− </varlistentry>
238− <varlistentry>
239− <term>
240− <literal>mkTuple array</literal>
241− </term>
242− <listitem>
243− <para>
244− Outputs the given array as an Elixir tuple, instead of
245− the default Elixir list
246− </para>
247− </listitem>
248− </varlistentry>
249− <varlistentry>
250− <term>
251− <literal>mkMap attrset</literal>
252− </term>
253− <listitem>
254− <para>
255− Outputs the given attribute set as an Elixir map,
256− instead of the default Elixir keyword list
257− </para>
258− </listitem>
259− </varlistentry>
260− </variablelist>
261− </listitem>
262− </varlistentry>
263140 </variablelist>
264141 <para xml:id="pkgs-formats-result">
265142 These functions all return an attribute set with these values:
@@ -275,19 +152,6 @@
275152 </para>
276153 </listitem>
277154 </varlistentry>
278− <varlistentry>
279− <term>
280− <literal>lib</literal>
281− </term>
282− <listitem>
283− <para>
284− Utility functions for convenience, or special interactions
285− with the format. This attribute is optional. It may contain
286− inside a <literal>types</literal> attribute containing types
287− specific to this format.
288− </para>
289− </listitem>
290− </varlistentry>
291155 <varlistentry>
292156 <term>
293157 <literal>generate</literal>
nixos/doc/manual/from_md/development/unit-handling.section.xmldeleted−131
@@ -1,131 +0,0 @@
1−<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-unit-handling">
2− <title>Unit handling</title>
3− <para>
4− To figure out what units need to be
5− started/stopped/restarted/reloaded, the script first checks the
6− current state of the system, similar to what
7− <literal>systemctl list-units</literal> shows. For each of the
8− units, the script goes through the following checks:
9− </para>
10− <itemizedlist>
11− <listitem>
12− <para>
13− Is the unit file still in the new system? If not,
14− <emphasis role="strong">stop</emphasis> the service unless it
15− sets <literal>X-StopOnRemoval</literal> in the
16− <literal>[Unit]</literal> section to <literal>false</literal>.
17− </para>
18− </listitem>
19− <listitem>
20− <para>
21− Is it a <literal>.target</literal> unit? If so,
22− <emphasis role="strong">start</emphasis> it unless it sets
23− <literal>RefuseManualStart</literal> in the
24− <literal>[Unit]</literal> section to <literal>true</literal> or
25− <literal>X-OnlyManualStart</literal> in the
26− <literal>[Unit]</literal> section to <literal>true</literal>.
27− Also <emphasis role="strong">stop</emphasis> the unit again
28− unless it sets <literal>X-StopOnReconfiguration</literal> to
29− <literal>false</literal>.
30− </para>
31− </listitem>
32− <listitem>
33− <para>
34− Are the contents of the unit files different? They are compared
35− by parsing them and comparing their contents. If they are
36− different but only <literal>X-Reload-Triggers</literal> in the
37− <literal>[Unit]</literal> section is changed,
38− <emphasis role="strong">reload</emphasis> the unit. The NixOS
39− module system allows setting these triggers with the option
40− <link linkend="opt-systemd.services">systemd.services.&lt;name&gt;.reloadTriggers</link>.
41− There are some additional keys in the <literal>[Unit]</literal>
42− section that are ignored as well. If the unit files differ in
43− any way, the following actions are performed:
44− </para>
45− <itemizedlist>
46− <listitem>
47− <para>
48− <literal>.path</literal> and <literal>.slice</literal> units
49− are ignored. There is no need to restart them since changes
50− in their values are applied by systemd when systemd is
51− reloaded.
52− </para>
53− </listitem>
54− <listitem>
55− <para>
56− <literal>.mount</literal> units are
57− <emphasis role="strong">reload</emphasis>ed. These mostly
58− come from the <literal>/etc/fstab</literal> parser.
59− </para>
60− </listitem>
61− <listitem>
62− <para>
63− <literal>.socket</literal> units are currently ignored. This
64− is to be fixed at a later point.
65− </para>
66− </listitem>
67− <listitem>
68− <para>
69− The rest of the units (mostly <literal>.service</literal>
70− units) are then <emphasis role="strong">reload</emphasis>ed
71− if <literal>X-ReloadIfChanged</literal> in the
72− <literal>[Service]</literal> section is set to
73− <literal>true</literal> (exposed via
74− <link linkend="opt-systemd.services">systemd.services.&lt;name&gt;.reloadIfChanged</link>).
75− A little exception is done for units that were deactivated
76− in the meantime, for example because they require a unit
77− that got stopped before. These are
78− <emphasis role="strong">start</emphasis>ed instead of
79− reloaded.
80− </para>
81− </listitem>
82− <listitem>
83− <para>
84− If the reload flag is not set, some more flags decide if the
85− unit is skipped. These flags are
86− <literal>X-RestartIfChanged</literal> in the
87− <literal>[Service]</literal> section (exposed via
88− <link linkend="opt-systemd.services">systemd.services.&lt;name&gt;.restartIfChanged</link>),
89− <literal>RefuseManualStop</literal> in the
90− <literal>[Unit]</literal> section, and
91− <literal>X-OnlyManualStart</literal> in the
92− <literal>[Unit]</literal> section.
93− </para>
94− </listitem>
95− <listitem>
96− <para>
97− Further behavior depends on the unit having
98− <literal>X-StopIfChanged</literal> in the
99− <literal>[Service]</literal> section set to
100− <literal>true</literal> (exposed via
101− <link linkend="opt-systemd.services">systemd.services.&lt;name&gt;.stopIfChanged</link>).
102− This is set to <literal>true</literal> by default and must
103− be explicitly turned off if not wanted. If the flag is
104− enabled, the unit is
105− <emphasis role="strong">stop</emphasis>ped and then
106− <emphasis role="strong">start</emphasis>ed. If not, the unit
107− is <emphasis role="strong">restart</emphasis>ed. The goal of
108− the flag is to make sure that the new unit never runs in the
109− old environment which is still in place before the
110− activation script is run. This behavior is different when
111− the service is socket-activated, as outlined in the
112− following steps.
113− </para>
114− </listitem>
115− <listitem>
116− <para>
117− The last thing that is taken into account is whether the
118− unit is a service and socket-activated. If
119− <literal>X-StopIfChanged</literal> is
120− <emphasis role="strong">not</emphasis> set, the service is
121− <emphasis role="strong">restart</emphasis>ed with the
122− others. If it is set, both the service and the socket are
123− <emphasis role="strong">stop</emphasis>ped and the socket is
124− <emphasis role="strong">start</emphasis>ed, leaving socket
125− activation to start the service when it’s needed.
126− </para>
127− </listitem>
128− </itemizedlist>
129− </listitem>
130− </itemizedlist>
131−</section>
nixos/doc/manual/from_md/development/what-happens-during-a-system-switch.chapter.xmldeleted−122
@@ -1,122 +0,0 @@
1−<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="sec-switching-systems">
2− <title>What happens during a system switch?</title>
3− <para>
4− Running <literal>nixos-rebuild switch</literal> is one of the more
5− common tasks under NixOS. This chapter explains some of the
6− internals of this command to make it simpler for new module
7− developers to configure their units correctly and to make it easier
8− to understand what is happening and why for curious administrators.
9− </para>
10− <para>
11− <literal>nixos-rebuild</literal>, like many deployment solutions,
12− calls <literal>switch-to-configuration</literal> which resides in a
13− NixOS system at <literal>$out/bin/switch-to-configuration</literal>.
14− The script is called with the action that is to be performed like
15− <literal>switch</literal>, <literal>test</literal>,
16− <literal>boot</literal>. There is also the
17− <literal>dry-activate</literal> action which does not really perform
18− the actions but rather prints what it would do if you called it with
19− <literal>test</literal>. This feature can be used to check what
20− service states would be changed if the configuration was switched
21− to.
22− </para>
23− <para>
24− If the action is <literal>switch</literal> or
25− <literal>boot</literal>, the bootloader is updated first so the
26− configuration will be the next one to boot. Unless
27− <literal>NIXOS_NO_SYNC</literal> is set to <literal>1</literal>,
28− <literal>/nix/store</literal> is synced to disk.
29− </para>
30− <para>
31− If the action is <literal>switch</literal> or
32− <literal>test</literal>, the currently running system is inspected
33− and the actions to switch to the new system are calculated. This
34− process takes two data sources into account:
35− <literal>/etc/fstab</literal> and the current systemd status. Mounts
36− and swaps are read from <literal>/etc/fstab</literal> and the
37− corresponding actions are generated. If a new mount is added, for
38− example, the proper <literal>.mount</literal> unit is marked to be
39− started. The current systemd state is inspected, the difference
40− between the current system and the desired configuration is
41− calculated and actions are generated to get to this state. There are
42− a lot of nuances that can be controlled by the units which are
43− explained here.
44− </para>
45− <para>
46− After calculating what should be done, the actions are carried out.
47− The order of actions is always the same:
48− </para>
49− <itemizedlist spacing="compact">
50− <listitem>
51− <para>
52− Stop units (<literal>systemctl stop</literal>)
53− </para>
54− </listitem>
55− <listitem>
56− <para>
57− Run activation script (<literal>$out/activate</literal>)
58− </para>
59− </listitem>
60− <listitem>
61− <para>
62− See if the activation script requested more units to restart
63− </para>
64− </listitem>
65− <listitem>
66− <para>
67− Restart systemd if needed
68− (<literal>systemd daemon-reexec</literal>)
69− </para>
70− </listitem>
71− <listitem>
72− <para>
73− Forget about the failed state of units
74− (<literal>systemctl reset-failed</literal>)
75− </para>
76− </listitem>
77− <listitem>
78− <para>
79− Reload systemd (<literal>systemctl daemon-reload</literal>)
80− </para>
81− </listitem>
82− <listitem>
83− <para>
84− Reload systemd user instances
85− (<literal>systemctl --user daemon-reload</literal>)
86− </para>
87− </listitem>
88− <listitem>
89− <para>
90− Set up tmpfiles (<literal>systemd-tmpfiles --create</literal>)
91− </para>
92− </listitem>
93− <listitem>
94− <para>
95− Reload units (<literal>systemctl reload</literal>)
96− </para>
97− </listitem>
98− <listitem>
99− <para>
100− Restart units (<literal>systemctl restart</literal>)
101− </para>
102− </listitem>
103− <listitem>
104− <para>
105− Start units (<literal>systemctl start</literal>)
106− </para>
107− </listitem>
108− <listitem>
109− <para>
110− Inspect what changed during these actions and print units that
111− failed and that were newly started
112− </para>
113− </listitem>
114− </itemizedlist>
115− <para>
116− Most of these actions are either self-explaining but some of them
117− have to do with our units or the activation script. For this reason,
118− these topics are explained in the next sections.
119− </para>
120− <xi:include href="unit-handling.section.xml" />
121− <xi:include href="activation-script.section.xml" />
122−</chapter>
nixos/doc/manual/from_md/development/writing-modules.chapter.xml−49
@@ -122,25 +122,6 @@
122122 services) and <literal>systemd.timers</literal> (the list of
123123 commands to be executed periodically by <literal>systemd</literal>).
124124 </para>
125− <para>
126− Care must be taken when writing systemd services using
127− <literal>Exec*</literal> directives. By default systemd performs
128− substitution on <literal>%&lt;char&gt;</literal> specifiers in these
129− directives, expands environment variables from
130− <literal>$FOO</literal> and <literal>${FOO}</literal>, splits
131− arguments on whitespace, and splits commands on
132− <literal>;</literal>. All of these must be escaped to avoid
133− unexpected substitution or splitting when interpolating into an
134− <literal>Exec*</literal> directive, e.g. when using an
135− <literal>extraArgs</literal> option to pass additional arguments to
136− the service. The functions
137− <literal>utils.escapeSystemdExecArg</literal> and
138− <literal>utils.escapeSystemdExecArgs</literal> are provided for
139− this, see <link linkend="exec-escaping-example">Example: Escaping in
140− Exec directives</link> for an example. When using these functions
141− system environment substitution should <emphasis>not</emphasis> be
142− disabled explicitly.
143− </para>
144125 <anchor xml:id="locate-example" />
145126 <para>
146127 <emphasis role="strong">Example: NixOS Module for the
@@ -202,36 +183,6 @@ in {
202183 };
203184 };
204185}
205−</programlisting>
206− <anchor xml:id="exec-escaping-example" />
207− <para>
208− <emphasis role="strong">Example: Escaping in Exec
209− directives</emphasis>
210− </para>
211− <programlisting language="bash">
212−{ config, lib, pkgs, utils, ... }:
213−
214−with lib;
215−
216−let
217− cfg = config.services.echo;
218− echoAll = pkgs.writeScript &quot;echo-all&quot; ''
219− #! ${pkgs.runtimeShell}
220− for s in &quot;$@&quot;; do
221− printf '%s\n' &quot;$s&quot;
222− done
223− '';
224− args = [ &quot;a%Nything&quot; &quot;lang=\${LANG}&quot; &quot;;&quot; &quot;/bin/sh -c date&quot; ];
225−in {
226− systemd.services.echo =
227− { description = &quot;Echo to the journal&quot;;
228− wantedBy = [ &quot;multi-user.target&quot; ];
229− serviceConfig.Type = &quot;oneshot&quot;;
230− serviceConfig.ExecStart = ''
231− ${echoAll} ${utils.escapeSystemdExecArgs args}
232− '';
233− };
234−}
235186</programlisting>
236187 <xi:include href="option-declarations.section.xml" />
237188 <xi:include href="option-types.section.xml" />
nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml+414−521
@@ -6,9 +6,15 @@
66 <programlisting language="bash">
77import ./make-test-python.nix {
88
9− # One or more machines:
9+ # Either the configuration of a single machine:
10+ machine =
11+ { config, pkgs, ... }:
12+ { configuration…
13+ };
14+
15+ # Or a set of machines:
1016 nodes =
11− { machine =
17+ { machine1 =
1218 { config, pkgs, ... }: { … };
1319 machine2 =
1420 { config, pkgs, ... }: { … };
@@ -25,18 +31,18 @@ import ./make-test-python.nix {
2531 The attribute <literal>testScript</literal> is a bit of Python code
2632 that executes the test (described below). During the test, it will
2733 start one or more virtual machines, the configuration of which is
28− described by the attribute <literal>nodes</literal>.
29− </para>
30− <para>
31− An example of a single-node test is
32− <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix"><literal>login.nix</literal></link>.
33− It only needs a single machine to test whether users can log in on
34− the virtual console, whether device ownership is correctly
35− maintained when switching between consoles, and so on. An
36− interesting multi-node test is
37− <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nfs/simple.nix"><literal>nfs/simple.nix</literal></link>.
38− It uses two client nodes to test correct locking across server
39− crashes.
34+ described by the attribute <literal>machine</literal> (if you need
35+ only one machine in your test) or by the attribute
36+ <literal>nodes</literal> (if you need multiple machines). For
37+ instance,
38+ <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix"><literal>login.nix</literal></link>
39+ only needs a single machine to test whether users can log in on the
40+ virtual console, whether device ownership is correctly maintained
41+ when switching between consoles, and so on. On the other hand,
42+ <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nfs/simple.nix"><literal>nfs/simple.nix</literal></link>,
43+ which tests NFS client and server functionality in the Linux kernel
44+ (including whether locks are maintained across server crashes),
45+ requires three machines: a server and two clients.
4046 </para>
4147 <para>
4248 There are a few special NixOS configuration options for test VMs:
@@ -88,8 +94,9 @@ import ./make-test-python.nix {
8894 various actions, such as starting VMs, executing commands in the
8995 VMs, and so on. Each virtual machine is represented as an object
9096 stored in the variable <literal>name</literal> if this is also the
91− identifier of the machine in the declarative config. If you
92− specified a node <literal>nodes.machine</literal>, the following
97+ identifier of the machine in the declarative config. If you didn't
98+ specify multiple machines using the <literal>nodes</literal>
99+ attribute, it is just <literal>machine</literal>. The following
93100 example starts the machine, waits until it has finished booting,
94101 then executes a command and checks that the output is more-or-less
95102 correct:
@@ -101,7 +108,7 @@ if not &quot;Linux&quot; in machine.succeed(&quot;uname&quot;):
101108 raise Exception(&quot;Wrong OS&quot;)
102109</programlisting>
103110 <para>
104− The first line is technically unnecessary; machines are implicitly
111+ The first line is actually unnecessary; machines are implicitly
105112 started when you first execute an action on them (such as
106113 <literal>wait_for_unit</literal> or <literal>succeed</literal>). If
107114 you have multiple machines, you can speed up the test by starting
@@ -110,462 +117,410 @@ if not &quot;Linux&quot; in machine.succeed(&quot;uname&quot;):
110117 <programlisting language="python">
111118start_all()
112119</programlisting>
113− <section xml:id="ssec-machine-objects">
114− <title>Machine objects</title>
115− <para>
116− The following methods are available on machine objects:
117− </para>
118− <variablelist>
119− <varlistentry>
120− <term>
121− <literal>start</literal>
122− </term>
123− <listitem>
124− <para>
125− Start the virtual machine. This method is asynchronous — it
126− does not wait for the machine to finish booting.
127− </para>
128− </listitem>
129− </varlistentry>
130− <varlistentry>
131− <term>
132− <literal>shutdown</literal>
133− </term>
134− <listitem>
135− <para>
136− Shut down the machine, waiting for the VM to exit.
137− </para>
138− </listitem>
139− </varlistentry>
140− <varlistentry>
141− <term>
142− <literal>crash</literal>
143− </term>
144− <listitem>
145− <para>
146− Simulate a sudden power failure, by telling the VM to exit
147− immediately.
148− </para>
149− </listitem>
150− </varlistentry>
151− <varlistentry>
152− <term>
153− <literal>block</literal>
154− </term>
155− <listitem>
156− <para>
157− Simulate unplugging the Ethernet cable that connects the
158− machine to the other machines.
159− </para>
160− </listitem>
161− </varlistentry>
162− <varlistentry>
163− <term>
164− <literal>unblock</literal>
165− </term>
166− <listitem>
167− <para>
168− Undo the effect of <literal>block</literal>.
169− </para>
170− </listitem>
171− </varlistentry>
172− <varlistentry>
173− <term>
174− <literal>screenshot</literal>
175− </term>
176− <listitem>
120+ <para>
121+ The following methods are available on machine objects:
122+ </para>
123+ <variablelist>
124+ <varlistentry>
125+ <term>
126+ <literal>start</literal>
127+ </term>
128+ <listitem>
129+ <para>
130+ Start the virtual machine. This method is asynchronous — it
131+ does not wait for the machine to finish booting.
132+ </para>
133+ </listitem>
134+ </varlistentry>
135+ <varlistentry>
136+ <term>
137+ <literal>shutdown</literal>
138+ </term>
139+ <listitem>
140+ <para>
141+ Shut down the machine, waiting for the VM to exit.
142+ </para>
143+ </listitem>
144+ </varlistentry>
145+ <varlistentry>
146+ <term>
147+ <literal>crash</literal>
148+ </term>
149+ <listitem>
150+ <para>
151+ Simulate a sudden power failure, by telling the VM to exit
152+ immediately.
153+ </para>
154+ </listitem>
155+ </varlistentry>
156+ <varlistentry>
157+ <term>
158+ <literal>block</literal>
159+ </term>
160+ <listitem>
161+ <para>
162+ Simulate unplugging the Ethernet cable that connects the
163+ machine to the other machines.
164+ </para>
165+ </listitem>
166+ </varlistentry>
167+ <varlistentry>
168+ <term>
169+ <literal>unblock</literal>
170+ </term>
171+ <listitem>
172+ <para>
173+ Undo the effect of <literal>block</literal>.
174+ </para>
175+ </listitem>
176+ </varlistentry>
177+ <varlistentry>
178+ <term>
179+ <literal>screenshot</literal>
180+ </term>
181+ <listitem>
182+ <para>
183+ Take a picture of the display of the virtual machine, in PNG
184+ format. The screenshot is linked from the HTML log.
185+ </para>
186+ </listitem>
187+ </varlistentry>
188+ <varlistentry>
189+ <term>
190+ <literal>get_screen_text_variants</literal>
191+ </term>
192+ <listitem>
193+ <para>
194+ Return a list of different interpretations of what is
195+ currently visible on the machine's screen using optical
196+ character recognition. The number and order of the
197+ interpretations is not specified and is subject to change, but
198+ if no exception is raised at least one will be returned.
199+ </para>
200+ <note>
177201 <para>
178− Take a picture of the display of the virtual machine, in PNG
179− format. The screenshot is linked from the HTML log.
202+ This requires passing <literal>enableOCR</literal> to the
203+ test attribute set.
180204 </para>
181− </listitem>
182− </varlistentry>
183− <varlistentry>
184− <term>
185− <literal>get_screen_text_variants</literal>
186− </term>
187− <listitem>
205+ </note>
206+ </listitem>
207+ </varlistentry>
208+ <varlistentry>
209+ <term>
210+ <literal>get_screen_text</literal>
211+ </term>
212+ <listitem>
213+ <para>
214+ Return a textual representation of what is currently visible
215+ on the machine's screen using optical character recognition.
216+ </para>
217+ <note>
188218 <para>
189− Return a list of different interpretations of what is
190− currently visible on the machine's screen using optical
191− character recognition. The number and order of the
192− interpretations is not specified and is subject to change,
193− but if no exception is raised at least one will be returned.
219+ This requires passing <literal>enableOCR</literal> to the
220+ test attribute set.
194221 </para>
195− <note>
222+ </note>
223+ </listitem>
224+ </varlistentry>
225+ <varlistentry>
226+ <term>
227+ <literal>send_monitor_command</literal>
228+ </term>
229+ <listitem>
230+ <para>
231+ Send a command to the QEMU monitor. This is rarely used, but
232+ allows doing stuff such as attaching virtual USB disks to a
233+ running machine.
234+ </para>
235+ </listitem>
236+ </varlistentry>
237+ <varlistentry>
238+ <term>
239+ <literal>send_key</literal>
240+ </term>
241+ <listitem>
242+ <para>
243+ Simulate pressing keys on the virtual keyboard, e.g.,
244+ <literal>send_key(&quot;ctrl-alt-delete&quot;)</literal>.
245+ </para>
246+ </listitem>
247+ </varlistentry>
248+ <varlistentry>
249+ <term>
250+ <literal>send_chars</literal>
251+ </term>
252+ <listitem>
253+ <para>
254+ Simulate typing a sequence of characters on the virtual
255+ keyboard, e.g.,
256+ <literal>send_chars(&quot;foobar\n&quot;)</literal> will type
257+ the string <literal>foobar</literal> followed by the Enter
258+ key.
259+ </para>
260+ </listitem>
261+ </varlistentry>
262+ <varlistentry>
263+ <term>
264+ <literal>execute</literal>
265+ </term>
266+ <listitem>
267+ <para>
268+ Execute a shell command, returning a list
269+ <literal>(status, stdout)</literal>. If the command detaches,
270+ it must close stdout, as <literal>execute</literal> will wait
271+ for this to consume all output reliably. This can be achieved
272+ by redirecting stdout to stderr <literal>&gt;&amp;2</literal>,
273+ to <literal>/dev/console</literal>,
274+ <literal>/dev/null</literal> or a file. Examples of detaching
275+ commands are <literal>sleep 365d &amp;</literal>, where the
276+ shell forks a new process that can write to stdout and
277+ <literal>xclip -i</literal>, where the
278+ <literal>xclip</literal> command itself forks without closing
279+ stdout. Takes an optional parameter
280+ <literal>check_return</literal> that defaults to
281+ <literal>True</literal>. Setting this parameter to
282+ <literal>False</literal> will not check for the return code
283+ and return -1 instead. This can be used for commands that shut
284+ down the VM and would therefore break the pipe that would be
285+ used for retrieving the return code.
286+ </para>
287+ </listitem>
288+ </varlistentry>
289+ <varlistentry>
290+ <term>
291+ <literal>succeed</literal>
292+ </term>
293+ <listitem>
294+ <para>
295+ Execute a shell command, raising an exception if the exit
296+ status is not zero, otherwise returning the standard output.
297+ Commands are run with <literal>set -euo pipefail</literal>
298+ set:
299+ </para>
300+ <itemizedlist>
301+ <listitem>
196302 <para>
197− This requires passing <literal>enableOCR</literal> to the
198− test attribute set.
303+ If several commands are separated by <literal>;</literal>
304+ and one fails, the command as a whole will fail.
199305 </para>
200− </note>
201− </listitem>
202− </varlistentry>
203− <varlistentry>
204− <term>
205− <literal>get_screen_text</literal>
206− </term>
207− <listitem>
208− <para>
209− Return a textual representation of what is currently visible
210− on the machine's screen using optical character recognition.
211− </para>
212− <note>
306+ </listitem>
307+ <listitem>
213308 <para>
214− This requires passing <literal>enableOCR</literal> to the
215− test attribute set.
309+ For pipelines, the last non-zero exit status will be
310+ returned (if there is one, zero will be returned
311+ otherwise).
216312 </para>
217− </note>
218− </listitem>
219− </varlistentry>
220− <varlistentry>
221− <term>
222− <literal>send_monitor_command</literal>
223− </term>
224− <listitem>
225− <para>
226− Send a command to the QEMU monitor. This is rarely used, but
227− allows doing stuff such as attaching virtual USB disks to a
228− running machine.
229− </para>
230− </listitem>
231− </varlistentry>
232− <varlistentry>
233− <term>
234− <literal>send_key</literal>
235− </term>
236− <listitem>
237− <para>
238− Simulate pressing keys on the virtual keyboard, e.g.,
239− <literal>send_key(&quot;ctrl-alt-delete&quot;)</literal>.
240− </para>
241− </listitem>
242− </varlistentry>
243− <varlistentry>
244− <term>
245− <literal>send_chars</literal>
246− </term>
247− <listitem>
248− <para>
249− Simulate typing a sequence of characters on the virtual
250− keyboard, e.g.,
251− <literal>send_chars(&quot;foobar\n&quot;)</literal> will
252− type the string <literal>foobar</literal> followed by the
253− Enter key.
254− </para>
255− </listitem>
256− </varlistentry>
257− <varlistentry>
258− <term>
259− <literal>send_console</literal>
260− </term>
261− <listitem>
262− <para>
263− Send keys to the kernel console. This allows interaction
264− with the systemd emergency mode, for example. Takes a string
265− that is sent, e.g.,
266− <literal>send_console(&quot;\n\nsystemctl default\n&quot;)</literal>.
267− </para>
268− </listitem>
269− </varlistentry>
270− <varlistentry>
271− <term>
272− <literal>execute</literal>
273− </term>
274− <listitem>
275− <para>
276− Execute a shell command, returning a list
277− <literal>(status, stdout)</literal>.
278− </para>
279− <para>
280− Commands are run with <literal>set -euo pipefail</literal>
281− set:
282− </para>
283− <itemizedlist>
284− <listitem>
285− <para>
286− If several commands are separated by
287− <literal>;</literal> and one fails, the command as a
288− whole will fail.
289− </para>
290− </listitem>
291− <listitem>
292− <para>
293− For pipelines, the last non-zero exit status will be
294− returned (if there is one; otherwise zero will be
295− returned).
296− </para>
297− </listitem>
298− <listitem>
299− <para>
300− Dereferencing unset variables fails the command.
301− </para>
302− </listitem>
303− <listitem>
304− <para>
305− It will wait for stdout to be closed.
306− </para>
307− </listitem>
308− </itemizedlist>
309− <para>
310− If the command detaches, it must close stdout, as
311− <literal>execute</literal> will wait for this to consume all
312− output reliably. This can be achieved by redirecting stdout
313− to stderr <literal>&gt;&amp;2</literal>, to
314− <literal>/dev/console</literal>,
315− <literal>/dev/null</literal> or a file. Examples of
316− detaching commands are <literal>sleep 365d &amp;</literal>,
317− where the shell forks a new process that can write to stdout
318− and <literal>xclip -i</literal>, where the
319− <literal>xclip</literal> command itself forks without
320− closing stdout.
321− </para>
322− <para>
323− Takes an optional parameter <literal>check_return</literal>
324− that defaults to <literal>True</literal>. Setting this
325− parameter to <literal>False</literal> will not check for the
326− return code and return -1 instead. This can be used for
327− commands that shut down the VM and would therefore break the
328− pipe that would be used for retrieving the return code.
329− </para>
330− <para>
331− A timeout for the command can be specified (in seconds)
332− using the optional <literal>timeout</literal> parameter,
333− e.g., <literal>execute(cmd, timeout=10)</literal> or
334− <literal>execute(cmd, timeout=None)</literal>. The default
335− is 900 seconds.
336− </para>
337− </listitem>
338− </varlistentry>
339− <varlistentry>
340− <term>
341− <literal>succeed</literal>
342− </term>
343− <listitem>
344− <para>
345− Execute a shell command, raising an exception if the exit
346− status is not zero, otherwise returning the standard output.
347− Similar to <literal>execute</literal>, except that the
348− timeout is <literal>None</literal> by default. See
349− <literal>execute</literal> for details on command execution.
350− </para>
351− </listitem>
352− </varlistentry>
353− <varlistentry>
354− <term>
355− <literal>fail</literal>
356− </term>
357− <listitem>
358− <para>
359− Like <literal>succeed</literal>, but raising an exception if
360− the command returns a zero status.
361− </para>
362− </listitem>
363− </varlistentry>
364− <varlistentry>
365− <term>
366− <literal>wait_until_succeeds</literal>
367− </term>
368− <listitem>
369− <para>
370− Repeat a shell command with 1-second intervals until it
371− succeeds. Has a default timeout of 900 seconds which can be
372− modified, e.g.
373− <literal>wait_until_succeeds(cmd, timeout=10)</literal>. See
374− <literal>execute</literal> for details on command execution.
375− </para>
376− </listitem>
377− </varlistentry>
378− <varlistentry>
379− <term>
380− <literal>wait_until_fails</literal>
381− </term>
382− <listitem>
383− <para>
384− Like <literal>wait_until_succeeds</literal>, but repeating
385− the command until it fails.
386− </para>
387− </listitem>
388− </varlistentry>
389− <varlistentry>
390− <term>
391− <literal>wait_for_unit</literal>
392− </term>
393− <listitem>
394− <para>
395− Wait until the specified systemd unit has reached the
396− <quote>active</quote> state.
397− </para>
398− </listitem>
399− </varlistentry>
400− <varlistentry>
401− <term>
402− <literal>wait_for_file</literal>
403− </term>
404− <listitem>
405− <para>
406− Wait until the specified file exists.
407− </para>
408− </listitem>
409− </varlistentry>
410− <varlistentry>
411− <term>
412− <literal>wait_for_open_port</literal>
413− </term>
414− <listitem>
415− <para>
416− Wait until a process is listening on the given TCP port (on
417− <literal>localhost</literal>, at least).
418− </para>
419− </listitem>
420− </varlistentry>
421− <varlistentry>
422− <term>
423− <literal>wait_for_closed_port</literal>
424− </term>
425− <listitem>
426− <para>
427− Wait until nobody is listening on the given TCP port.
428− </para>
429− </listitem>
430− </varlistentry>
431− <varlistentry>
432− <term>
433− <literal>wait_for_x</literal>
434− </term>
435− <listitem>
436− <para>
437− Wait until the X11 server is accepting connections.
438− </para>
439− </listitem>
440− </varlistentry>
441− <varlistentry>
442− <term>
443− <literal>wait_for_text</literal>
444− </term>
445− <listitem>
446− <para>
447− Wait until the supplied regular expressions matches the
448− textual contents of the screen by using optical character
449− recognition (see <literal>get_screen_text</literal> and
450− <literal>get_screen_text_variants</literal>).
451− </para>
452− <note>
313+ </listitem>
314+ <listitem>
453315 <para>
454− This requires passing <literal>enableOCR</literal> to the
455− test attribute set.
316+ Dereferencing unset variables fail the command.
456317 </para>
457− </note>
458− </listitem>
459− </varlistentry>
460− <varlistentry>
461− <term>
462− <literal>wait_for_console_text</literal>
463− </term>
464− <listitem>
465− <para>
466− Wait until the supplied regular expressions match a line of
467− the serial console output. This method is useful when OCR is
468− not possibile or accurate enough.
469− </para>
470− </listitem>
471− </varlistentry>
472− <varlistentry>
473− <term>
474− <literal>wait_for_window</literal>
475− </term>
476− <listitem>
477− <para>
478− Wait until an X11 window has appeared whose name matches the
479− given regular expression, e.g.,
480− <literal>wait_for_window(&quot;Terminal&quot;)</literal>.
481− </para>
482− </listitem>
483− </varlistentry>
484− <varlistentry>
485− <term>
486− <literal>copy_from_host</literal>
487− </term>
488− <listitem>
489− <para>
490− Copies a file from host to machine, e.g.,
491− <literal>copy_from_host(&quot;myfile&quot;, &quot;/etc/my/important/file&quot;)</literal>.
492− </para>
493− <para>
494− The first argument is the file on the host. The file needs
495− to be accessible while building the nix derivation. The
496− second argument is the location of the file on the machine.
497− </para>
498− </listitem>
499− </varlistentry>
500− <varlistentry>
501− <term>
502− <literal>systemctl</literal>
503− </term>
504− <listitem>
318+ </listitem>
319+ <listitem>
320+ <para>
321+ It will wait for stdout to be closed. See
322+ <literal>execute</literal> for the implications.
323+ </para>
324+ </listitem>
325+ </itemizedlist>
326+ </listitem>
327+ </varlistentry>
328+ <varlistentry>
329+ <term>
330+ <literal>fail</literal>
331+ </term>
332+ <listitem>
333+ <para>
334+ Like <literal>succeed</literal>, but raising an exception if
335+ the command returns a zero status.
336+ </para>
337+ </listitem>
338+ </varlistentry>
339+ <varlistentry>
340+ <term>
341+ <literal>wait_until_succeeds</literal>
342+ </term>
343+ <listitem>
344+ <para>
345+ Repeat a shell command with 1-second intervals until it
346+ succeeds.
347+ </para>
348+ </listitem>
349+ </varlistentry>
350+ <varlistentry>
351+ <term>
352+ <literal>wait_until_fails</literal>
353+ </term>
354+ <listitem>
355+ <para>
356+ Repeat a shell command with 1-second intervals until it fails.
357+ </para>
358+ </listitem>
359+ </varlistentry>
360+ <varlistentry>
361+ <term>
362+ <literal>wait_for_unit</literal>
363+ </term>
364+ <listitem>
365+ <para>
366+ Wait until the specified systemd unit has reached the
367+ <quote>active</quote> state.
368+ </para>
369+ </listitem>
370+ </varlistentry>
371+ <varlistentry>
372+ <term>
373+ <literal>wait_for_file</literal>
374+ </term>
375+ <listitem>
376+ <para>
377+ Wait until the specified file exists.
378+ </para>
379+ </listitem>
380+ </varlistentry>
381+ <varlistentry>
382+ <term>
383+ <literal>wait_for_open_port</literal>
384+ </term>
385+ <listitem>
386+ <para>
387+ Wait until a process is listening on the given TCP port (on
388+ <literal>localhost</literal>, at least).
389+ </para>
390+ </listitem>
391+ </varlistentry>
392+ <varlistentry>
393+ <term>
394+ <literal>wait_for_closed_port</literal>
395+ </term>
396+ <listitem>
397+ <para>
398+ Wait until nobody is listening on the given TCP port.
399+ </para>
400+ </listitem>
401+ </varlistentry>
402+ <varlistentry>
403+ <term>
404+ <literal>wait_for_x</literal>
405+ </term>
406+ <listitem>
407+ <para>
408+ Wait until the X11 server is accepting connections.
409+ </para>
410+ </listitem>
411+ </varlistentry>
412+ <varlistentry>
413+ <term>
414+ <literal>wait_for_text</literal>
415+ </term>
416+ <listitem>
417+ <para>
418+ Wait until the supplied regular expressions matches the
419+ textual contents of the screen by using optical character
420+ recognition (see <literal>get_screen_text</literal> and
421+ <literal>get_screen_text_variants</literal>).
422+ </para>
423+ <note>
505424 <para>
506− Runs <literal>systemctl</literal> commands with optional
507− support for <literal>systemctl --user</literal>
425+ This requires passing <literal>enableOCR</literal> to the
426+ test attribute set.
508427 </para>
509− <programlisting language="python">
428+ </note>
429+ </listitem>
430+ </varlistentry>
431+ <varlistentry>
432+ <term>
433+ <literal>wait_for_console_text</literal>
434+ </term>
435+ <listitem>
436+ <para>
437+ Wait until the supplied regular expressions match a line of
438+ the serial console output. This method is useful when OCR is
439+ not possibile or accurate enough.
440+ </para>
441+ </listitem>
442+ </varlistentry>
443+ <varlistentry>
444+ <term>
445+ <literal>wait_for_window</literal>
446+ </term>
447+ <listitem>
448+ <para>
449+ Wait until an X11 window has appeared whose name matches the
450+ given regular expression, e.g.,
451+ <literal>wait_for_window(&quot;Terminal&quot;)</literal>.
452+ </para>
453+ </listitem>
454+ </varlistentry>
455+ <varlistentry>
456+ <term>
457+ <literal>copy_from_host</literal>
458+ </term>
459+ <listitem>
460+ <para>
461+ Copies a file from host to machine, e.g.,
462+ <literal>copy_from_host(&quot;myfile&quot;, &quot;/etc/my/important/file&quot;)</literal>.
463+ </para>
464+ <para>
465+ The first argument is the file on the host. The file needs to
466+ be accessible while building the nix derivation. The second
467+ argument is the location of the file on the machine.
468+ </para>
469+ </listitem>
470+ </varlistentry>
471+ <varlistentry>
472+ <term>
473+ <literal>systemctl</literal>
474+ </term>
475+ <listitem>
476+ <para>
477+ Runs <literal>systemctl</literal> commands with optional
478+ support for <literal>systemctl --user</literal>
479+ </para>
480+ <programlisting language="python">
510481machine.systemctl(&quot;list-jobs --no-pager&quot;) # runs `systemctl list-jobs --no-pager`
511482machine.systemctl(&quot;list-jobs --no-pager&quot;, &quot;any-user&quot;) # spawns a shell for `any-user` and runs `systemctl --user list-jobs --no-pager`
512483</programlisting>
513− </listitem>
514− </varlistentry>
515− <varlistentry>
516− <term>
517− <literal>shell_interact</literal>
518− </term>
519− <listitem>
520− <para>
521− Allows you to directly interact with the guest shell. This
522− should only be used during test development, not in
523− production tests. Killing the interactive session with
524− <literal>Ctrl-d</literal> or <literal>Ctrl-c</literal> also
525− ends the guest session.
526− </para>
527− </listitem>
528− </varlistentry>
529− <varlistentry>
530− <term>
531− <literal>console_interact</literal>
532− </term>
533− <listitem>
534− <para>
535− Allows you to directly interact with QEMU’s stdin. This
536− should only be used during test development, not in
537− production tests. Output from QEMU is only read line-wise.
538− <literal>Ctrl-c</literal> kills QEMU and
539− <literal>Ctrl-d</literal> closes console and returns to the
540− test runner.
541− </para>
542− </listitem>
543− </varlistentry>
544− </variablelist>
545− <para>
546− To test user units declared by
547− <literal>systemd.user.services</literal> the optional
548− <literal>user</literal> argument can be used:
549− </para>
550− <programlisting language="python">
484+ </listitem>
485+ </varlistentry>
486+ <varlistentry>
487+ <term>
488+ <literal>shell_interact</literal>
489+ </term>
490+ <listitem>
491+ <para>
492+ Allows you to directly interact with the guest shell. This
493+ should only be used during test development, not in production
494+ tests. Killing the interactive session with
495+ <literal>Ctrl-d</literal> or <literal>Ctrl-c</literal> also
496+ ends the guest session.
497+ </para>
498+ </listitem>
499+ </varlistentry>
500+ </variablelist>
501+ <para>
502+ To test user units declared by
503+ <literal>systemd.user.services</literal> the optional
504+ <literal>user</literal> argument can be used:
505+ </para>
506+ <programlisting language="python">
551507machine.start()
552508machine.wait_for_x()
553509machine.wait_for_unit(&quot;xautolock.service&quot;, &quot;x-session-user&quot;)
554510</programlisting>
555− <para>
556− This applies to <literal>systemctl</literal>,
557− <literal>get_unit_info</literal>,
558− <literal>wait_for_unit</literal>, <literal>start_job</literal> and
559− <literal>stop_job</literal>.
560− </para>
561− <para>
562− For faster dev cycles it's also possible to disable the
563− code-linters (this shouldn't be commited though):
564− </para>
565− <programlisting language="bash">
511+ <para>
512+ This applies to <literal>systemctl</literal>,
513+ <literal>get_unit_info</literal>, <literal>wait_for_unit</literal>,
514+ <literal>start_job</literal> and <literal>stop_job</literal>.
515+ </para>
516+ <para>
517+ For faster dev cycles it's also possible to disable the code-linters
518+ (this shouldn't be commited though):
519+ </para>
520+ <programlisting language="bash">
566521import ./make-test-python.nix {
567522 skipLint = true;
568− nodes.machine =
523+ machine =
569524 { config, pkgs, ... }:
570525 { configuration…
571526 };
@@ -576,13 +531,13 @@ import ./make-test-python.nix {
576531 '';
577532}
578533</programlisting>
579− <para>
580− This will produce a Nix warning at evaluation time. To fully
581− disable the linter, wrap the test script in comment directives to
582− disable the Black linter directly (again, don't commit this within
583− the Nixpkgs repository):
584− </para>
585− <programlisting language="bash">
534+ <para>
535+ This will produce a Nix warning at evaluation time. To fully disable
536+ the linter, wrap the test script in comment directives to disable
537+ the Black linter directly (again, don't commit this within the
538+ Nixpkgs repository):
539+ </para>
540+ <programlisting language="bash">
586541 testScript =
587542 ''
588543 # fmt: off
@@ -590,66 +545,4 @@ import ./make-test-python.nix {
590545 # fmt: on
591546 '';
592547</programlisting>
593− </section>
594− <section xml:id="ssec-failing-tests-early">
595− <title>Failing tests early</title>
596− <para>
597− To fail tests early when certain invariables are no longer met
598− (instead of waiting for the build to time out), the decorator
599− <literal>polling_condition</literal> is provided. For example, if
600− we are testing a program <literal>foo</literal> that should not
601− quit after being started, we might write the following:
602− </para>
603− <programlisting language="python">
604−@polling_condition
605−def foo_running():
606− machine.succeed(&quot;pgrep -x foo&quot;)
607−
608−
609−machine.succeed(&quot;foo --start&quot;)
610−machine.wait_until_succeeds(&quot;pgrep -x foo&quot;)
611−
612−with foo_running:
613− ... # Put `foo` through its paces
614−</programlisting>
615− <para>
616− <literal>polling_condition</literal> takes the following
617− (optional) arguments:
618− </para>
619− <para>
620− <literal>seconds_interval</literal>
621− </para>
622− <para>
623− : specifies how often the condition should be polled:
624− </para>
625− <programlisting>
626−```py
627−@polling_condition(seconds_interval=10)
628−def foo_running():
629− machine.succeed(&quot;pgrep -x foo&quot;)
630−```
631−</programlisting>
632− <para>
633− <literal>description</literal>
634− </para>
635− <para>
636− : is used in the log when the condition is checked. If this is not
637− provided, the description is pulled from the docstring of the
638− function. These two are therefore equivalent:
639− </para>
640− <programlisting>
641−```py
642−@polling_condition
643−def foo_running():
644− &quot;check that foo is running&quot;
645− machine.succeed(&quot;pgrep -x foo&quot;)
646−```
647−
648−```py
649−@polling_condition(description=&quot;check that foo is running&quot;)
650−def foo_running():
651− machine.succeed(&quot;pgrep -x foo&quot;)
652−```
653−</programlisting>
654− </section>
655548</section>
nixos/doc/manual/from_md/installation/building-nixos.chapter.xmldeleted−106
@@ -1,106 +0,0 @@
1−<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-building-image">
2− <title>Building a NixOS (Live) ISO</title>
3− <para>
4− Default live installer configurations are available inside
5− <literal>nixos/modules/installer/cd-dvd</literal>. For building
6− other system images,
7− <link xlink:href="https://github.com/nix-community/nixos-generators">nixos-generators</link>
8− is a good place to start looking at.
9− </para>
10− <para>
11− You have two options:
12− </para>
13− <itemizedlist spacing="compact">
14− <listitem>
15− <para>
16− Use any of those default configurations as is
17− </para>
18− </listitem>
19− <listitem>
20− <para>
21− Combine them with (any of) your host config(s)
22− </para>
23− </listitem>
24− </itemizedlist>
25− <para>
26− System images, such as the live installer ones, know how to enforce
27− configuration settings on wich they immediately depend in order to
28− work correctly.
29− </para>
30− <para>
31− However, if you are confident, you can opt to override those
32− enforced values with <literal>mkForce</literal>.
33− </para>
34− <section xml:id="sec-building-image-instructions">
35− <title>Practical Instructions</title>
36− <programlisting>
37−$ git clone https://github.com/NixOS/nixpkgs.git
38−$ cd nixpkgs/nixos
39−$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-minimal.nix default.nix
40−</programlisting>
41− <para>
42− To check the content of an ISO image, mount it like so:
43− </para>
44− <programlisting>
45−# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
46−</programlisting>
47− </section>
48− <section xml:id="sec-building-image-drivers">
49− <title>Additional drivers or firmware</title>
50− <para>
51− If you need additional (non-distributable) drivers or firmware in
52− the installer, you might want to extend these configurations.
53− </para>
54− <para>
55− For example, to build the GNOME graphical installer ISO, but with
56− support for certain WiFi adapters present in some MacBooks, you
57− can create the following file at
58− <literal>modules/installer/cd-dvd/installation-cd-graphical-gnome-macbook.nix</literal>:
59− </para>
60− <programlisting language="bash">
61−{ config, ... }:
62−
63−{
64− imports = [ ./installation-cd-graphical-gnome.nix ];
65−
66− boot.initrd.kernelModules = [ &quot;wl&quot; ];
67−
68− boot.kernelModules = [ &quot;kvm-intel&quot; &quot;wl&quot; ];
69− boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
70−}
71−</programlisting>
72− <para>
73− Then build it like in the example above:
74− </para>
75− <programlisting>
76−$ git clone https://github.com/NixOS/nixpkgs.git
77−$ cd nixpkgs/nixos
78−$ export NIXPKGS_ALLOW_UNFREE=1
79−$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-graphical-gnome-macbook.nix default.nix
80−</programlisting>
81− </section>
82− <section xml:id="sec-building-image-tech-notes">
83− <title>Technical Notes</title>
84− <para>
85− The config value enforcement is implemented via
86− <literal>mkImageMediaOverride = mkOverride 60;</literal> and
87− therefore primes over simple value assignments, but also yields to
88− <literal>mkForce</literal>.
89− </para>
90− <para>
91− This property allows image designers to implement in semantically
92− correct ways those configuration values upon which the correct
93− functioning of the image depends.
94− </para>
95− <para>
96− For example, the iso base image overrides those file systems which
97− it needs at a minimum for correct functioning, while the installer
98− base image overrides the entire file system layout because there
99− can’t be any other guarantees on a live medium than those given by
100− the live medium itself. The latter is especially true befor
101− formatting the target block device(s). On the other hand, the
102− netboot iso only overrides its minimum dependencies since netboot
103− images are always made-to-target.
104− </para>
105− </section>
106−</chapter>
nixos/doc/manual/from_md/installation/installing-pxe.section.xml+2−2
@@ -7,11 +7,11 @@
77 <para>
88 These instructions assume that you have an existing PXE or iPXE
99 infrastructure and simply want to add the NixOS installer as another
10− option. To build the necessary files from your current version of
10+ option. To build the necessary files from a recent version of
1111 nixpkgs, you can run:
1212 </para>
1313 <programlisting>
14−nix-build -A netboot.x86_64-linux '&lt;nixpkgs/nixos/release.nix&gt;'
14+nix-build -A netboot.x86_64-linux nixos/release.nix
1515</programlisting>
1616 <para>
1717 This will create a <literal>result</literal> directory containing: *
nixos/doc/manual/from_md/installation/installing-usb.section.xml+1−1
@@ -17,7 +17,7 @@ $ diskutil list
1717[..]
1818$ diskutil unmountDisk diskN
1919Unmount of all volumes on diskN was successful
20−$ sudo dd if=nix.iso of=/dev/rdiskN bs=1M
20+$ sudo dd if=nix.iso of=/dev/rdiskN
2121</programlisting>
2222 <para>
2323 Using the 'raw' <literal>rdiskN</literal> device instead of
nixos/doc/manual/from_md/installation/installing.chapter.xml+7−7
@@ -411,13 +411,6 @@ OK
411411 specify on which disk the GRUB boot loader is to be
412412 installed. Without it, NixOS cannot boot.
413413 </para>
414− <para>
415− If there are other operating systems running on the
416− machine before installing NixOS, the
417− <xref linkend="opt-boot.loader.grub.useOSProber" />
418− option can be set to <literal>true</literal> to
419− automatically add them to the grub menu.
420− </para>
421414 </listitem>
422415 </varlistentry>
423416 <varlistentry>
@@ -443,6 +436,13 @@ OK
443436 </listitem>
444437 </varlistentry>
445438 </variablelist>
439+ <para>
440+ If there are other operating systems running on the machine
441+ before installing NixOS, the
442+ <xref linkend="opt-boot.loader.grub.useOSProber" /> option can
443+ be set to <literal>true</literal> to automatically add them to
444+ the grub menu.
445+ </para>
446446 <para>
447447 If you need to configure networking for your machine the
448448 configuration options are described in
nixos/doc/manual/from_md/installation/upgrading.chapter.xml+8−8
@@ -12,7 +12,7 @@
1212 <listitem>
1313 <para>
1414 <emphasis>Stable channels</emphasis>, such as
15− <link xlink:href="https://nixos.org/channels/nixos-21.11"><literal>nixos-21.11</literal></link>.
15+ <link xlink:href="https://nixos.org/channels/nixos-21.05"><literal>nixos-21.05</literal></link>.
1616 These only get conservative bug fixes and package upgrades. For
1717 instance, a channel update may cause the Linux kernel on your
1818 system to be upgraded from 4.19.34 to 4.19.38 (a minor bug fix),
@@ -33,7 +33,7 @@
3333 <listitem>
3434 <para>
3535 <emphasis>Small channels</emphasis>, such as
36− <link xlink:href="https://nixos.org/channels/nixos-21.11-small"><literal>nixos-21.11-small</literal></link>
36+ <link xlink:href="https://nixos.org/channels/nixos-21.05-small"><literal>nixos-21.05-small</literal></link>
3737 or
3838 <link xlink:href="https://nixos.org/channels/nixos-unstable-small"><literal>nixos-unstable-small</literal></link>.
3939 These are identical to the stable and unstable channels
@@ -60,8 +60,8 @@
6060 <para>
6161 When you first install NixOS, you’re automatically subscribed to the
6262 NixOS channel that corresponds to your installation source. For
63− instance, if you installed from a 21.11 ISO, you will be subscribed
64− to the <literal>nixos-21.11</literal> channel. To see which NixOS
63+ instance, if you installed from a 21.05 ISO, you will be subscribed
64+ to the <literal>nixos-21.05</literal> channel. To see which NixOS
6565 channel you’re subscribed to, run the following as root:
6666 </para>
6767 <programlisting>
@@ -76,17 +76,17 @@ nixos https://nixos.org/channels/nixos-unstable
7676</programlisting>
7777 <para>
7878 (Be sure to include the <literal>nixos</literal> parameter at the
79− end.) For instance, to use the NixOS 21.11 stable channel:
79+ end.) For instance, to use the NixOS 21.05 stable channel:
8080 </para>
8181 <programlisting>
82−# nix-channel --add https://nixos.org/channels/nixos-21.11 nixos
82+# nix-channel --add https://nixos.org/channels/nixos-21.05 nixos
8383</programlisting>
8484 <para>
8585 If you have a server, you may want to use the <quote>small</quote>
8686 channel instead:
8787 </para>
8888 <programlisting>
89−# nix-channel --add https://nixos.org/channels/nixos-21.11-small nixos
89+# nix-channel --add https://nixos.org/channels/nixos-21.05-small nixos
9090</programlisting>
9191 <para>
9292 And if you want to live on the bleeding edge:
@@ -146,7 +146,7 @@ system.autoUpgrade.allowReboot = true;
146146 also specify a channel explicitly, e.g.
147147 </para>
148148 <programlisting language="bash">
149−system.autoUpgrade.channel = https://nixos.org/channels/nixos-21.11;
149+system.autoUpgrade.channel = https://nixos.org/channels/nixos-21.05;
150150</programlisting>
151151 </section>
152152</chapter>
nixos/doc/manual/from_md/release-notes/rl-1803.section.xml−8
@@ -866,14 +866,6 @@
866866 package.
867867 </para>
868868 </listitem>
869− <listitem>
870− <para>
871− The vim/kakoune plugin updater now reads from a CSV file:
872− check
873− <literal>pkgs/applications/editors/vim/plugins/vim-plugin-names</literal>
874− out to see the new format
875− </para>
876− </listitem>
877869 </itemizedlist>
878870 </section>
879871</section>
nixos/doc/manual/from_md/release-notes/rl-2111.section.xml+27−169
@@ -1,5 +1,9 @@
11<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-release-21.11">
2− <title>Release 21.11 (“Porcupine”, 2021/11/30)</title>
2+ <title>Release 21.11 (“Porcupine”, 2021.11/??)</title>
3+ <para>
4+ In addition to numerous new and upgraded packages, this release has
5+ the following highlights:
6+ </para>
37 <itemizedlist spacing="compact">
48 <listitem>
59 <para>
@@ -10,10 +14,6 @@
1014 </itemizedlist>
1115 <section xml:id="sec-release-21.11-highlights">
1216 <title>Highlights</title>
13− <para>
14− In addition to numerous new and upgraded packages, this release
15− has the following highlights:
16− </para>
1717 <itemizedlist>
1818 <listitem>
1919 <para>
@@ -26,36 +26,8 @@
2626 </listitem>
2727 <listitem>
2828 <para>
29− <literal>iptables</literal> is now using
30− <literal>nf_tables</literal> under the hood, by using
31− <literal>iptables-nft</literal>, similar to
32− <link xlink:href="https://wiki.debian.org/nftables#Current_status">Debian</link>
33− and
34− <link xlink:href="https://fedoraproject.org/wiki/Changes/iptables-nft-default">Fedora</link>.
35− This means, <literal>ip[6]tables</literal>,
36− <literal>arptables</literal> and <literal>ebtables</literal>
37− commands will actually show rules from some specific tables in
38− the <literal>nf_tables</literal> kernel subsystem. In case
39− you’re migrating from an older release without rebooting,
40− there might be cases where you end up with iptable rules
41− configured both in the legacy <literal>iptables</literal>
42− kernel backend, as well as in the <literal>nf_tables</literal>
43− backend. This can lead to confusing firewall behaviour. An
44− <literal>iptables-save</literal> after switching will complain
45− about <quote>iptables-legacy tables present</quote>. It’s
46− probably best to reboot after the upgrade, or manually
47− removing all legacy iptables rules (via the
48− <literal>iptables-legacy</literal> package).
49− </para>
50− </listitem>
51− <listitem>
52− <para>
53− systemd got an <literal>nftables</literal> backend, and
54− configures (networkd) rules in their own
55− <literal>io.systemd.*</literal> tables. Check
56− <literal>nft list ruleset</literal> to see these rules, not
57− <literal>iptables-save</literal> (which only shows
58− <literal>iptables</literal>-created rules.
29+ <literal>iptables</literal> now uses
30+ <literal>nf_tables</literal> backend.
5931 </para>
6032 </listitem>
6133 <listitem>
@@ -65,7 +37,7 @@
6537 </listitem>
6638 <listitem>
6739 <para>
68− kops now defaults to 1.21.1, which uses containerd as the
40+ kOps now defaults to 1.21.1, which uses containerd as the
6941 default runtime.
7042 </para>
7143 </listitem>
@@ -112,13 +84,13 @@
11284 </listitem>
11385 <listitem>
11486 <para>
115− Activation scripts can now, optionally, be run during a
116− <literal>nixos-rebuild dry-activate</literal> and can detect
117− the dry activation by reading
118− <literal>$NIXOS_ACTION</literal>. This allows activation
119− scripts to output what they would change if the activation was
120− really run. The users/modules activation script supports this
121− and outputs some of is actions.
87+ Activation scripts can now opt int to be run when running
88+ <literal>nixos-rebuild dry-activate</literal> and detect the
89+ dry activation by reading <literal>$NIXOS_ACTION</literal>.
90+ This allows activation scripts to output what they would
91+ change if the activation was really run. The users/modules
92+ activation script supports this and outputs some of is
93+ actions.
12294 </para>
12395 </listitem>
12496 <listitem>
@@ -200,41 +172,6 @@
200172 </listitem>
201173 </itemizedlist>
202174 </listitem>
203− <listitem>
204− <para>
205− ORY Kratos was updated to version 0.8.0-alpha.3
206− </para>
207− <itemizedlist spacing="compact">
208− <listitem>
209− <para>
210− This release requires you to run SQL migrations. Please,
211− as always, create a backup of your database first!
212− </para>
213− </listitem>
214− <listitem>
215− <para>
216− The SDKs are now generated with tag v0alpha2 to reflect
217− that some signatures have changed in a breaking fashion.
218− Please update your imports from v0alpha1 to v0alpha2.
219− </para>
220− </listitem>
221− <listitem>
222− <para>
223− The SMTPS scheme used in courier config URL with
224− cleartext/StartTLS/TLS SMTP connection types is now only
225− supporting implicit TLS. For StartTLS and cleartext SMTP,
226− please use the SMTP scheme instead.
227− </para>
228− </listitem>
229− <listitem>
230− <para>
231− for more details, see
232− <link xlink:href="https://github.com/ory/kratos/releases/tag/v0.8.0-alpha.1">Release
233− Notes</link>.
234− </para>
235− </listitem>
236− </itemizedlist>
237− </listitem>
238175 </itemizedlist>
239176 </section>
240177 <section xml:id="sec-release-21.11-new-services">
@@ -283,14 +220,14 @@
283220 <para>
284221 <link xlink:href="https://www.isc.org/kea/">Kea</link>, ISCs
285222 2nd generation DHCP and DDNS server suite. Available at
286− <link xlink:href="options.html#opt-services.kea.dhcp4">services.kea</link>.
223+ <link xlink:href="options.html#opt-services.kea">services.kea</link>.
287224 </para>
288225 </listitem>
289226 <listitem>
290227 <para>
291228 <link xlink:href="https://owncast.online/">owncast</link>,
292229 self-hosted video live streaming solution. Available at
293− <link xlink:href="options.html#opt-services.owncast.enable">services.owncast</link>.
230+ <link xlink:href="options.html#opt-services.owncast">services.owncast</link>.
294231 </para>
295232 </listitem>
296233 <listitem>
@@ -298,7 +235,7 @@
298235 <link xlink:href="https://joinpeertube.org/">PeerTube</link>,
299236 developed by Framasoft, is the free and decentralized
300237 alternative to video platforms. Available at
301− <link xlink:href="options.html#opt-services.peertube.enable">services.peertube</link>.
238+ <link xlink:href="options.html#opt-services.peertube">services.peertube</link>.
302239 </para>
303240 </listitem>
304241 <listitem>
@@ -552,15 +489,6 @@
552489 <link linkend="opt-services.ananicy.enable">services.ananicy</link>.
553490 </para>
554491 </listitem>
555− <listitem>
556− <para>
557− <link xlink:href="https://github.com/prometheus-community/smartctl_exporter">smartctl_exporter</link>,
558− a Prometheus exporter for
559− <link xlink:href="https://en.wikipedia.org/wiki/S.M.A.R.T.">S.M.A.R.T.</link>
560− data. Available as
561− <link xlink:href="options.html#opt-services.prometheus.exporters.smartctl.enable">services.prometheus.exporters.smartctl</link>.
562− </para>
563− </listitem>
564492 </itemizedlist>
565493 </section>
566494 <section xml:id="sec-release-21.11-incompatibilities">
@@ -1370,21 +1298,6 @@ Superuser created successfully.
13701298 would be parsed as 3 parameters.
13711299 </para>
13721300 </listitem>
1373− <listitem>
1374− <para>
1375− <literal>nix.daemonNiceLevel</literal> and
1376− <literal>nix.daemonIONiceLevel</literal> have been removed in
1377− favour of the new options
1378− <link xlink:href="options.html#opt-nix.daemonCPUSchedPolicy"><literal>nix.daemonCPUSchedPolicy</literal></link>,
1379− <link xlink:href="options.html#opt-nix.daemonIOSchedClass"><literal>nix.daemonIOSchedClass</literal></link>
1380− and
1381− <link xlink:href="options.html#opt-nix.daemonIOSchedPriority"><literal>nix.daemonIOSchedPriority</literal></link>.
1382− Please refer to the options documentation and the
1383− <literal>sched(7)</literal> and
1384− <literal>ioprio_set(2)</literal> man pages for guidance on how
1385− to use them.
1386− </para>
1387− </listitem>
13881301 <listitem>
13891302 <para>
13901303 The <literal>coursier</literal> package’s binary was renamed
@@ -1430,44 +1343,6 @@ Superuser created successfully.
14301343 <literal>services.ddclient.passwordFile</literal>.
14311344 </para>
14321345 </listitem>
1433− <listitem>
1434− <para>
1435− The default GNAT version has been changed: The
1436− <literal>gnat</literal> attribute now points to
1437− <literal>gnat11</literal> instead of <literal>gnat9</literal>.
1438− </para>
1439− </listitem>
1440− <listitem>
1441− <para>
1442− <literal>retroArchCores</literal> has been removed. This means
1443− that using <literal>nixpkgs.config.retroarch</literal> to
1444− customize RetroArch cores is not supported anymore. Instead,
1445− use package overrides, for example:
1446− <literal>retroarch.override { cores = with libretro; [ citra snes9x ]; };</literal>.
1447− Also, <literal>retroarchFull</literal> derivation is available
1448− for those who want to have all RetroArch cores available.
1449− </para>
1450− </listitem>
1451− <listitem>
1452− <para>
1453− The Linux kernel for security reasons now restricts access to
1454− BPF syscalls via <literal>BPF_UNPRIV_DEFAULT_OFF=y</literal>.
1455− Unprivileged access can be reenabled via the
1456− <literal>kernel.unprivileged_bpf_disabled</literal> sysctl
1457− knob.
1458− </para>
1459− </listitem>
1460− <listitem>
1461− <para>
1462− <literal>/usr</literal> will always be included in the initial
1463− ramdisk. See the
1464− <literal>fileSystems.&lt;name&gt;.neededForBoot</literal>
1465− option. If any files exist under <literal>/usr</literal>
1466− (which is not typical for NixOS), they will be included in the
1467− initial ramdisk, increasing its size to a possibly problematic
1468− extent.
1469− </para>
1470− </listitem>
14711346 </itemizedlist>
14721347 </section>
14731348 <section xml:id="sec-release-21.11-notable-changes">
@@ -1917,6 +1792,15 @@ Superuser created successfully.
19171792 encapsulation.
19181793 </para>
19191794 </listitem>
1795+ <listitem>
1796+ <para>
1797+ Changing systemd <literal>.socket</literal> units now restarts
1798+ them and stops the service that is activated by them.
1799+ Additionally, services with
1800+ <literal>stopOnChange = false</literal> don’t break anymore
1801+ when they are socket-activated.
1802+ </para>
1803+ </listitem>
19201804 <listitem>
19211805 <para>
19221806 The <literal>virtualisation.libvirtd</literal> module has been
@@ -2060,32 +1944,6 @@ Superuser created successfully.
20601944 <literal>1.5.4</literal>.
20611945 </para>
20621946 </listitem>
2063− <listitem>
2064− <para>
2065− RetroArch has been upgraded from version
2066− <literal>1.8.5</literal> to <literal>1.9.13.2</literal>. Since
2067− the previous release was quite old, if you’re having issues
2068− after the upgrade, please delete your
2069− <literal>$XDG_CONFIG_HOME/retroarch/retroarch.cfg</literal>
2070− file.
2071− </para>
2072− </listitem>
2073− <listitem>
2074− <para>
2075− hydrus has been upgraded from version <literal>438</literal>
2076− to <literal>463</literal>. Since upgrading between releases
2077− this old is advised against, be sure to have a backup of your
2078− data before upgrading. For details, see
2079− <link xlink:href="https://hydrusnetwork.github.io/hydrus/help/getting_started_installing.html#big_updates">the
2080− hydrus manual</link>.
2081− </para>
2082− </listitem>
2083− <listitem>
2084− <para>
2085− More jdk and jre versions are now exposed via
2086− <literal>java-packages.compiler</literal>.
2087− </para>
2088− </listitem>
20891947 </itemizedlist>
20901948 </section>
20911949</section>
nixos/doc/manual/from_md/release-notes/rl-2205.section.xmldeleted−2470
@@ -1,2470 +0,0 @@
1−<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-release-22.05">
2− <title>Release 22.05 (“Quokka”, 2022.05/??)</title>
3− <para>
4− In addition to numerous new and upgraded packages, this release has
5− the following highlights:
6− </para>
7− <itemizedlist spacing="compact">
8− <listitem>
9− <para>
10− Support is planned until the end of December 2022, handing over
11− to 22.11.
12− </para>
13− </listitem>
14− </itemizedlist>
15− <section xml:id="sec-release-22.05-highlights">
16− <title>Highlights</title>
17− <itemizedlist>
18− <listitem>
19− <para>
20− The <literal>firefox</literal> browser on
21− <literal>x86_64-linux</literal> is now making use of
22− profile-guided optimization resulting in a much more
23− responsive browsing experience.
24− </para>
25− </listitem>
26− <listitem>
27− <para>
28− <literal>security.acme.defaults</literal> has been added to
29− simplify configuring settings for many certificates at once.
30− This also opens up the the option to use DNS-01 validation
31− when using <literal>enableACME</literal> on web server virtual
32− hosts (e.g.
33− <literal>services.nginx.virtualHosts.*.enableACME</literal>).
34− </para>
35− </listitem>
36− <listitem>
37− <para>
38− GNOME has been upgraded to 42. Please take a look at their
39− <link xlink:href="https://release.gnome.org/42/">Release
40− Notes</link> for details. Notably, it replaces gedit with
41− GNOME Text Editor, GNOME Terminal with GNOME Console (formerly
42− King’s Cross), and GNOME Screenshot with a tool built into the
43− Shell.
44− </para>
45− </listitem>
46− <listitem>
47− <para>
48− <literal>stdenv.mkDerivation</literal> now supports a
49− self-referencing <literal>finalAttrs:</literal> parameter
50− containing the final <literal>mkDerivation</literal> arguments
51− including overrides. <literal>drv.overrideAttrs</literal> now
52− supports two parameters
53− <literal>finalAttrs: previousAttrs:</literal>. This allows
54− packaging configuration to be overridden in a consistent
55− manner by providing an alternative to
56− <literal>rec {}</literal> syntax.
57− </para>
58− <para>
59− Additionally, <literal>passthru</literal> can now reference
60− <literal>finalAttrs.finalPackage</literal> containing the
61− final package, including attributes such as the output paths
62− and <literal>overrideAttrs</literal>.
63− </para>
64− <para>
65− New language integrations can be simplified by overriding a
66− <quote>prototype</quote> package containing the
67− language-specific logic. This removes the need for a extra
68− layer of overriding for the <quote>generic builder</quote>
69− arguments, thus removing a usability problem and source of
70− error.
71− </para>
72− </listitem>
73− <listitem>
74− <para>
75− PHP 8.1 is now available
76− </para>
77− </listitem>
78− <listitem>
79− <para>
80− Mattermost has been updated to extended support release 6.3,
81− as the previously packaged extended support release 5.37 is
82− <link xlink:href="https://docs.mattermost.com/upgrade/extended-support-release.html">reaching
83− its end of life</link>. Migrations may take a while, see the
84− <link xlink:href="https://docs.mattermost.com/install/self-managed-changelog.html#release-v6-3-extended-support-release">changelog</link>
85− and
86− <link xlink:href="https://docs.mattermost.com/upgrade/important-upgrade-notes.html">important
87− upgrade notes</link>.
88− </para>
89− </listitem>
90− <listitem>
91− <para>
92− systemd services can now set
93− <link linkend="opt-systemd.services">systemd.services.&lt;name&gt;.reloadTriggers</link>
94− instead of <literal>reloadIfChanged</literal> for a more
95− granular distinction between reloads and restarts.
96− </para>
97− </listitem>
98− <listitem>
99− <para>
100− Systemd has been upgraded to the version 250.
101− </para>
102− </listitem>
103− <listitem>
104− <para>
105− Pulseaudio has been upgraded to version 15.0 and now
106− optionally
107− <link xlink:href="https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/15.0/#supportforldacandaptxbluetoothcodecsplussbcxqsbcwithhigher-qualityparameters">supports
108− additional Bluetooth audio codecs</link> like aptX or LDAC,
109− with codec switching support being available in
110− <literal>pavucontrol</literal>. This feature is disabled by
111− default but can be enabled by using
112− <literal>hardware.pulseaudio.package = pkgs.pulseaudioFull;</literal>.
113− Existing 3rd party modules that provided similar
114− functionality, like <literal>pulseaudio-modules-bt</literal>
115− or <literal>pulseaudio-hsphfpd</literal> are deprecated and
116− have been removed.
117− </para>
118− </listitem>
119− <listitem>
120− <para>
121− The new
122− <link xlink:href="https://nixos.org/manual/nixpkgs/stable/#sec-postgresqlTestHook"><literal>postgresqlTestHook</literal></link>
123− runs a PostgreSQL server for the duration of package checks.
124− </para>
125− </listitem>
126− <listitem>
127− <para>
128− <link xlink:href="https://kops.sigs.k8s.io"><literal>kops</literal></link>
129− defaults to 1.22.4, which will enable
130− <link xlink:href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html">Instance
131− Metadata Service Version 2</link> and require tokens on new
132− clusters with Kubernetes 1.22. This will increase security by
133− default, but may break some types of workloads. See the
134− <link xlink:href="https://kops.sigs.k8s.io/releases/1.22-notes/">release
135− notes</link> for details.
136− </para>
137− </listitem>
138− <listitem>
139− <para>
140− Module authors can use
141− <literal>mkRenamedOptionModuleWith</literal> to automate the
142− deprecation cycle without annoying out-of-tree module authors
143− and their users.
144− </para>
145− </listitem>
146− <listitem>
147− <para>
148− The default GHC version has been updated from 8.10.7 to 9.0.2.
149− <literal>pkgs.haskellPackages</literal> and
150− <literal>pkgs.ghc</literal> will now use this version by
151− default.
152− </para>
153− </listitem>
154− <listitem>
155− <para>
156− The GNOME and Plasma installation CDs now use
157− <literal>pkgs.calamares</literal> and
158− <literal>pkgs.calamares-nixos-extensions</literal> to allow
159− users to easily install and set up NixOS with a GUI.
160− </para>
161− </listitem>
162− </itemizedlist>
163− </section>
164− <section xml:id="sec-release-22.05-new-services">
165− <title>New Services</title>
166− <itemizedlist>
167− <listitem>
168− <para>
169− <link xlink:href="https://github.com/intel/linux-sgx#install-the-intelr-sgx-psw">aesmd</link>,
170− the Intel SGX Architectural Enclave Service Manager. Available
171− as
172− <link linkend="opt-services.aesmd.enable">services.aesmd</link>.
173− </para>
174− </listitem>
175− <listitem>
176− <para>
177− <link xlink:href="https://docs.docker.com/engine/security/rootless/">rootless
178− Docker</link>, a <literal>systemd --user</literal> Docker
179− service which runs without root permissions. Available as
180− <link xlink:href="options.html#opt-virtualisation.docker.rootless.enable">virtualisation.docker.rootless.enable</link>.
181− </para>
182− </listitem>
183− <listitem>
184− <para>
185− <link xlink:href="https://conduit.rs/">matrix-conduit</link>,
186− a simple, fast and reliable chat server powered by matrix.
187− Available as
188− <link xlink:href="option.html#opt-services.matrix-conduit.enable">services.matrix-conduit</link>.
189− </para>
190− </listitem>
191− <listitem>
192− <para>
193− <link xlink:href="https://github.com/vvilhonen/nethoscope">nethoscope</link>,
194− listen to your network traffic. Available as
195− <link linkend="opt-programs.nethoscope.enable">programs.nethoscope</link>.
196− </para>
197− </listitem>
198− <listitem>
199− <para>
200− <link xlink:href="https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html">filebeat</link>,
201− a lightweight shipper for forwarding and centralizing log
202− data. Available as
203− <link linkend="opt-services.filebeat.enable">services.filebeat</link>.
204− </para>
205− </listitem>
206− <listitem>
207− <para>
208− <link xlink:href="https://github.com/linux-apfs/linux-apfs-rw">apfs</link>,
209− a kernel module for mounting the Apple File System (APFS).
210− </para>
211− </listitem>
212− <listitem>
213− <para>
214− <link xlink:href="https://frrouting.org/">FRRouting</link>, a
215− popular suite of Internet routing protocol daemons (BGP, BFD,
216− OSPF, IS-IS, VRRP and others). Available as
217− <link linkend="opt-services.frr.babel.enable">services.frr</link>
218− </para>
219− </listitem>
220− <listitem>
221− <para>
222− <link xlink:href="https://github.com/hifi/heisenbridge">heisenbridge</link>,
223− a bouncer-style Matrix IRC bridge. Available as
224− <link xlink:href="options.html#opt-services.heisenbridge.enable">services.heisenbridge</link>.
225− </para>
226− </listitem>
227− <listitem>
228− <para>
229− <link xlink:href="https://snowflake.torproject.org/">snowflake-proxy</link>,
230− a system to defeat internet censorship. Available as
231− <link xlink:href="options.html#opt-services.snowflake-proxy.enable">services.snowflake-proxy</link>.
232− </para>
233− </listitem>
234− <listitem>
235− <para>
236− <link xlink:href="https://ergo.chat">ergochat</link>, a modern
237− IRC with IRCv3 features. Available as
238− <link xlink:href="options.html#opt-services.ergochat.enable">services.ergochat</link>.
239− </para>
240− </listitem>
241− <listitem>
242− <para>
243− <link xlink:href="https://github.com/ngoduykhanh/PowerDNS-Admin">PowerDNS-Admin</link>,
244− a web interface for the PowerDNS server. Available at
245− <link xlink:href="options.html#opt-services.powerdns-admin.enable">services.powerdns-admin</link>.
246− </para>
247− </listitem>
248− <listitem>
249− <para>
250− <link xlink:href="https://github.com/postgres/pgadmin4">pgadmin4</link>,
251− an admin interface for the PostgreSQL database. Available at
252− <link xlink:href="options.html#opt-services.pgadmin.enable">services.pgadmin</link>.
253− </para>
254− </listitem>
255− <listitem>
256− <para>
257− <link xlink:href="https://github.com/sezanzeb/input-remapper">input-remapper</link>,
258− an easy to use tool to change the mapping of your input device
259− buttons. Available at
260− <link xlink:href="options.html#opt-services.input-remapper.enable">services.input-remapper</link>.
261− </para>
262− </listitem>
263− <listitem>
264− <para>
265− <link xlink:href="https://invoiceplane.com">InvoicePlane</link>,
266− web application for managing and creating invoices. Available
267− at
268− <link xlink:href="options.html#opt-services.invoiceplane.enable">services.invoiceplane</link>.
269− </para>
270− </listitem>
271− <listitem>
272− <para>
273− <link xlink:href="https://maddy.email">maddy</link>, a
274− composable all-in-one mail server. Available as
275− <link xlink:href="options.html#opt-services.maddy.enable">services.maddy</link>.
276− </para>
277− </listitem>
278− <listitem>
279− <para>
280− <link xlink:href="https://www.scorchworks.com/K40whisperer/k40whisperer.html">K40-Whisperer</link>,
281− a program to control cheap Chinese laser cutters. Available as
282− <link xlink:href="options.html#opt-programs.k4-whisperer.enable">programs.k40-whisperer.enable</link>.
283− Users must add themselves to the <literal>k40</literal> group
284− to be able to access the device.
285− </para>
286− </listitem>
287− <listitem>
288− <para>
289− <link xlink:href="https://github.com/mozilla-mobile/mozilla-vpn-client">mozillavpn</link>,
290− the client for the
291− <link xlink:href="https://vpn.mozilla.org/">Mozilla VPN</link>
292− service. Available as
293− <link xlink:href="options.html#opt-services.mozillavpn">services.mozillavpn</link>.
294− </para>
295− </listitem>
296− <listitem>
297− <para>
298− <link xlink:href="https://github.com/mgumz/mtr-exporter">mtr-exporter</link>,
299− a Prometheus exporter for mtr metrics. Available as
300− <link xlink:href="options.html#opt-services.mtr-exporter.enable">services.mtr-exporter</link>.
301− </para>
302− </listitem>
303− <listitem>
304− <para>
305− <link xlink:href="https://github.com/prometheus-pve/prometheus-pve-exporter">prometheus-pve-exporter</link>,
306− a tool that exposes information from the Proxmox VE API for
307− use by Prometheus. Available as
308− <link xlink:href="options.html#opt-services.prometheus.exporters.pve">services.prometheus.exporters.pve</link>.
309− </para>
310− </listitem>
311− <listitem>
312− <para>
313− <link xlink:href="https://github.com/netbox-community/netbox">netbox</link>,
314− infrastructure resource modeling (IRM) tool. Available as
315− <link xlink:href="options.html#opt-services.netbox.enable">services.netbox</link>.
316− </para>
317− </listitem>
318− <listitem>
319− <para>
320− <link xlink:href="https://tetrd.app">tetrd</link>, share your
321− internet connection from your device to your PC and vice versa
322− through a USB cable. Available at
323− <link linkend="opt-services.tetrd.enable">services.tetrd</link>.
324− </para>
325− </listitem>
326− <listitem>
327− <para>
328− <link xlink:href="https://github.com/mbrubeck/agate">agate</link>,
329− a very simple server for the Gemini hypertext protocol.
330− Available as
331− <link xlink:href="options.html#opt-services.agate.enable">services.agate</link>.
332− </para>
333− </listitem>
334− <listitem>
335− <para>
336− <link xlink:href="https://github.com/JustArchiNET/ArchiSteamFarm">ArchiSteamFarm</link>,
337− a C# application with primary purpose of idling Steam cards
338− from multiple accounts simultaneously. Available as
339− <link xlink:href="options.html#opt-services.archisteamfarm.enable">services.archisteamfarm</link>.
340− </para>
341− </listitem>
342− <listitem>
343− <para>
344− <link xlink:href="https://goteleport.com">teleport</link>,
345− allows engineers and security professionals to unify access
346− for SSH servers, Kubernetes clusters, web applications, and
347− databases across all environments. Available at
348− <link linkend="opt-services.teleport.enable">services.teleport</link>.
349− </para>
350− </listitem>
351− <listitem>
352− <para>
353− <link xlink:href="https://loic-sharma.github.io/BaGet/">BaGet</link>,
354− a lightweight NuGet and symbol server. Available at
355− <link linkend="opt-services.baget.enable">services.baget</link>.
356− </para>
357− </listitem>
358− <listitem>
359− <para>
360− <link xlink:href="https://moosefs.com">moosefs</link>, fault
361− tolerant petabyte distributed file system. Available as
362− <link linkend="opt-services.moosefs.client.enable">moosefs</link>.
363− </para>
364− </listitem>
365− <listitem>
366− <para>
367− <link xlink:href="https://github.com/ThomasLeister/prosody-filer">prosody-filer</link>,
368− a server for handling XMPP HTTP Upload requests. Available at
369− <link linkend="opt-services.prosody-filer.enable">services.prosody-filer</link>.
370− </para>
371− </listitem>
372− <listitem>
373− <para>
374− <link xlink:href="https://github.com/rfjakob/systembus-notify">systembus-notify</link>,
375− allow system level notifications to reach the users. Available
376− as
377− <link xlink:href="opt-services.systembus-notify.enable">services.systembus-notify</link>.
378− Please keep in mind that this service should only be enabled
379− on machines with fully trusted users, as any local user is
380− able to DoS user sessions by spamming notifications.
381− </para>
382− </listitem>
383− <listitem>
384− <para>
385− <link xlink:href="https://github.com/audreyt/ethercalc">ethercalc</link>,
386− an online collaborative spreadsheet. Available as
387− <link xlink:href="options.html#opt-services.ethercalc.enable">services.ethercalc</link>.
388− </para>
389− </listitem>
390− <listitem>
391− <para>
392− <link xlink:href="https://nbd.sourceforge.io/">nbd</link>, a
393− Network Block Device server. Available as
394− <link xlink:href="options.html#opt-services.nbd.server.enable">services.nbd</link>.
395− </para>
396− </listitem>
397− <listitem>
398− <para>
399− <link xlink:href="https://github.com/Mic92/nix-ld">nix-ld</link>,
400− Run unpatched dynamic binaries on NixOS. Available as
401− <link xlink:href="options.html#opt-programs.nix-ld.enable">programs.nix-ld</link>.
402− </para>
403− </listitem>
404− <listitem>
405− <para>
406− <link xlink:href="https://timetagger.app">timetagger</link>,
407− an open source time-tracker with an intuitive user experience
408− and powerful reporting.
409− <link xlink:href="options.html#opt-services.timetagger.enable">services.timetagger</link>.
410− </para>
411− </listitem>
412− <listitem>
413− <para>
414− <link xlink:href="https://www.rstudio.com/products/rstudio/#rstudio-server">rstudio-server</link>,
415− a browser-based version of the RStudio IDE for the R
416− programming language. Available as
417− <link xlink:href="options.html#opt-services.rstudio-server.enable">services.rstudio-server</link>.
418− </para>
419− </listitem>
420− <listitem>
421− <para>
422− <link xlink:href="https://github.com/juanfont/headscale">headscale</link>,
423− an Open Source implementation of the
424− <link xlink:href="https://tailscale.io">Tailscale</link>
425− Control Server. Available as
426− <link xlink:href="options.html#opt-services.headscale.enable">services.headscale</link>
427− </para>
428− </listitem>
429− <listitem>
430− <para>
431− <link xlink:href="https://github.com/lakinduakash/linux-wifi-hotspot">create_ap</link>,
432− a module for creating wifi hotspots using the program
433− linux-wifi-hotspot. Available as
434− <link xlink:href="options.html#opt-services.create_ap.enable">services.create_ap</link>.
435− </para>
436− </listitem>
437− <listitem>
438− <para>
439− <link xlink:href="https://0xerr0r.github.io/blocky/">blocky</link>,
440− fast and lightweight DNS proxy as ad-blocker for local network
441− with many features.
442− </para>
443− </listitem>
444− <listitem>
445− <para>
446− <link xlink:href="https://clusterlabs.org/pacemaker/">pacemaker</link>
447− cluster resource manager
448− </para>
449− </listitem>
450− <listitem>
451− <para>
452− <link xlink:href="https://nifi.apache.org">nifi</link>, an
453− easy to use, powerful, and reliable system to process and
454− distribute data. Available as
455− <link xlink:href="options.html#opt-services.nifi.enable">services.nifi</link>.
456− </para>
457− </listitem>
458− </itemizedlist>
459− </section>
460− <section xml:id="sec-release-22.05-incompatibilities">
461− <title>Backward Incompatibilities</title>
462− <itemizedlist>
463− <listitem>
464− <para>
465− <literal>pkgs.ghc</literal> now refers to
466− <literal>pkgs.targetPackages.haskellPackages.ghc</literal>.
467− This <emphasis>only</emphasis> makes a difference if you are
468− cross-compiling and will ensure that
469− <literal>pkgs.ghc</literal> always runs on the host platform
470− and compiles for the target platform (similar to
471− <literal>pkgs.gcc</literal> for example).
472− <literal>haskellPackages.ghc</literal> still behaves as
473− before, running on the build platform and compiling for the
474− host platform (similar to <literal>stdenv.cc</literal>). This
475− means you don’t have to adjust your derivations if you use
476− <literal>haskellPackages.callPackage</literal>, but when using
477− <literal>pkgs.callPackage</literal> and taking
478− <literal>ghc</literal> as an input, you should now use
479− <literal>buildPackages.ghc</literal> instead to ensure cross
480− compilation keeps working (or switch to
481− <literal>haskellPackages.callPackage</literal>).
482− </para>
483− </listitem>
484− <listitem>
485− <para>
486− <literal>pkgs.ghc.withPackages</literal> as well as
487− <literal>haskellPackages.ghcWithPackages</literal> etc. now
488− needs be overridden directly, as opposed to overriding the
489− result of calling it. Additionally, the
490− <literal>withLLVM</literal> parameter has been renamed to
491− <literal>useLLVM</literal>. So instead of
492− <literal>(ghc.withPackages (p: [])).override { withLLVM = true; }</literal>,
493− one needs to use
494− <literal>(ghc.withPackages.override { useLLVM = true; }) (p: [])</literal>.
495− </para>
496− </listitem>
497− <listitem>
498− <para>
499− The <literal>home-assistant</literal> module now requires
500− users that don’t want their configuration to be managed
501− declaratively to set
502− <literal>services.home-assistant.config = null;</literal>.
503− This is required due to the way default settings are handled
504− with the new settings style.
505− </para>
506− <para>
507− Additionally the default list of
508− <literal>extraComponents</literal> now includes the minimal
509− dependencies to successfully complete the
510− <link xlink:href="https://www.home-assistant.io/getting-started/onboarding/">onboarding</link>
511− procedure.
512− </para>
513− </listitem>
514− <listitem>
515− <para>
516− <literal>pkgs.emacsPackages.orgPackages</literal> is removed
517− because org elpa is deprecated. The packages in the top level
518− of <literal>pkgs.emacsPackages</literal>, such as org and
519− org-contrib, refer to the ones in
520− <literal>pkgs.emacsPackages.elpaPackages</literal> and
521− <literal>pkgs.emacsPackages.nongnuPackages</literal> where the
522− new versions will release.
523− </para>
524− </listitem>
525− <listitem>
526− <para>
527− The configuration and state directories used by
528− <literal>nixos-containers</literal> have been moved from
529− <literal>/etc/containers</literal> and
530− <literal>/var/lib/containers</literal> to
531− <literal>/etc/nixos-containers</literal> and
532− <literal>/var/lib/nixos-containers</literal>.
533− </para>
534− <para>
535− If you are changing <literal>system.stateVersion</literal> to
536− <literal>&quot;22.05&quot;</literal> manually on an existing
537− system you are responsible for migrating these directories
538− yourself.
539− </para>
540− <para>
541− This is to improve compatibility with
542− <literal>libcontainer</literal> based software such as Podman
543− and Skopeo which assumes they have ownership over
544− <literal>/etc/containers</literal>.
545− </para>
546− </listitem>
547− <listitem>
548− <para>
549− For new installations
550− <literal>virtualisation.oci-containers.backend</literal> is
551− now set to <literal>podman</literal> by default. If you still
552− want to use Docker on systems where
553− <literal>system.stateVersion</literal> is set to to
554− <literal>&quot;22.05&quot;</literal> set
555− <literal>virtualisation.oci-containers.backend = &quot;docker&quot;;</literal>.Old
556− systems with older <literal>stateVersion</literal>s stay with
557− <quote>docker</quote>.
558− </para>
559− </listitem>
560− <listitem>
561− <para>
562− <literal>security.klogd</literal> was removed. Logging of
563− kernel messages is handled by systemd since Linux 3.5.
564− </para>
565− </listitem>
566− <listitem>
567− <para>
568− <literal>pkgs.ssmtp</literal> has been dropped due to the
569− program being unmaintained. <literal>pkgs.msmtp</literal> can
570− be used instead as a substitute <literal>sendmail</literal>
571− implementation. The corresponding options
572− <literal>services.ssmtp.*</literal> have been removed as well.
573− <literal>programs.msmtp.*</literal> can be used instead for an
574− equivalent setup. For example:
575− </para>
576− <programlisting language="bash">
577−{
578− # Original ssmtp configuration:
579− services.ssmtp = {
580− enable = true;
581− useTLS = true;
582− useSTARTTLS = true;
583− hostName = &quot;smtp.example:587&quot;;
584− authUser = &quot;someone&quot;;
585− authPassFile = &quot;/secrets/password.txt&quot;;
586− };
587−
588− # Equivalent msmtp configuration:
589− programs.msmtp = {
590− enable = true;
591− accounts.default = {
592− tls = true;
593− tls_starttls = true;
594− auth = true;
595− host = &quot;smtp.example&quot;;
596− port = 587;
597− user = &quot;someone&quot;;
598− passwordeval = &quot;cat /secrets/password.txt&quot;;
599− };
600− };
601−}
602−</programlisting>
603− </listitem>
604− <listitem>
605− <para>
606− <literal>services.kubernetes.addons.dashboard</literal> was
607− removed due to it being an outdated version.
608− </para>
609− </listitem>
610− <listitem>
611− <para>
612− <literal>services.kubernetes.scheduler.{port,address}</literal>
613− now set <literal>--secure-port</literal> and
614− <literal>--bind-address</literal> instead of
615− <literal>--port</literal> and <literal>--address</literal>,
616− since the former have been deprecated and are no longer
617− functional in kubernetes&gt;=1.23. Ensure that you are not
618− relying on the insecure behaviour before upgrading.
619− </para>
620− </listitem>
621− <listitem>
622− <para>
623− In the PowerDNS Recursor module
624− (<literal>services.pdns-recursor</literal>), default values of
625− several IP address-related NixOS options have been updated to
626− match the default upstream behavior. In particular, Recursor
627− by default will:
628− </para>
629− <itemizedlist spacing="compact">
630− <listitem>
631− <para>
632− listen on (and allows connections from) both IPv4 and IPv6
633− addresses
634− (<literal>services.pdns-recursor.dns.address</literal>,
635− <literal>services.pdns-recursor.dns.allowFrom</literal>);
636− </para>
637− </listitem>
638− <listitem>
639− <para>
640− allow only local connections to the REST API server
641− (<literal>services.pdns-recursor.api.allowFrom</literal>).
642− </para>
643− </listitem>
644− </itemizedlist>
645− </listitem>
646− <listitem>
647− <para>
648− In the ncdns module, the default value of
649− <literal>services.ncdns.address</literal> has been changed to
650− the IPv6 loopback address (<literal>::1</literal>).
651− </para>
652− </listitem>
653− <listitem>
654− <para>
655− <literal>openssh</literal> has been update to 8.9p1, changing
656− the FIDO security key middleware interface.
657− </para>
658− </listitem>
659− <listitem>
660− <para>
661− <literal>git</literal> no longer hardcodes the path to
662− openssh’ ssh binary to reduce the amount of rebuilds. If you
663− are using git with ssh remotes and do not have a ssh binary in
664− your enviroment consider adding <literal>openssh</literal> to
665− it or switching to <literal>gitFull</literal>.
666− </para>
667− </listitem>
668− <listitem>
669− <para>
670− <literal>services.k3s.enable</literal> no longer implies
671− <literal>systemd.enableUnifiedCgroupHierarchy = false</literal>,
672− and will default to the <quote>systemd</quote> cgroup driver
673− when using <literal>services.k3s.docker = true</literal>. This
674− change may require a reboot to take effect, and k3s may not be
675− able to run if the boot cgroup hierarchy does not match its
676− configuration. The previous behavior may be retained by
677− explicitly setting
678− <literal>systemd.enableUnifiedCgroupHierarchy = false</literal>
679− in your configuration.
680− </para>
681− </listitem>
682− <listitem>
683− <para>
684− <literal>fonts.fonts</literal> no longer includes ancient
685− bitmap fonts when both
686− <literal>config.services.xserver.enable</literal> and
687− <literal>config.nixpkgs.config.allowUnfree</literal> are
688− enabled. If you still want these fonts, use:
689− </para>
690− <programlisting language="bash">
691−{
692− fonts.fonts = [
693− pkgs.xorg.fontbhlucidatypewriter100dpi
694− pkgs.xorg.fontbhlucidatypewriter75dpi
695− pkgs.xorg.fontbh100dpi
696− ];
697−}
698−</programlisting>
699− </listitem>
700− <listitem>
701− <para>
702− <literal>services.prometheus.alertManagerTimeout</literal> has
703− been removed as it has been deprecated upstream and has no
704− effect.
705− </para>
706− </listitem>
707− <listitem>
708− <para>
709− The DHCP server (<literal>services.dhcpd4</literal>,
710− <literal>services.dhcpd6</literal>) has been hardened. The
711− service is now using the systemd’s
712− <literal>DynamicUser</literal> mechanism to run as an
713− unprivileged dynamically-allocated user with limited
714− capabilities. The dhcpd state files are now always stored in
715− <literal>/var/lib/dhcpd{4,6}</literal> and the
716− <literal>services.dhcpd4.stateDir</literal> and
717− <literal>service.dhcpd6.stateDir</literal> options have been
718− removed. If you were depending on root privileges or
719− set{uid,gid,cap} binaries in dhcpd shell hooks, you may give
720− dhcpd more capabilities with e.g.
721− <literal>systemd.services.dhcpd6.serviceConfig.AmbientCapabilities</literal>.
722− </para>
723− </listitem>
724− <listitem>
725− <para>
726− The <literal>mailpile</literal> email webclient
727− (<literal>services.mailpile</literal>) has been removed due to
728− its reliance on python2.
729− </para>
730− </listitem>
731− <listitem>
732− <para>
733− <literal>services.ipfs.extraFlags</literal> is now escaped
734− with <literal>utils.escapeSystemdExecArgs</literal>. If you
735− rely on systemd interpolating <literal>extraFlags</literal> in
736− the service <literal>ExecStart</literal>, this will no longer
737− work.
738− </para>
739− </listitem>
740− <listitem>
741− <para>
742− <literal>hbase</literal> version 0.98.24 has been removed. The
743− package now defaults to version 2.4.11. Versions 1.7.1 and
744− 3.0.0-alpha-2 are also available.
745− </para>
746− </listitem>
747− <listitem>
748− <para>
749− <literal>services.paperless-ng</literal> was renamed to
750− <literal>services.paperless</literal>. Accordingly, the
751− <literal>paperless-ng-manage</literal> script (located in
752− <literal>dataDir</literal>) was renamed to
753− <literal>paperless-manage</literal>.
754− <literal>services.paperless</literal> now uses
755− <literal>paperless-ngx</literal>.
756− </para>
757− </listitem>
758− <listitem>
759− <para>
760− The <literal>matrix-synapse</literal> service
761− (<literal>services.matrix-synapse</literal>) has been
762− converted to use the <literal>settings</literal> option
763− defined in RFC42. This means that options that are part of
764− your <literal>homeserver.yaml</literal> configuration, and
765− that were specified at the top-level of the module
766− (<literal>services.matrix-synapse</literal>) now need to be
767− moved into
768− <literal>services.matrix-synapse.settings</literal>. And while
769− not all options you may use are defined in there, they are
770− still supported, because you can set arbitrary values in this
771− freeform type.
772− </para>
773− <para>
774− The <literal>listeners.*.bind_address</literal> option was
775− renamed to <literal>bind_addresses</literal> in order to match
776− the upstream <literal>homeserver.yaml</literal> option name.
777− It is now also a list of strings instead of a string.
778− </para>
779− <para>
780− An example to make the required migration clearer:
781− </para>
782− <para>
783− Before:
784− </para>
785− <programlisting language="bash">
786−{
787− services.matrix-synapse = {
788− enable = true;
789−
790− server_name = &quot;example.com&quot;;
791− public_baseurl = &quot;https://example.com:8448&quot;;
792−
793− enable_registration = false;
794− registration_shared_secret = &quot;xohshaeyui8jic7uutuDogahkee3aehuaf6ei3Xouz4iicie5thie6nohNahceut&quot;;
795− macaroon_secret_key = &quot;xoo8eder9seivukaiPh1cheikohquuw8Yooreid0The4aifahth3Ou0aiShaiz4l&quot;;
796−
797− tls_certificate_path = &quot;/var/lib/acme/example.com/fullchain.pem&quot;;
798− tls_certificate_path = &quot;/var/lib/acme/example.com/fullchain.pem&quot;;
799−
800− listeners = [ {
801− port = 8448;
802− bind_address = &quot;&quot;;
803− type = &quot;http&quot;;
804− tls = true;
805− resources = [ {
806− names = [ &quot;client&quot; ];
807− compress = true;
808− } {
809− names = [ &quot;federation&quot; ];
810− compress = false;
811− } ];
812− } ];
813−
814− };
815−}
816−</programlisting>
817− <para>
818− After:
819− </para>
820− <programlisting language="bash">
821−{
822− services.matrix-synapse = {
823− enable = true;
824−
825− # this attribute set holds all values that go into your homeserver.yaml configuration
826− # See https://github.com/matrix-org/synapse/blob/develop/docs/sample_config.yaml for
827− # possible values.
828− settings = {
829− server_name = &quot;example.com&quot;;
830− public_baseurl = &quot;https://example.com:8448&quot;;
831−
832− enable_registration = false;
833− # pass `registration_shared_secret` and `macaroon_secret_key` via `extraConfigFiles` instead
834−
835− tls_certificate_path = &quot;/var/lib/acme/example.com/fullchain.pem&quot;;
836− tls_certificate_path = &quot;/var/lib/acme/example.com/fullchain.pem&quot;;
837−
838− listeners = [ {
839− port = 8448;
840− bind_addresses = [
841− &quot;::&quot;
842− &quot;0.0.0.0&quot;
843− ];
844− type = &quot;http&quot;;
845− tls = true;
846− resources = [ {
847− names = [ &quot;client&quot; ];
848− compress = true;
849− } {
850− names = [ &quot;federation&quot; ];
851− compress = false;
852− } ];
853− } ];
854− };
855−
856− extraConfigFiles = [
857− /run/keys/matrix-synapse/secrets.yaml
858− ];
859− };
860−}
861−</programlisting>
862− <para>
863− The secrets in your original config should be migrated into a
864− YAML file that is included via
865− <literal>extraConfigFiles</literal>.
866− </para>
867− <para>
868− Additionally a few option defaults have been synced up with
869− upstream default values, for example the
870− <literal>max_upload_size</literal> grew from
871− <literal>10M</literal> to <literal>50M</literal>. For the same
872− reason, the default <literal>media_store_path</literal> was
873− changed from <literal>${dataDir}/media</literal> to
874− <literal>${dataDir}/media_store</literal> if
875− <literal>system.stateVersion</literal> is at least
876− <literal>22.05</literal>. Files will need to be manually moved
877− to the new location if the <literal>stateVersion</literal> is
878− updated.
879− </para>
880− <para>
881− As of Synapse 1.58.0, the old groups/communities feature has
882− been disabled by default. It will be completely removed with
883− Synapse 1.61.0.
884− </para>
885− </listitem>
886− <listitem>
887− <para>
888− The Keycloak package (<literal>pkgs.keycloak</literal>) has
889− been switched from the Wildfly version, which will soon be
890− deprecated, to the Quarkus based version. The Keycloak service
891− (<literal>services.keycloak</literal>) has been updated to
892− accommodate the change and now differs from the previous
893− version in a few ways:
894− </para>
895− <itemizedlist>
896− <listitem>
897− <para>
898− <literal>services.keycloak.extraConfig</literal> has been
899− removed in favor of the new
900− <link xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">settings-style</link>
901− <link linkend="opt-services.keycloak.settings"><literal>services.keycloak.settings</literal></link>
902− option. The available options correspond directly to
903− parameters in <literal>conf/keycloak.conf</literal>. Some
904− of the most important parameters are documented as
905− suboptions, the rest can be found in the
906− <link xlink:href="https://www.keycloak.org/server/all-config">All
907− configuration section of the Keycloak Server Installation
908− and Configuration Guide</link>. While the new
909− configuration is much simpler and cleaner than the old
910− JBoss CLI one, this unfortunately mean that there’s no
911− straightforward way to convert an old configuration to the
912− new format and some settings may not even be available
913− anymore.
914− </para>
915− </listitem>
916− <listitem>
917− <para>
918− <literal>services.keycloak.frontendUrl</literal> was
919− removed and the frontend URL is now configured through the
920− <literal>hostname</literal> family of settings in
921− <link linkend="opt-services.keycloak.settings"><literal>services.keycloak.settings</literal></link>
922− instead. See the
923− <link xlink:href="https://www.keycloak.org/server/hostname">Hostname
924− section of the Keycloak Server Installation and
925− Configuration Guide</link> for more details. Additionally,
926− <literal>/auth</literal> was removed from the default
927− context path and needs to be added back in
928− <link linkend="opt-services.keycloak.settings.http-relative-path"><literal>services.keycloak.settings.http-relative-path</literal></link>
929− if you want to keep compatibility with your current
930− clients.
931− </para>
932− </listitem>
933− <listitem>
934− <para>
935− <literal>services.keycloak.bindAddress</literal>,
936− <literal>services.keycloak.forceBackendUrlToFrontendUrl</literal>,
937− <literal>services.keycloak.httpPort</literal> and
938− <literal>services.keycloak.httpsPort</literal> have been
939− removed in favor of their equivalent options in
940− <link linkend="opt-services.keycloak.settings"><literal>services.keycloak.settings</literal></link>.
941− <literal>httpPort</literal> and
942− <literal>httpsPort</literal> have additionally had their
943− types changed from <literal>str</literal> to
944− <literal>port</literal>.
945− </para>
946− <para>
947− The new names are as follows:
948− </para>
949− <itemizedlist spacing="compact">
950− <listitem>
951− <para>
952− <literal>bindAddress</literal>:
953− <link linkend="opt-services.keycloak.settings.http-host"><literal>services.keycloak.settings.http-host</literal></link>
954− </para>
955− </listitem>
956− <listitem>
957− <para>
958− <literal>forceBackendUrlToFrontendUrl</literal>:
959− <link linkend="opt-services.keycloak.settings.hostname-strict-backchannel"><literal>services.keycloak.settings.hostname-strict-backchannel</literal></link>
960− </para>
961− </listitem>
962− <listitem>
963− <para>
964− <literal>httpPort</literal>:
965− <link linkend="opt-services.keycloak.settings.http-port"><literal>services.keycloak.settings.http-port</literal></link>
966− </para>
967− </listitem>
968− <listitem>
969− <para>
970− <literal>httpsPort</literal>:
971− <link linkend="opt-services.keycloak.settings.https-port"><literal>services.keycloak.settings.https-port</literal></link>
972− </para>
973− </listitem>
974− </itemizedlist>
975− </listitem>
976− </itemizedlist>
977− <para>
978− For example, when using a reverse proxy the migration could
979− look like this:
980− </para>
981− <para>
982− Before:
983− </para>
984− <programlisting language="bash">
985− services.keycloak = {
986− enable = true;
987− httpPort = &quot;8080&quot;;
988− frontendUrl = &quot;https://keycloak.example.com/auth&quot;;
989− database.passwordFile = &quot;/run/keys/db_password&quot;;
990− extraConfig = {
991− &quot;subsystem=undertow&quot;.&quot;server=default-server&quot;.&quot;http-listener=default&quot;.proxy-address-forwarding = true;
992− };
993− };
994−</programlisting>
995− <para>
996− After:
997− </para>
998− <programlisting language="bash">
999− services.keycloak = {
1000− enable = true;
1001− settings = {
1002− http-port = 8080;
1003− hostname = &quot;keycloak.example.com&quot;;
1004− http-relative-path = &quot;/auth&quot;;
1005− proxy = &quot;edge&quot;;
1006− };
1007− database.passwordFile = &quot;/run/keys/db_password&quot;;
1008− };
1009−</programlisting>
1010− </listitem>
1011− <listitem>
1012− <para>
1013− The MoinMoin wiki engine
1014− (<literal>services.moinmoin</literal>) has been removed,
1015− because Python 2 is being retired from nixpkgs.
1016− </para>
1017− </listitem>
1018− <listitem>
1019− <para>
1020− Services in the <literal>hadoop</literal> module previously
1021− set <literal>openFirewall</literal> to true by default. This
1022− has now been changed to false. Node definitions for multi-node
1023− clusters would need <literal>openFirewall = true;</literal> to
1024− be added to to hadoop services when upgrading from NixOS
1025− 21.11.
1026− </para>
1027− </listitem>
1028− <listitem>
1029− <para>
1030− <literal>services.hadoop.yarn.nodemanager</literal> now uses
1031− cgroup-based CPU limit enforcement by default. Additionally,
1032− the option <literal>useCGroups</literal> was added to
1033− nodemanagers as an easy way to switch back to the old
1034− behavior.
1035− </para>
1036− </listitem>
1037− <listitem>
1038− <para>
1039− The <literal>wafHook</literal> hook now honors
1040− <literal>NIX_BUILD_CORES</literal> when
1041− <literal>enableParallelBuilding</literal> is not set
1042− explicitly. Packages can restore the old behaviour by setting
1043− <literal>enableParallelBuilding=false</literal>.
1044− </para>
1045− </listitem>
1046− <listitem>
1047− <para>
1048− <literal>pkgs.claws-mail-gtk2</literal>, representing Claws
1049− Mail’s older release version three, was removed in order to
1050− get rid of Python 2. Please switch to
1051− <literal>claws-mail</literal>, which is Claws Mail’s latest
1052− release based on GTK+3 and Python 3.
1053− </para>
1054− </listitem>
1055− <listitem>
1056− <para>
1057− The <literal>writers.writePython2</literal> and corresponding
1058− <literal>writers.writePython2Bin</literal> convenience
1059− functions to create executable Python 2 scripts in the store
1060− were removed in preparation of removal of the Python 2
1061− interpreter. Scripts have to be converted to Python 3 for use
1062− with <literal>writers.writePython3</literal> or
1063− <literal>writers.writePyPy2</literal> needs to be used.
1064− </para>
1065− </listitem>
1066− <listitem>
1067− <para>
1068− <literal>buildGoModule</literal> was updated to use
1069− <literal>go_1_17</literal>, third party derivations that
1070− specify &gt;= go 1.17 in the main <literal>go.mod</literal>
1071− will need to regenerate their <literal>vendorSha256</literal>
1072− hash.
1073− </para>
1074− </listitem>
1075− <listitem>
1076− <para>
1077− The <literal>gnome-passwordsafe</literal> package updated to
1078− <link xlink:href="https://gitlab.gnome.org/World/secrets/-/tags/6.0">version
1079− 6.x</link> and renamed to <literal>gnome-secrets</literal>.
1080− </para>
1081− </listitem>
1082− <listitem>
1083− <para>
1084− <literal>services.gnome.experimental-features.realtime-scheduling</literal>
1085− option has been removed, as GNOME Shell now
1086− <link xlink:href="https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2060">uses
1087− rtkit</link>. Use
1088− <literal>security.rtkit.enable = true;</literal> instead. As
1089− before, you will need to have it enabled using GSettings.
1090− </para>
1091− </listitem>
1092− <listitem>
1093− <para>
1094− <literal>services.telepathy</literal> will no longer be
1095− enabled by default for GNOME desktops, one should enable it in
1096− their configs if using Empathy or Polari.
1097− </para>
1098− </listitem>
1099− <listitem>
1100− <para>
1101− If you previously used
1102− <literal>/etc/docker/daemon.json</literal>, you need to
1103− incorporate the changes into the new option
1104− <literal>virtualisation.docker.daemon.settings</literal>.
1105− </para>
1106− </listitem>
1107− <listitem>
1108− <para>
1109− Ntopng (<literal>services.ntopng</literal>) is updated to
1110− 5.2.1 and uses a separate Redis instance if
1111− <literal>system.stateVersion</literal> is at least
1112− <literal>22.05</literal>. Existing setups shouldn’t be
1113− affected.
1114− </para>
1115− </listitem>
1116− <listitem>
1117− <para>
1118− The backward compatibility in
1119− <literal>services.wordpress</literal> to configure sites with
1120− the old interface has been removed. Please use
1121− <literal>services.wordpress.sites</literal> instead.
1122− </para>
1123− </listitem>
1124− <listitem>
1125− <para>
1126− The backward compatibility in
1127− <literal>services.dokuwiki</literal> to configure sites with
1128− the old interface has been removed. Please use
1129− <literal>services.dokuwiki.sites</literal> instead.
1130− </para>
1131− </listitem>
1132− <listitem>
1133− <para>
1134− opensmtpd-extras is no longer build with python2 scripting
1135− support due to python2 deprecation in nixpkgs
1136− </para>
1137− </listitem>
1138− <listitem>
1139− <para>
1140− <literal>services.miniflux.adminCredentialFiles</literal> is
1141− now required, instead of defaulting to
1142− <literal>admin</literal> and <literal>password</literal>.
1143− </para>
1144− </listitem>
1145− <listitem>
1146− <para>
1147− The <literal>taskserver</literal> module no longer implicitly
1148− opens ports in the firewall configuration. This is now
1149− controlled through the option
1150− <literal>services.taskserver.openFirewall</literal>.
1151− </para>
1152− </listitem>
1153− <listitem>
1154− <para>
1155− The <literal>autorestic</literal> package has been upgraded
1156− from 1.3.0 to 1.5.0 which introduces breaking changes in
1157− config file, check
1158− <link xlink:href="https://autorestic.vercel.app/migration/1.4_1.5">their
1159− migration guide</link> for more details.
1160− </para>
1161− </listitem>
1162− <listitem>
1163− <para>
1164− For <literal>pkgs.python3.pkgs.ipython</literal>, its direct
1165− dependency
1166− <literal>pkgs.python3.pkgs.matplotlib-inline</literal> (which
1167− is really an adapter to integrate matplotlib in ipython if it
1168− is installed) does not depend on
1169− <literal>pkgs.python3.pkgs.matplotlib</literal> anymore. This
1170− is closer to a non-Nix install of ipython. This has the added
1171− benefit to reduce the closure size of
1172− <literal>ipython</literal> from ~400MB to ~160MB (including
1173− ~100MB for python itself).
1174− </para>
1175− </listitem>
1176− <listitem>
1177− <para>
1178− <literal>documentation.man</literal> has been refactored to
1179− support choosing a man implementation other than GNU’s
1180− <literal>man-db</literal>. For this,
1181− <literal>documentation.man.manualPages</literal> has been
1182− renamed to
1183− <literal>documentation.man.man-db.manualPages</literal>. If
1184− you want to use the new alternative man implementation
1185− <literal>mandoc</literal>, add
1186− <literal>documentation.man = { enable = true; man-db.enable = false; mandoc.enable = true; }</literal>
1187− to your configuration.
1188− </para>
1189− </listitem>
1190− <listitem>
1191− <para>
1192− Normal users (with <literal>isNormalUser = true</literal>)
1193− which have non-empty <literal>subUidRanges</literal> or
1194− <literal>subGidRanges</literal> set no longer have additional
1195− implicit ranges allocated. To enable automatic allocation back
1196− set <literal>autoSubUidGidRange = true</literal>.
1197− </para>
1198− </listitem>
1199− <listitem>
1200− <para>
1201− <literal>idris2</literal> now requires
1202− <literal>--package</literal> when using packages
1203− <literal>contrib</literal> and <literal>network</literal>,
1204− while previously these idris2 packages were automatically
1205− loaded.
1206− </para>
1207− </listitem>
1208− <listitem>
1209− <para>
1210− The iputils package, which is installed by default, no longer
1211− provides the legacy tools <literal>tftpd</literal> and
1212− <literal>traceroute6</literal>. More tools
1213− (<literal>ninfod</literal>, <literal>rarpd</literal>, and
1214− <literal>rdisc</literal>) are going to be removed in the next
1215− release. See
1216− <link xlink:href="https://github.com/iputils/iputils/releases/tag/20211215">upstream’s
1217− release notes</link> for more details and available
1218− replacements.
1219− </para>
1220− </listitem>
1221− <listitem>
1222− <para>
1223− <literal>services.thelounge.private</literal> was removed in
1224− favor of <literal>services.thelounge.public</literal>, to
1225− follow with upstream changes.
1226− </para>
1227− </listitem>
1228− <listitem>
1229− <para>
1230− <literal>pkgs.docbookrx</literal> was removed since it’s
1231− unmaintained
1232− </para>
1233− </listitem>
1234− <listitem>
1235− <para>
1236− <literal>pkgs._7zz</literal> is now correctly licensed as
1237− LGPL3+ and BSD3 with optional unfree unRAR licensed code
1238− </para>
1239− </listitem>
1240− <listitem>
1241− <para>
1242− The <literal>vim.customize</literal> function produced by
1243− <literal>vimUtils.makeCustomizable</literal> now has a
1244− slightly different interface:
1245− </para>
1246− <itemizedlist spacing="compact">
1247− <listitem>
1248− <para>
1249− The wrapper now includes everything in the given Vim
1250− derivation if <literal>name</literal> is
1251− <literal>&quot;vim&quot;</literal> (the default). This
1252− makes the <literal>wrapManual</literal> argument obsolete,
1253− but this behavior can be overriden by setting the
1254− <literal>standalone</literal> argument.
1255− </para>
1256− </listitem>
1257− <listitem>
1258− <para>
1259− All the executables present in the given derivation (or,
1260− in <literal>standalone</literal> mode, only the
1261− <literal>*vim</literal> ones) are wrapped. This makes the
1262− <literal>wrapGui</literal> argument obsolete.
1263− </para>
1264− </listitem>
1265− <listitem>
1266− <para>
1267− The <literal>vimExecutableName</literal> and
1268− <literal>gvimExecutableName</literal> arguments were
1269− replaced by a single <literal>executableName</literal>
1270− argument in which the shell variable
1271− <literal>$exe</literal> can be used to refer to the
1272− wrapped executable’s name.
1273− </para>
1274− </listitem>
1275− </itemizedlist>
1276− <para>
1277− See the comments in
1278− <literal>pkgs/applications/editors/vim/plugins/vim-utils.nix</literal>
1279− for more details.
1280− </para>
1281− <para>
1282− <literal>vimUtils.vimWithRC</literal> was removed. You should
1283− instead use <literal>customize</literal> on a Vim derivation,
1284− which now accepts <literal>vimrcFile</literal> and
1285− <literal>gvimrcFile</literal> arguments.
1286− </para>
1287− </listitem>
1288− <listitem>
1289− <para>
1290− <literal>tilp2</literal> was removed together with its module
1291− </para>
1292− </listitem>
1293− <listitem>
1294− <para>
1295− The F-PROT antivirus (<literal>fprot</literal> package) and
1296− its service module were removed because it reached
1297− <link xlink:href="https://kb.cyren.com/av-support/index.php?/Knowledgebase/Article/View/434/0/end-of-sale--end-of-life-for-f-prot-and-csam">end-of-life</link>.
1298− </para>
1299− </listitem>
1300− <listitem>
1301− <para>
1302− <literal>bird1</literal> and its modules
1303− <literal>services.bird</literal> as well as
1304− <literal>services.bird6</literal> have been removed. Upgrade
1305− to <literal>services.bird2</literal>.
1306− </para>
1307− </listitem>
1308− <listitem>
1309− <para>
1310− The options
1311− <literal>networking.interfaces.&lt;name&gt;.ipv4.routes</literal>
1312− and
1313− <literal>networking.interfaces.&lt;name&gt;.ipv6.routes</literal>
1314− are no longer ignored when using networkd instead of the
1315− default scripted network backend by setting
1316− <literal>networking.useNetworkd</literal> to
1317− <literal>true</literal>.
1318− </para>
1319− </listitem>
1320− <listitem>
1321− <para>
1322− The <literal>miller</literal> package has been upgraded from
1323− 5.10.3 to
1324− <link xlink:href="https://github.com/johnkerl/miller/releases/tag/v6.2.0">6.2.0</link>.
1325− See
1326− <link xlink:href="https://miller.readthedocs.io/en/latest/new-in-miller-6">What’s
1327− new in Miller 6</link>.
1328− </para>
1329− </listitem>
1330− <listitem>
1331− <para>
1332− MultiMC has been replaced with the fork PolyMC due to upstream
1333− developers being hostile to 3rd party package maintainers.
1334− PolyMC removes all MultiMC branding and is aimed at providing
1335− proper 3rd party packages like the one contained in Nixpkgs.
1336− This change affects the data folder where game instances and
1337− other save and configuration files are stored. Users with
1338− existing installations should rename
1339− <literal>~/.local/share/multimc</literal> to
1340− <literal>~/.local/share/polymc</literal>. The main config
1341− file’s path has also moved from
1342− <literal>~/.local/share/multimc/multimc.cfg</literal> to
1343− <literal>~/.local/share/polymc/polymc.cfg</literal>.
1344− </para>
1345− </listitem>
1346− <listitem>
1347− <para>
1348− <literal>systemd-nspawn@.service</literal> settings have been
1349− reverted to the default systemd behaviour. User namespaces are
1350− now activated by default. If you want to keep running nspawn
1351− containers without user namespaces you need to set
1352− <literal>systemd.nspawn.&lt;name&gt;.execConfig.PrivateUsers = false</literal>
1353− </para>
1354− </listitem>
1355− <listitem>
1356− <para>
1357− <literal>systemd-shutdown</literal> is now properly linked on
1358− shutdown to unmount all filesystems and device mapper devices
1359− cleanly. This can be disabled using
1360− <literal>systemd.shutdownRamfs.enable</literal>.
1361− </para>
1362− </listitem>
1363− <listitem>
1364− <para>
1365− The Tor SOCKS proxy is now actually disabled if
1366− <literal>services.tor.client.enable</literal> is set to
1367− <literal>false</literal> (the default). If you are using this
1368− functionality but didn’t change the setting or set it to
1369− <literal>false</literal>, you now need to set it to
1370− <literal>true</literal>.
1371− </para>
1372− </listitem>
1373− <listitem>
1374− <para>
1375− <literal>services.github-runner</literal> has been hardened.
1376− Notably address families and system calls have been
1377− restricted, which may adversely affect some kinds of testing,
1378− e.g. using <literal>AF_BLUETOOTH</literal> to test bluetooth
1379− devices.
1380− </para>
1381− </listitem>
1382− <listitem>
1383− <para>
1384− The terraform 0.12 compatibility has been removed and the
1385− <literal>terraform.withPlugins</literal> and
1386− <literal>terraform-providers.mkProvider</literal>
1387− implementations simplified. Providers now need to be stored
1388− under
1389− <literal>$out/libexec/terraform-providers/&lt;registry&gt;/&lt;owner&gt;/&lt;name&gt;/&lt;version&gt;/&lt;os&gt;_&lt;arch&gt;/terraform-provider-&lt;name&gt;_v&lt;version&gt;</literal>
1390− (which mkProvider does).
1391− </para>
1392− <para>
1393− This breaks back-compat so it’s not possible to mix-and-match
1394− with previous versions of nixpkgs. In exchange, it now becomes
1395− possible to use the providers from
1396− <link xlink:href="https://github.com/numtide/nixpkgs-terraform-providers-bin">nixpkgs-terraform-providers-bin</link>
1397− directly.
1398− </para>
1399− </listitem>
1400− <listitem>
1401− <para>
1402− The <literal>dendrite</literal> package has been upgraded from
1403− 0.5.1 to
1404− <link xlink:href="https://github.com/matrix-org/dendrite/releases/tag/v0.6.5">0.6.5</link>.
1405− Instances configured with split sqlite databases, which has
1406− been the default in NixOS, require merging of the federation
1407− sender and signing key databases. See upstream
1408− <link xlink:href="https://github.com/matrix-org/dendrite/releases/tag/v0.6.0">release
1409− notes</link> on version 0.6.0 for details on database changes.
1410− </para>
1411− </listitem>
1412− <listitem>
1413− <para>
1414− The existing <literal>pkgs.opentelemetry-collector</literal>
1415− has been moved to
1416− <literal>pkgs.opentelemetry-collector-contrib</literal> to
1417− match the actual source being the <quote>contrib</quote>
1418− edition. <literal>pkgs.opentelemetry-collector</literal> is
1419− now the actual core release of opentelemetry-collector. If you
1420− use the community contributions you should change the package
1421− you refer to. If you don’t need them update your commands from
1422− <literal>otelcontribcol</literal> to
1423− <literal>otelcorecol</literal> and enjoy a 7x smaller binary.
1424− </para>
1425− </listitem>
1426− <listitem>
1427− <para>
1428− <literal>services.zookeeper</literal> has a new option
1429− <literal>jre</literal> for specifying the JRE to start
1430− zookeeper with. It defaults to the JRE that
1431− <literal>pkgs.zookeeper</literal> was wrapped with, instead of
1432− <literal>pkgs.jre</literal>. This changes the JRE to
1433− <literal>pkgs.jdk11_headless</literal> by default.
1434− </para>
1435− </listitem>
1436− <listitem>
1437− <para>
1438− <literal>pkgs.pgadmin</literal> now refers to
1439− <literal>pkgs.pgadmin4</literal>. <literal>pgadmin3</literal>
1440− has been removed.
1441− </para>
1442− </listitem>
1443− <listitem>
1444− <para>
1445− <literal>pkgs.noto-fonts-cjk</literal> is now deprecated in
1446− favor of <literal>pkgs.noto-fonts-cjk-sans</literal> and
1447− <literal>pkgs.noto-fonts-cjk-serif</literal> because they each
1448− have different release schedules. To maintain compatibility
1449− with prior releases of Nixpkgs,
1450− <literal>pkgs.noto-fonts-cjk</literal> is currently an alias
1451− of <literal>pkgs.noto-fonts-cjk-sans</literal> and doesn’t
1452− include serif fonts.
1453− </para>
1454− </listitem>
1455− <listitem>
1456− <para>
1457− <literal>pkgs.epgstation</literal> has been upgraded from v1
1458− to v2, resulting in incompatible changes in the database
1459− scheme and configuration format.
1460− </para>
1461− </listitem>
1462− <listitem>
1463− <para>
1464− Some top-level settings under
1465− <link linkend="opt-services.epgstation.enable">services.epgstation</link>
1466− is now deprecated because it was redudant due to the same
1467− options being present in
1468− <link linkend="opt-services.epgstation.settings">services.epgstation.settings</link>.
1469− </para>
1470− </listitem>
1471− <listitem>
1472− <para>
1473− The option <literal>services.epgstation.basicAuth</literal>
1474− was removed because basic authentication support was dropped
1475− by upstream.
1476− </para>
1477− </listitem>
1478− <listitem>
1479− <para>
1480− The option
1481− <link linkend="opt-services.epgstation.database.passwordFile">services.epgstation.database.passwordFile</link>
1482− no longer has a default value. Make sure to set this option
1483− explicitly before upgrading. Change the database password if
1484− necessary.
1485− </para>
1486− </listitem>
1487− <listitem>
1488− <para>
1489− The
1490− <link linkend="opt-services.epgstation.settings">services.epgstation.settings</link>
1491− option now expects options for <literal>config.yml</literal>
1492− in EPGStation v2.
1493− </para>
1494− </listitem>
1495− <listitem>
1496− <para>
1497− Existing data for the
1498− <link linkend="opt-services.epgstation.enable">services.epgstation</link>
1499− module would have to be backed up prior to the upgrade. To
1500− back up exising data to
1501− <literal>/tmp/epgstation.bak</literal>, run
1502− <literal>sudo -u epgstation epgstation run backup /tmp/epgstation.bak</literal>.
1503− To import that data after to the upgrade, run
1504− <literal>sudo -u epgstation epgstation run v1migrate /tmp/epgstation.bak</literal>
1505− </para>
1506− </listitem>
1507− <listitem>
1508− <para>
1509− <literal>switch-to-configuration</literal> (the script that is
1510− run when running <literal>nixos-rebuild switch</literal> for
1511− example) has been reworked
1512− </para>
1513− <itemizedlist spacing="compact">
1514− <listitem>
1515− <para>
1516− The interface that allows activation scripts to restart
1517− units has been streamlined. Restarting and reloading is
1518− now done by a single file
1519− <literal>/run/nixos/activation-restart-list</literal> that
1520− honors <literal>restartIfChanged</literal> and
1521− <literal>reloadIfChanged</literal> of the units.
1522− </para>
1523− <itemizedlist spacing="compact">
1524− <listitem>
1525− <para>
1526− Preferring to reload instead of restarting can still
1527− be achieved using
1528− <literal>/run/nixos/activation-reload-list</literal>.
1529− </para>
1530− </listitem>
1531− </itemizedlist>
1532− </listitem>
1533− <listitem>
1534− <para>
1535− The script now uses a proper ini-file parser to parse
1536− systemd units. Some values are now only searched in one
1537− section instead of in the entire unit. This is only
1538− relevant for units that don’t use the NixOS systemd moule.
1539− </para>
1540− <itemizedlist spacing="compact">
1541− <listitem>
1542− <para>
1543− <literal>RefuseManualStop</literal>,
1544− <literal>X-OnlyManualStart</literal>,
1545− <literal>X-StopOnRemoval</literal>,
1546− <literal>X-StopOnReconfiguration</literal> are only
1547− searched in the <literal>[Unit]</literal> section
1548− </para>
1549− </listitem>
1550− <listitem>
1551− <para>
1552− <literal>X-ReloadIfChanged</literal>,
1553− <literal>X-RestartIfChanged</literal>,
1554− <literal>X-StopIfChanged</literal> are only searched
1555− in the <literal>[Service]</literal> section
1556− </para>
1557− </listitem>
1558− </itemizedlist>
1559− </listitem>
1560− </itemizedlist>
1561− </listitem>
1562− <listitem>
1563− <para>
1564− The <literal>services.bookstack.cacheDir</literal> option has
1565− been removed, since the cache directory is now handled by
1566− systemd.
1567− </para>
1568− </listitem>
1569− <listitem>
1570− <para>
1571− The <literal>services.bookstack.extraConfig</literal> option
1572− has been replaced by
1573− <literal>services.bookstack.config</literal> which implements
1574− a
1575− <link xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">settings-style</link>
1576− configuration.
1577− </para>
1578− </listitem>
1579− <listitem>
1580− <para>
1581− <literal>lib.assertMsg</literal> and
1582− <literal>lib.assertOneOf</literal> no longer return
1583− <literal>false</literal> if the passed condition is
1584− <literal>false</literal>, <literal>throw</literal>ing the
1585− given error message instead (which makes the resulting error
1586− message less cluttered). This will not impact the behaviour of
1587− code using these functions as intended, namely as top-level
1588− wrapper for <literal>assert</literal> conditions.
1589− </para>
1590− </listitem>
1591− <listitem>
1592− <para>
1593− The <literal>vpnc</literal> package has been changed to use
1594− GnuTLS instead of OpenSSL by default for licensing reasons.
1595− </para>
1596− </listitem>
1597− <listitem>
1598− <para>
1599− <literal>pkgs.vimPlugins.onedark-nvim</literal> now refers to
1600− <link xlink:href="https://github.com/navarasu/onedark.nvim">navarasu/onedark.nvim</link>
1601− (formerly refers to
1602− <link xlink:href="https://github.com/olimorris/onedarkpro.nvim">olimorris/onedarkpro.nvim</link>).
1603− </para>
1604− </listitem>
1605− <listitem>
1606− <para>
1607− <literal>services.pipewire.enable</literal> will default to
1608− enabling the WirePlumber session manager instead of
1609− pipewire-media-session. pipewire-media-session is deprecated
1610− by upstream and not recommended, but can still be manually
1611− enabled by setting
1612− <literal>services.pipewire.media-session.enable</literal> to
1613− <literal>true</literal> and
1614− <literal>services.pipewire.wireplumber.enable</literal> to
1615− <literal>false</literal>.
1616− </para>
1617− </listitem>
1618− <listitem>
1619− <para>
1620− <literal>pkgs.makeDesktopItem</literal> has been refactored to
1621− provide a more idiomatic API. Specifically:
1622− </para>
1623− <itemizedlist spacing="compact">
1624− <listitem>
1625− <para>
1626− All valid options as of FDO Desktop Entry specification
1627− version 1.4 can now be passed in as explicit arguments
1628− </para>
1629− </listitem>
1630− <listitem>
1631− <para>
1632− <literal>exec</literal> can now be null, for entries that
1633− are not of type Application
1634− </para>
1635− </listitem>
1636− <listitem>
1637− <para>
1638− <literal>mimeType</literal> argument is renamed to
1639− <literal>mimeTypes</literal> for consistency
1640− </para>
1641− </listitem>
1642− <listitem>
1643− <para>
1644− <literal>mimeTypes</literal>,
1645− <literal>categories</literal>,
1646− <literal>implements</literal>,
1647− <literal>keywords</literal>, <literal>onlyShowIn</literal>
1648− and <literal>notShowIn</literal> take lists of strings
1649− instead of one string with semicolon separators
1650− </para>
1651− </listitem>
1652− <listitem>
1653− <para>
1654− <literal>extraDesktopEntries</literal> renamed to
1655− <literal>extraConfig</literal> for consistency
1656− </para>
1657− </listitem>
1658− <listitem>
1659− <para>
1660− Actions should now be provided as an attrset
1661− <literal>actions</literal>, the <literal>Actions</literal>
1662− line will be autogenerated.
1663− </para>
1664− </listitem>
1665− <listitem>
1666− <para>
1667− <literal>extraEntries</literal> is removed.
1668− </para>
1669− </listitem>
1670− <listitem>
1671− <para>
1672− Additional validation is added both at eval time and at
1673− build time.
1674− </para>
1675− </listitem>
1676− </itemizedlist>
1677− <para>
1678− See the <literal>vscode</literal> package for a more detailed
1679− example.
1680− </para>
1681− </listitem>
1682− <listitem>
1683− <para>
1684− Existing <literal>resholve*</literal> functions have been
1685− renamed and nested under <literal>pkgs.resholve</literal>.
1686− Update uses to:
1687− </para>
1688− <itemizedlist spacing="compact">
1689− <listitem>
1690− <para>
1691− <literal>resholvePackage</literal> -&gt;
1692− <literal>resholve.mkDerivation</literal>
1693− </para>
1694− </listitem>
1695− <listitem>
1696− <para>
1697− <literal>resholveScript</literal> -&gt;
1698− <literal>resholve.writeScript</literal>
1699− </para>
1700− </listitem>
1701− <listitem>
1702− <para>
1703− <literal>resholveScriptBin</literal> -&gt;
1704− <literal>resholve.writeScriptBin</literal>
1705− </para>
1706− </listitem>
1707− </itemizedlist>
1708− </listitem>
1709− <listitem>
1710− <para>
1711− <literal>pkgs.cosmopolitan</literal> no longer provides the
1712− <literal>cosmoc</literal> command. It has been moved to
1713− <literal>pkgs.cosmoc</literal>.
1714− </para>
1715− </listitem>
1716− <listitem>
1717− <para>
1718− <literal>pkgs.graalvmXX-ce</literal> packages no longer
1719− provide support for Python/Ruby/WASM, instead focusing only in
1720− Java and Native Image Support. If you need to add support
1721− back, please see the
1722− <literal>pkgs.graalvmCEPackages.mkGraal</literal> function to
1723− create your own customized version of GraalVM with support for
1724− what you need.
1725− </para>
1726− </listitem>
1727− </itemizedlist>
1728− </section>
1729− <section xml:id="sec-release-22.05-notable-changes">
1730− <title>Other Notable Changes</title>
1731− <itemizedlist>
1732− <listitem>
1733− <para>
1734− The option
1735− <link linkend="opt-services.redis.servers">services.redis.servers</link>
1736− was added to support per-application
1737− <literal>redis-server</literal> which is more secure since
1738− Redis databases are only mere key prefixes without any
1739− configuration or ACL of their own. Backward-compatibility is
1740− preserved by mapping old
1741− <literal>services.redis.settings</literal> to
1742− <literal>services.redis.servers.&quot;&quot;.settings</literal>,
1743− but you are strongly encouraged to name each
1744− <literal>redis-server</literal> instance after the application
1745− using it, instead of keeping that nameless one. Except for the
1746− nameless
1747− <literal>services.redis.servers.&quot;&quot;</literal> still
1748− accessible at <literal>127.0.0.1:6379</literal>, and to the
1749− members of the Unix group <literal>redis</literal> through the
1750− Unix socket <literal>/run/redis/redis.sock</literal>, all
1751− other <literal>services.redis.servers.${serverName}</literal>
1752− are only accessible by default to the members of the Unix
1753− group <literal>redis-${serverName}</literal> through the Unix
1754− socket <literal>/run/redis-${serverName}/redis.sock</literal>.
1755− </para>
1756− </listitem>
1757− <listitem>
1758− <para>
1759− The option
1760− <link linkend="opt-virtualisation.vmVariant">virtualisation.vmVariant</link>
1761− was added to allow users to make changes to the
1762− <literal>nixos-rebuild build-vm</literal> configuration that
1763− do not apply to their normal system.
1764− </para>
1765− <para>
1766− The <literal>config.system.build.vm</literal> attribute now
1767− always exists and defaults to the value from
1768− <literal>vmVariant</literal>. Configurations that import the
1769− <literal>virtualisation/qemu-vm.nix</literal> module
1770− themselves will override this value, such that
1771− <literal>vmVariant</literal> is not used.
1772− </para>
1773− <para>
1774− Similarly
1775− <link linkend="opt-virtualisation.vmVariantWithBootLoader">virtualisation.vmVariantWithBootloader</link>
1776− was added.
1777− </para>
1778− </listitem>
1779− <listitem>
1780− <para>
1781− The configuration portion of the <literal>nix-daemon</literal>
1782− module has been reworked and exposed as
1783− <link xlink:href="options.html#opt-nix-settings">nix.settings</link>:
1784− </para>
1785− <itemizedlist spacing="compact">
1786− <listitem>
1787− <para>
1788− Legacy options have been mapped to the corresponding
1789− options under under
1790− <link xlink:href="options.html#opt-nix.settings">nix.settings</link>
1791− and will be deprecated when NixOS 21.11 reaches end of
1792− life.
1793− </para>
1794− </listitem>
1795− <listitem>
1796− <para>
1797− <link xlink:href="options.html#opt-nix.buildMachines.publicHostKey">nix.buildMachines.publicHostKey</link>
1798− has been added.
1799− </para>
1800− </listitem>
1801− </itemizedlist>
1802− </listitem>
1803− <listitem>
1804− <para>
1805− The
1806− <literal>writers.writePyPy2</literal>/<literal>writers.writePyPy3</literal>
1807− and corresponding
1808− <literal>writers.writePyPy2Bin</literal>/<literal>writers.writePyPy3Bin</literal>
1809− convenience functions to create executable Python 2/3 scripts
1810− using the PyPy interpreter were added.
1811− </para>
1812− </listitem>
1813− <listitem>
1814− <para>
1815− Some improvements have been made to the
1816− <literal>hadoop</literal> module:
1817− </para>
1818− <itemizedlist spacing="compact">
1819− <listitem>
1820− <para>
1821− A <literal>gatewayRole</literal> option has been added,
1822− for deploying hadoop cluster configuration files to a node
1823− that does not have any active services
1824− </para>
1825− </listitem>
1826− <listitem>
1827− <para>
1828− Support for older versions of hadoop have been added to
1829− the module
1830− </para>
1831− </listitem>
1832− <listitem>
1833− <para>
1834− Overriding and extending site XML files has been made
1835− easier
1836− </para>
1837− </listitem>
1838− </itemizedlist>
1839− </listitem>
1840− <listitem>
1841− <para>
1842− The auto-upgrade service now accepts persistent (default:
1843− true) parameter. By default auto-upgrade will now run
1844− immediately if it would have been triggered at least once
1845− during the time when the timer was inactive.
1846− </para>
1847− </listitem>
1848− <listitem>
1849− <para>
1850− If you are using Wayland you can choose to use the Ozone
1851− Wayland support in Chrome and several Electron apps by setting
1852− the environment variable <literal>NIXOS_OZONE_WL=1</literal>
1853− (for example via
1854− <literal>environment.sessionVariables.NIXOS_OZONE_WL = &quot;1&quot;</literal>).
1855− This is not enabled by default because Ozone Wayland is still
1856− under heavy development and behavior is not always flawless.
1857− Furthermore, not all Electron apps use the latest Electron
1858− versions.
1859− </para>
1860− </listitem>
1861− <listitem>
1862− <para>
1863− A new option group
1864− <literal>systemd.network.wait-online</literal> was added, with
1865− options to configure
1866− <literal>systemd-networkd-wait-online.service</literal>:
1867− </para>
1868− <itemizedlist spacing="compact">
1869− <listitem>
1870− <para>
1871− <literal>anyInterface</literal> allows specifying that the
1872− network should be considered online when <emphasis>at
1873− least one</emphasis> interface is online (useful on
1874− laptops)
1875− </para>
1876− </listitem>
1877− <listitem>
1878− <para>
1879− <literal>timeout</literal> defines how long to wait for
1880− the network to come online
1881− </para>
1882− </listitem>
1883− <listitem>
1884− <para>
1885− <literal>extraArgs</literal> for everything else
1886− </para>
1887− </listitem>
1888− </itemizedlist>
1889− </listitem>
1890− <listitem>
1891− <para>
1892− The <literal>influxdb2</literal> package was split into
1893− <literal>influxdb2-server</literal> and
1894− <literal>influxdb2-cli</literal>, matching the split that took
1895− place upstream. A combined <literal>influxdb2</literal>
1896− package is still provided in this release for backwards
1897− compatibilty, but will be removed at a later date.
1898− </para>
1899− </listitem>
1900− <listitem>
1901− <para>
1902− The <literal>unifi</literal> package was switched from
1903− <literal>unifi6</literal> to <literal>unifi7</literal>. Direct
1904− downgrades from Unifi 7 to Unifi 6 are not possible and
1905− require restoring from a backup made by Unifi 6.
1906− </para>
1907− </listitem>
1908− <listitem>
1909− <para>
1910− <literal>programs.zsh.autosuggestions.strategy</literal> now
1911− takes a list of strings instead of a string.
1912− </para>
1913− </listitem>
1914− <listitem>
1915− <para>
1916− The <literal>asterisk</literal> and
1917− <literal>asterisk-stable</literal> packages were switched from
1918− <literal>asterisk_18</literal> to the newly-packaged
1919− <literal>asterisk_19</literal>. Asterisk 13 and 17 have been
1920− removed as they have reached their end of life.
1921− </para>
1922− </listitem>
1923− <listitem>
1924− <para>
1925− The <literal>services.unifi.openPorts</literal> option default
1926− value of <literal>true</literal> is now deprecated and will be
1927− changed to <literal>false</literal> in 22.11. Configurations
1928− using this default will print a warning when rebuilt.
1929− </para>
1930− </listitem>
1931− <listitem>
1932− <para>
1933− The <literal>services.unifi-video.openPorts</literal> option
1934− default value of <literal>true</literal> is now deprecated and
1935− will be changed to <literal>false</literal> in 22.11.
1936− Configurations using this default will print a warning when
1937− rebuilt.
1938− </para>
1939− </listitem>
1940− <listitem>
1941− <para>
1942− <literal>security.acme</literal> certificates will now
1943− correctly check for CA revokation before reaching their
1944− minimum age.
1945− </para>
1946− </listitem>
1947− <listitem>
1948− <para>
1949− Removing domains from
1950− <literal>security.acme.certs._name_.extraDomainNames</literal>
1951− will now correctly remove those domains during rebuild/renew.
1952− </para>
1953− </listitem>
1954− <listitem>
1955− <para>
1956− MariaDB is now offered in several versions, not just the
1957− newest one. So if you have a need for running MariaDB 10.4 for
1958− example, you can now just set
1959− <literal>services.mysql.package = pkgs.mariadb_104;</literal>.
1960− In general, it is recommended to run the newest version, to
1961− get the newest features, while sticking with an LTS version
1962− will most likely provide a more stable experience. Sometimes
1963− software is also incompatible with the newest version of
1964− MariaDB.
1965− </para>
1966− </listitem>
1967− <listitem>
1968− <para>
1969− The option
1970− <link linkend="opt-programs.ssh.enableAskPassword">programs.ssh.enableAskPassword</link>
1971− was added, decoupling the setting of
1972− <literal>SSH_ASKPASS</literal> from
1973− <literal>services.xserver.enable</literal>. This allows easy
1974− usage in non-X11 environments, e.g. Wayland.
1975− </para>
1976− </listitem>
1977− <listitem>
1978− <para>
1979− <link linkend="opt-programs.ssh.knownHosts">programs.ssh.knownHosts</link>
1980− has gained an <literal>extraHostNames</literal> option to
1981− augment <literal>hostNames</literal>. It is now possible to
1982− use the attribute name of a <literal>knownHosts</literal>
1983− entry as the primary host name and specify secondary host
1984− names using <literal>extraHostNames</literal> without having
1985− to duplicate the primary host name.
1986− </para>
1987− </listitem>
1988− <listitem>
1989− <para>
1990− The <literal>services.stubby</literal> module was converted to
1991− a
1992− <link xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">settings-style</link>
1993− configuration.
1994− </para>
1995− </listitem>
1996− <listitem>
1997− <para>
1998− The option
1999− <link linkend="opt-services.xserver.desktopManager.runXdgAutostartIfNone">services.xserver.desktopManager.runXdgAutostartIfNone</link>
2000− was added in order to automatically run XDG autostart files
2001− for sessions without a desktop manager. This replaces helpers
2002− like the <literal>dex</literal> package.
2003− </para>
2004− </listitem>
2005− <listitem>
2006− <para>
2007− When setting
2008− <link linkend="opt-i18n.inputMethod.enabled">i18n.inputMethod.enabled</link>
2009− to <literal>fcitx5</literal>, it no longer creates
2010− corresponding systemd user services. It now relies on XDG
2011− autostart files to start and work properly in your desktop
2012− sessions. If you are using only a window manager without a
2013− desktop manager, you need to enable
2014− <literal>services.xserver.desktopManager.runXdgAutostartIfNone</literal>
2015− or using the <literal>dex</literal> package to make
2016− <literal>fcitx5</literal> work.
2017− </para>
2018− </listitem>
2019− <listitem>
2020− <para>
2021− A new module was added for the Envoy reverse proxy, providing
2022− the options <literal>services.envoy.enable</literal> and
2023− <literal>services.envoy.settings</literal>.
2024− </para>
2025− </listitem>
2026− <listitem>
2027− <para>
2028− The option <literal>services.duplicati.dataDir</literal> has
2029− been added to allow changing the location of duplicati’s
2030− files.
2031− </para>
2032− </listitem>
2033− <listitem>
2034− <para>
2035− The options <literal>boot.extraModprobeConfig</literal> and
2036− <literal>boot.blacklistedKernelModules</literal> now also take
2037− effect in the initrd by copying the file
2038− <literal>/etc/modprobe.d/nixos.conf</literal> into the initrd.
2039− </para>
2040− </listitem>
2041− <listitem>
2042− <para>
2043− <literal>nixos-generate-config</literal> now puts the dhcp
2044− configuration in <literal>hardware-configuration.nix</literal>
2045− instead of <literal>configuration.nix</literal>.
2046− </para>
2047− </listitem>
2048− <listitem>
2049− <para>
2050− ORY Kratos was updated to version 0.9.0-alpha.3, which
2051− introduces some breaking changes:
2052− </para>
2053− <itemizedlist spacing="compact">
2054− <listitem>
2055− <para>
2056− All endpoints at the Admin API are now exposed at
2057− <literal>/admin/</literal>. For example, endpoint
2058− <literal>https://kratos:4434/identities</literal> is now
2059− exposed at
2060− <literal>https://kratos:4434/admin/identities</literal>
2061− </para>
2062− </listitem>
2063− <listitem>
2064− <para>
2065− Configuration key
2066− <literal>selfservice.whitelisted_return_urls</literal> has
2067− been renamed to <literal>allowed_return_urls</literal>
2068− </para>
2069− </listitem>
2070− <listitem>
2071− <para>
2072− The <literal>password_identifier</literal> form field of
2073− the password login strategy has been renamed to
2074− <literal>identifier</literal> to make compatibility with
2075− passwordless flows possible.
2076− </para>
2077− </listitem>
2078− <listitem>
2079− <para>
2080− Instead of having a global
2081− <literal>default_schema_url</literal> which developers
2082− used to update their schema, you now need to define the
2083− <literal>default_schema_id</literal> which must reference
2084− schema ID in your config.
2085− </para>
2086− </listitem>
2087− <listitem>
2088− <para>
2089− Calling <literal>/self-service/recovery</literal> without
2090− flow ID or with an invalid flow ID while authenticated
2091− will now respond with an error instead of redirecting to
2092− the default page.
2093− </para>
2094− </listitem>
2095− <listitem>
2096− <para>
2097− If you are relying on the SQLite images, update your
2098− Docker Pull commands as follows:
2099− </para>
2100− <itemizedlist spacing="compact">
2101− <listitem>
2102− <para>
2103− <literal>docker pull oryd/kratos:{version}</literal>
2104− </para>
2105− </listitem>
2106− </itemizedlist>
2107− </listitem>
2108− <listitem>
2109− <para>
2110− Additionally, all passwords now have to be at least 8
2111− characters long.
2112− </para>
2113− </listitem>
2114− <listitem>
2115− <para>
2116− For more details, see:
2117− </para>
2118− <itemizedlist spacing="compact">
2119− <listitem>
2120− <para>
2121− <link xlink:href="https://github.com/ory/kratos/releases/tag/v0.8.1-alpha.1">Release
2122− Notes for v0.8.1-alpha-1</link>
2123− </para>
2124− </listitem>
2125− <listitem>
2126− <para>
2127− <link xlink:href="https://github.com/ory/kratos/releases/tag/v0.8.2-alpha.1">Release
2128− Notes for v0.8.2-alpha-1</link>
2129− </para>
2130− </listitem>
2131− <listitem>
2132− <para>
2133− <link xlink:href="https://github.com/ory/kratos/releases/tag/v0.9.0-alpha.1">Release
2134− Notes for v0.9.0-alpha-1</link>
2135− </para>
2136− </listitem>
2137− <listitem>
2138− <para>
2139− <link xlink:href="https://github.com/ory/kratos/releases/tag/v0.9.0-alpha.3">Release
2140− Notes for v0.9.0-alpha-3</link>
2141− </para>
2142− </listitem>
2143− </itemizedlist>
2144− </listitem>
2145− </itemizedlist>
2146− </listitem>
2147− <listitem>
2148− <para>
2149− <literal>fetchFromSourcehut</literal> now allows fetching
2150− repositories recursively using <literal>fetchgit</literal> or
2151− <literal>fetchhg</literal> if the argument
2152− <literal>fetchSubmodules</literal> is set to
2153− <literal>true</literal>.
2154− </para>
2155− </listitem>
2156− <listitem>
2157− <para>
2158− A module for declarative configuration of openconnect VPN
2159− profiles was added under
2160− <literal>networking.openconnect</literal>.
2161− </para>
2162− </listitem>
2163− <listitem>
2164− <para>
2165− The <literal>element-desktop</literal> package now has an
2166− <literal>useKeytar</literal> option (defaults to
2167− <literal>true</literal>), which allows disabling
2168− <literal>keytar</literal> and in turn
2169− <literal>libsecret</literal> usage (which binds to native
2170− credential managers / keychain libraries).
2171− </para>
2172− </listitem>
2173− <listitem>
2174− <para>
2175− The option <literal>services.thelounge.plugins</literal> has
2176− been added to allow installing plugins for The Lounge. Plugins
2177− can be found in
2178− <literal>pkgs.theLoungePlugins.plugins</literal> and
2179− <literal>pkgs.theLoungePlugins.themes</literal>.
2180− </para>
2181− </listitem>
2182− <listitem>
2183− <para>
2184− The option
2185− <literal>services.xserver.videoDriver = [ &quot;nvidia&quot; ];</literal>
2186− will now also install
2187− <link xlink:href="https://github.com/elFarto/nvidia-vaapi-driver">nvidia
2188− VA-API drivers</link> by default.
2189− </para>
2190− </listitem>
2191− <listitem>
2192− <para>
2193− The <literal>firmwareLinuxNonfree</literal> package has been
2194− renamed to <literal>linux-firmware</literal>.
2195− </para>
2196− </listitem>
2197− <listitem>
2198− <para>
2199− It is now possible to specify wordlists to include as handy to
2200− access environment variables using the
2201− <literal>config.environment.wordlist</literal> configuration
2202− options.
2203− </para>
2204− </listitem>
2205− <listitem>
2206− <para>
2207− The <literal>services.mbpfan</literal> module was converted to
2208− a
2209− <link xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">RFC
2210− 0042</link> configuration.
2211− </para>
2212− </listitem>
2213− <listitem>
2214− <para>
2215− The default value for
2216− <literal>programs.spacefm.settings.graphical_su</literal> got
2217− unset. It previously pointed to <literal>gksu</literal> which
2218− has been removed.
2219− </para>
2220− </listitem>
2221− <listitem>
2222− <para>
2223− A new module was added for the
2224− <link xlink:href="https://starship.rs/">Starship</link> shell
2225− prompt, providing the options
2226− <literal>programs.starship.enable</literal> and
2227− <literal>programs.starship.settings</literal>.
2228− </para>
2229− </listitem>
2230− <listitem>
2231− <para>
2232− The <link xlink:href="https://dino.im">Dino</link> XMPP client
2233− was updated to 0.3, adding support for audio and video calls.
2234− </para>
2235− </listitem>
2236− <listitem>
2237− <para>
2238− <literal>services.mattermost.plugins</literal> has been added
2239− to allow the declarative installation of Mattermost plugins.
2240− Plugins are automatically repackaged using autoPatchelf.
2241− </para>
2242− </listitem>
2243− <listitem>
2244− <para>
2245− <link linkend="opt-services.logrotate.enable">services.logrotate.enable</link>
2246− now defaults to true if any rotate path has been defined, and
2247− some paths have been added by default.
2248− </para>
2249− </listitem>
2250− <listitem>
2251− <para>
2252− The logrotate module also has been updated to freeform syntax:
2253− <link linkend="opt-services.logrotate.paths">services.logrotate.paths</link>
2254− and
2255− <link linkend="opt-services.logrotate.extraConfig">services.logrotate.extraConfig</link>
2256− will work, but issue deprecation warnings and
2257− <link linkend="opt-services.logrotate.settings">services.logrotate.settings</link>
2258− should now be used instead.
2259− </para>
2260− </listitem>
2261− <listitem>
2262− <para>
2263− <literal>security.pam.ussh</literal> has been added, which
2264− allows authorizing PAM sessions based on SSH
2265− <emphasis>certificates</emphasis> held within an SSH agent,
2266− using
2267− <link xlink:href="https://github.com/uber/pam-ussh">pam-ussh</link>.
2268− </para>
2269− </listitem>
2270− <listitem>
2271− <para>
2272− The <literal>vscode-extensions.ionide.ionide-fsharp</literal>
2273− package has been updated to 6.0.0 and now requires .NET 6.0.
2274− </para>
2275− </listitem>
2276− <listitem>
2277− <para>
2278− The <literal>zrepl</literal> package has been updated from
2279− 0.4.0 to 0.5:
2280− </para>
2281− <itemizedlist spacing="compact">
2282− <listitem>
2283− <para>
2284− The RPC protocol version was bumped; all zrepl daemons in
2285− a setup must be updated and restarted before replication
2286− can resume.
2287− </para>
2288− </listitem>
2289− <listitem>
2290− <para>
2291− A bug involving encrypt-on-receive has been fixed. Read
2292− the
2293− <link xlink:href="https://zrepl.github.io/configuration/sendrecvoptions.html#job-recv-options-placeholder">zrepl
2294− documentation</link> and check the output of
2295− <literal>zfs get -r encryption,zrepl:placeholder PATH_TO_ROOTFS</literal>
2296− on the receiver.
2297− </para>
2298− </listitem>
2299− </itemizedlist>
2300− </listitem>
2301− <listitem>
2302− <para>
2303− The <literal>polybar</literal> package has been updated from
2304− 3.5.7 to 3.6.2. See
2305− <link xlink:href="https://github.com/polybar/polybar/releases/tag/3.6.0">the
2306− changelog</link> for more details.
2307− </para>
2308− <itemizedlist spacing="compact">
2309− <listitem>
2310− <para>
2311− Breaking changes include changes to escaping rules in
2312− configuration values, changes in behavior when
2313− encountering invalid tag names, and changes to
2314− inter-process-messaging (IPC).
2315− </para>
2316− </listitem>
2317− </itemizedlist>
2318− </listitem>
2319− <listitem>
2320− <para>
2321− Renamed option
2322− <literal>services.openssh.challengeResponseAuthentication</literal>
2323− to
2324− <literal>services.openssh.kbdInteractiveAuthentication</literal>.
2325− Reason is that the old name has been deprecated upstream.
2326− Using the old option name will still work, but produce a
2327− warning.
2328− </para>
2329− </listitem>
2330− <listitem>
2331− <para>
2332− <literal>services.autorandr</literal> now allows for adding
2333− hooks and profiles declaratively.
2334− </para>
2335− </listitem>
2336− <listitem>
2337− <para>
2338− The <literal>pomerium-cli</literal> command has been moved out
2339− of the <literal>pomerium</literal> package into the
2340− <literal>pomerium-cli</literal> package, following upstream’s
2341− repository split. If you are using the
2342− <literal>pomerium-cli</literal> command, you should now
2343− install the <literal>pomerium-cli</literal> package.
2344− </para>
2345− </listitem>
2346− <listitem>
2347− <para>
2348− The option
2349− <link linkend="opt-networking.networkmanager.enableFccUnlock">services.networking.networkmanager.enableFccUnlock</link>
2350− was added to support FCC unlock procedures. Since release
2351− 1.18.4, the ModemManager daemon no longer automatically
2352− performs the FCC unlock procedure by default. See
2353− <link xlink:href="https://modemmanager.org/docs/modemmanager/fcc-unlock/">the
2354− docs</link> for more details.
2355− </para>
2356− </listitem>
2357− <listitem>
2358− <para>
2359− <literal>programs.tmux</literal> has a new option
2360− <literal>plugins</literal> that accepts a list of packages
2361− from the <literal>tmuxPlugins</literal> group. The specified
2362− packages are added to the system and loaded by
2363− <literal>tmux</literal>.
2364− </para>
2365− </listitem>
2366− <listitem>
2367− <para>
2368− The polkit service, available at
2369− <literal>security.polkit.enable</literal>, is now disabled by
2370− default. It will automatically be enabled through services and
2371− desktop environments as needed.
2372− </para>
2373− </listitem>
2374− <listitem>
2375− <para>
2376− xfsprogs was update to version 5.15, which enables inobtcount
2377− and bigtime by default on filesystem creation. Support for
2378− these features was added in kernel 5.10 and deemed stable in
2379− kernel 5.15. If you want to be able to mount XFS filesystems
2380− created with this release of xfsprogs on kernel releases older
2381− than 5.10, you need to format them with
2382− <literal>mkfs.xfs -m bigtime=0 -m inobtcount=0</literal>.
2383− </para>
2384− </listitem>
2385− <listitem>
2386− <para>
2387− <literal>services.xserver.desktopManager.xfce</literal> now
2388− includes Xfce’s screen locker,
2389− <literal>xfce4-screensaver</literal> that is enabled by
2390− default. You can disable it by setting
2391− <literal>false</literal> to
2392− <link linkend="opt-services.xserver.desktopManager.xfce.enableScreensaver">services.xserver.desktopManager.xfce.enableScreensaver</link>.
2393− </para>
2394− </listitem>
2395− <listitem>
2396− <para>
2397− The <literal>hadoop</literal> package has added support for
2398− <literal>aarch64-linux</literal> and
2399− <literal>aarch64-darwin</literal> as of 3.3.1
2400− (<link xlink:href="https://github.com/NixOS/nixpkgs/pull/158613">#158613</link>).
2401− </para>
2402− </listitem>
2403− <listitem>
2404− <para>
2405− The <literal>R</literal> package now builds again on
2406− <literal>aarch64-darwin</literal>
2407− (<link xlink:href="https://github.com/NixOS/nixpkgs/pull/158992">#158992</link>).
2408− </para>
2409− </listitem>
2410− <listitem>
2411− <para>
2412− The <literal>nss</literal> package was split into
2413− <literal>nss_esr</literal> and <literal>nss_latest</literal>,
2414− with <literal>nss</literal> being an alias for
2415− <literal>nss_esr</literal>. This was done to ease maintenance
2416− of <literal>nss</literal> and dependent high-profile packages
2417− like <literal>firefox</literal>.
2418− </para>
2419− </listitem>
2420− <listitem>
2421− <para>
2422− The Nextcloud module now supports to create a Mysql database
2423− automatically with
2424− <literal>services.nextcloud.database.createLocally</literal>
2425− enabled.
2426− </para>
2427− </listitem>
2428− <listitem>
2429− <para>
2430− The <literal>spark3</literal> package has been updated from
2431− 3.1.2 to 3.2.1
2432− (<link xlink:href="https://github.com/NixOS/nixpkgs/pull/160075">#160075</link>):
2433− </para>
2434− <itemizedlist spacing="compact">
2435− <listitem>
2436− <para>
2437− Testing has been enabled for
2438− <literal>aarch64-linux</literal> in addition to
2439− <literal>x86_64-linux</literal>.
2440− </para>
2441− </listitem>
2442− <listitem>
2443− <para>
2444− The <literal>spark3</literal> package is now usable on
2445− <literal>aarch64-darwin</literal> as a result of
2446− <link xlink:href="https://github.com/NixOS/nixpkgs/pull/158613">#158613</link>
2447− and
2448− <link xlink:href="https://github.com/NixOS/nixpkgs/pull/158992">#158992</link>.
2449− </para>
2450− </listitem>
2451− </itemizedlist>
2452− </listitem>
2453− <listitem>
2454− <para>
2455− The <literal>programs.nncp</literal> options were added for
2456− generating host-global NNCP configuration.
2457− </para>
2458− </listitem>
2459− <listitem>
2460− <para>
2461− The option <literal>services.snapserver.openFirewall</literal>
2462− will no longer default to <literal>true</literal> starting
2463− with NixOS 22.11. Enable it explicitly if you need to control
2464− Snapserver remotely or connect streamig clients from other
2465− hosts.
2466− </para>
2467− </listitem>
2468− </itemizedlist>
2469− </section>
2470−</section>
nixos/doc/manual/installation/building-nixos.chapter.mddeleted−77
@@ -1,77 +0,0 @@
1−# Building a NixOS (Live) ISO {#sec-building-image}
2−
3−Default live installer configurations are available inside `nixos/modules/installer/cd-dvd`.
4−For building other system images, [nixos-generators] is a good place to start looking at.
5−
6−You have two options:
7−
8−- Use any of those default configurations as is
9−- Combine them with (any of) your host config(s)
10−
11−System images, such as the live installer ones, know how to enforce configuration settings
12−on wich they immediately depend in order to work correctly.
13−
14−However, if you are confident, you can opt to override those
15−enforced values with `mkForce`.
16−
17−[nixos-generators]: https://github.com/nix-community/nixos-generators
18−
19−## Practical Instructions {#sec-building-image-instructions}
20−
21−```ShellSession
22−$ git clone https://github.com/NixOS/nixpkgs.git
23−$ cd nixpkgs/nixos
24−$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-minimal.nix default.nix
25−```
26−
27−To check the content of an ISO image, mount it like so:
28−
29−```ShellSession
30−# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
31−```
32−
33−## Additional drivers or firmware {#sec-building-image-drivers}
34−
35−If you need additional (non-distributable) drivers or firmware in the
36−installer, you might want to extend these configurations.
37−
38−For example, to build the GNOME graphical installer ISO, but with support for
39−certain WiFi adapters present in some MacBooks, you can create the following
40−file at `modules/installer/cd-dvd/installation-cd-graphical-gnome-macbook.nix`:
41−
42−```nix
43−{ config, ... }:
44−
45−{
46− imports = [ ./installation-cd-graphical-gnome.nix ];
47−
48− boot.initrd.kernelModules = [ "wl" ];
49−
50− boot.kernelModules = [ "kvm-intel" "wl" ];
51− boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
52−}
53−```
54−
55−Then build it like in the example above:
56−
57−```ShellSession
58−$ git clone https://github.com/NixOS/nixpkgs.git
59−$ cd nixpkgs/nixos
60−$ export NIXPKGS_ALLOW_UNFREE=1
61−$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-graphical-gnome-macbook.nix default.nix
62−```
63−
64−## Technical Notes {#sec-building-image-tech-notes}
65−
66−The config value enforcement is implemented via `mkImageMediaOverride = mkOverride 60;`
67−and therefore primes over simple value assignments, but also yields to `mkForce`.
68−
69−This property allows image designers to implement in semantically correct ways those
70−configuration values upon which the correct functioning of the image depends.
71−
72−For example, the iso base image overrides those file systems which it needs at a minimum
73−for correct functioning, while the installer base image overrides the entire file system
74−layout because there can't be any other guarantees on a live medium than those given
75−by the live medium itself. The latter is especially true befor formatting the target
76−block device(s). On the other hand, the netboot iso only overrides its minimum dependencies
77−since netboot images are always made-to-target.
nixos/doc/manual/installation/installation.xml−1
@@ -14,5 +14,4 @@
1414 <xi:include href="../from_md/installation/installing.chapter.xml" />
1515 <xi:include href="../from_md/installation/changing-config.chapter.xml" />
1616 <xi:include href="../from_md/installation/upgrading.chapter.xml" />
17− <xi:include href="../from_md/installation/building-nixos.chapter.xml" />
1817</part>
nixos/doc/manual/installation/installing-pxe.section.md+2−2
@@ -5,11 +5,11 @@ setup.
55
66These instructions assume that you have an existing PXE or iPXE
77infrastructure and simply want to add the NixOS installer as another
8−option. To build the necessary files from your current version of nixpkgs,
8+option. To build the necessary files from a recent version of nixpkgs,
99you can run:
1010
1111```ShellSession
12−nix-build -A netboot.x86_64-linux '<nixpkgs/nixos/release.nix>'
12+nix-build -A netboot.x86_64-linux nixos/release.nix
1313```
1414
1515This will create a `result` directory containing: \* `bzImage` -- the
nixos/doc/manual/installation/installing-usb.section.md+1−1
@@ -18,7 +18,7 @@ $ diskutil list
1818[..]
1919$ diskutil unmountDisk diskN
2020Unmount of all volumes on diskN was successful
21−$ sudo dd if=nix.iso of=/dev/rdiskN bs=1M
21+$ sudo dd if=nix.iso of=/dev/rdiskN
2222```
2323
2424Using the \'raw\' `rdiskN` device instead of `diskN` completes in
nixos/doc/manual/installation/installing.chapter.md+5−5
@@ -296,11 +296,6 @@ Use the following commands:
296296 specify on which disk the GRUB boot loader is to be installed.
297297 Without it, NixOS cannot boot.
298298
299− : If there are other operating systems running on the machine before
300− installing NixOS, the [](#opt-boot.loader.grub.useOSProber)
301− option can be set to `true` to automatically add them to the grub
302− menu.
303−
304299 UEFI systems
305300
306301 : You *must* set the option [](#opt-boot.loader.systemd-boot.enable)
@@ -312,6 +307,11 @@ Use the following commands:
312307 [`boot.loader.systemd-boot`](#opt-boot.loader.systemd-boot.enable)
313308 as well.
314309
310+ If there are other operating systems running on the machine before
311+ installing NixOS, the [](#opt-boot.loader.grub.useOSProber)
312+ option can be set to `true` to automatically add them to the grub
313+ menu.
314+
315315 If you need to configure networking for your machine the
316316 configuration options are described in [](#sec-networking). In
317317 particular, while wifi is supported on the installation image, it is
nixos/doc/manual/installation/upgrading.chapter.md+8−8
@@ -6,7 +6,7 @@ expressions and associated binaries. The NixOS channels are updated
66automatically from NixOS's Git repository after certain tests have
77passed and all packages have been built. These channels are:
88
9−- *Stable channels*, such as [`nixos-21.11`](https://nixos.org/channels/nixos-21.11).
9+- *Stable channels*, such as [`nixos-21.05`](https://nixos.org/channels/nixos-21.05).
1010 These only get conservative bug fixes and package upgrades. For
1111 instance, a channel update may cause the Linux kernel on your system
1212 to be upgraded from 4.19.34 to 4.19.38 (a minor bug fix), but not
@@ -19,7 +19,7 @@ passed and all packages have been built. These channels are:
1919 radical changes between channel updates. It's not recommended for
2020 production systems.
2121
22−- *Small channels*, such as [`nixos-21.11-small`](https://nixos.org/channels/nixos-21.11-small)
22+- *Small channels*, such as [`nixos-21.05-small`](https://nixos.org/channels/nixos-21.05-small)
2323 or [`nixos-unstable-small`](https://nixos.org/channels/nixos-unstable-small).
2424 These are identical to the stable and unstable channels described above,
2525 except that they contain fewer binary packages. This means they get updated
@@ -38,8 +38,8 @@ newest supported stable release.
3838
3939When you first install NixOS, you're automatically subscribed to the
4040NixOS channel that corresponds to your installation source. For
41−instance, if you installed from a 21.11 ISO, you will be subscribed to
42−the `nixos-21.11` channel. To see which NixOS channel you're subscribed
41+instance, if you installed from a 21.05 ISO, you will be subscribed to
42+the `nixos-21.05` channel. To see which NixOS channel you're subscribed
4343to, run the following as root:
4444
4545```ShellSession
@@ -54,16 +54,16 @@ To switch to a different NixOS channel, do
5454```
5555
5656(Be sure to include the `nixos` parameter at the end.) For instance, to
57−use the NixOS 21.11 stable channel:
57+use the NixOS 21.05 stable channel:
5858
5959```ShellSession
60−# nix-channel --add https://nixos.org/channels/nixos-21.11 nixos
60+# nix-channel --add https://nixos.org/channels/nixos-21.05 nixos
6161```
6262
6363If you have a server, you may want to use the "small" channel instead:
6464
6565```ShellSession
66−# nix-channel --add https://nixos.org/channels/nixos-21.11-small nixos
66+# nix-channel --add https://nixos.org/channels/nixos-21.05-small nixos
6767```
6868
6969And if you want to live on the bleeding edge:
@@ -114,5 +114,5 @@ the new generation contains a different kernel, initrd or kernel
114114modules. You can also specify a channel explicitly, e.g.
115115
116116```nix
117−system.autoUpgrade.channel = https://nixos.org/channels/nixos-21.11;
117+system.autoUpgrade.channel = https://nixos.org/channels/nixos-21.05;
118118```
nixos/doc/manual/man-nixos-install.xml+4−9
@@ -69,14 +69,9 @@
6969 </arg>
7070
7171 <arg>
72− <group choice='req'>
73− <arg choice='plain'>
74− <option>--no-root-password</option>
75− </arg>
76− <arg choice='plain'>
77− <option>--no-root-passwd</option>
78− </arg>
79− </group>
72+ <arg choice='plain'>
73+ <option>--no-root-passwd</option>
74+ </arg>
8075 </arg>
8176
8277 <arg>
@@ -162,7 +157,7 @@
162157 <listitem>
163158 <para>
164159 It prompts you for a password for the root account (unless
165− <option>--no-root-password</option> is specified).
160+ <option>--no-root-passwd</option> is specified).
166161 </para>
167162 </listitem>
168163 </itemizedlist>
nixos/doc/manual/man-nixos-rebuild.xml+7−29
@@ -91,10 +91,6 @@
9191 <option>--flake</option> <replaceable>flake-uri</replaceable>
9292 </arg>
9393
94− <arg>
95− <option>--no-flake</option>
96− </arg>
97−
9894 <arg>
9995 <option>--override-input</option> <replaceable>input-name</replaceable> <replaceable>flake-uri</replaceable>
10096 </arg>
@@ -457,7 +453,7 @@
457453 Allow ad-hoc remote builders for building the new system. This requires
458454 the user executing <command>nixos-rebuild</command> (usually root) to be
459455 configured as a trusted user in the Nix daemon. This can be achieved by
460− using the <literal>nix.settings.trusted-users</literal> NixOS option. Examples
456+ using the <literal>nix.trustedUsers</literal> NixOS option. Examples
461457 values for that option are described in the <literal>Remote builds
462458 chapter</literal> in the Nix manual, (i.e. <command>--builders
463459 "ssh://bigbrother x86_64-linux"</command>). By specifying an empty string
@@ -539,8 +535,12 @@
539535 </para>
540536
541537 <para>
542− If <option>--build-host</option> is not explicitly specified, building
543− will take place locally.
538+ If <option>--build-host</option> is not explicitly specified,
539+ <option>--build-host</option> will implicitly be set to the same value as
540+ <option>--target-host</option>. So, if you only specify
541+ <option>--target-host</option> both building and activation will take
542+ place remotely (and no build artifacts will be copied to the local
543+ machine).
544544 </para>
545545
546546 <para>
@@ -548,14 +548,6 @@
548548 (<replaceable>user@host</replaceable>). You can also set ssh options by
549549 defining the <envar>NIX_SSHOPTS</envar> environment variable.
550550 </para>
551−
552− <para>
553− Note that <command>nixos-rebuild</command> honors the
554− <literal>nixpkgs.crossSystem</literal> setting of the given configuration
555− but disregards the true architecture of the target host. Hence the
556− <literal>nixpkgs.crossSystem</literal> setting has to match the target
557− platform or else activation will fail.
558− </para>
559551 </listitem>
560552 </varlistentry>
561553
@@ -606,20 +598,6 @@
606598 </listitem>
607599 </varlistentry>
608600
609− <varlistentry>
610− <term>
611− <option>--no-flake</option>
612− </term>
613− <listitem>
614− <para>
615− Do not imply <option>--flake</option> if
616− <filename>/etc/nixos/flake.nix</filename> exists. With this
617− option, it is possible to build non-flake NixOS configurations
618− even if the current NixOS systems uses flakes.
619− </para>
620− </listitem>
621− </varlistentry>
622−
623601 </variablelist>
624602
625603 <para>
nixos/doc/manual/man-pages.xml+2−7
@@ -3,15 +3,10 @@
33 xmlns:xi="http://www.w3.org/2001/XInclude">
44 <title>NixOS Reference Pages</title>
55 <info>
6− <author>
7− <personname><firstname>Eelco</firstname><surname>Dolstra</surname></personname>
6+ <author><personname><firstname>Eelco</firstname><surname>Dolstra</surname></personname>
87 <contrib>Author</contrib>
98 </author>
10− <author>
11− <personname><othername>The Nixpkgs/NixOS contributors</othername></personname>
12− <contrib>Author</contrib>
13− </author>
14− <copyright><year>2007-2022</year><holder>Eelco Dolstra and the Nixpkgs/NixOS contributors</holder>
9+ <copyright><year>2007-2020</year><holder>Eelco Dolstra</holder>
1510 </copyright>
1611 </info>
1712 <xi:include href="man-configuration.xml" />
nixos/doc/manual/md-to-db.sh+1−1
@@ -1,5 +1,5 @@
11#! /usr/bin/env nix-shell
2−#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/21.11 -i bash -p pandoc
2+#! nix-shell -I nixpkgs=channel:nixpkgs-unstable -i bash -p pandoc
33
44# This script is temporarily needed while we transition the manual to
55# CommonMark. It converts the .md files in the regular manual folder
nixos/doc/manual/release-notes/release-notes.xml−1
@@ -8,7 +8,6 @@
88 This section lists the release notes for each stable version of NixOS and
99 current unstable revision.
1010 </para>
11− <xi:include href="../from_md/release-notes/rl-2205.section.xml" />
1211 <xi:include href="../from_md/release-notes/rl-2111.section.xml" />
1312 <xi:include href="../from_md/release-notes/rl-2105.section.xml" />
1413 <xi:include href="../from_md/release-notes/rl-2009.section.xml" />
nixos/doc/manual/release-notes/rl-1803.section.md−2
@@ -282,5 +282,3 @@ When upgrading from a previous release, please be aware of the following incompa
282282- The NixOS test driver supports user services declared by `systemd.user.services`. The methods `waitForUnit`, `getUnitInfo`, `startJob` and `stopJob` provide an optional `$user` argument for that purpose.
283283
284284- Enabling bash completion on NixOS, `programs.bash.enableCompletion`, will now also enable completion for the Nix command line tools by installing the [nix-bash-completions](https://github.com/hedning/nix-bash-completions) package.
285−
286−- The vim/kakoune plugin updater now reads from a CSV file: check `pkgs/applications/editors/vim/plugins/vim-plugin-names` out to see the new format
nixos/doc/manual/release-notes/rl-2111.section.md+11−50
@@ -1,33 +1,18 @@
1−# Release 21.11 (“Porcupine”, 2021/11/30) {#sec-release-21.11}
1+# Release 21.11 (“Porcupine”, 2021.11/??) {#sec-release-21.11}
2+
3+In addition to numerous new and upgraded packages, this release has the following highlights:
24
35- Support is planned until the end of June 2022, handing over to 22.05.
46
57## Highlights {#sec-release-21.11-highlights}
68
7−In addition to numerous new and upgraded packages, this release has the following highlights:
8−
99- Nix has been updated to version 2.4, reference its [release notes](https://discourse.nixos.org/t/nix-2-4-released/15822) for more information on what has changed. The previous version of Nix, 2.3.16, remains available for the time being in the `nix_2_3` package.
1010
11−- `iptables` is now using `nf_tables` under the hood, by using `iptables-nft`,
12− similar to [Debian](https://wiki.debian.org/nftables#Current_status) and
13− [Fedora](https://fedoraproject.org/wiki/Changes/iptables-nft-default).
14− This means, `ip[6]tables`, `arptables` and `ebtables` commands will actually
15− show rules from some specific tables in the `nf_tables` kernel subsystem.
16− In case you're migrating from an older release without rebooting, there might
17− be cases where you end up with iptable rules configured both in the legacy
18− `iptables` kernel backend, as well as in the `nf_tables` backend.
19− This can lead to confusing firewall behaviour. An `iptables-save` after
20− switching will complain about "iptables-legacy tables present".
21− It's probably best to reboot after the upgrade, or manually removing all
22− legacy iptables rules (via the `iptables-legacy` package).
23−
24−- systemd got an `nftables` backend, and configures (networkd) rules in their
25− own `io.systemd.*` tables. Check `nft list ruleset` to see these rules, not
26− `iptables-save` (which only shows `iptables`-created rules.
11+- `iptables` now uses `nf_tables` backend.
2712
2813- PHP now defaults to PHP 8.0, updated from 7.4.
2914
30−- kops now defaults to 1.21.1, which uses containerd as the default runtime.
15+- kOps now defaults to 1.21.1, which uses containerd as the default runtime.
3116
3217- `python3` now defaults to Python 3.9, updated from Python 3.8.
3318
@@ -40,7 +25,7 @@ In addition to numerous new and upgraded packages, this release has the followin
4025 - Hadoop now defaults to Hadoop 3, updated from 2.
4126 - JournalNode, ZKFS and HTTPFS services have been added.
4227
43−- Activation scripts can now, optionally, be run during a `nixos-rebuild dry-activate` and can detect the dry activation by reading `$NIXOS_ACTION`.
28+- Activation scripts can now opt int to be run when running `nixos-rebuild dry-activate` and detect the dry activation by reading `$NIXOS_ACTION`.
4429 This allows activation scripts to output what they would change if the activation was really run.
4530 The users/modules activation script supports this and outputs some of is actions.
4631
@@ -65,12 +50,6 @@ In addition to numerous new and upgraded packages, this release has the followin
6550 - This breaks connections to old SSH daemons as ssh-rsa host keys and ssh-rsa public keys that were signed with SHA-1 are disabled by default now
6651 - These can be re-enabled, see the [OpenSSH changelog](https://www.openssh.com/txt/release-8.8) for details
6752
68−- ORY Kratos was updated to version 0.8.0-alpha.3
69− - This release requires you to run SQL migrations. Please, as always, create a backup of your database first!
70− - The SDKs are now generated with tag v0alpha2 to reflect that some signatures have changed in a breaking fashion. Please update your imports from v0alpha1 to v0alpha2.
71− - The SMTPS scheme used in courier config URL with cleartext/StartTLS/TLS SMTP connection types is now only supporting implicit TLS. For StartTLS and cleartext SMTP, please use the SMTP scheme instead.
72− - for more details, see [Release Notes](https://github.com/ory/kratos/releases/tag/v0.8.0-alpha.1).
73−
7453## New Services {#sec-release-21.11-new-services}
7554
7655- [btrbk](https://digint.ch/btrbk/index.html), a backup tool for btrfs subvolumes, taking advantage of btrfs specific capabilities to create atomic snapshots and transfer them incrementally to your backup locations. Available as [services.btrbk](options.html#opt-services.brtbk.instances).
@@ -83,11 +62,11 @@ In addition to numerous new and upgraded packages, this release has the followin
8362
8463- [Jibri](https://github.com/jitsi/jibri), a service for recording or streaming a Jitsi Meet conference. Available as [services.jibri](options.html#opt-services.jibri.enable).
8564
86−- [Kea](https://www.isc.org/kea/), ISCs 2nd generation DHCP and DDNS server suite. Available at [services.kea](options.html#opt-services.kea.dhcp4).
65+- [Kea](https://www.isc.org/kea/), ISCs 2nd generation DHCP and DDNS server suite. Available at [services.kea](options.html#opt-services.kea).
8766
88−- [owncast](https://owncast.online/), self-hosted video live streaming solution. Available at [services.owncast](options.html#opt-services.owncast.enable).
67+- [owncast](https://owncast.online/), self-hosted video live streaming solution. Available at [services.owncast](options.html#opt-services.owncast).
8968
90−- [PeerTube](https://joinpeertube.org/), developed by Framasoft, is the free and decentralized alternative to video platforms. Available at [services.peertube](options.html#opt-services.peertube.enable).
69+- [PeerTube](https://joinpeertube.org/), developed by Framasoft, is the free and decentralized alternative to video platforms. Available at [services.peertube](options.html#opt-services.peertube).
9170
9271- [sourcehut](https://sr.ht), a collection of tools useful for software development. Available as [services.sourcehut](options.html#opt-services.sourcehut.enable).
9372
@@ -162,8 +141,6 @@ In addition to numerous new and upgraded packages, this release has the followin
162141
163142- Auto nice daemons [ananicy](https://github.com/Nefelim4ag/Ananicy) and [ananicy-cpp](https://gitlab.com/ananicy-cpp/ananicy-cpp/). Available as [services.ananicy](#opt-services.ananicy.enable).
164143
165−- [smartctl_exporter](https://github.com/prometheus-community/smartctl_exporter), a Prometheus exporter for [S.M.A.R.T.](https://en.wikipedia.org/wiki/S.M.A.R.T.) data. Available as [services.prometheus.exporters.smartctl](options.html#opt-services.prometheus.exporters.smartctl.enable).
166−
167144## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
168145
169146- The NixOS VM test framework, `pkgs.nixosTest`/`make-test-python.nix`, now requires detaching commands such as `succeed("foo &")` and `succeed("foo | xclip -i")` to close stdout.
@@ -411,8 +388,6 @@ In addition to numerous new and upgraded packages, this release has the followin
411388
412389- `boot.kernelParams` now only accepts one command line parameter per string. This change is aimed to reduce common mistakes like "param = 12", which would be parsed as 3 parameters.
413390
414−- `nix.daemonNiceLevel` and `nix.daemonIONiceLevel` have been removed in favour of the new options [`nix.daemonCPUSchedPolicy`](options.html#opt-nix.daemonCPUSchedPolicy), [`nix.daemonIOSchedClass`](options.html#opt-nix.daemonIOSchedClass) and [`nix.daemonIOSchedPriority`](options.html#opt-nix.daemonIOSchedPriority). Please refer to the options documentation and the `sched(7)` and `ioprio_set(2)` man pages for guidance on how to use them.
415−
416391- The `coursier` package's binary was renamed from `coursier` to `cs`. Completions which haven't worked for a while should now work with the renamed binary. To keep using `coursier`, you can create a shell alias.
417392
418393- The `services.mosquitto` module has been rewritten to support multiple listeners and per-listener configuration.
@@ -427,16 +402,6 @@ In addition to numerous new and upgraded packages, this release has the followin
427402
428403- The `services.ddclient.password` option was removed, and replaced with `services.ddclient.passwordFile`.
429404
430−- The default GNAT version has been changed: The `gnat` attribute now points to `gnat11`
431− instead of `gnat9`.
432−
433−- `retroArchCores` has been removed. This means that using `nixpkgs.config.retroarch` to customize RetroArch cores is not supported anymore. Instead, use package overrides, for example: `retroarch.override { cores = with libretro; [ citra snes9x ]; };`. Also, `retroarchFull` derivation is available for those who want to have all RetroArch cores available.
434−
435−- The Linux kernel for security reasons now restricts access to BPF syscalls via `BPF_UNPRIV_DEFAULT_OFF=y`. Unprivileged access can be reenabled via the `kernel.unprivileged_bpf_disabled` sysctl knob.
436−
437−- `/usr` will always be included in the initial ramdisk. See the `fileSystems.<name>.neededForBoot` option.
438− If any files exist under `/usr` (which is not typical for NixOS), they will be included in the initial ramdisk, increasing its size to a possibly problematic extent.
439−
440405## Other Notable Changes {#sec-release-21.11-notable-changes}
441406
442407
@@ -542,6 +507,8 @@ In addition to numerous new and upgraded packages, this release has the followin
542507
543508- `networking.sits` now supports Foo-over-UDP encapsulation.
544509
510+- Changing systemd `.socket` units now restarts them and stops the service that is activated by them. Additionally, services with `stopOnChange = false` don't break anymore when they are socket-activated.
511+
545512- The `virtualisation.libvirtd` module has been refactored and updated with new options:
546513 - `virtualisation.libvirtd.qemu*` options (e.g.: `virtualisation.libvirtd.qemuRunAsRoot`) were moved to [`virtualisation.libvirtd.qemu`](options.html#opt-virtualisation.libvirtd.qemu) submodule,
547514 - software TPM1/TPM2 support (e.g.: Windows 11 guests) ([`virtualisation.libvirtd.qemu.swtpm`](options.html#opt-virtualisation.libvirtd.qemu.swtpm)),
@@ -567,9 +534,3 @@ In addition to numerous new and upgraded packages, this release has the followin
567534- Loki has had another release. Some default values have been changed for the configuration and some configuration options have been renamed. For more details, please check [the upgrade guide](https://grafana.com/docs/loki/latest/upgrading/#240).
568535
569536- `julia` now refers to `julia-stable` instead of `julia-lts`. In practice this means it has been upgraded from `1.0.4` to `1.5.4`.
570−
571−- RetroArch has been upgraded from version `1.8.5` to `1.9.13.2`. Since the previous release was quite old, if you're having issues after the upgrade, please delete your `$XDG_CONFIG_HOME/retroarch/retroarch.cfg` file.
572−
573−- hydrus has been upgraded from version `438` to `463`. Since upgrading between releases this old is advised against, be sure to have a backup of your data before upgrading. For details, see [the hydrus manual](https://hydrusnetwork.github.io/hydrus/help/getting_started_installing.html#big_updates).
574−
575−- More jdk and jre versions are now exposed via `java-packages.compiler`.
nixos/doc/manual/release-notes/rl-2205.section.mddeleted−878
@@ -1,878 +0,0 @@
1−# Release 22.05 (“Quokka”, 2022.05/??) {#sec-release-22.05}
2−
3−In addition to numerous new and upgraded packages, this release has the following highlights:
4−
5−- Support is planned until the end of December 2022, handing over to 22.11.
6−
7−## Highlights {#sec-release-22.05-highlights}
8−
9−- The `firefox` browser on `x86_64-linux` is now making use of
10− profile-guided optimization resulting in a much more responsive
11− browsing experience.
12−
13−- `security.acme.defaults` has been added to simplify configuring
14− settings for many certificates at once. This also opens up the
15− the option to use DNS-01 validation when using `enableACME` on
16− web server virtual hosts (e.g. `services.nginx.virtualHosts.*.enableACME`).
17−
18−- GNOME has been upgraded to 42. Please take a look at their [Release Notes](https://release.gnome.org/42/) for details. Notably, it replaces gedit with GNOME Text Editor, GNOME Terminal with GNOME Console (formerly King’s Cross), and GNOME Screenshot with a tool built into the Shell.
19−
20−- `stdenv.mkDerivation` now supports a self-referencing `finalAttrs:` parameter
21− containing the final `mkDerivation` arguments including overrides.
22− `drv.overrideAttrs` now supports two parameters `finalAttrs: previousAttrs:`.
23− This allows packaging configuration to be overridden in a consistent manner by
24− providing an alternative to `rec {}` syntax.
25−
26− Additionally, `passthru` can now reference `finalAttrs.finalPackage` containing
27− the final package, including attributes such as the output paths and
28− `overrideAttrs`.
29−
30− New language integrations can be simplified by overriding a "prototype"
31− package containing the language-specific logic. This removes the need for a
32− extra layer of overriding for the "generic builder" arguments, thus removing a
33− usability problem and source of error.
34−
35−- PHP 8.1 is now available
36−
37−- Mattermost has been updated to extended support release 6.3, as the previously packaged extended support release 5.37 is [reaching its end of life](https://docs.mattermost.com/upgrade/extended-support-release.html).
38− Migrations may take a while, see the [changelog](https://docs.mattermost.com/install/self-managed-changelog.html#release-v6-3-extended-support-release)
39− and [important upgrade notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html).
40−
41−- systemd services can now set [systemd.services.\<name\>.reloadTriggers](#opt-systemd.services) instead of `reloadIfChanged` for a more granular distinction between reloads and restarts.
42−
43−- Systemd has been upgraded to the version 250.
44−
45−- Pulseaudio has been upgraded to version 15.0 and now optionally [supports additional Bluetooth audio codecs](https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/15.0/#supportforldacandaptxbluetoothcodecsplussbcxqsbcwithhigher-qualityparameters) like aptX or LDAC, with codec switching support being available in `pavucontrol`. This feature is disabled by default but can be enabled by using `hardware.pulseaudio.package = pkgs.pulseaudioFull;`.
46− Existing 3rd party modules that provided similar functionality, like `pulseaudio-modules-bt` or `pulseaudio-hsphfpd` are deprecated and have been removed.
47−
48−- The new [`postgresqlTestHook`](https://nixos.org/manual/nixpkgs/stable/#sec-postgresqlTestHook) runs a PostgreSQL server for the duration of package checks.
49−
50−- [`kops`](https://kops.sigs.k8s.io) defaults to 1.22.4, which will enable [Instance Metadata Service Version 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) and require tokens on new clusters with Kubernetes 1.22. This will increase security by default, but may break some types of workloads. See the [release notes](https://kops.sigs.k8s.io/releases/1.22-notes/) for details.
51−
52−- Module authors can use `mkRenamedOptionModuleWith` to automate the deprecation cycle without annoying out-of-tree module authors and their users.
53−
54−- The default GHC version has been updated from 8.10.7 to 9.0.2. `pkgs.haskellPackages` and `pkgs.ghc` will now use this version by default.
55−
56−- The GNOME and Plasma installation CDs now use `pkgs.calamares` and `pkgs.calamares-nixos-extensions` to allow users to easily install and set up NixOS with a GUI.
57−
58−## New Services {#sec-release-22.05-new-services}
59−
60−- [aesmd](https://github.com/intel/linux-sgx#install-the-intelr-sgx-psw), the Intel SGX Architectural Enclave Service Manager. Available as [services.aesmd](#opt-services.aesmd.enable).
61−
62−- [rootless Docker](https://docs.docker.com/engine/security/rootless/), a `systemd --user` Docker service which runs without root permissions. Available as [virtualisation.docker.rootless.enable](options.html#opt-virtualisation.docker.rootless.enable).
63−
64−- [matrix-conduit](https://conduit.rs/), a simple, fast and reliable chat server powered by matrix. Available as [services.matrix-conduit](option.html#opt-services.matrix-conduit.enable).
65−
66−- [nethoscope](https://github.com/vvilhonen/nethoscope), listen to your network traffic. Available as [programs.nethoscope](#opt-programs.nethoscope.enable).
67−
68−- [filebeat](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html), a lightweight shipper for forwarding and centralizing log data. Available as [services.filebeat](#opt-services.filebeat.enable).
69−
70−- [apfs](https://github.com/linux-apfs/linux-apfs-rw), a kernel module for mounting the Apple File System (APFS).
71−
72−- [FRRouting](https://frrouting.org/), a popular suite of Internet routing protocol daemons (BGP, BFD, OSPF, IS-IS, VRRP and others). Available as [services.frr](#opt-services.frr.babel.enable)
73−
74−- [heisenbridge](https://github.com/hifi/heisenbridge), a bouncer-style Matrix IRC bridge. Available as [services.heisenbridge](options.html#opt-services.heisenbridge.enable).
75−
76−- [snowflake-proxy](https://snowflake.torproject.org/), a system to defeat internet censorship. Available as [services.snowflake-proxy](options.html#opt-services.snowflake-proxy.enable).
77−
78−- [ergochat](https://ergo.chat), a modern IRC with IRCv3 features. Available as [services.ergochat](options.html#opt-services.ergochat.enable).
79−
80−- [PowerDNS-Admin](https://github.com/ngoduykhanh/PowerDNS-Admin), a web interface for the PowerDNS server. Available at [services.powerdns-admin](options.html#opt-services.powerdns-admin.enable).
81−
82−- [pgadmin4](https://github.com/postgres/pgadmin4), an admin interface for the PostgreSQL database. Available at [services.pgadmin](options.html#opt-services.pgadmin.enable).
83−
84−- [input-remapper](https://github.com/sezanzeb/input-remapper), an easy to use tool to change the mapping of your input device buttons. Available at [services.input-remapper](options.html#opt-services.input-remapper.enable).
85−
86−- [InvoicePlane](https://invoiceplane.com), web application for managing and creating invoices. Available at [services.invoiceplane](options.html#opt-services.invoiceplane.enable).
87−
88−- [maddy](https://maddy.email), a composable all-in-one mail server. Available as [services.maddy](options.html#opt-services.maddy.enable).
89−
90−- [K40-Whisperer](https://www.scorchworks.com/K40whisperer/k40whisperer.html), a program to control cheap Chinese laser cutters. Available as [programs.k40-whisperer.enable](options.html#opt-programs.k4-whisperer.enable). Users must add themselves to the `k40` group to be able to access the device.
91−
92−- [mozillavpn](https://github.com/mozilla-mobile/mozilla-vpn-client), the client for the [Mozilla VPN](https://vpn.mozilla.org/) service. Available as [services.mozillavpn](options.html#opt-services.mozillavpn).
93−
94−- [mtr-exporter](https://github.com/mgumz/mtr-exporter), a Prometheus exporter for mtr metrics. Available as [services.mtr-exporter](options.html#opt-services.mtr-exporter.enable).
95−
96−- [prometheus-pve-exporter](https://github.com/prometheus-pve/prometheus-pve-exporter), a tool that exposes information from the Proxmox VE API for use by Prometheus. Available as [services.prometheus.exporters.pve](options.html#opt-services.prometheus.exporters.pve).
97−
98−- [netbox](https://github.com/netbox-community/netbox), infrastructure resource modeling (IRM) tool. Available as [services.netbox](options.html#opt-services.netbox.enable).
99−
100−- [tetrd](https://tetrd.app), share your internet connection from your device to your PC and vice versa through a USB cable. Available at [services.tetrd](#opt-services.tetrd.enable).
101−
102−- [agate](https://github.com/mbrubeck/agate), a very simple server for the Gemini hypertext protocol. Available as [services.agate](options.html#opt-services.agate.enable).
103−
104−- [ArchiSteamFarm](https://github.com/JustArchiNET/ArchiSteamFarm), a C# application with primary purpose of idling Steam cards from multiple accounts simultaneously. Available as [services.archisteamfarm](options.html#opt-services.archisteamfarm.enable).
105−
106−- [teleport](https://goteleport.com), allows engineers and security professionals to unify access for SSH servers, Kubernetes clusters, web applications, and databases across all environments. Available at [services.teleport](#opt-services.teleport.enable).
107−
108−- [BaGet](https://loic-sharma.github.io/BaGet/), a lightweight NuGet and symbol server. Available at [services.baget](#opt-services.baget.enable).
109−
110−- [moosefs](https://moosefs.com), fault tolerant petabyte distributed file system.
111− Available as [moosefs](#opt-services.moosefs.client.enable).
112−
113−- [prosody-filer](https://github.com/ThomasLeister/prosody-filer), a server for handling XMPP HTTP Upload requests. Available at [services.prosody-filer](#opt-services.prosody-filer.enable).
114−
115−- [systembus-notify](https://github.com/rfjakob/systembus-notify), allow system level notifications to reach the users. Available as [services.systembus-notify](opt-services.systembus-notify.enable). Please keep in mind that this service should only be enabled on machines with fully trusted users, as any local user is able to DoS user sessions by spamming notifications.
116−
117−- [ethercalc](https://github.com/audreyt/ethercalc), an online collaborative
118− spreadsheet. Available as [services.ethercalc](options.html#opt-services.ethercalc.enable).
119−
120−- [nbd](https://nbd.sourceforge.io/), a Network Block Device server. Available as [services.nbd](options.html#opt-services.nbd.server.enable).
121−
122−- [nix-ld](https://github.com/Mic92/nix-ld), Run unpatched dynamic binaries on NixOS. Available as [programs.nix-ld](options.html#opt-programs.nix-ld.enable).
123−
124−- [timetagger](https://timetagger.app), an open source time-tracker with an intuitive user experience and powerful reporting. [services.timetagger](options.html#opt-services.timetagger.enable).
125−
126−- [rstudio-server](https://www.rstudio.com/products/rstudio/#rstudio-server), a browser-based version of the RStudio IDE for the R programming language. Available as [services.rstudio-server](options.html#opt-services.rstudio-server.enable).
127−
128−- [headscale](https://github.com/juanfont/headscale), an Open Source implementation of the [Tailscale](https://tailscale.io) Control Server. Available as [services.headscale](options.html#opt-services.headscale.enable)
129−
130−- [create_ap](https://github.com/lakinduakash/linux-wifi-hotspot), a module for creating wifi hotspots using the program linux-wifi-hotspot. Available as [services.create_ap](options.html#opt-services.create_ap.enable).
131−
132−- [blocky](https://0xerr0r.github.io/blocky/), fast and lightweight DNS proxy as ad-blocker for local network with many features.
133−
134−- [pacemaker](https://clusterlabs.org/pacemaker/) cluster resource manager
135−
136−- [nifi](https://nifi.apache.org), an easy to use, powerful, and reliable system to process and distribute data. Available as [services.nifi](options.html#opt-services.nifi.enable).
137−
138−<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
139−
140−## Backward Incompatibilities {#sec-release-22.05-incompatibilities}
141−
142−- `pkgs.ghc` now refers to `pkgs.targetPackages.haskellPackages.ghc`.
143− This _only_ makes a difference if you are cross-compiling and will
144− ensure that `pkgs.ghc` always runs on the host platform and compiles
145− for the target platform (similar to `pkgs.gcc` for example).
146− `haskellPackages.ghc` still behaves as before, running on the build
147− platform and compiling for the host platform (similar to `stdenv.cc`).
148− This means you don't have to adjust your derivations if you use
149− `haskellPackages.callPackage`, but when using `pkgs.callPackage` and
150− taking `ghc` as an input, you should now use `buildPackages.ghc`
151− instead to ensure cross compilation keeps working (or switch to
152− `haskellPackages.callPackage`).
153−
154−- `pkgs.ghc.withPackages` as well as `haskellPackages.ghcWithPackages` etc.
155− now needs be overridden directly, as opposed to overriding the result of
156− calling it. Additionally, the `withLLVM` parameter has been renamed to
157− `useLLVM`. So instead of `(ghc.withPackages (p: [])).override { withLLVM = true; }`,
158− one needs to use `(ghc.withPackages.override { useLLVM = true; }) (p: [])`.
159−
160−- The `home-assistant` module now requires users that don't want their
161− configuration to be managed declaratively to set
162− `services.home-assistant.config = null;`. This is required
163− due to the way default settings are handled with the new settings style.
164−
165− Additionally the default list of `extraComponents` now includes the minimal
166− dependencies to successfully complete the [onboarding](https://www.home-assistant.io/getting-started/onboarding/)
167− procedure.
168−
169−- `pkgs.emacsPackages.orgPackages` is removed because org elpa is deprecated.
170− The packages in the top level of `pkgs.emacsPackages`, such as org and
171− org-contrib, refer to the ones in `pkgs.emacsPackages.elpaPackages` and
172− `pkgs.emacsPackages.nongnuPackages` where the new versions will release.
173−
174−- The configuration and state directories used by `nixos-containers` have been
175− moved from `/etc/containers` and `/var/lib/containers` to
176− `/etc/nixos-containers` and `/var/lib/nixos-containers`.
177−
178− If you are changing `system.stateVersion` to `"22.05"` manually on an existing
179− system you are responsible for migrating these directories yourself.
180−
181− This is to improve compatibility with `libcontainer` based software such as Podman and Skopeo
182− which assumes they have ownership over `/etc/containers`.
183−
184−- For new installations `virtualisation.oci-containers.backend` is now set to `podman` by default.
185− If you still want to use Docker on systems where `system.stateVersion` is set to to `"22.05"` set `virtualisation.oci-containers.backend = "docker";`.Old systems with older `stateVersion`s stay with "docker".
186−
187−- `security.klogd` was removed. Logging of kernel messages is handled
188− by systemd since Linux 3.5.
189−
190−- `pkgs.ssmtp` has been dropped due to the program being unmaintained.
191− `pkgs.msmtp` can be used instead as a substitute `sendmail` implementation.
192− The corresponding options `services.ssmtp.*` have been removed as well.
193− `programs.msmtp.*` can be used instead for an equivalent setup. For example:
194−
195− ```nix
196− {
197− # Original ssmtp configuration:
198− services.ssmtp = {
199− enable = true;
200− useTLS = true;
201− useSTARTTLS = true;
202− hostName = "smtp.example:587";
203− authUser = "someone";
204− authPassFile = "/secrets/password.txt";
205− };
206−
207− # Equivalent msmtp configuration:
208− programs.msmtp = {
209− enable = true;
210− accounts.default = {
211− tls = true;
212− tls_starttls = true;
213− auth = true;
214− host = "smtp.example";
215− port = 587;
216− user = "someone";
217− passwordeval = "cat /secrets/password.txt";
218− };
219− };
220− }
221− ```
222−
223−- `services.kubernetes.addons.dashboard` was removed due to it being an outdated version.
224−
225−- `services.kubernetes.scheduler.{port,address}` now set `--secure-port` and `--bind-address` instead of `--port` and `--address`, since the former have been deprecated and are no longer functional in kubernetes>=1.23. Ensure that you are not relying on the insecure behaviour before upgrading.
226−
227−- In the PowerDNS Recursor module (`services.pdns-recursor`), default values of several IP address-related NixOS options have been updated to match the default upstream behavior.
228− In particular, Recursor by default will:
229− - listen on (and allows connections from) both IPv4 and IPv6 addresses
230− (`services.pdns-recursor.dns.address`, `services.pdns-recursor.dns.allowFrom`);
231− - allow only local connections to the REST API server (`services.pdns-recursor.api.allowFrom`).
232−
233−- In the ncdns module, the default value of `services.ncdns.address` has been changed to the IPv6 loopback address (`::1`).
234−
235−- `openssh` has been update to 8.9p1, changing the FIDO security key middleware interface.
236−
237−- `git` no longer hardcodes the path to openssh' ssh binary to reduce the amount of rebuilds. If you are using git with ssh remotes and do not have a ssh binary in your enviroment consider adding `openssh` to it or switching to `gitFull`.
238−
239−- `services.k3s.enable` no longer implies `systemd.enableUnifiedCgroupHierarchy = false`, and will default to the 'systemd' cgroup driver when using `services.k3s.docker = true`.
240− This change may require a reboot to take effect, and k3s may not be able to run if the boot cgroup hierarchy does not match its configuration.
241− The previous behavior may be retained by explicitly setting `systemd.enableUnifiedCgroupHierarchy = false` in your configuration.
242−
243−- `fonts.fonts` no longer includes ancient bitmap fonts when both `config.services.xserver.enable` and `config.nixpkgs.config.allowUnfree` are enabled.
244− If you still want these fonts, use:
245−
246− ```nix
247− {
248− fonts.fonts = [
249− pkgs.xorg.fontbhlucidatypewriter100dpi
250− pkgs.xorg.fontbhlucidatypewriter75dpi
251− pkgs.xorg.fontbh100dpi
252− ];
253− }
254− ```
255−
256−- `services.prometheus.alertManagerTimeout` has been removed as it has been deprecated upstream and has no effect.
257−
258−- The DHCP server (`services.dhcpd4`, `services.dhcpd6`) has been hardened.
259− The service is now using the systemd's `DynamicUser` mechanism to run as an unprivileged dynamically-allocated user with limited capabilities.
260− The dhcpd state files are now always stored in `/var/lib/dhcpd{4,6}` and the `services.dhcpd4.stateDir` and `service.dhcpd6.stateDir` options have been removed.
261− If you were depending on root privileges or set{uid,gid,cap} binaries in dhcpd shell hooks, you may give dhcpd more capabilities with e.g. `systemd.services.dhcpd6.serviceConfig.AmbientCapabilities`.
262−
263−- The `mailpile` email webclient (`services.mailpile`) has been removed due to its reliance on python2.
264−
265−- `services.ipfs.extraFlags` is now escaped with `utils.escapeSystemdExecArgs`. If you rely on systemd interpolating `extraFlags` in the service `ExecStart`, this will no longer work.
266−
267−- `hbase` version 0.98.24 has been removed. The package now defaults to version 2.4.11. Versions 1.7.1 and 3.0.0-alpha-2 are also available.
268−
269−- `services.paperless-ng` was renamed to `services.paperless`. Accordingly, the `paperless-ng-manage` script (located in `dataDir`) was renamed to `paperless-manage`. `services.paperless` now uses `paperless-ngx`.
270−
271−- The `matrix-synapse` service (`services.matrix-synapse`) has been converted to use the `settings` option defined in RFC42.
272− This means that options that are part of your `homeserver.yaml` configuration, and that were specified at the top-level of the
273− module (`services.matrix-synapse`) now need to be moved into `services.matrix-synapse.settings`. And while not all options you
274− may use are defined in there, they are still supported, because you can set arbitrary values in this freeform type.
275−
276− The `listeners.*.bind_address` option was renamed to `bind_addresses` in order to match the upstream `homeserver.yaml` option
277− name. It is now also a list of strings instead of a string.
278−
279− An example to make the required migration clearer:
280−
281− Before:
282− ```nix
283− {
284− services.matrix-synapse = {
285− enable = true;
286−
287− server_name = "example.com";
288− public_baseurl = "https://example.com:8448";
289−
290− enable_registration = false;
291− registration_shared_secret = "xohshaeyui8jic7uutuDogahkee3aehuaf6ei3Xouz4iicie5thie6nohNahceut";
292− macaroon_secret_key = "xoo8eder9seivukaiPh1cheikohquuw8Yooreid0The4aifahth3Ou0aiShaiz4l";
293−
294− tls_certificate_path = "/var/lib/acme/example.com/fullchain.pem";
295− tls_certificate_path = "/var/lib/acme/example.com/fullchain.pem";
296−
297− listeners = [ {
298− port = 8448;
299− bind_address = "";
300− type = "http";
301− tls = true;
302− resources = [ {
303− names = [ "client" ];
304− compress = true;
305− } {
306− names = [ "federation" ];
307− compress = false;
308− } ];
309− } ];
310−
311− };
312− }
313− ```
314−
315− After:
316− ```nix
317− {
318− services.matrix-synapse = {
319− enable = true;
320−
321− # this attribute set holds all values that go into your homeserver.yaml configuration
322− # See https://github.com/matrix-org/synapse/blob/develop/docs/sample_config.yaml for
323− # possible values.
324− settings = {
325− server_name = "example.com";
326− public_baseurl = "https://example.com:8448";
327−
328− enable_registration = false;
329− # pass `registration_shared_secret` and `macaroon_secret_key` via `extraConfigFiles` instead
330−
331− tls_certificate_path = "/var/lib/acme/example.com/fullchain.pem";
332− tls_certificate_path = "/var/lib/acme/example.com/fullchain.pem";
333−
334− listeners = [ {
335− port = 8448;
336− bind_addresses = [
337− "::"
338− "0.0.0.0"
339− ];
340− type = "http";
341− tls = true;
342− resources = [ {
343− names = [ "client" ];
344− compress = true;
345− } {
346− names = [ "federation" ];
347− compress = false;
348− } ];
349− } ];
350− };
351−
352− extraConfigFiles = [
353− /run/keys/matrix-synapse/secrets.yaml
354− ];
355− };
356− }
357− ```
358−
359− The secrets in your original config should be migrated into a YAML file that is included via `extraConfigFiles`.
360−
361− Additionally a few option defaults have been synced up with upstream default values, for example the `max_upload_size` grew from `10M` to `50M`. For the same reason, the default
362− `media_store_path` was changed from `${dataDir}/media` to `${dataDir}/media_store` if `system.stateVersion` is at least `22.05`. Files will need to be manually moved to the new
363− location if the `stateVersion` is updated.
364−
365− As of Synapse 1.58.0, the old groups/communities feature has been disabled by default. It will be completely removed with Synapse 1.61.0.
366−
367−- The Keycloak package (`pkgs.keycloak`) has been switched from the
368− Wildfly version, which will soon be deprecated, to the Quarkus based
369− version. The Keycloak service (`services.keycloak`) has been updated
370− to accommodate the change and now differs from the previous version
371− in a few ways:
372−
373− - `services.keycloak.extraConfig` has been removed in favor of the
374− new [settings-style](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md)
375− [`services.keycloak.settings`](#opt-services.keycloak.settings)
376− option. The available options correspond directly to parameters in
377− `conf/keycloak.conf`. Some of the most important parameters are
378− documented as suboptions, the rest can be found in the [All
379− configuration section of the Keycloak Server Installation and
380− Configuration
381− Guide](https://www.keycloak.org/server/all-config). While the new
382− configuration is much simpler and cleaner than the old JBoss CLI
383− one, this unfortunately mean that there's no straightforward way
384− to convert an old configuration to the new format and some
385− settings may not even be available anymore.
386−
387− - `services.keycloak.frontendUrl` was removed and the frontend URL
388− is now configured through the `hostname` family of settings in
389− [`services.keycloak.settings`](#opt-services.keycloak.settings)
390− instead. See the [Hostname section of the Keycloak Server
391− Installation and Configuration
392− Guide](https://www.keycloak.org/server/hostname) for more
393− details. Additionally, `/auth` was removed from the default
394− context path and needs to be added back in
395− [`services.keycloak.settings.http-relative-path`](#opt-services.keycloak.settings.http-relative-path)
396− if you want to keep compatibility with your current clients.
397−
398− - `services.keycloak.bindAddress`,
399− `services.keycloak.forceBackendUrlToFrontendUrl`,
400− `services.keycloak.httpPort` and `services.keycloak.httpsPort`
401− have been removed in favor of their equivalent options in
402− [`services.keycloak.settings`](#opt-services.keycloak.settings). `httpPort`
403− and `httpsPort` have additionally had their types changed from
404− `str` to `port`.
405−
406− The new names are as follows:
407− - `bindAddress`: [`services.keycloak.settings.http-host`](#opt-services.keycloak.settings.http-host)
408− - `forceBackendUrlToFrontendUrl`: [`services.keycloak.settings.hostname-strict-backchannel`](#opt-services.keycloak.settings.hostname-strict-backchannel)
409− - `httpPort`: [`services.keycloak.settings.http-port`](#opt-services.keycloak.settings.http-port)
410− - `httpsPort`: [`services.keycloak.settings.https-port`](#opt-services.keycloak.settings.https-port)
411−
412− For example, when using a reverse proxy the migration could look
413− like this:
414−
415− Before:
416− ```nix
417− services.keycloak = {
418− enable = true;
419− httpPort = "8080";
420− frontendUrl = "https://keycloak.example.com/auth";
421− database.passwordFile = "/run/keys/db_password";
422− extraConfig = {
423− "subsystem=undertow"."server=default-server"."http-listener=default".proxy-address-forwarding = true;
424− };
425− };
426− ```
427−
428− After:
429− ```nix
430− services.keycloak = {
431− enable = true;
432− settings = {
433− http-port = 8080;
434− hostname = "keycloak.example.com";
435− http-relative-path = "/auth";
436− proxy = "edge";
437− };
438− database.passwordFile = "/run/keys/db_password";
439− };
440− ```
441−
442−- The MoinMoin wiki engine (`services.moinmoin`) has been removed, because Python 2 is being retired from nixpkgs.
443−
444−- Services in the `hadoop` module previously set `openFirewall` to true by default.
445− This has now been changed to false. Node definitions for multi-node clusters would need
446− `openFirewall = true;` to be added to to hadoop services when upgrading from NixOS 21.11.
447−
448−- `services.hadoop.yarn.nodemanager` now uses cgroup-based CPU limit enforcement by default.
449− Additionally, the option `useCGroups` was added to nodemanagers as an easy way to switch
450− back to the old behavior.
451−
452−- The `wafHook` hook now honors `NIX_BUILD_CORES` when `enableParallelBuilding` is not set explicitly. Packages can restore the old behaviour by setting `enableParallelBuilding=false`.
453−
454−- `pkgs.claws-mail-gtk2`, representing Claws Mail's older release version three, was removed in order to get rid of Python 2.
455− Please switch to `claws-mail`, which is Claws Mail's latest release based on GTK+3 and Python 3.
456−
457−- The `writers.writePython2` and corresponding `writers.writePython2Bin` convenience functions to create executable Python 2 scripts in the store were removed in preparation of removal of the Python 2 interpreter.
458− Scripts have to be converted to Python 3 for use with `writers.writePython3` or `writers.writePyPy2` needs to be used.
459−
460−- `buildGoModule` was updated to use `go_1_17`, third party derivations that specify >= go 1.17 in the main `go.mod` will need to regenerate their `vendorSha256` hash.
461−
462−- The `gnome-passwordsafe` package updated to [version 6.x](https://gitlab.gnome.org/World/secrets/-/tags/6.0) and renamed to `gnome-secrets`.
463−
464−- `services.gnome.experimental-features.realtime-scheduling` option has been removed, as GNOME Shell now [uses rtkit](https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2060). Use `security.rtkit.enable = true;` instead. As before, you will need to have it enabled using GSettings.
465−
466−- `services.telepathy` will no longer be enabled by default for GNOME desktops, one should enable it in their configs if using Empathy or Polari.
467−
468−- If you previously used `/etc/docker/daemon.json`, you need to incorporate the changes into the new option `virtualisation.docker.daemon.settings`.
469−
470−- Ntopng (`services.ntopng`) is updated to 5.2.1 and uses a separate Redis instance if `system.stateVersion` is at least `22.05`. Existing setups shouldn't be affected.
471−
472−- The backward compatibility in `services.wordpress` to configure sites with
473− the old interface has been removed. Please use `services.wordpress.sites`
474− instead.
475−
476−- The backward compatibility in `services.dokuwiki` to configure sites with the
477− old interface has been removed. Please use `services.dokuwiki.sites` instead.
478−
479−- opensmtpd-extras is no longer build with python2 scripting support due to python2 deprecation in nixpkgs
480−
481−- `services.miniflux.adminCredentialFiles` is now required, instead of defaulting to `admin` and `password`.
482−
483−- The `taskserver` module no longer implicitly opens ports in the firewall
484− configuration. This is now controlled through the option
485− `services.taskserver.openFirewall`.
486−
487−- The `autorestic` package has been upgraded from 1.3.0 to 1.5.0 which introduces breaking changes in config file, check [their migration guide](https://autorestic.vercel.app/migration/1.4_1.5) for more details.
488−
489−- For `pkgs.python3.pkgs.ipython`, its direct dependency `pkgs.python3.pkgs.matplotlib-inline`
490− (which is really an adapter to integrate matplotlib in ipython if it is installed) does
491− not depend on `pkgs.python3.pkgs.matplotlib` anymore.
492− This is closer to a non-Nix install of ipython.
493− This has the added benefit to reduce the closure size of `ipython` from ~400MB to ~160MB
494− (including ~100MB for python itself).
495−
496−- `documentation.man` has been refactored to support choosing a man implementation other than GNU's `man-db`. For this, `documentation.man.manualPages` has been renamed to `documentation.man.man-db.manualPages`. If you want to use the new alternative man implementation `mandoc`, add `documentation.man = { enable = true; man-db.enable = false; mandoc.enable = true; }` to your configuration.
497−
498−- Normal users (with `isNormalUser = true`) which have non-empty `subUidRanges` or `subGidRanges` set no longer have additional implicit ranges allocated. To enable automatic allocation back set `autoSubUidGidRange = true`.
499−
500−- `idris2` now requires `--package` when using packages `contrib` and `network`, while previously these idris2 packages were automatically loaded.
501−
502−- The iputils package, which is installed by default, no longer provides the
503− legacy tools `tftpd` and `traceroute6`. More tools (`ninfod`, `rarpd`, and
504− `rdisc`) are going to be removed in the next release. See
505− [upstream's release notes](https://github.com/iputils/iputils/releases/tag/20211215)
506− for more details and available replacements.
507−
508−- `services.thelounge.private` was removed in favor of `services.thelounge.public`, to follow with upstream changes.
509−
510−- `pkgs.docbookrx` was removed since it's unmaintained
511−
512−- `pkgs._7zz` is now correctly licensed as LGPL3+ and BSD3 with optional unfree unRAR licensed code
513−
514−- The `vim.customize` function produced by `vimUtils.makeCustomizable` now has a slightly different interface:
515− * The wrapper now includes everything in the given Vim derivation if `name` is `"vim"` (the default). This makes the `wrapManual` argument obsolete, but this behavior can be overriden by setting the `standalone` argument.
516− * All the executables present in the given derivation (or, in `standalone` mode, only the `*vim` ones) are wrapped. This makes the `wrapGui` argument obsolete.
517− * The `vimExecutableName` and `gvimExecutableName` arguments were replaced by a single `executableName` argument in which the shell variable `$exe` can be used to refer to the wrapped executable's name.
518−
519− See the comments in `pkgs/applications/editors/vim/plugins/vim-utils.nix` for more details.
520−
521− `vimUtils.vimWithRC` was removed. You should instead use `customize` on a Vim derivation, which now accepts `vimrcFile` and `gvimrcFile` arguments.
522−
523−- `tilp2` was removed together with its module
524−
525−- The F-PROT antivirus (`fprot` package) and its service module were removed because it
526− reached [end-of-life](https://kb.cyren.com/av-support/index.php?/Knowledgebase/Article/View/434/0/end-of-sale--end-of-life-for-f-prot-and-csam).
527−
528−- `bird1` and its modules `services.bird` as well as `services.bird6` have been removed. Upgrade to `services.bird2`.
529−
530−- The options `networking.interfaces.<name>.ipv4.routes` and `networking.interfaces.<name>.ipv6.routes` are no longer ignored when using networkd instead of the default scripted network backend by setting `networking.useNetworkd` to `true`.
531−
532−- The `miller` package has been upgraded from 5.10.3 to [6.2.0](https://github.com/johnkerl/miller/releases/tag/v6.2.0). See [What's new in Miller 6](https://miller.readthedocs.io/en/latest/new-in-miller-6).
533−
534−- MultiMC has been replaced with the fork PolyMC due to upstream developers being hostile to 3rd party package maintainers. PolyMC removes all MultiMC branding and is aimed at providing proper 3rd party packages like the one contained in Nixpkgs. This change affects the data folder where game instances and other save and configuration files are stored. Users with existing installations should rename `~/.local/share/multimc` to `~/.local/share/polymc`. The main config file's path has also moved from `~/.local/share/multimc/multimc.cfg` to `~/.local/share/polymc/polymc.cfg`.
535−
536−- `systemd-nspawn@.service` settings have been reverted to the default systemd behaviour. User namespaces are now activated by default. If you want to keep running nspawn containers without user namespaces you need to set `systemd.nspawn.<name>.execConfig.PrivateUsers = false`
537−
538−- `systemd-shutdown` is now properly linked on shutdown to unmount all filesystems and device mapper devices cleanly. This can be disabled using `systemd.shutdownRamfs.enable`.
539−
540−- The Tor SOCKS proxy is now actually disabled if `services.tor.client.enable` is set to `false` (the default). If you are using this functionality but didn't change the setting or set it to `false`, you now need to set it to `true`.
541−
542−- `services.github-runner` has been hardened. Notably address families and
543− system calls have been restricted, which may adversely affect some kinds of
544− testing, e.g. using `AF_BLUETOOTH` to test bluetooth devices.
545−
546−- The terraform 0.12 compatibility has been removed and the `terraform.withPlugins` and `terraform-providers.mkProvider` implementations simplified. Providers now need to be stored under
547−`$out/libexec/terraform-providers/<registry>/<owner>/<name>/<version>/<os>_<arch>/terraform-provider-<name>_v<version>` (which mkProvider does).
548−
549− This breaks back-compat so it's not possible to mix-and-match with previous versions of nixpkgs. In exchange, it now becomes possible to use the providers from [nixpkgs-terraform-providers-bin](https://github.com/numtide/nixpkgs-terraform-providers-bin) directly.
550−
551−- The `dendrite` package has been upgraded from 0.5.1 to
552− [0.6.5](https://github.com/matrix-org/dendrite/releases/tag/v0.6.5). Instances
553− configured with split sqlite databases, which has been the default
554− in NixOS, require merging of the federation sender and signing key
555− databases. See upstream [release
556− notes](https://github.com/matrix-org/dendrite/releases/tag/v0.6.0)
557− on version 0.6.0 for details on database changes.
558−
559−- The existing `pkgs.opentelemetry-collector` has been moved to
560− `pkgs.opentelemetry-collector-contrib` to match the actual source being the
561− "contrib" edition. `pkgs.opentelemetry-collector` is now the actual core
562− release of opentelemetry-collector. If you use the community contributions
563− you should change the package you refer to. If you don't need them update your
564− commands from `otelcontribcol` to `otelcorecol` and enjoy a 7x smaller binary.
565−
566−- `services.zookeeper` has a new option `jre` for specifying the JRE to start
567− zookeeper with. It defaults to the JRE that `pkgs.zookeeper` was wrapped with,
568− instead of `pkgs.jre`. This changes the JRE to `pkgs.jdk11_headless` by default.
569−
570−- `pkgs.pgadmin` now refers to `pkgs.pgadmin4`. `pgadmin3` has been removed.
571−
572−- `pkgs.noto-fonts-cjk` is now deprecated in favor of `pkgs.noto-fonts-cjk-sans`
573− and `pkgs.noto-fonts-cjk-serif` because they each have different release
574− schedules. To maintain compatibility with prior releases of Nixpkgs,
575− `pkgs.noto-fonts-cjk` is currently an alias of `pkgs.noto-fonts-cjk-sans` and
576− doesn't include serif fonts.
577−
578−- `pkgs.epgstation` has been upgraded from v1 to v2, resulting in incompatible
579− changes in the database scheme and configuration format.
580−
581−- Some top-level settings under [services.epgstation](#opt-services.epgstation.enable)
582− is now deprecated because it was redudant due to the same options being
583− present in [services.epgstation.settings](#opt-services.epgstation.settings).
584−
585−- The option `services.epgstation.basicAuth` was removed because basic
586− authentication support was dropped by upstream.
587−
588−- The option [services.epgstation.database.passwordFile](#opt-services.epgstation.database.passwordFile)
589− no longer has a default value. Make sure to set this option explicitly before
590− upgrading. Change the database password if necessary.
591−
592−- The [services.epgstation.settings](#opt-services.epgstation.settings)
593− option now expects options for `config.yml` in EPGStation v2.
594−
595−- Existing data for the [services.epgstation](#opt-services.epgstation.enable)
596− module would have to be backed up prior to the upgrade. To back up exising
597− data to `/tmp/epgstation.bak`, run
598− `sudo -u epgstation epgstation run backup /tmp/epgstation.bak`.
599− To import that data after to the upgrade, run
600− `sudo -u epgstation epgstation run v1migrate /tmp/epgstation.bak`
601−
602−- `switch-to-configuration` (the script that is run when running `nixos-rebuild switch` for example) has been reworked
603− * The interface that allows activation scripts to restart units has been streamlined. Restarting and reloading is now done by a single file `/run/nixos/activation-restart-list` that honors `restartIfChanged` and `reloadIfChanged` of the units.
604− * Preferring to reload instead of restarting can still be achieved using `/run/nixos/activation-reload-list`.
605− * The script now uses a proper ini-file parser to parse systemd units. Some values are now only searched in one section instead of in the entire unit. This is only relevant for units that don't use the NixOS systemd moule.
606− * `RefuseManualStop`, `X-OnlyManualStart`, `X-StopOnRemoval`, `X-StopOnReconfiguration` are only searched in the `[Unit]` section
607− * `X-ReloadIfChanged`, `X-RestartIfChanged`, `X-StopIfChanged` are only searched in the `[Service]` section
608−
609−- The `services.bookstack.cacheDir` option has been removed, since the
610− cache directory is now handled by systemd.
611−
612−- The `services.bookstack.extraConfig` option has been replaced by
613− `services.bookstack.config` which implements a
614− [settings-style](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md)
615− configuration.
616−
617−- `lib.assertMsg` and `lib.assertOneOf` no longer return `false` if the passed condition is `false`, `throw`ing the given error message instead (which makes the resulting error message less cluttered). This will not impact the behaviour of code using these functions as intended, namely as top-level wrapper for `assert` conditions.
618−
619−- The `vpnc` package has been changed to use GnuTLS instead of OpenSSL by default for licensing reasons.
620−
621−- `pkgs.vimPlugins.onedark-nvim` now refers to [navarasu/onedark.nvim](https://github.com/navarasu/onedark.nvim)
622− (formerly refers to [olimorris/onedarkpro.nvim](https://github.com/olimorris/onedarkpro.nvim)).
623−
624−- `services.pipewire.enable` will default to enabling the WirePlumber session manager instead of pipewire-media-session.
625− pipewire-media-session is deprecated by upstream and not recommended, but can still be manually enabled by setting
626− `services.pipewire.media-session.enable` to `true` and `services.pipewire.wireplumber.enable` to `false`.
627−
628−- `pkgs.makeDesktopItem` has been refactored to provide a more idiomatic API. Specifically:
629− - All valid options as of FDO Desktop Entry specification version 1.4 can now be passed in as explicit arguments
630− - `exec` can now be null, for entries that are not of type Application
631− - `mimeType` argument is renamed to `mimeTypes` for consistency
632− - `mimeTypes`, `categories`, `implements`, `keywords`, `onlyShowIn` and `notShowIn` take lists of strings instead of one string with semicolon separators
633− - `extraDesktopEntries` renamed to `extraConfig` for consistency
634− - Actions should now be provided as an attrset `actions`, the `Actions` line will be autogenerated.
635− - `extraEntries` is removed.
636− - Additional validation is added both at eval time and at build time.
637−
638− See the `vscode` package for a more detailed example.
639−
640−- Existing `resholve*` functions have been renamed and nested under `pkgs.resholve`. Update uses to:
641− - `resholvePackage` -> `resholve.mkDerivation`
642− - `resholveScript` -> `resholve.writeScript`
643− - `resholveScriptBin` -> `resholve.writeScriptBin`
644−
645−- `pkgs.cosmopolitan` no longer provides the `cosmoc` command. It has been moved to `pkgs.cosmoc`.
646−
647−- `pkgs.graalvmXX-ce` packages no longer provide support for Python/Ruby/WASM, instead focusing only in Java and Native Image Support. If you need to add support back, please see the `pkgs.graalvmCEPackages.mkGraal` function to create your own customized version of GraalVM with support for what you need.
648−
649−<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
650−
651−## Other Notable Changes {#sec-release-22.05-notable-changes}
652−
653−- The option [services.redis.servers](#opt-services.redis.servers) was added
654− to support per-application `redis-server` which is more secure since Redis databases
655− are only mere key prefixes without any configuration or ACL of their own.
656− Backward-compatibility is preserved by mapping old `services.redis.settings`
657− to `services.redis.servers."".settings`, but you are strongly encouraged
658− to name each `redis-server` instance after the application using it,
659− instead of keeping that nameless one.
660− Except for the nameless `services.redis.servers.""`
661− still accessible at `127.0.0.1:6379`,
662− and to the members of the Unix group `redis`
663− through the Unix socket `/run/redis/redis.sock`,
664− all other `services.redis.servers.${serverName}`
665− are only accessible by default
666− to the members of the Unix group `redis-${serverName}`
667− through the Unix socket `/run/redis-${serverName}/redis.sock`.
668−
669−- The option [virtualisation.vmVariant](#opt-virtualisation.vmVariant) was added
670− to allow users to make changes to the `nixos-rebuild build-vm` configuration
671− that do not apply to their normal system.
672−
673− The `config.system.build.vm` attribute now always exists and defaults to the
674− value from `vmVariant`. Configurations that import the `virtualisation/qemu-vm.nix`
675− module themselves will override this value, such that `vmVariant` is not used.
676−
677− Similarly [virtualisation.vmVariantWithBootloader](#opt-virtualisation.vmVariantWithBootLoader) was added.
678−
679−- The configuration portion of the `nix-daemon` module has been reworked and exposed as [nix.settings](options.html#opt-nix-settings):
680− * Legacy options have been mapped to the corresponding options under under [nix.settings](options.html#opt-nix.settings) and will be deprecated when NixOS 21.11 reaches end of life.
681− * [nix.buildMachines.publicHostKey](options.html#opt-nix.buildMachines.publicHostKey) has been added.
682−
683−- The `writers.writePyPy2`/`writers.writePyPy3` and corresponding `writers.writePyPy2Bin`/`writers.writePyPy3Bin` convenience functions to create executable Python 2/3 scripts using the PyPy interpreter were added.
684−
685−- Some improvements have been made to the `hadoop` module:
686− - A `gatewayRole` option has been added, for deploying hadoop cluster configuration files to a node that does not have any active services
687− - Support for older versions of hadoop have been added to the module
688− - Overriding and extending site XML files has been made easier
689−
690−- The auto-upgrade service now accepts persistent (default: true) parameter.
691− By default auto-upgrade will now run immediately if it would have been triggered at least
692− once during the time when the timer was inactive.
693−
694−- If you are using Wayland you can choose to use the Ozone Wayland support
695− in Chrome and several Electron apps by setting the environment variable
696− `NIXOS_OZONE_WL=1` (for example via
697− `environment.sessionVariables.NIXOS_OZONE_WL = "1"`).
698− This is not enabled by default because Ozone Wayland is
699− still under heavy development and behavior is not always flawless.
700− Furthermore, not all Electron apps use the latest Electron versions.
701−
702−- A new option group `systemd.network.wait-online` was added, with options to configure `systemd-networkd-wait-online.service`:
703− - `anyInterface` allows specifying that the network should be considered online when *at least one* interface is online (useful on laptops)
704− - `timeout` defines how long to wait for the network to come online
705− - `extraArgs` for everything else
706−
707−- The `influxdb2` package was split into `influxdb2-server` and
708− `influxdb2-cli`, matching the split that took place upstream. A
709− combined `influxdb2` package is still provided in this release for
710− backwards compatibilty, but will be removed at a later date.
711−
712−- The `unifi` package was switched from `unifi6` to `unifi7`.
713− Direct downgrades from Unifi 7 to Unifi 6 are not possible and require restoring from a backup made by Unifi 6.
714−
715−- `programs.zsh.autosuggestions.strategy` now takes a list of strings instead of a string.
716−
717−- The `asterisk` and `asterisk-stable` packages were switched from `asterisk_18` to the newly-packaged `asterisk_19`. Asterisk 13 and 17 have been removed as they have reached their end of life.
718−
719−- The `services.unifi.openPorts` option default value of `true` is now deprecated and will be changed to `false` in 22.11.
720− Configurations using this default will print a warning when rebuilt.
721−
722−- The `services.unifi-video.openPorts` option default value of `true` is now deprecated and will be changed to `false` in 22.11.
723− Configurations using this default will print a warning when rebuilt.
724−
725−- `security.acme` certificates will now correctly check for CA
726− revokation before reaching their minimum age.
727−
728−- Removing domains from `security.acme.certs._name_.extraDomainNames`
729− will now correctly remove those domains during rebuild/renew.
730−
731−- MariaDB is now offered in several versions, not just the newest one.
732− So if you have a need for running MariaDB 10.4 for example, you can now just set `services.mysql.package = pkgs.mariadb_104;`.
733− In general, it is recommended to run the newest version, to get the newest features, while sticking with an LTS version will most likely provide a more stable experience.
734− Sometimes software is also incompatible with the newest version of MariaDB.
735−
736−- The option
737− [programs.ssh.enableAskPassword](#opt-programs.ssh.enableAskPassword) was
738− added, decoupling the setting of `SSH_ASKPASS` from
739− `services.xserver.enable`. This allows easy usage in non-X11 environments,
740− e.g. Wayland.
741−
742−- [programs.ssh.knownHosts](#opt-programs.ssh.knownHosts) has gained an `extraHostNames`
743− option to augment `hostNames`. It is now possible to use the attribute name of a `knownHosts`
744− entry as the primary host name and specify secondary host names using `extraHostNames` without
745− having to duplicate the primary host name.
746−
747−- The `services.stubby` module was converted to a [settings-style](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) configuration.
748−
749−- The option
750− [services.xserver.desktopManager.runXdgAutostartIfNone](#opt-services.xserver.desktopManager.runXdgAutostartIfNone)
751− was added in order to automatically run XDG autostart files for sessions without a desktop manager.
752− This replaces helpers like the `dex` package.
753−
754−- When setting [i18n.inputMethod.enabled](#opt-i18n.inputMethod.enabled) to `fcitx5`,
755− it no longer creates corresponding systemd user services.
756− It now relies on XDG autostart files to start and work properly in your desktop sessions.
757− If you are using only a window manager without a desktop manager, you need to enable
758− `services.xserver.desktopManager.runXdgAutostartIfNone` or using the `dex` package to make `fcitx5` work.
759−
760−- A new module was added for the Envoy reverse proxy, providing the options `services.envoy.enable` and `services.envoy.settings`.
761−
762−- The option `services.duplicati.dataDir` has been added to allow changing the location of duplicati's files.
763−
764−- The options `boot.extraModprobeConfig` and `boot.blacklistedKernelModules` now also take effect in the initrd by copying the file `/etc/modprobe.d/nixos.conf` into the initrd.
765−
766−- `nixos-generate-config` now puts the dhcp configuration in `hardware-configuration.nix` instead of `configuration.nix`.
767−
768−- ORY Kratos was updated to version 0.9.0-alpha.3, which introduces some breaking changes:
769− - All endpoints at the Admin API are now exposed at `/admin/`. For example, endpoint `https://kratos:4434/identities` is now exposed at `https://kratos:4434/admin/identities`
770− - Configuration key `selfservice.whitelisted_return_urls` has been renamed to `allowed_return_urls`
771− - The `password_identifier` form field of the password login strategy has been renamed to `identifier` to make compatibility with passwordless flows possible.
772− - Instead of having a global `default_schema_url` which developers used to update their schema, you now need to define the `default_schema_id` which must reference schema ID in your config.
773− - Calling `/self-service/recovery` without flow ID or with an invalid flow ID while authenticated will now respond with an error instead of redirecting to the default page.
774− - If you are relying on the SQLite images, update your Docker Pull commands as follows:
775− - `docker pull oryd/kratos:{version}`
776− - Additionally, all passwords now have to be at least 8 characters long.
777− - For more details, see:
778− - [Release Notes for v0.8.1-alpha-1](https://github.com/ory/kratos/releases/tag/v0.8.1-alpha.1)
779− - [Release Notes for v0.8.2-alpha-1](https://github.com/ory/kratos/releases/tag/v0.8.2-alpha.1)
780− - [Release Notes for v0.9.0-alpha-1](https://github.com/ory/kratos/releases/tag/v0.9.0-alpha.1)
781− - [Release Notes for v0.9.0-alpha-3](https://github.com/ory/kratos/releases/tag/v0.9.0-alpha.3)
782−
783−
784−- `fetchFromSourcehut` now allows fetching repositories recursively
785− using `fetchgit` or `fetchhg` if the argument `fetchSubmodules`
786− is set to `true`.
787−
788−- A module for declarative configuration of openconnect VPN profiles was added under `networking.openconnect`.
789−
790−- The `element-desktop` package now has an `useKeytar` option (defaults to `true`),
791− which allows disabling `keytar` and in turn `libsecret` usage
792− (which binds to native credential managers / keychain libraries).
793−
794−- The option `services.thelounge.plugins` has been added to allow installing plugins for The Lounge. Plugins can be found in `pkgs.theLoungePlugins.plugins` and `pkgs.theLoungePlugins.themes`.
795−
796−- The option `services.xserver.videoDriver = [ "nvidia" ];` will now also install [nvidia VA-API drivers](https://github.com/elFarto/nvidia-vaapi-driver) by default.
797−
798−- The `firmwareLinuxNonfree` package has been renamed to `linux-firmware`.
799−
800−- It is now possible to specify wordlists to include as handy to access environment variables using the `config.environment.wordlist` configuration options.
801−
802−- The `services.mbpfan` module was converted to a [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) configuration.
803−
804−- The default value for `programs.spacefm.settings.graphical_su` got unset. It previously pointed to `gksu` which has been removed.
805−
806−- A new module was added for the [Starship](https://starship.rs/) shell prompt,
807− providing the options `programs.starship.enable` and `programs.starship.settings`.
808−
809−- The [Dino](https://dino.im) XMPP client was updated to 0.3, adding support for audio and video calls.
810−
811−- `services.mattermost.plugins` has been added to allow the declarative installation of Mattermost plugins.
812− Plugins are automatically repackaged using autoPatchelf.
813−
814−- [services.logrotate.enable](#opt-services.logrotate.enable) now defaults to true if any rotate path has
815− been defined, and some paths have been added by default.
816−- The logrotate module also has been updated to freeform syntax: [services.logrotate.paths](#opt-services.logrotate.paths)
817− and [services.logrotate.extraConfig](#opt-services.logrotate.extraConfig) will work, but issue deprecation
818− warnings and [services.logrotate.settings](#opt-services.logrotate.settings) should now be used instead.
819−
820−- `security.pam.ussh` has been added, which allows authorizing PAM sessions based on SSH _certificates_ held within an SSH agent, using [pam-ussh](https://github.com/uber/pam-ussh).
821−
822−- The `vscode-extensions.ionide.ionide-fsharp` package has been updated to 6.0.0 and now requires .NET 6.0.
823−
824−- The `zrepl` package has been updated from 0.4.0 to 0.5:
825−
826− - The RPC protocol version was bumped; all zrepl daemons in a setup must be updated and restarted before replication can resume.
827− - A bug involving encrypt-on-receive has been fixed. Read the [zrepl documentation](https://zrepl.github.io/configuration/sendrecvoptions.html#job-recv-options-placeholder) and check the output of `zfs get -r encryption,zrepl:placeholder PATH_TO_ROOTFS` on the receiver.
828−
829−- The `polybar` package has been updated from 3.5.7 to 3.6.2. See [the changelog](https://github.com/polybar/polybar/releases/tag/3.6.0) for more details.
830− - Breaking changes include changes to escaping rules in configuration values, changes in behavior when encountering invalid tag names, and changes to inter-process-messaging (IPC).
831−
832−- Renamed option `services.openssh.challengeResponseAuthentication` to `services.openssh.kbdInteractiveAuthentication`.
833− Reason is that the old name has been deprecated upstream.
834− Using the old option name will still work, but produce a warning.
835−
836−- `services.autorandr` now allows for adding hooks and profiles declaratively.
837−
838−- The `pomerium-cli` command has been moved out of the `pomerium` package into
839− the `pomerium-cli` package, following upstream's repository split. If you are
840− using the `pomerium-cli` command, you should now install the `pomerium-cli`
841− package.
842−
843−- The option
844− [services.networking.networkmanager.enableFccUnlock](#opt-networking.networkmanager.enableFccUnlock)
845− was added to support FCC unlock procedures. Since release 1.18.4, the ModemManager
846− daemon no longer automatically performs the FCC unlock procedure by default. See
847− [the docs](https://modemmanager.org/docs/modemmanager/fcc-unlock/) for more details.
848−
849−- `programs.tmux` has a new option `plugins` that accepts a list of packages from the `tmuxPlugins` group. The specified packages are added to the system and loaded by `tmux`.
850−
851−- The polkit service, available at `security.polkit.enable`, is now disabled by default. It will automatically be enabled through services and desktop environments as needed.
852−
853−- xfsprogs was update to version 5.15, which enables inobtcount and bigtime by default on filesystem creation. Support for these features was added in kernel 5.10 and deemed stable in kernel 5.15.
854− If you want to be able to mount XFS filesystems created with this release of xfsprogs on kernel releases older than 5.10, you need to format them with `mkfs.xfs -m bigtime=0 -m inobtcount=0`.
855−
856−- `services.xserver.desktopManager.xfce` now includes Xfce's screen locker, `xfce4-screensaver` that is enabled by default. You can disable it by setting `false` to [services.xserver.desktopManager.xfce.enableScreensaver](#opt-services.xserver.desktopManager.xfce.enableScreensaver).
857−
858−- The `hadoop` package has added support for `aarch64-linux` and `aarch64-darwin` as of 3.3.1 ([#158613](https://github.com/NixOS/nixpkgs/pull/158613)).
859−
860−- The `R` package now builds again on `aarch64-darwin` ([#158992](https://github.com/NixOS/nixpkgs/pull/158992)).
861−
862−- The `nss` package was split into `nss_esr` and `nss_latest`, with `nss` being an alias for `nss_esr`. This was done to ease maintenance of `nss` and dependent high-profile packages like `firefox`.
863−
864−- The Nextcloud module now supports to create a Mysql database automatically
865− with `services.nextcloud.database.createLocally` enabled.
866−
867−- The `spark3` package has been updated from 3.1.2 to 3.2.1 ([#160075](https://github.com/NixOS/nixpkgs/pull/160075)):
868−
869− - Testing has been enabled for `aarch64-linux` in addition to `x86_64-linux`.
870− - The `spark3` package is now usable on `aarch64-darwin` as a result of [#158613](https://github.com/NixOS/nixpkgs/pull/158613) and [#158992](https://github.com/NixOS/nixpkgs/pull/158992).
871−
872−- The `programs.nncp` options were added for generating host-global NNCP configuration.
873−
874−- The option `services.snapserver.openFirewall` will no longer default to
875− `true` starting with NixOS 22.11. Enable it explicitly if you need to control
876− Snapserver remotely or connect streamig clients from other hosts.
877−
878−<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
nixos/lib/default.nixdeleted−33
@@ -1,33 +0,0 @@
1−let
2− # The warning is in a top-level let binding so it is only printed once.
3− minimalModulesWarning = warn "lib.nixos.evalModules is experimental and subject to change. See nixos/lib/default.nix" null;
4− inherit (nonExtendedLib) warn;
5− nonExtendedLib = import ../../lib;
6−in
7−{ # Optional. Allows an extended `lib` to be used instead of the regular Nixpkgs lib.
8− lib ? nonExtendedLib,
9−
10− # Feature flags allow you to opt in to unfinished code. These may change some
11− # behavior or disable warnings.
12− featureFlags ? {},
13−
14− # This file itself is rather new, so we accept unknown parameters to be forward
15− # compatible. This is generally not recommended, because typos go undetected.
16− ...
17−}:
18−let
19− seqIf = cond: if cond then builtins.seq else a: b: b;
20− # If cond, force `a` before returning any attr
21− seqAttrsIf = cond: a: lib.mapAttrs (_: v: seqIf cond a v);
22−
23− eval-config-minimal = import ./eval-config-minimal.nix { inherit lib; };
24−in
25−/*
26− This attribute set appears as lib.nixos in the flake, or can be imported
27− using a binding like `nixosLib = import (nixpkgs + "/nixos/lib") { }`.
28−*/
29−{
30− inherit (seqAttrsIf (!featureFlags?minimalModules) minimalModulesWarning eval-config-minimal)
31− evalModules
32− ;
33−}
nixos/lib/eval-cacheable-options.nixdeleted−53
@@ -1,53 +0,0 @@
1−{ libPath
2−, pkgsLibPath
3−, nixosPath
4−, modules
5−, stateVersion
6−, release
7−}:
8−
9−let
10− lib = import libPath;
11− modulesPath = "${nixosPath}/modules";
12− # dummy pkgs set that contains no packages, only `pkgs.lib` from the full set.
13− # not having `pkgs.lib` causes all users of `pkgs.formats` to fail.
14− pkgs = import pkgsLibPath {
15− inherit lib;
16− pkgs = null;
17− };
18− utils = import "${nixosPath}/lib/utils.nix" {
19− inherit config lib;
20− pkgs = null;
21− };
22− # this is used both as a module and as specialArgs.
23− # as a module it sets the _module special values, as specialArgs it makes `config`
24− # unusable. this causes documentation attributes depending on `config` to fail.
25− config = {
26− _module.check = false;
27− _module.args = {};
28− system.stateVersion = stateVersion;
29− };
30− eval = lib.evalModules {
31− modules = (map (m: "${modulesPath}/${m}") modules) ++ [
32− config
33− ];
34− specialArgs = {
35− inherit config pkgs utils;
36− };
37− };
38− docs = import "${nixosPath}/doc/manual" {
39− pkgs = pkgs // {
40− inherit lib;
41− # duplicate of the declaration in all-packages.nix
42− buildPackages.nixosOptionsDoc = attrs:
43− (import "${nixosPath}/lib/make-options-doc")
44− ({ inherit pkgs lib; } // attrs);
45− };
46− config = config.config;
47− options = eval.options;
48− version = release;
49− revision = "release-${release}";
50− prefix = modulesPath;
51− };
52−in
53− docs.optionsNix
nixos/lib/eval-config-minimal.nixdeleted−49
@@ -1,49 +0,0 @@
1−
2−# DO NOT IMPORT. Use nixpkgsFlake.lib.nixos, or import (nixpkgs + "/nixos/lib")
3−{ lib }: # read -^
4−
5−let
6−
7− /*
8− Invoke NixOS. Unlike traditional NixOS, this does not include all modules.
9− Any such modules have to be explicitly added via the `modules` parameter,
10− or imported using `imports` in a module.
11−
12− A minimal module list improves NixOS evaluation performance and allows
13− modules to be independently usable, supporting new use cases.
14−
15− Parameters:
16−
17− modules: A list of modules that constitute the configuration.
18−
19− specialArgs: An attribute set of module arguments. Unlike
20− `config._module.args`, these are available for use in
21− `imports`.
22− `config._module.args` should be preferred when possible.
23−
24− Return:
25−
26− An attribute set containing `config.system.build.toplevel` among other
27− attributes. See `lib.evalModules` in the Nixpkgs library.
28−
29− */
30− evalModules = {
31− prefix ? [],
32− modules ? [],
33− specialArgs ? {},
34− }:
35− # NOTE: Regular NixOS currently does use this function! Don't break it!
36− # Ideally we don't diverge, unless we learn that we should.
37− # In other words, only the public interface of nixos.evalModules
38− # is experimental.
39− lib.evalModules {
40− inherit prefix modules;
41− specialArgs = {
42− modulesPath = builtins.toString ../modules;
43− } // specialArgs;
44− };
45−
46−in
47−{
48− inherit evalModules;
49−}
nixos/lib/eval-config.nix+16−54
@@ -8,7 +8,6 @@
88# as subcomponents (e.g. the container feature, or nixops if network
99# expressions are ever made modular at the top level) can just use
1010# types.submodule instead of using eval-config.nix
11−evalConfigArgs@
1211{ # !!! system can be set modularly, would be nice to remove
1312 system ? builtins.currentSystem
1413, # !!! is this argument needed any more? The pkgs argument can
@@ -21,7 +20,6 @@ evalConfigArgs@
2120, # !!! See comment about args in lib/modules.nix
2221 specialArgs ? {}
2322, modules
24−, modulesLocation ? (builtins.unsafeGetAttrPos "modules" evalConfigArgs).file or null
2523, # !!! See comment about check in lib/modules.nix
2624 check ? true
2725, prefix ? []
@@ -30,16 +28,10 @@ evalConfigArgs@
3028 in if e == "" then [] else [(import e)]
3129}:
3230
33−let pkgs_ = pkgs;
31+let extraArgs_ = extraArgs; pkgs_ = pkgs;
3432in
3533
3634let
37− evalModulesMinimal = (import ./default.nix {
38− inherit lib;
39− # Implicit use of feature is noted in implementation.
40− featureFlags.minimalModules = { };
41− }).evalModules;
42−
4335 pkgsModule = rec {
4436 _file = ./eval-config.nix;
4537 key = _file;
@@ -59,53 +51,23 @@ let
5951 };
6052 };
6153
62− withWarnings = x:
63− lib.warnIf (evalConfigArgs?extraArgs) "The extraArgs argument to eval-config.nix is deprecated. Please set config._module.args instead."
64− lib.warnIf (evalConfigArgs?check) "The check argument to eval-config.nix is deprecated. Please set config._module.check instead."
65− x;
66−
67− legacyModules =
68− lib.optional (evalConfigArgs?extraArgs) {
69− config = {
70− _module.args = extraArgs;
71− };
72− }
73− ++ lib.optional (evalConfigArgs?check) {
74− config = {
75− _module.check = lib.mkDefault check;
76− };
77− };
78−
79− allUserModules =
80− let
81− # Add the invoking file (or specified modulesLocation) as error message location
82− # for modules that don't have their own locations; presumably inline modules.
83− locatedModules =
84− if modulesLocation == null then
85− modules
86− else
87− map (lib.setDefaultModuleLocation modulesLocation) modules;
88− in
89− locatedModules ++ legacyModules;
54+in rec {
9055
91− noUserModules = evalModulesMinimal ({
92− inherit prefix specialArgs;
93− modules = baseModules ++ extraModules ++ [ pkgsModule modulesModule ];
94− });
56+ # Merge the option definitions in all modules, forming the full
57+ # system configuration.
58+ inherit (lib.evalModules {
59+ inherit prefix check;
60+ modules = baseModules ++ extraModules ++ [ pkgsModule ] ++ modules;
61+ args = extraArgs;
62+ specialArgs =
63+ { modulesPath = builtins.toString ../modules; } // specialArgs;
64+ }) config options _module type;
9565
96− # Extra arguments that are useful for constructing a similar configuration.
97− modulesModule = {
98− config = {
99− _module.args = {
100− inherit noUserModules baseModules extraModules modules;
101− };
102− };
66+ # These are the extra arguments passed to every module. In
67+ # particular, Nixpkgs is passed through the "pkgs" argument.
68+ extraArgs = extraArgs_ // {
69+ inherit baseModules extraModules modules;
10370 };
10471
105− nixosWithUserModules = noUserModules.extendModules { modules = allUserModules; };
106−
107−in
108−withWarnings nixosWithUserModules // {
109− inherit extraArgs;
110− inherit (nixosWithUserModules._module.args) pkgs;
72+ inherit (_module.args) pkgs;
11173}
nixos/lib/make-disk-image.nix+1−2
@@ -170,7 +170,6 @@ let format' = format; in let
170170 config.system.build.nixos-install
171171 config.system.build.nixos-enter
172172 nix
173− systemdMinimal
174173 ] ++ stdenv.initialPath);
175174
176175 # I'm preserving the line below because I'm going to search for it across nixpkgs to consolidate
@@ -282,7 +281,7 @@ let format' = format; in let
282281 --substituters ""
283282
284283 ${optionalString (additionalPaths' != []) ''
285− nix --extra-experimental-features nix-command copy --to $root --no-check-sigs ${concatStringsSep " " additionalPaths'}
284+ nix copy --to $root --no-check-sigs ${concatStringsSep " " additionalPaths'}
286285 ''}
287286
288287 diskImage=nixos.raw
nixos/lib/make-iso9660-image.sh−1
@@ -105,7 +105,6 @@ mkdir -p $out/iso
105105# version-5 UUID's work)
106106xorriso="xorriso
107107 -boot_image any gpt_disk_guid=$(uuid -v 5 daed2280-b91e-42c0-aed6-82c825ca41f3 $out | tr -d -)
108− -volume_date all_file_dates =$SOURCE_DATE_EPOCH
109108 -as mkisofs
110109 -iso-level 3
111110 -volid ${volumeID}
nixos/lib/make-multi-disk-zfs-image.nixdeleted−333
@@ -1,333 +0,0 @@
1−# Note: This is a private API, internal to NixOS. Its interface is subject
2−# to change without notice.
3−#
4−# The result of this builder is two disk images:
5−#
6−# * `boot` - a small disk formatted with FAT to be used for /boot. FAT is
7−# chosen to support EFI.
8−# * `root` - a larger disk with a zpool taking the entire disk.
9−#
10−# This two-disk approach is taken to satisfy ZFS's requirements for
11−# autoexpand.
12−#
13−# # Why doesn't autoexpand work with ZFS in a partition?
14−#
15−# When ZFS owns the whole disk doesn’t really use a partition: it has
16−# a marker partition at the start and a marker partition at the end of
17−# the disk.
18−#
19−# If ZFS is constrained to a partition, ZFS leaves expanding the partition
20−# up to the user. Obviously, the user may not choose to do so.
21−#
22−# Once the user expands the partition, calling zpool online -e expands the
23−# vdev to use the whole partition. It doesn’t happen automatically
24−# presumably because zed doesn’t get an event saying it’s partition grew,
25−# whereas it can and does get an event saying the whole disk it is on is
26−# now larger.
27−{ lib
28−, pkgs
29−, # The NixOS configuration to be installed onto the disk image.
30− config
31−
32−, # size of the FAT boot disk, in megabytes.
33− bootSize ? 1024
34−
35−, # The size of the root disk, in megabytes.
36− rootSize ? 2048
37−
38−, # The name of the ZFS pool
39− rootPoolName ? "tank"
40−
41−, # zpool properties
42− rootPoolProperties ? {
43− autoexpand = "on";
44− }
45−, # pool-wide filesystem properties
46− rootPoolFilesystemProperties ? {
47− acltype = "posixacl";
48− atime = "off";
49− compression = "on";
50− mountpoint = "legacy";
51− xattr = "sa";
52− }
53−
54−, # datasets, with per-attribute options:
55− # mount: (optional) mount point in the VM
56− # properties: (optional) ZFS properties on the dataset, like filesystemProperties
57− # Notes:
58− # 1. datasets will be created from shorter to longer names as a simple topo-sort
59− # 2. you should define a root's dataset's mount for `/`
60− datasets ? { }
61−
62−, # The files and directories to be placed in the target file system.
63− # This is a list of attribute sets {source, target} where `source'
64− # is the file system object (regular file or directory) to be
65− # grafted in the file system at path `target'.
66− contents ? []
67−
68−, # The initial NixOS configuration file to be copied to
69− # /etc/nixos/configuration.nix. This configuration will be embedded
70− # inside a configuration which includes the described ZFS fileSystems.
71− configFile ? null
72−
73−, # Shell code executed after the VM has finished.
74− postVM ? ""
75−
76−, name ? "nixos-disk-image"
77−
78−, # Disk image format, one of qcow2, qcow2-compressed, vdi, vpc, raw.
79− format ? "raw"
80−
81−, # Include a copy of Nixpkgs in the disk image
82− includeChannel ? true
83−}:
84−let
85− formatOpt = if format == "qcow2-compressed" then "qcow2" else format;
86−
87− compress = lib.optionalString (format == "qcow2-compressed") "-c";
88−
89− filenameSuffix = "." + {
90− qcow2 = "qcow2";
91− vdi = "vdi";
92− vpc = "vhd";
93− raw = "img";
94− }.${formatOpt} or formatOpt;
95− bootFilename = "nixos.boot${filenameSuffix}";
96− rootFilename = "nixos.root${filenameSuffix}";
97−
98− # FIXME: merge with channel.nix / make-channel.nix.
99− channelSources =
100− let
101− nixpkgs = lib.cleanSource pkgs.path;
102− in
103− pkgs.runCommand "nixos-${config.system.nixos.version}" {} ''
104− mkdir -p $out
105− cp -prd ${nixpkgs.outPath} $out/nixos
106− chmod -R u+w $out/nixos
107− if [ ! -e $out/nixos/nixpkgs ]; then
108− ln -s . $out/nixos/nixpkgs
109− fi
110− rm -rf $out/nixos/.git
111− echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix
112− '';
113−
114− closureInfo = pkgs.closureInfo {
115− rootPaths = [ config.system.build.toplevel ]
116− ++ (lib.optional includeChannel channelSources);
117− };
118−
119− modulesTree = pkgs.aggregateModules
120− (with config.boot.kernelPackages; [ kernel zfs ]);
121−
122− tools = lib.makeBinPath (
123− with pkgs; [
124− config.system.build.nixos-enter
125− config.system.build.nixos-install
126− dosfstools
127− e2fsprogs
128− gptfdisk
129− nix
130− parted
131− utillinux
132− zfs
133− ]
134− );
135−
136− hasDefinedMount = disk: ((disk.mount or null) != null);
137−
138− stringifyProperties = prefix: properties: lib.concatStringsSep " \\\n" (
139− lib.mapAttrsToList
140− (
141− property: value: "${prefix} ${lib.escapeShellArg property}=${lib.escapeShellArg value}"
142− )
143− properties
144− );
145−
146− featuresToProperties = features:
147− lib.listToAttrs
148− (builtins.map (feature: {
149− name = "feature@${feature}";
150− value = "enabled";
151− }) features);
152−
153− createDatasets =
154− let
155− datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
156− sorted = lib.sort (left: right: (lib.stringLength left.name) < (lib.stringLength right.name)) datasetlist;
157− cmd = { name, value }:
158− let
159− properties = stringifyProperties "-o" (value.properties or {});
160− in
161− "zfs create -p ${properties} ${name}";
162− in
163− lib.concatMapStringsSep "\n" cmd sorted;
164−
165− mountDatasets =
166− let
167− datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
168− mounts = lib.filter ({ value, ... }: hasDefinedMount value) datasetlist;
169− sorted = lib.sort (left: right: (lib.stringLength left.value.mount) < (lib.stringLength right.value.mount)) mounts;
170− cmd = { name, value }:
171− ''
172− mkdir -p /mnt${lib.escapeShellArg value.mount}
173− mount -t zfs ${name} /mnt${lib.escapeShellArg value.mount}
174− '';
175− in
176− lib.concatMapStringsSep "\n" cmd sorted;
177−
178− unmountDatasets =
179− let
180− datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
181− mounts = lib.filter ({ value, ... }: hasDefinedMount value) datasetlist;
182− sorted = lib.sort (left: right: (lib.stringLength left.value.mount) > (lib.stringLength right.value.mount)) mounts;
183− cmd = { name, value }:
184− ''
185− umount /mnt${lib.escapeShellArg value.mount}
186− '';
187− in
188− lib.concatMapStringsSep "\n" cmd sorted;
189−
190−
191− fileSystemsCfgFile =
192− let
193− mountable = lib.filterAttrs (_: value: hasDefinedMount value) datasets;
194− in
195− pkgs.runCommand "filesystem-config.nix" {
196− buildInputs = with pkgs; [ jq nixpkgs-fmt ];
197− filesystems = builtins.toJSON {
198− fileSystems = lib.mapAttrs'
199− (
200− dataset: attrs:
201− {
202− name = attrs.mount;
203− value = {
204− fsType = "zfs";
205− device = "${dataset}";
206− };
207− }
208− )
209− mountable;
210− };
211− passAsFile = [ "filesystems" ];
212− } ''
213− (
214− echo "builtins.fromJSON '''"
215− jq . < "$filesystemsPath"
216− echo "'''"
217− ) > $out
218−
219− nixpkgs-fmt $out
220− '';
221−
222− mergedConfig =
223− if configFile == null
224− then fileSystemsCfgFile
225− else
226− pkgs.runCommand "configuration.nix" {
227− buildInputs = with pkgs; [ nixpkgs-fmt ];
228− }
229− ''
230− (
231− echo '{ imports = ['
232− printf "(%s)\n" "$(cat ${fileSystemsCfgFile})";
233− printf "(%s)\n" "$(cat ${configFile})";
234− echo ']; }'
235− ) > $out
236−
237− nixpkgs-fmt $out
238− '';
239−
240− image = (
241− pkgs.vmTools.override {
242− rootModules =
243− [ "zfs" "9p" "9pnet_virtio" "virtio_pci" "virtio_blk" ] ++
244− (pkgs.lib.optional pkgs.stdenv.hostPlatform.isx86 "rtc_cmos");
245− kernel = modulesTree;
246− }
247− ).runInLinuxVM (
248− pkgs.runCommand name
249− {
250− QEMU_OPTS = "-drive file=$bootDiskImage,if=virtio,cache=unsafe,werror=report"
251− + " -drive file=$rootDiskImage,if=virtio,cache=unsafe,werror=report";
252− preVM = ''
253− PATH=$PATH:${pkgs.qemu_kvm}/bin
254− mkdir $out
255− bootDiskImage=boot.raw
256− qemu-img create -f raw $bootDiskImage ${toString bootSize}M
257−
258− rootDiskImage=root.raw
259− qemu-img create -f raw $rootDiskImage ${toString rootSize}M
260− '';
261−
262− postVM = ''
263− ${if formatOpt == "raw" then ''
264− mv $bootDiskImage $out/${bootFilename}
265− mv $rootDiskImage $out/${rootFilename}
266− '' else ''
267− ${pkgs.qemu}/bin/qemu-img convert -f raw -O ${formatOpt} ${compress} $bootDiskImage $out/${bootFilename}
268− ${pkgs.qemu}/bin/qemu-img convert -f raw -O ${formatOpt} ${compress} $rootDiskImage $out/${rootFilename}
269− ''}
270− bootDiskImage=$out/${bootFilename}
271− rootDiskImage=$out/${rootFilename}
272− set -x
273− ${postVM}
274− '';
275− } ''
276− export PATH=${tools}:$PATH
277− set -x
278−
279− cp -sv /dev/vda /dev/sda
280− cp -sv /dev/vda /dev/xvda
281−
282− parted --script /dev/vda -- \
283− mklabel gpt \
284− mkpart no-fs 1MiB 2MiB \
285− set 1 bios_grub on \
286− align-check optimal 1 \
287− mkpart ESP fat32 2MiB -1MiB \
288− align-check optimal 2 \
289− print
290−
291− sfdisk --dump /dev/vda
292−
293−
294− zpool create \
295− ${stringifyProperties " -o" rootPoolProperties} \
296− ${stringifyProperties " -O" rootPoolFilesystemProperties} \
297− ${rootPoolName} /dev/vdb
298− parted --script /dev/vdb -- print
299−
300− ${createDatasets}
301− ${mountDatasets}
302−
303− mkdir -p /mnt/boot
304− mkfs.vfat -n ESP /dev/vda2
305− mount /dev/vda2 /mnt/boot
306−
307− mount
308−
309− # Install a configuration.nix
310− mkdir -p /mnt/etc/nixos
311− # `cat` so it is mutable on the fs
312− cat ${mergedConfig} > /mnt/etc/nixos/configuration.nix
313−
314− export NIX_STATE_DIR=$TMPDIR/state
315− nix-store --load-db < ${closureInfo}/registration
316−
317− nixos-install \
318− --root /mnt \
319− --no-root-passwd \
320− --system ${config.system.build.toplevel} \
321− --substituters "" \
322− ${lib.optionalString includeChannel ''--channel ${channelSources}''}
323−
324− df -h
325−
326− umount /mnt/boot
327− ${unmountDatasets}
328−
329− zpool export ${rootPoolName}
330− ''
331− );
332−in
333−image
nixos/lib/make-options-doc/default.nix+105−76
@@ -21,35 +21,21 @@
2121, options
2222, transformOptions ? lib.id # function for additional tranformations of the options
2323, revision ? "" # Specify revision for the options
24−# a set of options the docs we are generating will be merged into, as if by recursiveUpdate.
25−# used to split the options doc build into a static part (nixos/modules) and a dynamic part
26−# (non-nixos modules imported via configuration.nix, other module sources).
27−, baseOptionsJSON ? null
28−# instead of printing warnings for eg options with missing descriptions (which may be lost
29−# by nix build unless -L is given), emit errors instead and fail the build
30−, warningsAreErrors ? true
3124}:
3225
3326let
34− # Make a value safe for JSON. Functions are replaced by the string "<function>",
35− # derivations are replaced with an attrset
36− # { _type = "derivation"; name = <name of that derivation>; }.
37− # We need to handle derivations specially because consumers want to know about them,
38− # but we can't easily use the type,name subset of keys (since type is often used as
39− # a module option and might cause confusion). Use _type,name instead to the same
40− # effect, since _type is already used by the module system.
41− substSpecial = x:
42− if lib.isDerivation x then { _type = "derivation"; name = x.name; }
43− else if builtins.isAttrs x then lib.mapAttrs (name: substSpecial) x
44− else if builtins.isList x then map substSpecial x
27+ # Replace functions by the string <function>
28+ substFunction = x:
29+ if builtins.isAttrs x then lib.mapAttrs (name: substFunction) x
30+ else if builtins.isList x then map substFunction x
4531 else if lib.isFunction x then "<function>"
4632 else x;
4733
48− optionsList = lib.flip map optionsListVisible
34+ optionsListDesc = lib.flip map optionsListVisible
4935 (opt: transformOptions opt
50− // lib.optionalAttrs (opt ? example) { example = substSpecial opt.example; }
51− // lib.optionalAttrs (opt ? default) { default = substSpecial opt.default; }
52− // lib.optionalAttrs (opt ? type) { type = substSpecial opt.type; }
36+ // lib.optionalAttrs (opt ? example) { example = substFunction opt.example; }
37+ // lib.optionalAttrs (opt ? default) { default = substFunction opt.default; }
38+ // lib.optionalAttrs (opt ? type) { type = substFunction opt.type; }
5339 // lib.optionalAttrs (opt ? relatedPackages && opt.relatedPackages != []) { relatedPackages = genRelatedPackages opt.relatedPackages opt.name; }
5440 );
5541
@@ -58,15 +44,10 @@ let
5844 # ../../../lib/options.nix influences.
5945 #
6046 # Each element of `relatedPackages` can be either
61− # - a string: that will be interpreted as an attribute name from `pkgs` and turned into a link
62− # to search.nixos.org,
63− # - a list: that will be interpreted as an attribute path from `pkgs` and turned into a link
64− # to search.nixos.org,
65− # - an attrset: that can specify `name`, `path`, `comment`
47+ # - a string: that will be interpreted as an attribute name from `pkgs`,
48+ # - a list: that will be interpreted as an attribute path from `pkgs`,
49+ # - an attrset: that can specify `name`, `path`, `package`, `comment`
6650 # (either of `name`, `path` is required, the rest are optional).
67− #
68− # NOTE: No checks against `pkgs` are made to ensure that the referenced package actually exists.
69− # Such checks are not compatible with option docs caching.
7051 genRelatedPackages = packages: optName:
7152 let
7253 unpack = p: if lib.isString p then { name = p; }
@@ -76,78 +57,126 @@ let
7657 let
7758 title = args.title or null;
7859 name = args.name or (lib.concatStringsSep "." args.path);
79− in ''
80− <listitem>
81− <para>
82− <link xlink:href="https://search.nixos.org/packages?show=${name}&amp;sort=relevance&amp;query=${name}">
83− <literal>${lib.optionalString (title != null) "${title} aka "}pkgs.${name}</literal>
84− </link>
85− </para>
86− ${lib.optionalString (args ? comment) "<para>${args.comment}</para>"}
87− </listitem>
88− '';
60+ path = args.path or [ args.name ];
61+ package = args.package or (lib.attrByPath path (throw "Invalid package attribute path `${toString path}' found while evaluating `relatedPackages' of option `${optName}'") pkgs);
62+ in "<listitem>"
63+ + "<para><literal>${lib.optionalString (title != null) "${title} aka "}pkgs.${name} (${package.meta.name})</literal>"
64+ + lib.optionalString (!package.meta.available) " <emphasis>[UNAVAILABLE]</emphasis>"
65+ + ": ${package.meta.description or "???"}.</para>"
66+ + lib.optionalString (args ? comment) "\n<para>${args.comment}</para>"
67+ # Lots of `longDescription's break DocBook, so we just wrap them into <programlisting>
68+ + lib.optionalString (package.meta ? longDescription) "\n<programlisting>${package.meta.longDescription}</programlisting>"
69+ + "</listitem>";
8970 in "<itemizedlist>${lib.concatStringsSep "\n" (map (p: describe (unpack p)) packages)}</itemizedlist>";
9071
72+ # Custom "less" that pushes up all the things ending in ".enable*"
73+ # and ".package*"
74+ optionLess = a: b:
75+ let
76+ ise = lib.hasPrefix "enable";
77+ isp = lib.hasPrefix "package";
78+ cmp = lib.splitByAndCompare ise lib.compare
79+ (lib.splitByAndCompare isp lib.compare lib.compare);
80+ in lib.compareLists cmp a.loc b.loc < 0;
81+
9182 # Remove invisible and internal options.
9283 optionsListVisible = lib.filter (opt: opt.visible && !opt.internal) (lib.optionAttrSetToDocList options);
9384
94− optionsNix = builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList);
85+ # Customly sort option list for the man page.
86+ # Always ensure that the sort order matches sortXML.py!
87+ optionsList = lib.sort optionLess optionsListDesc;
9588
96−in rec {
97− inherit optionsNix;
89+ # Convert the list of options into an XML file.
90+ # This file is *not* sorted sorted to save on eval time, since the docbook XML
91+ # and the manpage depend on it and thus we evaluate this on every system rebuild.
92+ optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsListDesc);
93+
94+ optionsNix = builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList);
9895
99− optionsAsciiDoc = pkgs.runCommand "options.adoc" {} ''
100− ${pkgs.python3Minimal}/bin/python ${./generateAsciiDoc.py} \
101− < ${optionsJSON}/share/doc/nixos/options.json \
102− > $out
96+ # TODO: declarations: link to github
97+ singleAsciiDoc = name: value: ''
98+ == ${name}
99+
100+ ${value.description}
101+
102+ [discrete]
103+ === details
104+
105+ Type:: ${value.type}
106+ ${ if lib.hasAttr "default" value
107+ then ''
108+ Default::
109+ +
110+ ----
111+ ${builtins.toJSON value.default}
112+ ----
113+ ''
114+ else "No Default:: {blank}"
115+ }
116+ ${ if value.readOnly
117+ then "Read Only:: {blank}"
118+ else ""
119+ }
120+ ${ if lib.hasAttr "example" value
121+ then ''
122+ Example::
123+ +
124+ ----
125+ ${builtins.toJSON value.example}
126+ ----
127+ ''
128+ else "No Example:: {blank}"
129+ }
103130 '';
104131
105− optionsCommonMark = pkgs.runCommand "options.md" {} ''
106− ${pkgs.python3Minimal}/bin/python ${./generateCommonMark.py} \
107− < ${optionsJSON}/share/doc/nixos/options.json \
108− > $out
132+ singleMDDoc = name: value: ''
133+ ## ${lib.escape [ "<" ">" ] name}
134+ ${value.description}
135+
136+ ${lib.optionalString (value ? type) ''
137+ *_Type_*:
138+ ${value.type}
139+ ''}
140+
141+ ${lib.optionalString (value ? default) ''
142+ *_Default_*
143+ ```
144+ ${builtins.toJSON value.default}
145+ ```
146+ ''}
147+
148+ ${lib.optionalString (value ? example) ''
149+ *_Example_*
150+ ```
151+ ${builtins.toJSON value.example}
152+ ```
153+ ''}
109154 '';
110155
156+in {
157+ inherit optionsNix;
158+
159+ optionsAsciiDoc = lib.concatStringsSep "\n" (lib.mapAttrsToList singleAsciiDoc optionsNix);
160+
161+ optionsMDDoc = lib.concatStringsSep "\n" (lib.mapAttrsToList singleMDDoc optionsNix);
162+
111163 optionsJSON = pkgs.runCommand "options.json"
112164 { meta.description = "List of NixOS options in JSON format";
113165 buildInputs = [ pkgs.brotli ];
114− options = builtins.toFile "options.json"
115− (builtins.unsafeDiscardStringContext (builtins.toJSON optionsNix));
116166 }
117167 ''
118168 # Export list of options in different format.
119169 dst=$out/share/doc/nixos
120170 mkdir -p $dst
121171
122− ${
123− if baseOptionsJSON == null
124− then "cp $options $dst/options.json"
125− else ''
126− ${pkgs.python3Minimal}/bin/python ${./mergeJSON.py} \
127− ${lib.optionalString warningsAreErrors "--warnings-are-errors"} \
128− ${baseOptionsJSON} $options \
129− > $dst/options.json
130− ''
131− }
172+ cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON optionsNix))} $dst/options.json
132173
133174 brotli -9 < $dst/options.json > $dst/options.json.br
134175
135176 mkdir -p $out/nix-support
136177 echo "file json $dst/options.json" >> $out/nix-support/hydra-build-products
137178 echo "file json-br $dst/options.json.br" >> $out/nix-support/hydra-build-products
138− '';
139−
140− # Convert options.json into an XML file.
141− # The actual generation of the xml file is done in nix purely for the convenience
142− # of not having to generate the xml some other way
143− optionsXML = pkgs.runCommand "options.xml" {} ''
144− export NIX_STORE_DIR=$TMPDIR/store
145− export NIX_STATE_DIR=$TMPDIR/state
146− ${pkgs.nix}/bin/nix-instantiate \
147− --eval --xml --strict ${./optionsJSONtoXML.nix} \
148− --argstr file ${optionsJSON}/share/doc/nixos/options.json \
149− > "$out"
150− '';
179+ ''; # */
151180
152181 optionsDocBook = pkgs.runCommand "options-docbook.xml" {} ''
153182 optionsXML=${optionsXML}
nixos/lib/make-options-doc/generateAsciiDoc.pydeleted−37
@@ -1,37 +0,0 @@
1−import json
2−import sys
3−
4−options = json.load(sys.stdin)
5−# TODO: declarations: link to github
6−for (name, value) in options.items():
7− print(f'== {name}')
8− print()
9− print(value['description'])
10− print()
11− print('[discrete]')
12− print('=== details')
13− print()
14− print(f'Type:: {value["type"]}')
15− if 'default' in value:
16− print('Default::')
17− print('+')
18− print('----')
19− print(json.dumps(value['default'], ensure_ascii=False, separators=(',', ':')))
20− print('----')
21− print()
22− else:
23− print('No Default:: {blank}')
24− if value['readOnly']:
25− print('Read Only:: {blank}')
26− else:
27− print()
28− if 'example' in value:
29− print('Example::')
30− print('+')
31− print('----')
32− print(json.dumps(value['example'], ensure_ascii=False, separators=(',', ':')))
33− print('----')
34− print()
35− else:
36− print('No Example:: {blank}')
37− print()
nixos/lib/make-options-doc/generateCommonMark.pydeleted−27
@@ -1,27 +0,0 @@
1−import json
2−import sys
3−
4−options = json.load(sys.stdin)
5−for (name, value) in options.items():
6− print('##', name.replace('<', '\\<').replace('>', '\\>'))
7− print(value['description'])
8− print()
9− if 'type' in value:
10− print('*_Type_*:')
11− print(value['type'])
12− print()
13− print()
14− if 'default' in value:
15− print('*_Default_*')
16− print('```')
17− print(json.dumps(value['default'], ensure_ascii=False, separators=(',', ':')))
18− print('```')
19− print()
20− print()
21− if 'example' in value:
22− print('*_Example_*')
23− print('```')
24− print(json.dumps(value['example'], ensure_ascii=False, separators=(',', ':')))
25− print('```')
26− print()
27− print()
nixos/lib/make-options-doc/mergeJSON.pydeleted−95

This diff is too big to show here.

nixos/lib/make-options-doc/options-to-docbook.xsl+2−2

This diff is too big to show here.

nixos/lib/make-options-doc/optionsJSONtoXML.nixdeleted−6

This diff is too big to show here.

nixos/lib/make-options-doc/sortXML.py+1

This diff is too big to show here.

nixos/lib/make-single-disk-zfs-image.nixdeleted−322

This diff is too big to show here.

nixos/lib/make-squashfs.nix+1−8

This diff is too big to show here.

nixos/lib/make-zfs-image.nixnew file+333

This diff is too big to show here.

nixos/lib/qemu-common.nix+3−3

This diff is too big to show here.

nixos/lib/systemd-lib.nixdeleted−426

This diff is too big to show here.

nixos/lib/systemd-types.nixdeleted−69

This diff is too big to show here.

nixos/lib/systemd-unit-options.nixdeleted−711

This diff is too big to show here.

nixos/lib/test-driver/default.nixdeleted−32

This diff is too big to show here.

nixos/lib/test-driver/setup.pydeleted−13

This diff is too big to show here.

nixos/lib/test-driver/test-driver.pynew file+1336

This diff is too big to show here.

nixos/lib/test-driver/test_driver/__init__.pydeleted−128

This diff is too big to show here.

nixos/lib/test-driver/test_driver/driver.pydeleted−226

This diff is too big to show here.

nixos/lib/test-driver/test_driver/logger.pydeleted−105

This diff is too big to show here.

nixos/lib/test-driver/test_driver/machine.pydeleted−1023

This diff is too big to show here.

nixos/lib/test-driver/test_driver/polling_condition.pydeleted−77

This diff is too big to show here.

nixos/lib/test-driver/test_driver/vlan.pydeleted−58

This diff is too big to show here.

nixos/lib/testing-python.nix+83−36

This diff is too big to show here.

nixos/lib/utils.nix+3−53

This diff is too big to show here.

nixos/maintainers/scripts/azure-new/examples/basic/system.nix+1−1

This diff is too big to show here.

nixos/maintainers/scripts/ec2/amazon-image.nix+1−1

This diff is too big to show here.

nixos/maintainers/scripts/lxd/lxd-image.nix+1−1

This diff is too big to show here.

nixos/maintainers/scripts/openstack/openstack-image-zfs.nixdeleted−101

This diff is too big to show here.

nixos/maintainers/scripts/openstack/openstack-image.nix+8−9

This diff is too big to show here.

nixos/modules/config/console.nix+9−23

This diff is too big to show here.

nixos/modules/config/fonts/fontdir.nix−1

This diff is too big to show here.

nixos/modules/config/fonts/fonts.nix+5

This diff is too big to show here.

nixos/modules/config/gtk/gtk-icon-cache.nix−1

This diff is too big to show here.

nixos/modules/config/i18n.nix−6

This diff is too big to show here.

nixos/modules/config/malloc.nix+2−9

This diff is too big to show here.

nixos/modules/config/networking.nix+4−8

This diff is too big to show here.

nixos/modules/config/nsswitch.nix+4−7

This diff is too big to show here.

nixos/modules/config/resolvconf.nix+4−2

This diff is too big to show here.

nixos/modules/config/swap.nix+6−1

This diff is too big to show here.

nixos/modules/config/system-path.nix+6−16

This diff is too big to show here.

nixos/modules/config/terminfo.nix+1−25

This diff is too big to show here.

nixos/modules/config/update-users-groups.pl+1−1

This diff is too big to show here.

nixos/modules/config/users-groups.nix+13−39

This diff is too big to show here.

nixos/modules/config/xdg/portal.nix+12−23

This diff is too big to show here.

nixos/modules/hardware/all-firmware.nix+6−11

This diff is too big to show here.

nixos/modules/hardware/cpu/intel-sgx.nixdeleted−69

This diff is too big to show here.

nixos/modules/hardware/gpgsmartcards.nixdeleted−37

This diff is too big to show here.

nixos/modules/hardware/hackrf.nixdeleted−23

This diff is too big to show here.

nixos/modules/hardware/keyboard/zsa.nix+3

This diff is too big to show here.

nixos/modules/hardware/network/b43.nix+4

This diff is too big to show here.

nixos/modules/hardware/onlykey/onlykey.udev+2−2

This diff is too big to show here.

nixos/modules/hardware/pcmcia.nix−1

This diff is too big to show here.

nixos/modules/hardware/raid/hpsa.nix+1−4

This diff is too big to show here.

nixos/modules/hardware/rtl-sdr.nix+4−8

This diff is too big to show here.

nixos/modules/hardware/system-76.nix+2−6

This diff is too big to show here.

nixos/modules/hardware/video/amdgpu-pro.nix+22−25

This diff is too big to show here.

nixos/modules/hardware/video/capture/mwprocapture.nix+5

This diff is too big to show here.

nixos/modules/hardware/video/hidpi.nix+1

This diff is too big to show here.

nixos/modules/hardware/video/nvidia.nix+20−27

This diff is too big to show here.

nixos/modules/hardware/video/webcam/facetimehd.nix+6−14

This diff is too big to show here.

nixos/modules/hardware/xone.nixdeleted−23

This diff is too big to show here.

nixos/modules/i18n/input-method/fcitx.nix−3

This diff is too big to show here.

nixos/modules/i18n/input-method/fcitx5.nix+11−20

This diff is too big to show here.

nixos/modules/i18n/input-method/ibus.nix−3

This diff is too big to show here.

nixos/modules/i18n/input-method/kime.nix+1−3

This diff is too big to show here.

nixos/modules/installer/cd-dvd/channel.nix+1−2

This diff is too big to show here.

nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix+8−14

This diff is too big to show here.

nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nixdeleted−59

This diff is too big to show here.

nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nixdeleted−49

This diff is too big to show here.

nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nixdeleted−20

This diff is too big to show here.

nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix+5−3

This diff is too big to show here.

nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix+3−1

This diff is too big to show here.

nixos/modules/installer/cd-dvd/iso-image.nix+30−40

This diff is too big to show here.

nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix+3−3

This diff is too big to show here.

nixos/modules/installer/kexec/kexec-boot.nixdeleted−51

This diff is too big to show here.

nixos/modules/installer/netboot/netboot.nix+1−3

This diff is too big to show here.

nixos/modules/installer/sd-card/sd-image-aarch64.nix−15

This diff is too big to show here.

nixos/modules/installer/sd-card/sd-image-riscv64-qemu-installer.nixdeleted−10

This diff is too big to show here.

nixos/modules/installer/sd-card/sd-image-riscv64-qemu.nixdeleted−32

This diff is too big to show here.

nixos/modules/installer/sd-card/sd-image-x86_64.nixdeleted−27

This diff is too big to show here.

nixos/modules/installer/sd-card/sd-image.nix+1−1

This diff is too big to show here.

nixos/modules/installer/tools/nix-fallback-paths.nix+5−5

This diff is too big to show here.

nixos/modules/installer/tools/nixos-build-vms/build-vms.nix−3

This diff is too big to show here.

nixos/modules/installer/tools/nixos-build-vms/nixos-build-vms.sh+3−4

This diff is too big to show here.

nixos/modules/installer/tools/nixos-enter.sh+11−14

This diff is too big to show here.

nixos/modules/installer/tools/nixos-generate-config.pl+6−24

This diff is too big to show here.

nixos/modules/installer/tools/nixos-install.sh+18−19

This diff is too big to show here.

nixos/modules/installer/tools/nixos-version.sh−1

This diff is too big to show here.

nixos/modules/installer/tools/tools.nix+4−15

This diff is too big to show here.

nixos/modules/installer/virtualbox-demo.nix+1−1

This diff is too big to show here.

nixos/modules/misc/documentation.nix+59−122

This diff is too big to show here.

nixos/modules/misc/extra-arguments.nix+2−2

This diff is too big to show here.

nixos/modules/misc/ids.nix+8−14

This diff is too big to show here.

nixos/modules/misc/locate.nix+66−116

This diff is too big to show here.

nixos/modules/misc/man-db.nixdeleted−73

This diff is too big to show here.

nixos/modules/misc/mandoc.nixdeleted−61

This diff is too big to show here.

nixos/modules/misc/meta.nix+1−16

This diff is too big to show here.

nixos/modules/misc/nixpkgs.nix−8

This diff is too big to show here.

nixos/modules/misc/nixpkgs/test.nixdeleted−8

This diff is too big to show here.

nixos/modules/misc/version.nix+19−52

This diff is too big to show here.

nixos/modules/misc/wordlist.nixdeleted−59

This diff is too big to show here.

nixos/modules/module-list.nix+25−87

This diff is too big to show here.

nixos/modules/profiles/all-hardware.nix+2−5

This diff is too big to show here.

nixos/modules/profiles/base.nix−1

This diff is too big to show here.

nixos/modules/profiles/hardened.nix+1−1

This diff is too big to show here.

nixos/modules/profiles/installation-device.nix−4

This diff is too big to show here.

nixos/modules/profiles/minimal.nix−2

This diff is too big to show here.

nixos/modules/profiles/qemu-guest.nix+2−2

This diff is too big to show here.

nixos/modules/programs/_1password-gui.nixdeleted−68

This diff is too big to show here.

nixos/modules/programs/_1password.nixdeleted−44

This diff is too big to show here.

nixos/modules/programs/adb.nix+2−1

This diff is too big to show here.

nixos/modules/programs/bcc.nix+3−3

This diff is too big to show here.

nixos/modules/programs/calls.nix−2

This diff is too big to show here.

nixos/modules/programs/captive-browser.nix+13−33

This diff is too big to show here.

nixos/modules/programs/chromium.nix−11

This diff is too big to show here.

nixos/modules/programs/command-not-found/command-not-found.pl+4−36

This diff is too big to show here.

nixos/modules/programs/dconf.nix+1−1

This diff is too big to show here.

nixos/modules/programs/environment.nix+1−3

This diff is too big to show here.

nixos/modules/programs/firejail.nix+4−6

This diff is too big to show here.

nixos/modules/programs/gnupg.nix−3

This diff is too big to show here.

nixos/modules/programs/k3b.nixdeleted−52

This diff is too big to show here.

nixos/modules/programs/k40-whisperer.nixdeleted−40

This diff is too big to show here.

nixos/modules/programs/kclock.nixdeleted−13

This diff is too big to show here.

nixos/modules/programs/mininet.nix+2−2

This diff is too big to show here.

nixos/modules/programs/nbd.nixdeleted−19

This diff is too big to show here.

nixos/modules/programs/nethoscope.nixdeleted−30

This diff is too big to show here.

nixos/modules/programs/nix-ld.nixdeleted−12

This diff is too big to show here.

nixos/modules/programs/nncp.nixdeleted−101

This diff is too big to show here.

nixos/modules/programs/phosh.nix+10−9

This diff is too big to show here.

nixos/modules/programs/qt5ct.nix+1−1

This diff is too big to show here.

nixos/modules/programs/spacefm.nix+2

This diff is too big to show here.

nixos/modules/programs/ssh.nix+14−67

This diff is too big to show here.

nixos/modules/programs/ssmtp.nixnew file+190

This diff is too big to show here.

nixos/modules/programs/starship.nixdeleted−51

This diff is too big to show here.

nixos/modules/programs/sway.nix+2−5

This diff is too big to show here.

nixos/modules/programs/thefuck.nix+6−7

This diff is too big to show here.

nixos/modules/programs/tilp2.nixnew file+28

This diff is too big to show here.

nixos/modules/programs/tmux.nix+1−14

This diff is too big to show here.

nixos/modules/programs/tsm-client.nix+4−4

This diff is too big to show here.

nixos/modules/programs/zsh/zsh-autosuggestions.nix+10−19

This diff is too big to show here.

nixos/modules/programs/zsh/zsh.nix+1−3

This diff is too big to show here.

nixos/modules/rename.nix+47−62

This diff is too big to show here.

nixos/modules/security/acme.nixnew file+820

This diff is too big to show here.

nixos/modules/security/acme.xmlnew file+298

This diff is too big to show here.

nixos/modules/security/acme/default.nixdeleted−921

This diff is too big to show here.

nixos/modules/security/acme/doc.xmldeleted−413

This diff is too big to show here.

nixos/modules/security/acme/mk-cert-ownership-assertion.nixdeleted−4

This diff is too big to show here.

nixos/modules/security/dhparams.nix+2−4

This diff is too big to show here.

nixos/modules/security/google_oslogin.nix+3−6

This diff is too big to show here.

nixos/modules/security/misc.nix+2−2

This diff is too big to show here.

nixos/modules/security/pam.nix+151−378

This diff is too big to show here.

nixos/modules/security/pam_mount.nix+6−78

This diff is too big to show here.

nixos/modules/security/polkit.nix+5−1

This diff is too big to show here.

nixos/modules/security/sudo.nix+1−1

This diff is too big to show here.

nixos/modules/security/systemd-confinement.nix+6−4

This diff is too big to show here.

nixos/modules/security/wrappers/default.nix+3

This diff is too big to show here.

nixos/modules/services/admin/pgadmin.nixdeleted−127

This diff is too big to show here.

nixos/modules/services/audio/icecast.nix−1

This diff is too big to show here.

nixos/modules/services/audio/jmusicbot.nix+1−8

This diff is too big to show here.

nixos/modules/services/audio/mpd.nix+41−21

This diff is too big to show here.

nixos/modules/services/audio/mpdscribble.nix+1−12

This diff is too big to show here.

nixos/modules/services/audio/navidrome.nix+1−1

This diff is too big to show here.

nixos/modules/services/audio/roon-server.nix+1−4

This diff is too big to show here.

nixos/modules/services/audio/snapserver.nix+20−28

This diff is too big to show here.

nixos/modules/services/audio/squeezelite.nix+21−17

This diff is too big to show here.

nixos/modules/services/audio/ympd.nix−1

This diff is too big to show here.

nixos/modules/services/backup/bacula.nix−3

This diff is too big to show here.

nixos/modules/services/backup/borgbackup.nix+6−35

This diff is too big to show here.

nixos/modules/services/backup/duplicati.nix+9−26

This diff is too big to show here.

nixos/modules/services/backup/mysql-backup.nix+1−2

This diff is too big to show here.

nixos/modules/services/backup/restic-rest-server.nix−4

This diff is too big to show here.

nixos/modules/services/backup/restic.nix+2−2

This diff is too big to show here.

nixos/modules/services/backup/sanoid.nix+1−4

This diff is too big to show here.

nixos/modules/services/backup/tarsnap.nix+14−21

This diff is too big to show here.

nixos/modules/services/backup/tsm.nix+14−33

This diff is too big to show here.

nixos/modules/services/backup/zrepl.nix−3

This diff is too big to show here.

nixos/modules/services/cluster/corosync/default.nixdeleted−112

This diff is too big to show here.

nixos/modules/services/cluster/hadoop/conf.nix+11−11

This diff is too big to show here.

nixos/modules/services/cluster/hadoop/default.nix+26−85

This diff is too big to show here.

nixos/modules/services/cluster/hadoop/hdfs.nix+147−148

This diff is too big to show here.

nixos/modules/services/cluster/hadoop/yarn.nix+13−85

This diff is too big to show here.

nixos/modules/services/cluster/k3s/default.nix+5−1

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/addon-manager.nix+1−2

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/addons/dashboard.nixnew file+332

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/addons/dns.nix+1−7

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/apiserver.nix+1−7

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/controller-manager.nix+1−7

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/default.nix+5−10

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/flannel.nix−2

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/kubelet.nix+3−9

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/pki.nix+1−4

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/proxy.nix+1−6

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/scheduler.nix+3−7

This diff is too big to show here.

nixos/modules/services/cluster/pacemaker/default.nixdeleted−52

This diff is too big to show here.

nixos/modules/services/computing/slurm/slurm.nix+5−14

This diff is too big to show here.

nixos/modules/services/continuous-integration/buildbot/master.nix+3−5

This diff is too big to show here.

nixos/modules/services/continuous-integration/buildbot/worker.nix+1−3

This diff is too big to show here.

nixos/modules/services/continuous-integration/github-runner.nix+34−46

This diff is too big to show here.

nixos/modules/services/continuous-integration/gitlab-runner.nix+3−10

This diff is too big to show here.

nixos/modules/services/continuous-integration/gocd-agent/default.nix+1−11

This diff is too big to show here.

nixos/modules/services/continuous-integration/gocd-server/default.nix+1−16

This diff is too big to show here.

nixos/modules/services/continuous-integration/hercules-ci-agent/common.nix+11−66

This diff is too big to show here.

nixos/modules/services/continuous-integration/hercules-ci-agent/default.nix+4−4

This diff is too big to show here.

nixos/modules/services/continuous-integration/hydra/default.nix+12−16

This diff is too big to show here.

nixos/modules/services/continuous-integration/jenkins/slave.nix+1−15

This diff is too big to show here.

nixos/modules/services/databases/clickhouse.nix+4−13

This diff is too big to show here.

nixos/modules/services/databases/cockroachdb.nix+29−37

This diff is too big to show here.

nixos/modules/services/databases/couchdb.nix+4−22

This diff is too big to show here.

nixos/modules/services/databases/hbase.nix+15−38

This diff is too big to show here.

nixos/modules/services/databases/influxdb2.nix+4−17

This diff is too big to show here.

nixos/modules/services/databases/mysql.nix+195−185

This diff is too big to show here.

nixos/modules/services/databases/neo4j.nix−8

This diff is too big to show here.

nixos/modules/services/databases/postgresql.nix+3−5

This diff is too big to show here.

nixos/modules/services/databases/postgresql.xml+32−54

This diff is too big to show here.

nixos/modules/services/databases/redis.nix+221−274

This diff is too big to show here.

nixos/modules/services/databases/virtuoso.nixnew file+99

This diff is too big to show here.

nixos/modules/services/desktops/flatpak.nix−2

This diff is too big to show here.

nixos/modules/services/desktops/gnome/glib-networking.nix+1−1

This diff is too big to show here.

nixos/modules/services/desktops/gnome/gnome-settings-daemon.nix+18−4

This diff is too big to show here.

nixos/modules/services/desktops/gnome/tracker-miners.nix−2

This diff is too big to show here.

nixos/modules/services/desktops/gnome/tracker.nix+1−24

This diff is too big to show here.

nixos/modules/services/desktops/gvfs.nix+2−2

This diff is too big to show here.

nixos/modules/services/desktops/pantheon/files.nixnew file+13

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/daemon/client-rt.conf.json+1−1

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/daemon/minimal.conf.jsondeleted−118

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json+10−68

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json+2−5

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/pipewire-media-session.nix+7−19

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/pipewire.nix+4−66

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/wireplumber.nixdeleted−54

This diff is too big to show here.

nixos/modules/services/development/hoogle.nix−1

This diff is too big to show here.

nixos/modules/services/development/jupyter/default.nix−1

This diff is too big to show here.

nixos/modules/services/development/rstudio-server/default.nixdeleted−107

This diff is too big to show here.

nixos/modules/services/development/zammad.nixdeleted−323

This diff is too big to show here.

nixos/modules/services/editors/haste.nixdeleted−86

This diff is too big to show here.

nixos/modules/services/games/asf.nixdeleted−236

This diff is too big to show here.

nixos/modules/services/games/factorio.nix+2−11

This diff is too big to show here.

nixos/modules/services/games/minecraft-server.nix+1−22

This diff is too big to show here.

nixos/modules/services/games/quake3-server.nix−1

This diff is too big to show here.

nixos/modules/services/games/terraria.nix+2−3

This diff is too big to show here.

nixos/modules/services/hardware/bluetooth.nix+4

This diff is too big to show here.

nixos/modules/services/hardware/ddccontrol.nix−3

This diff is too big to show here.

nixos/modules/services/hardware/joycond.nix+6−2

This diff is too big to show here.

nixos/modules/services/hardware/rasdaemon.nix+1

This diff is too big to show here.

nixos/modules/services/hardware/spacenavd.nix+1

This diff is too big to show here.

nixos/modules/services/hardware/tcsd.nix+1−5

This diff is too big to show here.

nixos/modules/services/hardware/thermald.nix+1−3

This diff is too big to show here.

nixos/modules/services/hardware/thinkfan.nix+2−2

This diff is too big to show here.

nixos/modules/services/hardware/triggerhappy.nix+1−1

This diff is too big to show here.

nixos/modules/services/hardware/udev.nix+24−127

This diff is too big to show here.

nixos/modules/services/hardware/udisks2.nix−41

This diff is too big to show here.

nixos/modules/services/hardware/undervolt.nix+3−1

This diff is too big to show here.

nixos/modules/services/hardware/upower.nix+6−6

This diff is too big to show here.

nixos/modules/services/hardware/usbrelayd.nixdeleted−44

This diff is too big to show here.

nixos/modules/services/home-automation/home-assistant.nixdeleted−552

This diff is too big to show here.

nixos/modules/services/logging/filebeat.nixdeleted−253

This diff is too big to show here.

nixos/modules/services/logging/graylog.nix+1−1

This diff is too big to show here.

nixos/modules/services/logging/journalbeat.nix+16−3

This diff is too big to show here.

nixos/modules/services/logging/journalwatch.nix−1

This diff is too big to show here.

nixos/modules/services/logging/klogd.nix+34−6

This diff is too big to show here.

nixos/modules/services/logging/logrotate.nix+32−266

This diff is too big to show here.

nixos/modules/services/logging/logstash.nix−13

This diff is too big to show here.

nixos/modules/services/logging/promtail.nix+1−1

This diff is too big to show here.

nixos/modules/services/mail/dovecot.nix+42−16

This diff is too big to show here.

nixos/modules/services/mail/maddy.nixdeleted−273

This diff is too big to show here.

nixos/modules/services/mail/mailman.nix+7−14

This diff is too big to show here.

nixos/modules/services/mail/opendkim.nix−1

This diff is too big to show here.

nixos/modules/services/mail/postfix.nix+17−22

This diff is too big to show here.

nixos/modules/services/mail/postfixadmin.nix+1−1

This diff is too big to show here.

nixos/modules/services/mail/roundcube.nix+1−1

This diff is too big to show here.

nixos/modules/services/mail/rspamd.nix+2−3

This diff is too big to show here.

nixos/modules/services/matrix/matrix-synapse.nixdeleted−773

This diff is too big to show here.

nixos/modules/services/matrix/mjolnir.nix−2

This diff is too big to show here.

nixos/modules/services/matrix/mjolnir.xml+2−2

This diff is too big to show here.

nixos/modules/services/misc/airsonic.nix+5−8

This diff is too big to show here.

nixos/modules/services/misc/ananicy.nix+1−1

This diff is too big to show here.

nixos/modules/services/misc/autorandr.nix+2−309

This diff is too big to show here.

nixos/modules/services/misc/bees.nix−3

This diff is too big to show here.

nixos/modules/services/misc/couchpotato.nixnew file+42

This diff is too big to show here.

nixos/modules/services/misc/dendrite.nix+8−100

This diff is too big to show here.

nixos/modules/services/misc/dysnomia.nix−6

This diff is too big to show here.

nixos/modules/services/misc/etcd.nix+1−9

This diff is too big to show here.

nixos/modules/services/misc/etebase-server.nix+1−1

This diff is too big to show here.

nixos/modules/services/misc/ethminer.nix+4−4

This diff is too big to show here.

nixos/modules/services/misc/exhibitor.nix+1−4

This diff is too big to show here.

nixos/modules/services/misc/gitea.nix+19−38

This diff is too big to show here.

nixos/modules/services/misc/gitit.nix+1−1

This diff is too big to show here.

nixos/modules/services/misc/gitlab.nix+29−43

This diff is too big to show here.

nixos/modules/services/misc/gitweb.nix−1

This diff is too big to show here.

nixos/modules/services/misc/gogs.nix+1−4

This diff is too big to show here.

nixos/modules/services/misc/gollum.nix−1

This diff is too big to show here.

nixos/modules/services/misc/headphones.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/heisenbridge.nixdeleted−222

This diff is too big to show here.

nixos/modules/services/misc/home-assistant.nixnew file+404

This diff is too big to show here.

nixos/modules/services/misc/input-remapper.nixdeleted−30

This diff is too big to show here.

nixos/modules/services/misc/jellyfin.nix+3−5

This diff is too big to show here.

nixos/modules/services/misc/matrix-appservice-discord.nix+1−6

This diff is too big to show here.

nixos/modules/services/misc/matrix-appservice-irc.nix−3

This diff is too big to show here.

nixos/modules/services/misc/matrix-conduit.nixdeleted−149

This diff is too big to show here.

nixos/modules/services/matrix/matrix-synapse-log_config.yaml → nixos/modules/services/misc/matrix-synapse-log_config.yamlrenamed

The content is the same.

nixos/modules/services/misc/matrix-synapse.nixnew file+788

This diff is too big to show here.

nixos/modules/services/matrix/matrix-synapse.xml → nixos/modules/services/misc/matrix-synapse.xmlrenamed+17−18

This diff is too big to show here.

nixos/modules/services/misc/mautrix-telegram.nix+1−4

This diff is too big to show here.

nixos/modules/services/misc/mbpfan.nix+60−58

This diff is too big to show here.

nixos/modules/services/misc/mediatomb.nix+5−7

This diff is too big to show here.

nixos/modules/services/misc/moonraker.nix+1−44

This diff is too big to show here.

nixos/modules/services/misc/mwlib.nixnew file+258

This diff is too big to show here.

nixos/modules/services/misc/mx-puppet-discord.nix+6−8

This diff is too big to show here.

nixos/modules/services/misc/n8n.nix−1

This diff is too big to show here.

nixos/modules/services/misc/nitter.nix+5−12

This diff is too big to show here.

nixos/modules/services/misc/nix-daemon.nix+298−487

This diff is too big to show here.

nixos/modules/services/misc/nix-gc.nix+3−9

This diff is too big to show here.

nixos/modules/services/misc/nix-optimise.nix+2−8

This diff is too big to show here.

nixos/modules/services/misc/nix-ssh-serve.nix+1−1

This diff is too big to show here.

nixos/modules/services/misc/packagekit.nix+2−4

This diff is too big to show here.

nixos/modules/services/misc/paperless-ng.nixnew file+308

This diff is too big to show here.

nixos/modules/services/misc/paperless.nixdeleted−320

This diff is too big to show here.

nixos/modules/services/misc/plex.nix+13−42

This diff is too big to show here.

nixos/modules/services/misc/rippled.nix+1−5

This diff is too big to show here.

nixos/modules/services/misc/rmfakecloud.nixdeleted−147

This diff is too big to show here.

nixos/modules/services/misc/sickbeard.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/builds.nix+2−4

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/default.nix+133−1321

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/dispatch.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/git.nix+2−4

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/hg.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/hub.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/lists.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/man.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/meta.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/paste.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/service.nix+61−370

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/sourcehut.xml+10−14

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/todo.nix+1−3

This diff is too big to show here.

nixos/modules/services/misc/subsonic.nix+3−6

This diff is too big to show here.

nixos/modules/services/misc/taskserver/default.nix+10−15

This diff is too big to show here.

nixos/modules/services/misc/taskserver/doc.xml+1−1

This diff is too big to show here.

nixos/modules/services/misc/taskserver/helper-tool.py+5−5

This diff is too big to show here.

nixos/modules/services/misc/xmrig.nix+3−8

This diff is too big to show here.

nixos/modules/services/home-automation/zigbee2mqtt.nix → nixos/modules/services/misc/zigbee2mqtt.nixrenamed+7−4

This diff is too big to show here.

nixos/modules/services/misc/zoneminder.nix+3−3

This diff is too big to show here.

nixos/modules/services/misc/zookeeper.nix+1−8

This diff is too big to show here.

nixos/modules/services/monitoring/cadvisor.nix−2

This diff is too big to show here.

nixos/modules/services/monitoring/collectd.nix+25−53

This diff is too big to show here.

nixos/modules/services/monitoring/grafana.nix−6

This diff is too big to show here.

nixos/modules/services/monitoring/graphite.nix+1−12

This diff is too big to show here.

nixos/modules/services/monitoring/mimir.nixdeleted−63

This diff is too big to show here.

nixos/modules/services/monitoring/nagios.nix+2−3

This diff is too big to show here.

nixos/modules/services/monitoring/netdata.nix+2−38

This diff is too big to show here.

nixos/modules/services/monitoring/parsedmarc.nix+1−6

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/default.nix+9−9

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters.nix−3

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters.xml−21

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/bird.nix+1−1

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/dmarc.nixdeleted−117

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/fastly.nix+3−3

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/kea.nix−4

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/nginx.nix+5−5

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/postfix.nix−3

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/pve.nixdeleted−118

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/smartctl.nixdeleted−75

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/systemd.nix+1−1

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/varnish.nix+2−3

This diff is too big to show here.

nixos/modules/services/monitoring/smartd.nix+1−6

This diff is too big to show here.

nixos/modules/services/monitoring/thanos.nix−3

This diff is too big to show here.

nixos/modules/services/monitoring/uptime.nix+3−7

This diff is too big to show here.

nixos/modules/services/monitoring/zabbix-proxy.nix+1−7

This diff is too big to show here.

nixos/modules/services/monitoring/zabbix-server.nix+2−13

This diff is too big to show here.

nixos/modules/services/network-filesystems/ceph.nix+2−2

This diff is too big to show here.

nixos/modules/services/network-filesystems/drbd.nix+7−5

This diff is too big to show here.

nixos/modules/services/network-filesystems/glusterfs.nix+1−1

This diff is too big to show here.

nixos/modules/services/network-filesystems/ipfs.nix+31−41

This diff is too big to show here.

nixos/modules/services/network-filesystems/moosefs.nixdeleted−249

This diff is too big to show here.

nixos/modules/services/network-filesystems/openafs/server.nix+1−1

This diff is too big to show here.

nixos/modules/services/network-filesystems/rsyncd.nix+1−1

This diff is too big to show here.

nixos/modules/services/network-filesystems/samba.nix−1

This diff is too big to show here.

nixos/modules/services/network-filesystems/webdav-server-rs.nixdeleted−144

This diff is too big to show here.

nixos/modules/services/network-filesystems/webdav.nixdeleted−107

This diff is too big to show here.

nixos/modules/services/networking/adguardhome.nix+5−67

This diff is too big to show here.

nixos/modules/services/networking/amuled.nix+2−6

This diff is too big to show here.

nixos/modules/services/networking/asterisk.nix+43−11

This diff is too big to show here.

nixos/modules/services/networking/bind.nix+1−10

This diff is too big to show here.

nixos/modules/services/networking/bird.nix+75−90

This diff is too big to show here.

nixos/modules/services/networking/blocky.nixdeleted−40

This diff is too big to show here.

nixos/modules/services/networking/charybdis.nix+1−8

This diff is too big to show here.

nixos/modules/services/networking/cloudflare-dyndns.nixdeleted−93

This diff is too big to show here.

nixos/modules/services/networking/connman.nix+2−2

This diff is too big to show here.

nixos/modules/services/networking/consul.nix+7−35

This diff is too big to show here.

nixos/modules/services/networking/coturn.nix−1

This diff is too big to show here.

nixos/modules/services/networking/create_ap.nixdeleted−50

This diff is too big to show here.

nixos/modules/services/networking/croc.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/ddclient.nix+6−10

This diff is too big to show here.

nixos/modules/services/networking/dhcpcd.nix+1−22

This diff is too big to show here.

nixos/modules/services/networking/dhcpd.nix+52−49

This diff is too big to show here.

nixos/modules/services/networking/dnscrypt-proxy2.nix−3

This diff is too big to show here.

nixos/modules/services/networking/dnscrypt-wrapper.nix−1

This diff is too big to show here.

nixos/modules/services/networking/envoy.nixdeleted−84

This diff is too big to show here.

nixos/modules/services/networking/ergo.nix+2−4

This diff is too big to show here.

nixos/modules/services/networking/ergochat.nixdeleted−155

This diff is too big to show here.

nixos/modules/services/networking/eternal-terminal.nix+2−2

This diff is too big to show here.

nixos/modules/services/networking/firefox/sync-server.nixnew file+183

This diff is too big to show here.

nixos/modules/services/networking/firewall.nix+7−2

This diff is too big to show here.

nixos/modules/services/networking/flannel.nix−3

This diff is too big to show here.

nixos/modules/services/networking/freeradius.nix−2

This diff is too big to show here.

nixos/modules/services/networking/frr.nixdeleted−211

This diff is too big to show here.

nixos/modules/services/networking/gogoclient.nixnew file+87

This diff is too big to show here.

nixos/modules/services/networking/headscale.nixdeleted−490

This diff is too big to show here.

nixos/modules/services/networking/https-dns-proxy.nixdeleted−128

This diff is too big to show here.

nixos/modules/services/networking/hylafax/options.nix+9−7

This diff is too big to show here.

nixos/modules/services/networking/i2pd.nix+9−16

This diff is too big to show here.

nixos/modules/services/networking/iwd.nix+6−15

This diff is too big to show here.

nixos/modules/services/networking/jibri/default.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/jitsi-videobridge.nix−2

This diff is too big to show here.

nixos/modules/services/networking/kea.nix+9−81

This diff is too big to show here.

nixos/modules/services/networking/knot.nix+7−42

This diff is too big to show here.

nixos/modules/services/networking/kresd.nix+4−5

This diff is too big to show here.

nixos/modules/services/networking/lxd-image-server.nix+12−7

This diff is too big to show here.

nixos/modules/services/networking/mailpile.nixnew file+74

This diff is too big to show here.

nixos/modules/services/networking/monero.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/mosquitto.nix+3−12

This diff is too big to show here.

nixos/modules/services/networking/mozillavpn.nixdeleted−19

This diff is too big to show here.

nixos/modules/services/networking/mtr-exporter.nixdeleted−87

This diff is too big to show here.

nixos/modules/services/networking/multipath.nix+15

This diff is too big to show here.

nixos/modules/services/networking/murmur.nix+2−2

This diff is too big to show here.

nixos/modules/services/networking/nbd.nixdeleted−159

This diff is too big to show here.

nixos/modules/services/networking/ncdns.nix+2−3

This diff is too big to show here.

nixos/modules/services/networking/networkmanager.nix+53−73

This diff is too big to show here.

nixos/modules/services/networking/nftables.nix+12−4

This diff is too big to show here.

nixos/modules/services/networking/nix-serve.nix+5−19

This diff is too big to show here.

nixos/modules/services/networking/nomad.nix+3−16

This diff is too big to show here.

nixos/modules/services/networking/nsd.nix+12−9

This diff is too big to show here.

nixos/modules/services/networking/ntopng.nix+13−57

This diff is too big to show here.

nixos/modules/services/networking/ntp/chrony.nix−1

This diff is too big to show here.

nixos/modules/services/networking/ntp/ntpd.nix−1

This diff is too big to show here.

nixos/modules/services/networking/ntp/openntpd.nix−1

This diff is too big to show here.

nixos/modules/services/networking/openconnect.nixdeleted−137

This diff is too big to show here.

nixos/modules/services/networking/openfire.nixnew file+56

This diff is too big to show here.

nixos/modules/services/networking/pdns-recursor.nix+7−12

This diff is too big to show here.

nixos/modules/services/networking/pleroma.nix+3−10

This diff is too big to show here.

nixos/modules/services/networking/powerdns.nix+2−2

This diff is too big to show here.

nixos/modules/services/networking/prosody.nix−1

This diff is too big to show here.

nixos/modules/services/networking/prosody.xml+1−1

This diff is too big to show here.

nixos/modules/services/networking/quassel.nix+1−5

This diff is too big to show here.

nixos/modules/services/networking/quorum.nix+1−3

This diff is too big to show here.

nixos/modules/services/networking/racoon.nixnew file+45

This diff is too big to show here.

nixos/modules/services/networking/radicale.nix−1

This diff is too big to show here.

nixos/modules/services/networking/resilio.nix−1

This diff is too big to show here.

nixos/modules/services/networking/sabnzbd.nix+1−8

This diff is too big to show here.

nixos/modules/services/networking/seafile.nix+17−14

This diff is too big to show here.

nixos/modules/services/networking/searx.nix+1

This diff is too big to show here.

nixos/modules/services/networking/shairport-sync.nix+2−29

This diff is too big to show here.

nixos/modules/services/networking/shellhub-agent.nix+17−26

This diff is too big to show here.

nixos/modules/services/networking/skydns.nix−1

This diff is too big to show here.

nixos/modules/services/networking/smokeping.nix−6

This diff is too big to show here.

nixos/modules/services/networking/sniproxy.nix+15−4

This diff is too big to show here.

nixos/modules/services/networking/snowflake-proxy.nixdeleted−81

This diff is too big to show here.

nixos/modules/services/networking/soju.nix−1

This diff is too big to show here.

nixos/modules/services/networking/squid.nix+4−23

This diff is too big to show here.

nixos/modules/services/networking/ssh/sshd.nix+4−8

This diff is too big to show here.

nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix−10

This diff is too big to show here.

nixos/modules/services/networking/stubby.nix+174−46

This diff is too big to show here.

nixos/modules/services/networking/stunnel.nix+2−2

This diff is too big to show here.

nixos/modules/services/networking/supplicant.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/syncplay.nix+2−18

This diff is too big to show here.

nixos/modules/services/networking/syncthing.nix+4−24

This diff is too big to show here.

nixos/modules/services/networking/tailscale.nix+1−9

This diff is too big to show here.

nixos/modules/services/networking/teleport.nixdeleted−99

This diff is too big to show here.

nixos/modules/services/networking/tetrd.nixdeleted−96

This diff is too big to show here.

nixos/modules/services/networking/thelounge.nix+7−38

This diff is too big to show here.

nixos/modules/services/networking/tinc.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/tox-node.nix+6−1

This diff is too big to show here.

nixos/modules/services/networking/unbound.nix−1

This diff is too big to show here.

nixos/modules/services/networking/unifi.nix+3−8

This diff is too big to show here.

nixos/modules/services/networking/vsftpd.nix−1

This diff is too big to show here.

nixos/modules/services/networking/wasabibackend.nix+2−4

This diff is too big to show here.

nixos/modules/services/networking/wg-netmanager.nixdeleted−42

This diff is too big to show here.

nixos/modules/services/networking/wg-quick.nix+1−8

This diff is too big to show here.

nixos/modules/services/networking/wireguard.nix+1−3

This diff is too big to show here.

nixos/modules/services/networking/wpa_supplicant.nix+4−49

This diff is too big to show here.

nixos/modules/services/networking/xrdp.nix+2−8

This diff is too big to show here.

nixos/modules/services/networking/yggdrasil.xml+1

This diff is too big to show here.

nixos/modules/services/networking/zeronet.nix+1−1

This diff is too big to show here.

nixos/modules/services/search/elasticsearch.nix+1−15

This diff is too big to show here.

nixos/modules/services/search/kibana.nix+1−5

This diff is too big to show here.

nixos/modules/services/security/aesmd.nixdeleted−236

This diff is too big to show here.

nixos/modules/services/security/cfssl.nix+41−54

This diff is too big to show here.

nixos/modules/services/security/clamav.nix+5−4

This diff is too big to show here.

nixos/modules/services/security/fprot.nixnew file+82

This diff is too big to show here.

nixos/modules/services/security/haveged.nix+29−39

This diff is too big to show here.

nixos/modules/services/security/oauth2_proxy.nix+4−9

This diff is too big to show here.

nixos/modules/services/security/oauth2_proxy_nginx.nix−1

This diff is too big to show here.

nixos/modules/services/security/opensnitch.nix+1−102

This diff is too big to show here.

nixos/modules/services/security/privacyidea.nix+1−6

This diff is too big to show here.

nixos/modules/services/security/sslmate-agent.nixdeleted−32

This diff is too big to show here.

nixos/modules/services/security/step-ca.nix−11

This diff is too big to show here.

nixos/modules/services/security/tor.nix+4−24

This diff is too big to show here.

nixos/modules/services/security/torsocks.nix−1

This diff is too big to show here.

nixos/modules/services/security/vault.nix+1−7

This diff is too big to show here.

nixos/modules/services/security/vaultwarden/default.nix+3−6

This diff is too big to show here.

nixos/modules/services/system/cachix-agent/default.nixdeleted−57

This diff is too big to show here.

nixos/modules/services/system/cloud-init.nix+1−15

This diff is too big to show here.

nixos/modules/services/system/earlyoom.nix+97−133

This diff is too big to show here.

nixos/modules/services/system/nscd.nix+9−20

This diff is too big to show here.

nixos/modules/services/system/self-deploy.nix+2−3

This diff is too big to show here.

nixos/modules/services/system/systembus-notify.nixdeleted−27

This diff is too big to show here.

nixos/modules/services/torrent/peerflix.nix+1−3

This diff is too big to show here.

nixos/modules/services/torrent/rtorrent.nix+1−3

This diff is too big to show here.

nixos/modules/services/torrent/transmission.nix+16−32

This diff is too big to show here.

nixos/modules/services/ttys/getty.nix+13−2

This diff is too big to show here.

nixos/modules/services/ttys/kmscon.nix+5−24

This diff is too big to show here.

nixos/modules/services/video/epgstation/default.nix+165−183

This diff is too big to show here.

nixos/modules/services/video/epgstation/streaming.json+108−129

This diff is too big to show here.

nixos/modules/services/video/mirakurun.nix+1−1

This diff is too big to show here.

nixos/modules/services/video/rtsp-simple-server.nixdeleted−80

This diff is too big to show here.

nixos/modules/services/video/unifi-video.nix+82−88

This diff is too big to show here.

nixos/modules/services/wayland/cage.nix−4

This diff is too big to show here.

nixos/modules/services/web-apps/atlassian/jira.nix−1

This diff is too big to show here.

nixos/modules/services/web-apps/baget.nixdeleted−170

This diff is too big to show here.

nixos/modules/services/web-apps/bookstack.nix+63−142

This diff is too big to show here.

nixos/modules/services/web-apps/dex.nix−3

This diff is too big to show here.

nixos/modules/services/web-apps/discourse.nix+9−22

This diff is too big to show here.

nixos/modules/services/web-apps/discourse.xml+2−2

This diff is too big to show here.

nixos/modules/services/web-apps/dokuwiki.nix+37−26

This diff is too big to show here.

nixos/modules/services/web-apps/ethercalc.nixdeleted−62

This diff is too big to show here.

nixos/modules/services/web-apps/galene.nix+1−34

This diff is too big to show here.

nixos/modules/services/web-apps/gerrit.nix−2

This diff is too big to show here.

nixos/modules/services/web-apps/hedgedoc.nix+1−1

This diff is too big to show here.

nixos/modules/services/web-apps/ihatemoney/default.nix−1

This diff is too big to show here.

nixos/modules/services/web-apps/invidious.nix+1−2

This diff is too big to show here.

nixos/modules/services/web-apps/invoiceplane.nixdeleted−305

This diff is too big to show here.

nixos/modules/services/web-apps/jirafeau.nix+1−4

This diff is too big to show here.

nixos/modules/services/web-apps/jitsi-meet.nix+1−1

This diff is too big to show here.

nixos/modules/services/web-apps/jitsi-meet.xml+2−2

This diff is too big to show here.

nixos/modules/services/web-apps/keycloak.nix+600−546

This diff is too big to show here.

nixos/modules/services/web-apps/keycloak.xml+69−65

This diff is too big to show here.

nixos/modules/services/web-apps/mastodon.nix+1−4

This diff is too big to show here.

nixos/modules/services/web-apps/matomo.nix+6−9

This diff is too big to show here.

nixos/modules/services/web-apps/mattermost.nix+37−145

This diff is too big to show here.

nixos/modules/services/web-apps/miniflux.nix+29−26

This diff is too big to show here.

nixos/modules/services/web-apps/moinmoin.nixnew file+304

This diff is too big to show here.

nixos/modules/services/web-apps/moodle.nix+1−1

This diff is too big to show here.

nixos/modules/services/web-apps/netbox.nixdeleted−265

This diff is too big to show here.

nixos/modules/services/web-apps/nextcloud.nix+25−101

This diff is too big to show here.

nixos/modules/services/web-apps/nextcloud.xml+1−1

This diff is too big to show here.

nixos/modules/services/web-apps/nifi.nixdeleted−318

This diff is too big to show here.

nixos/modules/services/web-apps/openwebrx.nix−1

This diff is too big to show here.

nixos/modules/services/web-apps/peertube.nix+2−30

This diff is too big to show here.

nixos/modules/services/web-apps/pgpkeyserver-lite.nix+1−4

This diff is too big to show here.

nixos/modules/services/web-apps/plantuml-server.nix+3−18

This diff is too big to show here.

nixos/modules/services/web-apps/plausible.nix+8−7

This diff is too big to show here.

nixos/modules/services/web-apps/powerdns-admin.nixdeleted−152

This diff is too big to show here.

nixos/modules/services/web-apps/prosody-filer.nixdeleted−86

This diff is too big to show here.

nixos/modules/services/web-apps/restya-board.nix+1−1

This diff is too big to show here.

nixos/modules/services/web-apps/rss-bridge.nix+1−1

This diff is too big to show here.

nixos/modules/services/web-apps/timetagger.nixdeleted−80

This diff is too big to show here.

nixos/modules/services/web-apps/trac.nixnew file+79

This diff is too big to show here.

nixos/modules/services/web-apps/tt-rss.nix+4−4

This diff is too big to show here.

nixos/modules/services/web-apps/wordpress.nix+41−31

This diff is too big to show here.

nixos/modules/services/web-apps/youtrack.nix−1

This diff is too big to show here.

nixos/modules/services/web-apps/zabbix.nix+1−7

This diff is too big to show here.

nixos/modules/services/web-servers/agate.nixdeleted−148

This diff is too big to show here.

nixos/modules/services/web-servers/apache-httpd/default.nix+17−25

This diff is too big to show here.

nixos/modules/services/web-servers/apache-httpd/vhost-options.nix+2−5

This diff is too big to show here.

nixos/modules/services/web-servers/caddy/default.nix+127−247

This diff is too big to show here.

nixos/modules/services/web-servers/caddy/vhost-options.nix+10−61

This diff is too big to show here.

nixos/modules/services/web-servers/hydron.nix+1−1

This diff is too big to show here.

nixos/modules/services/web-servers/lighttpd/collectd.nix+1−5

This diff is too big to show here.

nixos/modules/services/web-servers/nginx/default.nix+23−75

This diff is too big to show here.

nixos/modules/services/web-servers/nginx/gitweb.nix+1−1

This diff is too big to show here.

nixos/modules/services/web-servers/nginx/location-options.nix+1−1

This diff is too big to show here.

nixos/modules/services/web-servers/nginx/vhost-options.nix+6−29

This diff is too big to show here.

nixos/modules/services/web-servers/pomerium.nix+3−7

This diff is too big to show here.

nixos/modules/services/web-servers/shellinabox.nixnew file+122

This diff is too big to show here.

nixos/modules/services/web-servers/tomcat.nix+3−4

This diff is too big to show here.

nixos/modules/services/web-servers/uwsgi.nix+10−8

This diff is too big to show here.

nixos/modules/services/web-servers/varnish/default.nix−1

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/cinnamon.nix+5−12

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/default.nix+1−1

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/enlightenment.nix−6

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/gnome.nix+69−44

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/gnome.xml+24

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/lumina.nix+6−4

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/lxqt.nix+2−11

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/mate.nix+37−9

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/none.nix+5−44

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/pantheon.nix+12−16

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/pantheon.xml+5−5

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/plasma5.nix+40−196

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/retroarch.nixdeleted−40

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/xfce.nix+2−9

This diff is too big to show here.

nixos/modules/services/x11/display-managers/default.nix+4−11

This diff is too big to show here.

nixos/modules/services/x11/display-managers/gdm.nix+25−4

This diff is too big to show here.

nixos/modules/services/x11/display-managers/lightdm.nix+1−3

This diff is too big to show here.

nixos/modules/services/x11/display-managers/startx.nix+3

This diff is too big to show here.

nixos/modules/services/x11/display-managers/sx.nix+5

This diff is too big to show here.

nixos/modules/services/x11/hardware/libinput.nix+5−10

This diff is too big to show here.

nixos/modules/services/x11/hardware/synaptics.nix+1−6

This diff is too big to show here.

nixos/modules/services/x11/picom.nix+2−12

This diff is too big to show here.

nixos/modules/services/x11/window-managers/qtile.nix+4−11

This diff is too big to show here.

nixos/modules/services/x11/window-managers/xmonad.nix+11−47

This diff is too big to show here.

nixos/modules/services/x11/xserver.nix+13−31

This diff is too big to show here.

nixos/modules/system/activation/activation-script.nix+1−3

This diff is too big to show here.

nixos/modules/system/activation/switch-to-configuration.plmode 100755 → 100644+343−642

This diff is too big to show here.

nixos/modules/system/activation/top-level.nix+31−80

This diff is too big to show here.

nixos/modules/system/boot/binfmt.nix+8−49

This diff is too big to show here.

nixos/modules/system/boot/kernel.nix+3−3

This diff is too big to show here.

nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix+1−18

This diff is too big to show here.

nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh+3−9

This diff is too big to show here.

nixos/modules/system/boot/loader/grub/grub.nix−27

This diff is too big to show here.

nixos/modules/system/boot/loader/grub/install-grub.pl+91−93

This diff is too big to show here.

nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py+38−48

This diff is too big to show here.

nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix+2−135

This diff is too big to show here.

nixos/modules/system/boot/luksroot.nix+7−74

This diff is too big to show here.

nixos/modules/system/boot/modprobe.nix−2

This diff is too big to show here.

nixos/modules/system/boot/networkd.nix+6−285

This diff is too big to show here.

nixos/modules/system/boot/plymouth.nix+1−7

This diff is too big to show here.

nixos/modules/system/boot/resolved.nix−1

This diff is too big to show here.

nixos/modules/system/boot/stage-1-init.sh+39−40

This diff is too big to show here.

nixos/modules/system/boot/stage-1.nix+18−40

This diff is too big to show here.

nixos/modules/system/boot/stage-2-init.shmode 100755 → 100644+97−66

This diff is too big to show here.

nixos/modules/system/boot/stage-2.nix+39−2

This diff is too big to show here.

nixos/modules/system/boot/systemd-lib.nixnew file+237

This diff is too big to show here.

nixos/modules/system/boot/systemd-nspawn.nixnew file+133

This diff is too big to show here.

nixos/modules/system/boot/systemd-unit-options.nixnew file+536

This diff is too big to show here.

nixos/modules/system/boot/systemd.nix+676−72

This diff is too big to show here.

nixos/modules/system/boot/systemd/coredump.nixdeleted−57

This diff is too big to show here.

nixos/modules/system/boot/systemd/initrd-secrets.nixdeleted−36

This diff is too big to show here.

nixos/modules/system/boot/systemd/initrd.nixdeleted−502

This diff is too big to show here.

nixos/modules/system/boot/systemd/journald.nixdeleted−131

This diff is too big to show here.

nixos/modules/system/boot/systemd/logind.nixdeleted−114

This diff is too big to show here.

nixos/modules/system/boot/systemd/nspawn.nixdeleted−131

This diff is too big to show here.

nixos/modules/system/boot/systemd/shutdown.nixdeleted−58

This diff is too big to show here.

nixos/modules/system/boot/systemd/tmpfiles.nixdeleted−120

This diff is too big to show here.

nixos/modules/system/boot/systemd/user.nixdeleted−153

This diff is too big to show here.

nixos/modules/system/boot/timesyncd.nix+5−19

This diff is too big to show here.

nixos/modules/system/boot/tmp.nix+1−6

This diff is too big to show here.

nixos/modules/system/build.nixdeleted−21

This diff is too big to show here.

nixos/modules/system/etc/etc-activation.nixdeleted−12

This diff is too big to show here.

nixos/modules/system/etc/etc.nix+3−3

This diff is too big to show here.

nixos/modules/system/etc/test.nixdeleted−70

This diff is too big to show here.

nixos/modules/tasks/auto-upgrade.nix+20−105

This diff is too big to show here.

nixos/modules/tasks/bcache.nix+6−16

This diff is too big to show here.

nixos/modules/tasks/filesystems.nix+2−31

This diff is too big to show here.

nixos/modules/tasks/filesystems/apfs.nixdeleted−22

This diff is too big to show here.

nixos/modules/tasks/filesystems/btrfs.nix+3−3

This diff is too big to show here.

nixos/modules/tasks/filesystems/cifs.nix+1−1

This diff is too big to show here.

nixos/modules/tasks/filesystems/ext.nix+4−10

This diff is too big to show here.

nixos/modules/tasks/filesystems/f2fs.nix+1−1

This diff is too big to show here.

nixos/modules/tasks/filesystems/jfs.nix+1−1

This diff is too big to show here.

nixos/modules/tasks/filesystems/reiserfs.nix+1−1

This diff is too big to show here.

nixos/modules/tasks/filesystems/unionfs-fuse.nix+2−13

This diff is too big to show here.

nixos/modules/tasks/filesystems/vfat.nix+1−1

This diff is too big to show here.

nixos/modules/tasks/filesystems/xfs.nix+2−2

This diff is too big to show here.

nixos/modules/tasks/filesystems/zfs.nix+34−13

This diff is too big to show here.

nixos/modules/tasks/lvm.nix+6−55

This diff is too big to show here.

nixos/modules/tasks/network-interfaces-scripted.nix−30

This diff is too big to show here.

nixos/modules/tasks/network-interfaces-systemd.nix+1−84

This diff is too big to show here.

nixos/modules/tasks/network-interfaces.nix+22−120

This diff is too big to show here.

nixos/modules/tasks/snapraid.nix+2−2

This diff is too big to show here.

nixos/modules/tasks/swraid.nix+9−35

This diff is too big to show here.

nixos/modules/testing/test-instrumentation.nix+26−23

This diff is too big to show here.

nixos/modules/virtualisation/amazon-ec2-amis.nixdeleted−444

This diff is too big to show here.

nixos/modules/virtualisation/amazon-image.nix+1−6

This diff is too big to show here.

nixos/modules/virtualisation/amazon-options.nix+1−2

This diff is too big to show here.

nixos/modules/virtualisation/azure-agent.nix+10−6

This diff is too big to show here.

nixos/modules/virtualisation/azure-common.nix+1−5

This diff is too big to show here.

nixos/modules/virtualisation/build-vm.nixdeleted−58

This diff is too big to show here.

nixos/modules/virtualisation/container-config.nix+1−1

This diff is too big to show here.

nixos/modules/virtualisation/containerd.nix−1

This diff is too big to show here.

nixos/modules/virtualisation/cri-o.nix−4

This diff is too big to show here.

nixos/modules/virtualisation/docker-rootless.nixdeleted−102

This diff is too big to show here.

nixos/modules/virtualisation/docker.nix+7−30

This diff is too big to show here.

nixos/modules/virtualisation/ec2-amis.nix+371−9

This diff is too big to show here.

nixos/modules/virtualisation/fetch-instance-ssh-keys.bashnew file+36

This diff is too big to show here.

nixos/modules/virtualisation/google-compute-config.nix+103−32

This diff is too big to show here.

nixos/modules/virtualisation/kubevirt.nixdeleted−30

This diff is too big to show here.

nixos/modules/virtualisation/kvmgt.nix+1−1

This diff is too big to show here.

nixos/modules/virtualisation/libvirtd.nix−4

This diff is too big to show here.

nixos/modules/virtualisation/nixos-containers.nix+13−28

This diff is too big to show here.

nixos/modules/virtualisation/oci-containers.nix+10−8

This diff is too big to show here.

nixos/modules/virtualisation/openstack-config.nix+7−39

This diff is too big to show here.

nixos/modules/virtualisation/openstack-metadata-fetcher.nix+4−5

This diff is too big to show here.

nixos/modules/virtualisation/openstack-options.nixdeleted−71

This diff is too big to show here.

nixos/modules/virtualisation/openvswitch.nix+53−8

This diff is too big to show here.

nixos/modules/virtualisation/podman/dnsname.nix → nixos/modules/virtualisation/podman-dnsname.nixrenamed

The content is the same.

nixos/modules/virtualisation/podman/network-socket-ghostunnel.nix → nixos/modules/virtualisation/podman-network-socket-ghostunnel.nixrenamed

The content is the same.

nixos/modules/virtualisation/podman-network-socket.nixnew file+91

This diff is too big to show here.

nixos/modules/virtualisation/podman.nixnew file+184

This diff is too big to show here.

nixos/modules/virtualisation/podman/default.nixdeleted−187

This diff is too big to show here.

nixos/modules/virtualisation/podman/network-socket.nixdeleted−95

This diff is too big to show here.

nixos/modules/virtualisation/proxmox-lxc.nixdeleted−64

This diff is too big to show here.

nixos/modules/virtualisation/qemu-vm.nix+11−64

This diff is too big to show here.

nixos/modules/virtualisation/virtualbox-guest.nix+2−2

This diff is too big to show here.

nixos/modules/virtualisation/vmware-guest.nix+3−5

This diff is too big to show here.

nixos/modules/virtualisation/vmware-host.nixdeleted−166

This diff is too big to show here.

nixos/modules/virtualisation/waydroid.nix+3−12

This diff is too big to show here.

nixos/modules/virtualisation/xen-dom0.nix+1

This diff is too big to show here.

nixos/release-combined.nix+2−4

This diff is too big to show here.

nixos/release-small.nix+2−4

This diff is too big to show here.

nixos/release.nix+2−2

This diff is too big to show here.

nixos/tests/acme.nix+210−366

This diff is too big to show here.

nixos/tests/adguardhome.nixdeleted−57

This diff is too big to show here.

nixos/tests/aesmd.nixdeleted−62

This diff is too big to show here.

nixos/tests/agda.nix+1−1

This diff is too big to show here.

nixos/tests/airsonic.nix+5−1

This diff is too big to show here.

nixos/tests/all-terminfo.nixdeleted−31

This diff is too big to show here.

nixos/tests/all-tests.nix+24−128

This diff is too big to show here.

nixos/tests/amazon-init-shell.nix+1−1

This diff is too big to show here.

nixos/tests/apfs.nixdeleted−54

This diff is too big to show here.

nixos/tests/apparmor.nix+1−1

This diff is too big to show here.

nixos/tests/atd.nix+1−1

This diff is too big to show here.

nixos/tests/atop.nix+14−6

This diff is too big to show here.

nixos/tests/avahi.nix+1−1

This diff is too big to show here.

nixos/tests/bcachefs.nix+9−8

This diff is too big to show here.

nixos/tests/beanstalkd.nix+1−1

This diff is too big to show here.

nixos/tests/bees.nix+1−1

This diff is too big to show here.

nixos/tests/bind.nix+1−1

This diff is too big to show here.

nixos/tests/bird.nixdeleted−129

This diff is too big to show here.

nixos/tests/bitcoind.nix+1−1

This diff is too big to show here.

nixos/tests/blockbook-frontend.nix+1−1

This diff is too big to show here.

nixos/tests/blocky.nixdeleted−34

This diff is too big to show here.

nixos/tests/boot-stage1.nix+1−3

This diff is too big to show here.

nixos/tests/boot.nix+5−40

This diff is too big to show here.

nixos/tests/borgbackup.nix+1−1

This diff is too big to show here.

nixos/tests/botamusique.nix−4

This diff is too big to show here.

nixos/tests/bpf.nixdeleted−29

This diff is too big to show here.

nixos/tests/breitbandmessung.nixdeleted−33

This diff is too big to show here.

nixos/tests/brscan5.nix+1−2

This diff is too big to show here.

nixos/tests/btrbk.nix+1−1

This diff is too big to show here.

nixos/tests/buildkite-agents.nix+1−1

This diff is too big to show here.

nixos/tests/caddy.nix+3−3

This diff is too big to show here.

nixos/tests/cage.nix+2−1

This diff is too big to show here.

nixos/tests/cagebreak.nix+2−1

This diff is too big to show here.

nixos/tests/cassandra.nix+1

This diff is too big to show here.

nixos/tests/ceph-multi-node.nix+2−1

This diff is too big to show here.

nixos/tests/ceph-single-node-bluestore.nix+1

This diff is too big to show here.

nixos/tests/ceph-single-node.nix+1

This diff is too big to show here.

nixos/tests/cfssl.nix+1−1

This diff is too big to show here.

nixos/tests/chromium.nix+18−20

This diff is too big to show here.

nixos/tests/clickhouse.nix+1−1

This diff is too big to show here.

nixos/tests/cloud-init.nix+2−27

This diff is too big to show here.

nixos/tests/cntr.nix+5−17

This diff is too big to show here.

nixos/tests/collectd.nixdeleted−38

This diff is too big to show here.

nixos/tests/common/acme/client/default.nix+2−4

This diff is too big to show here.

nixos/tests/common/acme/server/default.nix−5

This diff is too big to show here.

nixos/tests/common/lxd/config.yamldeleted−24

This diff is too big to show here.

nixos/tests/common/wayland-cage.nixdeleted−13

This diff is too big to show here.

nixos/tests/containers-bridge.nix+2−1

This diff is too big to show here.

nixos/tests/containers-custom-pkgs.nix+1−1

This diff is too big to show here.

nixos/tests/containers-ephemeral.nix+5−4

This diff is too big to show here.

nixos/tests/containers-extra_veth.nix+2−1

This diff is too big to show here.

nixos/tests/containers-hosts.nix+2−1

This diff is too big to show here.

nixos/tests/containers-imperative.nix+10−9

This diff is too big to show here.

nixos/tests/containers-ip.nix+2−1

This diff is too big to show here.

nixos/tests/containers-macvlans.nix+2

This diff is too big to show here.

nixos/tests/containers-names.nix+1−1

This diff is too big to show here.

nixos/tests/containers-nested.nix+1−1

This diff is too big to show here.

nixos/tests/containers-physical_interfaces.nix+4

This diff is too big to show here.

nixos/tests/containers-portforward.nix+2−1

This diff is too big to show here.

nixos/tests/containers-tmpfs.nix+7−6

This diff is too big to show here.

nixos/tests/couchdb.nix−3

This diff is too big to show here.

nixos/tests/cri-o.nix+1−1

This diff is too big to show here.

nixos/tests/custom-ca.nix+89−104

This diff is too big to show here.

nixos/tests/disable-installer-tools.nix+1−1

This diff is too big to show here.

nixos/tests/dnsdist.nixdeleted−48

This diff is too big to show here.

nixos/tests/doas.nix+1−1

This diff is too big to show here.

nixos/tests/docker-rootless.nixdeleted−41

This diff is too big to show here.

nixos/tests/docker-tools-cross.nix+2−2

This diff is too big to show here.

nixos/tests/docker-tools.nix+5−28

This diff is too big to show here.

nixos/tests/documize.nix+1−1

This diff is too big to show here.

nixos/tests/doh-proxy-rust.nix+1−1

This diff is too big to show here.

nixos/tests/domination.nix+1−1

This diff is too big to show here.

nixos/tests/dovecot.nix+1−1

This diff is too big to show here.

nixos/tests/drbd.nixdeleted−87

This diff is too big to show here.

nixos/tests/earlyoom.nixdeleted−16

This diff is too big to show here.

nixos/tests/ecryptfs.nix+1−1

This diff is too big to show here.

nixos/tests/elk.nix+21−69

This diff is too big to show here.

nixos/tests/emacs-daemon.nix+2−2

This diff is too big to show here.

nixos/tests/empty-filedeleted

No changes to the content.

nixos/tests/enlightenment.nix+2−1

This diff is too big to show here.

nixos/tests/env.nix+1−1

This diff is too big to show here.

nixos/tests/envoy.nixdeleted−33

This diff is too big to show here.

nixos/tests/ergochat.nixdeleted−97

This diff is too big to show here.

nixos/tests/etebase-server.nix+1−1

This diff is too big to show here.

nixos/tests/etesync-dav.nix+1−1

This diff is too big to show here.

nixos/tests/fancontrol.nix+1−1

This diff is too big to show here.

nixos/tests/fcitx/default.nix+2−1

This diff is too big to show here.

nixos/tests/fenics.nix+2−1

This diff is too big to show here.

nixos/tests/firefox.nix+4−1

This diff is too big to show here.

nixos/tests/fish.nix+1−1

This diff is too big to show here.

nixos/tests/fluentd.nix+1−1

This diff is too big to show here.

nixos/tests/fontconfig-default-fonts.nix+1−1

This diff is too big to show here.

nixos/tests/frr.nixdeleted−104

This diff is too big to show here.

nixos/tests/fsck.nix+1−1

This diff is too big to show here.

nixos/tests/ft2-clone.nix+1−1

This diff is too big to show here.

nixos/tests/gerrit.nix+1

This diff is too big to show here.

nixos/tests/geth.nix+2−2

This diff is too big to show here.

nixos/tests/gitlab.nix+21−300

This diff is too big to show here.

nixos/tests/gitolite-fcgiwrap.nix+2−2

This diff is too big to show here.

nixos/tests/gnome-xorg.nix+2−2

This diff is too big to show here.

nixos/tests/gnome.nix+2−2

This diff is too big to show here.

nixos/tests/google-oslogin/default.nix+2−2

This diff is too big to show here.

nixos/tests/google-oslogin/server.nix+4−2

This diff is too big to show here.

nixos/tests/google-oslogin/server.pymode 100755 → 100644

Only the mode changed.

nixos/tests/gotify-server.nix+1−1

This diff is too big to show here.

nixos/tests/graphite.nix+1

This diff is too big to show here.

nixos/tests/graylog.nix+1−1

This diff is too big to show here.

nixos/tests/grocy.nix+1−1

This diff is too big to show here.

nixos/tests/grub.nix+1−1

This diff is too big to show here.

nixos/tests/hadoop/default.nixdeleted−7

This diff is too big to show here.

nixos/tests/hadoop/hadoop.nix+125−150

This diff is too big to show here.

nixos/tests/hadoop/hdfs.nix+19−43

This diff is too big to show here.

nixos/tests/hadoop/yarn.nix+13−21

This diff is too big to show here.

nixos/tests/handbrake.nixnew file+33

This diff is too big to show here.

nixos/tests/haproxy.nix+1

This diff is too big to show here.

nixos/tests/hardened.nix+2−2

This diff is too big to show here.

nixos/tests/haste-server.nixdeleted−23

This diff is too big to show here.

nixos/tests/hbase.nixdeleted−30

This diff is too big to show here.

nixos/tests/herbstluftwm.nix+1−1

This diff is too big to show here.

nixos/tests/hibernate.nix+5−16

This diff is too big to show here.

nixos/tests/hitch/default.nix+1−1

This diff is too big to show here.

nixos/tests/hocker-fetchdocker/default.nix+1−1

This diff is too big to show here.

nixos/tests/hockeypuck.nix+1−1

This diff is too big to show here.

nixos/tests/home-assistant.nix+35−85

This diff is too big to show here.

nixos/tests/hostname.nix+1−1

This diff is too big to show here.

nixos/tests/hound.nix+1−1

This diff is too big to show here.

nixos/tests/hydra/common.nix+1−1

This diff is too big to show here.

nixos/tests/hydra/default.nix+2−2

This diff is too big to show here.

nixos/tests/i3wm.nix+1−1

This diff is too big to show here.

nixos/tests/ihatemoney/default.nix+1−1

This diff is too big to show here.

nixos/tests/incron.nix+1−1

This diff is too big to show here.

nixos/tests/initrd-network.nix+1−1

This diff is too big to show here.

nixos/tests/initrd-secrets.nix+3−9

This diff is too big to show here.

nixos/tests/input-remapper.nixdeleted−52

This diff is too big to show here.

nixos/tests/installed-tests/appstream-qt.nixdeleted−9

This diff is too big to show here.

nixos/tests/installed-tests/appstream.nixdeleted−9

This diff is too big to show here.

nixos/tests/installed-tests/default.nix+1−3

This diff is too big to show here.

nixos/tests/installed-tests/flatpak.nix−1

This diff is too big to show here.

nixos/tests/installed-tests/fwupd.nix+1

This diff is too big to show here.

nixos/tests/installed-tests/gjs.nix−6

This diff is too big to show here.

nixos/tests/installer-systemd-stage-1.nixdeleted−33

This diff is too big to show here.

nixos/tests/installer.nix+32−38

This diff is too big to show here.

nixos/tests/invidious.nix+1−1

This diff is too big to show here.

nixos/tests/invoiceplane.nixdeleted−82

This diff is too big to show here.

nixos/tests/ipfs.nix−5

This diff is too big to show here.

nixos/tests/iscsi-multipath-root.nix+5−5

This diff is too big to show here.

nixos/tests/iscsi-root.nix+5−5

This diff is too big to show here.

nixos/tests/isso.nix+1−1

This diff is too big to show here.

nixos/tests/jellyfin.nix+1−1

This diff is too big to show here.

nixos/tests/jenkins.nix−2

This diff is too big to show here.

nixos/tests/jibri.nix+2−2

This diff is too big to show here.

nixos/tests/jitsi-meet.nix+3−2

This diff is too big to show here.

nixos/tests/k3s-single-node-docker.nixdeleted−84

This diff is too big to show here.

nixos/tests/k3s-single-node.nixdeleted−82

This diff is too big to show here.

nixos/tests/k3s.nixnew file+78

This diff is too big to show here.

nixos/tests/kafka.nix+1

This diff is too big to show here.

nixos/tests/kbd-setfont-decompress.nix+1−1

This diff is too big to show here.

nixos/tests/kbd-update-search-paths-patch.nix+1−1

This diff is too big to show here.

nixos/tests/keepassxc.nix+9−43

This diff is too big to show here.

nixos/tests/kerberos/heimdal.nix+1−1

This diff is too big to show here.

nixos/tests/kerberos/mit.nix+1−1

This diff is too big to show here.

nixos/tests/kernel-generic.nix+1−2

This diff is too big to show here.

nixos/tests/kernel-latest-ath-user-regd.nix+1−1

This diff is too big to show here.

nixos/tests/kexec.nix+16−44

This diff is too big to show here.

nixos/tests/keycloak.nix+14−33

This diff is too big to show here.

nixos/tests/knot.nix−6

This diff is too big to show here.

nixos/tests/krb5/deprecated-config.nix+1−1

This diff is too big to show here.

nixos/tests/krb5/example-config.nix+1−1

This diff is too big to show here.

nixos/tests/ksm.nix+1−1

This diff is too big to show here.

nixos/tests/kubernetes/base.nix+10−2

This diff is too big to show here.

nixos/tests/kubernetes/default.nix+1−1

This diff is too big to show here.

nixos/tests/kubernetes/dns.nix+3−3

This diff is too big to show here.

nixos/tests/kubernetes/e2e.nix+1−1

This diff is too big to show here.

nixos/tests/kubernetes/rbac.nix+9−9

This diff is too big to show here.

nixos/tests/libinput.nixdeleted−38

This diff is too big to show here.

nixos/tests/libresprite.nixdeleted−30

This diff is too big to show here.

nixos/tests/libreswan.nix+2−2

This diff is too big to show here.

nixos/tests/lightdm.nix+1−1

This diff is too big to show here.

nixos/tests/limesurvey.nix+1−1

This diff is too big to show here.

nixos/tests/litestream.nix+1−1

This diff is too big to show here.

nixos/tests/login.nix+1−1

This diff is too big to show here.

nixos/tests/logrotate.nixdeleted−152

This diff is too big to show here.

nixos/tests/loki.nix+1−1

This diff is too big to show here.

nixos/tests/lorri/default.nix+2−2

This diff is too big to show here.

nixos/tests/lvm2/default.nixdeleted−45

This diff is too big to show here.

nixos/tests/lvm2/systemd-stage-1.nixdeleted−104

This diff is too big to show here.

nixos/tests/lvm2/thinpool.nixdeleted−32

This diff is too big to show here.

nixos/tests/lvm2/vdo.nixdeleted−27

This diff is too big to show here.

nixos/tests/lxd-image-server.nix+49−16

This diff is too big to show here.

nixos/tests/lxd-image.nixnew file+91

This diff is too big to show here.

nixos/tests/lxd-nftables.nix+1−1

This diff is too big to show here.

nixos/tests/lxd.nix+64−41

This diff is too big to show here.

nixos/tests/maddy.nixdeleted−58

This diff is too big to show here.

nixos/tests/maestral.nixdeleted−72

This diff is too big to show here.

nixos/tests/magnetico.nix+1−1

This diff is too big to show here.

nixos/tests/mailcatcher.nix+3−8

This diff is too big to show here.

nixos/tests/mailhog.nix+1−1

This diff is too big to show here.

nixos/tests/man.nixdeleted−100

This diff is too big to show here.

nixos/tests/matomo.nix+1−1

This diff is too big to show here.

nixos/tests/matrix-appservice-irc.nix+21−28

This diff is too big to show here.

nixos/tests/matrix-conduit.nixdeleted−95

This diff is too big to show here.

nixos/tests/matrix-synapse.nix+18−46

This diff is too big to show here.

nixos/tests/matrix/mjolnir.nix+19−24

This diff is too big to show here.

nixos/tests/matrix/pantalaimon.nix+4−27

This diff is too big to show here.

nixos/tests/mattermost.nixdeleted−124

This diff is too big to show here.

nixos/tests/mediawiki.nix+1−1

This diff is too big to show here.

nixos/tests/meilisearch.nix+1−1

This diff is too big to show here.

nixos/tests/memcached.nix+1−1

This diff is too big to show here.

nixos/tests/metabase.nix+1

This diff is too big to show here.

nixos/tests/minidlna.nix+2−4

This diff is too big to show here.

nixos/tests/miniflux.nix+6−18

This diff is too big to show here.

nixos/tests/misc.nix+4−4

This diff is too big to show here.

nixos/tests/mod_perl.nix+1−1

This diff is too big to show here.

nixos/tests/moinmoin.nixnew file+28

This diff is too big to show here.

nixos/tests/mongodb.nix−4

This diff is too big to show here.

nixos/tests/moodle.nix+1−1

This diff is too big to show here.

nixos/tests/moonraker.nixdeleted−45

This diff is too big to show here.

nixos/tests/moosefs.nixdeleted−89

This diff is too big to show here.

nixos/tests/mpd.nix+1−1

This diff is too big to show here.

nixos/tests/mtp.nixdeleted−109

This diff is too big to show here.

nixos/tests/musescore.nix+1−1

This diff is too big to show here.

nixos/tests/mysql/common.nixdeleted−10

This diff is too big to show here.

nixos/tests/mysql/mariadb-galera-mariabackup.nixnew file+233

This diff is too big to show here.

nixos/tests/mysql/mariadb-galera-rsync.nixnew file+226

This diff is too big to show here.

nixos/tests/mysql/mariadb-galera.nixdeleted−250

This diff is too big to show here.

nixos/tests/mysql/mysql-autobackup.nix+33−48

This diff is too big to show here.

nixos/tests/mysql/mysql-backup.nix+44−60

This diff is too big to show here.

nixos/tests/mysql/mysql-replication.nix+74−84

This diff is too big to show here.

nixos/tests/mysql/mysql.nix+210−134

This diff is too big to show here.

nixos/tests/nagios.nix+1−1

This diff is too big to show here.

nixos/tests/nano.nixnew file+44

This diff is too big to show here.

nixos/tests/nar-serve.nix+1−1

This diff is too big to show here.

nixos/tests/nats.nix+13−11

This diff is too big to show here.

nixos/tests/navidrome.nix+1−1

This diff is too big to show here.

nixos/tests/nbd.nixdeleted−103

This diff is too big to show here.

nixos/tests/ncdns.nix+9−6

This diff is too big to show here.

nixos/tests/networking-proxy.nix+1

This diff is too big to show here.

nixos/tests/networking.nix+10−134

This diff is too big to show here.

nixos/tests/nextcloud/default.nix+5−5

This diff is too big to show here.

nixos/tests/nextcloud/with-mysql-and-memcached.nix+21−1

This diff is too big to show here.

nixos/tests/nginx-etag.nix+1

This diff is too big to show here.

nixos/tests/nginx-modsecurity.nixdeleted−39

This diff is too big to show here.

nixos/tests/nginx-pubhtml.nix+1−1

This diff is too big to show here.

nixos/tests/nginx-sandbox.nix+1−1

This diff is too big to show here.

nixos/tests/nginx-sso.nix+1−1

This diff is too big to show here.

nixos/tests/nginx-variants.nix+1−1

This diff is too big to show here.

nixos/tests/nix-ld.nixdeleted−20

This diff is too big to show here.

nixos/tests/nix-serve-ssh.nixdeleted−45

This diff is too big to show here.

nixos/tests/nix-serve.nix+1−1

This diff is too big to show here.

nixos/tests/nix-ssh-serve.nixnew file+45

This diff is too big to show here.

nixos/tests/nixops/default.nix+4−3

This diff is too big to show here.

nixos/tests/nixops/legacy/base-configuration.nix+1−1

This diff is too big to show here.

nixos/tests/nixos-generate-config.nix+1−1

This diff is too big to show here.

nixos/tests/noto-fonts.nixdeleted−44

This diff is too big to show here.

nixos/tests/novacomd.nix+1−1

This diff is too big to show here.

nixos/tests/oh-my-zsh.nix+1−1

This diff is too big to show here.

nixos/tests/openldap.nix+3−3

This diff is too big to show here.

nixos/tests/opensmtpd-rspamd.nix+1

This diff is too big to show here.

nixos/tests/openssh.nix+6−12

This diff is too big to show here.

nixos/tests/opentabletdriver.nix+1−1

This diff is too big to show here.

nixos/tests/os-prober.nix+9−9

This diff is too big to show here.

nixos/tests/osrm-backend.nix+1−1

This diff is too big to show here.

nixos/tests/overlayfs.nix+1−1

This diff is too big to show here.

nixos/tests/pacemaker.nixdeleted−110

This diff is too big to show here.

nixos/tests/packagekit.nix+1−1

This diff is too big to show here.

nixos/tests/pam/pam-oath-login.nix → nixos/tests/pam-oath-login.nixrenamed+3−3

This diff is too big to show here.

nixos/tests/pam/pam-u2f.nix → nixos/tests/pam-u2f.nixrenamed+2−2

This diff is too big to show here.

nixos/tests/pam/pam-file-contents.nixdeleted−25

This diff is too big to show here.

nixos/tests/pam/pam-ussh.nixdeleted−70

This diff is too big to show here.

nixos/tests/pam/test_chfn.pydeleted−27

This diff is too big to show here.

nixos/tests/pantheon.nix+2−1

This diff is too big to show here.

nixos/tests/paperless-ng.nixnew file+46

This diff is too big to show here.

nixos/tests/paperless.nixdeleted−44

This diff is too big to show here.

nixos/tests/parsedmarc/default.nix+8−19

This diff is too big to show here.

nixos/tests/pdns-recursor.nix+1−4

This diff is too big to show here.

nixos/tests/pgadmin4-standalone.nixdeleted−43

This diff is too big to show here.

nixos/tests/pgadmin4.nixdeleted−132

This diff is too big to show here.

nixos/tests/php/fpm.nix+2−2

This diff is too big to show here.

nixos/tests/php/httpd.nix+1−1

This diff is too big to show here.

nixos/tests/php/pcre.nix+1−1

This diff is too big to show here.

nixos/tests/pict-rs.nix+1−1

This diff is too big to show here.

nixos/tests/plasma5-systemd-start.nix+2−1

This diff is too big to show here.

nixos/tests/plasma5.nix+2−1

This diff is too big to show here.

nixos/tests/plausible.nix+1−4

This diff is too big to show here.

nixos/tests/pleroma.nix+19−2

This diff is too big to show here.

nixos/tests/plikd.nix+1−1

This diff is too big to show here.

nixos/tests/plotinus.nix+1−1

This diff is too big to show here.

nixos/tests/podman-dnsname.nixnew file+42

This diff is too big to show here.

nixos/tests/podman-tls-ghostunnel.nixnew file+150

This diff is too big to show here.

nixos/tests/podman.nixnew file+144

This diff is too big to show here.

nixos/tests/podman/default.nixdeleted−144

This diff is too big to show here.

nixos/tests/podman/dnsname.nixdeleted−42

This diff is too big to show here.

nixos/tests/podman/tls-ghostunnel.nixdeleted−150

This diff is too big to show here.

nixos/tests/postfix-raise-smtpd-tls-security-level.nix+1−1

This diff is too big to show here.

nixos/tests/postfix.nix+1−1

This diff is too big to show here.

nixos/tests/postgresql-wal-receiver.nix+1−1

This diff is too big to show here.

nixos/tests/postgresql.nix+1−1

This diff is too big to show here.

nixos/tests/power-profiles-daemon.nix+1−1

This diff is too big to show here.

nixos/tests/powerdns-admin.nixdeleted−117

This diff is too big to show here.

nixos/tests/powerdns.nix−1

This diff is too big to show here.

nixos/tests/predictable-interface-names.nix+1−1

This diff is too big to show here.

nixos/tests/privacyidea.nix+2−1

This diff is too big to show here.

nixos/tests/privoxy.nix+1−1

This diff is too big to show here.

nixos/tests/prometheus-exporters.nix+4−67

This diff is too big to show here.

nixos/tests/prometheus.nix+1

This diff is too big to show here.

nixos/tests/pt2-clone.nix+1−1

This diff is too big to show here.

nixos/tests/pulseaudio.nixdeleted−71

This diff is too big to show here.

nixos/tests/qboot.nix+1−1

This diff is too big to show here.

nixos/tests/quorum.nix+9−32

This diff is too big to show here.

nixos/tests/rabbitmq.nix+1−1

This diff is too big to show here.

nixos/tests/radicale.nix+1−1

This diff is too big to show here.

nixos/tests/rasdaemon.nix+1−1

This diff is too big to show here.

nixos/tests/redis.nix+17−19

This diff is too big to show here.

nixos/tests/redmine.nix+1−1

This diff is too big to show here.

nixos/tests/restart-by-activation-script.nix+1−1

This diff is too big to show here.

nixos/tests/retroarch.nixdeleted−49

This diff is too big to show here.

nixos/tests/riak.nix+1−1

This diff is too big to show here.

nixos/tests/rspamd.nix+10−5

This diff is too big to show here.

nixos/tests/rstudio-server.nixdeleted−24

This diff is too big to show here.

nixos/tests/rsyslogd.nix+2−2

This diff is too big to show here.

nixos/tests/sabnzbd.nixdeleted−22

This diff is too big to show here.

nixos/tests/samba-wsdd.nix+1−1

This diff is too big to show here.

nixos/tests/sddm.nix+2−2

This diff is too big to show here.

nixos/tests/seafile.nix+2

This diff is too big to show here.

nixos/tests/sfxr-qt.nixdeleted−32

This diff is too big to show here.

nixos/tests/shattered-pixel-dungeon.nix+1−1

This diff is too big to show here.

nixos/tests/shiori.nix+2−1

This diff is too big to show here.

nixos/tests/signal-desktop.nix+2−1

This diff is too big to show here.

nixos/tests/simple.nix+1−1

This diff is too big to show here.

nixos/tests/snapcast.nix−9

This diff is too big to show here.

nixos/tests/snapper.nix+1−1

This diff is too big to show here.

nixos/tests/soapui.nix+1−1

This diff is too big to show here.

nixos/tests/solr.nix+1−1

This diff is too big to show here.

nixos/tests/sourcehut.nix+10−193

This diff is too big to show here.

nixos/tests/spark/default.nix+1

This diff is too big to show here.

nixos/tests/ssh-keys.nix+1−1

This diff is too big to show here.

nixos/tests/sssd-ldap.nix+1−1

This diff is too big to show here.

nixos/tests/sssd.nix+1−1

This diff is too big to show here.

nixos/tests/starship.nixdeleted−42

This diff is too big to show here.

nixos/tests/step-ca.nixdeleted−77

This diff is too big to show here.

nixos/tests/sudo.nix+1−5

This diff is too big to show here.

nixos/tests/sway.nix+26−51

This diff is too big to show here.

nixos/tests/switch-test.nix+167−797

This diff is too big to show here.

nixos/tests/sympa.nix+2−1

This diff is too big to show here.

nixos/tests/syncthing-init.nix+1−1

This diff is too big to show here.

nixos/tests/syncthing-relay.nix+1−1

This diff is too big to show here.

nixos/tests/systemd-analyze.nix+1−1

This diff is too big to show here.

nixos/tests/systemd-binfmt.nix+20−86

This diff is too big to show here.

nixos/tests/systemd-boot.nix+6−147

This diff is too big to show here.

nixos/tests/systemd-confinement.nix+4−27

This diff is too big to show here.

nixos/tests/systemd-cryptenroll.nix+2−1

This diff is too big to show here.

nixos/tests/systemd-escaping.nixdeleted−45

This diff is too big to show here.

nixos/tests/systemd-initrd-btrfs-raid.nixdeleted−45

This diff is too big to show here.

nixos/tests/systemd-initrd-luks-keyfile.nixdeleted−53

This diff is too big to show here.

nixos/tests/systemd-initrd-luks-password.nixdeleted−48

This diff is too big to show here.

nixos/tests/systemd-initrd-simple.nixdeleted−44

This diff is too big to show here.

nixos/tests/systemd-initrd-swraid.nixdeleted−50

This diff is too big to show here.

nixos/tests/systemd-journal.nix+1−1

This diff is too big to show here.

nixos/tests/systemd-machinectl.nixdeleted−85

This diff is too big to show here.

nixos/tests/systemd-misc.nixdeleted−62

This diff is too big to show here.

nixos/tests/systemd-networkd-dhcpserver-static-leases.nixdeleted−81

This diff is too big to show here.

nixos/tests/systemd-networkd-ipv6-prefix-delegation.nix+14−5

This diff is too big to show here.

nixos/tests/systemd-networkd-vrf.nix−2

This diff is too big to show here.

nixos/tests/systemd-networkd.nix−10

This diff is too big to show here.

nixos/tests/systemd-shutdown.nixdeleted−26

This diff is too big to show here.

nixos/tests/systemd-unit-path.nixnew file+47

This diff is too big to show here.

nixos/tests/systemd.nix+2−17

This diff is too big to show here.

nixos/tests/taskserver.nix−1

This diff is too big to show here.

nixos/tests/teeworlds.nix+2−2

This diff is too big to show here.

nixos/tests/telegraf.nix+1−1

This diff is too big to show here.

nixos/tests/teleport.nixdeleted−99

This diff is too big to show here.

nixos/tests/terminal-emulators.nixdeleted−207

This diff is too big to show here.

nixos/tests/thelounge.nixdeleted−29

This diff is too big to show here.

nixos/tests/tinywl.nixdeleted−57

This diff is too big to show here.

nixos/tests/tomcat.nixdeleted−21

This diff is too big to show here.

nixos/tests/tor.nix+15−10

This diff is too big to show here.

nixos/tests/trac.nixnew file+19

This diff is too big to show here.

nixos/tests/transmission.nix+1−1

This diff is too big to show here.

nixos/tests/tsm-client-gui.nixdeleted−57

This diff is too big to show here.

nixos/tests/tuptime.nix+1−1

This diff is too big to show here.

nixos/tests/turbovnc-headless-server.nix+1−1

This diff is too big to show here.

nixos/tests/tuxguitar.nix+1−1

This diff is too big to show here.

nixos/tests/txredisapi.nix+4−6

This diff is too big to show here.

nixos/tests/udisks2.nix+1−1

This diff is too big to show here.

nixos/tests/unifi.nixdeleted−36

This diff is too big to show here.

nixos/tests/usbguard.nix+1−1

This diff is too big to show here.

nixos/tests/user-activation-scripts.nix+1−1

This diff is too big to show here.

nixos/tests/uwsgi.nix+1−1

This diff is too big to show here.

nixos/tests/v2ray.nix+1−1

This diff is too big to show here.

nixos/tests/vault-postgresql.nix+3−2

This diff is too big to show here.

nixos/tests/vault.nix+2−1

This diff is too big to show here.

nixos/tests/vaultwarden.nix+2

This diff is too big to show here.

nixos/tests/vector.nix+1−1

This diff is too big to show here.

nixos/tests/vengi-tools.nixdeleted−29

This diff is too big to show here.

nixos/tests/virtualbox.nix+1−1

This diff is too big to show here.

nixos/tests/vscodium.nix+35−66

This diff is too big to show here.

nixos/tests/vsftpd.nixdeleted−42

This diff is too big to show here.

nixos/tests/web-apps/mastodon.nixdeleted−170

This diff is too big to show here.

nixos/tests/web-apps/netbox.nixdeleted−30

This diff is too big to show here.

nixos/tests/web-apps/nifi.nixdeleted−30

This diff is too big to show here.

nixos/tests/web-apps/peertube.nix+2−6

This diff is too big to show here.

nixos/tests/web-servers/agate.nixdeleted−29

This diff is too big to show here.

nixos/tests/web-servers/unit-php.nix+1−1

This diff is too big to show here.

nixos/tests/wiki-js.nix+1−1

This diff is too big to show here.

nixos/tests/wine.nix+6−13

This diff is too big to show here.

nixos/tests/without-nix.nix+6−15

This diff is too big to show here.

nixos/tests/wmderland.nix+1−1

This diff is too big to show here.

nixos/tests/wordpress.nix+6−3

This diff is too big to show here.

nixos/tests/wpa_supplicant.nix+3−18

This diff is too big to show here.

nixos/tests/xfce.nix+2−1

This diff is too big to show here.

nixos/tests/xmonad-xdg-autostart.nixdeleted−35

This diff is too big to show here.

nixos/tests/xmonad.nix+17−84

This diff is too big to show here.

nixos/tests/xmpp/prosody-mysql.nix+33−65

This diff is too big to show here.

nixos/tests/xmpp/prosody.nix−1

This diff is too big to show here.

nixos/tests/xmpp/xmpp-sendmessage.nix+4−1

This diff is too big to show here.

nixos/tests/xterm.nix+1−1

This diff is too big to show here.

nixos/tests/xxh.nixdeleted−67

This diff is too big to show here.

nixos/tests/yabar.nix+1−1

This diff is too big to show here.

nixos/tests/zammad.nixdeleted−60

This diff is too big to show here.

nixos/tests/zfs.nix+1−51

This diff is too big to show here.

nixos/tests/zigbee2mqtt.nix+1−1

This diff is too big to show here.

nixos/tests/zoneminder.nix+1−1

This diff is too big to show here.

nixos/tests/zrepl.nixdeleted−66

This diff is too big to show here.

pkgs/applications/accessibility/contrast/default.nix+14−14

This diff is too big to show here.

pkgs/applications/accessibility/espeakup/default.nixdeleted−46

This diff is too big to show here.

pkgs/applications/accessibility/squeekboard/default.nix+15−8

This diff is too big to show here.

pkgs/applications/accessibility/svkbd/default.nix+2−2

This diff is too big to show here.

pkgs/applications/accessibility/wvkbd/default.nixdeleted−36

This diff is too big to show here.

pkgs/applications/audio/CHOWTapeModel/default.nix+32−40

This diff is too big to show here.

pkgs/applications/audio/ChowCentaur/default.nixdeleted−53

This diff is too big to show here.

pkgs/applications/audio/ChowKick/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/ChowPhaser/default.nixdeleted−76

This diff is too big to show here.

pkgs/applications/audio/LibreArp/default.nixdeleted−53

This diff is too big to show here.

pkgs/applications/audio/LibreArp/lv2.nixdeleted−53

This diff is too big to show here.

pkgs/applications/audio/airwave/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/aj-snapshot/default.nix+3−2

This diff is too big to show here.

pkgs/applications/audio/amberol/default.nixdeleted−75

This diff is too big to show here.

pkgs/applications/audio/ams/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/ardour/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/ashuffle/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/audacious/default.nix+4−6

This diff is too big to show here.

pkgs/applications/audio/audacity/default.nix+59−99

This diff is too big to show here.

pkgs/applications/audio/audio-recorder/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/aumix/default.nix−11

This diff is too big to show here.

pkgs/applications/audio/bespokesynth/default.nix+85−114

This diff is too big to show here.

pkgs/applications/audio/bitwig-studio/bitwig-studio2.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/blanket/default.nix+7−7

This diff is too big to show here.

pkgs/applications/audio/bucklespring/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/cadence/default.nix+38−48

This diff is too big to show here.

pkgs/applications/audio/callaudiod/default.nix+3−5

This diff is too big to show here.

pkgs/applications/audio/cantata/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/cardinal/default.nixdeleted−67

This diff is too big to show here.

pkgs/applications/audio/carla/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/caudec/default.nix+10−6

This diff is too big to show here.

pkgs/applications/audio/cider/default.nixdeleted−30

This diff is too big to show here.

pkgs/applications/audio/clementine/default.nix+10−3

This diff is too big to show here.

pkgs/applications/audio/clerk/default.nix+6−19

This diff is too big to show here.

pkgs/applications/audio/cmt/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/cmus/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/cmusfm/default.nix+10−16

This diff is too big to show here.

pkgs/applications/audio/cozy/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/csound/default.nix+4−4

This diff is too big to show here.

pkgs/applications/audio/cyanrip/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/deadbeef/default.nix+1

This diff is too big to show here.

pkgs/applications/audio/denemo/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/dfasma/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/dragonfly-reverb/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/easyeffects/default.nix+8−10

This diff is too big to show here.

pkgs/applications/audio/espeak-ng/default.nix−4

This diff is too big to show here.

pkgs/applications/audio/eteroj.lv2/default.nixnew file+23

This diff is too big to show here.

pkgs/applications/audio/faust/faust2.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/faust/faustlive.nix+12−9

This diff is too big to show here.

pkgs/applications/audio/faustPhysicalModeling/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/flac/default.nix+10−2

This diff is too big to show here.

pkgs/applications/audio/fluidsynth/default.nix+4−4

This diff is too big to show here.

pkgs/applications/audio/fomp/default.nix+4−4

This diff is too big to show here.

pkgs/applications/audio/foo-yc20/default.nixnew file+29

This diff is too big to show here.

pkgs/applications/audio/freac/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/freewheeling/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/friture/default.nix+12−3

This diff is too big to show here.

pkgs/applications/audio/ft2-clone/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/furnace/default.nixdeleted−100

This diff is too big to show here.

pkgs/applications/audio/game-music-emu/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/geonkick/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/gigedit/default.nix+3−20

This diff is too big to show here.

pkgs/applications/audio/gmu/default.nix+1−19

This diff is too big to show here.

pkgs/applications/audio/gnome-podcasts/default.nix+3−15

This diff is too big to show here.

pkgs/applications/audio/goattracker/default.nix+3−2

This diff is too big to show here.

pkgs/applications/audio/gpodder/default.nix+4−9

This diff is too big to show here.

pkgs/applications/audio/gpodder/disable-autoupdate.patch+29−8

This diff is too big to show here.

pkgs/applications/audio/greg/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/gspeech/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/gtklick/default.nixnew file+34

This diff is too big to show here.

pkgs/applications/audio/gtkpod/default.nix+4−5

This diff is too big to show here.

pkgs/applications/audio/guitarix/default.nix−2

This diff is too big to show here.

pkgs/applications/audio/helio-workstation/default.nix+5−5

This diff is too big to show here.

pkgs/applications/audio/helvum/default.nix+23−36

This diff is too big to show here.

pkgs/applications/audio/hivelytracker/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/hqplayer-desktop/default.nix−1

This diff is too big to show here.

pkgs/applications/audio/hybridreverb2/default.nix+10−45

This diff is too big to show here.

pkgs/applications/audio/hydrogen/0.nix+6−28

This diff is too big to show here.

pkgs/applications/audio/hydrogen/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/indicator-sound-switcher/default.nixdeleted−62

This diff is too big to show here.

pkgs/applications/audio/industrializer/default.nix+3−1

This diff is too big to show here.

pkgs/applications/audio/jacktrip/default.nixdeleted−61

This diff is too big to show here.

pkgs/applications/audio/jamesdsp/default.nixdeleted−95

This diff is too big to show here.

pkgs/applications/audio/jamin/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/jamulus/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/japa/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/jellycli/default.nixdeleted−33

This diff is too big to show here.

pkgs/applications/audio/jellycli/fix-test-dir.patchdeleted−13

This diff is too big to show here.

pkgs/applications/audio/jmusicbot/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/kid3/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/ladspa-plugins/default.nix+7−17

This diff is too big to show here.

pkgs/applications/audio/lastfmsubmitd/default.nixnew file+21

This diff is too big to show here.

pkgs/applications/audio/libopenmpt/default.nixnew file+32

This diff is too big to show here.

pkgs/applications/audio/librespot/default.nix+13−8

This diff is too big to show here.

pkgs/applications/audio/linuxband/default.nixnew file+37

This diff is too big to show here.

pkgs/applications/audio/lmms/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/lollypop/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/losslessaudiochecker/default.nixdeleted−29

This diff is too big to show here.

pkgs/applications/audio/lsp-plugins/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/lv2lint/default.nixdeleted−22

This diff is too big to show here.

pkgs/applications/audio/lyrebird/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/mbrola/default.nix−3

This diff is too big to show here.

pkgs/applications/audio/meters_lv2/default.nix+36−43

This diff is too big to show here.

pkgs/applications/audio/mi2ly/default.nix+25−16

This diff is too big to show here.

pkgs/applications/audio/mi2ly/default.upstreamnew file+3

This diff is too big to show here.

pkgs/applications/audio/mid2key/default.nix+4−7

This diff is too big to show here.

pkgs/applications/audio/midas/generic.nix+5−4

This diff is too big to show here.

pkgs/applications/audio/milkytracker/default.nix+2−8

This diff is too big to show here.

pkgs/applications/audio/mimms/default.nixnew file+31

This diff is too big to show here.

pkgs/applications/audio/miniaudicle/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/mixxx/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/moc/default.nix+3−5

This diff is too big to show here.

pkgs/applications/audio/mod-arpeggiator-lv2/default.nixdeleted−26

This diff is too big to show here.

pkgs/applications/audio/molot-lite/default.nix+4−5

This diff is too big to show here.

pkgs/applications/audio/mopidy/default.nix−4

This diff is too big to show here.

pkgs/applications/audio/mopidy/iris.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/mopidy/jellyfin.nixdeleted−25

This diff is too big to show here.

pkgs/applications/audio/mopidy/mopidy.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/mopidy/muse.nixdeleted−29

This diff is too big to show here.

pkgs/applications/audio/mopidy/youtube.nix+5−6

This diff is too big to show here.

pkgs/applications/audio/mopidy/ytmusic.nix+2−11

This diff is too big to show here.

pkgs/applications/audio/mp3blaster/default.nix+1−11

This diff is too big to show here.

pkgs/applications/audio/mpc/default.nix+13−41

This diff is too big to show here.

pkgs/applications/audio/mpg123/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/munt/default.nixnew file+50

This diff is too big to show here.

pkgs/applications/audio/munt/libmt32emu.nixdeleted−38

This diff is too big to show here.

pkgs/applications/audio/munt/mt32emu-qt.nixdeleted−75

This diff is too big to show here.

pkgs/applications/audio/munt/mt32emu-smf2wav.nixdeleted−50

This diff is too big to show here.

pkgs/applications/audio/musescore/darwin.nix+1

This diff is too big to show here.

pkgs/applications/audio/musescore/default.nix+5−4

This diff is too big to show here.

pkgs/applications/audio/musikcube/default.nix+4−19

This diff is too big to show here.

pkgs/applications/audio/ncmpc/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/ncspot/default.nix+7−7

This diff is too big to show here.

pkgs/applications/audio/netease-cloud-music-gtk/default.nix+1

This diff is too big to show here.

pkgs/applications/audio/netease-music-tui/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/new-session-manager/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/noise-repellent/default.nix+9−11

This diff is too big to show here.

pkgs/applications/audio/noisetorch/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/non/default.nix+7−7

This diff is too big to show here.

pkgs/applications/audio/ocenaudio/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/odin2/default.nixdeleted−79

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/eteroj.nixdeleted−10

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/generic.nixdeleted−37

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/jit.nixdeleted−12

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/mephisto.nixdeleted−17

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/midi_matrix.nixdeleted−10

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/moony.nixdeleted−13

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/orbit.nixdeleted−12

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/patchmatrix.nixdeleted−13

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/router.nixdeleted−11

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/sherlock.nixdeleted−12

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/synthpod.nixdeleted−13

This diff is too big to show here.

pkgs/applications/audio/open-music-kontrollers/vm.nixdeleted−10

This diff is too big to show here.

pkgs/applications/audio/orca-c/default.nix−3

This diff is too big to show here.

pkgs/applications/audio/osdlyrics/default.nixdeleted−87

This diff is too big to show here.

pkgs/applications/audio/padthv1/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/pamix/default.nix+1−15

This diff is too big to show here.

pkgs/applications/audio/paprefs/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/parlatype/default.nixnew file+68

This diff is too big to show here.

pkgs/applications/audio/patchage/default.nix+11−33

This diff is too big to show here.

pkgs/applications/audio/pd-plugins/zexy/default.nix+1−2

This diff is too big to show here.

pkgs/applications/audio/pianobar/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/picard/default.nix+2−5

This diff is too big to show here.

pkgs/applications/audio/pifi/Gemfilenew file+2

This diff is too big to show here.

pkgs/applications/audio/pifi/Gemfile.locknew file+39

This diff is too big to show here.

pkgs/applications/audio/pifi/default.nixnew file+18

This diff is too big to show here.

pkgs/applications/audio/pifi/gemset.nixnew file+137

This diff is too big to show here.

pkgs/applications/audio/pipecontrol/default.nixdeleted−50

This diff is too big to show here.

pkgs/applications/audio/pithos/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/plexamp/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/plujain-ramp/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/praat/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/psst/default.nixdeleted−39

This diff is too big to show here.

pkgs/applications/audio/pt2-clone/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/ptcollab/default.nix+4−13

This diff is too big to show here.

pkgs/applications/audio/puddletag/default.nix+9−46

This diff is too big to show here.

pkgs/applications/audio/pulseaudio-ctl/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/pulseaudio-dlna/0001-setup.py-remove-dbus-python-from-list.patchdeleted−25

This diff is too big to show here.

pkgs/applications/audio/pulseaudio-dlna/default.nix+33−54

This diff is too big to show here.

pkgs/applications/audio/pulseaudio-modules-bt/default.nixnew file+91

This diff is too big to show here.

pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patchnew file+11

This diff is too big to show here.

pkgs/applications/audio/pyradio/default.nix+3−9

This diff is too big to show here.

pkgs/applications/audio/qjackctl/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/qmidiarp/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/qmmp/default.nix+1

This diff is too big to show here.

pkgs/applications/audio/qpwgraph/default.nixdeleted−34

This diff is too big to show here.

pkgs/applications/audio/qtractor/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/r128gain/default.nix+8−2

This diff is too big to show here.

pkgs/applications/audio/reaper/default.nix+4−4

This diff is too big to show here.

pkgs/applications/audio/redux/default.nixdeleted−49

This diff is too big to show here.

pkgs/applications/audio/rhvoice/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/rhythmbox/default.nix−10

This diff is too big to show here.

pkgs/applications/audio/rofi-pulse-select/default.nixdeleted−40

This diff is too big to show here.

pkgs/applications/audio/roomeqwizard/default.nixdeleted−118

This diff is too big to show here.

pkgs/applications/audio/rubyripper/default.nix+11−23

This diff is too big to show here.

pkgs/applications/audio/schismtracker/default.nix+4−6

This diff is too big to show here.

pkgs/applications/audio/scream/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/setbfree/default.nix+5−7

This diff is too big to show here.

pkgs/applications/audio/sfizz/default.nix+12−15

This diff is too big to show here.

pkgs/applications/audio/sfxr-qt/default.nix+3−29

This diff is too big to show here.

pkgs/applications/audio/sfxr-qt/test-export-square-wave/default.nixdeleted−6

This diff is too big to show here.

pkgs/applications/audio/sfxr-qt/test-export-square-wave/input.sfxjdeleted−29

This diff is too big to show here.

pkgs/applications/audio/shortwave/default.nix+11−9

This diff is too big to show here.

pkgs/applications/audio/sidplayfp/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/sisco.lv2/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/snapcast/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/snd/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/songrec/default.nix+4−5

This diff is too big to show here.

pkgs/applications/audio/sonic-pi/default.nix+41−59

This diff is too big to show here.

pkgs/applications/audio/sonixd/default.nixdeleted−27

This diff is too big to show here.

pkgs/applications/audio/sony-headphones-client/default.nixdeleted−44

This diff is too big to show here.

pkgs/applications/audio/sorcer/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/sound-juicer/default.nix−10

This diff is too big to show here.

pkgs/applications/audio/soundconverter/default.nixdeleted−85

This diff is too big to show here.

pkgs/applications/audio/soundkonverter/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/soundscape-renderer/default.nix+11−13

This diff is too big to show here.

pkgs/applications/audio/soundwireserver/default.nixdeleted−40

This diff is too big to show here.

pkgs/applications/audio/spectmorph/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/split2flac/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/spot/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/spotify-qt/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/spotify-tui/default.nix−1

This diff is too big to show here.

pkgs/applications/audio/spotify/default.nix+5−5

This diff is too big to show here.

pkgs/applications/audio/spotifyd/default.nix+9−10

This diff is too big to show here.

pkgs/applications/audio/sptlrx/default.nixdeleted−24

This diff is too big to show here.

pkgs/applications/audio/squeezelite/default.nix+30−48

This diff is too big to show here.

pkgs/applications/audio/squishyball/default.nix+11−21

This diff is too big to show here.

pkgs/applications/audio/strawberry/default.nix+2−6

This diff is too big to show here.

pkgs/applications/audio/sunvox/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/surge-XT/default.nix+11−71

This diff is too big to show here.

pkgs/applications/audio/swh-lv2/default.nix+4−6

This diff is too big to show here.

pkgs/applications/audio/synaesthesia/default.nixdeleted−33

This diff is too big to show here.

pkgs/applications/audio/tauon/default.nix+5−17

This diff is too big to show here.

pkgs/applications/audio/tenacity/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/termusic/default.nixdeleted−28

This diff is too big to show here.

pkgs/applications/audio/timemachine/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/tonelib-gfx/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/tonelib-jam/default.nix+3−3

This diff is too big to show here.

pkgs/applications/audio/tonelib-metal/default.nixdeleted−60

This diff is too big to show here.

pkgs/applications/audio/transcribe/default.nix+13−50

This diff is too big to show here.

pkgs/applications/audio/vgmstream/default.nix+12−21

This diff is too big to show here.

pkgs/applications/audio/vgmstream/update.shdeleted−77

This diff is too big to show here.

pkgs/applications/audio/vimpc/default.nix−11

This diff is too big to show here.

pkgs/applications/audio/viper4linux-gui/default.nixdeleted−82

This diff is too big to show here.

pkgs/applications/audio/viper4linux/default.nixdeleted−61

This diff is too big to show here.

pkgs/applications/audio/vmpk/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/vocal/default.nix+1−7

This diff is too big to show here.

pkgs/applications/audio/wavegain/default.nix+1−12

This diff is too big to show here.

pkgs/applications/audio/whipper/default.nix−8

This diff is too big to show here.

pkgs/applications/audio/x42-plugins/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/xsynth-dssi/default.nix+1−2

This diff is too big to show here.

pkgs/applications/audio/yoshimi/default.nix+18−49

This diff is too big to show here.

pkgs/applications/audio/zrythm/default.nix+15−20

This diff is too big to show here.

pkgs/applications/audio/zynaddsubfx/default.nix−13

This diff is too big to show here.

pkgs/applications/backup/deja-dup/default.nix+10−10

This diff is too big to show here.

pkgs/applications/backup/deja-dup/fix-paths.patch+3−3

This diff is too big to show here.

pkgs/applications/backup/pika-backup/default.nix−9

This diff is too big to show here.

pkgs/applications/backup/vorta/default.nix+3−2

This diff is too big to show here.

pkgs/applications/blockchains/aeon/default.nix+2−2

This diff is too big to show here.

pkgs/applications/blockchains/alfis/default.nix+12−23

This diff is too big to show here.

pkgs/applications/blockchains/besu/default.nixdeleted−29

This diff is too big to show here.

pkgs/applications/blockchains/bisq-desktop/default.nix+5−4

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-classic/default.nix+1−1

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-knots/default.nix+27−69

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-unlimited/default.nix+1−1

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin/default.nix+4−4

This diff is too big to show here.

pkgs/applications/blockchains/btcpayserver/default.nix+12−6

This diff is too big to show here.

pkgs/applications/blockchains/btcpayserver/deps.nix+684−649

This diff is too big to show here.

pkgs/applications/blockchains/cgminer/default.nix+2−2

This diff is too big to show here.

pkgs/applications/blockchains/chia-plotter/default.nix+8−15

This diff is too big to show here.

pkgs/applications/blockchains/chia-plotter/dont_fetch_dependencies.patch+11−24

This diff is too big to show here.

pkgs/applications/blockchains/chia/default.nix+3−7

This diff is too big to show here.

pkgs/applications/blockchains/clightning/default.nix+9−17

This diff is too big to show here.

pkgs/applications/blockchains/crypto-org-wallet/default.nix+1−1

This diff is too big to show here.

pkgs/applications/blockchains/dashpay/default.nix+1−1

This diff is too big to show here.

pkgs/applications/blockchains/dero/default.nixnew file+25

This diff is too big to show here.

pkgs/applications/blockchains/dogecoin/default.nix+3−3

This diff is too big to show here.

pkgs/applications/blockchains/electrs/default.nix+3−3

This diff is too big to show here.

pkgs/applications/blockchains/elements/default.nix+5−7

This diff is too big to show here.

pkgs/applications/blockchains/ergo/default.nix+2−2

This diff is too big to show here.

pkgs/applications/blockchains/erigon.nix+4−4

This diff is too big to show here.

pkgs/applications/blockchains/exodus/default.nix+2−2

This diff is too big to show here.

pkgs/applications/blockchains/fulcrum/default.nixdeleted−36

This diff is too big to show here.

pkgs/applications/blockchains/go-ethereum/default.nix+5−6

This diff is too big to show here.

pkgs/applications/blockchains/groestlcoin/default.nixdeleted−93

This diff is too big to show here.

pkgs/applications/blockchains/ledger-live-desktop/default.nix+2−2

This diff is too big to show here.

pkgs/applications/blockchains/lightning-loop/default.nix+3−3

This diff is too big to show here.

pkgs/applications/blockchains/lightning-pool/default.nix+3−3

This diff is too big to show here.

pkgs/applications/blockchains/lightwalletd/default.nix+2−2

This diff is too big to show here.

pkgs/applications/blockchains/litecoin/default.nix+2−1

This diff is too big to show here.

pkgs/applications/blockchains/lnd/default.nix+4−4

This diff is too big to show here.

pkgs/applications/blockchains/lndmanage/default.nix+2−2

This diff is too big to show here.

pkgs/applications/blockchains/monero-cli/default.nixdeleted−60

This diff is too big to show here.

pkgs/applications/blockchains/monero-cli/use-system-libraries.patchdeleted−52

This diff is too big to show here.

pkgs/applications/blockchains/monero-gui/default.nix+7−7

This diff is too big to show here.

pkgs/applications/blockchains/monero/default.nixnew file+60

This diff is too big to show here.

pkgs/applications/blockchains/monero/use-system-libraries.patchnew file+69

This diff is too big to show here.

pkgs/applications/blockchains/mycrypto/default.nix+1−1

This diff is too big to show here.

pkgs/applications/blockchains/namecoin/default.nix+7−6

This diff is too big to show here.

pkgs/applications/blockchains/nbxplorer/default.nix+5−5

This diff is too big to show here.

pkgs/applications/blockchains/nbxplorer/deps.nix+221−241

This diff is too big to show here.

pkgs/applications/blockchains/nbxplorer/util/create-deps.sh+2−2

This diff is too big to show here.

pkgs/applications/blockchains/nbxplorer/util/update-common.sh+3−3

This diff is too big to show here.

pkgs/applications/blockchains/nearcore/default.nixdeleted−42

This diff is too big to show here.

pkgs/applications/blockchains/openethereum/default.nix+4−4

This diff is too big to show here.

pkgs/applications/blockchains/oxen/default.nix+3−4

This diff is too big to show here.

pkgs/applications/blockchains/parity-ui/default.nixnew file+48

This diff is too big to show here.

pkgs/applications/blockchains/parity-ui/env.nixnew file+19

This diff is too big to show here.

pkgs/applications/blockchains/particl-core/default.nix+6−9

This diff is too big to show here.

pkgs/applications/blockchains/pivx/default.nix+1−1

This diff is too big to show here.

pkgs/applications/blockchains/polkadot/default.nix+4−27

This diff is too big to show here.

pkgs/applications/blockchains/snarkos/default.nixdeleted−61

This diff is too big to show here.

pkgs/applications/blockchains/solana/default.nixdeleted−61

This diff is too big to show here.

pkgs/applications/blockchains/solana/pin.jsondeleted−5

This diff is too big to show here.

pkgs/applications/blockchains/solana/update.shdeleted−33

This diff is too big to show here.

pkgs/applications/blockchains/stellar-core/default.nix+3−7

This diff is too big to show here.

pkgs/applications/blockchains/trezor-suite/default.nix+3−3

This diff is too big to show here.

pkgs/applications/blockchains/wasabibackend/create_deps.shnew file+98

This diff is too big to show here.

pkgs/applications/blockchains/wasabibackend/default.nix+72−22

This diff is too big to show here.

pkgs/applications/blockchains/wasabibackend/deps.nix+955−202

This diff is too big to show here.

pkgs/applications/blockchains/wasabiwallet/default.nix+1−1

This diff is too big to show here.

pkgs/applications/blockchains/whirlpool-gui/default.nixnew file+104

This diff is too big to show here.

pkgs/applications/blockchains/wownero/default.nix+16−17

This diff is too big to show here.

pkgs/applications/blockchains/zcash/default.nix+6−6

This diff is too big to show here.

pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix+7−8

This diff is too big to show here.

pkgs/applications/editors/android-studio/common.nix+9−13

This diff is too big to show here.

pkgs/applications/editors/android-studio/default.nix+7−8

This diff is too big to show here.

pkgs/applications/editors/apostrophe/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/bless/default.nix+6−12

This diff is too big to show here.

pkgs/applications/editors/bluefish/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/bluej/default.nix+10−37

This diff is too big to show here.

pkgs/applications/editors/bonzomatic/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/bviplus/default.nix+1−13

This diff is too big to show here.

pkgs/applications/editors/code-browser/default.nix+20−31

This diff is too big to show here.

pkgs/applications/editors/cpeditor/default.nixdeleted−40

This diff is too big to show here.

pkgs/applications/editors/cudatext/default.nix+2−4

This diff is too big to show here.

pkgs/applications/editors/cudatext/deps.json+16−16

This diff is too big to show here.

pkgs/applications/editors/cudatext/update.shdeleted−23

This diff is too big to show here.

pkgs/applications/editors/deadpixi-sam/default.nix+7−9

This diff is too big to show here.

pkgs/applications/editors/eclipse/build-eclipse.nix+5−5

This diff is too big to show here.

pkgs/applications/editors/eclipse/default.nix+14−18

This diff is too big to show here.

pkgs/applications/editors/eclipse/plugins.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/ed/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/em/default.nixdeleted−29

This diff is too big to show here.

pkgs/applications/editors/emacs/27.nixnew file+12

This diff is too big to show here.

pkgs/applications/editors/emacs/28.nixdeleted−5

This diff is too big to show here.

pkgs/applications/editors/emacs/at-fdcwd.patchnew file+15

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix+4−8

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/bqn-mode/default.nix+4−4

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/cedet/default.nixnew file+52

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/control-lock/default.nixdeleted−23

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/ebuild-mode/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/elpa-generated.nix+211−609

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix+9−12

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/emacs2nix.nix+3−4

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix+1−2

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/ement/default.nix+3−11

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/ess-R-object-popup/default.nix−7

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/header-file-mode/default.nixdeleted−30

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/libgenerated.nix+1−4

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix+3−34

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix+2−47

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/nongnu-generated.nix+62−1177

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix+1−2

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/org-generated.nixnew file+33

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/org-packages.nixnew file+33

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/plz/default.nix+4−12

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/prolog/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/railgun/default.nixnew file+25

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json+6119−8716

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tramp/default.nixnew file+29

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default-grammars.jsondeleted−32

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nixdeleted−44

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/update-defaults.pydeleted−74

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tsc/default.nixdeleted−89

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tsc/src.jsondeleted−10

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tsc/update.pydeleted−122

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/updatedeleted−10

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/update-from-overlay+4

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/update-manualdeleted−7

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/update-manual.nixdeleted−11

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/update-orgnew file+4

This diff is too big to show here.

pkgs/applications/editors/emacs/generic.nix+7−33

This diff is too big to show here.

pkgs/applications/editors/emacs/macport.nix+4−5

This diff is too big to show here.

pkgs/applications/editors/emacs/tramp-detect-wrapped-gvfsd-26.patchnew file+14

This diff is too big to show here.

pkgs/applications/editors/emacs/tramp-detect-wrapped-gvfsd.patchnew file+11

This diff is too big to show here.

pkgs/applications/editors/featherpad/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/ghostwriter/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/gnome-builder/default.nix+10−10

This diff is too big to show here.

pkgs/applications/editors/gobby/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/gophernotes/default.nix+3−3

This diff is too big to show here.

pkgs/applications/editors/helix/default.nix+10−13

This diff is too big to show here.

pkgs/applications/editors/heme/default.nixnew file+29

This diff is too big to show here.

pkgs/applications/editors/hexdino/default.nix+6−6

This diff is too big to show here.

pkgs/applications/editors/jetbrains/common.nixnew file+97

This diff is too big to show here.

pkgs/applications/editors/jetbrains/darwin.nixdeleted−36

This diff is too big to show here.

pkgs/applications/editors/jetbrains/default.nix+113−130

This diff is too big to show here.

pkgs/applications/editors/jetbrains/linux.nixdeleted−93

This diff is too big to show here.

pkgs/applications/editors/jetbrains/update.plnew file+101

This diff is too big to show here.

pkgs/applications/editors/jetbrains/update.pydeleted−100

This diff is too big to show here.

pkgs/applications/editors/jetbrains/versions.jsondeleted−296

This diff is too big to show here.

pkgs/applications/editors/jove/default.nix+1−2

This diff is too big to show here.

pkgs/applications/editors/jucipp/default.nix+4−3

This diff is too big to show here.

pkgs/applications/editors/jupyter-kernels/octave/default.nix+1−2

This diff is too big to show here.

pkgs/applications/editors/jupyter-kernels/octave/kernel.nix+6−4

This diff is too big to show here.

pkgs/applications/editors/jupyter-kernels/wolfram/default.nixdeleted−22

This diff is too big to show here.

pkgs/applications/editors/jupyter-kernels/wolfram/kernel.nixdeleted−32

This diff is too big to show here.

pkgs/applications/editors/kakoune/default.nix−1

This diff is too big to show here.

pkgs/applications/editors/kakoune/plugins/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/kakoune/plugins/kakoune-plugin-names+19−20

This diff is too big to show here.

pkgs/applications/editors/kakoune/plugins/update.py+2−2

This diff is too big to show here.

pkgs/applications/editors/kdevelop5/kdev-php.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/kdevelop5/kdev-python.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/kodestudio/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/lapce/default.nixdeleted−99

This diff is too big to show here.

pkgs/applications/editors/leo-editor/default.nix+7−5

This diff is too big to show here.

pkgs/applications/editors/libresprite/default.nixdeleted−111

This diff is too big to show here.

pkgs/applications/editors/lifeograph/default.nixdeleted−40

This diff is too big to show here.

pkgs/applications/editors/lite-xl/0001-replace-unpack-with-table-unpack.patchdeleted−91

This diff is too big to show here.

pkgs/applications/editors/lite-xl/default.nixdeleted−52

This diff is too big to show here.

pkgs/applications/editors/manuskript/default.nix+3−3

This diff is too big to show here.

pkgs/applications/editors/marker/default.nix+3−6

This diff is too big to show here.

pkgs/applications/editors/mg/default.nix+2−6

This diff is too big to show here.

pkgs/applications/editors/micro/default.nix+1−3

This diff is too big to show here.

pkgs/applications/editors/micro/test-with-expect.nixdeleted−30

This diff is too big to show here.

pkgs/applications/editors/mle/default.nix+1−11

This diff is too big to show here.

pkgs/applications/editors/moe/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/monodevelop/default.nixnew file+81

This diff is too big to show here.

pkgs/applications/editors/monodevelop/git-revert-12d610fb3f6dce121df538e36f21d8c2eeb0a6e3.patchnew file+57

This diff is too big to show here.

pkgs/applications/editors/music/tuxguitar/default.nix+3−3

This diff is too big to show here.

pkgs/applications/editors/nano/default.nix+4−6

This diff is too big to show here.

pkgs/applications/editors/nano/test-with-expect.nixdeleted−35

This diff is too big to show here.

pkgs/applications/editors/ne/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/neovim/default.nix+17−13

This diff is too big to show here.

pkgs/applications/editors/neovim/neovide/default.nix+8−10

This diff is too big to show here.

pkgs/applications/editors/neovim/neovide/skia-externals.json+6−6

This diff is too big to show here.

pkgs/applications/editors/neovim/neovim-remote.nix+3−2

This diff is too big to show here.

pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock+2−2

This diff is too big to show here.

pkgs/applications/editors/neovim/ruby_provider/gemset.nix+5−5

This diff is too big to show here.

pkgs/applications/editors/neovim/utils.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/neovim/wrapper.nix+2−3

This diff is too big to show here.

pkgs/applications/editors/netbeans/default.nix+5−5

This diff is too big to show here.

pkgs/applications/editors/nvi/default.nix−1

This diff is too big to show here.

pkgs/applications/editors/nvpy/default.nix+7−11

This diff is too big to show here.

pkgs/applications/editors/oed/default.nix−9

This diff is too big to show here.

pkgs/applications/editors/okteta/default.nix+2−4

This diff is too big to show here.

pkgs/applications/editors/oni2/common.nix+1

This diff is too big to show here.

pkgs/applications/editors/pinegrow/default.nixdeleted−80

This diff is too big to show here.

pkgs/applications/editors/poke/default.nix+3−28

This diff is too big to show here.

pkgs/applications/editors/quartus-prime/default.nix+1−2

This diff is too big to show here.

pkgs/applications/editors/qxmledit/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/rednotebook/default.nix+3−4

This diff is too big to show here.

pkgs/applications/editors/rehex/default.nix+8−14

This diff is too big to show here.

pkgs/applications/editors/retext/default.nix+16−37

This diff is too big to show here.

pkgs/applications/editors/rstudio/default.nix+141−171

This diff is too big to show here.

pkgs/applications/editors/setzer/default.nix+2−3

This diff is too big to show here.

pkgs/applications/editors/sigil/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/spacevim/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/standardnotes/default.nix+8−9

This diff is too big to show here.

pkgs/applications/editors/sublime/2/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/sublime/3/common.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/sublime/4/common.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/sublime/4/packages.nix+6−6

This diff is too big to show here.

pkgs/applications/editors/texmaker/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/texstudio/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/texworks/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/thonny/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/tiled/default.nix+4−4

This diff is too big to show here.

pkgs/applications/editors/vim/common.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/vim/configurable.nix+34−7

This diff is too big to show here.

pkgs/applications/editors/vim/macvim.nix+3−3

This diff is too big to show here.

pkgs/applications/editors/vim/macvim.patch+34−32

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/aliases.nixdeleted−143

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/default.nixdeleted−52

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/overrides.nixdeleted−1160

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/patches/sniprun/fix-paths.patchdeleted−36

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/update-shell.nixdeleted−16

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/update.pydeleted−128

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/vim-command-check-hook.shdeleted−25

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/vim-plugin-namesdeleted−1014

This diff is too big to show here.

pkgs/applications/editors/vis/default.nix+8−4

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/cpptools/default.nixdeleted−111

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/default.nixdeleted−2348

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/language-packs.nixdeleted−89

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/ms-dotnettools-csharp/default.nixdeleted−152

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/ms-dotnettools-csharp/rt-deps-bin-srcs.jsondeleted−94

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/ms-vsliveshare-vsliveshare/default.nixdeleted−133

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/python/default.nixdeleted−128

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/remote-ssh/default.nixdeleted−54

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/rust-analyzer/build-deps/package.jsondeleted−19

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/rust-analyzer/default.nixdeleted−88

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/rust-analyzer/update.shdeleted−49

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/terraform/default.nixdeleted−20

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/vscode-lldb/default.nixdeleted−104

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/vscode-lldb/update.shdeleted−46

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/wakatime/default.nixdeleted−22

This diff is too big to show here.

pkgs/applications/editors/vscode/generic.nix+32−32

This diff is too big to show here.

pkgs/applications/editors/vscode/update-shell.nixdeleted−18

This diff is too big to show here.

pkgs/applications/editors/vscode/update-vscode.sh+2−2

This diff is too big to show here.

pkgs/applications/editors/vscode/update-vscodium.sh+14−18

This diff is too big to show here.

pkgs/applications/editors/vscode/vscode.nix+7−7

This diff is too big to show here.

pkgs/applications/editors/vscode/vscodium.nix+14−11

This diff is too big to show here.

pkgs/applications/editors/wxhexeditor/default.nix+2−3

This diff is too big to show here.

pkgs/applications/editors/xed-editor/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/xedit/default.nixdeleted−45

This diff is too big to show here.

pkgs/applications/editors/xxe-pe/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/your-editor/default.nix+5−6

This diff is too big to show here.

pkgs/applications/emulators/attract-mode/default.nixdeleted−33

This diff is too big to show here.

pkgs/applications/emulators/basiliskii/default.nixdeleted−28

This diff is too big to show here.

pkgs/applications/emulators/basiliskii/remove-redhat-6-workaround-for-scsi-sg.h.patchdeleted−10

This diff is too big to show here.

pkgs/applications/emulators/bsnes/ares/default.nixdeleted−84

This diff is too big to show here.

pkgs/applications/emulators/bsnes/ares/fix-ruby.patchdeleted−27

This diff is too big to show here.

pkgs/applications/emulators/bsnes/higan/default.nixdeleted−155

This diff is too big to show here.

pkgs/applications/emulators/ccemux/default.nixdeleted−67

This diff is too big to show here.

pkgs/applications/emulators/cdemu/base.nixdeleted−36

This diff is too big to show here.

pkgs/applications/emulators/cdemu/client.nixdeleted−16

This diff is too big to show here.

pkgs/applications/emulators/cdemu/daemon.nixdeleted−9

This diff is too big to show here.

pkgs/applications/emulators/cdemu/vhba.nixdeleted−22

This diff is too big to show here.

pkgs/applications/emulators/citra/default.nixdeleted−91

This diff is too big to show here.

pkgs/applications/emulators/collapseos-cvm/default.nixdeleted−30

This diff is too big to show here.

pkgs/applications/emulators/commanderx16/emulator.nixdeleted−44

This diff is too big to show here.

pkgs/applications/emulators/commanderx16/rom.nixdeleted−52

This diff is too big to show here.

pkgs/applications/emulators/dolphin-emu/primehack.nixdeleted−151

This diff is too big to show here.

pkgs/applications/emulators/dosbox-staging/default.nixdeleted−112

This diff is too big to show here.

pkgs/applications/emulators/dosbox/default.nixdeleted−75

This diff is too big to show here.

pkgs/applications/emulators/duckstation/default.nixdeleted−106

This diff is too big to show here.

pkgs/applications/emulators/dynamips/default.nixdeleted−36

This diff is too big to show here.

pkgs/applications/emulators/fceux/default.nixdeleted−24

This diff is too big to show here.

pkgs/applications/emulators/flycast/default.nixdeleted−52

This diff is too big to show here.

pkgs/applications/emulators/fs-uae/default.nixdeleted−65

This diff is too big to show here.

pkgs/applications/emulators/fs-uae/launcher.nixdeleted−43

This diff is too big to show here.

pkgs/applications/emulators/goldberg-emu/default.nixdeleted−52

This diff is too big to show here.

pkgs/applications/emulators/goldberg-emu/dont-install-unsupported.patchdeleted−34

This diff is too big to show here.

pkgs/applications/emulators/hercules/default.nixdeleted−27

This diff is too big to show here.

pkgs/applications/emulators/libdsk/default.nixdeleted−19

This diff is too big to show here.

pkgs/applications/emulators/mame/0001-Revert-Added-PDF-documentation-to-dist.mak.patchdeleted−37

This diff is too big to show here.

pkgs/applications/emulators/mame/default.nixdeleted−155

This diff is too big to show here.

pkgs/applications/emulators/mednafen/default.nixdeleted−98

This diff is too big to show here.

pkgs/applications/emulators/mednaffe/default.nixdeleted−41

This diff is too big to show here.

pkgs/applications/emulators/melonDS/default.nixdeleted−43

This diff is too big to show here.

pkgs/applications/emulators/mgba/default.nixdeleted−87

This diff is too big to show here.

pkgs/applications/emulators/nestopia/default.nixdeleted−72

This diff is too big to show here.

pkgs/applications/emulators/pcsx2/default.nixdeleted−93

This diff is too big to show here.

pkgs/applications/emulators/ppsspp/default.nixdeleted−72

This diff is too big to show here.

pkgs/applications/emulators/proton-caller/default.nixdeleted−24

This diff is too big to show here.

pkgs/applications/emulators/punes/default.nixdeleted−64

This diff is too big to show here.

pkgs/applications/emulators/resim/default.nixdeleted−21

This diff is too big to show here.

pkgs/applications/emulators/retroarch/cores.nixdeleted−892

This diff is too big to show here.

pkgs/applications/emulators/retroarch/default.nixdeleted−139

This diff is too big to show here.

pkgs/applications/emulators/retroarch/disable-menu_show_core_updater.patchdeleted−25

This diff is too big to show here.

pkgs/applications/emulators/retroarch/fix-config.patchdeleted−26

This diff is too big to show here.

pkgs/applications/emulators/retroarch/fix-libretro-paths.patchdeleted−28

This diff is too big to show here.

pkgs/applications/emulators/retroarch/hashes.jsondeleted−488

This diff is too big to show here.

pkgs/applications/emulators/retroarch/update_cores.pydeleted−173

This diff is too big to show here.

pkgs/applications/emulators/retroarch/use-fixed-paths-on-libretro_info_path.patchdeleted−84

This diff is too big to show here.

pkgs/applications/emulators/retroarch/wrapper.nixdeleted−41

This diff is too big to show here.

pkgs/applications/emulators/retrofe/default.nixdeleted−78

This diff is too big to show here.

pkgs/applications/emulators/ripes/default.nixdeleted−50

This diff is too big to show here.

pkgs/applications/emulators/rpcs3/0001-llvm-ExecutionEngine-IntelJITEvents-only-use-ITTAPI_.patchdeleted−62

This diff is too big to show here.

pkgs/applications/emulators/rpcs3/default.nixdeleted−80

This diff is too big to show here.

pkgs/applications/emulators/rpcs3/update.shdeleted−59

This diff is too big to show here.

pkgs/applications/emulators/ruffle/default.nixdeleted−60

This diff is too big to show here.

pkgs/applications/emulators/ryujinx/appdir.patchdeleted−23

This diff is too big to show here.

pkgs/applications/emulators/ryujinx/default.nixdeleted−108

This diff is too big to show here.

pkgs/applications/emulators/ryujinx/deps.nixdeleted−227

This diff is too big to show here.

pkgs/applications/emulators/ryujinx/updater.shdeleted−86

This diff is too big to show here.

pkgs/applications/emulators/sameboy/default.nixdeleted−48

This diff is too big to show here.

pkgs/applications/emulators/snes9x/default.nixdeleted−130

This diff is too big to show here.

pkgs/applications/emulators/stella/default.nixdeleted−45

This diff is too big to show here.

pkgs/applications/emulators/tiny8086/default.nixdeleted−68

This diff is too big to show here.

pkgs/applications/emulators/tinyemu/default.nixdeleted−46

This diff is too big to show here.

pkgs/applications/emulators/uae/default.nixdeleted−27

This diff is too big to show here.

pkgs/applications/emulators/vice/default.nixdeleted−187

This diff is too big to show here.

pkgs/applications/emulators/wine/base.nixdeleted−199

This diff is too big to show here.

pkgs/applications/emulators/wine/cert-path.patchdeleted−15

This diff is too big to show here.

pkgs/applications/emulators/wine/darwin-metal-compat.patchdeleted−31

This diff is too big to show here.

pkgs/applications/emulators/wine/default.nixdeleted−67

This diff is too big to show here.

pkgs/applications/emulators/wine/packages.nixdeleted−44

This diff is too big to show here.

pkgs/applications/emulators/wine/setup-hook-darwin.shdeleted−37

This diff is too big to show here.

pkgs/applications/emulators/wine/sources.nixdeleted−93

This diff is too big to show here.

pkgs/applications/emulators/wine/vkd3d.nixdeleted−28

This diff is too big to show here.

pkgs/applications/emulators/yuzu/compatibility-list.jsondeleted−1

This diff is too big to show here.

pkgs/applications/emulators/yuzu/default.nixdeleted−40

This diff is too big to show here.

pkgs/applications/emulators/yuzu/generic.nixdeleted−157

This diff is too big to show here.

pkgs/applications/emulators/yuzu/update.shdeleted−102

This diff is too big to show here.

pkgs/applications/emulators/zesarux/default.nixdeleted−97

This diff is too big to show here.

pkgs/applications/emulators/zsnes/default.nixdeleted−64

This diff is too big to show here.

pkgs/applications/finance/cryptowatch/default.nixdeleted−57

This diff is too big to show here.

pkgs/applications/finance/irpf/default.nixdeleted−73

This diff is too big to show here.

pkgs/applications/finance/odoo/default.nix+4−10

This diff is too big to show here.

pkgs/applications/gis/gmt/dcw.nix+2−2

This diff is too big to show here.

pkgs/applications/gis/gmt/default.nix+2−2

This diff is too big to show here.

pkgs/applications/gis/grass/default.nix+44−32

This diff is too big to show here.

pkgs/applications/gis/qgis/default.nix+4−10

This diff is too big to show here.

pkgs/applications/gis/qgis/ltr.nixdeleted−32

This diff is too big to show here.

pkgs/applications/gis/qgis/unwrapped-ltr.nixdeleted−153

This diff is too big to show here.

pkgs/applications/gis/qgis/unwrapped.nix+19−36

This diff is too big to show here.

pkgs/applications/gis/qmapshack/default.nix+2−2

This diff is too big to show here.

pkgs/applications/gis/whitebox-tools/default.nix+4−8

This diff is too big to show here.

pkgs/applications/gis/whitebox-tools/update-cargo-lock.patchdeleted−578

This diff is too big to show here.

pkgs/applications/gis/zombietrackergps/default.nix+5−15

This diff is too big to show here.

pkgs/applications/graphics/ImageMagick/6.x.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/ImageMagick/7.0.nix+21−55

This diff is too big to show here.

pkgs/applications/graphics/antimony/default.nix+7−3

This diff is too big to show here.

pkgs/applications/graphics/apitrace/default.nix−6

This diff is too big to show here.

pkgs/applications/graphics/apitrace/glibc-2.34-compat.patchdeleted−13

This diff is too big to show here.

pkgs/applications/graphics/ascii-image-converter/default.nixdeleted−22

This diff is too big to show here.

pkgs/applications/graphics/avocode/default.nix+3−3

This diff is too big to show here.

pkgs/applications/graphics/awesomebump/default.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/azpainter/default.nix+11−20

This diff is too big to show here.

pkgs/applications/graphics/blockbench-electron/default.nix+4−4

This diff is too big to show here.

pkgs/applications/graphics/c3d/default.nix+6−8

This diff is too big to show here.

pkgs/applications/graphics/cloudcompare/default.nix+12−47

This diff is too big to show here.

pkgs/applications/graphics/cq-editor/default.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/darktable/default.nix+29−117

This diff is too big to show here.

pkgs/applications/graphics/deskew/default.nix+9−11

This diff is too big to show here.

pkgs/applications/graphics/digikam/default.nix+4−15

This diff is too big to show here.

pkgs/applications/graphics/displaycal/default.nixnew file+72

This diff is too big to show here.

pkgs/applications/graphics/drawing/default.nix+2−15

This diff is too big to show here.

pkgs/applications/graphics/drawio/default.nix+2−8

This diff is too big to show here.

pkgs/applications/graphics/evilpixie/default.nix+4−4

This diff is too big to show here.

pkgs/applications/graphics/exrtools/default.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/f3d/default.nix+7−6

This diff is too big to show here.

pkgs/applications/graphics/fbida/default.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/feh/default.nix+9−9

This diff is too big to show here.

pkgs/applications/graphics/fig2dev/default.nix+1−3

This diff is too big to show here.

pkgs/applications/graphics/fiji/default.nix+9−4

This diff is too big to show here.

pkgs/applications/graphics/fluxus/default.nix+2−3

This diff is too big to show here.

pkgs/applications/graphics/foxotron/default.nix+3−3

This diff is too big to show here.

pkgs/applications/graphics/gcolor3/default.nix+2−6

This diff is too big to show here.

pkgs/applications/graphics/geeqie/default.nix+8−21

This diff is too big to show here.

pkgs/applications/graphics/gimp/default.nix+5−6

This diff is too big to show here.

pkgs/applications/graphics/gimp/plugins/default.nix+6−51

This diff is too big to show here.

pkgs/applications/graphics/gimp/wrapper.nix−2

This diff is too big to show here.

pkgs/applications/graphics/glabels/default.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/glimpse/default.nix−1

This diff is too big to show here.

pkgs/applications/graphics/glimpse/wrapper.nix−2

This diff is too big to show here.

pkgs/applications/graphics/gnome-obfuscate/default.nixdeleted−70

This diff is too big to show here.

pkgs/applications/graphics/gnome-photos/default.nix+3−2

This diff is too big to show here.

pkgs/applications/graphics/gpicview/default.nix+1

This diff is too big to show here.

pkgs/applications/graphics/grafx2/default.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/graphicsmagick/default.nix+4−17

This diff is too big to show here.

pkgs/applications/graphics/gscan2pdf/default.nix+5−3

This diff is too big to show here.

pkgs/applications/graphics/gthumb/default.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/hdr-plus/default.nix+13−5

This diff is too big to show here.

pkgs/applications/graphics/hdrmerge/default.nixdeleted−76

This diff is too big to show here.

pkgs/applications/graphics/hugin/default.nix+11−2

This diff is too big to show here.

pkgs/applications/graphics/hydrus/default.nix+3−6

This diff is too big to show here.

pkgs/applications/graphics/icon-library/default.nixdeleted−37

This diff is too big to show here.

pkgs/applications/graphics/image-roll/default.nix+3−9

This diff is too big to show here.

pkgs/applications/graphics/imagej/default.nix+4−11

This diff is too big to show here.

pkgs/applications/graphics/imgbrd-grabber/default.nix+3−3

This diff is too big to show here.

pkgs/applications/graphics/imlibsetroot/default.nix+6−13

This diff is too big to show here.

pkgs/applications/graphics/imv/default.nix+5−6

This diff is too big to show here.

pkgs/applications/graphics/inkscape/default.nix+10−7

This diff is too big to show here.

pkgs/applications/graphics/inkscape/extensions.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/ipe/default.nix+6−4

This diff is too big to show here.

pkgs/applications/graphics/jpegrescan/default.nix+1−5

This diff is too big to show here.

pkgs/applications/graphics/k3d/default.nixnew file+51

This diff is too big to show here.

pkgs/applications/graphics/krita/beta.nixnew file+7

This diff is too big to show here.

pkgs/applications/graphics/krita/default.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/krita/generic.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/lightburn/default.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/mandelbulber/default.nix+3−3

This diff is too big to show here.

pkgs/applications/graphics/mcomix3/default.nix+1−2

This diff is too big to show here.

pkgs/applications/graphics/megapixels/default.nix+4−4

This diff is too big to show here.

pkgs/applications/graphics/menyoki/default.nix+5−7

This diff is too big to show here.

pkgs/applications/graphics/meshlab/default.nix+2−11

This diff is too big to show here.

pkgs/applications/graphics/mtpaint/default.nix+5−3

This diff is too big to show here.

pkgs/applications/graphics/mypaint/default.nix−10

This diff is too big to show here.

pkgs/applications/graphics/nomacs/default.nix+1

This diff is too big to show here.

pkgs/applications/graphics/nsxiv/default.nixdeleted−61

This diff is too big to show here.

pkgs/applications/graphics/ocrfeeder/default.nix+8−5

This diff is too big to show here.

pkgs/applications/graphics/odafileconverter/default.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/openboard/default.nix+3−11

This diff is too big to show here.

pkgs/applications/graphics/openscad/default.nix+2−5

This diff is too big to show here.

pkgs/applications/graphics/opentoonz/default.nix+2−4

This diff is too big to show here.

pkgs/applications/graphics/opentoonz/libtiff.nix+9−44

This diff is too big to show here.

pkgs/applications/graphics/opentoonz/source.nix+3−3

This diff is too big to show here.

pkgs/applications/graphics/ovito/default.nix+10−31

This diff is too big to show here.

pkgs/applications/graphics/paraview/default.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/pbrt/default.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/pdfcpu/default.nix+3−9

This diff is too big to show here.

pkgs/applications/graphics/photivo/default.nixnew file+54

This diff is too big to show here.

pkgs/applications/graphics/photivo/gcc6.patchnew file+13

This diff is too big to show here.

pkgs/applications/graphics/pinta/default.nix+65−64

This diff is too big to show here.

pkgs/applications/graphics/pinta/deps.nixdeleted−12

This diff is too big to show here.

pkgs/applications/graphics/pixeluvo/default.nixdeleted−56

This diff is too big to show here.

pkgs/applications/graphics/pixinsight/default.nixdeleted−132

This diff is too big to show here.

pkgs/applications/graphics/qiv/default.upstreamnew file+3

This diff is too big to show here.

pkgs/applications/graphics/qvge/default.nix+5−7

This diff is too big to show here.

pkgs/applications/graphics/rawtherapee/default.nix−3

This diff is too big to show here.

pkgs/applications/graphics/rawtherapee/fix-6324.patchdeleted−356

This diff is too big to show here.

pkgs/applications/graphics/renderdoc/default.nix+7−28

This diff is too big to show here.

pkgs/applications/graphics/rnote/default.nixdeleted−78

This diff is too big to show here.

pkgs/applications/graphics/sane/backends/brscan4/default.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/sane/backends/brscan5/default.nix+22−32

This diff is too big to show here.

pkgs/applications/graphics/sane/config.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/scantailor/default.nix+4−6

This diff is too big to show here.

pkgs/applications/graphics/screencloud/default.nix+3−3

This diff is too big to show here.

pkgs/applications/graphics/shotwell/default.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/solvespace/default.nix+15−63

This diff is too big to show here.

pkgs/applications/graphics/swingsane/default.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/symbolic-preview/default.nixdeleted−31

This diff is too big to show here.

pkgs/applications/graphics/synfigstudio/default.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/tesseract/default.nix−6

This diff is too big to show here.

pkgs/applications/graphics/tesseract/fetch-language-hashes+2−2

This diff is too big to show here.

pkgs/applications/graphics/tesseract/languages.nix+245−245

This diff is too big to show here.

pkgs/applications/graphics/tesseract/tesseract3.nix+3−14

This diff is too big to show here.

pkgs/applications/graphics/tesseract/tesseract4.nix+3−15

This diff is too big to show here.

pkgs/applications/graphics/tesseract/tesseract5.nixdeleted−39

This diff is too big to show here.

pkgs/applications/graphics/tesseract/wrapper.nix+3−29

This diff is too big to show here.

pkgs/applications/graphics/tev/default.nix+9−5

This diff is too big to show here.

pkgs/applications/graphics/unigine-heaven/default.nixdeleted−107

This diff is too big to show here.

pkgs/applications/graphics/unigine-sanctuary/default.nixdeleted−97

This diff is too big to show here.

pkgs/applications/graphics/unigine-superposition/default.nixdeleted−146

This diff is too big to show here.

pkgs/applications/graphics/unigine-tropics/default.nixdeleted−95

This diff is too big to show here.

pkgs/applications/graphics/unigine-valley/default.nix+99−120

This diff is too big to show here.

pkgs/applications/graphics/vengi-tools/default.nixdeleted−112

This diff is too big to show here.

pkgs/applications/graphics/vengi-tools/test-voxconvert-all-formats.nixdeleted−15

This diff is too big to show here.

pkgs/applications/graphics/vengi-tools/test-voxconvert-roundtrip.nixdeleted−15

This diff is too big to show here.

pkgs/applications/graphics/viewnior/default.nix+2−2

This diff is too big to show here.

pkgs/applications/graphics/weylus/default.nix+28−56

This diff is too big to show here.

pkgs/applications/graphics/write_stylus/default.nix+1−1

This diff is too big to show here.

pkgs/applications/graphics/xfig/default.nix+2−13

This diff is too big to show here.

pkgs/applications/graphics/xournal/default.nix+5−5

This diff is too big to show here.

pkgs/applications/graphics/xournalpp/default.nix+3−4

This diff is too big to show here.

pkgs/applications/graphics/xrgears/default.nix+3−14

This diff is too big to show here.

pkgs/applications/graphics/yed/default.nix+2−2

This diff is too big to show here.

pkgs/applications/kde/akonadi/default.nix−7

This diff is too big to show here.

pkgs/applications/kde/bovo.nix+1−1

This diff is too big to show here.

pkgs/applications/kde/default.nix+1−8

This diff is too big to show here.

pkgs/applications/kde/falkon.nixdeleted−40

This diff is too big to show here.

pkgs/applications/kde/fetch.sh+1−1

This diff is too big to show here.

pkgs/applications/kde/k3b.nix+1−1

This diff is too big to show here.

pkgs/applications/kde/kaddressbook.nix−4

This diff is too big to show here.

pkgs/applications/kde/kalarm.nix+3−3

This diff is too big to show here.

pkgs/applications/kde/kalarmcal.nixnew file+19

This diff is too big to show here.

pkgs/applications/kde/kalendar.nixdeleted−94

This diff is too big to show here.

pkgs/applications/kde/kalzium.nix+1−1

This diff is too big to show here.

pkgs/applications/kde/kamoso.nix+1−1

This diff is too big to show here.

pkgs/applications/kde/kbreakout.nix+1−1

This diff is too big to show here.

pkgs/applications/kde/kdebugsettings.nix+1−1

This diff is too big to show here.

pkgs/applications/kde/kdegraphics-thumbnailers.nix+2−2

This diff is too big to show here.

pkgs/applications/kde/kdepim-addons.nix+2−2

This diff is too big to show here.

pkgs/applications/kde/kdepim-runtime/default.nix+2−2

This diff is too big to show here.

pkgs/applications/kde/kio-extras.nix−7

This diff is too big to show here.

pkgs/applications/kde/kipi-plugins.nix+1−1

This diff is too big to show here.

pkgs/applications/kde/kitinerary.nix+4−8

This diff is too big to show here.

pkgs/applications/kde/klettres.nix+1−1

This diff is too big to show here.

pkgs/applications/kde/kmousetool.nixdeleted−35

This diff is too big to show here.

pkgs/applications/kde/konsole.nix+1−3

This diff is too big to show here.

pkgs/applications/kde/krfb.nix+8−7

This diff is too big to show here.

pkgs/applications/kde/ktorrent.nixdeleted−22

This diff is too big to show here.

pkgs/applications/kde/kturtle.nix+1−1

This diff is too big to show here.

pkgs/applications/kde/libktorrent.nixdeleted−22

This diff is too big to show here.

pkgs/applications/kde/picmi.nix−1

This diff is too big to show here.

pkgs/applications/kde/pimcommon.nix+2−2

This diff is too big to show here.

pkgs/applications/kde/skanlite.nixdeleted−18

This diff is too big to show here.

pkgs/applications/kde/skanpage.nixdeleted−32

This diff is too big to show here.

pkgs/applications/kde/srcs.nix+905−953

This diff is too big to show here.

pkgs/applications/kde/yakuake.nix−2

This diff is too big to show here.

pkgs/applications/kde/zanshin.nixdeleted−18

This diff is too big to show here.

pkgs/applications/logging/sosreport/default.nixdeleted−51

This diff is too big to show here.

pkgs/applications/misc/1password-gui/beta.nixdeleted−132

This diff is too big to show here.

pkgs/applications/misc/1password-gui/default.nix+5−18

This diff is too big to show here.

pkgs/applications/misc/1password/default.nix+30−47

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/default.nix+13−17

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/deps-aarch64-linux.nixdeleted−280

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/deps-x86_64-linux.nixdeleted−280

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/deps.nixnew file+277

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/mutable-customdir.patchnew file+13

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/updater.sh+8−16

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/web-ui/default.nixdeleted−40

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/web-ui/node-composition.nixdeleted−17

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/web-ui/node-packages.nix−7645

This diff is too big to show here.

pkgs/applications/misc/ArchiSteamFarm/web-ui/update.sh−26

This diff is too big to show here.

pkgs/applications/misc/HentaiAtHome/default.nix−37

This diff is too big to show here.

pkgs/applications/misc/OSCAR/default.nix+4−6

This diff is too big to show here.

pkgs/applications/misc/ablog/default.nix−36

This diff is too big to show here.

pkgs/applications/misc/abook/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/airtame/default.nix+79

This diff is too big to show here.

pkgs/applications/misc/almanah/default.nix+1−13

This diff is too big to show here.

pkgs/applications/misc/anytype/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/appeditor/default.nix+2−7

This diff is too big to show here.

pkgs/applications/misc/apvlv/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/archivebox/default.nix+24−16

This diff is too big to show here.

pkgs/applications/misc/archivy/default.nix+26−16

This diff is too big to show here.

pkgs/applications/misc/artha/default.nix+8−4

This diff is too big to show here.

pkgs/applications/misc/artha/gio-underlink.patch+13

This diff is too big to show here.

pkgs/applications/misc/audio/sox/default.nix+7−14

This diff is too big to show here.

pkgs/applications/misc/audio/soxr/default.nix+10−13

This diff is too big to show here.

pkgs/applications/misc/audio/wavesurfer/default.nix+30

This diff is too big to show here.

pkgs/applications/misc/ausweisapp2/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/authy/default.nix+7−30

This diff is too big to show here.

pkgs/applications/misc/auto-multiple-choice/default.nix+4−5

This diff is too big to show here.

pkgs/applications/misc/autospotting/default.nix−1

This diff is too big to show here.

pkgs/applications/misc/avizo/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/avrdudess/default.nix+4−5

This diff is too big to show here.

pkgs/applications/misc/azuredatastudio/default.nix+23−19

This diff is too big to show here.

pkgs/applications/misc/barrier/default.nix+1−12

This diff is too big to show here.

pkgs/applications/misc/batsignal/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/bemenu/default.nix+11−2

This diff is too big to show here.

pkgs/applications/misc/bicon/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/bikeshed/default.nix−77

This diff is too big to show here.

pkgs/applications/misc/binance/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/blender/default.nix+15−16

This diff is too big to show here.

pkgs/applications/misc/blender/wrapper.nix−39

This diff is too big to show here.

pkgs/applications/misc/bluetooth_battery/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/bottles/default.nix+16−33

This diff is too big to show here.

pkgs/applications/misc/buku/default.nix+20−28

This diff is too big to show here.

pkgs/applications/misc/bukut/default.nix−28

This diff is too big to show here.

pkgs/applications/misc/calcoo/0001-javac-encoding.diff−21

This diff is too big to show here.

pkgs/applications/misc/calcoo/default.nix−58

This diff is too big to show here.

pkgs/applications/misc/calcurse/default.nix+3−4

This diff is too big to show here.

pkgs/applications/misc/calibre/default.nix+9−18

This diff is too big to show here.

pkgs/applications/misc/cardpeek/default.nix+22−43

This diff is too big to show here.

pkgs/applications/misc/catclock/default.nix−1

This diff is too big to show here.

pkgs/applications/misc/cbatticon/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cfm/default.nix−26

This diff is too big to show here.

pkgs/applications/misc/charm/default.nix+5−3

This diff is too big to show here.

pkgs/applications/misc/cherrytree/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/clifm/default.nix+9−6

This diff is too big to show here.

pkgs/applications/misc/clight/clightd.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/clight/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/clipcat/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/cloak/default.nix+4−6

This diff is too big to show here.

pkgs/applications/misc/cobalt/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/cobang/0001-Poetry-core-and-pillow-9.patch−31

This diff is too big to show here.

pkgs/applications/misc/cobang/default.nix−102

This diff is too big to show here.

pkgs/applications/misc/cointop/default.nix+6−6

This diff is too big to show here.

pkgs/applications/misc/copyq/default.nix+11−2

This diff is too big to show here.

pkgs/applications/misc/corectrl/default.nix+5−5

This diff is too big to show here.

pkgs/applications/misc/cpu-x/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/crow-translate/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/crow-translate/dont-fetch-external-libs.patch+4−4

This diff is too big to show here.

pkgs/applications/misc/crow-translate/fix-qttranslations-path.patch+8−8

This diff is too big to show here.

pkgs/applications/misc/cubiomes-viewer/default.nix−70

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coreaction/default.nix+11−3

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corearchiver/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corefm/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coregarage/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corehunt/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coreimage/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coreinfo/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corekeyboard/0001-fix-installPhase.patch−8

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corekeyboard/default.nix+2−7

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corepad/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corepaint/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corepdf/default.nix+3−4

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corepins/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corerenamer/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coreshot/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corestats/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corestuff/0001-fix-installPhase.patch−11

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/corestuff/default.nix+2−7

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coreterminal/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coretime/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coretoppings/0001-fix-install-phase.patch+3−3

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coretoppings/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/coreuniverse/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/libcprime/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cubocore-packages/libcsys/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cura/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/cura/stable.nix+12−11

This diff is too big to show here.

pkgs/applications/misc/curabydagoma/default.nix+78

This diff is too big to show here.

pkgs/applications/misc/curaengine/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/curaengine/stable.nix+9−9

This diff is too big to show here.

pkgs/applications/misc/dasel/default.nix+4−5

This diff is too big to show here.

pkgs/applications/misc/dbeaver/default.nix+38−16

This diff is too big to show here.

pkgs/applications/misc/ddcui/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/ddgr/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/debian-goodies/default.nix−70

This diff is too big to show here.

pkgs/applications/misc/deco/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/dmenu/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/dozenal/default.nix−8

This diff is too big to show here.

pkgs/applications/misc/dunst/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/dupeguru/default.nix+17−12

This diff is too big to show here.

pkgs/applications/misc/edgetx/default.nix−47

This diff is too big to show here.

pkgs/applications/misc/electron-cash/default.nix+2−3

This diff is too big to show here.

pkgs/applications/misc/electrum-grs/default.nix−111

This diff is too big to show here.

pkgs/applications/misc/electrum/dash.nix+47

This diff is too big to show here.

pkgs/applications/misc/electrum/default.nix+22−5

This diff is too big to show here.

pkgs/applications/misc/electrum/ltc.nix+29−151

This diff is too big to show here.

pkgs/applications/misc/emojipick/default.nix−71

This diff is too big to show here.

pkgs/applications/misc/eos-installer/default.nix−48

This diff is too big to show here.

pkgs/applications/misc/etesync-dav/default.nix+7−23

This diff is too big to show here.

pkgs/applications/misc/eureka-editor/default.nix+14−10

This diff is too big to show here.

pkgs/applications/misc/evtest/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/expenses/default.nix+5−14

This diff is too big to show here.

pkgs/applications/misc/faircamp/default.nix−56

This diff is too big to show here.

pkgs/applications/misc/faircamp/test-wav.nix−14

This diff is too big to show here.

pkgs/applications/misc/far2l/default.nix+53−53

This diff is too big to show here.

pkgs/applications/misc/far2l/python_prebuild.patch−20

This diff is too big to show here.

pkgs/applications/misc/feedbackd/default.nix+3−13

This diff is too big to show here.

pkgs/applications/misc/fetchmail/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/ff2mpv/default.nix−34

This diff is too big to show here.

pkgs/applications/misc/firefly-desktop/default.nix−34

This diff is too big to show here.

pkgs/applications/misc/firestarter/default.nix+1−3

This diff is too big to show here.

pkgs/applications/misc/fluidd/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/fme/default.nix+57

This diff is too big to show here.

pkgs/applications/misc/fnott/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/font-manager/default.nix+12−2

This diff is too big to show here.

pkgs/applications/misc/foxitreader/default.nix−1

This diff is too big to show here.

pkgs/applications/misc/free42/default.nix+12−19

This diff is too big to show here.

pkgs/applications/misc/freeplane/default.nix+15−20

This diff is too big to show here.

pkgs/applications/misc/fslint/default.nix+41

This diff is too big to show here.

pkgs/applications/misc/fspy/default.nix−26

This diff is too big to show here.

pkgs/applications/misc/fuzzel/default.nix+2−4

This diff is too big to show here.

pkgs/applications/misc/gImageReader/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/gallery-dl/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/ganttproject-bin/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/genact/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/geoipupdate/default.nix+3−5

This diff is too big to show here.

pkgs/applications/misc/girara/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/gkrellm/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/gksu/default.nix+53

This diff is too big to show here.

pkgs/applications/misc/gksu/gksu-2.0.2-glib-2.31.patch+29

This diff is too big to show here.

pkgs/applications/misc/globe-cli/default.nix−21

This diff is too big to show here.

pkgs/applications/misc/gnome-firmware-updater/default.nix+75

This diff is too big to show here.

pkgs/applications/misc/gnome-firmware/default.nix−63

This diff is too big to show here.

pkgs/applications/misc/gnome-passwordsafe/default.nix+67

This diff is too big to show here.

pkgs/applications/misc/gnome-secrets/default.nix−73

This diff is too big to show here.

pkgs/applications/misc/gnome-solanum/default.nix−80

This diff is too big to show here.

pkgs/applications/misc/gofu/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/golden-cheetah/0001-Fix-building-with-bison-3.7.patch−63

This diff is too big to show here.

pkgs/applications/misc/golden-cheetah/default.nix+10−18

This diff is too big to show here.

pkgs/applications/misc/gometer/default.nix−47

This diff is too big to show here.

pkgs/applications/misc/googleearth/default.nix+106

This diff is too big to show here.

pkgs/applications/misc/gosmore/default.nix+4−2

This diff is too big to show here.

pkgs/applications/misc/gphoto2/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/gpsprune/default.nix+22−27

This diff is too big to show here.

pkgs/applications/misc/gpxsee/default.nix+6−8

This diff is too big to show here.

pkgs/applications/misc/gramps/default.nix+2−6

This diff is too big to show here.

pkgs/applications/misc/gremlin-console/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/gremlin-server/default.nix−33

This diff is too big to show here.

pkgs/applications/misc/grip/default.nix+12−2

This diff is too big to show here.

pkgs/applications/misc/gsctl/default.nix+7−18

This diff is too big to show here.

pkgs/applications/misc/gsimplecal/default.nix+6−8

This diff is too big to show here.

pkgs/applications/misc/gtk2fontsel/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/gxmessage/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/haxor-news/default.nix+1−2

This diff is too big to show here.

pkgs/applications/misc/hcl2json/default.nix−27

This diff is too big to show here.

pkgs/applications/misc/heimer/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/hello/default.nix+10−21

This diff is too big to show here.

pkgs/applications/misc/hello/test.nix−8

This diff is too big to show here.

pkgs/applications/misc/hivemind/default.nix+5−5

This diff is too big to show here.

pkgs/applications/misc/hubstaff/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/hugo/default.nix+7−7

This diff is too big to show here.

pkgs/applications/misc/ideamaker/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/ikiwiki/default.nix+5−20

This diff is too big to show here.

pkgs/applications/misc/index-fm/default.nix+5−8

This diff is too big to show here.

pkgs/applications/misc/inherd-quake/default.nix−40

This diff is too big to show here.

pkgs/applications/misc/ipmiview/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/iptsd/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/jgmenu/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/join-desktop/default.nix−73

This diff is too big to show here.

pkgs/applications/misc/joplin-desktop/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/joshuto/default.nix+7−4

This diff is too big to show here.

pkgs/applications/misc/joshuto/fix-cargo-lock.patch+11

This diff is too big to show here.

pkgs/applications/misc/josm/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/jotta-cli/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/jp2a/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/jquake/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/jrnl/default.nix+11−6

This diff is too big to show here.

pkgs/applications/misc/k40-whisperer/default.nix−74

This diff is too big to show here.

pkgs/applications/misc/k4dirstat/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/kanboard/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/kchmviewer/default.nix−48

This diff is too big to show here.

pkgs/applications/misc/keepass-plugins/charactercopy/default.nix−41

This diff is too big to show here.

pkgs/applications/misc/keepass-plugins/keetraytotp/default.nix−40

This diff is too big to show here.

pkgs/applications/misc/keepass-plugins/qrcodeview/default.nix−39

This diff is too big to show here.

pkgs/applications/misc/keepass/default.nix+9−10

This diff is too big to show here.

pkgs/applications/misc/keepassx/community.nix+1−2

This diff is too big to show here.

pkgs/applications/misc/keylight-controller-mschneider82/default.nix−53

This diff is too big to show here.

pkgs/applications/misc/kiln/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/kjv/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/klayout/default.nix+6−8

This diff is too big to show here.

pkgs/applications/misc/kondo/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/koreader/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/kratos/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/kup/default.nix−60

This diff is too big to show here.

pkgs/applications/misc/latte-dock/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/leetcode-cli/default.nix−41

This diff is too big to show here.

pkgs/applications/misc/lemonade/default.nix−35

This diff is too big to show here.

pkgs/applications/misc/liberasurecode/default.nix+3−27

This diff is too big to show here.

pkgs/applications/misc/libosmocore/default.nix+6−21

This diff is too big to show here.

pkgs/applications/misc/librecad/default.nix+3−11

This diff is too big to show here.

pkgs/applications/misc/lighthouse/default.nix+35

This diff is too big to show here.

pkgs/applications/misc/limesctl/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/llama/default.nix−22

This diff is too big to show here.

pkgs/applications/misc/logseq/default.nix+5−6

This diff is too big to show here.

pkgs/applications/misc/loxodo/default.nix+7−9

This diff is too big to show here.

pkgs/applications/misc/lscolors/default.nix+4−7

This diff is too big to show here.

pkgs/applications/misc/lsd2dsl/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/lutris/default.nix+12−14

This diff is too big to show here.

pkgs/applications/misc/lutris/fhsenv.nix+4−5

This diff is too big to show here.

pkgs/applications/misc/lutris/fixes.patch+67

This diff is too big to show here.

pkgs/applications/misc/makeself/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/maliit-framework/default.nix−68

This diff is too big to show here.

pkgs/applications/misc/maliit-keyboard/default.nix−82

This diff is too big to show here.

pkgs/applications/misc/mapproxy/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/markets/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/marktext/default.nix+9−22

This diff is too big to show here.

pkgs/applications/misc/masterpdfeditor/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/mdzk/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/mediaelch/default.nix+5−17

This diff is too big to show here.

pkgs/applications/misc/mediainfo/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/megacmd/default.nix+16−6

This diff is too big to show here.

pkgs/applications/misc/megasync/default.nix+8−9

This diff is too big to show here.

pkgs/applications/misc/megasync/ffmpeg_44.patch−14

This diff is too big to show here.

pkgs/applications/misc/mepo/default.nix−83

This diff is too big to show here.

pkgs/applications/misc/metadata-cleaner/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/metamorphose2/default.nix+43

This diff is too big to show here.

pkgs/applications/misc/michabo/default.nix+1

This diff is too big to show here.

pkgs/applications/misc/minder/default.nix+2−4

This diff is too big to show here.

pkgs/applications/misc/minigalaxy/default.nix−80

This diff is too big to show here.

pkgs/applications/misc/mkgmap/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/mkgmap/splitter/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/mob/default.nix+6−23

This diff is too big to show here.

pkgs/applications/misc/mobilecoin-wallet/default.nix−39

This diff is too big to show here.

pkgs/applications/misc/moolticute/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/moonlight-embedded/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/moonlight-qt/default.nix+2−3

This diff is too big to show here.

pkgs/applications/misc/mop/default.nix+13−12

This diff is too big to show here.

pkgs/applications/misc/mop/deps.nix+11

This diff is too big to show here.

pkgs/applications/misc/moz-phab/default.nix−57

This diff is too big to show here.

pkgs/applications/misc/mucommander/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/multibootusb/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/mupdf/0001-Use-command-v-in-favor-of-which.patch−25

This diff is too big to show here.

pkgs/applications/misc/mupdf/0002-Add-Darwin-deps.patch−57

This diff is too big to show here.

pkgs/applications/misc/mupdf/1.17.nix+1

This diff is too big to show here.

pkgs/applications/misc/mupdf/default.nix+45−46

This diff is too big to show here.

pkgs/applications/misc/mupdf/default.upstream+7

This diff is too big to show here.

pkgs/applications/misc/mysql-workbench/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/natural-docs/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/navi/default.nix+5−5

This diff is too big to show here.

pkgs/applications/misc/neap/default.nix+44

This diff is too big to show here.

pkgs/applications/misc/neo/default.nix−25

This diff is too big to show here.

pkgs/applications/misc/neo4j-desktop/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/nerd-font-patcher/default.nix+8−9

This diff is too big to show here.

pkgs/applications/misc/nimbo/default.nix+6−27

This diff is too big to show here.

pkgs/applications/misc/nix-tour/default.nix+19−35

This diff is too big to show here.

pkgs/applications/misc/nnn/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/noice/default.nix−6

This diff is too big to show here.

pkgs/applications/misc/notejot/default.nix+19−6

This diff is too big to show here.

pkgs/applications/misc/notejot/use-gtk4-update-icon-cache.patch+20

This diff is too big to show here.

pkgs/applications/misc/numberstation/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/nut/default.nix+1−2

This diff is too big to show here.

pkgs/applications/misc/nwg-drawer/default.nix+7−21

This diff is too big to show here.

pkgs/applications/misc/nwg-menu/default.nix+3−1

This diff is too big to show here.

pkgs/applications/misc/nwg-panel/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/nwg-wrapper/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/obinskit/default.nix+6−6

This diff is too big to show here.

pkgs/applications/misc/obsidian/default.nix+60−74

This diff is too big to show here.

pkgs/applications/misc/ocropus/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/octoprint/default.nix+140−43

This diff is too big to show here.

pkgs/applications/misc/octoprint/plugins.nix+2−26

This diff is too big to show here.

pkgs/applications/misc/oil-buku/default.nix−44

This diff is too big to show here.

pkgs/applications/misc/opencpn/default.nix+16−85

This diff is too big to show here.

pkgs/applications/misc/openlp/default.nix+1−2

This diff is too big to show here.

pkgs/applications/misc/openrgb/default.nix+4−7

This diff is too big to show here.

pkgs/applications/misc/openring/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/opentrack/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/orca/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/organicmaps/default.nix−86

This diff is too big to show here.

pkgs/applications/misc/osmium-tool/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/osmscout-server/default.nix+28−9

This diff is too big to show here.

pkgs/applications/misc/otpclient/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/p2pool/default.nix−50

This diff is too big to show here.

pkgs/applications/misc/pcmanx-gtk2/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/pdfarranger/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/pdfdiff/default.nix+8−6

This diff is too big to show here.

pkgs/applications/misc/pdfmod/default.nix+49

This diff is too big to show here.

pkgs/applications/misc/pdfpc/default.nix+4−3

This diff is too big to show here.

pkgs/applications/misc/pdfsam-basic/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/pdfslicer/default.nix−6

This diff is too big to show here.

pkgs/applications/misc/pdfstudio/common.nix−96

This diff is too big to show here.

pkgs/applications/misc/pdfstudio/default.nix−42

This diff is too big to show here.

pkgs/applications/misc/pgadmin/default.nix+58

This diff is too big to show here.

pkgs/applications/misc/phoc/default.nix+8−22

This diff is too big to show here.

pkgs/applications/misc/phwmon/default.nix+5−5

This diff is too big to show here.

pkgs/applications/misc/plasma-theme-switcher/default.nix−42

This diff is too big to show here.

pkgs/applications/misc/plater/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/playonlinux/default.nix+3−18

This diff is too big to show here.

pkgs/applications/misc/plover/default.nix+7−11

This diff is too big to show here.

pkgs/applications/misc/polybar/default.nix+2−12

This diff is too big to show here.

pkgs/applications/misc/polybar/remove-hardcoded-etc.diff−13

This diff is too big to show here.

pkgs/applications/misc/pomotroid/default.nix−60

This diff is too big to show here.

pkgs/applications/misc/portfolio-filemanager/default.nix+2−6

This diff is too big to show here.

pkgs/applications/misc/premid/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/privacyidea/default.nix+5−18

This diff is too big to show here.

pkgs/applications/misc/prusa-slicer/default.nix+12−17

This diff is too big to show here.

pkgs/applications/misc/prusa-slicer/super-slicer.nix+5−8

This diff is too big to show here.

pkgs/applications/misc/pueue/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/pure-maps/default.nix+10−6

This diff is too big to show here.

pkgs/applications/misc/pwsafe/default.nix+6−8

This diff is too big to show here.

pkgs/applications/misc/pytrainer/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/q4wine/default.nix−37

This diff is too big to show here.

pkgs/applications/misc/qMasterPassword/default.nix+7−11

This diff is too big to show here.

pkgs/applications/misc/qcad/default.nix+39−54

This diff is too big to show here.

pkgs/applications/misc/qmetro/default.nix+3−2

This diff is too big to show here.

pkgs/applications/misc/qpdfview/default.nix+27−35

This diff is too big to show here.

pkgs/applications/misc/qt-video-wlr/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/qtbitcointrader/default.nix+9−8

This diff is too big to show here.

pkgs/applications/misc/ranger/default.nix+4−13

This diff is too big to show here.

pkgs/applications/misc/ratt/default.nix−26

This diff is too big to show here.

pkgs/applications/misc/redshift/575.patch+1−1

This diff is too big to show here.

pkgs/applications/misc/redshift/default.nix+22−13

This diff is too big to show here.

pkgs/applications/misc/regextester/default.nix+1

This diff is too big to show here.

pkgs/applications/misc/remarkable/remarkable-mouse/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/remarkable/restream/default.nix+8−19

This diff is too big to show here.

pkgs/applications/misc/remarkable/rmapi/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/remarkable/rmview/default.nix+7−3

This diff is too big to show here.

pkgs/applications/misc/rivercarro/default.nix−51

This diff is too big to show here.

pkgs/applications/misc/rm-improved/default.nix−1

This diff is too big to show here.

pkgs/applications/misc/robo3t/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/rofi-emoji/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/rofi-file-browser/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/rofi/default.nix+6−8

This diff is too big to show here.

pkgs/applications/misc/rofi/wayland.nix−31

This diff is too big to show here.

pkgs/applications/misc/sampler/default.nix+2−5

This diff is too big to show here.

pkgs/applications/misc/scli/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/seatd/default.nix+5−9

This diff is too big to show here.

pkgs/applications/misc/sidequest/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/sigal/default.nix+13−17

This diff is too big to show here.

pkgs/applications/misc/sigi/default.nix−30

This diff is too big to show here.

pkgs/applications/misc/simplenote/default.nix+3−2

This diff is too big to show here.

pkgs/applications/misc/sioyek/default.nix−56

This diff is too big to show here.

pkgs/applications/misc/skate/default.nix−26

This diff is too big to show here.

pkgs/applications/misc/skytemple/default.nix+2−5

This diff is too big to show here.

pkgs/applications/misc/sleepyhead/default.nix+4−2

This diff is too big to show here.

pkgs/applications/misc/slic3r/default.nix+5−6

This diff is too big to show here.

pkgs/applications/misc/slides/default.nix+4−5

This diff is too big to show here.

pkgs/applications/misc/slmenu/default.nix+21−10

This diff is too big to show here.

pkgs/applications/misc/slstatus/default.nix−2

This diff is too big to show here.

pkgs/applications/misc/smos/default.nix+27

This diff is too big to show here.

pkgs/applications/misc/snapmaker-luban/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/snowsql/default.nix+3−4

This diff is too big to show here.

pkgs/applications/misc/solaar/default.nix+2−3

This diff is too big to show here.

pkgs/applications/misc/spicetify-cli/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/spotify-tray/default.nix−33

This diff is too big to show here.

pkgs/applications/misc/sqliteman/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/sqls/default.nix+3−5

This diff is too big to show here.

pkgs/applications/misc/stag/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/stog/default.nix+14−26

This diff is too big to show here.

pkgs/applications/misc/stog/install.patch+18

This diff is too big to show here.

pkgs/applications/misc/stog/uri.patch+13

This diff is too big to show here.

pkgs/applications/misc/stork/default.nix+4−10

This diff is too big to show here.

pkgs/applications/misc/stretchly/default.nix+5−5

This diff is too big to show here.

pkgs/applications/misc/subsurface/default.nix+1−2

This diff is too big to show here.

pkgs/applications/misc/surface-control/default.nix+5−6

This diff is too big to show here.

pkgs/applications/misc/survex/default.nix+43−36

This diff is too big to show here.

pkgs/applications/misc/sway-launcher-desktop/default.nix−42

This diff is too big to show here.

pkgs/applications/misc/swaynotificationcenter/default.nix−43

This diff is too big to show here.

pkgs/applications/misc/sweethome3d/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/sweethome3d/editors.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/systembus-notify/default.nix+5−39

This diff is too big to show here.

pkgs/applications/misc/tagtime/default.nix−79

This diff is too big to show here.

pkgs/applications/misc/taskwarrior-tui/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/taskwarrior/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/teleprompter/default.nix+1

This diff is too big to show here.

pkgs/applications/misc/terminal-typeracer/default.nix+4−5

This diff is too big to show here.

pkgs/applications/misc/thedesk/default.nix−50

This diff is too big to show here.

pkgs/applications/misc/ticker/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/timew-sync-server/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/timewarrior/default.nix−1

This diff is too big to show here.

pkgs/applications/misc/tint2/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/tiramisu/default.nix+7−7

This diff is too big to show here.

pkgs/applications/misc/tiv/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/tmatrix/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/todiff/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/todoist-electron/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/todoist/default.nix+3−7

This diff is too big to show here.

pkgs/applications/misc/toggldesktop/default.nix+15−23

This diff is too big to show here.

pkgs/applications/misc/toipe/default.nix−20

This diff is too big to show here.

pkgs/applications/misc/tomboy/default.nix+43

This diff is too big to show here.

pkgs/applications/misc/tootle/default.nix+5−24

This diff is too big to show here.

pkgs/applications/misc/topydo/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/tpmmanager/default.nix+5−6

This diff is too big to show here.

pkgs/applications/misc/translate-shell/default.nix+1−2

This diff is too big to show here.

pkgs/applications/misc/trenchbroom/default.nix+1−14

This diff is too big to show here.

pkgs/applications/misc/tsukae/default.nix+3−1

This diff is too big to show here.

pkgs/applications/misc/tty-share/default.nix+6−8

This diff is too big to show here.

pkgs/applications/misc/tty-solitaire/default.nix−1

This diff is too big to show here.

pkgs/applications/misc/ttyper/default.nix+4−4

This diff is too big to show here.

pkgs/applications/misc/tuhi/default.nix−63

This diff is too big to show here.

pkgs/applications/misc/tut/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/tvbrowser/bin.nix+6−4

This diff is too big to show here.

pkgs/applications/misc/udevil/default.nix+13−31

This diff is too big to show here.

pkgs/applications/misc/udiskie/default.nix+26−35

This diff is too big to show here.

pkgs/applications/misc/udiskie/locale-path.patch−17

This diff is too big to show here.

pkgs/applications/misc/ulauncher/default.nix+1−6

This diff is too big to show here.

pkgs/applications/misc/upwork/default.nix+4−14

This diff is too big to show here.

pkgs/applications/misc/urlscan/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/urlview/default.nix+5−5

This diff is too big to show here.

pkgs/applications/misc/variety/default.nix+38−43

This diff is too big to show here.

pkgs/applications/misc/veracrypt/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/vifm/default.nix+1

This diff is too big to show here.

pkgs/applications/misc/viking/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/visidata/default.nix+3−5

This diff is too big to show here.

pkgs/applications/misc/vit/default.nix+5−3

This diff is too big to show here.

pkgs/applications/misc/waybar/default.nix+2−7

This diff is too big to show here.

pkgs/applications/misc/weather/default.nix+5−5

This diff is too big to show here.

pkgs/applications/misc/wego/default.nix+13−11

This diff is too big to show here.

pkgs/applications/misc/wego/deps.nix+48

This diff is too big to show here.

pkgs/applications/misc/whalebird/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/wike/default.nix+11−11

This diff is too big to show here.

pkgs/applications/misc/wlclock/default.nix−46

This diff is too big to show here.

pkgs/applications/misc/wmname/default.nix+1−7

This diff is too big to show here.

pkgs/applications/misc/worker/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/wtf/default.nix+4−5

This diff is too big to show here.

pkgs/applications/misc/xastir/default.nix+4−8

This diff is too big to show here.

pkgs/applications/misc/xchm/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/xdg-launch/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/xdragon/default.nix+28

This diff is too big to show here.

pkgs/applications/misc/xiphos/0001-Add-dbus-glib-dependency-to-main.patch−38

This diff is too big to show here.

pkgs/applications/misc/xiphos/default.nix+21−78

This diff is too big to show here.

pkgs/applications/misc/xkblayout-state/default.nix+4−6

This diff is too big to show here.

pkgs/applications/misc/xmind/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/xmr-stak/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/xmrig/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/xmrig/moneroocean.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/xmrig/proxy.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/xpdf/default.nix+4−3

This diff is too big to show here.

pkgs/applications/misc/xplr/default.nix+3−3

This diff is too big to show here.

pkgs/applications/misc/xrandr-invert-colors/default.nix+5−8

This diff is too big to show here.

pkgs/applications/misc/xteddy/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/yambar/default.nix+20−21

This diff is too big to show here.

pkgs/applications/misc/yarssr/default.nix+81

This diff is too big to show here.

pkgs/applications/misc/yate/default.nix+5−7

This diff is too big to show here.

pkgs/applications/misc/ydict/default.nix−28

This diff is too big to show here.

pkgs/applications/misc/yubioath-desktop/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/zathura/core/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/zathura/default.nix+1−1

This diff is too big to show here.

pkgs/applications/misc/zathura/wrapper.nix+1−2

This diff is too big to show here.

pkgs/applications/misc/zettlr/default.nix+2−2

This diff is too big to show here.

pkgs/applications/misc/zola/default.nix+6−8

This diff is too big to show here.

pkgs/applications/misc/zscroll/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/aether/default.nix+19−15

This diff is too big to show here.

pkgs/applications/networking/alpnpass/default.nix−34

This diff is too big to show here.

pkgs/applications/networking/apache-directory-studio/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/appgate-sdp/default.nix+3−2

This diff is too big to show here.

pkgs/applications/networking/bee/bee.nix+4−2

This diff is too big to show here.

pkgs/applications/networking/blocky/default.nix−33

This diff is too big to show here.

pkgs/applications/networking/breitbandmessung/default.nix−153

This diff is too big to show here.

pkgs/applications/networking/browsers/amfora/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/browsers/bombadillo/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/browsers/brave/default.nix+55−72

This diff is too big to show here.

pkgs/applications/networking/browsers/chromium/browser.nix+1−3

This diff is too big to show here.

pkgs/applications/networking/browsers/chromium/common.nix+39−32

This diff is too big to show here.

pkgs/applications/networking/browsers/chromium/default.nix+11−10

This diff is too big to show here.

pkgs/applications/networking/browsers/chromium/get-commit-message.py+3−3

This diff is too big to show here.

pkgs/applications/networking/browsers/chromium/ungoogled-flags.toml−23

This diff is too big to show here.

pkgs/applications/networking/browsers/chromium/update.py+3−17

This diff is too big to show here.

pkgs/applications/networking/browsers/chromium/upstream-info.json+29−30

This diff is too big to show here.

pkgs/applications/networking/browsers/elinks/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/browsers/eolie/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/browsers/falkon/default.nix+57

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix+393−393

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox-bin/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix+393−393

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox-bin/release_sources.nix+393−393

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox/common.nix+200−331

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox/librewolf/default.nix−41

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox/librewolf/src.json−11

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox/librewolf/src.nix−18

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox/librewolf/update.nix−65

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx96.patch−27

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox/packages.nix+5−31

This diff is too big to show here.

pkgs/applications/networking/browsers/firefox/wrapper.nix+47−41

This diff is too big to show here.

pkgs/applications/networking/browsers/google-chrome/default.nix+14−16

This diff is too big to show here.

pkgs/applications/networking/browsers/icecat-bin/default.nix+130

This diff is too big to show here.

pkgs/applications/networking/browsers/kristall/default.nix+14−27

This diff is too big to show here.

pkgs/applications/networking/browsers/lagrange/default.nix+10−4

This diff is too big to show here.

pkgs/applications/networking/browsers/links2/default.nix+2−3

This diff is too big to show here.

pkgs/applications/networking/browsers/microsoft-edge/browser.nix−191

This diff is too big to show here.

pkgs/applications/networking/browsers/microsoft-edge/default.nix−20

This diff is too big to show here.

pkgs/applications/networking/browsers/microsoft-edge/update.sh−50

This diff is too big to show here.

pkgs/applications/networking/browsers/nyxt/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/browsers/opera/default.nix+5−8

This diff is too big to show here.

pkgs/applications/networking/browsers/palemoon/default.nix+85−62

This diff is too big to show here.

pkgs/applications/networking/browsers/palemoon/mozconfig−46

This diff is too big to show here.

pkgs/applications/networking/browsers/qtchan/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/browsers/qutebrowser/default.nix+5−8

This diff is too big to show here.

pkgs/applications/networking/browsers/surf/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/browsers/telescope/default.nix+2−7

This diff is too big to show here.

pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix+10−26

This diff is too big to show here.

pkgs/applications/networking/browsers/vieb/default.nix+4−4

This diff is too big to show here.

pkgs/applications/networking/browsers/vieb/package.json+17−12

This diff is too big to show here.

pkgs/applications/networking/browsers/vieb/yarn.lock+1481−1276

This diff is too big to show here.

pkgs/applications/networking/browsers/vieb/yarn.nix+1546−1330

This diff is too big to show here.

pkgs/applications/networking/browsers/vivaldi/default.nix+7−11

This diff is too big to show here.

pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix+8−5

This diff is too big to show here.

pkgs/applications/networking/browsers/vivaldi/update.sh+1−5

This diff is too big to show here.

pkgs/applications/networking/browsers/vivaldi/widevine.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/browsers/webbrowser/default.nix+109

This diff is too big to show here.

pkgs/applications/networking/browsers/yandex-browser/default.nix+11−18

This diff is too big to show here.

pkgs/applications/networking/c14/default.nix+22

This diff is too big to show here.

pkgs/applications/networking/calls/default.nix+8−16

This diff is too big to show here.

pkgs/applications/networking/cawbird/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/charles/default.nix+3−10

This diff is too big to show here.

pkgs/applications/networking/cisco-packet-tracer/7.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/cisco-packet-tracer/8.nix+3−4

This diff is too big to show here.

pkgs/applications/networking/cloudflare-dyndns/default.nix−53

This diff is too big to show here.

pkgs/applications/networking/cloudflared/default.nix+9−20

This diff is too big to show here.

pkgs/applications/networking/cluster/argo-rollouts/default.nix−27

This diff is too big to show here.

pkgs/applications/networking/cluster/argo/default.nix+6−9

This diff is too big to show here.

pkgs/applications/networking/cluster/argocd-autopilot/default.nix−54

This diff is too big to show here.

pkgs/applications/networking/cluster/argocd/default.nix+32−16

This diff is too big to show here.

pkgs/applications/networking/cluster/arkade/default.nix−47

This diff is too big to show here.

pkgs/applications/networking/cluster/assign-lb-ip/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/atlantis/default.nix+5−8

This diff is too big to show here.

pkgs/applications/networking/cluster/bosh-cli/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/cilium/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/cloudfoundry-cli/default.nix+3−4

This diff is too big to show here.

pkgs/applications/networking/cluster/clusterctl/default.nix−41

This diff is too big to show here.

pkgs/applications/networking/cluster/cmctl/default.nix−38

This diff is too big to show here.

pkgs/applications/networking/cluster/cni/plugins.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/driftctl/default.nix−56

This diff is too big to show here.

pkgs/applications/networking/cluster/flink/default.nix+3−2

This diff is too big to show here.

pkgs/applications/networking/cluster/fluxcd/default.nix+13−12

This diff is too big to show here.

pkgs/applications/networking/cluster/fluxcd/patches/disable-tests-ssh_key.patch+7−5

This diff is too big to show here.

pkgs/applications/networking/cluster/fluxcd/update.sh+31−38

This diff is too big to show here.

pkgs/applications/networking/cluster/fluxctl/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/fn-cli/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/glooctl/default.nix−36

This diff is too big to show here.

pkgs/applications/networking/cluster/hadoop/default.nix+16−52

This diff is too big to show here.

pkgs/applications/networking/cluster/helm-docs/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/helm/chart-testing/default.nix+4−12

This diff is too big to show here.

pkgs/applications/networking/cluster/helm/default.nix+10−23

This diff is too big to show here.

pkgs/applications/networking/cluster/helm/plugins/helm-diff.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/cluster/helm/plugins/helm-s3.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/cluster/helm/plugins/helm-secrets.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/cluster/helmfile/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/helmsman/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/hubble/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/istioctl/default.nix+6−9

This diff is too big to show here.

pkgs/applications/networking/cluster/k0sctl/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/cluster/k3s/default.nix+126−165

This diff is too big to show here.

pkgs/applications/networking/cluster/k3s/patches/0001-scrips-download-strip-downloading-just-package-CRD.patch−41

This diff is too big to show here.

pkgs/applications/networking/cluster/k3s/patches/0002-Add-nixpkgs-patches.patch+81

This diff is too big to show here.

pkgs/applications/networking/cluster/k3s/update.sh+7−49

This diff is too big to show here.

pkgs/applications/networking/cluster/k3sup/default.nix−48

This diff is too big to show here.

pkgs/applications/networking/cluster/k9s/default.nix+6−9

This diff is too big to show here.

pkgs/applications/networking/cluster/kbst/default.nix−40

This diff is too big to show here.

pkgs/applications/networking/cluster/kconf/default.nix+3−7

This diff is too big to show here.

pkgs/applications/networking/cluster/kn/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/kompose/default.nix+7−17

This diff is too big to show here.

pkgs/applications/networking/cluster/kontemplate/default.nix+1

This diff is too big to show here.

pkgs/applications/networking/cluster/kops/default.nix+10−10

This diff is too big to show here.

pkgs/applications/networking/cluster/kpt/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/krane/Gemfile.lock+29−30

This diff is too big to show here.

pkgs/applications/networking/cluster/krane/default.nix+9

This diff is too big to show here.

pkgs/applications/networking/cluster/krane/gemset.nix+60−61

This diff is too big to show here.

pkgs/applications/networking/cluster/krelay/default.nix−31

This diff is too big to show here.

pkgs/applications/networking/cluster/kube-capacity/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/kube-score/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/kube3d/default.nix+14−31

This diff is too big to show here.

pkgs/applications/networking/cluster/kubebuilder/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/kubecfg/default.nix+7−7

This diff is too big to show here.

pkgs/applications/networking/cluster/kubecolor/default.nix−25

This diff is too big to show here.

pkgs/applications/networking/cluster/kubeconform/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/kubectl-doctor/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/kubectl-example/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/kubectl-tree/default.nix−23

This diff is too big to show here.

pkgs/applications/networking/cluster/kubectl/default.nix+29

This diff is too big to show here.

pkgs/applications/networking/cluster/kubedb-cli/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/kubeless/default.nix+38

This diff is too big to show here.

pkgs/applications/networking/cluster/kubelogin-oidc/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/kubelogin/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/kubemqctl/default.nix−25

This diff is too big to show here.

pkgs/applications/networking/cluster/kubent/default.nix−29

This diff is too big to show here.

pkgs/applications/networking/cluster/kubeone/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/kubergrunt/default.nix−31

This diff is too big to show here.

pkgs/applications/networking/cluster/kubernetes/default.nix+17−18

This diff is too big to show here.

pkgs/applications/networking/cluster/kubernetes/kubectl.nix−38

This diff is too big to show here.

pkgs/applications/networking/cluster/kubeseal/default.nix+4−2

This diff is too big to show here.

pkgs/applications/networking/cluster/kubeval/default.nix+5−9

This diff is too big to show here.

pkgs/applications/networking/cluster/kuma/default.nix−65

This diff is too big to show here.

pkgs/applications/networking/cluster/kumactl/default.nix+34

This diff is too big to show here.

pkgs/applications/networking/cluster/kuttl/default.nix−1

This diff is too big to show here.

pkgs/applications/networking/cluster/lens/default.nix+6−11

This diff is too big to show here.

pkgs/applications/networking/cluster/levant/default.nix+3−1

This diff is too big to show here.

pkgs/applications/networking/cluster/linkerd/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/cluster/linkerd/edge.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/linkerd/generic.nix+1

This diff is too big to show here.

pkgs/applications/networking/cluster/minikube/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/nerdctl/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/nixops/default.nix+3−7

This diff is too big to show here.

pkgs/applications/networking/cluster/nixops/poetry-git-overlay.nix+7−27

This diff is too big to show here.

pkgs/applications/networking/cluster/nixops/poetry.lock+130−190

This diff is too big to show here.

pkgs/applications/networking/cluster/nixops/pyproject.toml+3−8

This diff is too big to show here.

pkgs/applications/networking/cluster/nomad-autoscaler/default.nix+14−12

This diff is too big to show here.

pkgs/applications/networking/cluster/nomad-pack/default.nix−38

This diff is too big to show here.

pkgs/applications/networking/cluster/nomad/1.0.nix+11

This diff is too big to show here.

pkgs/applications/networking/cluster/nomad/1.1.nix+4−4

This diff is too big to show here.

pkgs/applications/networking/cluster/nomad/1.2.nix−12

This diff is too big to show here.

pkgs/applications/networking/cluster/nomad/generic.nix+6−11

This diff is too big to show here.

pkgs/applications/networking/cluster/nomad/genericModule.nix+54

This diff is too big to show here.

pkgs/applications/networking/cluster/ocm/default.nix−32

This diff is too big to show here.

pkgs/applications/networking/cluster/octant/default.nix+5−5

This diff is too big to show here.

pkgs/applications/networking/cluster/odo/default.nix−38

This diff is too big to show here.

pkgs/applications/networking/cluster/openshift/default.nix+45−36

This diff is too big to show here.

pkgs/applications/networking/cluster/pachyderm/default.nix−1

This diff is too big to show here.

pkgs/applications/networking/cluster/pgo-client/default.nix+3−4

This diff is too big to show here.

pkgs/applications/networking/cluster/pluto/default.nix−27

This diff is too big to show here.

pkgs/applications/networking/cluster/popeye/default.nix+4−3

This diff is too big to show here.

pkgs/applications/networking/cluster/qbec/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/rancher/default.nix+6−4

This diff is too big to show here.

pkgs/applications/networking/cluster/sonobuoy/default.nix+4−4

This diff is too big to show here.

pkgs/applications/networking/cluster/spacegun/node-composition.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/cluster/spark/default.nix+27−42

This diff is too big to show here.

pkgs/applications/networking/cluster/ssm-session-manager-plugin/default.nix+7−10

This diff is too big to show here.

pkgs/applications/networking/cluster/starboard/default.nix+7−39

This diff is too big to show here.

pkgs/applications/networking/cluster/stern/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/talosctl/default.nix−60

This diff is too big to show here.

pkgs/applications/networking/cluster/tanka/default.nix+3−4

This diff is too big to show here.

pkgs/applications/networking/cluster/tektoncd-cli/default.nix+9−16

This diff is too big to show here.

pkgs/applications/networking/cluster/temporal/default.nix+7−8

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix+26

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix+11

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix+29

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/default.nix+51−96

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix+26

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix+21

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix+32

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix+57

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix+26

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix+27

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/providers.json+667−771

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/teleport/default.nix+31

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/update-all-providers+7−10

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/update-provider+81−65

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/vercel/default.nix+23

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform-providers/vpsadmin/default.nix+29

This diff is too big to show here.

pkgs/applications/networking/cluster/terraform/default.nix+62−59

This diff is too big to show here.

pkgs/applications/networking/cluster/terragrunt/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/terranix/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/cluster/tfswitch/default.nix+5−3

This diff is too big to show here.

pkgs/applications/networking/cluster/tgswitch/default.nix−21

This diff is too big to show here.

pkgs/applications/networking/cluster/tilt/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/cluster/vcluster/default.nix−45

This diff is too big to show here.

pkgs/applications/networking/cluster/velero/default.nix+7−4

This diff is too big to show here.

pkgs/applications/networking/cluster/waypoint/default.nix+6−4

This diff is too big to show here.

pkgs/applications/networking/cluster/werf/default.nix−60

This diff is too big to show here.

pkgs/applications/networking/compactor/default.nix+21−33

This diff is too big to show here.

pkgs/applications/networking/cozy-drive/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/dnscontrol/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/droopy/default.nix−4

This diff is too big to show here.

pkgs/applications/networking/dropbox/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/feedreaders/gnome-feeds/default.nix−2

This diff is too big to show here.

pkgs/applications/networking/feedreaders/indigenous-desktop/default.nix−54

This diff is too big to show here.

pkgs/applications/networking/feedreaders/newsboat/default.nix+6−3

This diff is too big to show here.

pkgs/applications/networking/feedreaders/photon/default.nix−27

This diff is too big to show here.

pkgs/applications/networking/feedreaders/rawdog/default.nix+26

This diff is too big to show here.

pkgs/applications/networking/feedreaders/rss2email/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/feedreaders/rssguard/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/firewalld/default.nix−104

This diff is too big to show here.

pkgs/applications/networking/firewalld/respect-xml-catalog-files-var.patch−13

This diff is too big to show here.

pkgs/applications/networking/flexget/default.nix+4−10

This diff is too big to show here.

pkgs/applications/networking/ftp/filezilla/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/ftp/gftp/default.nix−57

This diff is too big to show here.

pkgs/applications/networking/gftp/default.nix+56

This diff is too big to show here.

pkgs/applications/networking/giara/default.nix+10−28

This diff is too big to show here.

pkgs/applications/networking/gmailctl/default.nix+6−5

This diff is too big to show here.

pkgs/applications/networking/gns3/default.nix+8−7

This diff is too big to show here.

pkgs/applications/networking/gns3/gui.nix+7−47

This diff is too big to show here.

pkgs/applications/networking/gns3/server.nix+17−48

This diff is too big to show here.

pkgs/applications/networking/gopher/sacc/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/hydroxide/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/hyprspace/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/ids/suricata/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/ids/zeek/default.nix+6−23

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/SkypeExport/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/alfaview/default.nix−78

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/baresip/default.nix+24−92

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/bitlbee-mastodon/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/bitlbee/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/blink/default.nix+68

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/blink/pythonpath.patch+49

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/bluejeans/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/caprine-bin/build-from-appimage.nix−50

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/caprine-bin/build-from-dmg.nix−35

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/caprine-bin/default.nix−25

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/chatty/default.nix+2−7

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/cinny/default.nix−31

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/coyim/default.nix−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/deltachat-cursed/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/deltachat-desktop/default.nix+26−53

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/deltachat-desktop/no-static-lib.patch−39

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/deltachat-desktop/package.json+12−15

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/deltachat-desktop/update.sh+7−10

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/dino/default.nix+5−14

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/discord/base.nix+93

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/discord/darwin.nix−14

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/discord/default.nix+29−78

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/discord/linux.nix−118

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/element/element-desktop-package.json+12−18

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/element/element-desktop.nix+14−34

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/element/keytar/default.nix+1−8

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/element/pin.json+4−4

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/element/seshat/default.nix+3−9

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/ferdi/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/fluffychat/default.nix−81

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/fractal/default.nix+1−12

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/franz/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/franz/generic.nix+3−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/gajim/default.nix+4−19

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/gitter/default.nix+3−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/gomuks/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/gotktrix/default.nix−42

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/gtmess/default.nix+20

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/gurk-rs/default.nix−30

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jackline/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_args_common−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jami/config/ffmpeg_patches−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jami/config/pjsip_patches+19

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jami/daemon.nix+3−11

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jami/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jami/pjproject-src.nix−6

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jami/update.sh+1−9

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix+3−5

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/jitsi/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/kaidan/default.nix−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/kdeltachat/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/linphone/default.nix+13−40

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/linphone/do-not-build-linphone-sdk.patch+31−56

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/linphone/no-store-path-in-autostart.patch−27

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/linphone/remove-bc_compute_full_version-usage.patch+6−6

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/matrixcli/default.nix+5−5

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix+100−86

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/mcabber/default.nix+2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/mikutter/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/mirage/default.nix+6−9

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/mm/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/neochat/default.nix+3−9

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/nheko/default.nix+2−12

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/pantalaimon/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix+10−8

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-googlechat/default.nix−27

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix+8−6

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/pond/default.nix+8−8

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/profanity/default.nix+4−4

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/psi-plus/default.nix+2−4

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/pybitmessage/default.nix+40

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/qtox/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/rambox/pro.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/rambox/rambox.nix+2−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/ricochet/default.nix+9−26

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/ripcord/darwin.nix−33

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/ripcord/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/rocketchat-desktop/default.nix+4−8

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/schildichat/pin.json+4−7

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/schildichat/schildichat-desktop.nix+20−20

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/schildichat/schildichat-web.nix+10−35

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/schildichat/update.sh+8−16

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/scudcloud/default.nix+7−9

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/session-desktop-appimage/default.nix+5−41

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/signal-cli/default.nix+7−7

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/signal-desktop/default.nix+41−11

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/signalbackup-tools/apple-sdk-missing-utimensat.patch−34

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix−45

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/signald/0001-Fetch-buildconfig-during-gradle-build-inside-Nix-FOD.patch−35

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/signald/0002-buildconfig-local-deps-fixes.patch−60

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/signald/default.nix+26−20

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/signald/gradle-plugin.patch+19

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/sky/default.nix−66

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix+4−3

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/slack/default.nix+31−32

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/slack/update.sh+2−9

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/teams/default.nix+78−119

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/teamspeak/client.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix+33−191

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/kf594.patch−57

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/kotato-10.12-sdk.patch−424

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/shortcuts-binary-path.patch−38

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt-10.12-sdk.patch−68

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix+15−111

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/with-webkit.nix−23

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix+6−20

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/tdesktop/kf594.diff−57

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/telegram/tdesktop/tg_owt.nix+3−5

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/tensor/default.nix+6−7

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/threema-desktop/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/torchat/default.nix+6−6

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/twinkle/default.nix+18−4

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/viber/default.nix+4−4

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/vk-messenger/default.nix+5−5

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/wavebox/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/whatsapp-for-linux/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/wire-desktop/default.nix+9−8

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/zoom-us/default.nix+9−48

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/zulip-term/default.nix−1

This diff is too big to show here.

pkgs/applications/networking/instant-messengers/zulip/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/ipfs-cluster/default.nix+4−4

This diff is too big to show here.

pkgs/applications/networking/ipfs-migrator/all-migrations.nix−63

This diff is too big to show here.

pkgs/applications/networking/ipfs-migrator/default.nix+20−16

This diff is too big to show here.

pkgs/applications/networking/ipfs-migrator/unwrapped.nix−35

This diff is too big to show here.

pkgs/applications/networking/ipfs/default.nix+10−20

This diff is too big to show here.

pkgs/applications/networking/ipget/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/irc/bip/default.nix+1−2

This diff is too big to show here.

pkgs/applications/networking/irc/catgirl/default.nix+2−4

This diff is too big to show here.

pkgs/applications/networking/irc/communi/default.nix+4−5

This diff is too big to show here.

pkgs/applications/networking/irc/convos/default.nix+5−6

This diff is too big to show here.

pkgs/applications/networking/irc/hexchat/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/irc/ii/default.nix+5−5

This diff is too big to show here.

pkgs/applications/networking/irc/ircdog/default.nix+4−5

This diff is too big to show here.

pkgs/applications/networking/irc/irssi/default.nix+5−15

This diff is too big to show here.

pkgs/applications/networking/irc/irssi/fish/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/irc/kirc/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/irc/quassel/0001-common-Disable-enum-type-stream-operators-for-Qt-5.1.patch+37

This diff is too big to show here.

pkgs/applications/networking/irc/quassel/default.nix+13−6

This diff is too big to show here.

pkgs/applications/networking/irc/senpai/default.nix+4−4

This diff is too big to show here.

pkgs/applications/networking/irc/sic/default.nix+1−4

This diff is too big to show here.

pkgs/applications/networking/irc/srain/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/irc/tiny/default.nix+5−9

This diff is too big to show here.

pkgs/applications/networking/irc/weechat/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/irc/wraith/configure.patch+3−3

This diff is too big to show here.

pkgs/applications/networking/irc/wraith/default.nix+5−5

This diff is too big to show here.

pkgs/applications/networking/irc/wraith/dlopen.patch+6−6

This diff is too big to show here.

pkgs/applications/networking/jmeter/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/juju/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/libcoap/default.nix+9−11

This diff is too big to show here.

pkgs/applications/networking/lieer/default.nix+1

This diff is too big to show here.

pkgs/applications/networking/linssid/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/maestral-qt/default.nix+2−7

This diff is too big to show here.

pkgs/applications/networking/mailreaders/aerc/default.nix+16−25

This diff is too big to show here.

pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch+56−86

This diff is too big to show here.

pkgs/applications/networking/mailreaders/afew/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/mailreaders/alot/default.nix−97

This diff is too big to show here.

pkgs/applications/networking/mailreaders/claws-mail/default.nix+41−14

This diff is too big to show here.

pkgs/applications/networking/mailreaders/electron-mail/default.nix+4−7

This diff is too big to show here.

pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix+3−3

This diff is too big to show here.

pkgs/applications/networking/mailreaders/evolution/evolution/default.nix+4−11

This diff is too big to show here.

pkgs/applications/networking/mailreaders/hasmail/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/mailreaders/himalaya/default.nix+6−10

This diff is too big to show here.

pkgs/applications/networking/mailreaders/mailpile/default.nix+52

This diff is too big to show here.

pkgs/applications/networking/mailreaders/mailspring/default.nix+4−9

This diff is too big to show here.

pkgs/applications/networking/mailreaders/mblaze/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/mailreaders/meli/default.nix+4−3

This diff is too big to show here.

pkgs/applications/networking/mailreaders/mlarchive2maildir/default.nix+1−1

This diff is too big to show here.

pkgs/applications/networking/mailreaders/mutt/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/mailreaders/neomutt/default.nix+12−2

This diff is too big to show here.

pkgs/applications/networking/mailreaders/notbit/default.nix+30

This diff is too big to show here.

pkgs/applications/networking/mailreaders/notmuch-bower/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/mailreaders/notmuch/default.nix+7−24

This diff is too big to show here.

pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix+67−88

This diff is too big to show here.

pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix+261−261

This diff is too big to show here.

pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch−13

This diff is too big to show here.

pkgs/applications/networking/mailreaders/thunderbird/packages.nix+4−8

This diff is too big to show here.

pkgs/applications/networking/mailreaders/tutanota-desktop/default.nix+2−2

This diff is too big to show here.

pkgs/applications/networking/mhost/default.nix+1−3

This diff is too big to show here.

pkgs/applications/networking/misc/zammad/0001-nulldb.patch−15

This diff is too big to show here.

pkgs/applications/networking/misc/zammad/default.nix−141

This diff is too big to show here.

pkgs/applications/networking/misc/zammad/gemset.nix−2608

This diff is too big to show here.

pkgs/applications/networking/misc/zammad/package.json−18

This diff is too big to show here.

pkgs/applications/networking/misc/zammad/source.json−7

This diff is too big to show here.

pkgs/applications/networking/misc/zammad/update.nix−37

This diff is too big to show here.