git.iko.soy/typeable/nixpkgs
on 8da27ef help sign in
21258 files changed+487262−915205
since splitsnapshots
unifiedsplit
.editorconfig+14−5 .git-blame-ignore-revs−32 .github/CODEOWNERS+46−109 .github/ISSUE_TEMPLATE/bug_report.md+13−10 .github/ISSUE_TEMPLATE/out_of_date_package_report.md+3−3 .github/PULL_REQUEST_TEMPLATE.md+18−29 .github/labeler.yml+6−11 .github/workflows/backport.yml+3−9 .github/workflows/basic-eval.yml−26 .github/workflows/direct-push.yml+1−1 .github/workflows/editorconfig.yml+13−10 .github/workflows/labels.yml+1−6 .github/workflows/manual-nixos.yml+4−4 .github/workflows/manual-nixpkgs.yml+4−4 .github/workflows/nixos-manual.yml+2−2 .github/workflows/no-channel.yml−21 .github/workflows/pending-set.yml−5 .github/workflows/periodic-merge-24h.yml+3−11 .github/workflows/periodic-merge-6h.yml+7−3 .github/workflows/update-terraform-providers.yml−48 .gitignore−7 .version+1−1 CONTRIBUTING.md+11−56 COPYING+1−1 README.md+8−14 doc/Makefile+2−7 doc/build-aux/pandoc-filters/docbook-reader/citerefentry-to-rst-role.lua−23 doc/build-aux/pandoc-filters/docbook-writer/labelless-link-is-xref.lua−34 doc/build-aux/pandoc-filters/docbook-writer/rst-roles.lua−36 doc/build-aux/pandoc-filters/link-unix-man-references.lua−17 doc/build-aux/pandoc-filters/myst-reader/roles.lua−29 doc/build-aux/pandoc-filters/myst-writer/roles.lua−25 doc/builders/fetchers.chapter.md+12−49 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+4−4 doc/builders/packages/etc-files.section.md−18 doc/builders/packages/firefox.section.md+7−9 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/index.xml−1 doc/builders/packages/linux.section.md+11−11 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/fhs-environments.section.md−4 doc/builders/special/mkshell.section.md+6−26 doc/builders/testers.chapter.md−82 doc/builders/trivial-builders.chapter.md+3−127 doc/contributing/coding-conventions.chapter.md+12−73 doc/contributing/contributing-to-documentation.chapter.md−7 doc/contributing/reviewing-contributions.chapter.md+4−5 doc/contributing/submitting-changes.chapter.md+10−20 doc/functions/library/attrsets.xml+4−4 doc/hooks/index.xml−10 doc/hooks/postgresql-test-hook.section.md−59 doc/labelless-link-is-xref.lua+24 doc/languages-frameworks/agda.section.md+1−63 doc/languages-frameworks/beam.section.md+54−132 doc/languages-frameworks/chicken.section.md−49 doc/languages-frameworks/coq.section.md+2−4 doc/languages-frameworks/crystal.section.md+2−2 doc/languages-frameworks/cuda.section.md−34 doc/languages-frameworks/dhall.section.md+15−46 doc/languages-frameworks/dotnet.section.md+6−63 doc/languages-frameworks/emscripten.section.md+2−2 doc/languages-frameworks/gnome.section.md+3−17 doc/languages-frameworks/go.section.md+15−21 doc/languages-frameworks/idris.section.md+4−1 doc/languages-frameworks/index.xml+1−6 doc/languages-frameworks/java.section.md−9 doc/languages-frameworks/javascript.section.md−278 doc/languages-frameworks/lua.section.md+6−4 doc/languages-frameworks/nim.section.md−91 doc/languages-frameworks/node.section.md+51 doc/languages-frameworks/ocaml.section.md+6−44 doc/languages-frameworks/octave.section.md−92 doc/languages-frameworks/perl.section.md+9−5 doc/languages-frameworks/python.section.md+10−88 doc/languages-frameworks/r.section.md+8−12 doc/languages-frameworks/ruby.section.md+1−14 doc/languages-frameworks/rust.section.md+85−161 doc/languages-frameworks/texlive.section.md+1−1 doc/languages-frameworks/vim.section.md+7−37 doc/manual.xml−2 doc/stdenv/cross-compilation.chapter.md+12−37 doc/stdenv/meta.chapter.md+5−62 doc/stdenv/multiple-output.chapter.md+1−1 doc/stdenv/stdenv.chapter.md+21−112 doc/using/overlays.chapter.md+3−21 doc/using/overrides.chapter.md+2−6 flake.nix+41−9 lib/asserts.nix+12−10 lib/attrsets.nix+29−141 lib/customisation.nix+3−50 lib/default.nix+16−26 lib/deprecated.nix+5−5 lib/fixed-points.nix+5−5 lib/flake.nix+1−1 lib/flakes.nix−22 lib/generators.nix+5−77 lib/licenses.nix+142−200 lib/lists.nix+13−11 lib/meta.nix+1−42 lib/modules.nix+89−342 lib/options.nix+19−84 lib/sources.nix+49−70 lib/strings.nix+6−210 lib/systems/default.nix+1−4 lib/systems/doubles.nix+7−17 lib/systems/examples.nix−39 lib/systems/inspect.nix+1−11 lib/systems/parse.nix+5−18 lib/systems/platforms.nix+5−60 lib/systems/supported.nix−26 lib/tests/flakes/subflakeTest/flake.nix−8 lib/tests/flakes/subflakeTest/subflake/flake.nix−5 lib/tests/maintainers.nix+2−6 lib/tests/misc.nix+2−464 lib/tests/modules.sh+121−180 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-submodule-via-evalModules.nix−28 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/modules/types-anything/functions.nix+3−9 lib/tests/release.nix+1−5 lib/tests/sources.sh+9−11 lib/tests/systems.nix+3−6 lib/trivial.nix+10−128 lib/types.nix+52−153 maintainers/maintainer-list.nix+202−2620 maintainers/scripts/check-maintainer-github-handles.sh+9−9 maintainers/scripts/copy-tarballs.pl+1−15 maintainers/scripts/db-to-md.sh−88 maintainers/scripts/dep-licenses.sh+1−1 maintainers/scripts/doc/escape-code-markup.py−97 maintainers/scripts/doc/replace-xrefs-by-empty-links.py−32 maintainers/scripts/doc/unknown-code-language.lua−12 maintainers/scripts/feature-freeze-teams.pl−98 maintainers/scripts/find-tarballs.nix+1−1 maintainers/scripts/haskell/dependencies.nix−10 maintainers/scripts/haskell/hydra-report.hs+33−115 maintainers/scripts/haskell/maintained-broken-pkgs.nix−22 maintainers/scripts/haskell/maintainer-handles.nix−7 maintainers/scripts/haskell/mark-broken.sh+3−4 maintainers/scripts/haskell/merge-and-open-pr.sh−122 maintainers/scripts/haskell/regenerate-hackage-packages.sh+1−1 maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh+1−1 maintainers/scripts/haskell/test-configurations.nix−136 maintainers/scripts/haskell/update-stackage.sh+12−25 maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh−22 maintainers/scripts/luarocks-packages.csv+87−87 maintainers/scripts/pluginupdate.py+212−358 maintainers/scripts/rebuild-amount.sh+79−86 maintainers/scripts/remove-old-aliases.py−211 maintainers/scripts/update-luarocks-packages+125−207 maintainers/scripts/update-luarocks-shell.nix+3−4 maintainers/scripts/update-ruby-packages+1−4 maintainers/scripts/update.nix+3−3 maintainers/scripts/update.py+1−5 maintainers/scripts/vanity.sh+19−19 maintainers/team-list.nix+5−458 nixos/default.nix+24−1 nixos/doc/manual/README+3 nixos/doc/manual/README.md−3 nixos/doc/manual/administration/boot-problems.section.md+1−1 nixos/doc/manual/administration/cleaning-store.chapter.md−62 nixos/doc/manual/administration/cleaning-store.xml+63 nixos/doc/manual/administration/container-networking.section.md−44 nixos/doc/manual/administration/container-networking.xml+59 nixos/doc/manual/administration/containers.chapter.md−28 nixos/doc/manual/administration/containers.xml+34 nixos/doc/manual/administration/control-groups.chapter.md−59 nixos/doc/manual/administration/control-groups.xml+65 nixos/doc/manual/administration/declarative-containers.section.md−48 nixos/doc/manual/administration/declarative-containers.xml+60 nixos/doc/manual/administration/imperative-containers.section.md−115 nixos/doc/manual/administration/imperative-containers.xml+123 nixos/doc/manual/administration/logging.chapter.md−38 nixos/doc/manual/administration/logging.xml+43 nixos/doc/manual/administration/maintenance-mode.section.md−11 nixos/doc/manual/administration/maintenance-mode.xml+16 nixos/doc/manual/administration/network-problems.section.md−21 nixos/doc/manual/administration/network-problems.xml+27 nixos/doc/manual/administration/rebooting.chapter.md−30 nixos/doc/manual/administration/rebooting.xml+35 nixos/doc/manual/administration/rollback.section.md−38 nixos/doc/manual/administration/rollback.xml+41 nixos/doc/manual/administration/running.xml+8−8 nixos/doc/manual/administration/service-mgmt.chapter.md−120 nixos/doc/manual/administration/service-mgmt.xml+140 nixos/doc/manual/administration/store-corruption.section.md−28 nixos/doc/manual/administration/store-corruption.xml+36 nixos/doc/manual/administration/troubleshooting.chapter.md−12 nixos/doc/manual/administration/troubleshooting.xml+16 nixos/doc/manual/administration/user-sessions.chapter.md−43 nixos/doc/manual/administration/user-sessions.xml+45 nixos/doc/manual/configuration/ad-hoc-network-config.section.md−13 nixos/doc/manual/configuration/ad-hoc-network-config.xml+20 nixos/doc/manual/configuration/ad-hoc-packages.section.md−51 nixos/doc/manual/configuration/ad-hoc-packages.xml+61 nixos/doc/manual/configuration/adding-custom-packages.section.md−74 nixos/doc/manual/configuration/adding-custom-packages.xml+73 nixos/doc/manual/configuration/config-file.section.md−175 nixos/doc/manual/configuration/config-file.xml+216 nixos/doc/manual/configuration/config-syntax.chapter.md−19 nixos/doc/manual/configuration/config-syntax.xml+25 nixos/doc/manual/configuration/configuration.xml+13−13 nixos/doc/manual/configuration/customizing-packages.section.md−74 nixos/doc/manual/configuration/customizing-packages.xml+86 nixos/doc/manual/configuration/declarative-packages.section.md−46 nixos/doc/manual/configuration/declarative-packages.xml+54 nixos/doc/manual/configuration/file-systems.chapter.md−42 nixos/doc/manual/configuration/file-systems.xml+58 nixos/doc/manual/configuration/firewall.section.md−32 nixos/doc/manual/configuration/firewall.xml+37 nixos/doc/manual/configuration/gpu-accel.chapter.md−204 nixos/doc/manual/configuration/gpu-accel.xml+262 nixos/doc/manual/configuration/ipv4-config.section.md−35 nixos/doc/manual/configuration/ipv4-config.xml+43 nixos/doc/manual/configuration/ipv6-config.section.md−42 nixos/doc/manual/configuration/ipv6-config.xml+54 nixos/doc/manual/configuration/kubernetes.chapter.md−104 nixos/doc/manual/configuration/kubernetes.xml+112 nixos/doc/manual/configuration/linux-kernel.chapter.md−140 nixos/doc/manual/configuration/linux-kernel.xml+138 nixos/doc/manual/configuration/luks-file-systems.section.md−77 nixos/doc/manual/configuration/luks-file-systems.xml+78 nixos/doc/manual/configuration/modularity.section.md−133 nixos/doc/manual/configuration/modularity.xml+146 nixos/doc/manual/configuration/network-manager.section.md−42 nixos/doc/manual/configuration/network-manager.xml+48 nixos/doc/manual/configuration/networking.chapter.md−16 nixos/doc/manual/configuration/networking.xml+20 nixos/doc/manual/configuration/package-mgmt.chapter.md−18 nixos/doc/manual/configuration/package-mgmt.xml+31 nixos/doc/manual/configuration/profiles.chapter.md−34 nixos/doc/manual/configuration/profiles.xml+39 nixos/doc/manual/configuration/profiles/all-hardware.section.md−11 nixos/doc/manual/configuration/profiles/all-hardware.xml+21 nixos/doc/manual/configuration/profiles/base.section.md−7 nixos/doc/manual/configuration/profiles/base.xml+15 nixos/doc/manual/configuration/profiles/clone-config.section.md−11 nixos/doc/manual/configuration/profiles/clone-config.xml+21 nixos/doc/manual/configuration/profiles/demo.section.md−4 nixos/doc/manual/configuration/profiles/demo.xml+14 nixos/doc/manual/configuration/profiles/docker-container.section.md−7 nixos/doc/manual/configuration/profiles/docker-container.xml+16 nixos/doc/manual/configuration/profiles/graphical.section.md−10 nixos/doc/manual/configuration/profiles/graphical.xml+20 nixos/doc/manual/configuration/profiles/hardened.section.md−20 nixos/doc/manual/configuration/profiles/hardened.xml+32 nixos/doc/manual/configuration/profiles/headless.section.md−9 nixos/doc/manual/configuration/profiles/headless.xml+19 nixos/doc/manual/configuration/profiles/installation-device.section.md−24 nixos/doc/manual/configuration/profiles/installation-device.xml+36 nixos/doc/manual/configuration/profiles/minimal.section.md−9 nixos/doc/manual/configuration/profiles/minimal.xml+17 nixos/doc/manual/configuration/profiles/qemu-guest.section.md−7 nixos/doc/manual/configuration/profiles/qemu-guest.xml+17 nixos/doc/manual/configuration/renaming-interfaces.section.md−51 nixos/doc/manual/configuration/renaming-interfaces.xml+67 nixos/doc/manual/configuration/ssh.section.md−19 nixos/doc/manual/configuration/ssh.xml+27 nixos/doc/manual/configuration/sshfs-file-systems.section.md+1−1 nixos/doc/manual/configuration/subversion.chapter.md−102 nixos/doc/manual/configuration/subversion.xml+140 nixos/doc/manual/configuration/summary.section.md−46 nixos/doc/manual/configuration/summary.xml+227 nixos/doc/manual/configuration/user-mgmt.chapter.md−92 nixos/doc/manual/configuration/user-mgmt.xml+88 nixos/doc/manual/configuration/wayland.chapter.md−27 nixos/doc/manual/configuration/wayland.xml+33 nixos/doc/manual/configuration/wireless.section.md−67 nixos/doc/manual/configuration/wireless.xml+70 nixos/doc/manual/configuration/x-windows.chapter.md−337 nixos/doc/manual/configuration/x-windows.xml+355 nixos/doc/manual/configuration/xfce.chapter.md−52 nixos/doc/manual/configuration/xfce.xml+59 nixos/doc/manual/default.nix+6−19 nixos/doc/manual/development/activation-script.section.md−72 nixos/doc/manual/development/building-nixos.chapter.md+18 nixos/doc/manual/development/building-parts.chapter.md−74 nixos/doc/manual/development/building-parts.xml+121 nixos/doc/manual/development/development.xml+7−7 nixos/doc/manual/development/freeform-modules.section.md−79 nixos/doc/manual/development/freeform-modules.xml+68 nixos/doc/manual/development/importing-modules.section.md−46 nixos/doc/manual/development/importing-modules.xml+56 nixos/doc/manual/development/linking-nixos-tests-to-packages.section.md−6 nixos/doc/manual/development/meta-attributes.section.md−66 nixos/doc/manual/development/meta-attributes.xml+63 nixos/doc/manual/development/nixos-tests.chapter.md−13 nixos/doc/manual/development/nixos-tests.xml+19 nixos/doc/manual/development/option-declarations.section.md−221 nixos/doc/manual/development/option-declarations.xml+199 nixos/doc/manual/development/option-def.section.md−91 nixos/doc/manual/development/option-def.xml+99 nixos/doc/manual/development/option-types.section.md−583 nixos/doc/manual/development/option-types.xml+914 nixos/doc/manual/development/replace-modules.section.md−64 nixos/doc/manual/development/replace-modules.xml+79 nixos/doc/manual/development/running-nixos-tests-interactively.section.md+17−8 nixos/doc/manual/development/running-nixos-tests.section.md+2−2 nixos/doc/manual/development/settings-options.section.md−251 nixos/doc/manual/development/settings-options.xml+226 nixos/doc/manual/development/sources.chapter.md−77 nixos/doc/manual/development/sources.xml+85 nixos/doc/manual/development/testing-installer.chapter.md−18 nixos/doc/manual/development/testing-installer.xml+22 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-documentation.chapter.md−93 nixos/doc/manual/development/writing-documentation.xml+150 nixos/doc/manual/development/writing-modules.chapter.md−208 nixos/doc/manual/development/writing-modules.xml+191 nixos/doc/manual/development/writing-nixos-tests.section.md+30−111 nixos/doc/manual/from_md/administration/boot-problems.section.xml+1−1 nixos/doc/manual/from_md/administration/cleaning-store.chapter.xml−72 nixos/doc/manual/from_md/administration/container-networking.section.xml−54 nixos/doc/manual/from_md/administration/containers.chapter.xml−31 nixos/doc/manual/from_md/administration/control-groups.chapter.xml−67 nixos/doc/manual/from_md/administration/declarative-containers.section.xml−60 nixos/doc/manual/from_md/administration/imperative-containers.section.xml−132 nixos/doc/manual/from_md/administration/logging.chapter.xml−45 nixos/doc/manual/from_md/administration/maintenance-mode.section.xml−14 nixos/doc/manual/from_md/administration/network-problems.section.xml−25 nixos/doc/manual/from_md/administration/rebooting.chapter.xml−38 nixos/doc/manual/from_md/administration/rollback.section.xml−42 nixos/doc/manual/from_md/administration/service-mgmt.chapter.xml−141 nixos/doc/manual/from_md/administration/store-corruption.section.xml−34 nixos/doc/manual/from_md/administration/troubleshooting.chapter.xml−12 nixos/doc/manual/from_md/administration/user-sessions.chapter.xml−46 nixos/doc/manual/from_md/configuration/ad-hoc-network-config.section.xml−16 nixos/doc/manual/from_md/configuration/ad-hoc-packages.section.xml−59 nixos/doc/manual/from_md/configuration/adding-custom-packages.section.xml−80 nixos/doc/manual/from_md/configuration/config-file.section.xml−231 nixos/doc/manual/from_md/configuration/config-syntax.chapter.xml−21 nixos/doc/manual/from_md/configuration/customizing-packages.section.xml−90 nixos/doc/manual/from_md/configuration/declarative-packages.section.xml−53 nixos/doc/manual/from_md/configuration/file-systems.chapter.xml−55 nixos/doc/manual/from_md/configuration/firewall.section.xml−39 nixos/doc/manual/from_md/configuration/gpu-accel.chapter.xml−239 nixos/doc/manual/from_md/configuration/ipv4-config.section.xml−43 nixos/doc/manual/from_md/configuration/ipv6-config.section.xml−47 nixos/doc/manual/from_md/configuration/kubernetes.chapter.xml−126 nixos/doc/manual/from_md/configuration/linux-kernel.chapter.xml−157 nixos/doc/manual/from_md/configuration/luks-file-systems.section.xml−84 nixos/doc/manual/from_md/configuration/modularity.section.xml−152 nixos/doc/manual/from_md/configuration/network-manager.section.xml−49 nixos/doc/manual/from_md/configuration/networking.chapter.xml−15 nixos/doc/manual/from_md/configuration/package-mgmt.chapter.xml−28 nixos/doc/manual/from_md/configuration/profiles.chapter.xml−38 nixos/doc/manual/from_md/configuration/profiles/all-hardware.section.xml−15 nixos/doc/manual/from_md/configuration/profiles/base.section.xml−10 nixos/doc/manual/from_md/configuration/profiles/clone-config.section.xml−16 nixos/doc/manual/from_md/configuration/profiles/demo.section.xml−10 nixos/doc/manual/from_md/configuration/profiles/docker-container.section.xml−12 nixos/doc/manual/from_md/configuration/profiles/graphical.section.xml−14 nixos/doc/manual/from_md/configuration/profiles/hardened.section.xml−25 nixos/doc/manual/from_md/configuration/profiles/headless.section.xml−15 nixos/doc/manual/from_md/configuration/profiles/installation-device.section.xml−32 nixos/doc/manual/from_md/configuration/profiles/minimal.section.xml−13 nixos/doc/manual/from_md/configuration/profiles/qemu-guest.section.xml−11 nixos/doc/manual/from_md/configuration/renaming-interfaces.section.xml−62 nixos/doc/manual/from_md/configuration/ssh.section.xml−23 nixos/doc/manual/from_md/configuration/sshfs-file-systems.section.xml+2−2 nixos/doc/manual/from_md/configuration/subversion.chapter.xml−121 nixos/doc/manual/from_md/configuration/summary.section.xml−332 nixos/doc/manual/from_md/configuration/user-mgmt.chapter.xml−105 nixos/doc/manual/from_md/configuration/wayland.chapter.xml−31 nixos/doc/manual/from_md/configuration/wireless.section.xml−73 nixos/doc/manual/from_md/configuration/x-windows.chapter.xml−381 nixos/doc/manual/from_md/configuration/xfce.chapter.xml−62 nixos/doc/manual/from_md/development/activation-script.section.xml−150 nixos/doc/manual/from_md/development/building-nixos.chapter.xml+33 nixos/doc/manual/from_md/development/building-parts.chapter.xml−124 nixos/doc/manual/from_md/development/freeform-modules.section.xml−87 nixos/doc/manual/from_md/development/importing-modules.section.xml−47 nixos/doc/manual/from_md/development/linking-nixos-tests-to-packages.section.xml−10 nixos/doc/manual/from_md/development/meta-attributes.section.xml−95 nixos/doc/manual/from_md/development/nixos-tests.chapter.xml−14 nixos/doc/manual/from_md/development/option-declarations.section.xml−327 nixos/doc/manual/from_md/development/option-def.section.xml−104 nixos/doc/manual/from_md/development/option-types.section.xml−1038 nixos/doc/manual/from_md/development/replace-modules.section.xml−70 nixos/doc/manual/from_md/development/running-nixos-tests-interactively.section.xml+19−8 nixos/doc/manual/from_md/development/running-nixos-tests.section.xml+2−2 nixos/doc/manual/from_md/development/settings-options.section.xml−421 nixos/doc/manual/from_md/development/sources.chapter.xml−90 nixos/doc/manual/from_md/development/testing-installer.chapter.xml−22 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-documentation.chapter.xml−144 nixos/doc/manual/from_md/development/writing-modules.chapter.xml−245 nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml+392−521 nixos/doc/manual/from_md/installation/building-nixos.chapter.xml−106 nixos/doc/manual/from_md/installation/changing-config.chapter.xml−117 nixos/doc/manual/from_md/installation/installing-behind-a-proxy.section.xml−41 nixos/doc/manual/from_md/installation/installing-from-other-distro.section.xml−388 nixos/doc/manual/from_md/installation/installing-pxe.section.xml−42 nixos/doc/manual/from_md/installation/installing-usb.section.xml−35 nixos/doc/manual/from_md/installation/installing-virtualbox-guest.section.xml−92 nixos/doc/manual/from_md/installation/installing.chapter.xml−645 nixos/doc/manual/from_md/installation/obtaining.chapter.xml−48 nixos/doc/manual/from_md/installation/upgrading.chapter.xml−152 nixos/doc/manual/from_md/release-notes/rl-1803.section.xml−8 nixos/doc/manual/from_md/release-notes/rl-2009.section.xml+3−7 nixos/doc/manual/from_md/release-notes/rl-2105.section.xml+1−1 nixos/doc/manual/from_md/release-notes/rl-2111.section.xml+229−1798 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/changing-config.chapter.md−100 nixos/doc/manual/installation/changing-config.xml+97 nixos/doc/manual/installation/installation.xml+4−5 nixos/doc/manual/installation/installing-behind-a-proxy.section.md−29 nixos/doc/manual/installation/installing-behind-a-proxy.xml+48 nixos/doc/manual/installation/installing-from-other-distro.section.md−279 nixos/doc/manual/installation/installing-from-other-distro.xml+364 nixos/doc/manual/installation/installing-pxe.section.md−32 nixos/doc/manual/installation/installing-pxe.xml+50 nixos/doc/manual/installation/installing-usb.section.md−31 nixos/doc/manual/installation/installing-usb.xml+40 nixos/doc/manual/installation/installing-virtualbox-guest.section.md−59 nixos/doc/manual/installation/installing-virtualbox-guest.xml+103 nixos/doc/manual/installation/installing.chapter.md−482 nixos/doc/manual/installation/installing.xml+579 nixos/doc/manual/installation/obtaining.chapter.md−26 nixos/doc/manual/installation/obtaining.xml+54 nixos/doc/manual/installation/upgrading.chapter.md−118 nixos/doc/manual/installation/upgrading.xml+139 nixos/doc/manual/man-nixos-install.xml+4−9 nixos/doc/manual/man-nixos-rebuild.xml+7−45 nixos/doc/manual/man-pages.xml+2−7 nixos/doc/manual/md-to-db.sh+8−18 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-2009.section.md+1−3 nixos/doc/manual/release-notes/rl-2105.section.md+1−1 nixos/doc/manual/release-notes/rl-2111.section.md+17−464 nixos/doc/manual/release-notes/rl-2205.section.md−878 nixos/lib/build-vms.nix+9−16 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+23−66 nixos/lib/make-iso9660-image.sh−1 nixos/lib/make-multi-disk-zfs-image.nix−333 nixos/lib/make-options-doc/default.nix+103−78 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+20−30 nixos/lib/make-options-doc/optionsJSONtoXML.nix−6 nixos/lib/make-options-doc/sortXML.py−27 nixos/lib/make-single-disk-zfs-image.nix−322 nixos/lib/make-squashfs.nix+1−8 nixos/lib/qemu-common.nix−32 nixos/lib/qemu-flags.nix+32 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+1017 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+188−92 nixos/lib/utils.nix+4−54 nixos/maintainers/scripts/azure-new/examples/basic/image.nix+1−1 nixos/maintainers/scripts/azure-new/examples/basic/system.nix+1−1 nixos/maintainers/scripts/ec2/amazon-image-zfs.nix−12 nixos/maintainers/scripts/ec2/amazon-image.nix+28−98 nixos/maintainers/scripts/ec2/create-amis.sh+45−83 nixos/maintainers/scripts/lxd/lxd-image-inner.nix−102 nixos/maintainers/scripts/lxd/lxd-image.nix−34 nixos/maintainers/scripts/lxd/nix.tpl−9 nixos/maintainers/scripts/openstack/openstack-image-zfs.nix−101 nixos/maintainers/scripts/openstack/openstack-image.nix+8−9 nixos/modules/config/console.nix+10−28 nixos/modules/config/fonts/fontconfig.nix+17−1 nixos/modules/config/fonts/fontdir.nix+2−2 nixos/modules/config/fonts/fonts.nix+21−46 nixos/modules/config/gtk/gtk-icon-cache.nix−1 nixos/modules/config/i18n.nix+1−7 nixos/modules/config/krb5/default.nix+8−8 nixos/modules/config/ldap.nix+1−1 nixos/modules/config/malloc.nix+3−22 nixos/modules/config/networking.nix+7−11 nixos/modules/config/nsswitch.nix+6−9 nixos/modules/config/power-management.nix+2−2 nixos/modules/config/pulseaudio.nix+5−5 nixos/modules/config/resolvconf.nix+4−2 nixos/modules/config/shells-environment.nix+5−3 nixos/modules/config/swap.nix+7−21 nixos/modules/config/sysctl.nix+1−1 nixos/modules/config/system-environment.nix+36−34 nixos/modules/config/system-path.nix+9−19 nixos/modules/config/terminfo.nix+1−25 nixos/modules/config/unix-odbc-drivers.nix+1−1 nixos/modules/config/update-users-groups.pl+16−29 nixos/modules/config/users-groups.nix+27−64 nixos/modules/config/xdg/mime.nix+2−64 nixos/modules/config/xdg/portal.nix+12−23 nixos/modules/config/xdg/portals/wlr.nix+1−1 nixos/modules/hardware/all-firmware.nix+6−24 nixos/modules/hardware/ckb-next.nix+1−1 nixos/modules/hardware/cpu/intel-sgx.nix−69 nixos/modules/hardware/device-tree.nix+5−5 nixos/modules/hardware/digitalbitbox.nix+1−1 nixos/modules/hardware/flirc.nix−12 nixos/modules/hardware/gkraken.nix−18 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/default.nix → nixos/modules/hardware/onlykey.nix nixos/modules/hardware/onlykey.udev+4 nixos/modules/hardware/onlykey/onlykey.udev−18 nixos/modules/hardware/opengl.nix+2−2 nixos/modules/hardware/openrazer.nix+5−18 nixos/modules/hardware/opentabletdriver.nix+1−1 nixos/modules/hardware/pcmcia.nix−1 nixos/modules/hardware/printers.nix+11−6 nixos/modules/hardware/raid/hpsa.nix+1−4 nixos/modules/hardware/rtl-sdr.nix+4−8 nixos/modules/hardware/sata.nix+1−1 nixos/modules/hardware/sensor/iio.nix+1−1 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/nvidia.nix+23−58 nixos/modules/hardware/video/uvcvideo/default.nix+1−1 nixos/modules/hardware/video/webcam/facetimehd.nix+6−14 nixos/modules/hardware/xone.nix−23 nixos/modules/i18n/input-method/fcitx.nix+1−4 nixos/modules/i18n/input-method/fcitx5.nix+12−21 nixos/modules/i18n/input-method/ibus.nix+2−5 nixos/modules/i18n/input-method/kime.nix+2−4 nixos/modules/installer/cd-dvd/channel.nix+1−2 nixos/modules/installer/cd-dvd/installation-cd-base.nix−5 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+76−92 nixos/modules/installer/cd-dvd/system-tarball-fuloong2f.nix+1−1 nixos/modules/installer/cd-dvd/system-tarball-pc.nix+1−1 nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix+4−4 nixos/modules/installer/cd-dvd/system-tarball.nix+2−2 nixos/modules/installer/kexec/kexec-boot.nix−51 nixos/modules/installer/netboot/netboot.nix+6−8 nixos/modules/installer/sd-card/sd-image-aarch64.nix−15 nixos/modules/installer/sd-card/sd-image-raspberrypi.nix+1−1 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+5−5 nixos/modules/installer/tools/nix-fallback-paths.nix+4−5 nixos/modules/installer/tools/nixos-build-vms/build-vms.nix+5−18 nixos/modules/installer/tools/nixos-build-vms/nixos-build-vms.sh+3−4 nixos/modules/installer/tools/nixos-enter.sh+1−33 nixos/modules/installer/tools/nixos-generate-config.pl+6−24 nixos/modules/installer/tools/nixos-install.sh+18−19 nixos/modules/installer/tools/nixos-option/default.nix−1 nixos/modules/installer/tools/nixos-version.sh−1 nixos/modules/installer/tools/tools.nix+4−28 nixos/modules/installer/virtualbox-demo.nix+1−1 nixos/modules/misc/crashdump.nix+1−1 nixos/modules/misc/documentation.nix+53−129 nixos/modules/misc/extra-arguments.nix+2−2 nixos/modules/misc/ids.nix+54−67 nixos/modules/misc/locate.nix+69−134 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+10−18 nixos/modules/misc/nixpkgs/test.nix−8 nixos/modules/misc/version.nix+18−52 nixos/modules/misc/wordlist.nix−59 nixos/modules/module-list.nix+31−157 nixos/modules/profiles/all-hardware.nix+2−5 nixos/modules/profiles/base.nix−1 nixos/modules/profiles/hardened.nix+1−1 nixos/modules/profiles/headless.nix+1−1 nixos/modules/profiles/installation-device.nix−10 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/atop.nix+4−11 nixos/modules/programs/bandwhich.nix+1−3 nixos/modules/programs/bash/bash-completion.nix+1−1 nixos/modules/programs/bash/bash.nix+4−4 nixos/modules/programs/bcc.nix+3−3 nixos/modules/programs/calls.nix−27 nixos/modules/programs/captive-browser.nix+19−45 nixos/modules/programs/ccache.nix−2 nixos/modules/programs/chromium.nix+2−13 nixos/modules/programs/cnping.nix−21 nixos/modules/programs/command-not-found/command-not-found.nix+6−6 nixos/modules/programs/command-not-found/command-not-found.pl+12−37 nixos/modules/programs/dconf.nix+1−1 nixos/modules/programs/digitalbitbox/default.nix+1−1 nixos/modules/programs/dmrconfig.nix+1−1 nixos/modules/programs/environment.nix+2−9 nixos/modules/programs/evince.nix+4−13 nixos/modules/programs/extra-container.nix−17 nixos/modules/programs/feedbackd.nix−1 nixos/modules/programs/file-roller.nix+4−13 nixos/modules/programs/firejail.nix+8−15 nixos/modules/programs/flexoptix-app.nix+1−1 nixos/modules/programs/freetds.nix+1−1 nixos/modules/programs/gamemode.nix+1−3 nixos/modules/programs/git.nix−69 nixos/modules/programs/gnupg.nix+1−4 nixos/modules/programs/htop.nix−58 nixos/modules/programs/iftop.nix+1−3 nixos/modules/programs/iotop.nix+1−3 nixos/modules/programs/java.nix+1−1 nixos/modules/programs/k3b.nix−52 nixos/modules/programs/k40-whisperer.nix−40 nixos/modules/programs/kbdlight.nix+1−6 nixos/modules/programs/kclock.nix−13 nixos/modules/programs/kdeconnect.nix+2−2 nixos/modules/programs/less.nix+6−9 nixos/modules/programs/liboping.nix+1−3 nixos/modules/programs/mininet.nix+2−2 nixos/modules/programs/mosh.nix+1−1 nixos/modules/programs/msmtp.nix−2 nixos/modules/programs/mtr.nix+1−4 nixos/modules/programs/nbd.nix−19 nixos/modules/programs/neovim.nix+28−29 nixos/modules/programs/nethoscope.nix−30 nixos/modules/programs/nix-ld.nix−12 nixos/modules/programs/nncp.nix−101 nixos/modules/programs/noisetorch.nix+1−4 nixos/modules/programs/npm.nix+2−3 nixos/modules/programs/pantheon-tweaks.nix−19 nixos/modules/programs/phosh.nix+10−9 nixos/modules/programs/plotinus.nix+1−1 nixos/modules/programs/proxychains.nix+1−1 nixos/modules/programs/qt5ct.nix+1−1 nixos/modules/programs/shadow.nix+8−15 nixos/modules/programs/singularity.nix+1−6 nixos/modules/programs/slock.nix+1−6 nixos/modules/programs/spacefm.nix+6−6 nixos/modules/programs/ssh.nix+18−72 nixos/modules/programs/ssmtp.nix+188 nixos/modules/programs/starship.nix−51 nixos/modules/programs/sway.nix+4−7 nixos/modules/programs/thefuck.nix+6−7 nixos/modules/programs/tilp2.nix+28 nixos/modules/programs/tmux.nix+1−14 nixos/modules/programs/traceroute.nix+1−3 nixos/modules/programs/tsm-client.nix+8−8 nixos/modules/programs/udevil.nix+1−6 nixos/modules/programs/vim.nix+2−2 nixos/modules/programs/wavemon.nix+1−3 nixos/modules/programs/weylus.nix−47 nixos/modules/programs/wireshark.nix+1−1 nixos/modules/programs/wshowkeys.nix+1−6 nixos/modules/programs/xonsh.nix+1−2 nixos/modules/programs/xss-lock.nix+1−2 nixos/modules/programs/xwayland.nix+8−13 nixos/modules/programs/yabar.nix+1−2 nixos/modules/programs/zsh/oh-my-zsh.nix+1−1 nixos/modules/programs/zsh/zsh-autoenv.nix+1−1 nixos/modules/programs/zsh/zsh-autosuggestions.nix+11−20 nixos/modules/programs/zsh/zsh-syntax-highlighting.nix+2−2 nixos/modules/programs/zsh/zsh.nix+5−13 nixos/modules/rename.nix+44−63 nixos/modules/security/acme.nix+774 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/apparmor/includes.nix+1−1 nixos/modules/security/ca.nix+12−11 nixos/modules/security/chromium-suid-sandbox.nix+1−6 nixos/modules/security/dhparams.nix+3−5 nixos/modules/security/doas.nix+5−8 nixos/modules/security/duosec.nix+1−6 nixos/modules/security/google_oslogin.nix+3−6 nixos/modules/security/lock-kernel-modules.nix+9−19 nixos/modules/security/misc.nix+2−2 nixos/modules/security/pam.nix+151−435 nixos/modules/security/pam_mount.nix+8−80 nixos/modules/security/pam_usb.nix+2−12 nixos/modules/security/polkit.nix+7−15 nixos/modules/security/rtkit.nix+1−4 nixos/modules/security/sudo.nix+3−3 nixos/modules/security/systemd-confinement.nix+8−6 nixos/modules/security/tpm2.nix+5−5 nixos/modules/security/wrappers/default.nix+98−189 nixos/modules/services/admin/meshcentral.nix−53 nixos/modules/services/admin/oxidized.nix+2−2 nixos/modules/services/admin/pgadmin.nix−127 nixos/modules/services/amqp/activemq/default.nix+1−2 nixos/modules/services/amqp/rabbitmq.nix+8−25 nixos/modules/services/audio/botamusique.nix−1 nixos/modules/services/audio/hqplayerd.nix−142 nixos/modules/services/audio/icecast.nix−1 nixos/modules/services/audio/jack.nix+3−3 nixos/modules/services/audio/jmusicbot.nix+1−8 nixos/modules/services/audio/liquidsoap.nix+3−3 nixos/modules/services/audio/mopidy.nix+1−1 nixos/modules/services/audio/mpd.nix+44−24 nixos/modules/services/audio/mpdscribble.nix+1−12 nixos/modules/services/audio/navidrome.nix−71 nixos/modules/services/audio/networkaudiod.nix−19 nixos/modules/services/audio/roon-bridge.nix+6−8 nixos/modules/services/audio/roon-server.nix+4−9 nixos/modules/services/audio/slimserver.nix+1−1 nixos/modules/services/audio/snapserver.nix+23−31 nixos/modules/services/audio/spotifyd.nix+1−26 nixos/modules/services/audio/squeezelite.nix+21−17 nixos/modules/services/audio/ympd.nix+1−1 nixos/modules/services/backup/automysqlbackup.nix+2−3 nixos/modules/services/backup/bacula.nix−3 nixos/modules/services/backup/borgbackup.nix+23−77 nixos/modules/services/backup/btrbk.nix+1−1 nixos/modules/services/backup/duplicati.nix+9−26 nixos/modules/services/backup/mysql-backup.nix+1−2 nixos/modules/services/backup/postgresql-backup.nix+9−38 nixos/modules/services/backup/postgresql-wal-receiver.nix+5−5 nixos/modules/services/backup/restic-rest-server.nix+1−5 nixos/modules/services/backup/restic.nix+5−17 nixos/modules/services/backup/sanoid.nix+108−127 nixos/modules/services/backup/syncoid.nix+185−390 nixos/modules/services/backup/tarsnap.nix+18−25 nixos/modules/services/backup/tsm.nix+14−33 nixos/modules/services/backup/znapzend.nix+8−8 nixos/modules/services/backup/zrepl.nix−3 nixos/modules/services/blockchain/ethereum/geth.nix+2−3 nixos/modules/services/cluster/corosync/default.nix−112 nixos/modules/services/cluster/hadoop/conf.nix+12−25 nixos/modules/services/cluster/hadoop/default.nix+23−175 nixos/modules/services/cluster/hadoop/hdfs.nix+44−175 nixos/modules/services/cluster/hadoop/yarn.nix+29−155 nixos/modules/services/cluster/k3s/default.nix+13−27 nixos/modules/services/cluster/kubernetes/addon-manager.nix+3−7 nixos/modules/services/cluster/kubernetes/addons/dashboard.nix+332 nixos/modules/services/cluster/kubernetes/addons/dns.nix+15−50 nixos/modules/services/cluster/kubernetes/apiserver.nix+8−11 nixos/modules/services/cluster/kubernetes/controller-manager.nix+1−10 nixos/modules/services/cluster/kubernetes/default.nix+21−31 nixos/modules/services/cluster/kubernetes/flannel.nix+2−4 nixos/modules/services/cluster/kubernetes/kubelet.nix+3−14 nixos/modules/services/cluster/kubernetes/pki.nix+2−5 nixos/modules/services/cluster/kubernetes/proxy.nix+1−9 nixos/modules/services/cluster/kubernetes/scheduler.nix+3−10 nixos/modules/services/cluster/pacemaker/default.nix−52 nixos/modules/services/cluster/spark/default.nix−162 nixos/modules/services/computing/boinc/client.nix+2−2 nixos/modules/services/computing/foldingathome/client.nix+1−1 nixos/modules/services/computing/slurm/slurm.nix+9−18 nixos/modules/services/continuous-integration/buildbot/master.nix+8−11 nixos/modules/services/continuous-integration/buildbot/worker.nix+4−6 nixos/modules/services/continuous-integration/buildkite-agents.nix+3−4 nixos/modules/services/continuous-integration/github-runner.nix+37−58 nixos/modules/services/continuous-integration/gitlab-runner.nix+9−22 nixos/modules/services/continuous-integration/gocd-agent/default.nix+2−12 nixos/modules/services/continuous-integration/gocd-server/default.nix+2−17 nixos/modules/services/continuous-integration/hail.nix+1−1 nixos/modules/services/continuous-integration/hercules-ci-agent/common.nix+19−75 nixos/modules/services/continuous-integration/hercules-ci-agent/default.nix+4−4 nixos/modules/services/continuous-integration/hydra/default.nix+14−18 nixos/modules/services/continuous-integration/jenkins/default.nix+4−4 nixos/modules/services/continuous-integration/jenkins/job-builder.nix+2−2 nixos/modules/services/continuous-integration/jenkins/slave.nix+1−15 nixos/modules/services/databases/aerospike.nix+1−1 nixos/modules/services/databases/cassandra.nix+4−6 nixos/modules/services/databases/clickhouse.nix+4−13 nixos/modules/services/databases/cockroachdb.nix+30−38 nixos/modules/services/databases/couchdb.nix+5−22 nixos/modules/services/databases/firebird.nix+5−3 nixos/modules/services/databases/hbase.nix+17−39 nixos/modules/services/databases/influxdb.nix+4−4 nixos/modules/services/databases/influxdb2.nix−66 nixos/modules/services/databases/memcached.nix−2 nixos/modules/services/databases/monetdb.nix+1−1 nixos/modules/services/databases/mongodb.nix+2−4 nixos/modules/services/databases/mysql.nix+201−191 nixos/modules/services/databases/neo4j.nix+2−12 nixos/modules/services/databases/openldap.nix+6−7 nixos/modules/services/databases/opentsdb.nix+2−1 nixos/modules/services/databases/pgmanage.nix+1−1 nixos/modules/services/databases/postgresql.nix+10−13 nixos/modules/services/databases/postgresql.xml+32−54 nixos/modules/services/databases/redis.nix+222−275 nixos/modules/services/databases/riak.nix+2−1 nixos/modules/services/databases/victoriametrics.nix+1−9 nixos/modules/services/databases/virtuoso.nix+99 nixos/modules/services/desktops/bamf.nix+2−2 nixos/modules/services/desktops/cpupower-gui.nix−56 nixos/modules/services/desktops/flatpak.nix−2 nixos/modules/services/desktops/geoclue2.nix+4−4 nixos/modules/services/desktops/gnome/evolution-data-server.nix+1−1 nixos/modules/services/desktops/gnome/glib-networking.nix+1−1 nixos/modules/services/desktops/gnome/gnome-keyring.nix+1−3 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/gsignond.nix+1−1 nixos/modules/services/desktops/gvfs.nix+2−3 nixos/modules/services/desktops/pantheon/files.nix+13 nixos/modules/services/desktops/pipewire/media-session/alsa-monitor.conf.json → nixos/modules/services/desktops/pipewire/alsa-monitor.conf.json nixos/modules/services/desktops/pipewire/bluez-hardware.conf.json+197 nixos/modules/services/desktops/pipewire/media-session/bluez-monitor.conf.json → nixos/modules/services/desktops/pipewire/bluez-monitor.conf.json nixos/modules/services/desktops/pipewire/daemon/client-rt.conf.json → nixos/modules/services/desktops/pipewire/client-rt.conf.json+1−1 nixos/modules/services/desktops/pipewire/daemon/client.conf.json → nixos/modules/services/desktops/pipewire/client.conf.json nixos/modules/services/desktops/pipewire/daemon/minimal.conf.json−118 nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json−100 nixos/modules/services/desktops/pipewire/daemon/jack.conf.json → nixos/modules/services/desktops/pipewire/jack.conf.json+1−11 nixos/modules/services/desktops/pipewire/media-session/media-session.conf.json → nixos/modules/services/desktops/pipewire/media-session.conf.json−1 nixos/modules/services/desktops/pipewire/pipewire-media-session.nix+23−29 nixos/modules/services/desktops/pipewire/pipewire-pulse.conf.json+41 nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json → nixos/modules/services/desktops/pipewire/pipewire.conf.json+2−5 nixos/modules/services/desktops/pipewire/pipewire.nix+13−73 nixos/modules/services/desktops/pipewire/media-session/v4l2-monitor.conf.json → nixos/modules/services/desktops/pipewire/v4l2-monitor.conf.json nixos/modules/services/desktops/pipewire/wireplumber.nix−54 nixos/modules/services/desktops/tumbler.nix+2−2 nixos/modules/services/desktops/zeitgeist.nix+2−2 nixos/modules/services/development/blackfire.nix+9−4 nixos/modules/services/development/blackfire.xml+1−2 nixos/modules/services/development/distccd.nix−155 nixos/modules/services/development/hoogle.nix+4−5 nixos/modules/services/development/jupyter/default.nix+5−4 nixos/modules/services/development/jupyter/kernel-options.nix+4−4 nixos/modules/services/development/jupyterhub/default.nix+8−20 nixos/modules/services/development/lorri.nix+2−1 nixos/modules/services/development/rstudio-server/default.nix−107 nixos/modules/services/development/zammad.nix−323 nixos/modules/services/display-managers/greetd.nix+4−9 nixos/modules/services/editors/emacs.nix+1−1 nixos/modules/services/editors/haste.nix−86 nixos/modules/services/editors/infinoted.nix+1−1 nixos/modules/services/finance/odoo.nix−122 nixos/modules/services/games/asf.nix−236 nixos/modules/services/games/crossfire-server.nix−179 nixos/modules/services/games/deliantra-server.nix−172 nixos/modules/services/games/factorio.nix+5−14 nixos/modules/services/games/minecraft-server.nix+6−29 nixos/modules/services/games/quake3-server.nix−1 nixos/modules/services/games/terraria.nix+2−3 nixos/modules/services/hardware/acpid.nix+1−1 nixos/modules/services/hardware/actkbd.nix+1−1 nixos/modules/services/hardware/bluetooth.nix+7−3 nixos/modules/services/hardware/ddccontrol.nix−39 nixos/modules/services/hardware/fancontrol.nix−1 nixos/modules/services/hardware/freefall.nix+1−1 nixos/modules/services/hardware/fwupd.nix+1−2 nixos/modules/services/hardware/interception-tools.nix−1 nixos/modules/services/hardware/joycond.nix−36 nixos/modules/services/hardware/lirc.nix+1−1 nixos/modules/services/hardware/pcscd.nix+2−2 nixos/modules/services/hardware/power-profiles-daemon.nix−2 nixos/modules/services/hardware/rasdaemon.nix−170 nixos/modules/services/hardware/sane.nix+2−28 nixos/modules/services/hardware/sane_extra_backends/brscan4.nix+4−4 nixos/modules/services/hardware/sane_extra_backends/brscan4_etc_files.nix+2−1 nixos/modules/services/hardware/sane_extra_backends/brscan5.nix+4−4 nixos/modules/services/hardware/spacenavd.nix+1 nixos/modules/services/hardware/tcsd.nix+5−7 nixos/modules/services/hardware/thermald.nix+2−4 nixos/modules/services/hardware/thinkfan.nix+2−2 nixos/modules/services/hardware/triggerhappy.nix+2−2 nixos/modules/services/hardware/udev.nix+24−127 nixos/modules/services/hardware/udisks2.nix−41 nixos/modules/services/hardware/undervolt.nix+4−2 nixos/modules/services/hardware/upower.nix+8−7 nixos/modules/services/hardware/usbrelayd.nix−44 nixos/modules/services/hardware/vdr.nix+2−2 nixos/modules/services/home-automation/home-assistant.nix−552 nixos/modules/services/logging/SystemdJournal2Gelf.nix−1 nixos/modules/services/logging/awstats.nix+4−4 nixos/modules/services/logging/filebeat.nix−253 nixos/modules/services/logging/fluentd.nix+1−1 nixos/modules/services/logging/graylog.nix+4−5 nixos/modules/services/logging/journalbeat.nix+17−4 nixos/modules/services/logging/journalwatch.nix−1 nixos/modules/services/logging/klogd.nix+34−6 nixos/modules/services/logging/logcheck.nix+2−6 nixos/modules/services/logging/logrotate.nix+33−267 nixos/modules/services/logging/logstash.nix+9−23 nixos/modules/services/logging/promtail.nix+1−5 nixos/modules/services/logging/syslog-ng.nix+2−2 nixos/modules/services/mail/davmail.nix+1−1 nixos/modules/services/mail/dovecot.nix+48−19 nixos/modules/services/mail/exim.nix+3−8 nixos/modules/services/mail/maddy.nix−273 nixos/modules/services/mail/mail.nix+1−2 nixos/modules/services/mail/mailman.nix+9−16 nixos/modules/services/mail/nullmailer.nix+1−1 nixos/modules/services/mail/offlineimap.nix+2−2 nixos/modules/services/mail/opendkim.nix−1 nixos/modules/services/mail/opensmtpd.nix+2−5 nixos/modules/services/mail/postfix.nix+22−32 nixos/modules/services/mail/postfixadmin.nix−199 nixos/modules/services/mail/roundcube.nix+4−5 nixos/modules/services/mail/rspamd.nix+11−9 nixos/modules/services/mail/sympa.nix+4−4 nixos/modules/services/matrix/matrix-synapse.nix−773 nixos/modules/services/matrix/mjolnir.nix−242 nixos/modules/services/matrix/mjolnir.xml−134 nixos/modules/services/matrix/pantalaimon-options.nix−70 nixos/modules/services/matrix/pantalaimon.nix−70 nixos/modules/services/misc/airsonic.nix+8−32 nixos/modules/services/misc/ananicy.nix−107 nixos/modules/services/misc/ankisyncd.nix+1−1 nixos/modules/services/misc/apache-kafka.nix+3−5 nixos/modules/services/misc/autofs.nix+1−1 nixos/modules/services/misc/autorandr.nix+2−309 nixos/modules/services/misc/bees.nix+2−5 nixos/modules/services/misc/cfdyndns.nix+1−1 nixos/modules/services/misc/cgminer.nix+3−7 nixos/modules/services/misc/clipcat.nix−31 nixos/modules/services/misc/clipmenu.nix+1−1 nixos/modules/services/misc/confd.nix+1−1 nixos/modules/services/misc/couchpotato.nix+42 nixos/modules/services/misc/dendrite.nix+8−100 nixos/modules/services/misc/dictd.nix+2−2 nixos/modules/services/misc/disnix.nix+2−1 nixos/modules/services/misc/docker-registry.nix−2 nixos/modules/services/misc/dwm-status.nix+2−2 nixos/modules/services/misc/dysnomia.nix−6 nixos/modules/services/misc/etcd.nix+3−13 nixos/modules/services/misc/etebase-server.nix+4−4 nixos/modules/services/misc/ethminer.nix+4−4 nixos/modules/services/misc/exhibitor.nix+1−4 nixos/modules/services/misc/felix.nix+1−1 nixos/modules/services/misc/freeswitch.nix+5−4 nixos/modules/services/misc/gammu-smsd.nix+2−2 nixos/modules/services/misc/gitea.nix+35−51 nixos/modules/services/misc/gitit.nix+27−27 nixos/modules/services/misc/gitlab.nix+34−95 nixos/modules/services/misc/gitolite.nix+5−7 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/gpsd.nix−1 nixos/modules/services/misc/greenclip.nix+1−1 nixos/modules/services/misc/headphones.nix+1−3 nixos/modules/services/misc/heisenbridge.nix−222 nixos/modules/services/misc/home-assistant.nix+400 nixos/modules/services/misc/ihaskell.nix+3−4 nixos/modules/services/misc/input-remapper.nix−30 nixos/modules/services/misc/jackett.nix+1−1 nixos/modules/services/misc/jellyfin.nix+4−6 nixos/modules/services/misc/klipper.nix+12−70 nixos/modules/services/misc/libreddit.nix−66 nixos/modules/services/misc/lidarr.nix+1−1 nixos/modules/services/misc/mame.nix+1−3 nixos/modules/services/misc/matrix-appservice-discord.nix+2−7 nixos/modules/services/misc/matrix-appservice-irc.nix+1−4 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+777 nixos/modules/services/matrix/matrix-synapse.xml → nixos/modules/services/misc/matrix-synapse.xml+17−18 nixos/modules/services/misc/mautrix-facebook.nix−195 nixos/modules/services/misc/mautrix-telegram.nix+3−6 nixos/modules/services/misc/mbpfan.nix+61−59 nixos/modules/services/misc/mediatomb.nix+7−10 nixos/modules/services/misc/moonraker.nix−178 nixos/modules/services/misc/mwlib.nix+258 nixos/modules/services/misc/mx-puppet-discord.nix−122 nixos/modules/services/misc/n8n.nix+1−2 nixos/modules/services/misc/nitter.nix−358 nixos/modules/services/misc/nix-daemon.nix+283−509 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+2−10 nixos/modules/services/misc/nzbget.nix+18−36 nixos/modules/services/misc/nzbhydra2.nix+1−1 nixos/modules/services/misc/octoprint.nix+2−5 nixos/modules/services/misc/owncast.nix−98 nixos/modules/services/misc/packagekit.nix+2−4 nixos/modules/services/misc/paperless.nix+66−203 nixos/modules/services/misc/plex.nix+14−43 nixos/modules/services/misc/prowlarr.nix−41 nixos/modules/services/misc/redmine.nix+8−9 nixos/modules/services/misc/ripple-data-api.nix+1−3 nixos/modules/services/misc/rippled.nix+5−11 nixos/modules/services/misc/rmfakecloud.nix−147 nixos/modules/services/misc/safeeyes.nix−4 nixos/modules/services/misc/sickbeard.nix+3−6 nixos/modules/services/misc/signald.nix−105 nixos/modules/services/misc/snapper.nix+19−42 nixos/modules/services/misc/sourcehut/builds.nix+5−7 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+3−6 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/ssm-agent.nix+1−1 nixos/modules/services/misc/subsonic.nix+4−8 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/tautulli.nix+1−1 nixos/modules/services/misc/tp-auto-kbbl.nix−58 nixos/modules/services/misc/uhub.nix+153−85 nixos/modules/services/misc/weechat.nix+5−9 nixos/modules/services/misc/xmr-stak.nix+1−1 nixos/modules/services/misc/xmrig.nix−76 nixos/modules/services/home-automation/zigbee2mqtt.nix → nixos/modules/services/misc/zigbee2mqtt.nix+9−6 nixos/modules/services/misc/zoneminder.nix+4−4 nixos/modules/services/misc/zookeeper.nix+3−12 nixos/modules/services/monitoring/alerta.nix+4 nixos/modules/services/monitoring/arbtt.nix+2−1 nixos/modules/services/monitoring/bosun.nix+2−1 nixos/modules/services/monitoring/cadvisor.nix−2 nixos/modules/services/monitoring/collectd.nix+28−56 nixos/modules/services/monitoring/datadog-agent.nix+7−9 nixos/modules/services/monitoring/grafana-reporter.nix+2−3 nixos/modules/services/monitoring/grafana.nix+3−39 nixos/modules/services/monitoring/graphite.nix+4−16 nixos/modules/services/monitoring/heapster.nix+2−4 nixos/modules/services/monitoring/incron.nix+2−7 nixos/modules/services/monitoring/kapacitor.nix+4−1 nixos/modules/services/monitoring/loki.nix+2−2 nixos/modules/services/monitoring/mackerel-agent.nix+1 nixos/modules/services/monitoring/metricbeat.nix+4−3 nixos/modules/services/monitoring/mimir.nix−63 nixos/modules/services/monitoring/munin.nix+5−7 nixos/modules/services/monitoring/nagios.nix+6−7 nixos/modules/services/monitoring/netdata.nix+42−82 nixos/modules/services/monitoring/parsedmarc.md−113 nixos/modules/services/monitoring/parsedmarc.nix−542 nixos/modules/services/monitoring/parsedmarc.xml−125 nixos/modules/services/monitoring/prometheus/alertmanager.nix+1−1 nixos/modules/services/monitoring/prometheus/default.nix+384−1260 nixos/modules/services/monitoring/prometheus/exporters.nix+4−32 nixos/modules/services/monitoring/prometheus/exporters.xml−21 nixos/modules/services/monitoring/prometheus/exporters/bird.nix+1−5 nixos/modules/services/monitoring/prometheus/exporters/buildkite-agent.nix−64 nixos/modules/services/monitoring/prometheus/exporters/dmarc.nix−117 nixos/modules/services/monitoring/prometheus/exporters/dovecot.nix−4 nixos/modules/services/monitoring/prometheus/exporters/fastly.nix−41 nixos/modules/services/monitoring/prometheus/exporters/flow.nix+1−1 nixos/modules/services/monitoring/prometheus/exporters/influxdb.nix−34 nixos/modules/services/monitoring/prometheus/exporters/kea.nix+1−10 nixos/modules/services/monitoring/prometheus/exporters/knot.nix+1−5 nixos/modules/services/monitoring/prometheus/exporters/mail.nix+1−1 nixos/modules/services/monitoring/prometheus/exporters/mikrotik.nix+2−2 nixos/modules/services/monitoring/prometheus/exporters/modemmanager.nix−4 nixos/modules/services/monitoring/prometheus/exporters/nginx.nix+5−5 nixos/modules/services/monitoring/prometheus/exporters/node.nix+2−11 nixos/modules/services/monitoring/prometheus/exporters/pihole.nix+2−2 nixos/modules/services/monitoring/prometheus/exporters/postfix.nix−3 nixos/modules/services/monitoring/prometheus/exporters/postgres.nix−4 nixos/modules/services/monitoring/prometheus/exporters/process.nix+8−6 nixos/modules/services/monitoring/prometheus/exporters/pve.nix−118 nixos/modules/services/monitoring/prometheus/exporters/rspamd.nix+2−2 nixos/modules/services/monitoring/prometheus/exporters/rtl_433.nix−5 nixos/modules/services/monitoring/prometheus/exporters/script.nix+1−1 nixos/modules/services/monitoring/prometheus/exporters/smartctl.nix−75 nixos/modules/services/monitoring/prometheus/exporters/smokeping.nix−1 nixos/modules/services/monitoring/prometheus/exporters/snmp.nix+9−7 nixos/modules/services/monitoring/prometheus/exporters/sql.nix−4 nixos/modules/services/monitoring/prometheus/exporters/systemd.nix+1−5 nixos/modules/services/monitoring/prometheus/exporters/unbound.nix−4 nixos/modules/services/monitoring/prometheus/exporters/varnish.nix+2−3 nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix−5 nixos/modules/services/monitoring/prometheus/pushgateway.nix+1−1 nixos/modules/services/monitoring/scollector.nix+3−2 nixos/modules/services/monitoring/smartd.nix+1−6 nixos/modules/services/monitoring/teamviewer.nix+3−6 nixos/modules/services/monitoring/telegraf.nix+6−9 nixos/modules/services/monitoring/thanos.nix+5−8 nixos/modules/services/monitoring/tuptime.nix−1 nixos/modules/services/monitoring/unifi-poller.nix+4−80 nixos/modules/services/monitoring/uptime.nix+3−7 nixos/modules/services/monitoring/zabbix-agent.nix+5−5 nixos/modules/services/monitoring/zabbix-proxy.nix+7−18 nixos/modules/services/monitoring/zabbix-server.nix+6−17 nixos/modules/services/network-filesystems/ceph.nix+22−12 nixos/modules/services/network-filesystems/drbd.nix+7−5 nixos/modules/services/network-filesystems/glusterfs.nix+4−1 nixos/modules/services/network-filesystems/ipfs.nix+59−97 nixos/modules/services/network-filesystems/litestream/default.nix−100 nixos/modules/services/network-filesystems/litestream/litestream.xml−65 nixos/modules/services/network-filesystems/moosefs.nix−249 nixos/modules/services/network-filesystems/openafs/client.nix+8−7 nixos/modules/services/network-filesystems/openafs/server.nix+3−3 nixos/modules/services/network-filesystems/orangefs/client.nix+1 nixos/modules/services/network-filesystems/orangefs/server.nix+9−9 nixos/modules/services/network-filesystems/rsyncd.nix+1−1 nixos/modules/services/network-filesystems/samba.nix+6−17 nixos/modules/services/network-filesystems/tahoe.nix+4−2 nixos/modules/services/network-filesystems/webdav-server-rs.nix−144 nixos/modules/services/network-filesystems/webdav.nix−107 nixos/modules/services/network-filesystems/xtreemfs.nix+2−2 nixos/modules/services/networking/3proxy.nix+16−3 nixos/modules/services/networking/adguardhome.nix+5−67 nixos/modules/services/networking/amuled.nix+2−6 nixos/modules/services/networking/antennas.nix−80 nixos/modules/services/networking/asterisk.nix+45−13 nixos/modules/services/networking/atftpd.nix+1−1 nixos/modules/services/networking/autossh.nix+1−1 nixos/modules/services/networking/avahi-daemon.nix+5−5 nixos/modules/services/networking/bee.nix+2−2 nixos/modules/services/networking/biboumi.nix−1 nixos/modules/services/networking/bind.nix+8−38 nixos/modules/services/networking/bird.nix+75−90 nixos/modules/services/networking/bitcoind.nix+2−2 nixos/modules/services/networking/bitlbee.nix+16−8 nixos/modules/services/networking/blockbook-frontend.nix+9−6 nixos/modules/services/networking/blocky.nix−40 nixos/modules/services/networking/charybdis.nix+1−8 nixos/modules/services/networking/cjdns.nix+3−3 nixos/modules/services/networking/cloudflare-dyndns.nix−93 nixos/modules/services/networking/connman.nix+4−6 nixos/modules/services/networking/consul.nix+10−40 nixos/modules/services/networking/coredns.nix+1−1 nixos/modules/services/networking/corerad.nix+4−4 nixos/modules/services/networking/coturn.nix+2−4 nixos/modules/services/networking/create_ap.nix−50 nixos/modules/services/networking/croc.nix+1−1 nixos/modules/services/networking/ddclient.nix+24−54 nixos/modules/services/networking/dhcpcd.nix+1−22 nixos/modules/services/networking/dhcpd.nix+50−49 nixos/modules/services/networking/dnscache.nix+1−1 nixos/modules/services/networking/dnscrypt-proxy2.nix+3−6 nixos/modules/services/networking/dnscrypt-wrapper.nix−2 nixos/modules/services/networking/dnsmasq.nix+1−3 nixos/modules/services/networking/doh-proxy-rust.nix+1−1 nixos/modules/services/networking/ejabberd.nix+2−2 nixos/modules/services/networking/envoy.nix−84 nixos/modules/services/networking/epmd.nix+3−17 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/ferm.nix+2−2 nixos/modules/services/networking/firefox/sync-server.nix+183 nixos/modules/services/networking/firewall.nix+9−8 nixos/modules/services/networking/flannel.nix+2−5 nixos/modules/services/networking/freeradius.nix−2 nixos/modules/services/networking/frr.nix−211 nixos/modules/services/networking/ghostunnel.nix+2−2 nixos/modules/services/networking/git-daemon.nix−1 nixos/modules/services/networking/globalprotect-vpn.nix+1−1 nixos/modules/services/networking/gnunet.nix+11−15 nixos/modules/services/networking/gobgpd.nix+1−1 nixos/modules/services/networking/gogoclient.nix+87 nixos/modules/services/networking/hans.nix+1−1 nixos/modules/services/networking/headscale.nix−490 nixos/modules/services/networking/https-dns-proxy.nix−128 nixos/modules/services/networking/hylafax/options.nix+13−11 nixos/modules/services/networking/i2pd.nix+12−19 nixos/modules/services/networking/icecream/daemon.nix+1−1 nixos/modules/services/networking/icecream/scheduler.nix+1−1 nixos/modules/services/networking/inspircd.nix+2−2 nixos/modules/services/networking/iodine.nix+1−2 nixos/modules/services/networking/ircd-hybrid/default.nix+2−2 nixos/modules/services/networking/iscsi/initiator.nix+1−1 nixos/modules/services/networking/iscsi/root-initiator.nix−9 nixos/modules/services/networking/iwd.nix+6−43 nixos/modules/services/networking/jibri/default.nix−417 nixos/modules/services/networking/jibri/logging.properties-journal−32 nixos/modules/services/networking/jicofo.nix+1−1 nixos/modules/services/networking/jitsi-videobridge.nix+3−5 nixos/modules/services/networking/kea.nix−449 nixos/modules/services/networking/keepalived/vrrp-instance-options.nix+3−1 nixos/modules/services/networking/keepalived/vrrp-script-options.nix+1−1 nixos/modules/services/networking/kippo.nix+117 nixos/modules/services/networking/knot.nix+8−43 nixos/modules/services/networking/kresd.nix+6−7 nixos/modules/services/networking/lambdabot.nix+1−1 nixos/modules/services/networking/libreswan.nix+2−2 nixos/modules/services/networking/lxd-image-server.nix−133 nixos/modules/services/networking/mailpile.nix+74 nixos/modules/services/networking/minidlna.nix+1−1 nixos/modules/services/networking/miredo.nix+1−1 nixos/modules/services/networking/monero.nix+1−1 nixos/modules/services/networking/morty.nix+5−4 nixos/modules/services/networking/mosquitto.md−102 nixos/modules/services/networking/mosquitto.nix+175−541 nixos/modules/services/networking/mosquitto.xml−147 nixos/modules/services/networking/mozillavpn.nix−19 nixos/modules/services/networking/mtr-exporter.nix−87 nixos/modules/services/networking/mullvad-vpn.nix+1−5 nixos/modules/services/networking/multipath.nix−557 nixos/modules/services/networking/murmur.nix+3−3 nixos/modules/services/networking/mxisd.nix+1−1 nixos/modules/services/networking/nat.nix+1−1 nixos/modules/services/networking/nats.nix−158 nixos/modules/services/networking/nbd.nix−159 nixos/modules/services/networking/ncdns.nix+3−6 nixos/modules/services/networking/ndppd.nix+1−1 nixos/modules/services/networking/nebula.nix+8−6 nixos/modules/services/networking/networkmanager.nix+61−86 nixos/modules/services/networking/nftables.nix+12−7 nixos/modules/services/networking/ngircd.nix+2−5 nixos/modules/services/networking/nix-serve.nix+9−19 nixos/modules/services/networking/nixops-dns.nix+1 nixos/modules/services/networking/nntp-proxy.nix+18−18 nixos/modules/services/networking/nomad.nix+7−20 nixos/modules/services/networking/nsd.nix+16−11 nixos/modules/services/networking/ntopng.nix+13−57 nixos/modules/services/networking/ntp/chrony.nix+12−22 nixos/modules/services/networking/ntp/ntpd.nix+7−8 nixos/modules/services/networking/ntp/openntpd.nix+1−4 nixos/modules/services/networking/nylon.nix+1−1 nixos/modules/services/networking/ofono.nix+1−1 nixos/modules/services/networking/onedrive.nix+2−1 nixos/modules/services/networking/openconnect.nix−137 nixos/modules/services/networking/openfire.nix+56 nixos/modules/services/networking/openvpn.nix+1−1 nixos/modules/services/networking/ostinato.nix+2−2 nixos/modules/services/networking/pdns-recursor.nix+8−13 nixos/modules/services/networking/pleroma.nix+4−12 nixos/modules/services/networking/pleroma.xml+121−177 nixos/modules/services/networking/powerdns.nix+2−2 nixos/modules/services/networking/pppd.nix+5−23 nixos/modules/services/networking/privoxy.nix+1−1 nixos/modules/services/networking/prosody.nix+2−3 nixos/modules/services/networking/prosody.xml+1−1 nixos/modules/services/networking/quassel.nix+3−6 nixos/modules/services/networking/quicktun.nix+1−1 nixos/modules/services/networking/quorum.nix+3−5 nixos/modules/services/networking/racoon.nix+45 nixos/modules/services/networking/radicale.nix+5−9 nixos/modules/services/networking/radvd.nix+1−4 nixos/modules/services/networking/rdnssd.nix+1−3 nixos/modules/services/networking/resilio.nix−1 nixos/modules/services/networking/sabnzbd.nix+1−8 nixos/modules/services/networking/seafile.nix−287 nixos/modules/services/networking/searx.nix+4−3 nixos/modules/services/networking/shadowsocks.nix+6−4 nixos/modules/services/networking/shairport-sync.nix+2−29 nixos/modules/services/networking/shellhub-agent.nix+17−26 nixos/modules/services/networking/shorewall.nix+1−1 nixos/modules/services/networking/shorewall6.nix+1−1 nixos/modules/services/networking/shout.nix+2−4 nixos/modules/services/networking/skydns.nix+1−2 nixos/modules/services/networking/smartdns.nix+1−2 nixos/modules/services/networking/smokeping.nix+21−61 nixos/modules/services/networking/sniproxy.nix+17−6 nixos/modules/services/networking/snowflake-proxy.nix−81 nixos/modules/services/networking/softether.nix+1−1 nixos/modules/services/networking/soju.nix−114 nixos/modules/services/networking/spacecookie.nix+2−2 nixos/modules/services/networking/spiped.nix+1−1 nixos/modules/services/networking/squid.nix+4−23 nixos/modules/services/networking/ssh/sshd.nix+16−15 nixos/modules/services/networking/strongswan-swanctl/module.nix+1−1 nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix−10 nixos/modules/services/networking/strongswan.nix+2−2 nixos/modules/services/networking/stubby.nix+174−46 nixos/modules/services/networking/stunnel.nix+2−3 nixos/modules/services/networking/supplicant.nix+3−3 nixos/modules/services/networking/supybot.nix+3−4 nixos/modules/services/networking/syncplay.nix+3−19 nixos/modules/services/networking/syncthing.nix+308−372 nixos/modules/services/networking/tailscale.nix+2−10 nixos/modules/services/networking/teamspeak3.nix+2−20 nixos/modules/services/networking/tedicross.nix+1−1 nixos/modules/services/networking/teleport.nix−99 nixos/modules/services/networking/tetrd.nix−96 nixos/modules/services/networking/thelounge.nix+8−39 nixos/modules/services/networking/tinc.nix+8−11 nixos/modules/services/networking/tinydns.nix+1−5 nixos/modules/services/networking/tox-bootstrapd.nix+13−8 nixos/modules/services/networking/tox-node.nix+6−1 nixos/modules/services/networking/toxvpn.nix+2−4 nixos/modules/services/networking/trickster.nix+1−1 nixos/modules/services/networking/tvheadend.nix+1−3 nixos/modules/services/networking/ucarp.nix+5−5 nixos/modules/services/networking/unbound.nix+3−13 nixos/modules/services/networking/unifi.nix+60−80 nixos/modules/services/networking/v2ray.nix+7−15 nixos/modules/services/networking/vsftpd.nix+2−5 nixos/modules/services/networking/wakeonlan.nix+56 nixos/modules/services/networking/wasabibackend.nix+2−4 nixos/modules/services/networking/websockify.nix+1−1 nixos/modules/services/networking/wg-netmanager.nix−42 nixos/modules/services/networking/wg-quick.nix+13−12 nixos/modules/services/networking/wicd.nix+40 nixos/modules/services/networking/wireguard.nix+7−7 nixos/modules/services/networking/wpa_supplicant.nix+102−343 nixos/modules/services/networking/x2goserver.nix+7−10 nixos/modules/services/networking/xandikos.nix+2−2 nixos/modules/services/networking/xrdp.nix+3−9 nixos/modules/services/networking/yggdrasil.nix+1−1 nixos/modules/services/networking/yggdrasil.xml+1 nixos/modules/services/networking/zeronet.nix+7−5 nixos/modules/services/networking/zerotierone.nix+2−1 nixos/modules/services/networking/znc/default.nix+3−3 nixos/modules/services/networking/znc/options.nix+3−3 nixos/modules/services/printing/cupsd.nix+1−1 nixos/modules/services/scheduling/atd.nix+1−3 nixos/modules/services/scheduling/cron.nix+2−7 nixos/modules/services/scheduling/fcron.nix−3 nixos/modules/services/search/elasticsearch.nix+12−43 nixos/modules/services/search/hound.nix+11−13 nixos/modules/services/search/kibana.nix+4−9 nixos/modules/services/search/meilisearch.md−39 nixos/modules/services/search/meilisearch.nix−132 nixos/modules/services/search/meilisearch.xml−85 nixos/modules/services/search/solr.nix+1−1 nixos/modules/services/security/aesmd.nix−236 nixos/modules/services/security/certmgr.nix+2−2 nixos/modules/services/security/cfssl.nix+43−56 nixos/modules/services/security/clamav.nix+5−4 nixos/modules/services/security/fail2ban.nix+4−6 nixos/modules/services/security/fprintd.nix+2−2 nixos/modules/services/security/fprot.nix+82 nixos/modules/services/security/haka.nix+1−1 nixos/modules/services/security/haveged.nix+29−39 nixos/modules/services/security/hockeypuck.nix−106 nixos/modules/services/security/nginx-sso.nix+2−2 nixos/modules/services/security/oauth2_proxy.nix+5−10 nixos/modules/services/security/oauth2_proxy_nginx.nix−1 nixos/modules/services/security/opensnitch.nix−125 nixos/modules/services/security/physlock.nix+4−6 nixos/modules/services/security/privacyidea.nix+6−10 nixos/modules/services/security/shibboleth-sp.nix+1−1 nixos/modules/services/security/sks.nix+2−2 nixos/modules/services/security/sslmate-agent.nix−32 nixos/modules/services/security/step-ca.nix+1−13 nixos/modules/services/security/tor.nix+7−28 nixos/modules/services/security/torsocks.nix−1 nixos/modules/services/security/usbguard.nix+1−1 nixos/modules/services/security/vault.nix+2−8 nixos/modules/services/security/vaultwarden/default.nix+6−23 nixos/modules/services/security/yubikey-agent.nix+2−8 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−134 nixos/modules/services/system/kerberos/heimdal.nix+1−1 nixos/modules/services/system/localtime.nix−2 nixos/modules/services/system/nscd.nix+9−20 nixos/modules/services/system/saslauthd.nix+1−1 nixos/modules/services/system/self-deploy.nix+2−3 nixos/modules/services/system/systembus-notify.nix−27 nixos/modules/services/system/uptimed.nix+3−7 nixos/modules/services/torrent/deluge.nix+2−9 nixos/modules/services/torrent/flexget.nix+1−1 nixos/modules/services/torrent/magnetico.nix+1−3 nixos/modules/services/torrent/opentracker.nix+1−1 nixos/modules/services/torrent/peerflix.nix+2−8 nixos/modules/services/torrent/rtorrent.nix+2−4 nixos/modules/services/torrent/transmission.nix+135−225 nixos/modules/services/ttys/getty.nix+14−20 nixos/modules/services/ttys/kmscon.nix+5−24 nixos/modules/services/video/epgstation/default.nix+153−192 nixos/modules/services/video/epgstation/streaming.json+108−129 nixos/modules/services/video/mirakurun.nix+5−5 nixos/modules/services/video/replay-sorcery.nix−72 nixos/modules/services/video/rtsp-simple-server.nix−80 nixos/modules/services/video/unifi-video.nix−271 nixos/modules/services/wayland/cage.nix+2−7 nixos/modules/services/web-apps/atlassian/confluence.nix+2−2 nixos/modules/services/web-apps/atlassian/crowd.nix+2−2 nixos/modules/services/web-apps/atlassian/jira.nix+2−3 nixos/modules/services/web-apps/baget.nix−170 nixos/modules/services/web-apps/bookstack.nix+73−154 nixos/modules/services/web-apps/code-server.nix−139 nixos/modules/services/web-apps/cryptpad.nix+2−2 nixos/modules/services/web-apps/dex.nix−118 nixos/modules/services/web-apps/discourse.nix+41−65 nixos/modules/services/web-apps/discourse.xml+12−44 nixos/modules/services/web-apps/documize.nix−1 nixos/modules/services/web-apps/dokuwiki.nix+274−325 nixos/modules/services/web-apps/engelsystem.nix+2−2 nixos/modules/services/web-apps/ethercalc.nix−62 nixos/modules/services/web-apps/fluidd.nix−66 nixos/modules/services/web-apps/galene.nix+2−36 nixos/modules/services/web-apps/gerrit.nix+1−4 nixos/modules/services/web-apps/hedgedoc.nix+8−72 nixos/modules/services/web-apps/hledger-web.nix+2−2 nixos/modules/services/web-apps/icingaweb2/icingaweb2.nix+1−19 nixos/modules/services/web-apps/ihatemoney/default.nix+2−17 nixos/modules/services/web-apps/invidious.nix−264 nixos/modules/services/web-apps/invoiceplane.nix−305 nixos/modules/services/web-apps/isso.nix−69 nixos/modules/services/web-apps/jirafeau.nix+6−10 nixos/modules/services/web-apps/jitsi-meet.nix+11−127 nixos/modules/services/web-apps/jitsi-meet.xml+2−2 nixos/modules/services/web-apps/keycloak.nix+599−546 nixos/modules/services/web-apps/keycloak.xml+69−65 nixos/modules/services/web-apps/lemmy.md−34 nixos/modules/services/web-apps/lemmy.nix−236 nixos/modules/services/web-apps/lemmy.xml−56 nixos/modules/services/web-apps/limesurvey.nix+5−5 nixos/modules/services/web-apps/mastodon.nix+11−50 nixos/modules/services/web-apps/matomo.nix+17−36 nixos/modules/services/web-apps/mattermost.nix+37−145 nixos/modules/services/web-apps/mediawiki.nix+5−6 nixos/modules/services/web-apps/miniflux.nix+29−49 nixos/modules/services/web-apps/moinmoin.nix+304 nixos/modules/services/web-apps/moodle.nix+7−7 nixos/modules/services/web-apps/netbox.nix−265 nixos/modules/services/web-apps/nextcloud.nix+101−376 nixos/modules/services/web-apps/nextcloud.xml+40−92 nixos/modules/services/web-apps/nexus.nix−22 nixos/modules/services/web-apps/nifi.nix−318 nixos/modules/services/web-apps/node-red.nix−149 nixos/modules/services/web-apps/openwebrx.nix−34 nixos/modules/services/web-apps/peertube.nix−475 nixos/modules/services/web-apps/pgpkeyserver-lite.nix+2−5 nixos/modules/services/web-apps/pict-rs.md−88 nixos/modules/services/web-apps/pict-rs.nix−50 nixos/modules/services/web-apps/pict-rs.xml−162 nixos/modules/services/web-apps/plantuml-server.nix+4−21 nixos/modules/services/web-apps/plausible.nix+35−54 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+4−1 nixos/modules/services/web-apps/rss-bridge.nix+4−2 nixos/modules/services/web-apps/selfoss.nix+1 nixos/modules/services/web-apps/shiori.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+87−96 nixos/modules/services/web-apps/vikunja.nix+3−3 nixos/modules/services/web-apps/whitebophir.nix+1−1 nixos/modules/services/web-apps/wordpress.nix+60−172 nixos/modules/services/web-apps/youtrack.nix+2−3 nixos/modules/services/web-apps/zabbix.nix+5−12 nixos/modules/services/web-servers/agate.nix−148 nixos/modules/services/web-servers/apache-httpd/default.nix+29−45 nixos/modules/services/web-servers/apache-httpd/vhost-options.nix+6−26 nixos/modules/services/web-servers/caddy.nix+171 nixos/modules/services/web-servers/caddy/default.nix−339 nixos/modules/services/web-servers/caddy/vhost-options.nix−79 nixos/modules/services/web-servers/hydron.nix+1−1 nixos/modules/services/web-servers/lighttpd/cgit.nix+5−7 nixos/modules/services/web-servers/lighttpd/collectd.nix+1−5 nixos/modules/services/web-servers/lighttpd/default.nix+1−13 nixos/modules/services/web-servers/minio.nix+3−9 nixos/modules/services/web-servers/molly-brown.nix+1−1 nixos/modules/services/web-servers/nginx/default.nix+31−110 nixos/modules/services/web-servers/nginx/gitweb.nix+1−1 nixos/modules/services/web-servers/nginx/location-options.nix+2−2 nixos/modules/services/web-servers/nginx/vhost-options.nix+9−49 nixos/modules/services/web-servers/phpfpm/default.nix+5−5 nixos/modules/services/web-servers/pomerium.nix+3−7 nixos/modules/services/web-servers/shellinabox.nix+122 nixos/modules/services/web-servers/tomcat.nix+5−6 nixos/modules/services/web-servers/traefik.nix+3−3 nixos/modules/services/web-servers/trafficserver.nix+318 nixos/modules/services/web-servers/trafficserver/default.nix−310 nixos/modules/services/web-servers/trafficserver/ip_allow.json−36 nixos/modules/services/web-servers/trafficserver/logging.json−37 nixos/modules/services/web-servers/ttyd.nix+1−1 nixos/modules/services/web-servers/unit/default.nix+2−2 nixos/modules/services/web-servers/uwsgi.nix+12−10 nixos/modules/services/web-servers/varnish/default.nix+7−9 nixos/modules/services/web-servers/zope2.nix+2−6 nixos/modules/services/x11/clight.nix−8 nixos/modules/services/x11/desktop-managers/cde.nix+3−4 nixos/modules/services/x11/desktop-managers/cinnamon.nix+7−14 nixos/modules/services/x11/desktop-managers/default.nix+1−1 nixos/modules/services/x11/desktop-managers/enlightenment.nix+3−24 nixos/modules/services/x11/desktop-managers/gnome.nix+77−69 nixos/modules/services/x11/desktop-managers/gnome.xml+24 nixos/modules/services/x11/desktop-managers/kodi.nix+2−2 nixos/modules/services/x11/desktop-managers/lumina.nix−4 nixos/modules/services/x11/desktop-managers/lxqt.nix+3−12 nixos/modules/services/x11/desktop-managers/mate.nix+38−10 nixos/modules/services/x11/desktop-managers/none.nix+5−44 nixos/modules/services/x11/desktop-managers/pantheon.nix+22−37 nixos/modules/services/x11/desktop-managers/pantheon.xml+5−11 nixos/modules/services/x11/desktop-managers/plasma5.nix+130−330 nixos/modules/services/x11/desktop-managers/retroarch.nix−40 nixos/modules/services/x11/desktop-managers/surf-display.nix+1−2 nixos/modules/services/x11/desktop-managers/xfce.nix+3−10 nixos/modules/services/x11/desktop-managers/xterm.nix+2−2 nixos/modules/services/x11/display-managers/account-service-util.nix+1−1 nixos/modules/services/x11/display-managers/default.nix+12−16 nixos/modules/services/x11/display-managers/gdm.nix+56−44 nixos/modules/services/x11/display-managers/lightdm-greeters/enso-os.nix+3−3 nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix+3−3 nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix+2−2 nixos/modules/services/x11/display-managers/lightdm.nix+6−8 nixos/modules/services/x11/display-managers/sddm.nix+9−10 nixos/modules/services/x11/display-managers/set-session.py−3 nixos/modules/services/x11/display-managers/startx.nix+3 nixos/modules/services/x11/display-managers/sx.nix−34 nixos/modules/services/x11/extra-layouts.nix+48−9 nixos/modules/services/x11/hardware/libinput.nix+4−20 nixos/modules/services/x11/hardware/synaptics.nix+1−6 nixos/modules/services/x11/imwheel.nix+9−11 nixos/modules/services/x11/picom.nix+3−13 nixos/modules/services/x11/redshift.nix+1−1 nixos/modules/services/x11/touchegg.nix−38 nixos/modules/services/x11/unclutter-xfixes.nix+1−1 nixos/modules/services/x11/unclutter.nix+1−1 nixos/modules/services/x11/urxvtd.nix+1−1 nixos/modules/services/x11/window-managers/awesome.nix+1−1 nixos/modules/services/x11/window-managers/bspwm.nix+6−6 nixos/modules/services/x11/window-managers/clfswm.nix+3−13 nixos/modules/services/x11/window-managers/default.nix−1 nixos/modules/services/x11/window-managers/exwm.nix+3−4 nixos/modules/services/x11/window-managers/herbstluftwm.nix+1−1 nixos/modules/services/x11/window-managers/i3.nix+3−3 nixos/modules/services/x11/window-managers/mlvwm.nix−41 nixos/modules/services/x11/window-managers/qtile.nix+4−11 nixos/modules/services/x11/window-managers/wmderland.nix+1−1 nixos/modules/services/x11/window-managers/xmonad.nix+15−51 nixos/modules/services/x11/xautolock.nix+3−4 nixos/modules/services/x11/xserver.nix+17−44 nixos/modules/system/activation/activation-script.nix+46−77 nixos/modules/system/activation/switch-to-configuration.pl+254−697 nixos/modules/system/activation/top-level.nix+35−100 nixos/modules/system/boot/binfmt.nix+10−52 nixos/modules/system/boot/initrd-openvpn.nix+1−1 nixos/modules/system/boot/initrd-ssh.nix+1−1 nixos/modules/system/boot/kernel.nix+10−13 nixos/modules/system/boot/kernel_config.nix+1−1 nixos/modules/system/boot/kexec.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+7−36 nixos/modules/system/boot/loader/grub/install-grub.pl+86−115 nixos/modules/system/boot/loader/grub/ipxe.nix+1−1 nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py+60−102 nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix+3−152 nixos/modules/system/boot/luksroot.nix+9−75 nixos/modules/system/boot/modprobe.nix−2 nixos/modules/system/boot/networkd.nix+14−328 nixos/modules/system/boot/plymouth.nix+2−9 nixos/modules/system/boot/resolved.nix+1−3 nixos/modules/system/boot/stage-1-init.sh+40−41 nixos/modules/system/boot/stage-1.nix+23−92 nixos/modules/system/boot/stage-2-init.sh+100−71 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+673−87 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+2−20 nixos/modules/system/build.nix−21 nixos/modules/system/etc/etc-activation.nix−12 nixos/modules/system/etc/etc.nix+21−60 nixos/modules/system/etc/make-etc.sh+45 nixos/modules/system/etc/setup-etc.pl−6 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/encrypted-devices.nix+1−1 nixos/modules/tasks/filesystems.nix+14−50 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/ecryptfs.nix+2−12 nixos/modules/tasks/filesystems/exfat.nix+3−5 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/nfs.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+7−85 nixos/modules/tasks/lvm.nix+14−73 nixos/modules/tasks/network-interfaces-scripted.nix−71 nixos/modules/tasks/network-interfaces-systemd.nix+5−115 nixos/modules/tasks/network-interfaces.nix+34−251 nixos/modules/tasks/snapraid.nix−230 nixos/modules/tasks/swraid.nix+9−35 nixos/modules/testing/test-instrumentation.nix+32−32 nixos/modules/virtualisation/amazon-ec2-amis.nix−444 nixos/modules/virtualisation/amazon-image.nix+10−33 nixos/modules/virtualisation/amazon-options.nix+1−54 nixos/modules/virtualisation/anbox.nix+1−1 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+2−7 nixos/modules/virtualisation/containers.nix+4−4 nixos/modules/virtualisation/cri-o.nix+33−52 nixos/modules/virtualisation/digital-ocean-init.nix+1−1 nixos/modules/virtualisation/docker-rootless.nix−102 nixos/modules/virtualisation/docker.nix+8−32 nixos/modules/virtualisation/ec2-amis.nix+371−9 nixos/modules/virtualisation/ecs-agent.nix+1−1 nixos/modules/virtualisation/fetch-instance-ssh-keys.bash+36 nixos/modules/virtualisation/google-compute-config.nix+103−32 nixos/modules/virtualisation/google-compute-image.nix+1−10 nixos/modules/virtualisation/hyperv-guest.nix+1−1 nixos/modules/virtualisation/kubevirt.nix−30 nixos/modules/virtualisation/kvmgt.nix+1−1 nixos/modules/virtualisation/libvirtd.nix+67−166 nixos/modules/virtualisation/lxc-container.nix+13−161 nixos/modules/virtualisation/lxd.nix+5−5 nixos/modules/virtualisation/nixos-containers.nix+16−31 nixos/modules/virtualisation/oci-containers.nix+17−15 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+54−9 nixos/modules/virtualisation/parallels-guest.nix+2−1 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-image.nix−169 nixos/modules/virtualisation/proxmox-lxc.nix−64 nixos/modules/virtualisation/qemu-guest-agent.nix+1−2 nixos/modules/virtualisation/qemu-vm.nix+89−366 nixos/modules/virtualisation/railcar.nix+4−3 nixos/modules/virtualisation/spice-usb-redirection.nix+2−4 nixos/modules/virtualisation/virtualbox-guest.nix+2−2 nixos/modules/virtualisation/virtualbox-host.nix+2−10 nixos/modules/virtualisation/virtualbox-image.nix−8 nixos/modules/virtualisation/vmware-guest.nix+1−27 nixos/modules/virtualisation/vmware-host.nix−166 nixos/modules/virtualisation/waydroid.nix−75 nixos/modules/virtualisation/xen-dom0.nix+5−4 nixos/release-combined.nix+2−4 nixos/release-small.nix+2−4 nixos/release.nix+2−47 nixos/tests/acme.nix+210−366 nixos/tests/adguardhome.nix−57 nixos/tests/aesmd.nix−62 nixos/tests/agda.nix+5−2 nixos/tests/airsonic.nix+5−1 nixos/tests/all-terminfo.nix−31 nixos/tests/all-tests.nix+37−177 nixos/tests/amazon-init-shell.nix+1−1 nixos/tests/ammonite.nix+20 nixos/tests/apfs.nix−54 nixos/tests/apparmor.nix+1−1 nixos/tests/atd.nix+1−1 nixos/tests/atop.nix+16−6 nixos/tests/avahi.nix+1−1 nixos/tests/awscli.nix+17 nixos/tests/bat.nix+12 nixos/tests/bazarr.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/bittorrent.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+18−61 nixos/tests/borgbackup.nix+1−34 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+40−56 nixos/tests/cage.nix+2−1 nixos/tests/cagebreak.nix+2−1 nixos/tests/calibre-web.nix+10 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+76−70 nixos/tests/cifs-utils.nix+12 nixos/tests/clickhouse.nix+1−1 nixos/tests/cloud-init.nix+2−27 nixos/tests/cntr.nix−75 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/ec2.nix−1 nixos/tests/common/lxd/config.yaml−24 nixos/tests/common/wayland-cage.nix−13 nixos/tests/containers-bridge.nix+3−2 nixos/tests/containers-custom-pkgs.nix+1−1 nixos/tests/containers-ephemeral.nix+5−4 nixos/tests/containers-extra_veth.nix+3−2 nixos/tests/containers-hosts.nix+2−1 nixos/tests/containers-imperative.nix+12−11 nixos/tests/containers-ip.nix+3−2 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+3−2 nixos/tests/containers-tmpfs.nix+8−7 nixos/tests/couchdb.nix−3 nixos/tests/cri-o.nix+1−1 nixos/tests/croc.nix+1−1 nixos/tests/cryptpad.nix−18 nixos/tests/custom-ca.nix+93−104 nixos/tests/deluge.nix+57−11 nixos/tests/dex-oidc.nix−78 nixos/tests/disable-installer-tools.nix−29 nixos/tests/discourse.nix+2−4 nixos/tests/dnsdist.nix−48 nixos/tests/doas.nix+1−16 nixos/tests/docker-rootless.nix−41 nixos/tests/docker-tools-cross.nix+2−2 nixos/tests/docker-tools.nix+6−47 nixos/tests/documize.nix+1−1 nixos/tests/doh-proxy-rust.nix+1−1 nixos/tests/dokuwiki.nix+25−60 nixos/tests/domination.nix−26 nixos/tests/dovecot.nix+1−1 nixos/tests/drbd.nix−87 nixos/tests/earlyoom.nix−16 nixos/tests/ec2.nix−5 nixos/tests/ecryptfs.nix+1−1 nixos/tests/elk.nix+45−98 nixos/tests/emacs-daemon.nix+2−2 nixos/tests/empty-file nixos/tests/enlightenment.nix+5−4 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+2−2 nixos/tests/fancontrol.nix+1−1 nixos/tests/fcitx/default.nix+2−1 nixos/tests/fenics.nix+2−1 nixos/tests/firefox.nix+10−8 nixos/tests/fish.nix+1−1 nixos/tests/fluentd.nix+1−1 nixos/tests/fluidd.nix−21 nixos/tests/fontconfig-default-fonts.nix+1−1 nixos/tests/frr.nix−104 nixos/tests/fsck.nix+1−1 nixos/tests/ft2-clone.nix+2−2 nixos/tests/gerrit.nix+1 nixos/tests/geth.nix+2−2 nixos/tests/ghostunnel.nix+3−2 nixos/tests/gitlab.nix+27−311 nixos/tests/gitolite-fcgiwrap.nix+2−2 nixos/tests/gnome-xorg.nix+2−17 nixos/tests/gnome.nix+2−17 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+2−2 nixos/tests/grocy.nix+2−2 nixos/tests/grub.nix+1−1 nixos/tests/hadoop/default.nix−7 nixos/tests/hadoop/hadoop.nix−255 nixos/tests/hadoop/hdfs.nix+27−57 nixos/tests/hadoop/yarn.nix+23−22 nixos/tests/handbrake.nix+31 nixos/tests/haproxy.nix+1 nixos/tests/hardened.nix+31−6 nixos/tests/haste-server.nix−23 nixos/tests/hbase.nix−30 nixos/tests/herbstluftwm.nix+2−1 nixos/tests/hibernate.nix+8−21 nixos/tests/hitch/default.nix+1−1 nixos/tests/hocker-fetchdocker/default.nix+1−1 nixos/tests/hockeypuck.nix−63 nixos/tests/home-assistant.nix+34−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.nix+62 nixos/tests/ihatemoney/default.nix−78 nixos/tests/ihatemoney/rates.json−39 nixos/tests/ihatemoney/server.crt−28 nixos/tests/ihatemoney/server.key−52 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−4 nixos/tests/installed-tests/flatpak.nix−1 nixos/tests/installed-tests/fwupd.nix+1 nixos/tests/installed-tests/gjs.nix−6 nixos/tests/installed-tests/power-profiles-daemon.nix−9 nixos/tests/installer-systemd-stage-1.nix−33 nixos/tests/installer.nix+37−44 nixos/tests/invidious.nix−81 nixos/tests/invoiceplane.nix−82 nixos/tests/ipfs.nix−5 nixos/tests/iscsi-multipath-root.nix−267 nixos/tests/iscsi-root.nix+5−5 nixos/tests/isso.nix−30 nixos/tests/jellyfin.nix+1−1 nixos/tests/jenkins.nix−2 nixos/tests/jibri.nix−69 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+4−2 nixos/tests/kbd-setfont-decompress.nix+1−1 nixos/tests/kbd-update-search-paths-patch.nix−19 nixos/tests/kea.nix−73 nixos/tests/keepassxc.nix+9−43 nixos/tests/kerberos/heimdal.nix+2−2 nixos/tests/kerberos/mit.nix+1−1 nixos/tests/kernel-generic.nix+15−18 nixos/tests/kernel-latest-ath-user-regd.nix+1−1 nixos/tests/kexec.nix+19−44 nixos/tests/keycloak.nix+14−33 nixos/tests/keymap.nix+1−1 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+5−13 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/libreddit.nix−19 nixos/tests/libresprite.nix−30 nixos/tests/libreswan.nix+1−1 nixos/tests/lightdm.nix+1−1 nixos/tests/limesurvey.nix+1−1 nixos/tests/litestream.nix−93 nixos/tests/login.nix+1−1 nixos/tests/logrotate.nix−152 nixos/tests/loki.nix+1−1 nixos/tests/lorri/default.nix+1−1 nixos/tests/lsd.nix+12 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−94 nixos/tests/lxd-nftables.nix+1−1 nixos/tests/lxd.nix+68−41 nixos/tests/maddy.nix−58 nixos/tests/maestral.nix−72 nixos/tests/magic-wormhole-mailbox-server.nix+1−1 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+63−125 nixos/tests/matrix-conduit.nix−95 nixos/tests/matrix-synapse.nix+9−140 nixos/tests/matrix/mjolnir.nix−170 nixos/tests/matrix/pantalaimon.nix−88 nixos/tests/mattermost.nix−124 nixos/tests/mediawiki.nix+1−1 nixos/tests/meilisearch.nix−60 nixos/tests/memcached.nix+1−1 nixos/tests/metabase.nix+1 nixos/tests/minecraft.nix+1−1 nixos/tests/minidlna.nix+2−4 nixos/tests/miniflux.nix+7−19 nixos/tests/minio.nix+1−4 nixos/tests/misc.nix+6−7 nixos/tests/mod_perl.nix−53 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/mosquitto.nix+51−166 nixos/tests/mpd.nix+1−1 nixos/tests/mpv.nix−28 nixos/tests/mtp.nix−109 nixos/tests/mumble.nix+2−2 nixos/tests/musescore.nix+2−2 nixos/tests/mutable-users.nix−28 nixos/tests/mysql/common.nix−10 nixos/tests/mysql/mariadb-galera-mariabackup.nix+223 nixos/tests/mysql/mariadb-galera-rsync.nix+216 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+188−134 nixos/tests/nagios.nix+1−1 nixos/tests/nano.nix+44 nixos/tests/nar-serve.nix+1−1 nixos/tests/nats.nix−63 nixos/tests/navidrome.nix−12 nixos/tests/nbd.nix−103 nixos/tests/ncdns.nix+9−6 nixos/tests/networking-proxy.nix+1 nixos/tests/networking.nix+14−223 nixos/tests/nextcloud/basic.nix+3−13 nixos/tests/nextcloud/default.nix+8−20 nixos/tests/nextcloud/with-mysql-and-memcached.nix+18−8 nixos/tests/nextcloud/with-postgresql-and-redis.nix+2−5 nixos/tests/nexus.nix+1−1 nixos/tests/nfs/simple.nix+1−1 nixos/tests/nginx-etag.nix+2−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/nitter.nix−18 nixos/tests/nix-ld.nix−20 nixos/tests/nix-serve-ssh.nix−45 nixos/tests/nix-serve.nix−22 nixos/tests/nix-ssh-serve.nix+45 nixos/tests/nixops/default.nix−114 nixos/tests/nixops/legacy/base-configuration.nix−31 nixos/tests/nixops/legacy/nixops.nix−15 nixos/tests/nixos-generate-config.nix+1−1 nixos/tests/node-red.nix−31 nixos/tests/noto-fonts.nix−44 nixos/tests/novacomd.nix+1−1 nixos/tests/nsd.nix−1 nixos/tests/nzbget.nix+1−17 nixos/tests/odoo.nix−27 nixos/tests/oh-my-zsh.nix+1−1 nixos/tests/openarena.nix+2−2 nixos/tests/openldap.nix+3−3 nixos/tests/openresty-lua.nix−55 nixos/tests/opensmtpd-rspamd.nix+1 nixos/tests/openssh.nix+6−12 nixos/tests/opentabletdriver.nix+1−1 nixos/tests/os-prober.nix+10−10 nixos/tests/osrm-backend.nix+1−1 nixos/tests/overlayfs.nix+1−1 nixos/tests/owncast.nix−42 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+8−7 nixos/tests/paperless.nix+17−25 nixos/tests/parsedmarc/default.nix−235 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−17 nixos/tests/plasma5-systemd-start.nix−42 nixos/tests/plasma5.nix+6−5 nixos/tests/plausible.nix+1−4 nixos/tests/pleroma.nix+20−4 nixos/tests/plikd.nix+1−1 nixos/tests/plotinus.nix+2−2 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/postfixadmin.nix−31 nixos/tests/postgresql-wal-receiver.nix+1−1 nixos/tests/postgresql.nix+7−32 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/printing.nix+10−2 nixos/tests/privacyidea.nix+2−1 nixos/tests/privoxy.nix+1−1 nixos/tests/prometheus-exporters.nix+43−141 nixos/tests/prometheus.nix+1−91 nixos/tests/prowlarr.nix−18 nixos/tests/pt2-clone.nix+2−2 nixos/tests/pulseaudio.nix−71 nixos/tests/qboot.nix+1−1 nixos/tests/quorum.nix+9−32 nixos/tests/rabbitmq.nix+2−8 nixos/tests/radicale.nix+1−1 nixos/tests/rasdaemon.nix−34 nixos/tests/redis.nix+17−19 nixos/tests/redmine.nix+1−1 nixos/tests/restart-by-activation-script.nix−73 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/run-in-machine.nix+23 nixos/tests/sabnzbd.nix−22 nixos/tests/samba-wsdd.nix+1−1 nixos/tests/samba.nix+2−1 nixos/tests/sanoid.nix+2−15 nixos/tests/sddm.nix+2−2 nixos/tests/seafile.nix−121 nixos/tests/service-runner.nix+1−1 nixos/tests/sfxr-qt.nix−32 nixos/tests/shattered-pixel-dungeon.nix+2−3 nixos/tests/shiori.nix+2−1 nixos/tests/signal-desktop.nix+8−23 nixos/tests/simple.nix+1−1 nixos/tests/slurm.nix+1−1 nixos/tests/snapcast.nix−9 nixos/tests/snapper.nix+1−1 nixos/tests/soapui.nix−24 nixos/tests/solr.nix+1−1 nixos/tests/sourcehut.nix+10−193 nixos/tests/spark/default.nix−27 nixos/tests/spark/spark_sample.py−40 nixos/tests/spike.nix+22 nixos/tests/ssh-keys.nix+1−1 nixos/tests/sssd-ldap.nix+81−79 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+6−1016 nixos/tests/sympa.nix+2−1 nixos/tests/syncthing-init.nix+9−9 nixos/tests/syncthing-relay.nix+1−1 nixos/tests/syncthing.nix+2−2 nixos/tests/systemd-analyze.nix+1−1 nixos/tests/systemd-binfmt.nix+20−86 nixos/tests/systemd-boot.nix+5−169 nixos/tests/systemd-confinement.nix+24−45 nixos/tests/systemd-cryptenroll.nix−54 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+12−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/tigervnc.nix−53 nixos/tests/tinydns.nix+1−15 nixos/tests/tinywl.nix−57 nixos/tests/tomcat.nix−21 nixos/tests/tor.nix+15−10 nixos/tests/trac.nix+19 nixos/tests/traefik.nix−2 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+4−5 nixos/tests/tuxguitar.nix−24 nixos/tests/txredisapi.nix+4−6 nixos/tests/ucg.nix+18 nixos/tests/udisks2.nix+2−2 nixos/tests/unbound.nix+2−11 nixos/tests/unifi.nix−36 nixos/tests/usbguard.nix+2−2 nixos/tests/user-activation-scripts.nix−33 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+2−2 nixos/tests/vscodium.nix+35−66 nixos/tests/vsftpd.nix−42 nixos/tests/wasabibackend.nix+1−1 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−131 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−48 nixos/tests/wireguard/wg-quick.nix+1−1 nixos/tests/without-nix.nix−32 nixos/tests/wmderland.nix+1−1 nixos/tests/wordpress.nix+23−56 nixos/tests/wpa_supplicant.nix−96 nixos/tests/xautolock.nix+1−1 nixos/tests/xfce.nix+3−2 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+2−3 nixos/tests/xmpp/xmpp-sendmessage.nix+4−1 nixos/tests/xrdp.nix+2−2 nixos/tests/xss-lock.nix+1−1 nixos/tests/xterm.nix+2−2 nixos/tests/xxh.nix−67 nixos/tests/yabar.nix+2−2 nixos/tests/yq.nix+12 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+6−9 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−106 pkgs/applications/audio/ChowPhaser/default.nix−76 pkgs/applications/audio/LibreArp/default.nix−53 pkgs/applications/audio/LibreArp/lv2.nix−53 pkgs/applications/audio/aacgain/default.nix+2−3 pkgs/applications/audio/aether-lv2/default.nix−33 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/5.nix+161 pkgs/applications/audio/ardour/default.nix+3−3 pkgs/applications/audio/ashuffle/default.nix+2−2 pkgs/applications/audio/audacious/default.nix+6−8 pkgs/applications/audio/audacity/default.nix+59−99 pkgs/applications/audio/audio-recorder/default.nix+1−1 pkgs/applications/audio/aumix/default.nix+13−28 pkgs/applications/audio/axoloti/libusb1.nix+6−7 pkgs/applications/audio/bambootracker/default.nix+21−9 pkgs/applications/audio/bchoppr/default.nix+2−2 pkgs/applications/audio/bespokesynth/default.nix−148 pkgs/applications/audio/bitwig-studio/bitwig-studio2.nix+1−1 pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix−80 pkgs/applications/audio/bjumblr/default.nix+2−2 pkgs/applications/audio/blanket/default.nix−69 pkgs/applications/audio/boops/default.nix+2−2 pkgs/applications/audio/bschaffl/default.nix+2−2 pkgs/applications/audio/bsequencer/default.nix+2−2 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−11 pkgs/applications/audio/caudec/default.nix+10−6 pkgs/applications/audio/cdparanoia/default.nix+2−12 pkgs/applications/audio/cider/default.nix−30 pkgs/applications/audio/clementine/default.nix+10−3 pkgs/applications/audio/clerk/default.nix+10−33 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-audiobooks/default.nix+87 pkgs/applications/audio/cozy/default.nix−92 pkgs/applications/audio/crip/default.nix+2−3 pkgs/applications/audio/csound/default.nix+7−4 pkgs/applications/audio/cyanrip/default.nix−34 pkgs/applications/audio/deadbeef/default.nix+1 pkgs/applications/audio/deadbeef/plugins/statusnotifier.nix−39 pkgs/applications/audio/denemo/default.nix+2−2 pkgs/applications/audio/dfasma/default.nix+3−1 pkgs/applications/audio/dirt/default.nix+1−2 pkgs/applications/audio/dragonfly-reverb/default.nix+2−2 pkgs/applications/audio/drumkv1/default.nix+2−2 pkgs/applications/audio/easyeffects/default.nix+9−37 pkgs/applications/audio/ecasound/default.nix−11 pkgs/applications/audio/espeak-ng/default.nix−10 pkgs/applications/audio/espeak/default.nix+2−3 pkgs/applications/audio/espeak/edit.nix+2−3 pkgs/applications/audio/eteroj.lv2/default.nix+23 pkgs/applications/audio/exaile/default.nix−107 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+23−7 pkgs/applications/audio/fmit/default.nix+2 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/freqtweak/default.nix+1−1 pkgs/applications/audio/friture/default.nix+8−21 pkgs/applications/audio/friture/factorial.patch+13 pkgs/applications/audio/friture/unlock_constraints.patch+34 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/giada/default.nix+25−39 pkgs/applications/audio/gigedit/default.nix+3−20 pkgs/applications/audio/gmu/default.nix+3−22 pkgs/applications/audio/gnome-podcasts/default.nix+3−15 pkgs/applications/audio/goattracker/default.nix+3−2 pkgs/applications/audio/gpodder/default.nix+5−15 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−4 pkgs/applications/audio/helio-workstation/default.nix+5−5 pkgs/applications/audio/helm/default.nix+11−6 pkgs/applications/audio/helvum/default.nix+23−36 pkgs/applications/audio/hivelytracker/default.nix+1−1 pkgs/applications/audio/hqplayer-desktop/default.nix+6−7 pkgs/applications/audio/hushboard/default.nix−73 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/iannix/default.nix+2 pkgs/applications/audio/in-formant/default.nix−45 pkgs/applications/audio/indicator-sound-switcher/default.nix−62 pkgs/applications/audio/industrializer/default.nix+3−1 pkgs/applications/audio/jack-rack/default.nix+2−3 pkgs/applications/audio/jackmeter/default.nix+2−3 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/jconvolver/default.nix−114 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/kapitonov-plugins-pack/default.nix+1−1 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/librespot/cargo-lock.patch+3817 pkgs/applications/audio/librespot/default.nix+17−11 pkgs/applications/audio/linuxband/default.nix+37 pkgs/applications/audio/lmms/default.nix+3−3 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/midi-visualizer/default.nix+2−2 pkgs/applications/audio/mikmod/default.nix+2−3 pkgs/applications/audio/milkytracker/default.nix+2−8 pkgs/applications/audio/mimic/default.nix+6−14 pkgs/applications/audio/mimms/default.nix+31 pkgs/applications/audio/miniaudicle/default.nix+2−2 pkgs/applications/audio/mixxx/default.nix+4−20 pkgs/applications/audio/mmtc/default.nix+7−6 pkgs/applications/audio/moc/default.nix+3−5 pkgs/applications/audio/mod-arpeggiator-lv2/default.nix−26 pkgs/applications/audio/mod-distortion/default.nix+2−2 pkgs/applications/audio/molot-lite/default.nix+4−5 pkgs/applications/audio/mopidy/default.nix−6 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/mpd.nix+2−2 pkgs/applications/audio/mopidy/mpris.nix+2−2 pkgs/applications/audio/mopidy/muse.nix−29 pkgs/applications/audio/mopidy/spotify.nix+7−9 pkgs/applications/audio/mopidy/youtube.nix+15−43 pkgs/applications/audio/mopidy/ytmusic.nix−35 pkgs/applications/audio/mousai/default.nix+2−12 pkgs/applications/audio/mousai/paths.patch−13 pkgs/applications/audio/mp3blaster/default.nix+1−11 pkgs/applications/audio/mp3gain/default.nix+3−4 pkgs/applications/audio/mp3info/default.nix+2−3 pkgs/applications/audio/mpc/default.nix+13−41 pkgs/applications/audio/mpdevil/default.nix+3−4 pkgs/applications/audio/mpg123/default.nix+13−36 pkgs/applications/audio/munt/default.nix+51 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−6 pkgs/applications/audio/musikcube/default.nix+4−19 pkgs/applications/audio/mympd/default.nix+2−2 pkgs/applications/audio/ncmpc/default.nix+2−2 pkgs/applications/audio/ncspot/default.nix+16−14 pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patch−2007 pkgs/applications/audio/netease-cloud-music-gtk/default.nix−60 pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.sh−20 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+3−3 pkgs/applications/audio/non/default.nix+7−7 pkgs/applications/audio/nootka/default.nix+2−3 pkgs/applications/audio/nootka/unstable.nix+7−25 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/openmpt123/default.nix+30 pkgs/applications/audio/opus-tools/default.nix+2−4 pkgs/applications/audio/orca-c/default.nix+2−5 pkgs/applications/audio/osdlyrics/default.nix−87 pkgs/applications/audio/oxefmsynth/default.nix+1−1 pkgs/applications/audio/padthv1/default.nix+2−2 pkgs/applications/audio/pamix/default.nix+1−15 pkgs/applications/audio/pamixer/default.nix+6−6 pkgs/applications/audio/paprefs/default.nix+4−6 pkgs/applications/audio/parlatype/default.nix+68 pkgs/applications/audio/patchage/default.nix+11−33 pkgs/applications/audio/pavucontrol/default.nix+15−24 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+7−6 pkgs/applications/audio/plujain-ramp/default.nix+1−1 pkgs/applications/audio/pocket-casts/default.nix−55 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−30 pkgs/applications/audio/qjackctl/default.nix+2−2 pkgs/applications/audio/qmidiarp/default.nix+2−2 pkgs/applications/audio/qmidinet/default.nix+2−2 pkgs/applications/audio/qmmp/default.nix+3−3 pkgs/applications/audio/qpwgraph/default.nix−34 pkgs/applications/audio/qsynth/default.nix+2−2 pkgs/applications/audio/qtractor/default.nix+2−2 pkgs/applications/audio/quodlibet/default.nix+1−1 pkgs/applications/audio/r128gain/default.nix+8−2 pkgs/applications/audio/radiotray-ng/default.nix+2−2 pkgs/applications/audio/reaper/default.nix+5−7 pkgs/applications/audio/redux/default.nix−49 pkgs/applications/audio/rhvoice/default.nix+2−2 pkgs/applications/audio/rhythmbox/default.nix+5−50 pkgs/applications/audio/rofi-pulse-select/default.nix−40 pkgs/applications/audio/roomeqwizard/default.nix−118 pkgs/applications/audio/rosegarden/default.nix+9−27 pkgs/applications/audio/rubyripper/default.nix+11−23 pkgs/applications/audio/samplv1/default.nix+2−2 pkgs/applications/audio/sayonara/default.nix+2−2 pkgs/applications/audio/sc68/default.nix+3−3 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+3−6 pkgs/applications/audio/snd/default.nix+3−6 pkgs/applications/audio/songrec/default.nix+4−5 pkgs/applications/audio/sonic-pi/default.nix+39−62 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/soundtracker/default.nix+9−27 pkgs/applications/audio/soundwireserver/default.nix−40 pkgs/applications/audio/spectmorph/default.nix+2−2 pkgs/applications/audio/split2flac/default.nix+2−2 pkgs/applications/audio/spot/default.nix+7−12 pkgs/applications/audio/spotify-qt/default.nix+2−2 pkgs/applications/audio/spotify-tui/default.nix+3−4 pkgs/applications/audio/spotify/default.nix+11−16 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+18−27 pkgs/applications/audio/sublime-music/default.nix+7−14 pkgs/applications/audio/sunvox/default.nix+3−3 pkgs/applications/audio/surge-XT/default.nix−93 pkgs/applications/audio/swh-lv2/default.nix+4−6 pkgs/applications/audio/synaesthesia/default.nix−33 pkgs/applications/audio/synthv1/default.nix+2−2 pkgs/applications/audio/tageditor/default.nix+2 pkgs/applications/audio/tagutil/default.nix−45 pkgs/applications/audio/tauon/default.nix−122 pkgs/applications/audio/tenacity/default.nix−148 pkgs/applications/audio/termusic/default.nix−28 pkgs/applications/audio/timemachine/default.nix+2−2 pkgs/applications/audio/tonelib-gfx/default.nix+34−32 pkgs/applications/audio/tonelib-jam/default.nix+32−33 pkgs/applications/audio/tonelib-metal/default.nix−60 pkgs/applications/audio/tonelib-zoom/default.nix+19−34 pkgs/applications/audio/tony/default.nix+2−3 pkgs/applications/audio/transcode/default.nix+2−3 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+2−9 pkgs/applications/audio/wavegain/default.nix+2−15 pkgs/applications/audio/whipper/default.nix+1−9 pkgs/applications/audio/x42-avldrums/default.nix+2−2 pkgs/applications/audio/x42-plugins/default.nix+2−2 pkgs/applications/audio/xmp/default.nix+2−3 pkgs/applications/audio/xsynth-dssi/default.nix+1−2 pkgs/applications/audio/yoshimi/default.nix+18−49 pkgs/applications/audio/zam-plugins/default.nix+2−2 pkgs/applications/audio/zita-ajbridge/default.nix+2−3 pkgs/applications/audio/zita-at1/default.nix+2−3 pkgs/applications/audio/zita-njbridge/default.nix+2−2 pkgs/applications/audio/zrythm/default.nix−174 pkgs/applications/audio/zynaddsubfx/default.nix+1−14 pkgs/applications/backup/areca/default.nix+3−6 pkgs/applications/backup/deja-dup/default.nix+12−12 pkgs/applications/backup/deja-dup/fix-paths.patch+3−3 pkgs/applications/backup/pika-backup/default.nix+3−12 pkgs/applications/backup/urbackup-client/default.nix−23 pkgs/applications/backup/vorta/default.nix+3−2 pkgs/applications/blockchains/aeon/default.nix+2−2 pkgs/applications/blockchains/alfis/default.nix+13−28 pkgs/applications/blockchains/besu/default.nix−29 pkgs/applications/blockchains/bisq-desktop/default.nix+33−35 pkgs/applications/blockchains/bisq-desktop/update.sh−22 pkgs/applications/blockchains/bitcoin-abc.nix+50 pkgs/applications/blockchains/bitcoin-abc/default.nix−76 pkgs/applications/blockchains/bitcoin-classic.nix+56 pkgs/applications/blockchains/bitcoin-classic/default.nix−76 pkgs/applications/blockchains/bitcoin-gold/default.nix → pkgs/applications/blockchains/bitcoin-gold.nix pkgs/applications/blockchains/bitcoin-knots.nix+41 pkgs/applications/blockchains/bitcoin-knots/default.nix−83 pkgs/applications/blockchains/bitcoin-unlimited.nix+66 pkgs/applications/blockchains/bitcoin-unlimited/default.nix−66 pkgs/applications/blockchains/bitcoin.nix+104 pkgs/applications/blockchains/bitcoin/default.nix−108 pkgs/applications/blockchains/btcpayserver/default.nix+38−14 pkgs/applications/blockchains/btcpayserver/deps.nix+602−687 pkgs/applications/blockchains/btcpayserver/update.sh+1−2 pkgs/applications/blockchains/cgminer/default.nix+2−2 pkgs/applications/blockchains/charge-lnd/default.nix+2−2 pkgs/applications/blockchains/chia-plotter/default.nix−72 pkgs/applications/blockchains/chia-plotter/dont_fetch_dependencies.patch−63 pkgs/applications/blockchains/chia/default.nix+24−31 pkgs/applications/blockchains/clightning.nix+63 pkgs/applications/blockchains/clightning/default.nix−71 pkgs/applications/blockchains/crypto-org-wallet.nix+33 pkgs/applications/blockchains/crypto-org-wallet/default.nix−33 pkgs/applications/blockchains/cryptop/default.nix+2−2 pkgs/applications/blockchains/dashpay.nix+44 pkgs/applications/blockchains/dashpay/default.nix−44 pkgs/applications/blockchains/dcrd/default.nix → pkgs/applications/blockchains/dcrd.nix pkgs/applications/blockchains/dcrwallet/default.nix → pkgs/applications/blockchains/dcrwallet.nix pkgs/applications/blockchains/dero.nix+25 pkgs/applications/blockchains/digibyte/default.nix → pkgs/applications/blockchains/digibyte.nix pkgs/applications/blockchains/dogecoin.nix+41 pkgs/applications/blockchains/dogecoin/default.nix−41 pkgs/applications/blockchains/eclair/default.nix−38 pkgs/applications/blockchains/electrs.nix+30 pkgs/applications/blockchains/electrs/default.nix−42 pkgs/applications/blockchains/electrs/update.sh−40 pkgs/applications/blockchains/elements/default.nix−84 pkgs/applications/blockchains/ergo/default.nix+2−2 pkgs/applications/blockchains/erigon.nix−34 pkgs/applications/blockchains/ethabi/default.nix+1 pkgs/applications/blockchains/exodus/default.nix+3−4 pkgs/applications/blockchains/bitcoin-abc/fix-bitcoin-qt-build.patch → pkgs/applications/blockchains/fix-bitcoin-qt-build.patch pkgs/applications/blockchains/fulcrum/default.nix−36 pkgs/applications/blockchains/go-ethereum.nix+60 pkgs/applications/blockchains/go-ethereum/default.nix−61 pkgs/applications/blockchains/groestlcoin/default.nix−93 pkgs/applications/blockchains/ledger-live-desktop/default.nix+5−18 pkgs/applications/blockchains/ledger-live-desktop/systemd.patch−14 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.nix+55 pkgs/applications/blockchains/litecoin/default.nix−54 pkgs/applications/blockchains/lnd.nix+40 pkgs/applications/blockchains/lnd/default.nix−40 pkgs/applications/blockchains/lndconnect/default.nix+1−1 pkgs/applications/blockchains/lndmanage.nix+44 pkgs/applications/blockchains/lndmanage/default.nix−44 pkgs/applications/blockchains/masari/default.nix → pkgs/applications/blockchains/masari.nix 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+19−14 pkgs/applications/blockchains/monero/default.nix+68 pkgs/applications/blockchains/monero/use-system-libraries.patch+69 pkgs/applications/blockchains/mycrypto/default.nix+4−4 pkgs/applications/blockchains/namecoin.nix+48 pkgs/applications/blockchains/namecoin/default.nix−47 pkgs/applications/blockchains/nano-wallet/default.nix+3−4 pkgs/applications/blockchains/nbxplorer/default.nix+36−12 pkgs/applications/blockchains/nbxplorer/deps.nix+243−263 pkgs/applications/blockchains/nbxplorer/update.sh+1−1 pkgs/applications/blockchains/nbxplorer/util/create-deps.sh+3−4 pkgs/applications/blockchains/nbxplorer/util/update-common.sh+4−5 pkgs/applications/blockchains/nearcore/default.nix−42 pkgs/applications/blockchains/openethereum/default.nix+5−5 pkgs/applications/blockchains/oxen/default.nix−68 pkgs/applications/blockchains/parity-ui/default.nix+48 pkgs/applications/blockchains/parity-ui/env.nix+19 pkgs/applications/blockchains/particl-core/default.nix−56 pkgs/applications/blockchains/particl/particl-core.nix+53 pkgs/applications/blockchains/pivx.nix+59 pkgs/applications/blockchains/pivx/default.nix−78 pkgs/applications/blockchains/polkadot/default.nix+4−27 pkgs/applications/blockchains/quorum/default.nix → pkgs/applications/blockchains/quorum.nix 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.nix+46 pkgs/applications/blockchains/stellar-core/default.nix−50 pkgs/applications/blockchains/sumokoin/default.nix → pkgs/applications/blockchains/sumokoin.nix pkgs/applications/blockchains/tessera/default.nix → pkgs/applications/blockchains/tessera.nix pkgs/applications/blockchains/trezor-suite/default.nix+5−4 pkgs/applications/blockchains/turbo-geth.nix+30 pkgs/applications/blockchains/vertcoin/default.nix → pkgs/applications/blockchains/vertcoin.nix 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+5−6 pkgs/applications/blockchains/whirlpool-gui/default.nix+104 pkgs/applications/blockchains/wownero.nix+60 pkgs/applications/blockchains/wownero/default.nix−61 pkgs/applications/blockchains/zcash/default.nix+6−6 pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix+7−8 pkgs/applications/display-managers/lightdm/default.nix+1−1 pkgs/applications/display-managers/ly/default.nix+1−1 pkgs/applications/display-managers/sddm/default.nix−7 pkgs/applications/display-managers/sddm/sddm-default-session.patch−71 pkgs/applications/editors/aewan/default.nix+1−12 pkgs/applications/editors/android-studio/common.nix+16−21 pkgs/applications/editors/android-studio/default.nix+8−8 pkgs/applications/editors/apostrophe/default.nix+8−14 pkgs/applications/editors/aseprite/skia.nix+1−10 pkgs/applications/editors/atom/default.nix+4−4 pkgs/applications/editors/atom/env.nix+2−2 pkgs/applications/editors/bless/default.nix+6−12 pkgs/applications/editors/bluefish/default.nix+8−25 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+3−5 pkgs/applications/editors/cudatext/deps.json+22−22 pkgs/applications/editors/cudatext/update.sh−23 pkgs/applications/editors/deadpixi-sam/default.nix+7−9 pkgs/applications/editors/eclipse/build-eclipse.nix+7−7 pkgs/applications/editors/eclipse/default.nix+14−18 pkgs/applications/editors/eclipse/plugins.nix+3−98 pkgs/applications/editors/ed/default.nix+2−2 pkgs/applications/editors/elvis/default.nix+7−10 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/agda-input/default.nix−18 pkgs/applications/editors/emacs/elisp-packages/agda2-mode/default.nix−27 pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix+25−23 pkgs/applications/editors/emacs/elisp-packages/bqn-mode/default.nix−22 pkgs/applications/editors/emacs/elisp-packages/cedet/default.nix+51 pkgs/applications/editors/emacs/elisp-packages/cedille/default.nix+9−12 pkgs/applications/editors/emacs/elisp-packages/color-theme-solarized/default.nix+17−22 pkgs/applications/editors/emacs/elisp-packages/control-lock/default.nix−23 pkgs/applications/editors/emacs/elisp-packages/ebuild-mode/default.nix+3−3 pkgs/applications/editors/emacs/elisp-packages/elpa-generated.nix+224−988 pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix+5−52 pkgs/applications/editors/emacs/elisp-packages/emacs2nix.nix+4−5 pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix+12−30 pkgs/applications/editors/emacs/elisp-packages/ement/default.nix−44 pkgs/applications/editors/emacs/elisp-packages/ement/handle-nil-images.patch−28 pkgs/applications/editors/emacs/elisp-packages/ess-R-object-popup/default.nix+13−21 pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix+31−19 pkgs/applications/editors/emacs/elisp-packages/fetchelpa.nix−21 pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix+13−16 pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix+23−13 pkgs/applications/editors/emacs/elisp-packages/header-file-mode/default.nix−30 pkgs/applications/editors/emacs/elisp-packages/helm-words/default.nix+15−20 pkgs/applications/editors/emacs/elisp-packages/ido-ubiquitous/default.nix+27 pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix+25−14 pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix+24−14 pkgs/applications/editors/emacs/elisp-packages/jam-mode/default.nix+3−10 pkgs/applications/editors/emacs/elisp-packages/libgenerated.nix+3−5 pkgs/applications/editors/emacs/elisp-packages/llvm-mode/default.nix−17 pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix+117−86 pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix+67−89 pkgs/applications/editors/emacs/elisp-packages/mu4e-patch/default.nix+38 pkgs/applications/editors/emacs/elisp-packages/nano-theme/default.nix+12−5 pkgs/applications/editors/emacs/elisp-packages/nongnu-generated.nix−2393 pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix−37 pkgs/applications/editors/emacs/elisp-packages/org-generated.nix+33 pkgs/applications/editors/emacs/elisp-packages/org-mac-link/default.nix+31 pkgs/applications/editors/emacs/elisp-packages/org-packages.nix+32 pkgs/applications/editors/emacs/elisp-packages/ott-mode/default.nix−19 pkgs/applications/editors/emacs/elisp-packages/perl-completion/default.nix+1−1 pkgs/applications/editors/emacs/elisp-packages/plz/default.nix−31 pkgs/applications/editors/emacs/elisp-packages/power-mode/default.nix+11−4 pkgs/applications/editors/emacs/elisp-packages/prolog/default.nix+2−2 pkgs/applications/editors/emacs/elisp-packages/railgun/default.nix+22 pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json+8353−12642 pkgs/applications/editors/emacs/elisp-packages/rect-mark/default.nix+25−19 pkgs/applications/editors/emacs/elisp-packages/session-management-for-emacs/default.nix+9−11 pkgs/applications/editors/emacs/elisp-packages/sunrise-commander/default.nix+18−5 pkgs/applications/editors/emacs/elisp-packages/sv-kalender/default.nix+5−2 pkgs/applications/editors/emacs/elisp-packages/tramp/default.nix+28 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-nongnu−4 pkgs/applications/editors/emacs/elisp-packages/update-org+4 pkgs/applications/editors/emacs/elisp-packages/urweb-mode/default.nix−27 pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix+21−13 pkgs/applications/editors/emacs/elisp-packages/zeitgeist/default.nix+25 pkgs/applications/editors/emacs/generic.nix+8−34 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/focuswriter/default.nix+2 pkgs/applications/editors/fte/default.nix+1−2 pkgs/applications/editors/geany/default.nix+2−2 pkgs/applications/editors/ghostwriter/default.nix+2−2 pkgs/applications/editors/glow/default.nix+1−1 pkgs/applications/editors/gnome-builder/default.nix+21−24 pkgs/applications/editors/gobby/default.nix+1−1 pkgs/applications/editors/gophernotes/default.nix+3−3 pkgs/applications/editors/helix/default.nix+11−23 pkgs/applications/editors/heme/default.nix+29 pkgs/applications/editors/hexcurse/default.nix−16 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+112−130 pkgs/applications/editors/jetbrains/linux.nix−93 pkgs/applications/editors/jetbrains/update.pl+97 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/clojupyter/default.nix−73 pkgs/applications/editors/jupyter-kernels/clojupyter/deps.edn−1 pkgs/applications/editors/jupyter-kernels/clojupyter/deps.nix−1107 pkgs/applications/editors/jupyter-kernels/clojupyter/update.sh−16 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+12−5 pkgs/applications/editors/kakoune/plugins/aliases.nix+1−1 pkgs/applications/editors/kakoune/plugins/build-kakoune-plugin.nix+2−2 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-shell.nix−15 pkgs/applications/editors/kakoune/plugins/update.py+39−44 pkgs/applications/editors/kdevelop5/kdev-php.nix+3−3 pkgs/applications/editors/kdevelop5/kdev-python.nix+3−3 pkgs/applications/editors/kdevelop5/kdevelop.nix+2−2 pkgs/applications/editors/kile/default.nix+2−3 pkgs/applications/editors/kodestudio/default.nix+2−2 pkgs/applications/editors/lapce/default.nix−99 pkgs/applications/editors/leo-editor/default.nix+7−6 pkgs/applications/editors/libresprite/default.nix−111 pkgs/applications/editors/lifeograph/default.nix−40 pkgs/applications/editors/lighttable/default.nix+3−3 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+5−7 pkgs/applications/editors/micro/test-with-expect.nix−30 pkgs/applications/editors/mindforger/default.nix+1 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+6−6 pkgs/applications/editors/nano/default.nix+4−6 pkgs/applications/editors/nano/nanorc/default.nix+2 pkgs/applications/editors/nano/test-with-expect.nix−35 pkgs/applications/editors/ne/default.nix+3−3 pkgs/applications/editors/neovim/default.nix+22−17 pkgs/applications/editors/neovim/neovide/default.nix+12−37 pkgs/applications/editors/neovim/neovide/skia-externals.json+6−6 pkgs/applications/editors/neovim/neovim-qt.nix+1−2 pkgs/applications/editors/neovim/neovim-remote.nix+3−2 pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock+3−3 pkgs/applications/editors/neovim/ruby_provider/gemset.nix+6−12 pkgs/applications/editors/neovim/tests.nix−39 pkgs/applications/editors/neovim/utils.nix+1−11 pkgs/applications/editors/neovim/wrapper.nix+3−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−251 pkgs/applications/editors/oni2/default.nix−16 pkgs/applications/editors/oni2/esy_skia_use_nixpkgs.patch−13 pkgs/applications/editors/oni2/extensions.lock−497 pkgs/applications/editors/oni2/extensions.nix−629 pkgs/applications/editors/oni2/node.lock−376 pkgs/applications/editors/oni2/node.nix−453 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/quilter/default.nix+55 pkgs/applications/editors/qxmledit/default.nix+1−1 pkgs/applications/editors/rednotebook/default.nix+3−4 pkgs/applications/editors/rehex/default.nix+14−27 pkgs/applications/editors/retext/default.nix+16−37 pkgs/applications/editors/rstudio/clang-location.patch+15−51 pkgs/applications/editors/rstudio/default.nix+104−202 pkgs/applications/editors/rstudio/package.json−83 pkgs/applications/editors/rstudio/r-location.patch+15−20 pkgs/applications/editors/rstudio/yarn.lock−3835 pkgs/applications/editors/rstudio/yarndeps.nix−4373 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+9−11 pkgs/applications/editors/sublime/3/common.nix+2−2 pkgs/applications/editors/sublime/4/common.nix+2−2 pkgs/applications/editors/sublime/4/packages.nix+6−6 pkgs/applications/editors/supertux-editor/default.nix+2−2 pkgs/applications/editors/texmaker/default.nix+6−4 pkgs/applications/editors/texstudio/default.nix+2−2 pkgs/applications/editors/texworks/default.nix+2−2 pkgs/applications/editors/thiefmd/default.nix−48 pkgs/applications/editors/thonny/default.nix+3−18 pkgs/applications/editors/tiled/default.nix+6−4 pkgs/applications/editors/typora/default.nix+72 pkgs/applications/editors/uivonim/yarn.nix+1−1 pkgs/applications/editors/vim/common.nix+2−2 pkgs/applications/editors/vim/configurable.nix+34−17 pkgs/applications/editors/vim/default.nix+3−1 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/build-vim-plugin.nix−54 pkgs/applications/editors/vim/plugins/default.nix−52 pkgs/applications/editors/vim/plugins/deprecated.json−42 pkgs/applications/editors/vim/plugins/generated.nix−12184 pkgs/applications/editors/vim/plugins/markdown-preview-nvim/fix-node-paths.patch−46 pkgs/applications/editors/vim/plugins/markdown-preview-nvim/package.json−17 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-gen-doc-hook.sh−30 pkgs/applications/editors/vim/plugins/vim-plugin-names−1014 pkgs/applications/editors/vim/plugins/vim-utils.nix−566 pkgs/applications/editors/vim/vimacs.nix+2−2 pkgs/applications/editors/vis/default.nix+16−11 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-dotnettools-csharp/update-bin-srcs−21 pkgs/applications/editors/vscode/extensions/ms-toolsai-jupyter/default.nix−42 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/rescript/default.nix−28 pkgs/applications/editors/vscode/extensions/rescript/rescript-editor-analysis.nix−31 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/terraform/fix-terraform-ls.patch−19 pkgs/applications/editors/vscode/extensions/update_installed_exts.sh−90 pkgs/applications/editors/vscode/extensions/vscode-lldb/build-deps/package.json−23 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+44−70 pkgs/applications/editors/vscode/update-shell.nix−18 pkgs/applications/editors/vscode/update-vscode.sh+14−18 pkgs/applications/editors/vscode/update-vscodium.sh+14−18 pkgs/applications/editors/vscode/vscode.nix+10−11 pkgs/applications/editors/vscode/vscodium.nix+14−11 pkgs/applications/editors/vscode/with-extensions.nix+9−19 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−30 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/bochs/default.nix−136 pkgs/applications/emulators/bsnes/ares/default.nix−84 pkgs/applications/emulators/bsnes/ares/fix-ruby.patch−27 pkgs/applications/emulators/bsnes/bsnes-hd/default.nix−55 pkgs/applications/emulators/bsnes/bsnes-hd/macos-copy-app-to-prefix.patch−18 pkgs/applications/emulators/bsnes/bsnes-hd/macos-replace-sips-with-png2icns.patch−13 pkgs/applications/emulators/bsnes/higan/001-include-cmath.patch−8 pkgs/applications/emulators/bsnes/higan/002-sips-to-png2icns.patch−24 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/commanderx16/run.nix−37 pkgs/applications/emulators/desmume/default.nix−87 pkgs/applications/emulators/dgen-sdl/default.nix−69 pkgs/applications/emulators/dolphin-emu/master.nix−89 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/emu2/default.nix−26 pkgs/applications/emulators/fceux/default.nix−24 pkgs/applications/emulators/firebird-emu/default.nix−36 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/fuse-emulator/default.nix−29 pkgs/applications/emulators/gens-gs/default.nix−26 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/openmsx/default.nix−75 pkgs/applications/emulators/pcsx2/default.nix−93 pkgs/applications/emulators/pcsxr/0001-libpcsxcore-fix-build-with-ffmpeg-4.patch−76 pkgs/applications/emulators/pcsxr/default.nix−89 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/uxn/default.nix−54 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/wine/winetricks.nix−33 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−103 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/openorienteering-mapper/default.nix+3 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+18−74 pkgs/applications/gis/qmapshack/default.nix+4−12 pkgs/applications/gis/qmapshack/fix-qttranslations-path.patch−74 pkgs/applications/gis/saga/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+3−3 pkgs/applications/graphics/ImageMagick/7.0.nix+14−55 pkgs/applications/graphics/akira/default.nix+7−9 pkgs/applications/graphics/antimony/default.nix+7−3

18258 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+46−109
@@ -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
@@ -23,7 +19,7 @@
2319
2420# Libraries
2521/lib @edolstra @nbp @infinisil
26−/lib/systems @alyssais @nbp @ericson2314 @matthewbauer
22+/lib/systems @nbp @ericson2314 @matthewbauer
2723/lib/generators.nix @edolstra @nbp @Profpatsch
2824/lib/cli.nix @edolstra @nbp @Profpatsch
2925/lib/debug.nix @edolstra @nbp @Profpatsch
@@ -38,25 +34,19 @@
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
4944
50−# Nixpkgs documentation
51−/maintainers/scripts/db-to-md.sh @jtojnar @ryantm
52−/maintainers/scripts/doc @jtojnar @ryantm
53−/doc/build-aux/pandoc-filters @jtojnar
54−/doc/contributing/contributing-to-documentation.chapter.md @jtojnar
55−
5645# NixOS Internals
5746/nixos/default.nix @nbp @infinisil
5847/nixos/lib/from-env.nix @nbp @infinisil
5948/nixos/lib/eval-config.nix @nbp @infinisil
49+/nixos/doc @ryantm
6050/nixos/doc/manual/configuration/abstractions.xml @nbp
6151/nixos/doc/manual/configuration/config-file.xml @nbp
6252/nixos/doc/manual/configuration/config-syntax.xml @nbp
@@ -70,17 +60,10 @@
7060/nixos/doc/manual/development/writing-modules.xml @nbp
7161/nixos/doc/manual/man-nixos-option.xml @nbp
7262/nixos/modules/installer/tools/nixos-option.sh @nbp
73−/nixos/modules/system @dasJ
7463
7564# NixOS integration test driver
7665/nixos/lib/test-driver @tfc
7766
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−
8467# Updaters
8568## update.nix
8669/maintainers/scripts/update.nix @jtojnar
@@ -95,7 +78,8 @@
9578/pkgs/development/python-modules @FRidh @jonringer
9679/doc/languages-frameworks/python.section.md @FRidh
9780/pkgs/development/tools/poetry2nix @adisbladis
98−/pkgs/development/interpreters/python/hooks @FRidh @jonringer
81+/pkgs/development/interpreters/python/hooks @FRidh @jonringer @DavHau
82+/pkgs/development/interpreters/python/conda @DavHau
9983
10084# Haskell
10185/doc/languages-frameworks/haskell.section.md @cdepillabout @sternenseemann @maralorn @expipiplus1
@@ -107,13 +91,13 @@
10791/pkgs/top-level/haskell-packages.nix @cdepillabout @sternenseemann @maralorn @expipiplus1
10892
10993# Perl
110−/pkgs/development/interpreters/perl @stigtsp @zakame
111−/pkgs/top-level/perl-packages.nix @stigtsp @zakame
112−/pkgs/development/perl-modules @stigtsp @zakame
94+/pkgs/development/interpreters/perl @volth @stigtsp
95+/pkgs/top-level/perl-packages.nix @volth @stigtsp
96+/pkgs/development/perl-modules @volth @stigtsp
11397
11498# R
115−/pkgs/applications/science/math/R @jbedo
116−/pkgs/development/r-modules @jbedo
99+/pkgs/applications/science/math/R @peti
100+/pkgs/development/r-modules @peti
117101
118102# Ruby
119103/pkgs/development/interpreters/ruby @marsam
@@ -121,8 +105,11 @@
121105
122106# Rust
123107/pkgs/development/compilers/rust @Mic92 @LnL7 @zowoq
124−/pkgs/build-support/rust @zowoq
125−/doc/languages-frameworks/rust.section.md @zowoq
108+/pkgs/build-support/rust @andir @danieldk @zowoq
109+
110+# Darwin-related
111+/pkgs/stdenv/darwin @NixOS/darwin-maintainers
112+/pkgs/os-specific/darwin @NixOS/darwin-maintainers
126113
127114# C compilers
128115/pkgs/development/compilers/gcc @matthewbauer
@@ -132,14 +119,14 @@
132119/pkgs/top-level/unix-tools.nix @matthewbauer
133120/pkgs/development/tools/xcbuild @matthewbauer
134121
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
122+# Beam-related (Erlang, Elixir, LFE, etc)
123+/pkgs/development/beam-modules @gleber
124+/pkgs/development/interpreters/erlang @gleber
125+/pkgs/development/interpreters/lfe @gleber
126+/pkgs/development/interpreters/elixir @gleber
127+/pkgs/development/tools/build-managers/rebar @gleber
128+/pkgs/development/tools/build-managers/rebar3 @gleber
129+/pkgs/development/tools/erlang @gleber
143130
144131# Jetbrains
145132/pkgs/applications/editors/jetbrains @edwtjo
@@ -167,30 +154,12 @@
167154/nixos/tests/hardened.nix @joachifm
168155/pkgs/os-specific/linux/kernel/hardened-config.nix @joachifm
169156
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−
178157# Network Time Daemons
179158/pkgs/tools/networking/chrony @thoughtpolice
180159/pkgs/tools/networking/ntp @thoughtpolice
181160/pkgs/tools/networking/openntpd @thoughtpolice
182161/nixos/modules/services/networking/ntp @thoughtpolice
183162
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−
194163# Dhall
195164/pkgs/development/dhall-modules @Gabriel439 @Profpatsch @ehmry
196165/pkgs/development/interpreters/dhall @Gabriel439 @Profpatsch @ehmry
@@ -199,7 +168,7 @@
199168/pkgs/development/idris-modules @Infinisil
200169
201170# Bazel
202−/pkgs/development/tools/build-managers/bazel @Profpatsch
171+/pkgs/development/tools/build-managers/bazel @mboes @Profpatsch
203172
204173# NixOS modules for e-mail and dns services
205174/nixos/modules/services/mail/mailman.nix @peti
@@ -208,18 +177,18 @@
208177/nixos/modules/services/mail/rspamd.nix @peti
209178
210179# Emacs
211−/pkgs/applications/editors/emacs/elisp-packages @adisbladis
212−/pkgs/applications/editors/emacs @adisbladis
213−/pkgs/top-level/emacs-packages.nix @adisbladis
180+/pkgs/applications/editors/emacs-modes @adisbladis
181+/pkgs/applications/editors/emacs @adisbladis
182+/pkgs/top-level/emacs-packages.nix @adisbladis
214183
215184# Neovim
216185/pkgs/applications/editors/neovim @jonringer @teto
217186
218187# VimPlugins
219−/pkgs/applications/editors/vim/plugins @jonringer
188+/pkgs/misc/vim-plugins @jonringer @softinio
220189
221190# VsCode Extensions
222−/pkgs/applications/editors/vscode/extensions @jonringer
191+/pkgs/misc/vscode-extensions @jonringer
223192
224193# Prometheus exporter modules and tests
225194/nixos/modules/services/monitoring/prometheus/exporters.nix @WilliButz
@@ -227,65 +196,33 @@
227196/nixos/tests/prometheus-exporters.nix @WilliButz
228197
229198# 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
199+/doc/languages-frameworks/php.section.md @NixOS/php @aanderse @etu @globin @ma27 @talyz
200+/nixos/tests/php @NixOS/php @aanderse @etu @globin @ma27 @talyz
201+/pkgs/build-support/build-pecl.nix @NixOS/php @aanderse @etu @globin @ma27 @talyz
202+/pkgs/development/interpreters/php @jtojnar @NixOS/php @aanderse @etu @globin @ma27 @talyz
203+/pkgs/development/php-packages @NixOS/php @aanderse @etu @globin @ma27 @talyz
204+/pkgs/top-level/php-packages.nix @jtojnar @NixOS/php @aanderse @etu @globin @ma27 @talyz
236205
237206# 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
207+/nixos/modules/virtualisation/containers.nix @NixOS/podman @zowoq
208+/nixos/modules/virtualisation/cri-o.nix @NixOS/podman @zowoq
209+/nixos/modules/virtualisation/podman.nix @NixOS/podman @zowoq
210+/nixos/tests/cri-o.nix @NixOS/podman @zowoq
211+/nixos/tests/podman.nix @NixOS/podman @zowoq
243212
244213# Docker tools
245−/pkgs/build-support/docker @roberth
246−/nixos/tests/docker-tools* @roberth
247−/doc/builders/images/dockertools.section.md @roberth
214+/pkgs/build-support/docker @roberth @utdemir
215+/nixos/tests/docker-tools-overlay.nix @roberth
216+/nixos/tests/docker-tools.nix @roberth
217+/doc/builders/images/dockertools.xml @roberth
248218
249219# Blockchains
250220/pkgs/applications/blockchains @mmahut @RaghavSood
251221
252222# Go
253−/doc/languages-frameworks/go.section.md @kalbasit @Mic92 @zowoq
254223/pkgs/development/compilers/go @kalbasit @Mic92 @zowoq
255224/pkgs/development/go-modules @kalbasit @Mic92 @zowoq
256225/pkgs/development/go-packages @kalbasit @Mic92 @zowoq
257226
258−# GNOME
259−/pkgs/desktops/gnome @jtojnar @hedning
260−/pkgs/desktops/gnome/extensions @piegamesde @jtojnar @hedning
261−
262227# Cinnamon
263228/pkgs/desktops/cinnamon @mkg20001
264−
265−# nim
266−/pkgs/development/compilers/nim @ehmry
267−/pkgs/development/nim-packages @ehmry
268−/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+13−10
@@ -7,34 +7,37 @@ assignees: ''
77
88---
99
10−### Describe the bug
10+**Describe the bug**
1111A clear and concise description of what the bug is.
1212
13−### Steps To Reproduce
13+**To Reproduce**
1414Steps to reproduce the behavior:
15151. ...
16162. ...
17173. ...
1818
19−### Expected behavior
19+**Expected behavior**
2020A clear and concise description of what you expected to happen.
2121
22−### Screenshots
22+**Screenshots**
2323If applicable, add screenshots to help explain your problem.
2424
25−### Additional context
25+**Additional context**
2626Add any other context about the problem here.
2727
28−### Notify maintainers
28+**Notify maintainers**
2929<!--
3030Please @ people who are in the `meta.maintainers` list of the offending package or module.
3131If in doubt, check `git blame` for whoever last touched something.
3232-->
3333
34−### Metadata
34+**Metadata**
3535Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result.
3636
37−```console
38−[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
39−output here
37+Maintainer information:
38+```yaml
39+# a list of nixpkgs attributes affected by the problem
40+attribute:
41+# a list of nixos modules affected by the problem
42+module:
4043```
.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+18−29
@@ -1,41 +1,30 @@
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. -->
1117
18+- [ ] Tested using sandboxing ([nix.useSandbox](https://nixos.org/nixos/manual/options.html#opt-nix.useSandbox) on NixOS, or option `sandbox` in [`nix.conf`](https://nixos.org/nix/manual/#sec-conf-file) on non-NixOS linux)
1219- Built on platform(s)
13− - [ ] x86_64-linux
14− - [ ] aarch64-linux
15− - [ ] x86_64-darwin
16− - [ ] 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))
18−- [ ] Tested, as applicable:
19− - [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))
20− - and/or [package tests](https://nixos.org/manual/nixpkgs/unstable/#sec-package-tests)
21− - or, for functions and "core" functionality, tests in [lib/tests](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or [pkgs/test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
22− - made sure NixOS tests are [linked](https://nixos.org/manual/nixpkgs/unstable/#ssec-nixos-tests-linking) to the relevant packages
23−- [ ] 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)
24−- [ ] 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)
20+ - [ ] NixOS
21+ - [ ] macOS
22+ - [ ] other Linux distributions
23+- [ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
24+- [ ] Tested compilation of all pkgs that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review wip"`
25+- [ ] Tested execution of all binary files (usually in `./result/bin/`)
26+- [21.11 Release Notes (or backporting 21.05 Relase notes)](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#generating-2111-release-notes)
2627 - [ ] (Package updates) Added a release notes entry if the change is major or breaking
2728 - [ ] (Module updates) Added a release notes entry if the change is significant
2829 - [ ] (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
3030- [ ] 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−11
@@ -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
@@ -66,13 +70,6 @@
6670
6771"6.topic: nixos":
6872 - nixos/**/*
69− - pkgs/os-specific/linux/nixos-rebuild/**/*
70−
71−"6.topic: nim":
72− - doc/languages-frameworks/nim.section.md
73− - pkgs/development/compilers/nim/*
74− - pkgs/development/nim-packages/**/*
75− - pkgs/top-level/nim-packages.nix
7673
7774"6.topic: ocaml":
7875 - doc/languages-frameworks/ocaml.section.md
@@ -138,9 +135,7 @@
138135"6.topic: vim":
139136 - doc/languages-frameworks/vim.section.md
140137 - pkgs/applications/editors/vim/**/*
141− - pkgs/applications/editors/vim/plugins/**/*
142− - nixos/modules/programs/neovim.nix
143− - pkgs/applications/editors/neovim/**/*
138+ - pkgs/misc/vim-plugins/**/*
144139
145140"6.topic: xfce":
146141 - nixos/doc/manual/configuration/xfce.xml
.github/workflows/backport.yml+3−9
@@ -2,32 +2,26 @@ 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
2115 ref: ${{ github.event.pull_request.head.sha }}
2216 - name: Create backport PRs
2317 # should be kept in sync with `version`
24− uses: zeebe-io/backport-action@v0.0.5
18+ uses: zeebe-io/backport-action@2b994724142df0774855690db56bc6308fb99ffa
2519 with:
2620 # Config README: https://github.com/zeebe-io/backport-action#backport-action
2721 github_token: ${{ secrets.GITHUB_TOKEN }}
2822 github_workspace: ${{ github.workspace }}
2923 # should be kept in sync with `uses`
30− version: v0.0.5
24+ version: 2b994724142df0774855690db56bc6308fb99ffa
3125 pull_description: |-
3226 Bot-based backport to `${target_branch}`, triggered by a label in #${pull_number}.
3327
.github/workflows/basic-eval.ymldeleted−26
@@ -1,26 +0,0 @@
1−name: Basic evaluation checks
2−
3−on:
4− workflow_dispatch
5− # pull_request:
6− # branches:
7− # - master
8− # - release-**
9− # push:
10− # branches:
11− # - master
12− # - release-**
13−jobs:
14− tests:
15− runs-on: ubuntu-latest
16− # we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
17− 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 }}'
25− # explicit list of supportedSystems is needed until aarch64-darwin becomes part of the trunk jobset
26− - 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@v13
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+4−4
@@ -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@v13
2222 with:
2323 # explicitly enable sandbox
2424 extra_nix_config: sandbox = true
25− - uses: cachix/cachix-action@v10
25+ - uses: cachix/cachix-action@v9
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+4−4
@@ -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@v13
2222 with:
2323 # explicitly enable sandbox
2424 extra_nix_config: sandbox = true
25− - uses: cachix/cachix-action@v10
25+ - uses: cachix/cachix-action@v9
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@v12
2323 - name: Check DocBook files generated from Markdown are consistent
2424 run: |
2525 nixos/doc/manual/md-to-db.sh
.github/workflows/no-channel.ymldeleted−21
@@ -1,21 +0,0 @@
1−name: "No channel PR"
2−
3−on:
4− pull_request:
5− branches:
6− - 'nixos-**'
7− - 'nixpkgs-**'
8−
9−jobs:
10− fail:
11− name: "This PR is is targeting a channel branch"
12− runs-on: ubuntu-latest
13− steps:
14− - run: |
15− cat <<EOF
16− The nixos-* and nixpkgs-* branches are pushed to by the channel
17− release script and should not be merged into directly.
18−
19− Please target the equivalent release-* branch or master instead.
20− EOF
21− exit 1
.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+3−11
@@ -28,20 +28,12 @@ jobs:
2828 pairs:
2929 - from: master
3030 into: haskell-updates
31− - from: release-21.05
32− into: staging-next-21.05
33− - from: staging-next-21.05
34− 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
3931 name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
4032 steps:
41− - uses: actions/checkout@v3
33+ - uses: actions/checkout@v2
4234
4335 - name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
44− uses: devmasx/merge-branch@1.4.0
36+ uses: devmasx/merge-branch@v1.3.1
4537 with:
4638 type: now
4739 from_branch: ${{ matrix.pairs.from }}
@@ -49,7 +41,7 @@ jobs:
4941 github_token: ${{ secrets.GITHUB_TOKEN }}
5042
5143 - name: Comment on failure
52− uses: peter-evans/create-or-update-comment@v2
44+ uses: peter-evans/create-or-update-comment@v1
5345 if: ${{ failure() }}
5446 with:
5547 issue-number: 105153
.github/workflows/periodic-merge-6h.yml+7−3
@@ -30,12 +30,16 @@ jobs:
3030 into: staging-next
3131 - from: staging-next
3232 into: staging
33+ - from: release-21.05
34+ into: staging-next-21.05
35+ - from: staging-next-21.05
36+ into: staging-21.05
3337 name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
3438 steps:
35− - uses: actions/checkout@v3
39+ - uses: actions/checkout@v2
3640
3741 - name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
38− uses: devmasx/merge-branch@1.4.0
42+ uses: devmasx/merge-branch@v1.3.1
3943 with:
4044 type: now
4145 from_branch: ${{ matrix.pairs.from }}
@@ -43,7 +47,7 @@ jobs:
4347 github_token: ${{ secrets.GITHUB_TOKEN }}
4448
4549 - name: Comment on failure
46− uses: peter-evans/create-or-update-comment@v2
50+ uses: peter-evans/create-or-update-comment@v1
4751 if: ${{ failure() }}
4852 with:
4953 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−7
@@ -2,12 +2,8 @@
22,*
33.*.swp
44.*.swo
5−.idea/
6−.vscode/
7−outputs/
85result
96result-*
10−source/
117/doc/NEWS.html
128/doc/NEWS.txt
139/doc/manual.html
@@ -24,6 +20,3 @@ __pycache__
2420
2521# generated by pkgs/common-updater/update-script.nix
2622update-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+11−56
@@ -1,7 +1,7 @@
11# How to contribute
22
33Note: contributing implies licensing those contributions
4−under the terms of [COPYING](COPYING), which is an MIT-like license.
4+under the terms of [COPYING](../COPYING), which is an MIT-like license.
55
66## Opening issues
77
@@ -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+8−14
@@ -1,19 +1,14 @@
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
16−80,000 software packages that can be installed with the
11+60,000 software packages that can be installed with the
1712[Nix](https://nixos.org/nix/) package manager. It also implements
1813[NixOS](https://nixos.org/nixos/), a purely-functional Linux distribution.
1914
@@ -51,14 +46,14 @@ 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
6055met, the Nixpkgs expressions are distributed via [Nix
61−channels](https://nixos.org/manual/nix/stable/package-management/channels.html).
56+channels](https://nixos.org/nix/manual/#sec-channels).
6257
6358# Contributing
6459
@@ -102,8 +97,7 @@ Foundation](https://nixos.org/nixos/foundation.html). To ensure the
10297continuity and expansion of the NixOS infrastructure, we are looking
10398for donations to our organization.
10499
105−You can donate to the NixOS foundation through [SEPA bank
106−transfers](https://nixos.org/donate.html) or by using Open Collective:
100+You can donate to the NixOS foundation by using Open Collective:
107101
108102<a href="https://opencollective.com/nixos#support"><img src="https://opencollective.com/nixos/tiers/supporter.svg?width=890" /></a>
109103
doc/Makefile+2−7
@@ -3,17 +3,12 @@ MD_TARGETS=$(addsuffix .xml, $(basename $(shell find . -type f -regex '.*\.md$$'
33PANDOC ?= pandoc
44
55pandoc_media_dir = media
6−# NOTE: Keep in sync with NixOS manual (/nixos/doc/manual/md-to-db.sh) and conversion script (/maintainers/scripts/db-to-md.sh).
6+# NOTE: Keep in sync with NixOS manual (/nixos/doc/manual/md-to-db.sh).
77# TODO: Remove raw-attribute when we can get rid of DocBook altogether.
88pandoc_commonmark_enabled_extensions = +attributes+fenced_divs+footnotes+bracketed_spans+definition_lists+pipe_tables+raw_attribute
9−# Not needed:
10−# - docbook-reader/citerefentry-to-rst-role.lua (only relevant for DocBook → MarkDown/rST/MyST)
119pandoc_flags = --extract-media=$(pandoc_media_dir) \
1210 --lua-filter=$(PANDOC_LUA_FILTERS_DIR)/diagram-generator.lua \
13− --lua-filter=build-aux/pandoc-filters/myst-reader/roles.lua \
14− --lua-filter=build-aux/pandoc-filters/link-unix-man-references.lua \
15− --lua-filter=build-aux/pandoc-filters/docbook-writer/rst-roles.lua \
16− --lua-filter=build-aux/pandoc-filters/docbook-writer/labelless-link-is-xref.lua \
11+ --lua-filter=labelless-link-is-xref.lua \
1712 -f commonmark$(pandoc_commonmark_enabled_extensions)+smart
1813
1914.PHONY: all
doc/build-aux/pandoc-filters/docbook-reader/citerefentry-to-rst-role.luadeleted−23
@@ -1,23 +0,0 @@
1−--[[
2−Converts Code AST nodes produced by pandoc’s DocBook reader
3−from citerefentry elements into AST for corresponding role
4−for reStructuredText.
5−
6−We use subset of MyST syntax (CommonMark with features from rST)
7−so let’s use the rST AST for rST features.
8−
9−Reference: https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-manpage
10−]]
11−
12−function Code(elem)
13− elem.classes = elem.classes:map(function (x)
14− if x == 'citerefentry' then
15− elem.attributes['role'] = 'manpage'
16− return 'interpreted-text'
17− else
18− return x
19− end
20− end)
21−
22− return elem
23−end
doc/build-aux/pandoc-filters/docbook-writer/labelless-link-is-xref.luadeleted−34
@@ -1,34 +0,0 @@
1−--[[
2−Converts Link AST nodes with empty label to DocBook xref elements.
3−
4−This is a temporary script to be able use cross-references conveniently
5−using syntax taken from MyST, while we still use docbook-xsl
6−for generating the documentation.
7−
8−Reference: https://myst-parser.readthedocs.io/en/latest/using/syntax.html#targets-and-cross-referencing
9−]]
10−
11−local function starts_with(start, str)
12− return str:sub(1, #start) == start
13−end
14−
15−local function escape_xml_arg(arg)
16− amps = arg:gsub('&', '&amp;')
17− amps_quotes = amps:gsub('"', '&quot;')
18− amps_quotes_lt = amps_quotes:gsub('<', '&lt;')
19−
20− return amps_quotes_lt
21−end
22−
23−function Link(elem)
24− has_no_content = #elem.content == 0
25− targets_anchor = starts_with('#', elem.target)
26− has_no_attributes = elem.title == '' and elem.identifier == '' and #elem.classes == 0 and #elem.attributes == 0
27−
28− if has_no_content and targets_anchor and has_no_attributes then
29− -- xref expects idref without the pound-sign
30− target_without_hash = elem.target:sub(2, #elem.target)
31−
32− return pandoc.RawInline('docbook', '<xref linkend="' .. escape_xml_arg(target_without_hash) .. '" />')
33− end
34−end
doc/build-aux/pandoc-filters/docbook-writer/rst-roles.luadeleted−36
@@ -1,36 +0,0 @@
1−--[[
2−Converts AST for reStructuredText roles into corresponding
3−DocBook elements.
4−
5−Currently, only a subset of roles is supported.
6−
7−Reference:
8− List of roles:
9− https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html
10− manpage:
11− https://tdg.docbook.org/tdg/5.1/citerefentry.html
12− file:
13− https://tdg.docbook.org/tdg/5.1/filename.html
14−]]
15−
16−function Code(elem)
17− if elem.classes:includes('interpreted-text') then
18− local tag = nil
19− local content = elem.text
20− if elem.attributes['role'] == 'manpage' then
21− tag = 'citerefentry'
22− local title, volnum = content:match('^(.+)%((%w+)%)$')
23− if title == nil then
24− -- No volnum in parentheses.
25− title = content
26− end
27− content = '<refentrytitle>' .. title .. '</refentrytitle>' .. (volnum ~= nil and ('<manvolnum>' .. volnum .. '</manvolnum>') or '')
28− elseif elem.attributes['role'] == 'file' then
29− tag = 'filename'
30− end
31−
32− if tag ~= nil then
33− return pandoc.RawInline('docbook', '<' .. tag .. '>' .. content .. '</' .. tag .. '>')
34− end
35− end
36−end
doc/build-aux/pandoc-filters/link-unix-man-references.luadeleted−17
@@ -1,17 +0,0 @@
1−--[[
2−Turns a manpage reference into a link, when a mapping is defined below.
3−]]
4−
5−local man_urls = {
6− ["tmpfiles.d(5)"] = "https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html",
7− ["nix.conf(5)"] = "https://nixos.org/manual/nix/stable/#sec-conf-file",
8− ["systemd.time(7)"] = "https://www.freedesktop.org/software/systemd/man/systemd.time.html",
9− ["systemd.timer(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.timer.html",
10−}
11−
12−function Code(elem)
13− local is_man_role = elem.classes:includes('interpreted-text') and elem.attributes['role'] == 'manpage'
14− if is_man_role and man_urls[elem.text] ~= nil then
15− return pandoc.Link(elem, man_urls[elem.text])
16− end
17−end
doc/build-aux/pandoc-filters/myst-reader/roles.luadeleted−29
@@ -1,29 +0,0 @@
1−--[[
2−Replaces Str AST nodes containing {role}, followed by a Code node
3−by a Code node with attrs that would be produced by rST reader
4−from the role syntax.
5−
6−This is to emulate MyST syntax in Pandoc.
7−(MyST is a CommonMark flavour with rST features mixed in.)
8−
9−Reference: https://myst-parser.readthedocs.io/en/latest/syntax/syntax.html#roles-an-in-line-extension-point
10−]]
11−
12−function Inlines(inlines)
13− for i = #inlines-1,1,-1 do
14− local first = inlines[i]
15− local second = inlines[i+1]
16− local correct_tags = first.tag == 'Str' and second.tag == 'Code'
17− if correct_tags then
18− -- docutils supports alphanumeric strings separated by [-._:]
19− -- We are slightly more liberal for simplicity.
20− local role = first.text:match('^{([-._+:%w]+)}$')
21− if role ~= nil then
22− inlines:remove(i)
23− second.attributes['role'] = role
24− second.classes:insert('interpreted-text')
25− end
26− end
27− end
28− return inlines
29−end
doc/build-aux/pandoc-filters/myst-writer/roles.luadeleted−25
@@ -1,25 +0,0 @@
1−--[[
2−Replaces Code nodes with attrs that would be produced by rST reader
3−from the role syntax by a Str AST node containing {role}, followed by a Code node.
4−
5−This is to emulate MyST syntax in Pandoc.
6−(MyST is a CommonMark flavour with rST features mixed in.)
7−
8−Reference: https://myst-parser.readthedocs.io/en/latest/syntax/syntax.html#roles-an-in-line-extension-point
9−]]
10−
11−function Code(elem)
12− local role = elem.attributes['role']
13−
14− if elem.classes:includes('interpreted-text') and role ~= nil then
15− elem.classes = elem.classes:filter(function (c)
16− return c ~= 'interpreted-text'
17− end)
18− elem.attributes['role'] = nil
19−
20− return {
21− pandoc.Str('{' .. role .. '}'),
22− elem,
23− }
24− end
25−end
doc/builders/fetchers.chapter.md+12−49
@@ -1,16 +1,8 @@
11# Fetchers {#chap-pkgs-fetchers}
22
3−When using Nix, you will frequently need to download source code and other files from the internet. For this purpose, Nix provides the [_fixed output derivation_](https://nixos.org/manual/nix/stable/#fixed-output-drvs) feature and Nixpkgs provides various functions that implement the actual fetching from various protocols and services.
3+When using Nix, you will frequently need to download source code and other files from the internet. Nixpkgs comes with a few helper functions that allow you to fetch fixed-output derivations in a structured way.
44
5−## Caveats
6−
7−Because 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.
8−
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.
10−
11−## `fetchurl` and `fetchzip` {#fetchurl}
12−
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.
5+The two fetcher primitives 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.
146
157```nix
168{ stdenv, fetchurl }:
@@ -24,11 +16,11 @@ stdenv.mkDerivation {
2416}
2517```
2618
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.
19+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.
2820
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.
21+`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.
3022
31−Most other fetchers return a directory rather than a single file.
23+Other fetcher functions allow you to add source code directly from a VCS such as subversion or git. These are mostly straightforward nambes based on the name of the command used with the VCS system. Because they give you a working repository, they act most like `fetchzip`.
3224
3325## `fetchsvn` {#fetchsvn}
3426
@@ -38,25 +30,7 @@ Used with Subversion. Expects `url` to a Subversion directory, `rev`, and `sha25
3830
3931Used 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`.
4032
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−```
33+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.
6034
6135## `fetchfossil` {#fetchfossil}
6236
@@ -72,23 +46,19 @@ Used with Mercurial. Expects `url`, `rev`, and `sha256`.
7246
7347A 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.
7448
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−
7949## `fetchFromGitHub` {#fetchfromgithub}
8050
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.
51+`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.
8252
8353`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.
8454
8555## `fetchFromGitLab` {#fetchfromgitlab}
8656
87−This is used with GitLab repositories. The arguments expected are very similar to `fetchFromGitHub` above.
57+This is used with GitLab repositories. The arguments expected are very similar to fetchFromGitHub above.
8858
8959## `fetchFromGitiles` {#fetchfromgitiles}
9060
91−This is used with Gitiles repositories. The arguments expected are similar to `fetchgit`.
61+This is used with Gitiles repositories. The arguments expected are similar to fetchgit.
9262
9363## `fetchFromBitbucket` {#fetchfrombitbucket}
9464
@@ -96,19 +66,12 @@ This is used with BitBucket repositories. The arguments expected are very simila
9666
9767## `fetchFromSavannah` {#fetchfromsavannah}
9868
99−This is used with Savannah repositories. The arguments expected are very similar to `fetchFromGitHub` above.
69+This is used with Savannah repositories. The arguments expected are very similar to fetchFromGitHub above.
10070
10171## `fetchFromRepoOrCz` {#fetchfromrepoorcz}
10272
103−This is used with repo.or.cz repositories. The arguments expected are very similar to `fetchFromGitHub` above.
73+This is used with repo.or.cz repositories. The arguments expected are very similar to fetchFromGitHub above.
10474
10575## `fetchFromSourcehut` {#fetchfromsourcehut}
10676
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`.
77+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+4−4
@@ -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,16 +101,16 @@ 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 {
110110 haskell-mode = self.melpaPackages.haskell-mode;
111111 ...
112112};
113−((emacsPackagesFor emacs).overrideScope' overrides).withPackages
113+((emacsPackagesFor emacs).overrideScope' overrides).emacs.pkgs.withPackages
114114 (p: with p; [
115115 # here both these package will use haskell-mode of our own choice
116116 ghc-mod
doc/builders/packages/etc-files.section.mddeleted−18
@@ -1,18 +0,0 @@
1−# /etc files {#etc}
2−
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.
4−
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.
6−
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.
8−
9−
10−```bash
11−> nix-shell -p iana-etc
12−
13−[nix-shell:~]$ env | grep NIX_ETC
14−NIX_ETC_SERVICES=/nix/store/aj866hr8fad8flnggwdhrldm0g799ccz-iana-etc-20210225/etc/services
15−NIX_ETC_PROTOCOLS=/nix/store/aj866hr8fad8flnggwdhrldm0g799ccz-iana-etc-20210225/etc/protocols
16−```
17−
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`.
doc/builders/packages/firefox.section.md+7−9
@@ -2,12 +2,11 @@
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{
9− # Nix firefox addons only work with the firefox-esr package.
10− myFirefox = wrapFirefox firefox-esr-unwrapped {
9+ myFirefox = wrapFirefox firefox-unwrapped {
1110 nixExtensions = [
1211 (fetchFirefoxAddon {
1312 name = "ublock"; # Has to be unique!
@@ -40,12 +39,11 @@ The `wrapFirefox` function allows to pass policies, preferences and extensions t
4039}
4140```
4241
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.
42+If `nixExtensions != null` then all manually installed addons will be uninstalled from your browser profile.
43+To view available enterprise policies visit [enterprise policies](https://github.com/mozilla/policy-templates#enterprisepoliciesenabled)
44+or type into the Firefox url bar: `about:policies#documentation`.
45+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.
4746
4847## 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.
48+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.
5049
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/index.xml−1
@@ -17,7 +17,6 @@
1717 <xi:include href="kakoune.section.xml" />
1818 <xi:include href="linux.section.xml" />
1919 <xi:include href="locales.section.xml" />
20− <xi:include href="etc-files.section.xml" />
2120 <xi:include href="nginx.section.xml" />
2221 <xi:include href="opengl.section.xml" />
2322 <xi:include href="shell-helpers.section.xml" />
doc/builders/packages/linux.section.md+11−11
@@ -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,28 +14,28 @@ 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
19−2. Add the new kernel to the `kernels` attribute set in `linux-kernels.nix` (e.g., create an attribute `kernel_2_6_22`).
19+2. Add the new kernel to `all-packages.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
39−4. 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.
39+4. Test building the kernel: `nix-build -A kernel_2_6_22`. If it compiles, ship it! For extra credit, try booting NixOS with it.
4040
41−5. It may be that the new kernel requires updating the external kernel modules and kernel-dependent packages listed in the `linuxPackagesFor` function in `linux-kernels.nix` (such as the NVIDIA drivers, AUFS, etc.). If the updated packages aren’t backwards compatible with older kernels, you may need to keep the older versions around.
41+5. It may be that the new kernel requires updating the external kernel modules and kernel-dependent packages listed in the `linuxPackagesFor` function in `all-packages.nix` (such as the NVIDIA drivers, AUFS, etc.). If the updated packages aren’t backwards compatible with older kernels, you may need to keep the older versions around.
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/fhs-environments.section.md−4
@@ -18,8 +18,6 @@
1818 Additional commands to be executed for finalizing the derivation with runner script.
1919- `runScript`
2020 A command that would be executed inside the sandbox and passed all the command line arguments. It defaults to `bash`.
21−- `profile`
22− Optional script for `/etc/profile` within the sandbox.
2321
2422One can create a simple environment using a `shell.nix` like that:
2523
@@ -45,5 +43,3 @@ One can create a simple environment using a `shell.nix` like that:
4543```
4644
4745Running `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/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−127
@@ -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,133 +47,9 @@ 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−
132−## `writeShellApplication` {#trivial-builder-writeShellApplication}
133−
134−This 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).
135−
136−For example, look at the following code:
137−
138−```nix
139−writeShellApplication {
140− name = "show-nixos-org";
141−
142− runtimeInputs = [ curl w3m ];
143−
144− text = ''
145− curl -s 'https://nixos.org' | w3m -dump -T text/html
146− '';
147−}
148−```
149−
150−Unlike with normal `writeShellScriptBin`, there is no need to manually write out `${curl}/bin/curl`, setting the PATH
151−was handled by `writeShellApplication`. Moreover, the script is being checked with `shellcheck` for more strict
152−validation.
153−
15450## `symlinkJoin` {#trivial-builder-symlinkJoin}
15551
15652This 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−```
17753
17854## `writeReferencesToFile` {#trivial-builder-writeReferencesToFile}
17955
@@ -219,5 +95,5 @@ produces an output path `/nix/store/<hash>-runtime-references` containing
21995/nix/store/<hash>-hello-2.10
22096```
22197
222−but none of `hello`'s dependencies because those are not referenced directly
98+but none of `hello`'s dependencies, because those are not referenced directly
22399by `hi`'s output.
doc/contributing/coding-conventions.chapter.md+12−73
@@ -181,21 +181,6 @@
181181 rev = "${version}";
182182 ```
183183
184−- Building lists conditionally _should_ be done with `lib.optional(s)` instead of using `if cond then [ ... ] else null` or `if cond then [ ... ] else [ ]`.
185−
186− ```nix
187− buildInputs = lib.optional stdenv.isDarwin iconv;
188− ```
189−
190− instead of
191−
192− ```nix
193− buildInputs = if stdenv.isDarwin then [ iconv ] else null;
194− ```
195−
196− As an exception, an explicit conditional expression with null can be used when fixing a important bug without triggering a mass rebuild.
197− If this is done a follow up pull request _should_ be created to change the code to `lib.optional(s)`.
198−
199184- Arguments should be listed in the order they are used, with the exception of `lib`, which always goes first.
200185
201186## Package naming {#sec-package-naming}
@@ -214,17 +199,17 @@ Most of the time, these are the same. For instance, the package `e2fsprogs` has
214199
215200There are a few naming guidelines:
216201
217−- The `pname` attribute _should_ be identical to the upstream package name.
202+- The `name` attribute _should_ be identical to the upstream package name.
218203
219−- The `pname` and the `version` attribute _must not_ contain uppercase letters — e.g., `"mplayer" instead of `"MPlayer"`.
204+- The `name` attribute _must not_ contain uppercase letters — e.g., `"mplayer-1.0rc2"` instead of `"MPlayer-1.0rc2"`.
220205
221−- The `version` attribute _must_ start with a digit e.g`"0.3.1rc2".
206+- The version part of the `name` attribute _must_ start with a digit (following a dash) — e.g., `"hello-0.3.1rc2"`.
222207
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.
208+- 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"`.
224209
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.
210+- 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.
226211
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)
212+- 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)
228213
229214## File naming and organisation {#sec-organisation}
230215
@@ -535,16 +520,15 @@ If you do need to do create this sort of patch file, one way to do so is with gi
5355204. Use git to create a diff, and pipe the output to a patch file:
536521
537522 ```ShellSession
538− $ git diff -a > nixpkgs/pkgs/the/package/0001-changes.patch
523+ $ git diff > nixpkgs/pkgs/the/package/0001-changes.patch
539524 ```
540525
541526If 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`:
542527
543−- `relative`: Similar to using `git-diff`'s `--relative` flag, only keep changes inside the specified directory, making paths relative to it.
544528- `stripLen`: Remove the first `stripLen` components of pathnames in the patch.
545529- `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).
530+- `excludes`: Exclude files matching this pattern.
531+- `includes`: Include only files matching this pattern.
548532- `revert`: Revert the patch.
549533
550534Note 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.
@@ -553,34 +537,9 @@ Note that because the checksum is computed after applying these effects, using o
553537
554538Tests are important to ensure quality and make reviews and automatic updates easy.
555539
556−The following types of tests exists:
557−
558−* [NixOS **module tests**](https://nixos.org/manual/nixos/stable/#sec-nixos-tests), which spawn one or more NixOS VMs. They exercise both NixOS modules and the packaged programs used within them. For example, a NixOS module test can start a web server VM running the `nginx` module, and a client VM running `curl` or a graphical `firefox`, and test that they can talk to each other and display the correct content.
559−* Nix **package tests** are a lightweight alternative to NixOS module tests. They should be used to create simple integration tests for packages, but cannot test NixOS services, and some programs with graphical user interfaces may also be difficult to test with them.
560−* The **`checkPhase` of a package**, which should execute the unit tests that are included in the source code of a package.
561−
562−Here in the nixpkgs manual we describe mostly _package tests_; for _module tests_ head over to the corresponding [section in the NixOS manual](https://nixos.org/manual/nixos/stable/#sec-nixos-tests).
563−
564−### Writing inline package tests {#ssec-inline-package-tests-writing}
565−
566−For very simple tests, they can be written inline:
567−
568−```nix
569−{ …, yq-go }:
570−
571−buildGoModule rec {
572− …
573−
574− passthru.tests = {
575− simple = runCommand "${pname}-test" {} ''
576− echo "test: 1" | ${yq-go}/bin/yq eval -j > $out
577− [ "$(cat $out | tr -d $'\n ')" = '{"test":1}' ]
578− '';
579− };
580−}
581−```
540+Nix package tests are a lightweight alternative to [NixOS module tests](https://nixos.org/manual/nixos/stable/#sec-nixos-tests). They can be used to create simple integration tests for packages while the module tests are used to test services or programs with a graphical user interface on a NixOS VM. Unittests that are included in the source code of a package should be executed in the `checkPhase`.
582541
583−### Writing larger package tests {#ssec-package-tests-writing}
542+### Writing package tests {#ssec-package-tests-writing}
584543
585544This is an example using the `phoronix-test-suite` package with the current best practices.
586545
@@ -609,7 +568,7 @@ let
609568 inherit (phoronix-test-suite) pname version;
610569in
611570
612−runCommand "${pname}-tests" { meta.timeout = 60; }
571+runCommand "${pname}-tests" { meta.timeout = 3; }
613572 ''
614573 # automatic initial setup to prevent interactive questions
615574 ${phoronix-test-suite}/bin/phoronix-test-suite enterprise-setup >/dev/null
@@ -643,23 +602,3 @@ Here are examples of package tests:
643602- [Spacy annotation test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/python-modules/spacy/annotation-test/default.nix)
644603- [Libtorch test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/science/math/libtorch/test/default.nix)
645604- [Multiple tests for nanopb](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/nanopb/default.nix)
646−
647−### Linking NixOS module tests to a package {#ssec-nixos-tests-linking}
648−
649−Like [package tests](#ssec-package-tests-writing) as shown above, [NixOS module tests](https://nixos.org/manual/nixos/stable/#sec-nixos-tests) can also be linked to a package, so that the tests can be easily run when changing the related package.
650−
651−For example, assuming we're packaging `nginx`, we can link its module test via `passthru.tests`:
652−
653−```nix
654−{ stdenv, lib, nixosTests }:
655−
656−stdenv.mkDerivation {
657− ...
658−
659− passthru.tests = {
660− nginx = nixosTests.nginx;
661− };
662−
663− ...
664−}
665−```
doc/contributing/contributing-to-documentation.chapter.md−7
@@ -52,13 +52,6 @@ Additionally, the following syntax extensions are currently used:
5252
5353 This syntax is taken from [MyST](https://myst-parser.readthedocs.io/en/latest/using/syntax.html#targets-and-cross-referencing).
5454
55−- []{#ssec-contributing-markup-inline-roles}
56− If you want to link to a man page, you can use `` {manpage}`nix.conf(5)` ``, which will turn into {manpage}`nix.conf(5)`.
57−
58− The references will turn into links when a mapping exists in {file}`doc/build-aux/pandoc-filters/link-unix-man-references.lua`.
59−
60− 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.
61−
6255- []{#ssec-contributing-markup-admonitions}
6356 **Admonitions**, set off from the text to bring attention to something.
6457
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+4−4
@@ -166,7 +166,7 @@ lib.attrsets.setAttrByPath [ "a" "b" ] 3
166166 <xi:include href="./locations.xml" xpointer="lib.attrsets.getAttrFromPath" />
167167
168168 <para>
169− Like <xref linkend="function-library-lib.attrsets.attrByPath" /> except without a default, and it will throw if the value doesn't exist.
169+ Like [](#function-library-lib.attrsets.attrByPath) except without a default, and it will throw if the value doesn't exist.
170170 </para>
171171
172172 <variablelist>
@@ -772,7 +772,7 @@ nameValuePair "some" 6
772772 <title>Modifying each value of an attribute set</title>
773773<programlisting><![CDATA[
774774lib.attrsets.mapAttrs
775− (name: value: name + "-" + value)
775+ (name: value: name + "-" value)
776776 { x = "foo"; y = "bar"; }
777777=> { x = "x-foo"; y = "y-bar"; }
778778]]></programlisting>
@@ -1474,13 +1474,13 @@ 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" />
14811481
14821482 <para>
1483− Merge sets of attributes and combine each attribute value in to a list. Similar to <xref linkend="function-library-lib.attrsets.zipAttrsWith" /> where the merge function returns a list of all values.
1483+ Merge sets of attributes and combine each attribute value in to a list. Similar to [](#function-library-lib.attrsets.zipAttrsWith) where the merge function returns a list of all values.
14841484 </para>
14851485
14861486 <variablelist>
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/labelless-link-is-xref.luanew file+24
@@ -0,0 +1,24 @@
1+local function starts_with(start, str)
2+ return str:sub(1, #start) == start
3+end
4+
5+local function escape_xml_arg(arg)
6+ amps = arg:gsub('&', '&amp;')
7+ amps_quotes = amps:gsub('"', '&quot;')
8+ amps_quotes_lt = amps_quotes:gsub('<', '&lt;')
9+
10+ return amps_quotes_lt
11+end
12+
13+function Link(elem)
14+ has_no_content = #elem.content == 0
15+ targets_anchor = starts_with('#', elem.target)
16+ has_no_attributes = elem.title == '' and elem.identifier == '' and #elem.classes == 0 and #elem.attributes == 0
17+
18+ if has_no_content and targets_anchor and has_no_attributes then
19+ -- xref expects idref without the pound-sign
20+ target_without_hash = elem.target:sub(2, #elem.target)
21+
22+ return pandoc.RawInline('docbook', '<xref linkend="' .. escape_xml_arg(target_without_hash) .. '" />')
23+ end
24+end
doc/languages-frameworks/agda.section.md+1−63
@@ -158,23 +158,7 @@ This can be overridden.
158158
159159By default, Agda sources are files ending on `.agda`, or literate Agda files ending on `.lagda`, `.lagda.tex`, `.lagda.org`, `.lagda.md`, `.lagda.rst`. The list of recognised Agda source extensions can be extended by setting the `extraExtensions` config variable.
160160
161−## Maintaining the Agda package set on Nixpkgs {#maintaining-the-agda-package-set-on-nixpkgs}
162−
163−We are aiming at providing all common Agda libraries as packages on `nixpkgs`,
164−and keeping them up to date.
165−Contributions and maintenance help is always appreciated,
166−but the maintenance effort is typically low since the Agda ecosystem is quite small.
167−
168−The `nixpkgs` Agda package set tries to take up a role similar to that of [Stackage](https://www.stackage.org/) in the Haskell world.
169−It is a curated set of libraries that:
170−
171−1. Always work together.
172−2. Are as up-to-date as possible.
173−
174−While the Haskell ecosystem is huge, and Stackage is highly automatised,
175−the Agda package set is small and can (still) be maintained by hand.
176−
177−### Adding Agda packages to Nixpkgs {#adding-agda-packages-to-nixpkgs}
161+## Adding Agda packages to Nixpkgs {#adding-agda-packages-to-nixpkgs}
178162
179163To add an Agda package to `nixpkgs`, the derivation should be written to `pkgs/development/libraries/agda/${library-name}/` and an entry should be added to `pkgs/top-level/agda-packages.nix`. Here it is called in a scope with access to all other Agda libraries, so the top line of the `default.nix` can look like:
180164
@@ -208,49 +192,3 @@ mkDerivation {
208192This library has a file called `.agda-lib`, and so we give an empty string to `libraryFile` as nothing precedes `.agda-lib` in the filename. This file contains `name: IAL-1.3`, and so we let `libraryName = "IAL-1.3"`. This library does not use an `Everything.agda` file and instead has a Makefile, so there is no need to set `everythingFile` and we set a custom `buildPhase`.
209193
210194When writing an Agda package it is essential to make sure that no `.agda-lib` file gets added to the store as a single file (for example by using `writeText`). This causes Agda to think that the nix store is a Agda library and it will attempt to write to it whenever it typechecks something. See [https://github.com/agda/agda/issues/4613](https://github.com/agda/agda/issues/4613).
211−
212−In the pull request adding this library,
213−you can test whether it builds correctly by writing in a comment:
214−
215−```
216−@ofborg build agdaPackages.iowa-stdlib
217−```
218−
219−### Maintaining Agda packages
220−
221−As mentioned before, the aim is to have a compatible, and up-to-date package set.
222−These two conditions sometimes exclude each other:
223−For example, if we update `agdaPackages.standard-library` because there was an upstream release,
224−this will typically break many reverse dependencies,
225−i.e. downstream Agda libraries that depend on the standard library.
226−In `nixpkgs` we are typically among the first to notice this,
227−since we have build tests in place to check this.
228−
229−In a pull request updating e.g. the standard library, you should write the following comment:
230−
231−```
232−@ofborg build agdaPackages.standard-library.passthru.tests
233−```
234−
235−This will build all reverse dependencies of the standard library,
236−for example `agdaPackages.agda-categories`, or `agdaPackages.generic`.
237−
238−In some cases it is useful to build _all_ Agda packages.
239−This can be done with the following Github comment:
240−
241−```
242−@ofborg build agda.passthru.tests.allPackages
243−```
244−
245−Sometimes, the builds of the reverse dependencies fail because they have not yet been updated and released.
246−You should drop the maintainers a quick issue notifying them of the breakage,
247−citing the build error (which you can get from the ofborg logs).
248−If you are motivated, you might even send a pull request that fixes it.
249−Usually, the maintainers will answer within a week or two with a new release.
250−Bumping the version of that reverse dependency should be a further commit on your PR.
251−
252−In the rare case that a new release is not to be expected within an acceptable time,
253−simply mark the broken package as broken by setting `meta.broken = true;`.
254−This will exclude it from the build test.
255−It can be added later when it is fixed,
256−and does not hinder the advancement of the whole package set in the meantime.
doc/languages-frameworks/beam.section.md+54−132
@@ -68,107 +68,27 @@ Erlang.mk functions similarly to Rebar3, except we use `buildErlangMk` instead o
6868
6969`mixRelease` is used to make a release in the mix sense. Dependencies will need to be fetched with `fetchMixDeps` and passed to it.
7070
71−#### mixRelease - Elixir Phoenix example {#mix-release-elixir-phoenix-example}
71+#### mixRelease - Elixir Phoenix example {#mixrelease---elixir-phoenix-example}
7272
73−there are 3 steps, frontend dependencies (javascript), backend dependencies (elixir) and the final derivation that puts both of those together
74−
75−##### mixRelease - Frontend dependencies (javascript) {#mix-release-javascript-deps}
76−
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)
78−
79−##### mixRelease - backend dependencies (mix) {#mix-release-mix-deps}
80−
81−There are 2 ways to package backend dependencies. With mix2nix and with a fixed-output-derivation (FOD).
82−
83−###### mix2nix {#mix2nix}
84−
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.
86−
87−Note 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.
88−
89−The 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.
90−
91−Practical steps:
92−
93−- run `mix2nix > mix_deps.nix` in the upstream repo.
94−- pass `mixNixDeps = with pkgs; import ./mix_deps.nix { inherit lib beamPackages; };` as an argument to mixRelease.
95−
96−If there are git depencencies.
97−
98−- You'll need to fix the version artificially in mix.exs and regenerate the mix.lock with fixed version (on upstream). This will enable you to run `mix2nix > mix_deps.nix`.
99−- From the mix_deps.nix file, remove the dependencies that had git versions and pass them as an override to the import function.
100−
101−```nix
102− mixNixDeps = import ./mix.nix {
103− inherit beamPackages lib;
104− overrides = (final: prev: {
105− # mix2nix does not support git dependencies yet,
106− # so we need to add them manually
107− prometheus_ex = beamPackages.buildMix rec {
108− name = "prometheus_ex";
109− version = "3.0.5";
110−
111− # Change the argument src with the git src that you actually need
112− src = fetchFromGitLab {
113− domain = "git.pleroma.social";
114− group = "pleroma";
115− owner = "elixir-libraries";
116− repo = "prometheus.ex";
117− rev = "a4e9beb3c1c479d14b352fd9d6dd7b1f6d7deee5";
118− sha256 = "1v0q4bi7sb253i8q016l7gwlv5562wk5zy3l2sa446csvsacnpjk";
119− };
120− # you can re-use the same beamDeps argument as generated
121− beamDeps = with final; [ prometheus ];
122− };
123− });
124−};
125−```
126−
127−You will need to run the build process once to fix the sha256 to correspond to your new git src.
128−
129−###### FOD {#fixed-output-derivation}
130−
131−A fixed output derivation will download mix dependencies from the internet. To ensure reproducibility, a hash will be supplied. Note that mix is relatively reproducible. An FOD generating a different hash on each run hasn't been observed (as opposed to npm where the chances are relatively high). See [elixir_ls](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/beam-modules/elixir_ls.nix) for a usage example of FOD.
132−
133−Practical steps
134−
135−- start with the following argument to mixRelease
136−
137−```nix
138− mixFodDeps = fetchMixDeps {
139− pname = "mix-deps-${pname}";
140− inherit src version;
141− sha256 = lib.fakeSha256;
142− };
143−```
144−
145−The first build will complain about the sha256 value, you can replace with the suggested value after that.
146−
147−Note that if after you've replaced the value, nix suggests another sha256, then mix is not fetching the dependencies reproducibly. An FOD will not work in that case and you will have to use mix2nix.
148−
149−##### mixRelease - example {#mix-release-example}
150−
151−Here is how your `default.nix` file would look for a phoenix project.
73+Here is how your `default.nix` file would look.
15274
15375```nix
15476with import <nixpkgs> { };
15577
15678let
157− # beam.interpreters.erlangR23 is available if you need a particular version
15879 packages = beam.packagesWith beam.interpreters.erlang;
159−
160− pname = "your_project";
161− version = "0.0.1";
162−
16380 src = builtins.fetchgit {
16481 url = "ssh://git@github.com/your_id/your_repo";
16582 rev = "replace_with_your_commit";
16683 };
16784
168− # if using mix2nix you can use the mixNixDeps attribute
85+ pname = "your_project";
86+ version = "0.0.1";
87+ mixEnv = "prod";
88+
16989 mixFodDeps = packages.fetchMixDeps {
17090 pname = "mix-deps-${pname}";
171− inherit src version;
91+ inherit src mixEnv version;
17292 # nix will complain and tell you the right value to replace this with
17393 sha256 = lib.fakeSha256;
17494 # if you have build time environment variables add them here
@@ -177,19 +97,45 @@ let
17797
17898 nodeDependencies = (pkgs.callPackage ./assets/default.nix { }).shell.nodeDependencies;
17999
100+ frontEndFiles = stdenvNoCC.mkDerivation {
101+ pname = "frontend-${pname}";
102+
103+ nativeBuildInputs = [ nodejs ];
104+
105+ inherit version src;
106+
107+ buildPhase = ''
108+ cp -r ./assets $TEMPDIR
109+
110+ mkdir -p $TEMPDIR/assets/node_modules/.cache
111+ cp -r ${nodeDependencies}/lib/node_modules $TEMPDIR/assets
112+ export PATH="${nodeDependencies}/bin:$PATH"
113+
114+ cd $TEMPDIR/assets
115+ webpack --config ./webpack.config.js
116+ cd ..
117+ '';
118+
119+ installPhase = ''
120+ cp -r ./priv/static $out/
121+ '';
122+
123+ outputHashAlgo = "sha256";
124+ outputHashMode = "recursive";
125+ # nix will complain and tell you the right value to replace this with
126+ outputHash = lib.fakeSha256;
127+
128+ impureEnvVars = lib.fetchers.proxyImpureEnvVars;
129+ };
130+
131+
180132in packages.mixRelease {
181− inherit src pname version mixFodDeps;
133+ inherit src pname version mixEnv mixFodDeps;
182134 # if you have build time environment variables add them here
183135 MY_ENV_VAR="my_value";
184−
185− postBuild = ''
186− ln -sf ${nodeDependencies}/lib/node_modules assets/node_modules
187− npm run deploy --prefix ./assets
188−
189− # for external task you need a workaround for the no deps check flag
190− # https://github.com/phoenixframework/phoenix/issues/2690
191− mix do deps.loadpaths --no-deps-check, phx.digest
192− mix phx.digest --no-deps-check
136+ preInstall = ''
137+ mkdir -p ./priv/static
138+ cp -r ${frontEndFiles} ./priv/static
193139 '';
194140}
195141```
@@ -219,8 +165,6 @@ in
219165 systemd.services.${release_name} = {
220166 wantedBy = [ "multi-user.target" ];
221167 after = [ "network.target" "postgresql.service" ];
222− # note that if you are connecting to a postgres instance on a different host
223− # postgresql.service should not be included in the requires.
224168 requires = [ "network-online.target" "postgresql.service" ];
225169 description = "my app";
226170 environment = {
@@ -257,7 +201,6 @@ in
257201 path = [ pkgs.bash ];
258202 };
259203
260− # in case you have migration scripts or you want to use a remote shell
261204 environment.systemPackages = [ release ];
262205}
263206```
@@ -269,38 +212,19 @@ in
269212Usually, we need to create a `shell.nix` file and do our development inside of the environment specified therein. Just install your version of Erlang and any other interpreters, and then use your normal build tools. As an example with Elixir:
270213
271214```nix
272−{ pkgs ? import <nixpkgs> {} }:
215+{ pkgs ? import "<nixpkgs"> {} }:
273216
274217with pkgs;
275−let
276− elixir = beam.packages.erlangR24.elixir_1_12;
277−in
278−mkShell {
279− buildInputs = [ elixir ];
280−}
281−```
282218
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:
219+let
286220
287−#### `shell.nix`
221+ elixir = beam.packages.erlangR22.elixir_1_9;
288222
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 ]; };
298223in
299−with pkgs;
300224mkShell {
301− buildInputs = [
302− elixir_1_13
303− ];
225+ buildInputs = [ elixir ];
226+
227+ ERL_INCLUDE_PATH="${erlang}/lib/erlang/usr/include";
304228}
305229```
306230
@@ -315,10 +239,10 @@ let
315239 # define packages to install
316240 basePackages = [
317241 git
318− # replace with beam.packages.erlang.elixir_1_13 if you need
242+ # replace with beam.packages.erlang.elixir_1_11 if you need
319243 beam.packages.erlang.elixir
320244 nodejs
321− postgresql_14
245+ postgresql_13
322246 # only used for frontend dependencies
323247 # you are free to use yarn2nix as well
324248 nodePackages.node2nix
@@ -336,12 +260,10 @@ let
336260 mkdir -p .nix-mix .nix-hex
337261 export MIX_HOME=$PWD/.nix-mix
338262 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"
342263 export PATH=$MIX_HOME/bin:$HEX_HOME/bin:$PATH
343− export LANG=C.UTF-8
344− # keep your shell history in iex
264+ # TODO: not sure how to make hex available without installing it afterwards.
265+ mix local.hex --if-missing
266+ export LANG=en_US.UTF-8
345267 export ERL_AFLAGS="-kernel shell_history enabled"
346268
347269 # postges related
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+2−4
@@ -28,13 +28,11 @@ The recommended way of defining a derivation for a Coq library, is to use the `c
2828* `domain` (optional, defaults to `"github.com"`), domains including the strings `"github"` or `"gitlab"` in their names are automatically supported, otherwise, one must change the `fetcher` argument to support them (cf `pkgs/development/coq-modules/heq/default.nix` for an example),
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,
31−* `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,
31+* `namePrefix` (optional), provides a way to alter the computation of `name` from `pname`, by explaining which dependencies must occur in `name`,
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.
37−* `opam-name` (optional, defaults to concatenating with a dash separator the components of `namePrefix` and `pname`), name of the Dune package to build.
3836* `enableParallelBuilding` (optional, defaults to `true`), since it is activated by default, we provide a way to disable it.
3937* `extraInstallFlags` (optional), allows to extend `installFlags` which initializes the variable `COQMF_COQLIB` so as to install in the proper subdirectory. Indeed Coq libraries should be installed in `$(out)/lib/coq/${coq.coq-version}/user-contrib/`. Such directories are automatically added to the `$COQPATH` environment variable by the hook defined in the Coq derivation.
4038* `setCOQBIN` (optional, defaults to `true`), by default, the environment variable `$COQBIN` is set to the current Coq's binary, but one can disable this behavior by setting it to `false`,
doc/languages-frameworks/crystal.section.md+2−2
@@ -4,12 +4,12 @@
44
55This section uses [Mint](https://github.com/mint-lang/mint) as an example for how to build a Crystal package.
66
7−If the Crystal project has any dependencies, the first step is to get a `shards.nix` file encoding those. Get a copy of the project and go to its root directory such that its `shard.lock` file is in the current directory. Executable projects should usually commit the `shard.lock` file, but sometimes that's not the case, which means you need to generate it yourself. With an existing `shard.lock` file, `crystal2nix` can be run.
7+If the Crystal project has any dependencies, the first step is to get a `shards.nix` file encoding those. Get a copy of the project and go to its root directory such that its `shard.lock` file is in the current directory, then run `crystal2nix` in it
8+
89```bash
910$ git clone https://github.com/mint-lang/mint
1011$ cd mint
1112$ git checkout 0.5.0
12−$ if [ ! -f shard.lock ]; then nix-shell -p shards --run "shards lock"; fi
1313$ nix-shell -p crystal2nix --run crystal2nix
1414```
1515
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/dhall.section.md+15−46
@@ -50,7 +50,7 @@ expression does not protect the Prelude import with a semantic integrity
5050check, so the first step is to freeze the expression using `dhall freeze`,
5151like this:
5252
53−```ShellSession
53+```bash
5454$ dhall freeze --inplace ./true.dhall
5555```
5656
@@ -113,7 +113,7 @@ in
113113
114114… which we can then build using this command:
115115
116−```ShellSession
116+```bash
117117$ nix build --file ./example.nix dhallPackages.true
118118```
119119
@@ -121,7 +121,7 @@ $ nix build --file ./example.nix dhallPackages.true
121121
122122The above package produces the following directory tree:
123123
124−```ShellSession
124+```bash
125125$ tree -a ./result
126126result
127127├── .cache
@@ -135,7 +135,7 @@ result
135135
136136* `source.dhall` contains the result of interpreting our Dhall package:
137137
138− ```ShellSession
138+ ```bash
139139 $ cat ./result/source.dhall
140140 True
141141 ```
@@ -143,7 +143,7 @@ result
143143* The `.cache` subdirectory contains one binary cache product encoding the
144144 same result as `source.dhall`:
145145
146− ```ShellSession
146+ ```bash
147147 $ dhall decode < ./result/.cache/dhall/122027abdeddfe8503496adeb623466caa47da5f63abd2bc6fa19f6cfcb73ecfed70
148148 True
149149 ```
@@ -151,7 +151,7 @@ result
151151* `binary.dhall` contains a Dhall expression which handles fetching and decoding
152152 the same cache product:
153153
154− ```ShellSession
154+ ```bash
155155 $ cat ./result/binary.dhall
156156 missing sha256:27abdeddfe8503496adeb623466caa47da5f63abd2bc6fa19f6cfcb73ecfed70
157157 $ cp -r ./result/.cache .cache
@@ -168,7 +168,7 @@ to conserve disk space when they are used exclusively as dependencies. For
168168example, if we build the Prelude package it will only contain the binary
169169encoding of the expression:
170170
171−```ShellSession
171+```bash
172172$ nix build --file ./example.nix dhallPackages.Prelude
173173
174174$ tree -a result
@@ -199,7 +199,7 @@ Dhall overlay like this:
199199… and now the Prelude will contain the fully decoded result of interpreting
200200the Prelude:
201201
202−```ShellSession
202+```bash
203203$ nix build --file ./example.nix dhallPackages.Prelude
204204
205205$ tree -a result
@@ -302,7 +302,7 @@ Additionally, `buildDhallGitHubPackage` accepts the same arguments as
302302You can use the `dhall-to-nixpkgs` command-line utility to automate
303303packaging Dhall code. For example:
304304
305−```ShellSession
305+```bash
306306$ nix-env --install --attr haskellPackages.dhall-nixpkgs
307307
308308$ nix-env --install --attr nix-prefetch-git # Used by dhall-to-nixpkgs
@@ -329,12 +329,12 @@ The utility takes care of automatically detecting remote imports and converting
329329them to package dependencies. You can also use the utility on local
330330Dhall directories, too:
331331
332−```ShellSession
332+```bash
333333$ dhall-to-nixpkgs directory ~/proj/dhall-semver
334334{ buildDhallDirectoryPackage, Prelude }:
335335 buildDhallDirectoryPackage {
336336 name = "proj";
337− src = ~/proj/dhall-semver;
337+ src = /Users/gabriel/proj/dhall-semver;
338338 file = "package.dhall";
339339 source = false;
340340 document = false;
@@ -342,37 +342,6 @@ $ dhall-to-nixpkgs directory ~/proj/dhall-semver
342342 }
343343```
344344
345−### Remote imports as fixed-output derivations {#ssec-dhall-remote-imports-as-fod}
346−
347−`dhall-to-nixpkgs` has the ability to fetch and build remote imports as
348−fixed-output derivations by using their Dhall integrity check. This is
349−sometimes easier than manually packaging all remote imports.
350−
351−This can be used like the following:
352−
353−```ShellSession
354−$ dhall-to-nixpkgs directory --fixed-output-derivations ~/proj/dhall-semver
355−{ buildDhallDirectoryPackage, buildDhallUrl }:
356− buildDhallDirectoryPackage {
357− name = "proj";
358− src = ~/proj/dhall-semver;
359− file = "package.dhall";
360− source = false;
361− document = false;
362− dependencies = [
363− (buildDhallUrl {
364− url = "https://prelude.dhall-lang.org/v17.0.0/package.dhall";
365− hash = "sha256-ENs8kZwl6QRoM9+Jeo/+JwHcOQ+giT2VjDQwUkvlpD4=";
366− dhallHash = "sha256:10db3c919c25e9046833df897a8ffe2701dc390fa0893d958c3430524be5a43e";
367− })
368− ];
369− }
370−```
371−
372−Here, `dhall-semver`'s `Prelude` dependency is fetched and built with the
373−`buildDhallUrl` helper function, instead of being passed in as a function
374−argument.
375−
376345## Overriding dependency versions {#ssec-dhall-overriding-dependency-versions}
377346
378347Suppose that we change our `true.dhall` example expression to depend on an older
@@ -390,7 +359,7 @@ in Prelude.Bool.not False
390359
391360If we try to rebuild that expression the build will fail:
392361
393−```ShellSession
362+```
394363$ nix build --file ./example.nix dhallPackages.true
395364builder for '/nix/store/0f1hla7ff1wiaqyk1r2ky4wnhnw114fi-true.drv' failed with exit code 1; last 10 log lines:
396365
@@ -416,7 +385,7 @@ importing the URL.
416385However, we can override the default Prelude version by using `dhall-to-nixpkgs`
417386to create a Dhall package for our desired Prelude:
418387
419−```ShellSession
388+```bash
420389$ dhall-to-nixpkgs github https://github.com/dhall-lang/dhall-lang.git \
421390 --name Prelude \
422391 --directory Prelude \
@@ -427,7 +396,7 @@ $ dhall-to-nixpkgs github https://github.com/dhall-lang/dhall-lang.git \
427396… and then referencing that package in our Dhall overlay, by either overriding
428397the Prelude globally for all packages, like this:
429398
430−```nix
399+```bash
431400 dhallOverrides = self: super: {
432401 true = self.callPackage ./true.nix { };
433402
@@ -438,7 +407,7 @@ the Prelude globally for all packages, like this:
438407… or selectively overriding the Prelude dependency for just the `true` package,
439408like this:
440409
441−```nix
410+```bash
442411 dhallOverrides = self: super: {
443412 true = self.callPackage ./true.nix {
444413 Prelude = self.callPackage ./Prelude.nix { };
doc/languages-frameworks/dotnet.section.md+6−63
@@ -28,7 +28,8 @@ mkShell {
2828 packages = [
2929 (with dotnetCorePackages; combinePackages [
3030 sdk_3_1
31− sdk_5_0
31+ sdk_3_0
32+ sdk_2_1
3233 ])
3334 ];
3435}
@@ -63,70 +64,12 @@ $ dotnet --info
6364
6465The `dotnetCorePackages.sdk_X_Y` is preferred over the old dotnet-sdk as both major and minor version are very important for a dotnet environment. If a given minor version isn't present (or was changed), then this will likely break your ability to build a project.
6566
66−## dotnetCorePackages.sdk vs dotnetCorePackages.runtime vs dotnetCorePackages.aspnetcore {#dotnetcorepackages.sdk-vs-dotnetcorepackages.runtime-vs-dotnetcorepackages.aspnetcore}
67+## dotnetCorePackages.sdk vs dotnetCorePackages.net vs dotnetCorePackages.netcore vs dotnetCorePackages.aspnetcore {#dotnetcorepackages.sdk-vs-dotnetcorepackages.net-vs-dotnetcorepackages.netcore-vs-dotnetcorepackages.aspnetcore}
6768
68−The `dotnetCorePackages.sdk` contains both a runtime and the full sdk of a given version. The `runtime` and `aspnetcore` packages are meant to serve as minimal runtimes to deploy alongside already built applications.
69+The `dotnetCorePackages.sdk` contains both a runtime and the full sdk of a given version. The `net`, `netcore` and `aspnetcore` packages are meant to serve as minimal runtimes to deploy alongside already built applications. For runtime versions >= .NET 5 `net` is used while `netcore` is used for older .NET Core runtime version.
6970
7071## Packaging a Dotnet Application {#packaging-a-dotnet-application}
7172
72−To package Dotnet applications, you can use `buildDotnetModule`. This has similar arguments to `stdenv.mkDerivation`, with the following additions:
73−
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.
88−* `runtimeDeps` is used to wrap libraries into `LD_LIBRARY_PATH`. This is how dotnet usually handles runtime dependencies.
89−* `buildType` is used to change the type of build. Possible values are `Release`, `Debug`, etc. By default, this is set to `Release`.
90−* `dotnet-sdk` is useful in cases where you need to change what dotnet SDK is being used.
91−* `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.
92−* `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.
94−* `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.
95−* `dotnetRestoreFlags` can be used to pass flags to `dotnet restore`.
96−* `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`.
98−* `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`.
100−* `dotnetFlags` can be used to pass flags to all of the above phases.
101−
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−
104−Here is an example `default.nix`, using some of the previously discussed arguments:
105−```nix
106−{ lib, buildDotnetModule, dotnetCorePackages, ffmpeg }:
107−
108−let
109− referencedProject = import ../../bar { ... };
110−in buildDotnetModule rec {
111− pname = "someDotnetApplication";
112− version = "0.1";
113−
114− src = ./.;
115−
116− 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.
73+Ideally, we would like to build against the sdk, then only have the dotnet runtime available in the runtime closure.
12074
121− dotnet-sdk = dotnetCorePackages.sdk_3_1;
122− dotnet-runtime = dotnetCorePackages.net_5_0;
123− dotnetFlags = [ "--runtime linux-x64" ];
124−
125− executables = [ "foo" ]; # This wraps "$out/lib/$pname/foo" to `$out/bin/foo`.
126− executables = []; # Don't install any executables.
127−
128− packNupkg = true; # This packs the project as "foo-0.1.nupkg" at `$out/share`.
129−
130− runtimeDeps = [ ffmpeg ]; # This will wrap ffmpeg's library path into `LD_LIBRARY_PATH`.
131−}
132−```
75+TODO: Create closure-friendly way to package dotnet applications
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+15−21
@@ -12,7 +12,7 @@ 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.
1616
1717```nix
1818pet = buildGoModule rec {
@@ -28,11 +28,14 @@ pet = buildGoModule rec {
2828
2929 vendorSha256 = "1879j77k96684wi554rkjxydrj8g3hpp0kvxz03sd8dmwr3lh83j";
3030
31+ runVend = true;
32+
3133 meta = with lib; {
3234 description = "Simple command-line snippet manager, written in Go";
3335 homepage = "https://github.com/knqyf263/pet";
3436 license = licenses.mit;
3537 maintainers = with maintainers; [ kalbasit ];
38+ platforms = platforms.linux ++ platforms.darwin;
3639 };
3740}
3841```
@@ -109,41 +112,32 @@ done
109112
110113Both `buildGoModule` and `buildGoPackage` can be tweaked to behave slightly differently, if the following attributes are used:
111114
112−### `ldflags` {#var-go-ldflags}
115+### `buildFlagsArray` and `buildFlags`: {#ex-goBuildFlags-noarray}
113116
114−Arguments to pass to the Go linker tool via the `-ldflags` argument of `go build`. The most common use case for this argument is to make the resulting executable aware of its own version. For example:
117+These attributes set build flags supported by `go build`. We recommend using `buildFlagsArray`.
115118
116119```nix
117− ldflags = [
118− "-s" "-w"
119− "-X main.Version=${version}"
120− "-X main.Commit=${version}"
120+ buildFlagsArray = [
121+ "-tags=release"
121122 ];
122123```
123124
124−### `tags` {#var-go-tags}
125+### `ldflags` {#var-go-ldflags}
125126
126−Arguments to pass to the Go via the `-tags` argument of `go build`. For example:
127+Arguments to pass to the Go linker tool via the `-ldflags` argument of `go build`. The most common use case for this argument is to make the resulting executable aware of its own version. For example:
127128
128129```nix
129− tags = [
130− "production"
131− "sqlite"
130+ ldflags = [
131+ "-s" "-w"
132+ "-X main.Version=${version}"
133+ "-X main.Commit=${version}"
132134 ];
133135```
134136
135−```nix
136− tags = [ "production" ] ++ lib.optionals withSqlite [ "sqlite" ];
137−```
138−
139137### `deleteVendor` {#var-go-deleteVendor}
140138
141139Removes the pre-existing vendor directory. This should only be used if the dependencies included in the vendor folder are broken or incomplete.
142140
143141### `subPackages` {#var-go-subPackages}
144142
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.
143+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+1−6
@@ -9,12 +9,9 @@
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" />
17− <xi:include href="dotnet.section.xml" />
1815 <xi:include href="emscripten.section.xml" />
1916 <xi:include href="gnome.section.xml" />
2017 <xi:include href="go.section.xml" />
@@ -23,12 +20,10 @@
2320 <xi:include href="idris.section.xml" />
2421 <xi:include href="ios.section.xml" />
2522 <xi:include href="java.section.xml" />
26− <xi:include href="javascript.section.xml" />
2723 <xi:include href="lua.section.xml" />
2824 <xi:include href="maven.section.xml" />
29− <xi:include href="nim.section.xml" />
25+ <xi:include href="node.section.xml" />
3026 <xi:include href="ocaml.section.xml" />
31− <xi:include href="octave.section.xml" />
3227 <xi:include href="perl.section.xml" />
3328 <xi:include href="php.section.xml" />
3429 <xi:include href="python.section.xml" />
doc/languages-frameworks/java.section.md−9
@@ -72,15 +72,6 @@ in
7272 ...
7373```
7474
75−You can also specify what JDK your JRE should be based on, for example
76−selecting a 'headless' build to avoid including a link to GTK+:
77−
78−```nix
79−my_jre = pkgs.jre_minimal.override {
80− jdk = jdk11_headless;
81−};
82−```
83−
8475Note all JDKs passthru `home`, so if your application requires
8576environment variables like `JAVA_HOME` being set, that can be done in a
8677generic fashion with the `--set` argument of `makeWrapper`:
doc/languages-frameworks/javascript.section.mddeleted−278
@@ -1,278 +0,0 @@
1−# Javascript {#language-javascript}
2−
3−## Introduction {#javascript-introduction}
4−
5−This contains instructions on how to package javascript applications.
6−
7−The various tools available will be listed in the [tools-overview](#javascript-tools-overview). Some general principles for packaging will follow. Finally some tool specific instructions will be given.
8−
9−## Getting unstuck / finding code examples
10−
11−If you find you are lacking inspiration for packing javascript applications, the links below might prove useful.
12−Searching online for prior art can be helpful if you are running into solved problems.
13−
14−### Github
15−
16−- Searching Nix files for `mkYarnPackage`: <https://github.com/search?q=mkYarnPackage+language%3ANix&type=code>
17−
18−- Searching just `flake.nix` files for `mkYarnPackage`: <https://github.com/search?q=mkYarnPackage+filename%3Aflake.nix&type=code>
19−
20−### Gitlab
21−
22−- Searching Nix files for `mkYarnPackage`: <https://gitlab.com/search?scope=blobs&search=mkYarnPackage+extension%3Anix>
23−
24−- Searching just `flake.nix` files for `mkYarnPackage`: <https://gitlab.com/search?scope=blobs&search=mkYarnPackage+filename%3Aflake.nix>
25−
26−## Tools overview {#javascript-tools-overview}
27−
28−## General principles {#javascript-general-principles}
29−
30−The following principles are given in order of importance with potential exceptions.
31−
32−### Try to use the same node version used upstream {#javascript-upstream-node-version}
33−
34−It is often not documented which node version is used upstream, but if it is, try to use the same version when packaging.
35−
36−This can be a problem if upstream is using the latest and greatest and you are trying to use an earlier version of node. Some cryptic errors regarding V8 may appear.
37−
38−An exception to this:
39−
40−### Try to respect the package manager originally used by upstream (and use the upstream lock file) {#javascript-upstream-package-manager}
41−
42−A lock file (package-lock.json, yarn.lock...) is supposed to make reproducible installations of node_modules for each tool.
43−
44−Guidelines of package managers, recommend to commit those lock files to the repos. If a particular lock file is present, it is a strong indication of which package manager is used upstream.
45−
46−It's better to try to use a nix tool that understand the lock file. Using a different tool might give you hard to understand error because different packages have been installed. An example of problems that could arise can be found [here](https://github.com/NixOS/nixpkgs/pull/126629). Upstream uses npm, but this is an attempt to package it with yarn2nix (that uses yarn.lock)
47−
48−Using a different tool forces to commit a lock file to the repository. Those files are fairly large, so when packaging for nixpkgs, this approach does not scale well.
49−
50−Exceptions to this rule are:
51−
52−- when you encounter one of the bugs from a nix tool. In each of the tool specific instructions, known problems will be detailed. If you have a problem with a particular tool, then it's best to try another tool, even if this means you will have to recreate a lock file and commit it to nixpkgs. In general yarn2nix has less known problems and so a simple search in nixpkgs will reveal many yarn.lock files committed
53−- Some lock files contain particular version of a package that has been pulled off npm for some reason. In that case, you can recreate upstream lock (by removing the original and `npm install`, `yarn`, ...) and commit this to nixpkgs.
54−- The only tool that supports workspaces (a feature of npm that helps manage sub-directories with different package.json from a single top level package.json) is yarn2nix. If upstream has workspaces you should try yarn2nix.
55−
56−### Try to use upstream package.json {#javascript-upstream-package-json}
57−
58−Exceptions to this rule are
59−
60−- Sometimes the upstream repo assumes some dependencies be installed globally. In that case you can add them manually to the upstream package.json (`yarn add xxx` or `npm install xxx`, ...). Dependencies that are installed locally can be executed with `npx` for cli tools. (e.g. `npx postcss ...`, this is how you can call those dependencies in the phases).
61−- Sometimes there is a version conflict between some dependency requirements. In that case you can fix a version (by removing the `^`).
62−- Sometimes the script defined in the package.json does not work as is. Some scripts for example use cli tools that might not be available, or cd in directory with a different package.json (for workspaces notably). In that case, it's perfectly fine to look at what the particular script is doing and break this down in the phases. In the build script you can see `build:*` calling in turns several other build scripts like `build:ui` or `build:server`. If one of those fails, you can try to separate those into:
63−
64−```Shell
65−yarn build:ui
66−yarn build:server
67−# OR
68−npm run build:ui
69−npm run build:server
70−```
71−
72−when you need to override a package.json. It's nice to use the one from the upstream src and do some explicit override. Here is an example.
73−
74−```nix
75−patchedPackageJSON = final.runCommand "package.json" { } ''
76− ${jq}/bin/jq '.version = "0.4.0" |
77− .devDependencies."@jsdoc/cli" = "^0.2.5"
78− ${sonar-src}/package.json > $out
79−'';
80−```
81−
82−you will still need to commit the modified version of the lock files, but at least the overrides are explicit for everyone to see.
83−
84−### Using node_modules directly {#javascript-using-node_modules}
85−
86−each 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
87−
88−## Javascript packages inside nixpkgs {#javascript-packages-nixpkgs}
89−
90−The `pkgs/development/node-packages` folder contains a generated collection of
91−[NPM packages](https://npmjs.com/) that can be installed with the Nix package
92−manager.
93−
94−As a rule of thumb, the package set should only provide _end user_ software
95−packages, such as command-line utilities. Libraries should only be added to the
96−package set if there is a non-NPM package that requires it.
97−
98−When it is desired to use NPM libraries in a development project, use the
99−`node2nix` generator directly on the `package.json` configuration file of the
100−project.
101−
102−The package set provides support for the official stable Node.js versions.
103−The latest stable LTS release in `nodePackages`, as well as the latest stable
104−Current release in `nodePackages_latest`.
105−
106−If your package uses native addons, you need to examine what kind of native
107−build system it uses. Here are some examples:
108−
109−- `node-gyp`
110−- `node-gyp-builder`
111−- `node-pre-gyp`
112−
113−After you have identified the correct system, you need to override your package
114−expression while adding in build system as a build input. For example, `dat`
115−requires `node-gyp-build`, so [we override](https://github.com/NixOS/nixpkgs/blob/32f5e5da4a1b3f0595527f5195ac3a91451e9b56/pkgs/development/node-packages/default.nix#L37-L40) its expression in [`default.nix`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/node-packages/default.nix):
116−
117−```nix
118− dat = super.dat.override {
119− buildInputs = [ self.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ];
120− meta.broken = since "12";
121− };
122−```
123−
124−### Adding and Updating Javascript packages in nixpkgs
125−
126−To add a package from NPM to nixpkgs:
127−
128−1. Modify `pkgs/development/node-packages/node-packages.json` to add, update
129− or remove package entries to have it included in `nodePackages` and
130− `nodePackages_latest`.
131−2. Run the script: `./pkgs/development/node-packages/generate.sh`.
132−3. Build your new package to test your changes:
133− `cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.
134− To build against the latest stable Current Node.js version (e.g. 14.x):
135− `nix-build -A nodePackages_latest.<new-or-updated-package>`
136−4. Add and commit all modified and generated files.
137−
138−For more information about the generation process, consult the
139−[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix`
140−tool.
141−
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−
162−## Tool specific instructions {#javascript-tool-specific}
163−
164−### node2nix {#javascript-node2nix}
165−
166−#### Preparation {#javascript-node2nix-preparation}
167−
168−you will need to generate a nix expression for the dependencies
169−
170−- don't forget the `-l package-lock.json` if there is a lock file
171−- Most probably you will need the `--development` to include the `devDependencies`
172−
173−so the command will most likely be
174−`node2nix --development -l package-lock.json`
175−
176−[link to the doc in the repo](https://github.com/svanderburg/node2nix)
177−
178−#### Pitfalls {#javascript-node2nix-pitfalls}
179−
180−- if upstream package.json does not have a "version" attribute, node2nix will crash. You will need to add it like shown in [the package.json section](#javascript-upstream-package-json)
181−- node2nix has some [bugs](https://github.com/svanderburg/node2nix/issues/238). related to working with lock files from npm distributed with nodejs-16_x
182−- node2nix does not like missing packages from npm. If you see something like `Cannot resolve version: vue-loader-v16@undefined` then you might want to try another tool. The package might have been pulled off of npm.
183−
184−### yarn2nix {#javascript-yarn2nix}
185−
186−#### Preparation {#javascript-yarn2nix-preparation}
187−
188−you will need at least a yarn.lock and yarn.nix file
189−
190−- generate a yarn.lock in upstream if it is not already there
191−- `yarn2nix > yarn.nix` will generate the dependencies in a nix format
192−
193−#### mkYarnPackage {#javascript-yarn2nix-mkYarnPackage}
194−
195−this will by default try to generate a binary. For package only generating static assets (Svelte, Vue, React...), you will need to explicitly override the build step with your instructions. It's important to use the `--offline` flag. For example if you script is `"build": "something"` in package.json use
196−
197−```nix
198−buildPhase = ''
199− yarn build --offline
200−'';
201−```
202−
203−The dist phase is also trying to build a binary, the only way to override it is with
204−
205−```nix
206−distPhase = "true";
207−```
208−
209−the configure phase can sometimes fail because it tries to be too clever.
210−One common override is
211−
212−```nix
213−configurePhase = "ln -s $node_modules node_modules";
214−```
215−
216−#### mkYarnModules {#javascript-yarn2nix-mkYarnModules}
217−
218−this will generate a derivation including the node_modules. If you have to build a derivation for an integrated web framework (rails, phoenix..), this is probably the easiest way. [Plausible](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/web-apps/plausible/default.nix#L39) offers a good example of how to do this.
219−
220−#### Overriding dependency behavior
221−
222−In the `mkYarnPackage` record the property `pkgConfig` can be used to override packages when you encounter problems building.
223−
224−For instance, say your package is throwing errors when trying to invoke node-sass: `ENOENT: no such file or directory, scandir '/build/source/node_modules/node-sass/vendor'`
225−
226−To fix this we will specify different versions of build inputs to use, as well as some post install steps to get the software built the way we want:
227−
228−```nix
229−mkYarnPackage rec {
230− pkgConfig = {
231− node-sass = {
232− buildInputs = with final;[ python libsass pkg-config ];
233− postInstall = ''
234− LIBSASS_EXT=auto yarn --offline run build
235− rm build/config.gypi
236− '';
237− };
238− };
239−}
240−```
241−
242−#### Pitfalls {#javascript-yarn2nix-pitfalls}
243−
244−- if version is missing from upstream package.json, yarn will silently install nothing. In that case, you will need to override package.json as shown in the [package.json section](#javascript-upstream-package-json)
245−
246−- having trouble with node-gyp? Try adding these lines to the `yarnPreBuild` steps:
247−
248− ```nix
249− yarnPreBuild = ''
250− mkdir -p $HOME/.node-gyp/${nodejs.version}
251− echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion
252− ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version}
253− export npm_config_nodedir=${nodejs}
254− '';
255− ```
256−
257− - The `echo 9` steps comes from this answer: <https://stackoverflow.com/a/49139496>
258− - Exporting the headers in `npm_config_nodedir` comes from this issue: <https://github.com/nodejs/node-gyp/issues/1191#issuecomment-301243919>
259−
260−## Outside of nixpkgs {#javascript-outside-nixpkgs}
261−
262−There are some other options available that can't be used inside nixpkgs. Those other options are written in nix. Importing them in nixpkgs will require moving the source code into nixpkgs. Using [Import From Derivation](https://nixos.wiki/wiki/Import_From_Derivation) is not allowed in hydra at present. If you are packaging something outside nixpkgs, those can be considered
263−
264−### npmlock2nix {#javascript-npmlock2nix}
265−
266−[npmlock2nix](https://github.com/nix-community/npmlock2nix) aims at building node_modules without code generation. It hasn't reached v1 yet, the api might be subject to change.
267−
268−#### Pitfalls {#javascript-npmlock2nix-pitfalls}
269−
270−- there are some [problems with npm v7](https://github.com/tweag/npmlock2nix/issues/45).
271−
272−### nix-npm-buildpackage {#javascript-nix-npm-buildpackage}
273−
274−[nix-npm-buildpackage](https://github.com/serokell/nix-npm-buildpackage) aims at building node_modules without code generation. It hasn't reached v1 yet, the api might change. It supports both package-lock.json and yarn.lock.
275−
276−#### Pitfalls {#javascript-nix-npm-buildpackage-pitfalls}
277−
278−- there are some [problems with npm v7](https://github.com/serokell/nix-npm-buildpackage/issues/33).
doc/languages-frameworks/lua.section.md+6−4
@@ -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 .
@@ -139,9 +139,11 @@ the whitelist maintainers/scripts/luarocks-packages.csv and updated by running m
139139[luarocks2nix](https://github.com/nix-community/luarocks) is a tool capable of generating nix derivations from both rockspec and src.rock (and favors the src.rock).
140140The automation only goes so far though and some packages need to be customized.
141141These customizations go in `pkgs/development/lua-modules/overrides.nix`.
142−For instance if the rockspec defines `external_dependencies`, these need to be manually added to the overrides.nix.
142+For instance if the rockspec defines `external_dependencies`, these need to be manually added in its rockspec file then it won't work.
143143
144144You can try converting luarocks packages to nix packages with the command `nix-shell -p luarocks-nix` and then `luarocks nix PKG_NAME`.
145+Nix rely on luarocks to install lua packages, basically it runs:
146+`luarocks make --deps-mode=none --tree $out`
145147
146148#### Packaging a library manually {#packaging-a-library-manually}
147149
@@ -159,8 +161,8 @@ are not packaged for luarocks. You can see a few examples at `pkgs/top-level/lua
159161
160162### Lua interpreters {#lua-interpreters}
161163
162−Versions 5.1, 5.2, 5.3 and 5.4 of the lua interpreter are available as
163−respectively `lua5_1`, `lua5_2`, `lua5_3` and `lua5_4`. Luajit is available too.
164+Versions 5.1, 5.2 and 5.3 of the lua interpreter are available as
165+respectively `lua5_1`, `lua5_2` and `lua5_3`. Luajit is available too.
164166The Nix expressions for the interpreters can be found in `pkgs/development/interpreters/lua-5`.
165167
166168#### Attributes on lua interpreters packages {#attributes-on-lua-interpreters-packages}
doc/languages-frameworks/nim.section.mddeleted−91
@@ -1,91 +0,0 @@
1−# Nim {#nim}
2−
3−## Overview {#nim-overview}
4−
5−The Nim compiler, a builder function, and some packaged libraries are available
6−in Nixpkgs. Until now each compiler release has been effectively backwards
7−compatible so only the latest version is available.
8−
9−## Nim program packages in Nixpkgs {#nim-program-packages-in-nixpkgs}
10−
11−Nim programs can be built using `nimPackages.buildNimPackage`. In the
12−case of packages not containing exported library code the attribute
13−`nimBinOnly` should be set to `true`.
14−
15−The following example shows a Nim program that depends only on Nim libraries:
16−
17−```nix
18−{ lib, nimPackages, fetchurl }:
19−
20−nimPackages.buildNimPackage rec {
21− pname = "hottext";
22− version = "1.4";
23−
24− nimBinOnly = true;
25−
26− src = fetchurl {
27− url = "https://git.sr.ht/~ehmry/hottext/archive/v${version}.tar.gz";
28− sha256 = "sha256-hIUofi81zowSMbt1lUsxCnVzfJGN3FEiTtN8CEFpwzY=";
29− };
30−
31− buildInputs = with nimPackages; [
32− bumpy
33− chroma
34− flatty
35− nimsimd
36− pixie
37− sdl2
38− typography
39− vmath
40− zippy
41− ];
42−}
43−
44−```
45−
46−## Nim library packages in Nixpkgs {#nim-library-packages-in-nixpkgs}
47−
48−
49−Nim libraries can also be built using `nimPackages.buildNimPackage`, but
50−often the product of a fetcher is sufficient to satisfy a dependency.
51−The `fetchgit`, `fetchFromGitHub`, and `fetchNimble` functions yield an
52−output that can be discovered during the `configurePhase` of `buildNimPackage`.
53−
54−Nim library packages are listed in
55−[pkgs/top-level/nim-packages.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/nim-packages.nix) and implemented at
56−[pkgs/development/nim-packages](https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/nim-packages).
57−
58−The following example shows a Nim library that propagates a dependency on a
59−non-Nim package:
60−```nix
61−{ lib, buildNimPackage, fetchNimble, SDL2 }:
62−
63−buildNimPackage rec {
64− pname = "sdl2";
65− version = "2.0.4";
66− src = fetchNimble {
67− inherit pname version;
68− hash = "sha256-Vtcj8goI4zZPQs2TbFoBFlcR5UqDtOldaXSH/+/xULk=";
69− };
70− propagatedBuildInputs = [ SDL2 ];
71−}
72−```
73−
74−## `buildNimPackage` parameters {#buildnimpackage-parameters}
75−
76−All parameters from `stdenv.mkDerivation` function are still supported. The
77−following are specific to `buildNimPackage`:
78−
79−* `nimBinOnly ? false`: If `true` then build only the programs listed in
80− the Nimble file in the packages sources.
81−* `nimbleFile`: Specify the Nimble file location of the package being built
82− rather than discover the file at build-time.
83−* `nimRelease ? true`: Build the package in *release* mode.
84−* `nimDefines ? []`: A list of Nim defines. Key-value tuples are not supported.
85−* `nimFlags ? []`: A list of command line arguments to pass to the Nim compiler.
86− Use this to specify defines with arguments in the form of `-d:${name}=${value}`.
87−* `nimDoc` ? false`: Build and install HTML documentation.
88−
89−* `buildInputs` ? []: The packages listed here will be searched for `*.nimble`
90− files which are used to populate the Nim library path. Otherwise the standard
91− behavior is in effect.
doc/languages-frameworks/node.section.mdnew file+51
@@ -0,0 +1,51 @@
1+# Node.js {#node.js}
2+
3+The `pkgs/development/node-packages` folder contains a generated collection of
4+[NPM packages](https://npmjs.com/) that can be installed with the Nix package
5+manager.
6+
7+As a rule of thumb, the package set should only provide *end user* software
8+packages, such as command-line utilities. Libraries should only be added to the
9+package set if there is a non-NPM package that requires it.
10+
11+When it is desired to use NPM libraries in a development project, use the
12+`node2nix` generator directly on the `package.json` configuration file of the
13+project.
14+
15+The package set provides support for the official stable Node.js versions.
16+The latest stable LTS release in `nodePackages`, as well as the latest stable
17+Current release in `nodePackages_latest`.
18+
19+If your package uses native addons, you need to examine what kind of native
20+build system it uses. Here are some examples:
21+
22+* `node-gyp`
23+* `node-gyp-builder`
24+* `node-pre-gyp`
25+
26+After you have identified the correct system, you need to override your package
27+expression while adding in build system as a build input. For example, `dat`
28+requires `node-gyp-build`, so [we override](https://github.com/NixOS/nixpkgs/blob/32f5e5da4a1b3f0595527f5195ac3a91451e9b56/pkgs/development/node-packages/default.nix#L37-L40) its expression in [`default.nix`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/node-packages/default.nix):
29+
30+```nix
31+ dat = super.dat.override {
32+ buildInputs = [ self.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ];
33+ meta.broken = since "12";
34+ };
35+```
36+
37+To add a package from NPM to nixpkgs:
38+
39+ 1. Modify `pkgs/development/node-packages/node-packages.json` to add, update
40+ or remove package entries to have it included in `nodePackages` and
41+ `nodePackages_latest`.
42+ 2. Run the script: `(cd pkgs/development/node-packages && ./generate.sh)`.
43+ 3. Build your new package to test your changes:
44+ `cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.
45+ To build against the latest stable Current Node.js version (e.g. 14.x):
46+ `nix-build -A nodePackages_latest.<new-or-updated-package>`
47+ 4. Add and commit all modified and generated files.
48+
49+For more information about the generation process, consult the
50+[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix`
51+tool.
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.mddeleted−92
@@ -1,92 +0,0 @@
1−# Octave {#sec-octave}
2−
3−## Introduction {#ssec-octave-introduction}
4−
5−Octave is a modular scientific programming language and environment.
6−A majority of the packages supported by Octave from their [website](https://octave.sourceforge.io/packages.php) are packaged in nixpkgs.
7−
8−## Structure {#ssec-octave-structure}
9−
10−All Octave add-on packages are available in two ways:
11−1. Under the top-level `Octave` attribute, `octave.pkgs`.
12−2. As a top-level attribute, `octavePackages`.
13−
14−## Packaging Octave Packages {#ssec-octave-packaging}
15−
16−Nixpkgs provides a function `buildOctavePackage`, a generic package builder function for any Octave package that complies with the Octave's current packaging format.
17−
18−All Octave packages are defined in [pkgs/top-level/octave-packages.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/octave-packages.nix) rather than `pkgs/all-packages.nix`.
19−Each package is defined in their own file in the [pkgs/development/octave-modules](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/octave-modules) directory.
20−Octave packages are made available through `all-packages.nix` through both the attribute `octavePackages` and `octave.pkgs`.
21−You can test building an Octave package as follows:
22−
23−```ShellSession
24−$ nix-build -A octavePackages.symbolic
25−```
26−
27−To install it into your user profile, run this command from the root of the repository:
28−
29−```ShellSession
30−$ nix-env -f. -iA octavePackages.symbolic
31−```
32−
33−You can build Octave with packages by using the `withPackages` passed-through function.
34−
35−```ShellSession
36−$ nix-shell -p 'octave.withPackages (ps: with ps; [ symbolic ])'
37−```
38−
39−This will also work in a `shell.nix` file.
40−
41−```nix
42−{ pkgs ? import <nixpkgs> { }}:
43−
44−pkgs.mkShell {
45− nativeBuildInputs = with pkgs; [
46− (octave.withPackages (opkgs: with opkgs; [ symbolic ]))
47− ];
48−}
49−```
50−
51−### `buildOctavePackage` Steps {#sssec-buildOctavePackage-steps}
52−
53−The `buildOctavePackage` does several things to make sure things work properly.
54−
55−1. Sets the environment variable `OCTAVE_HISTFILE` to `/dev/null` during package compilation so that the commands run through the Octave interpreter directly are not logged.
56−2. Skips the configuration step, because the packages are stored as gzipped tarballs, which Octave itself handles directly.
57−3. Change the hierarchy of the tarball so that only a single directory is at the top-most level of the tarball.
58−4. Use Octave itself to run the `pkg build` command, which unzips the tarball, extracts the necessary files written in Octave, and compiles any code written in C++ or Fortran, and places the fully compiled artifact in `$out`.
59−
60−`buildOctavePackage` is built on top of `stdenv` in a standard way, allowing most things to be customized.
61−
62−### Handling Dependencies {#sssec-octave-handling-dependencies}
63−
64−In Octave packages, there are four sets of dependencies that can be specified:
65−
66−`nativeBuildInputs`
67−: Just like other packages, `nativeBuildInputs` is intended for architecture-dependent build-time-only dependencies.
68−
69−`buildInputs`
70−: Like other packages, `buildInputs` is intended for architecture-independent build-time-only dependencies.
71−
72−`propagatedBuildInputs`
73−: Similar to other packages, `propagatedBuildInputs` is intended for packages that are required for both building and running of the package.
74−See [Symbolic](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/octave-modules/symbolic/default.nix) for how this works and why it is needed.
75−
76−`requiredOctavePackages`
77−: This is a special dependency that ensures the specified Octave packages are dependent on others, and are made available simultaneously when loading them in Octave.
78−
79−### Installing Octave Packages {#sssec-installing-octave-packages}
80−
81−By default, the `buildOctavePackage` function does _not_ install the requested package into Octave for use.
82−The function will only build the requested package.
83−This is due to Octave maintaining an text-based database about which packages are installed where.
84−To this end, when all the requested packages have been built, the Octave package and all its add-on packages are put together into an environment, similar to Python.
85−
86−1. First, all the Octave binaries are wrapped with the environment variable `OCTAVE_SITE_INITFILE` set to a file in `$out`, which is required for Octave to be able to find the non-standard package database location.
87−2. Because of the way `buildEnv` works, all tarballs that are present (which should be all Octave packages to install) should be removed.
88−3. The path down to the default install location of Octave packages is recreated so that Nix-operated Octave can install the packages.
89−4. Install the packages into the `$out` environment while writing package entries to the database file.
90−This database file is unique for each different (according to Nix) environment invocation.
91−5. Rewrite the Octave-wide startup file to read from the list of packages installed in that particular environment.
92−6. Wrap any programs that are required by the Octave packages so that they work with all the paths defined within the environment.
doc/languages-frameworks/perl.section.md+9−5
@@ -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
@@ -116,7 +122,7 @@ ImageExifTool = buildPerlPackage {
116122 };
117123
118124 buildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
119− postInstall = lib.optionalString stdenv.isDarwin ''
125+ postInstall = lib.optional stdenv.isDarwin ''
120126 shortenPerlShebang $out/bin/exiftool
121127 '';
122128};
@@ -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+10−88
@@ -8,7 +8,7 @@
88
99Several versions of the Python interpreter are available on Nix, as well as a
1010high amount of packages. The attribute `python3` refers to the default
11−interpreter, which is currently CPython 3.9. The attribute `python` refers to
11+interpreter, which is currently CPython 3.8. The attribute `python` refers to
1212CPython 2.7 for backwards-compatibility. It is also possible to refer to
1313specific versions, e.g. `python38` refers to CPython 3.8, and `pypy` refers to
1414the default PyPy interpreter.
@@ -764,8 +764,8 @@ 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
768−respectively `python27`, `python37`, `python38` and `python39`. The
767+Versions 2.7, 3.6, 3.7, 3.8 and 3.9 of the CPython interpreter are available as
768+respectively `python27`, `python36`, `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
771771compatible with Python 2.7 and 3 are available as `pypy27` and `pypy3`, with
@@ -830,17 +830,16 @@ attribute set is created for each available Python interpreter. The available
830830sets are
831831
832832* `pkgs.python27Packages`
833+* `pkgs.python36Packages`
833834* `pkgs.python37Packages`
834835* `pkgs.python38Packages`
835836* `pkgs.python39Packages`
836−* `pkgs.python310Packages`
837−* `pkgs.python311Packages`
838837* `pkgs.pypyPackages`
839838
840839and the aliases
841840
842841* `pkgs.python2Packages` pointing to `pkgs.python27Packages`
843−* `pkgs.python3Packages` pointing to `pkgs.python39Packages`
842+* `pkgs.python3Packages` pointing to `pkgs.python38Packages`
844843* `pkgs.pythonPackages` pointing to `pkgs.python2Packages`
845844
846845#### `buildPythonPackage` function {#buildpythonpackage-function}
@@ -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 ...
@@ -1539,7 +1513,7 @@ If you need to change a package's attribute(s) from `configuration.nix` you coul
15391513 python = super.python.override {
15401514 packageOverrides = python-self: python-super: {
15411515 twisted = python-super.twisted.overrideAttrs (oldAttrs: {
1542− src = super.fetchPypi {
1516+ src = super.fetchPipy {
15431517 pname = "twisted";
15441518 version = "19.10.0";
15451519 sha256 = "7394ba7f272ae722a74f3d969dcf599bc4ef093bc392038748a490f1724a515d";
@@ -1628,55 +1602,3 @@ The following rules are desired to be respected:
16281602 If necessary, `pname` has to be given a different value within `fetchPypi`.
16291603* Attribute names in `python-packages.nix` should be sorted alphanumerically to
16301604 avoid merge conflicts and ease locating attributes.
1631−
1632−## Package set maintenance
1633−
1634−The whole Python package set has a lot of packages that do not see regular
1635−updates, because they either are a very fragile component in the Python
1636−ecosystem, like for example the `hypothesis` package, or packages that have
1637−no maintainer, so maintenance falls back to the package set maintainers.
1638−
1639−### Updating packages in bulk
1640−
1641−There is a tool to update alot of python libraries in bulk, it exists at
1642−`maintainers/scripts/update-python-libraries` with this repository.
1643−
1644−It can quickly update minor or major versions for all packages selected
1645−and create update commits, and supports the `fetchPypi`, `fetchurl` and
1646−`fetchFromGitHub` fetchers. When updating lots of packages that are
1647−hosted on GitHub, exporting a `GITHUB_API_TOKEN` is highly recommended.
1648−
1649−Updating packages in bulk leads to lots of breakages, which is why a
1650−stabilization period on the `python-unstable` branch is required.
1651−
1652−Once the branch is sufficiently stable it should normally be merged
1653−into the `staging` branch.
1654−
1655−An exemplary call to update all python libraries between minor versions
1656−would be:
1657−
1658−```ShellSession
1659−$ maintainers/scripts/update-python-libraries --target minor --commit --use-pkgs-prefix pkgs/development/python-modules/**/default.nix
1660−```
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/r.section.md+8−12
@@ -96,11 +96,6 @@ re-enter the shell.
9696
9797## Updating the package set {#updating-the-package-set}
9898
99−There is a script and associated environment for regenerating the package
100−sets and synchronising the rPackages tree to the current CRAN and matching
101−BIOC release. These scripts are found in the `pkgs/development/r-modules`
102−directory and executed as follows:
103−
10499```bash
105100nix-shell generate-shell.nix
106101
@@ -117,11 +112,12 @@ Rscript generate-r-packages.R bioc-experiment > bioc-experiment-packages.nix.new
117112mv bioc-experiment-packages.nix.new bioc-experiment-packages.nix
118113```
119114
120−`generate-r-packages.R <repo>` reads `<repo>-packages.nix`, therefore
121−the renaming.
115+`generate-r-packages.R <repo>` reads `<repo>-packages.nix`, therefor the renaming.
116+
117+## Testing if the Nix-expression could be evaluated {#testing-if-the-nix-expression-could-be-evaluated}
118+
119+```bash
120+nix-build test-evaluation.nix --dry-run
121+```
122122
123−Some packages require overrides to specify external dependencies or other
124−patches and special requirements. These overrides are specified in the
125−`pkgs/development/r-modules/default.nix` file. As the `*-packages.nix`
126−contents are automatically generated it should not be edited and broken
127−builds should be addressed using overrides.
123+If this exits fine, the expression is ok. If not, you have to edit `default.nix`
doc/languages-frameworks/ruby.section.md+1−14
@@ -8,7 +8,7 @@ In the Nixpkgs tree, Ruby packages can be found throughout, depending on what th
88
99There are two main approaches for using Ruby with gems. One is to use a specifically locked `Gemfile` for an application that has very strict dependencies. The other is to depend on the common gems, which we'll explain further down, and rely on them being updated regularly.
1010
11−The interpreters have common attributes, namely `gems`, and `withPackages`. So you can refer to `ruby.gems.nokogiri`, or `ruby_2_7.gems.nokogiri` to get the Nokogiri gem already compiled and ready to use.
11+The interpreters have common attributes, namely `gems`, and `withPackages`. So you can refer to `ruby.gems.nokogiri`, or `ruby_2_6.gems.nokogiri` to get the Nokogiri gem already compiled and ready to use.
1212
1313Since not all gems have executables like `nokogiri`, it's usually more convenient to use the `withPackages` function like this: `ruby.withPackages (p: with p; [ nokogiri ])`. This will also make sure that the Ruby in your environment will be able to find the gem and it can be used in your Ruby code (for example via `ruby` or `irb` executables) via `require "nokogiri"` as usual.
1414
@@ -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+85−161
@@ -13,14 +13,14 @@ into your `configuration.nix` or bring them into scope with `nix-shell -p rustc
1313
1414For other versions such as daily builds (beta and nightly),
1515use either `rustup` from nixpkgs (which will manage the rust installation in your home directory),
16−or use a community maintained [Rust overlay](#using-community-rust-overlays).
16+or use Mozilla's [Rust nightlies overlay](#using-the-rust-nightlies-overlay).
1717
1818## Compiling Rust applications with Cargo {#compiling-rust-applications-with-cargo}
1919
2020Rust applications are packaged by using the `buildRustPackage` helper from `rustPlatform`:
2121
2222```nix
23−{ lib, fetchFromGitHub, rustPlatform }:
23+{ lib, rustPlatform }:
2424
2525rustPlatform.buildRustPackage rec {
2626 pname = "ripgrep";
@@ -116,13 +116,13 @@ is updated after every change to `Cargo.lock`. Therefore,
116116a `Cargo.lock` file using the `cargoLock` argument. For example:
117117
118118```nix
119−rustPlatform.buildRustPackage {
119+rustPlatform.buildRustPackage rec {
120120 pname = "myproject";
121121 version = "1.0.0";
122122
123123 cargoLock = {
124124 lockFile = ./Cargo.lock;
125− };
125+ }
126126
127127 # ...
128128}
@@ -131,36 +131,6 @@ rustPlatform.buildRustPackage {
131131This will retrieve the dependencies using fixed-output derivations from
132132the specified lockfile.
133133
134−One caveat is that `Cargo.lock` cannot be patched in the `patchPhase`
135−because it runs after the dependencies have already been fetched. If
136−you need to patch or generate the lockfile you can alternatively set
137−`cargoLock.lockFileContents` to a string of its contents:
138−
139−```nix
140−rustPlatform.buildRustPackage {
141− pname = "myproject";
142− version = "1.0.0";
143−
144− cargoLock = let
145− fixupLockFile = path: f (builtins.readFile path);
146− in {
147− lockFileContents = fixupLockFile ./Cargo.lock;
148− };
149−
150− # ...
151−}
152−```
153−
154−Note that setting `cargoLock.lockFile` or `cargoLock.lockFileContents`
155−doesn't add a `Cargo.lock` to your `src`, and a `Cargo.lock` is still
156−required to build a rust package. A simple fix is to use:
157−
158−```nix
159−postPatch = ''
160− cp ${./Cargo.lock} Cargo.lock
161−'';
162−```
163−
164134The output hash of each dependency that uses a git source must be
165135specified in the `outputHashes` attribute. For example:
166136
@@ -174,7 +144,7 @@ rustPlatform.buildRustPackage rec {
174144 outputHashes = {
175145 "finalfusion-0.14.0" = "17f4bsdzpcshwh74w5z119xjy2if6l2wgyjy56v621skr2r8y904";
176146 };
177− };
147+ }
178148
179149 # ...
180150}
@@ -186,33 +156,6 @@ added. To find the correct hash, you can first use `lib.fakeSha256` or
186156`lib.fakeHash` as a stub hash. Building the package (and thus the
187157vendored dependencies) will then inform you of the correct hash.
188158
189−### Cargo features {#cargo-features}
190−
191−You can disable default features using `buildNoDefaultFeatures`, and
192−extra features can be added with `buildFeatures`.
193−
194−If you want to use different features for check phase, you can use
195−`checkNoDefaultFeatures` and `checkFeatures`. They are only passed to
196−`cargo test` and not `cargo build`. If left unset, they default to
197−`buildNoDefaultFeatures` and `buildFeatures`.
198−
199−For example:
200−
201−```nix
202−rustPlatform.buildRustPackage rec {
203− pname = "myproject";
204− version = "1.0.0";
205−
206− buildNoDefaultFeatures = true;
207− buildFeatures = [ "color" "net" ];
208−
209− # disable network features in tests
210− checkFeatures = [ "color" ];
211−
212− # ...
213−}
214−```
215−
216159### Cross compilation {#cross-compilation}
217160
218161By default, Rust packages are compiled for the host platform, just like any
@@ -264,6 +207,22 @@ where they are known to differ. But there are ways to customize the argument:
264207 --target /nix/store/asdfasdfsadf-thumb-crazy.json # contains {"foo":"","bar":""}
265208 ```
266209
210+Finally, as an ad-hoc escape hatch, a computed target (string or JSON file
211+path) can be passed directly to `buildRustPackage`:
212+
213+```nix
214+pkgs.rustPlatform.buildRustPackage {
215+ /* ... */
216+ target = "x86_64-fortanix-unknown-sgx";
217+}
218+```
219+
220+This is useful to avoid rebuilding Rust tools, since they are actually target
221+agnostic and don't need to be rebuilt. But in the future, we should always
222+build the Rust tools and standard library crates separately so there is no
223+reason not to take the `stdenv.hostPlatform.rustc`-modifying approach, and the
224+ad-hoc escape hatch to `buildRustPackage` can be removed.
225+
267226Note that currently custom targets aren't compiled with `std`, so `cargo test`
268227will fail. This can be ignored by adding `doCheck = false;` to your derivation.
269228
@@ -288,12 +247,12 @@ rustPlatform.buildRustPackage {
288247Please note that the code will be compiled twice here: once in `release` mode
289248for the `buildPhase`, and again in `debug` mode for the `checkPhase`.
290249
291−Test flags, e.g., `--package foo`, can be passed to `cargo test` via the
250+Test flags, e.g., `--features xxx/yyy`, can be passed to `cargo test` via the
292251`cargoTestFlags` attribute.
293252
294253Another attribute, called `checkFlags`, is used to pass arguments to the test
295254binary itself, as stated
296−[here](https://doc.rust-lang.org/cargo/commands/cargo-test.html).
255+(here)[https://doc.rust-lang.org/cargo/commands/cargo-test.html].
297256
298257#### Tests relying on the structure of the `target/` directory {#tests-relying-on-the-structure-of-the-target-directory}
299258
@@ -438,7 +397,7 @@ you of the correct hash.
438397
439398`rustPlatform` provides the following hooks to automate Cargo builds:
440399
441−* `cargoSetupHook`: configure Cargo to use dependencies vendored
400+* `cargoSetupHook`: configure Cargo to use depenencies vendored
442401 through `fetchCargoTarball`. This hook uses the `cargoDeps`
443402 environment variable to find the vendored dependencies. If a project
444403 already vendors its dependencies, the variable `cargoVendorDir` can
@@ -448,24 +407,20 @@ you of the correct hash.
448407* `cargoBuildHook`: use Cargo to build a crate. If the crate to be
449408 built is a crate in e.g. a Cargo workspace, the relative path to the
450409 crate to build can be set through the optional `buildAndTestSubdir`
451− environment variable. Features can be specified with
452− `cargoBuildNoDefaultFeatures` and `cargoBuildFeatures`. Additional
453− Cargo build flags can be passed through `cargoBuildFlags`.
410+ environment variable. Additional Cargo build flags can be passed
411+ through `cargoBuildFlags`.
454412* `maturinBuildHook`: use [Maturin](https://github.com/PyO3/maturin)
455413 to build a Python wheel. Similar to `cargoBuildHook`, the optional
456414 variable `buildAndTestSubdir` can be used to build a crate in a
457− Cargo workspace. Additional Maturin flags can be passed through
415+ Cargo workspace. Additional maturin flags can be passed through
458416 `maturinBuildFlags`.
459417* `cargoCheckHook`: run tests using Cargo. The build type for checks
460− can be set using `cargoCheckType`. Features can be specified with
461− `cargoCheckNoDefaultFeaatures` and `cargoCheckFeatures`. Additional
462− flags can be passed to the tests using `checkFlags` and
463− `checkFlagsArray`. By default, tests are run in parallel. This can
464− be disabled by setting `dontUseCargoParallelTests`.
418+ can be set using `cargoCheckType`. Additional flags can be passed to
419+ the tests using `checkFlags` and `checkFlagsArray`. By default,
420+ tests are run in parallel. This can be disabled by setting
421+ `dontUseCargoParallelTests`.
465422* `cargoInstallHook`: install binaries and static/shared libraries
466423 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`.
469424
470425### Examples {#examples}
471426
@@ -478,7 +433,7 @@ dependencies. The build itself is then performed by
478433
479434The following example outlines how the `tokenizers` Python package is
480435built. Since the Python package is in the `source/bindings/python`
481−directory of the `tokenizers` project's source archive, we use
436+directory of the *tokenizers* project's source archive, we use
482437`sourceRoot` to point the tooling to this directory:
483438
484439```nix
@@ -703,7 +658,7 @@ Some crates require external libraries. For crates from
703658`defaultCrateOverrides` package in nixpkgs itself.
704659
705660Starting from that file, one can add more overrides, to add features
706−or build inputs by overriding the hello crate in a separate file.
661+or build inputs by overriding the hello crate in a seperate file.
707662
708663```nix
709664with import <nixpkgs> {};
@@ -760,7 +715,7 @@ with import <nixpkgs> {};
760715Actually, the overrides introduced in the previous section are more
761716general. A number of other parameters can be overridden:
762717
763−- The version of `rustc` used to compile the crate:
718+- The version of rustc used to compile the crate:
764719
765720 ```nix
766721 (hello {}).override { rust = pkgs.rust; };
@@ -773,7 +728,7 @@ general. A number of other parameters can be overridden:
773728 (hello {}).override { release = false; };
774729 ```
775730
776−- Whether to print the commands sent to `rustc` when building
731+- Whether to print the commands sent to rustc when building
777732 (equivalent to `--verbose` in cargo:
778733
779734 ```nix
@@ -902,107 +857,76 @@ rustc 1.26.0-nightly (188e693b3 2018-03-26)
902857
903858To see that you are using nightly.
904859
905−## Using community Rust overlays {#using-community-rust-overlays}
860+## Using the Rust nightlies overlay {#using-the-rust-nightlies-overlay}
906861
907−There are two community maintained approaches to Rust toolchain management:
908−- [oxalica's Rust overlay](https://github.com/oxalica/rust-overlay)
909−- [fenix](https://github.com/nix-community/fenix)
862+Mozilla provides an overlay for nixpkgs to bring a nightly version of Rust into scope.
863+This overlay can _also_ be used to install recent unstable or stable versions
864+of Rust, if desired.
910865
911−Oxalica's overlay allows you to select a particular Rust version and components.
912−See [their documentation](https://github.com/oxalica/rust-overlay#rust-overlay) for more
913−detailed usage.
866+### Rust overlay installation {#rust-overlay-installation}
914867
915−Fenix is an alternative to `rustup` and can also be used as an overlay.
868+You can use this overlay by either changing your local nixpkgs configuration,
869+or by adding the overlay declaratively in a nix expression, e.g. in `configuration.nix`.
870+For more information see [the manual on installing overlays](#sec-overlays-install).
916871
917−Both oxalica's overlay and fenix better integrate with nix and cache optimizations.
918−Because of this and ergonomics, either of those community projects
919−should be preferred to the Mozilla's Rust overlay (`nixpkgs-mozilla`).
872+#### Imperative rust overlay installation {#imperative-rust-overlay-installation}
920873
921−### How to select a specific `rustc` and toolchain version {#how-to-select-a-specific-rustc-and-toolchain-version}
874+Clone [nixpkgs-mozilla](https://github.com/mozilla/nixpkgs-mozilla),
875+and create a symbolic link to the file
876+[rust-overlay.nix](https://github.com/mozilla/nixpkgs-mozilla/blob/master/rust-overlay.nix)
877+in the `~/.config/nixpkgs/overlays` directory.
922878
923−You can consume the oxalica overlay and use it to grab a specific Rust toolchain version.
924−Here is an example `shell.nix` showing how to grab the current stable toolchain:
925−```nix
926−{ pkgs ? import <nixpkgs> {
927− overlays = [
928− (import (fetchTarball "https://github.com/oxalica/rust-overlay/archive/master.tar.gz"))
929− ];
930− }
931−}:
932−pkgs.mkShell {
933− nativeBuildInputs = with pkgs; [
934− pkg-config
935− rust-bin.stable.latest.minimal
936− ];
937−}
879+```ShellSession
880+$ git clone https://github.com/mozilla/nixpkgs-mozilla.git
881+$ mkdir -p ~/.config/nixpkgs/overlays
882+$ ln -s $(pwd)/nixpkgs-mozilla/rust-overlay.nix ~/.config/nixpkgs/overlays/rust-overlay.nix
938883```
939884
940−You can try this out by:
941−1. Saving that to `shell.nix`
942−2. Executing `nix-shell --pure --command 'rustc --version'`
943−
944−As of writing, this prints out `rustc 1.56.0 (09c42c458 2021-10-18)`.
885+### Declarative rust overlay installation {#declarative-rust-overlay-installation}
945886
946−### How to use an overlay toolchain in a derivation {#how-to-use-an-overlay-toolchain-in-a-derivation}
887+Add the following to your `configuration.nix`, `home-configuration.nix`, `shell.nix`, or similar:
947888
948−You can also use an overlay's Rust toolchain with `buildRustPackage`.
949−The below snippet demonstrates invoking `buildRustPackage` with an oxalica overlay selected Rust toolchain:
950889```nix
951−with import <nixpkgs> {
952− overlays = [
953− (import (fetchTarball "https://github.com/oxalica/rust-overlay/archive/master.tar.gz"))
954− ];
890+{ pkgs ? import <nixpkgs> {
891+ overlays = [
892+ (import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz))
893+ # Further overlays go here
894+ ];
895+ };
955896};
897+```
956898
957−rustPlatform.buildRustPackage rec {
958− pname = "ripgrep";
959− version = "12.1.1";
960− nativeBuildInputs = [
961− rust-bin.stable.latest.minimal
962− ];
963−
964− src = fetchFromGitHub {
965− owner = "BurntSushi";
966− repo = "ripgrep";
967− rev = version;
968− sha256 = "1hqps7l5qrjh9f914r5i6kmcz6f1yb951nv4lby0cjnp5l253kps";
969− };
899+Note that this will fetch the latest overlay version when rebuilding your system.
970900
971− cargoSha256 = "03wf9r2csi6jpa7v5sw5lpxkrk4wfzwmzx7k3991q3bdjzcwnnwp";
901+### Rust overlay usage {#rust-overlay-usage}
972902
973− meta = with lib; {
974− description = "A fast line-oriented regex search tool, similar to ag and ack";
975− homepage = "https://github.com/BurntSushi/ripgrep";
976− license = licenses.unlicense;
977− maintainers = [ maintainers.tailhook ];
978− };
979−}
980−```
903+The overlay contains attribute sets corresponding to different versions of the rust toolchain, such as:
981904
982−Follow the below steps to try that snippet.
983−1. create a new directory
984−1. save the above snippet as `default.nix` in that directory
985−1. cd into that directory and run `nix-build`
905+* `latest.rustChannels.stable`
906+* `latest.rustChannels.nightly`
907+* a function `rustChannelOf`, called as `(rustChannelOf { date = "2018-04-11"; channel = "nightly"; })`, or...
908+* `(nixpkgs.rustChannelOf { rustToolchain = ./rust-toolchain; })` if you have a local `rust-toolchain` file (see https://github.com/mozilla/nixpkgs-mozilla#using-in-nix-expressions for an example)
986909
987−### Rust overlay installation {#rust-overlay-installation}
910+Each of these contain packages such as `rust`, which contains your usual rust development tools with the respective toolchain chosen.
911+For example, you might want to add `latest.rustChannels.stable.rust` to the list of packages in your configuration.
988912
989−You can use this overlay by either changing your local nixpkgs configuration,
990−or by adding the overlay declaratively in a nix expression, e.g. in `configuration.nix`.
991−For more information see [the manual on installing overlays](#sec-overlays-install).
913+Imperatively, the latest stable version can be installed with the following command:
992914
993−### Declarative Rust overlay installation {#declarative-rust-overlay-installation}
915+```ShellSession
916+$ nix-env -Ai nixpkgs.latest.rustChannels.stable.rust
917+```
994918
995−This snippet shows how to use oxalica's Rust overlay.
996−Add the following to your `configuration.nix`, `home-configuration.nix`, `shell.nix`, or similar:
919+Or using the attribute with nix-shell:
997920
998−```nix
999−{ pkgs ? import <nixpkgs> {
1000− overlays = [
1001− (import (builtins.fetchTarball "https://github.com/oxalica/rust-overlay/archive/master.tar.gz"))
1002− # Further overlays go here
1003− ];
1004− };
1005−};
921+```ShellSession
922+$ nix-shell -p nixpkgs.latest.rustChannels.stable.rust
1006923```
1007924
1008−Note that this will fetch the latest overlay version when rebuilding your system.
925+Substitute the `nixpkgs` prefix with `nixos` on NixOS.
926+To install the beta or nightly channel, "stable" should be substituted by
927+"nightly" or "beta", or
928+use the function provided by this overlay to pull a version based on a
929+build date.
930+
931+The overlay automatically updates itself as it uses the same source as
932+[rustup](https://www.rustup.rs/).
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+7−37
@@ -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
@@ -123,7 +120,7 @@ After that you can install your special grafted `myVim` or `myNeovim` packages.
123120
124121If one of your favourite plugins isn't packaged, you can package it yourself:
125122
126−```nix
123+```
127124{ config, pkgs, ... }:
128125
129126let
@@ -157,33 +154,6 @@ in
157154}
158155```
159156
160−### Specificities for some plugins
161−#### Tree sitter
162−
163−By default `nvim-treesitter` encourages you to download, compile and install
164−the required tree-sitter grammars at run time with `:TSInstall`. This works
165−poorly on NixOS. Instead, to install the `nvim-treesitter` plugins with a set
166−of precompiled grammars, you can use `nvim-treesitter.withPlugins` function:
167−
168−```nix
169−(pkgs.neovim.override {
170− configure = {
171− packages.myPlugins = with pkgs.vimPlugins; {
172− start = [
173− (nvim-treesitter.withPlugins (
174− plugins: with plugins; [
175− tree-sitter-nix
176− tree-sitter-python
177− ]
178− ))
179− ];
180− };
181− };
182−})
183−```
184−
185−To enable all grammars packaged in nixpkgs, use `(pkgs.vimPlugins.nvim-treesitter.withPlugins (plugins: pkgs.tree-sitter.allGrammars))`.
186−
187157## Managing plugins with vim-plug {#managing-plugins-with-vim-plug}
188158
189159To use [vim-plug](https://github.com/junegunn/vim-plug) to manage your Vim
@@ -289,7 +259,7 @@ Sample output1:
289259"reload" = buildVimPluginFrom2Nix { # created by nix#NixDerivation
290260 name = "reload";
291261 src = fetchgit {
292− url = "https://github.com/xolox/vim-reload";
262+ url = "git://github.com/xolox/vim-reload";
293263 rev = "0a601a668727f5b675cb1ddc19f6861f3f7ab9e1";
294264 sha256 = "0vb832l9yxj919f5hfg6qj6bn9ni57gnjd3bj7zpq7d4iv2s4wdh";
295265 };
@@ -312,9 +282,9 @@ Sample output2:
312282
313283## Adding new plugins to nixpkgs {#adding-new-plugins-to-nixpkgs}
314284
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`.
285+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]`. For example https://github.com/scrooloose/nerdtree becomes `scrooloose/nerdtree`.
316286
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:
287+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:
318288
319289```nix
320290deoplete-fish = super.deoplete-fish.overrideAttrs(old: {
@@ -333,13 +303,13 @@ Finally, there are some plugins that are also packaged in nodePackages because t
333303Run 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).
334304
335305```sh
336−GITHUB_API_TOKEN=my_token ./pkgs/applications/editors/vim/plugins/update.py
306+GITHUB_API_TOKEN=my_token ./pkgs/misc/vim-plugins/update.py
337307```
338308
339309Alternatively, set the number of processes to a lower count to avoid rate-limiting.
340310
341311```sh
342−./pkgs/applications/editors/vim/plugins/update.py --proc 1
312+./pkgs/misc/vim-plugins/update.py --proc 1
343313```
344314
345315## 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+12−37
@@ -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
@@ -183,9 +158,9 @@ One would think that `localSystem` and `crossSystem` overlap horribly with the t
183158
184159### Implementation of dependencies {#ssec-cross-dependency-implementation}
185160
186−The categories of dependencies developed in [](#ssec-cross-dependency-categorization) are specified as lists of derivations given to `mkDerivation`, as documented in [](#ssec-stdenv-dependencies). In short, each list of dependencies for "host → target" is called `deps<host><target>` (where `host`, and `target` values are either `build`, `host`, or `target`), with exceptions for backwards compatibility that `depsBuildHost` is instead called `nativeBuildInputs` and `depsHostTarget` is instead called `buildInputs`. Nixpkgs is now structured so that each `deps<host><target>` is automatically taken from `pkgs<host><target>`. (These `pkgs<host><target>`s are quite new, so there is no special case for `nativeBuildInputs` and `buildInputs`.) For example, `pkgsBuildHost.gcc` should be used at build-time, while `pkgsHostTarget.gcc` should be used at run-time.
161+The categories of dependencies developed in [](#ssec-cross-dependency-categorization) are specified as lists of derivations given to `mkDerivation`, as documented in [](#ssec-stdenv-dependencies). In short, each list of dependencies for "host → target" of "foo → bar" is called `depsFooBar`, with exceptions for backwards compatibility that `depsBuildHost` is instead called `nativeBuildInputs` and `depsHostTarget` is instead called `buildInputs`. Nixpkgs is now structured so that each `depsFooBar` is automatically taken from `pkgsFooBar`. (These `pkgsFooBar`s are quite new, so there is no special case for `nativeBuildInputs` and `buildInputs`.) For example, `pkgsBuildHost.gcc` should be used at build-time, while `pkgsHostTarget.gcc` should be used at run-time.
187162
188−Now, for most of Nixpkgs's history, there were no `pkgs<host><target>` attributes, and most packages have not been refactored to use it explicitly. Prior to those, there were just `buildPackages`, `pkgs`, and `targetPackages`. Those are now redefined as aliases to `pkgsBuildHost`, `pkgsHostTarget`, and `pkgsTargetTarget`. It is acceptable, even recommended, to use them for libraries to show that the host platform is irrelevant.
163+Now, for most of Nixpkgs's history, there were no `pkgsFooBar` attributes, and most packages have not been refactored to use it explicitly. Prior to those, there were just `buildPackages`, `pkgs`, and `targetPackages`. Those are now redefined as aliases to `pkgsBuildHost`, `pkgsHostTarget`, and `pkgsTargetTarget`. It is acceptable, even recommended, to use them for libraries to show that the host platform is irrelevant.
189164
190165But before that, there was just `pkgs`, even though both `buildInputs` and `nativeBuildInputs` existed. \[Cross barely worked, and those were implemented with some hacks on `mkDerivation` to override dependencies.\] What this means is the vast majority of packages do not use any explicit package set to populate their dependencies, just using whatever `callPackage` gives them even if they do correctly sort their dependencies into the multiple lists described above. And indeed, asking that users both sort their dependencies, _and_ take them from the right attribute set, is both too onerous and redundant, so the recommended approach (for now) is to continue just categorizing by list and not using an explicit package set.
191166
doc/stdenv/meta.chapter.md+5−62
@@ -114,10 +114,6 @@ For details, see [Licenses](#sec-meta-license).
114114
115115A list of the maintainers of this Nix expression. Maintainers are defined in [`nixpkgs/maintainers/maintainer-list.nix`](https://github.com/NixOS/nixpkgs/blob/master/maintainers/maintainer-list.nix). There is no restriction to becoming a maintainer, just add yourself to that list in a separate commit titled “maintainers: add alice”, and reference maintainers with `maintainers = with lib.maintainers; [ alice bob ]`.
116116
117−### `mainProgram` {#var-meta-mainProgram}
118−
119−The name of the main binary for the package. This effects the binary `nix run` executes and falls back to the name of the package. Example: `"rg"`
120−
121117### `priority` {#var-meta-priority}
122118
123119The *priority* of the package, used by `nix-env` to resolve file name conflicts between packages. See the Nix manual page for `nix-env` for details. Example: `"10"` (a low-priority package).
@@ -138,28 +134,7 @@ Attribute Set `lib.platforms` defines [various common lists](https://github.com/
138134This attribute is special in that it is not actually under the `meta` attribute set but rather under the `passthru` attribute set. This is due to how `meta` attributes work, and the fact that they are supposed to contain only metadata, not derivations.
139135:::
140136
141−An attribute set with tests as values. A test is a derivation that builds when the test passes and fails to build otherwise.
142−
143−You can run these tests with:
144−
145−```ShellSession
146−$ cd path/to/nixpkgs
147−$ nix-build -A your-package.tests
148−```
149−
150−#### Package tests
151−
152−Tests that are part of the source package are often executed in the `installCheckPhase`.
153−
154−Prefer `passthru.tests` for tests that are introduced in nixpkgs because:
155−
156−* `passthru.tests` tests the 'real' package, independently from the environment in which it was built
157−* we can run `passthru.tests` independently
158−* `installCheckPhase` adds overhead to each build
159−
160−For more on how to write and run package tests, see <xref linkend="sec-package-tests"/>.
161−
162−#### NixOS tests
137+An attribute set with as values tests. A test is a derivation, which builds successfully when the test passes, and fails to build otherwise. A derivation that is a test needs to have `meta.timeout` defined.
163138
164139The NixOS tests are available as `nixosTests` in parameters of derivations. For instance, the OpenSMTPD derivation includes lines similar to:
165140
@@ -173,42 +148,6 @@ The NixOS tests are available as `nixosTests` in parameters of derivations. For
173148}
174149```
175150
176−NixOS 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).
177−
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−
212151### `timeout` {#var-meta-timeout}
213152
214153A 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 +165,10 @@ meta.hydraPlatforms = [];
226165
227166If 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.
228167
168+### `updateWalker` {#var-meta-updateWalker}
169+
170+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.
171+
229172## Licenses {#sec-meta-license}
230173
231174The `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/multiple-output.chapter.md+1−1
@@ -79,7 +79,7 @@ A commonly adopted convention in `nixpkgs` is that executables provided by the p
7979
8080The `glibc` package is a deliberate single exception to the “binaries first” convention. The `glibc` has `libs` as its first output allowing the libraries provided by `glibc` to be referenced directly (e.g. `${stdenv.glibc}/lib/ld-linux-x86-64.so.2`). The executables provided by `glibc` can be accessed via its `bin` attribute (e.g. `${stdenv.glibc.bin}/bin/ldd`).
8181
82−The reason for why `glibc` deviates from the convention is because referencing a library provided by `glibc` is a very common operation among Nix packages. For instance, third-party executables packaged by Nix are typically patched and relinked with the relevant version of `glibc` libraries from Nix packages (please see the documentation on [patchelf](https://github.com/NixOS/patchelf) for more details).
82+The reason for why `glibc` deviates from the convention is because referencing a library provided by `glibc` is a very common operation among Nix packages. For instance, third-party executables packaged by Nix are typically patched and relinked with the relevant version of `glibc` libraries from Nix packages (please see the documentation on [patchelf](https://github.com/NixOS/patchelf/blob/master/README) for more details).
8383
8484### File type groups {#multiple-output-file-type-groups}
8585
doc/stdenv/stdenv.chapter.md+21−112
@@ -116,27 +116,15 @@ On Linux, `stdenv` also includes the `patchelf` utility.
116116
117117## Specifying dependencies {#ssec-stdenv-dependencies}
118118
119−As described in the Nix manual, almost any `*.drv` store path in a derivation’s attribute set will induce a dependency on that derivation. `mkDerivation`, however, takes a few attributes intended to include all the dependencies of a package. This is done both for structure and consistency, but also so that certain other setup can take place. For example, certain dependencies need their bin directories added to the `PATH`. That is built-in, but other setup is done via a pluggable mechanism that works in conjunction with these dependency attributes. See [](#ssec-setup-hooks) for details.
119+As described in the Nix manual, almost any `*.drv` store path in a derivation’s attribute set will induce a dependency on that derivation. `mkDerivation`, however, takes a few attributes intended to, between them, include all the dependencies of a package. This is done both for structure and consistency, but also so that certain other setup can take place. For example, certain dependencies need their bin directories added to the `PATH`. That is built-in, but other setup is done via a pluggable mechanism that works in conjunction with these dependency attributes. See [](#ssec-setup-hooks) for details.
120120
121121Dependencies can be broken down along three axes: their host and target platforms relative to the new derivation’s, and whether they are propagated. The platform distinctions are motivated by cross compilation; see [](#chap-cross) for exactly what each platform means. [^footnote-stdenv-ignored-build-platform] But even if one is not cross compiling, the platforms imply whether or not the dependency is needed at run-time or build-time, a concept that makes perfect sense outside of cross compilation. By default, the run-time/build-time distinction is just a hint for mental clarity, but with `strictDeps` set it is mostly enforced even in the native case.
122122
123123The extension of `PATH` with dependencies, alluded to above, proceeds according to the relative platforms alone. The process is carried out only for dependencies whose host platform matches the new derivation’s build platform i.e. dependencies which run on the platform where the new derivation will be built. [^footnote-stdenv-native-dependencies-in-path] For each dependency \<dep\> of those dependencies, `dep/bin`, if present, is added to the `PATH` environment variable.
124124
125−A dependency is said to be **propagated** when some of its other-transitive (non-immediate) downstream dependencies also need it as an immediate dependency.
126−[^footnote-stdenv-propagated-dependencies]
125+The dependency is propagated when it forces some of its other-transitive (non-immediate) downstream dependencies to also take it on as an immediate dependency. Nix itself already takes a package’s transitive dependencies into account, but this propagation ensures nixpkgs-specific infrastructure like setup hooks (mentioned above) also are run as if the propagated dependency.
127126
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:
129−
130−| `host → target` | attribute name | offset |
131−| ------------------- | ------------------- | -------- |
132−| `build --> build` | `depsBuildBuild` | `-1, -1` |
133−| `build --> host` | `nativeBuildInputs` | `-1, 0` |
134−| `build --> target` | `depsBuildTarget` | `-1, 1` |
135−| `host --> host` | `depsHostHost` | `0, 0` |
136−| `host --> target` | `buildInputs` | `0, 1` |
137−| `target --> target` | `depsTargetTarget` | `1, 1` |
138−
139−Algorithmically, we traverse propagated inputs, accumulating every propagated dependency’s propagated dependencies and adjusting them to account for the “shift in perspective” described by the current dependency’s platform offsets. This results is sort of a transitive closure of the dependency relation, with the offsets being approximately summed when two dependency links are combined. We also prune transitive dependencies whose combined offsets go out-of-bounds, which can be viewed as a filter over that transitive closure removing dependencies that are blatantly absurd.
127+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. The exact rules for dependency propagation can be given by assigning to each dependency two integers based one how its host and target platforms are offset from the depending derivation’s platforms. Those offsets are given below in the descriptions of each dependency list attribute. Algorithmically, we traverse propagated inputs, accumulating every propagated dependency’s propagated dependencies and adjusting them to account for the “shift in perspective” described by the current dependency’s platform offsets. This results in sort a transitive closure of the dependency relation, with the offsets being approximately summed when two dependency links are combined. We also prune transitive dependencies whose combined offsets go out-of-bounds, which can be viewed as a filter over that transitive closure removing dependencies that are blatantly absurd.
140128
141129We can define the process precisely with [Natural Deduction](https://en.wikipedia.org/wiki/Natural_deduction) using the inference rules. This probably seems a bit obtuse, but so is the bash code that actually implements it! [^footnote-stdenv-find-inputs-location] They’re confusing in very different ways so… hopefully if something doesn’t make sense in one presentation, it will in the other!
142130
@@ -191,37 +179,37 @@ Overall, the unifying theme here is that propagation shouldn’t be introducing
191179
192180#### `depsBuildBuild` {#var-stdenv-depsBuildBuild}
193181
194−A list of dependencies whose host and target platforms are the new derivation’s build platform. These are programs and libraries used at build time that produce programs and libraries also used at build time. If the dependency doesn’t care about the target platform (i.e. isn’t a compiler or similar tool), put it in `nativeBuildInputs` instead. The most common use of this `buildPackages.stdenv.cc`, the default C compiler for this role. That example crops up more than one might think in old commonly used C libraries.
182+A list of dependencies whose host and target platforms are the new derivation’s build platform. This means a `-1` host and `-1` target offset from the new derivation’s platforms. These are programs and libraries used at build time that produce programs and libraries also used at build time. If the dependency doesn’t care about the target platform (i.e. isn’t a compiler or similar tool), put it in `nativeBuildInputs` instead. The most common use of this `buildPackages.stdenv.cc`, the default C compiler for this role. That example crops up more than one might think in old commonly used C libraries.
195183
196184Since these packages are able to be run at build-time, they are always added to the `PATH`, as described above. But since these packages are only guaranteed to be able to run then, they shouldn’t persist as run-time dependencies. This isn’t currently enforced, but could be in the future.
197185
198186#### `nativeBuildInputs` {#var-stdenv-nativeBuildInputs}
199187
200−A list of dependencies whose host platform is the new derivation’s build platform, and target platform is the new derivation’s host platform. These are programs and libraries used at build-time that, if they are a compiler or similar tool, produce code to run at run-time—i.e. tools used to build the new derivation. If the dependency doesn’t care about the target platform (i.e. isn’t a compiler or similar tool), put it here, rather than in `depsBuildBuild` or `depsBuildTarget`. This could be called `depsBuildHost` but `nativeBuildInputs` is used for historical continuity.
188+A list of dependencies whose host platform is the new derivation’s build platform, and target platform is the new derivation’s host platform. This means a `-1` host offset and `0` target offset from the new derivation’s platforms. These are programs and libraries used at build-time that, if they are a compiler or similar tool, produce code to run at run-time—i.e. tools used to build the new derivation. If the dependency doesn’t care about the target platform (i.e. isn’t a compiler or similar tool), put it here, rather than in `depsBuildBuild` or `depsBuildTarget`. This could be called `depsBuildHost` but `nativeBuildInputs` is used for historical continuity.
201189
202190Since these packages are able to be run at build-time, they are added to the `PATH`, as described above. But since these packages are only guaranteed to be able to run then, they shouldn’t persist as run-time dependencies. This isn’t currently enforced, but could be in the future.
203191
204192#### `depsBuildTarget` {#var-stdenv-depsBuildTarget}
205193
206−A list of dependencies whose host platform is the new derivation’s build platform, and target platform is the new derivation’s target platform. These are programs used at build time that produce code to run with code produced by the depending package. Most commonly, these are tools used to build the runtime or standard library that the currently-being-built compiler will inject into any code it compiles. In many cases, the currently-being-built-compiler is itself employed for that task, but when that compiler won’t run (i.e. its build and host platform differ) this is not possible. Other times, the compiler relies on some other tool, like binutils, that is always built separately so that the dependency is unconditional.
194+A list of dependencies whose host platform is the new derivation’s build platform, and target platform is the new derivation’s target platform. This means a `-1` host offset and `1` target offset from the new derivation’s platforms. These are programs used at build time that produce code to run with code produced by the depending package. Most commonly, these are tools used to build the runtime or standard library that the currently-being-built compiler will inject into any code it compiles. In many cases, the currently-being-built-compiler is itself employed for that task, but when that compiler won’t run (i.e. its build and host platform differ) this is not possible. Other times, the compiler relies on some other tool, like binutils, that is always built separately so that the dependency is unconditional.
207195
208−This is a somewhat confusing concept to wrap one’s head around, and for good reason. As the only dependency type where the platform offsets, `-1` and `1`, are not adjacent integers, it requires thinking of a bootstrapping stage *two* away from the current one. It and its use-case go hand in hand and are both considered poor form: try to not need this sort of dependency, and try to avoid building standard libraries and runtimes in the same derivation as the compiler produces code using them. Instead strive to build those like a normal library, using the newly-built compiler just as a normal library would. In short, do not use this attribute unless you are packaging a compiler and are sure it is needed.
196+This is a somewhat confusing concept to wrap one’s head around, and for good reason. As the only dependency type where the platform offsets are not adjacent integers, it requires thinking of a bootstrapping stage *two* away from the current one. It and its use-case go hand in hand and are both considered poor form: try to not need this sort of dependency, and try to avoid building standard libraries and runtimes in the same derivation as the compiler produces code using them. Instead strive to build those like a normal library, using the newly-built compiler just as a normal library would. In short, do not use this attribute unless you are packaging a compiler and are sure it is needed.
209197
210198Since these packages are able to run at build time, they are added to the `PATH`, as described above. But since these packages are only guaranteed to be able to run then, they shouldn’t persist as run-time dependencies. This isn’t currently enforced, but could be in the future.
211199
212200#### `depsHostHost` {#var-stdenv-depsHostHost}
213201
214−A list of dependencies whose host and target platforms match the new derivation’s host platform. In practice, this would usually be tools used by compilers for macros or a metaprogramming system, or libraries used by the macros or metaprogramming code itself. It’s always preferable to use a `depsBuildBuild` dependency in the derivation being built over a `depsHostHost` on the tool doing the building for this purpose.
202+A list of dependencies whose host and target platforms match the new derivation’s host platform. This means a `0` host offset and `0` target offset from the new derivation’s host platform. These are packages used at run-time to generate code also used at run-time. In practice, this would usually be tools used by compilers for macros or a metaprogramming system, or libraries used by the macros or metaprogramming code itself. It’s always preferable to use a `depsBuildBuild` dependency in the derivation being built over a `depsHostHost` on the tool doing the building for this purpose.
215203
216204#### `buildInputs` {#var-stdenv-buildInputs}
217205
218−A list of dependencies whose host platform and target platform match the new derivation’s. This would be called `depsHostTarget` but for historical continuity. If the dependency doesn’t care about the target platform (i.e. isn’t a compiler or similar tool), put it here, rather than in `depsBuildBuild`.
206+A list of dependencies whose host platform and target platform match the new derivation’s. This means a `0` host offset and a `1` target offset from the new derivation’s host platform. This would be called `depsHostTarget` but for historical continuity. If the dependency doesn’t care about the target platform (i.e. isn’t a compiler or similar tool), put it here, rather than in `depsBuildBuild`.
219207
220208These are often programs and libraries used by the new derivation at *run*-time, but that isn’t always the case. For example, the machine code in a statically-linked library is only used at run-time, but the derivation containing the library is only needed at build-time. Even in the dynamic case, the library may also be needed at build-time to appease the linker.
221209
222210#### `depsTargetTarget` {#var-stdenv-depsTargetTarget}
223211
224−A list of dependencies whose host platform matches the new derivation’s target platform. These are packages that run on the target platform, e.g. the standard library or run-time deps of standard library that a compiler insists on knowing about. It’s poor form in almost all cases for a package to depend on another from a future stage \[future stage corresponding to positive offset\]. Do not use this attribute unless you are packaging a compiler and are sure it is needed.
212+A list of dependencies whose host platform matches the new derivation’s target platform. This means a `1` offset from the new derivation’s platforms. These are packages that run on the target platform, e.g. the standard library or run-time deps of standard library that a compiler insists on knowing about. It’s poor form in almost all cases for a package to depend on another from a future stage \[future stage corresponding to positive offset\]. Do not use this attribute unless you are packaging a compiler and are sure it is needed.
225213
226214#### `depsBuildBuildPropagated` {#var-stdenv-depsBuildBuildPropagated}
227215
@@ -317,72 +305,12 @@ The script will be usually run from the root of the Nixpkgs repository but you s
317305
318306For information about how to run the updates, execute `nix-shell maintainers/scripts/update.nix`.
319307
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−
374308## Phases {#sec-stdenv-phases}
375309
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).
310+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.
379311
380312Each 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`.
381313
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−
386314### Controlling phases {#ssec-controlling-phases}
387315
388316There are a number of variables that control what phases are executed and in what order:
@@ -393,8 +321,7 @@ There are a number of variables that control what phases are executed and in wha
393321
394322Specifies 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`.
395323
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`).
324+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.
398325
399326##### `prePhases` {#var-stdenv-prePhases}
400327
@@ -446,11 +373,11 @@ Additional file types can be supported by setting the `unpackCmd` variable (see
446373
447374##### `srcs` / `src` {#var-stdenv-src}
448375
449−The list of source files or directories to be unpacked or copied. One of these must be set. Note that if you use `srcs`, you should also set `sourceRoot` or `setSourceRoot`.
376+The list of source files or directories to be unpacked or copied. One of these must be set.
450377
451378##### `sourceRoot` {#var-stdenv-sourceRoot}
452379
453−After running `unpackPhase`, the generic builder changes the current directory to the directory created by unpacking the sources. If there are multiple source directories, you should set `sourceRoot` to the name of the intended directory. Set `sourceRoot = ".";` if you use `srcs` and control the unpack phase yourself.
380+After running `unpackPhase`, the generic builder changes the current directory to the directory created by unpacking the sources. If there are multiple source directories, you should set `sourceRoot` to the name of the intended directory.
454381
455382##### `setSourceRoot` {#var-stdenv-setSourceRoot}
456383
@@ -787,8 +714,6 @@ to `~/.gdbinit`. GDB will then be able to find debug information installed via `
787714
788715The installCheck phase checks whether the package was installed correctly by running its test suite against the installed directories. The default `installCheck` calls `make installcheck`.
789716
790−It is often better to add tests that are not part of the source distribution to `passthru.tests` (see <xref linkend="var-meta-tests"/>). This avoids adding overhead to every build and enables us to run them independently.
791−
792717#### Variables controlling the installCheck phase {#variables-controlling-the-installcheck-phase}
793718
794719##### `doInstallCheck` {#var-stdenv-doInstallCheck}
@@ -851,13 +776,13 @@ Hook executed at the start of the distribution phase.
851776
852777Hook executed at the end of the distribution phase.
853778
854−## Shell functions and utilities {#ssec-stdenv-functions}
779+## Shell functions {#ssec-stdenv-functions}
855780
856781The standard environment provides a number of useful functions.
857782
858783### `makeWrapper` \<executable\> \<wrapperfile\> \<args\> {#fun-makeWrapper}
859784
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:
785+Constructs a wrapper for a program with various possible arguments. For example:
861786
862787```bash
863788# adds `FOOBAR=baz` to `$out/bin/foo`’s environment
@@ -869,24 +794,9 @@ makeWrapper $out/bin/foo $wrapperfile --set FOOBAR baz
869794makeWrapper $out/bin/foo $wrapperfile --prefix PATH : ${lib.makeBinPath [ hello git ]}
870795```
871796
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`.
797+There’s many more kinds of arguments, they are documented in `nixpkgs/pkgs/build-support/setup-hooks/make-wrapper.sh`.
875798
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.
877−
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−```
799+`wrapProgram` is a convenience function you probably want to use most of the time.
890800
891801### `substitute` \<infile\> \<outfile\> \<subs\> {#fun-substitute}
892802
@@ -961,9 +871,9 @@ someVar=$(stripHash $name)
961871
962872### `wrapProgram` \<executable\> \<makeWrapperArgs\> {#fun-wrapProgram}
963873
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).
874+Convenience function for `makeWrapper` that automatically creates a sane wrapper file. It takes all the same arguments as `makeWrapper`, except for `--argv0`.
965875
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.
876+It cannot be applied multiple times, since it will overwrite the wrapper file.
967877
968878## Package setup hooks {#ssec-setup-hooks}
969879
@@ -1097,7 +1007,7 @@ You can also specify a `runtimeDependencies` variable which lists dependencies t
10971007
10981008In 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.
10991009
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.
1010+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.
11011011
11021012The `autoPatchelf` command also recognizes a `--no-recurse` command line flag, which prevents it from recursing into subdirectories.
11031013
@@ -1316,7 +1226,6 @@ If the libraries lack `-fPIE`, you will get the error `recompile with -fPIE`.
13161226
13171227[^footnote-stdenv-ignored-build-platform]: The build platform is ignored because it is a mere implementation detail of the package satisfying the dependency: As a general programming principle, dependencies are always *specified* as interfaces, not concrete implementation.
13181228[^footnote-stdenv-native-dependencies-in-path]: Currently, this means for native builds all dependencies are put on the `PATH`. But in the future that may not be the case for sake of matching cross: the platforms would be assumed to be unique for native and cross builds alike, so only the `depsBuild*` and `nativeBuildInputs` would be added to the `PATH`.
1319−[^footnote-stdenv-propagated-dependencies]: Nix itself already takes a package’s transitive dependencies into account, but this propagation ensures nixpkgs-specific infrastructure like setup hooks (mentioned above) also are run as if the propagated dependency.
13201229[^footnote-stdenv-find-inputs-location]: The `findInputs` function, currently residing in `pkgs/stdenv/generic/setup.sh`, implements the propagation logic.
13211230[^footnote-stdenv-sys-lib-search-path]: It clears the `sys_lib_*search_path` variables in the Libtool script to prevent Libtool from using libraries in `/usr/lib` and such.
13221231[^footnote-stdenv-build-time-guessing-impurity]: Eventually these will be passed building natively as well, to improve determinism: build-time guessing, as is done today, is a risk of impurity.
doc/using/overlays.chapter.md+3−21
@@ -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
@@ -112,28 +112,12 @@ self: super:
112112This overlay uses Intel's MKL library for both BLAS and LAPACK interfaces. Note that the same can be accomplished at runtime using `LD_LIBRARY_PATH` of `libblas.so.3` and `liblapack.so.3`. For instance:
113113
114114```ShellSession
115−$ LD_LIBRARY_PATH=$(nix-build -A mkl)/lib${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH nix-shell -p octave --run octave
115+$ LD_LIBRARY_PATH=$(nix-build -A mkl)/lib:$LD_LIBRARY_PATH nix-shell -p octave --run octave
116116```
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, ... }:
@@ -154,8 +138,6 @@ All programs that are built with [MPI](https://en.wikipedia.org/wiki/Message_Pas
154138
155139- [MPICH](https://www.mpich.org/), attribute name `mpich`
156140
157−- [MVAPICH](https://mvapich.cse.ohio-state.edu/), attribute name `mvapich`
158−
159141To provide MPI enabled applications that use `MPICH`, instead of the default `Open MPI`, simply use the following overlay:
160142
161143```nix
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+41−9
@@ -11,23 +11,55 @@
1111
1212 lib = import ./lib;
1313
14− systems = lib.systems.supported.hydra;
14+ systems = [
15+ "x86_64-linux"
16+ "i686-linux"
17+ "x86_64-darwin"
18+ "aarch64-linux"
19+ "armv6l-linux"
20+ "armv7l-linux"
21+ "aarch64-darwin"
22+ ];
1523
1624 forAllSystems = f: lib.genAttrs systems (system: f system);
1725
1826 in
1927 {
2028 lib = lib.extend (final: prev: {
29+ nixosSystem = { modules, ... } @ args:
30+ import ./nixos/lib/eval-config.nix (args // {
31+ modules =
32+ let
33+ vmConfig = (import ./nixos/lib/eval-config.nix
34+ (args // {
35+ modules = modules ++ [ ./nixos/modules/virtualisation/qemu-vm.nix ];
36+ })).config;
2137
22− nixos = import ./nixos/lib { lib = final; };
38+ vmWithBootLoaderConfig = (import ./nixos/lib/eval-config.nix
39+ (args // {
40+ modules = modules ++ [
41+ ./nixos/modules/virtualisation/qemu-vm.nix
42+ { virtualisation.useBootLoader = true; }
43+ ({ config, ... }: {
44+ virtualisation.useEFIBoot =
45+ config.boot.loader.systemd-boot.enable ||
46+ config.boot.loader.efi.canTouchEfiVariables;
47+ })
48+ ];
49+ })).config;
50+ in
51+ modules ++ [
52+ {
53+ system.nixos.versionSuffix =
54+ ".${final.substring 0 8 (self.lastModifiedDate or self.lastModified or "19700101")}.${self.shortRev or "dirty"}";
55+ system.nixos.revision = final.mkIf (self ? rev) self.rev;
2356
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− } ];
57+ system.build = {
58+ vm = vmConfig.system.build.vm;
59+ vmWithBootLoader = vmWithBootLoaderConfig.system.build.vm;
60+ };
61+ }
62+ ];
3163 });
3264 });
3365
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+29−141
@@ -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) fold concatMap concatLists;
99in
1010
1111rec {
@@ -55,13 +55,10 @@ rec {
5555 => { a = { b = 3; }; }
5656 */
5757 setAttrByPath = attrPath: value:
58− let
59− len = length attrPath;
60− atDepth = n:
61− if n == len
62− then value
63− else { ${elemAt attrPath n} = atDepth (n + 1); };
64− in atDepth 0;
58+ if attrPath == [] then value
59+ else listToAttrs
60+ [ { name = head attrPath; value = setAttrByPath (tail attrPath) value; } ];
61+
6562
6663 /* Like `attrByPath' without a default value. If it doesn't find the
6764 path it will throw.
@@ -73,107 +70,10 @@ rec {
7370 getAttrFromPath ["z" "z"] x
7471 => error: cannot find attribute `z.z'
7572 */
76− getAttrFromPath = attrPath:
73+ getAttrFromPath = attrPath: set:
7774 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
75+ in attrByPath attrPath (abort errorMsg) set;
10176
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;
17777
17878 /* Return the specified attributes from a set.
17979
@@ -251,12 +151,12 @@ rec {
251151 foldAttrs (n: a: [n] ++ a) [] [{ a = 2; } { a = 3; }]
252152 => { a = [ 2 3 ]; }
253153 */
254− foldAttrs = op: nul:
255− foldr (n: a:
256− foldr (name: o:
154+ foldAttrs = op: nul: list_of_attrs:
155+ fold (n: a:
156+ fold (name: o:
257157 o // { ${name} = op n.${name} (a.${name} or nul); }
258158 ) a (attrNames n)
259− ) {};
159+ ) {} list_of_attrs;
260160
261161
262162 /* Recursively collect sets that verify a given predicate named `pred'
@@ -295,7 +195,7 @@ rec {
295195 ]
296196 */
297197 cartesianProductOfSets = attrsOfLists:
298− foldl' (listOfAttrs: attrName:
198+ lib.foldl' (listOfAttrs: attrName:
299199 concatMap (attrs:
300200 map (listValue: attrs // { ${attrName} = listValue; }) attrsOfLists.${attrName}
301201 ) listOfAttrs
@@ -373,7 +273,7 @@ rec {
373273
374274
375275 /* Like `mapAttrsRecursive', but it takes an additional predicate
376− function that tells it whether to recurse into an attribute
276+ function that tells it whether to recursive into an attribute
377277 set. If it returns false, `mapAttrsRecursiveCond' does not
378278 recurse, but does apply the map function. If it returns true, it
379279 does recurse, and does not apply the map function.
@@ -392,14 +292,14 @@ rec {
392292 */
393293 mapAttrsRecursiveCond = cond: f: set:
394294 let
395− recurse = path:
295+ recurse = path: set:
396296 let
397297 g =
398298 name: value:
399299 if isAttrs value && cond value
400300 then recurse (path ++ [name]) value
401301 else f (path ++ [name]) value;
402− in mapAttrs g;
302+ in mapAttrs g set;
403303 in recurse [] set;
404304
405305
@@ -424,7 +324,7 @@ rec {
424324 isDerivation "foobar"
425325 => false
426326 */
427− isDerivation = x: x.type or null == "derivation";
327+ isDerivation = x: isAttrs x && x ? type && x.type == "derivation";
428328
429329 /* Converts a store path to a fake derivation. */
430330 toDerivation = path:
@@ -466,7 +366,7 @@ rec {
466366 value = f name (catAttrs name sets);
467367 }) names);
468368
469− /* Implementation note: Common names appear multiple times in the list of
369+ /* Implementation note: Common names appear multiple times in the list of
470370 names, hopefully this does not affect the system because the maximal
471371 laziness avoid computing twice the same expression and listToAttrs does
472372 not care about duplicated attribute names.
@@ -475,8 +375,7 @@ rec {
475375 zipAttrsWith (name: values: values) [{a = "x";} {a = "y"; b = "z";}]
476376 => { a = ["x" "y"]; b = ["z"] }
477377 */
478− zipAttrsWith =
479− builtins.zipAttrsWith or (f: sets: zipAttrsWithNames (concatMap attrNames sets) f sets);
378+ zipAttrsWith = f: sets: zipAttrsWithNames (concatMap attrNames sets) f sets;
480379 /* Like `zipAttrsWith' with `(name: values: values)' as the function.
481380
482381 Example:
@@ -517,8 +416,8 @@ rec {
517416 let f = attrPath:
518417 zipAttrsWith (n: values:
519418 let here = attrPath ++ [n]; in
520− if length values == 1
521− || pred here (elemAt values 1) (head values) then
419+ if tail values == []
420+ || pred here (head (tail values)) (head values) then
522421 head values
523422 else
524423 f here values
@@ -544,7 +443,10 @@ rec {
544443 }
545444
546445 */
547− recursiveUpdate = recursiveUpdateUntil (path: lhs: rhs: !(isAttrs lhs && isAttrs rhs));
446+ recursiveUpdate = lhs: rhs:
447+ recursiveUpdateUntil (path: lhs: rhs:
448+ !(isAttrs lhs && isAttrs rhs)
449+ ) lhs rhs;
548450
549451 /* Returns true if the pattern is contained in the set. False otherwise.
550452
@@ -553,8 +455,8 @@ rec {
553455 => true
554456 */
555457 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
458+ fold and true (attrValues (zipAttrsWithNames (attrNames pattern) (n: values:
459+ let pat = head values; val = head (tail values); in
558460 if length values == 1 then false
559461 else if isAttrs pat then isAttrs val && matchAttrs pat val
560462 else pat == val
@@ -574,20 +476,6 @@ rec {
574476 overrideExisting = old: new:
575477 mapAttrs (name: value: new.${name} or value) old;
576478
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−
591479 /* Get a package output.
592480 If no output is found, fallback to `.out` and then to the default.
593481
@@ -596,7 +484,7 @@ rec {
596484 => "/nix/store/9rz8gxhzf8sw4kf2j2f1grr49w8zx5vj-openssl-1.0.1r-dev"
597485 */
598486 getOutput = output: pkg:
599− if ! pkg ? outputSpecified || ! pkg.outputSpecified
487+ if pkg.outputUnspecified or false
600488 then pkg.${output} or pkg.out or pkg
601489 else pkg;
602490
lib/customisation.nix+3−50
@@ -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
@@ -199,7 +152,6 @@ rec {
199152 { name = outputName;
200153 value = commonAttrs // {
201154 inherit (drv.${outputName}) type outputName;
202− outputSpecified = true;
203155 drvPath = assert condition; drv.${outputName}.drvPath;
204156 outPath = assert condition; drv.${outputName}.outPath;
205157 };
@@ -207,6 +159,7 @@ rec {
207159
208160 outputsList = map outputToAttrListElement outputs;
209161 in commonAttrs // {
162+ outputUnspecified = true;
210163 drvPath = assert condition; drv.drvPath;
211164 outPath = assert condition; drv.outPath;
212165 };
lib/default.nix+16−26
@@ -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 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
126− mkOptionDefault mkDefault mkImageMediaOverride mkForce mkVMOverride
127− mkFixStrictness mkOrder mkBefore mkAfter mkAliasDefinitions
118+ mkOptionDefault mkDefault mkForce mkVMOverride
119+ mkOrder mkBefore mkAfter mkAliasDefinitions
128120 mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule
129− mkRenamedOptionModule mkRenamedOptionModuleWith
130− mkMergedOptionModule mkChangedOptionModule
131− mkAliasOptionModule mkDerivedConfig doRename;
121+ mkRenamedOptionModule mkMergedOptionModule mkChangedOptionModule
122+ mkAliasOptionModule doRename;
132123 inherit (self.options) isOption mkEnableOption mkSinkUndeclaredOptions
133− mergeDefaultOption mergeOneOption mergeEqualOption mergeUniqueOption
134− getValues getFiles
135− optionAttrSetToDocList optionAttrSetToDocList'
136− scrubOptionValue literalExpression literalExample literalDocBook
137− showOption showFiles unknownModule mkOption mkPackageOption;
124+ mergeDefaultOption mergeOneOption mergeEqualOption getValues
125+ getFiles optionAttrSetToDocList optionAttrSetToDocList'
126+ scrubOptionValue literalExample showOption showFiles
127+ unknownModule mkOption;
138128 inherit (self.types) isType setType defaultTypeMerge defaultFunctor
139129 isOptionType mkOptionType;
140130 inherit (self.asserts)
lib/deprecated.nix+5−5
@@ -77,11 +77,11 @@ rec {
7777 # Output : are reqs satisfied? It's asserted.
7878 checkReqs = attrSet: argList: condList:
7979 (
80− foldr lib.and true
80+ fold lib.and true
8181 (map (x: let name = (head x); in
8282
8383 ((checkFlag attrSet name) ->
84− (foldr lib.and true
84+ (fold lib.and true
8585 (map (y: let val=(getValue attrSet argList y); in
8686 (val!=null) && (val!=false))
8787 (tail x))))) condList));
@@ -177,7 +177,7 @@ rec {
177177 # merge attributes with custom function handling the case that the attribute
178178 # exists in both sets
179179 mergeAttrsWithFunc = f: set1: set2:
180− foldr (n: set: if set ? ${n}
180+ fold (n: set: if set ? ${n}
181181 then setAttr set n (f set.${n} set2.${n})
182182 else set )
183183 (set2 // set1) (attrNames set2);
@@ -196,7 +196,7 @@ rec {
196196 mergeAttrsNoOverride = { mergeLists ? ["buildInputs" "propagatedBuildInputs"],
197197 overrideSnd ? [ "buildPhase" ]
198198 }: attrs1: attrs2:
199− foldr (n: set:
199+ fold (n: set:
200200 setAttr set n ( if set ? ${n}
201201 then # merge
202202 if elem n mergeLists # attribute contains list, merge them by concatenating
@@ -224,7 +224,7 @@ rec {
224224 mergeAttrBy2 = { mergeAttrBy = lib.mergeAttrs; }
225225 // (maybeAttr "mergeAttrBy" {} x)
226226 // (maybeAttr "mergeAttrBy" {} y); in
227− foldr lib.mergeAttrs {} [
227+ fold lib.mergeAttrs {} [
228228 x y
229229 (mapAttrs ( a: v: # merge special names using given functions
230230 if x ? ${a}
lib/fixed-points.nix+5−5
@@ -72,10 +72,10 @@ rec {
7272 # into one where changes made in the first are available in the
7373 # 'super' of the second
7474 composeExtensions =
75− f: g: final: prev:
76− let fApplied = f final prev;
77− prev' = prev // fApplied;
78− in fApplied // g final prev';
75+ f: g: self: super:
76+ let fApplied = f self super;
77+ super' = super // fApplied;
78+ in fApplied // g self super';
7979
8080 # Compose several extending functions of the type expected by 'extends' into
8181 # one where changes made in preceding functions are made available to
@@ -84,7 +84,7 @@ rec {
8484 # composeManyExtensions : [packageSet -> packageSet -> packageSet] -> packageSet -> packageSet -> packageSet
8585 # ^final ^prev ^overrides ^final ^prev ^overrides
8686 composeManyExtensions =
87− lib.foldr (x: y: composeExtensions x y) (final: prev: {});
87+ lib.foldr (x: y: composeExtensions x y) (self: super: {});
8888
8989 # Create an overridable, recursive attribute set. For example:
9090 #
lib/flake.nix+1−1
@@ -1,5 +1,5 @@
11{
22 description = "Library of low-level helper functions for nix expressions.";
33
4− outputs = { self }: { lib = import ./.; };
4+ outputs = { self }: { lib = import ./lib; };
55}
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+5−77
@@ -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 }:
@@ -35,8 +35,6 @@ rec {
3535 ("generators.mkValueStringDefault: " +
3636 "${t} not supported: ${toPretty {} v}");
3737 in if isInt v then toString v
38− # convert derivations to store paths
39− else if lib.isDerivation v then toString v
4038 # we default to not quoting strings
4139 else if isString v then v
4240 # isString returns "1", which is not a good default
@@ -108,7 +106,7 @@ rec {
108106 * The mk* configuration attributes can generically change
109107 * the way sections and key-value strings are generated.
110108 *
111− * For more examples see the test cases in ./tests/misc.nix.
109+ * For more examples see the test cases in ./tests.nix.
112110 */
113111 toINI = {
114112 # apply transformations (e.g. escapes) to section names
@@ -130,51 +128,6 @@ rec {
130128 # map input to ini sections
131129 mapAttrsToStringsSep "\n" mkSection attrsOfAttrs;
132130
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−
178131 /* Generate a git-config file from an attrset.
179132 *
180133 * It has two major differences from the regular INI format:
@@ -216,7 +169,7 @@ rec {
216169 # converts { a.b.c = 5; } to { "a.b".c = 5; } for toINI
217170 gitFlattenAttrs = let
218171 recurse = path: value:
219− if isAttrs value && !lib.isDerivation value then
172+ if isAttrs value then
220173 lib.mapAttrsToList (name: value: recurse ([ name ] ++ path) value) value
221174 else if length path > 1 then {
222175 ${concatStringsSep "." (lib.reverseList (tail path))}.${head path} = value;
@@ -242,30 +195,6 @@ rec {
242195 */
243196 toYAML = {}@args: toJSON args;
244197
245− withRecursion =
246− args@{
247− /* If this option is not null, the given value will stop evaluating at a certain depth */
248− depthLimit
249− /* If this option is true, an error will be thrown, if a certain given depth is exceeded */
250− , throwOnDepthLimit ? true
251− }:
252− assert builtins.isInt depthLimit;
253− let
254− transform = depth:
255− if depthLimit != null && depth > depthLimit then
256− if throwOnDepthLimit
257− then throw "Exceeded maximum eval-depth limit of ${toString depthLimit} while trying to evaluate with `generators.withRecursion'!"
258− else const "<unevaluated>"
259− else id;
260− mapAny = with builtins; depth: v:
261− let
262− evalNext = x: mapAny (depth + 1) (transform (depth + 1) x);
263− in
264− if isAttrs v then mapAttrs (const evalNext) v
265− else if isList v then map evalNext v
266− else transform (depth + 1) v;
267− in
268− mapAny 0;
269198
270199 /* Pretty print a value, akin to `builtins.trace`.
271200 * Should probably be a builtin as well.
@@ -277,8 +206,7 @@ rec {
277206 allowPrettyValues ? false,
278207 /* If this option is true, the output is indented with newlines for attribute sets and lists */
279208 multiline ? true
280− }@args:
281− let
209+ }@args: let
282210 go = indent: v: with builtins;
283211 let isPath = v: typeOf v == "path";
284212 introSpace = if multiline then "\n${indent} " else " ";
@@ -320,7 +248,7 @@ rec {
320248 then v.__pretty v.val
321249 else if v == {} then "{ }"
322250 else if v ? type && v.type == "derivation" then
323− "<derivation ${v.drvPath or "???"}>"
251+ "<derivation ${v.drvPath}>"
324252 else "{" + introSpace
325253 + libStr.concatStringsSep introSpace (libAttr.mapAttrsToList
326254 (name: value:
lib/licenses.nix+142−200
@@ -1,56 +1,44 @@
11{ lib }:
2+let
23
3−lib.mapAttrs (lname: lset: let
4− defaultLicense = rec {
5− shortName = lname;
6− free = true; # Most of our licenses are Free, explicitly declare unfree additions as such!
7− deprecated = false;
8− };
9−
10− mkLicense = licenseDeclaration: let
11− applyDefaults = license: defaultLicense // license;
12− applySpdx = license:
13− if license ? spdxId
14− then license // { url = "https://spdx.org/licenses/${license.spdxId}.html"; }
15− else license;
16− applyRedistributable = license: { redistributable = license.free; } // license;
17− in lib.pipe licenseDeclaration [
18− applyDefaults
19− applySpdx
20− applyRedistributable
21− ];
22−in mkLicense lset) ({
4+ spdx = lic: lic // {
5+ url = "https://spdx.org/licenses/${lic.spdxId}.html";
6+ };
7+
8+in
9+
10+lib.mapAttrs (n: v: v // { shortName = n; }) ({
2311 /* License identifiers from spdx.org where possible.
2412 * If you cannot find your license here, then look for a similar license or
2513 * add it to this list. The URL mentioned above is a good source for inspiration.
2614 */
2715
28− abstyles = {
16+ abstyles = spdx {
2917 spdxId = "Abstyles";
3018 fullName = "Abstyles License";
3119 };
3220
33− afl20 = {
21+ afl20 = spdx {
3422 spdxId = "AFL-2.0";
3523 fullName = "Academic Free License v2.0";
3624 };
3725
38− afl21 = {
26+ afl21 = spdx {
3927 spdxId = "AFL-2.1";
4028 fullName = "Academic Free License v2.1";
4129 };
4230
43− afl3 = {
31+ afl3 = spdx {
4432 spdxId = "AFL-3.0";
4533 fullName = "Academic Free License v3.0";
4634 };
4735
48− agpl3Only = {
36+ agpl3Only = spdx {
4937 spdxId = "AGPL-3.0-only";
5038 fullName = "GNU Affero General Public License v3.0 only";
5139 };
5240
53− agpl3Plus = {
41+ agpl3Plus = spdx {
5442 spdxId = "AGPL-3.0-or-later";
5543 fullName = "GNU Affero General Public License v3.0 or later";
5644 };
@@ -67,12 +55,7 @@ in mkLicense lset) ({
6755 free = false;
6856 };
6957
70− aom = {
71− fullName = "Alliance for Open Media Patent License 1.0";
72− url = "https://aomedia.org/license/patent-license/";
73− };
74−
75− apsl20 = {
58+ apsl20 = spdx {
7659 spdxId = "APSL-2.0";
7760 fullName = "Apple Public Source License 2.0";
7861 };
@@ -82,72 +65,72 @@ in mkLicense lset) ({
8265 url = "https://www.freedesktop.org/wiki/Arphic_Public_License/";
8366 };
8467
85− artistic1 = {
68+ artistic1 = spdx {
8669 spdxId = "Artistic-1.0";
8770 fullName = "Artistic License 1.0";
8871 };
8972
90− artistic2 = {
73+ artistic2 = spdx {
9174 spdxId = "Artistic-2.0";
9275 fullName = "Artistic License 2.0";
9376 };
9477
95− asl20 = {
78+ asl20 = spdx {
9679 spdxId = "Apache-2.0";
9780 fullName = "Apache License 2.0";
9881 };
9982
100− boost = {
83+ boost = spdx {
10184 spdxId = "BSL-1.0";
10285 fullName = "Boost Software License 1.0";
10386 };
10487
105− beerware = {
88+ beerware = spdx {
10689 spdxId = "Beerware";
10790 fullName = "Beerware License";
10891 };
10992
110− blueOak100 = {
93+ blueOak100 = spdx {
11194 spdxId = "BlueOak-1.0.0";
11295 fullName = "Blue Oak Model License 1.0.0";
11396 };
11497
115− bsd0 = {
98+ bsd0 = spdx {
11699 spdxId = "0BSD";
117100 fullName = "BSD Zero Clause License";
118101 };
119102
120− bsd1 = {
103+ bsd1 = spdx {
121104 spdxId = "BSD-1-Clause";
122105 fullName = "BSD 1-Clause License";
123106 };
124107
125− bsd2 = {
108+ bsd2 = spdx {
126109 spdxId = "BSD-2-Clause";
127110 fullName = ''BSD 2-clause "Simplified" License'';
128111 };
129112
130− bsd2Patent = {
113+ bsd2Patent = spdx {
131114 spdxId = "BSD-2-Clause-Patent";
132115 fullName = "BSD-2-Clause Plus Patent License";
133116 };
134117
135− bsd3 = {
118+ bsd3 = spdx {
136119 spdxId = "BSD-3-Clause";
137120 fullName = ''BSD 3-clause "New" or "Revised" License'';
138121 };
139122
140− bsdOriginal = {
123+ bsdOriginal = spdx {
141124 spdxId = "BSD-4-Clause";
142125 fullName = ''BSD 4-clause "Original" or "Old" License'';
143126 };
144127
145− bsdOriginalUC = {
128+ bsdOriginalUC = spdx {
146129 spdxId = "BSD-4-Clause-UC";
147130 fullName = "BSD 4-Clause University of California-Specific";
148131 };
149132
150− bsdProtection = {
133+ bsdProtection = spdx {
151134 spdxId = "BSD-Protection";
152135 fullName = "BSD Protection License";
153136 };
@@ -158,129 +141,119 @@ in mkLicense lset) ({
158141 free = false;
159142 };
160143
161− capec = {
162− fullName = "Common Attack Pattern Enumeration and Classification";
163− url = "https://capec.mitre.org/about/termsofuse.html";
164− };
165−
166− clArtistic = {
144+ clArtistic = spdx {
167145 spdxId = "ClArtistic";
168146 fullName = "Clarified Artistic License";
169147 };
170148
171− cc0 = {
149+ cc0 = spdx {
172150 spdxId = "CC0-1.0";
173151 fullName = "Creative Commons Zero v1.0 Universal";
174152 };
175153
176− cc-by-nc-sa-20 = {
154+ cc-by-nc-sa-20 = spdx {
177155 spdxId = "CC-BY-NC-SA-2.0";
178156 fullName = "Creative Commons Attribution Non Commercial Share Alike 2.0";
179157 free = false;
180158 };
181159
182− cc-by-nc-sa-25 = {
160+ cc-by-nc-sa-25 = spdx {
183161 spdxId = "CC-BY-NC-SA-2.5";
184162 fullName = "Creative Commons Attribution Non Commercial Share Alike 2.5";
185163 free = false;
186164 };
187165
188− cc-by-nc-sa-30 = {
166+ cc-by-nc-sa-30 = spdx {
189167 spdxId = "CC-BY-NC-SA-3.0";
190168 fullName = "Creative Commons Attribution Non Commercial Share Alike 3.0";
191169 free = false;
192170 };
193171
194− cc-by-nc-sa-40 = {
172+ cc-by-nc-sa-40 = spdx {
195173 spdxId = "CC-BY-NC-SA-4.0";
196174 fullName = "Creative Commons Attribution Non Commercial Share Alike 4.0";
197175 free = false;
198176 };
199177
200− cc-by-nc-30 = {
178+ cc-by-nc-30 = spdx {
201179 spdxId = "CC-BY-NC-3.0";
202180 fullName = "Creative Commons Attribution Non Commercial 3.0 Unported";
203181 free = false;
204182 };
205183
206− cc-by-nc-40 = {
184+ cc-by-nc-40 = spdx {
207185 spdxId = "CC-BY-NC-4.0";
208186 fullName = "Creative Commons Attribution Non Commercial 4.0 International";
209187 free = false;
210188 };
211189
212− cc-by-nd-30 = {
190+ cc-by-nd-30 = spdx {
213191 spdxId = "CC-BY-ND-3.0";
214192 fullName = "Creative Commons Attribution-No Derivative Works v3.00";
215193 free = false;
216194 };
217195
218− cc-by-sa-25 = {
196+ cc-by-sa-25 = spdx {
219197 spdxId = "CC-BY-SA-2.5";
220198 fullName = "Creative Commons Attribution Share Alike 2.5";
221199 };
222200
223− cc-by-30 = {
201+ cc-by-30 = spdx {
224202 spdxId = "CC-BY-3.0";
225203 fullName = "Creative Commons Attribution 3.0";
226204 };
227205
228− cc-by-sa-30 = {
206+ cc-by-sa-30 = spdx {
229207 spdxId = "CC-BY-SA-3.0";
230208 fullName = "Creative Commons Attribution Share Alike 3.0";
231209 };
232210
233− cc-by-40 = {
211+ cc-by-40 = spdx {
234212 spdxId = "CC-BY-4.0";
235213 fullName = "Creative Commons Attribution 4.0";
236214 };
237215
238− cc-by-sa-40 = {
216+ cc-by-sa-40 = spdx {
239217 spdxId = "CC-BY-SA-4.0";
240218 fullName = "Creative Commons Attribution Share Alike 4.0";
241219 };
242220
243− cddl = {
221+ cddl = spdx {
244222 spdxId = "CDDL-1.0";
245223 fullName = "Common Development and Distribution License 1.0";
246224 };
247225
248− cecill20 = {
226+ cecill20 = spdx {
249227 spdxId = "CECILL-2.0";
250228 fullName = "CeCILL Free Software License Agreement v2.0";
251229 };
252230
253− cecill21 = {
254− spdxId = "CECILL-2.1";
255− fullName = "CeCILL Free Software License Agreement v2.1";
256− };
257−
258− cecill-b = {
231+ cecill-b = spdx {
259232 spdxId = "CECILL-B";
260233 fullName = "CeCILL-B Free Software License Agreement";
261234 };
262235
263− cecill-c = {
236+ cecill-c = spdx {
264237 spdxId = "CECILL-C";
265238 fullName = "CeCILL-C Free Software License Agreement";
266239 };
267240
268− cpal10 = {
241+ cpal10 = spdx {
269242 spdxId = "CPAL-1.0";
270243 fullName = "Common Public Attribution License 1.0";
271244 };
272245
273− cpl10 = {
246+ cpl10 = spdx {
274247 spdxId = "CPL-1.0";
275248 fullName = "Common Public License 1.0";
276249 };
277250
278− curl = {
251+ curl = spdx {
279252 spdxId = "curl";
280253 fullName = "curl License";
281254 };
282255
283− doc = {
256+ doc = spdx {
284257 spdxId = "DOC";
285258 fullName = "DOC License";
286259 };
@@ -291,12 +264,12 @@ in mkLicense lset) ({
291264 free = false;
292265 };
293266
294− efl10 = {
267+ efl10 = spdx {
295268 spdxId = "EFL-1.0";
296269 fullName = "Eiffel Forum License v1.0";
297270 };
298271
299− efl20 = {
272+ efl20 = spdx {
300273 spdxId = "EFL-2.0";
301274 fullName = "Eiffel Forum License v2.0";
302275 };
@@ -307,12 +280,12 @@ in mkLicense lset) ({
307280 free = false;
308281 };
309282
310− epl10 = {
283+ epl10 = spdx {
311284 spdxId = "EPL-1.0";
312285 fullName = "Eclipse Public License 1.0";
313286 };
314287
315− epl20 = {
288+ epl20 = spdx {
316289 spdxId = "EPL-2.0";
317290 fullName = "Eclipse Public License 2.0";
318291 };
@@ -323,42 +296,42 @@ in mkLicense lset) ({
323296 free = false;
324297 };
325298
326− eupl11 = {
299+ eupl11 = spdx {
327300 spdxId = "EUPL-1.1";
328301 fullName = "European Union Public License 1.1";
329302 };
330303
331− eupl12 = {
304+ eupl12 = spdx {
332305 spdxId = "EUPL-1.2";
333306 fullName = "European Union Public License 1.2";
334307 };
335308
336− fdl11Only = {
309+ fdl11Only = spdx {
337310 spdxId = "GFDL-1.1-only";
338311 fullName = "GNU Free Documentation License v1.1 only";
339312 };
340313
341− fdl11Plus = {
314+ fdl11Plus = spdx {
342315 spdxId = "GFDL-1.1-or-later";
343316 fullName = "GNU Free Documentation License v1.1 or later";
344317 };
345318
346− fdl12Only = {
319+ fdl12Only = spdx {
347320 spdxId = "GFDL-1.2-only";
348321 fullName = "GNU Free Documentation License v1.2 only";
349322 };
350323
351− fdl12Plus = {
324+ fdl12Plus = spdx {
352325 spdxId = "GFDL-1.2-or-later";
353326 fullName = "GNU Free Documentation License v1.2 or later";
354327 };
355328
356− fdl13Only = {
329+ fdl13Only = spdx {
357330 spdxId = "GFDL-1.3-only";
358331 fullName = "GNU Free Documentation License v1.3 only";
359332 };
360333
361− fdl13Plus = {
334+ fdl13Plus = spdx {
362335 spdxId = "GFDL-1.3-or-later";
363336 fullName = "GNU Free Documentation License v1.3 or later";
364337 };
@@ -373,7 +346,7 @@ in mkLicense lset) ({
373346 fullName = "Unspecified free software license";
374347 };
375348
376− ftl = {
349+ ftl = spdx {
377350 spdxId = "FTL";
378351 fullName = "Freetype Project License";
379352 };
@@ -389,27 +362,22 @@ in mkLicense lset) ({
389362 free = false;
390363 };
391364
392− generaluser = {
393− fullName = "GeneralUser GS License v2.0";
394− url = "http://www.schristiancollins.com/generaluser.php"; # license included in sources
395− };
396−
397− gpl1Only = {
365+ gpl1Only = spdx {
398366 spdxId = "GPL-1.0-only";
399367 fullName = "GNU General Public License v1.0 only";
400368 };
401369
402− gpl1Plus = {
370+ gpl1Plus = spdx {
403371 spdxId = "GPL-1.0-or-later";
404372 fullName = "GNU General Public License v1.0 or later";
405373 };
406374
407− gpl2Only = {
375+ gpl2Only = spdx {
408376 spdxId = "GPL-2.0-only";
409377 fullName = "GNU General Public License v2.0 only";
410378 };
411379
412− gpl2Classpath = {
380+ gpl2Classpath = spdx {
413381 spdxId = "GPL-2.0-with-classpath-exception";
414382 fullName = "GNU General Public License v2.0 only (with Classpath exception)";
415383 };
@@ -424,17 +392,17 @@ in mkLicense lset) ({
424392 url = "https://www.mysql.com/about/legal/licensing/foss-exception";
425393 };
426394
427− gpl2Plus = {
395+ gpl2Plus = spdx {
428396 spdxId = "GPL-2.0-or-later";
429397 fullName = "GNU General Public License v2.0 or later";
430398 };
431399
432− gpl3Only = {
400+ gpl3Only = spdx {
433401 spdxId = "GPL-3.0-only";
434402 fullName = "GNU General Public License v3.0 only";
435403 };
436404
437− gpl3Plus = {
405+ gpl3Plus = spdx {
438406 spdxId = "GPL-3.0-or-later";
439407 fullName = "GNU General Public License v3.0 or later";
440408 };
@@ -444,12 +412,12 @@ in mkLicense lset) ({
444412 url = "https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception";
445413 };
446414
447− hpnd = {
415+ hpnd = spdx {
448416 spdxId = "HPND";
449417 fullName = "Historic Permission Notice and Disclaimer";
450418 };
451419
452− hpndSellVariant = {
420+ hpndSellVariant = spdx {
453421 fullName = "Historical Permission Notice and Disclaimer - sell variant";
454422 spdxId = "HPND-sell-variant";
455423 };
@@ -460,44 +428,39 @@ in mkLicense lset) ({
460428 url = "https://old.calculate-linux.org/packages/licenses/iASL";
461429 };
462430
463− ijg = {
431+ ijg = spdx {
464432 spdxId = "IJG";
465433 fullName = "Independent JPEG Group License";
466434 };
467435
468− imagemagick = {
436+ imagemagick = spdx {
469437 fullName = "ImageMagick License";
470438 spdxId = "imagemagick";
471439 };
472440
473− imlib2 = {
474− spdxId = "Imlib2";
475− fullName = "Imlib2 License";
476− };
477−
478441 inria-compcert = {
479442 fullName = "INRIA Non-Commercial License Agreement for the CompCert verified compiler";
480− url = "https://compcert.org/doc/LICENSE.txt";
443+ url = "http://compcert.inria.fr/doc/LICENSE"; # https is broken
481444 free = false;
482445 };
483446
484447 inria-icesl = {
485448 fullName = "INRIA Non-Commercial License Agreement for IceSL";
486− url = "https://icesl.loria.fr/assets/pdf/EULA_IceSL_binary.pdf";
449+ url = "http://shapeforge.loria.fr/icesl/EULA_IceSL_binary.pdf"; # https is broken
487450 free = false;
488451 };
489452
490− ipa = {
453+ ipa = spdx {
491454 spdxId = "IPA";
492455 fullName = "IPA Font License";
493456 };
494457
495− ipl10 = {
458+ ipl10 = spdx {
496459 spdxId = "IPL-1.0";
497460 fullName = "IBM Public License v1.0";
498461 };
499462
500− isc = {
463+ isc = spdx {
501464 spdxId = "ISC";
502465 fullName = "ISC License";
503466 };
@@ -515,52 +478,52 @@ in mkLicense lset) ({
515478 free = false;
516479 };
517480
518− lgpl2Only = {
481+ lgpl2Only = spdx {
519482 spdxId = "LGPL-2.0-only";
520483 fullName = "GNU Library General Public License v2 only";
521484 };
522485
523− lgpl2Plus = {
486+ lgpl2Plus = spdx {
524487 spdxId = "LGPL-2.0-or-later";
525488 fullName = "GNU Library General Public License v2 or later";
526489 };
527490
528− lgpl21Only = {
491+ lgpl21Only = spdx {
529492 spdxId = "LGPL-2.1-only";
530493 fullName = "GNU Lesser General Public License v2.1 only";
531494 };
532495
533− lgpl21Plus = {
496+ lgpl21Plus = spdx {
534497 spdxId = "LGPL-2.1-or-later";
535498 fullName = "GNU Lesser General Public License v2.1 or later";
536499 };
537500
538− lgpl3Only = {
501+ lgpl3Only = spdx {
539502 spdxId = "LGPL-3.0-only";
540503 fullName = "GNU Lesser General Public License v3.0 only";
541504 };
542505
543− lgpl3Plus = {
506+ lgpl3Plus = spdx {
544507 spdxId = "LGPL-3.0-or-later";
545508 fullName = "GNU Lesser General Public License v3.0 or later";
546509 };
547510
548− lgpllr = {
511+ lgpllr = spdx {
549512 spdxId = "LGPLLR";
550513 fullName = "Lesser General Public License For Linguistic Resources";
551514 };
552515
553− libpng = {
516+ libpng = spdx {
554517 spdxId = "Libpng";
555518 fullName = "libpng License";
556519 };
557520
558− libpng2 = {
521+ libpng2 = spdx {
559522 spdxId = "libpng-2.0"; # Used since libpng 1.6.36.
560523 fullName = "PNG Reference Library version 2";
561524 };
562525
563− libtiff = {
526+ libtiff = spdx {
564527 spdxId = "libtiff";
565528 fullName = "libtiff License";
566529 };
@@ -570,22 +533,22 @@ in mkLicense lset) ({
570533 url = "https://opensource.franz.com/preamble.html";
571534 };
572535
573− llvm-exception = {
536+ llvm-exception = spdx {
574537 spdxId = "LLVM-exception";
575538 fullName = "LLVM Exception"; # LLVM exceptions to the Apache 2.0 License
576539 };
577540
578− lppl12 = {
541+ lppl12 = spdx {
579542 spdxId = "LPPL-1.2";
580543 fullName = "LaTeX Project Public License v1.2";
581544 };
582545
583− lppl13c = {
546+ lppl13c = spdx {
584547 spdxId = "LPPL-1.3c";
585548 fullName = "LaTeX Project Public License v1.3c";
586549 };
587550
588− lpl-102 = {
551+ lpl-102 = spdx {
589552 spdxId = "LPL-1.02";
590553 fullName = "Lucent Public License v1.02";
591554 };
@@ -597,58 +560,43 @@ in mkLicense lset) ({
597560
598561 # spdx.org does not (yet) differentiate between the X11 and Expat versions
599562 # for details see https://en.wikipedia.org/wiki/MIT_License#Various_versions
600− mit = {
563+ mit = spdx {
601564 spdxId = "MIT";
602565 fullName = "MIT License";
603566 };
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− };
619567
620− mpl10 = {
568+ mpl10 = spdx {
621569 spdxId = "MPL-1.0";
622570 fullName = "Mozilla Public License 1.0";
623571 };
624572
625− mpl11 = {
573+ mpl11 = spdx {
626574 spdxId = "MPL-1.1";
627575 fullName = "Mozilla Public License 1.1";
628576 };
629577
630− mpl20 = {
578+ mpl20 = spdx {
631579 spdxId = "MPL-2.0";
632580 fullName = "Mozilla Public License 2.0";
633581 };
634582
635− mspl = {
583+ mspl = spdx {
636584 spdxId = "MS-PL";
637585 fullName = "Microsoft Public License";
638586 };
639587
640− nasa13 = {
588+ nasa13 = spdx {
641589 spdxId = "NASA-1.3";
642590 fullName = "NASA Open Source Agreement 1.3";
643591 free = false;
644592 };
645593
646− ncsa = {
594+ ncsa = spdx {
647595 spdxId = "NCSA";
648596 fullName = "University of Illinois/NCSA Open Source License";
649597 };
650598
651− nposl3 = {
599+ nposl3 = spdx {
652600 spdxId = "NPOSL-3.0";
653601 fullName = "Non-Profit Open Software License 3.0";
654602 };
@@ -665,53 +613,53 @@ in mkLicense lset) ({
665613 free = false;
666614 };
667615
668− odbl = {
616+ odbl = spdx {
669617 spdxId = "ODbL-1.0";
670618 fullName = "Open Data Commons Open Database License v1.0";
671619 };
672620
673− ofl = {
621+ ofl = spdx {
674622 spdxId = "OFL-1.1";
675623 fullName = "SIL Open Font License 1.1";
676624 };
677625
678− openldap = {
626+ openldap = spdx {
679627 spdxId = "OLDAP-2.8";
680628 fullName = "Open LDAP Public License v2.8";
681629 };
682630
683− openssl = {
631+ openssl = spdx {
684632 spdxId = "OpenSSL";
685633 fullName = "OpenSSL License";
686634 };
687635
688− osl2 = {
636+ osl2 = spdx {
689637 spdxId = "OSL-2.0";
690638 fullName = "Open Software License 2.0";
691639 };
692640
693− osl21 = {
641+ osl21 = spdx {
694642 spdxId = "OSL-2.1";
695643 fullName = "Open Software License 2.1";
696644 };
697645
698− osl3 = {
646+ osl3 = spdx {
699647 spdxId = "OSL-3.0";
700648 fullName = "Open Software License 3.0";
701649 };
702650
703− parity70 = {
651+ parity70 = spdx {
704652 spdxId = "Parity-7.0.0";
705653 fullName = "Parity Public License 7.0.0";
706654 url = "https://paritylicense.com/versions/7.0.0.html";
707655 };
708656
709− php301 = {
657+ php301 = spdx {
710658 spdxId = "PHP-3.01";
711659 fullName = "PHP License v3.01";
712660 };
713661
714− postgresql = {
662+ postgresql = spdx {
715663 spdxId = "PostgreSQL";
716664 fullName = "PostgreSQL License";
717665 };
@@ -722,7 +670,7 @@ in mkLicense lset) ({
722670 free = false;
723671 };
724672
725− psfl = {
673+ psfl = spdx {
726674 spdxId = "Python-2.0";
727675 fullName = "Python Software Foundation License version 2";
728676 url = "https://docs.python.org/license.html";
@@ -743,12 +691,12 @@ in mkLicense lset) ({
743691 url = "https://prosperitylicense.com/versions/3.0.0.html";
744692 };
745693
746− qhull = {
694+ qhull = spdx {
747695 spdxId = "Qhull";
748696 fullName = "Qhull License";
749697 };
750698
751− qpl = {
699+ qpl = spdx {
752700 spdxId = "QPL-1.0";
753701 fullName = "Q Public License 1.0";
754702 };
@@ -758,22 +706,22 @@ in mkLicense lset) ({
758706 url = "https://qwt.sourceforge.io/qwtlicense.html";
759707 };
760708
761− ruby = {
709+ ruby = spdx {
762710 spdxId = "Ruby";
763711 fullName = "Ruby License";
764712 };
765713
766− sendmail = {
714+ sendmail = spdx {
767715 spdxId = "Sendmail";
768716 fullName = "Sendmail License";
769717 };
770718
771− sgi-b-20 = {
719+ sgi-b-20 = spdx {
772720 spdxId = "SGI-B-2.0";
773721 fullName = "SGI Free Software License B v2.0";
774722 };
775723
776− sleepycat = {
724+ sleepycat = spdx {
777725 spdxId = "Sleepycat";
778726 fullName = "Sleepycat License";
779727 };
@@ -789,10 +737,6 @@ in mkLicense lset) ({
789737 fullName = "Server Side Public License";
790738 url = "https://www.mongodb.com/licensing/server-side-public-license";
791739 free = false;
792− # NOTE Debatable.
793− # The license a slightly modified AGPL but still considered unfree by the
794− # OSI for what seem like political reasons
795− redistributable = true; # Definitely redistributable though, it's an AGPL derivative
796740 };
797741
798742 stk = {
@@ -801,7 +745,7 @@ in mkLicense lset) ({
801745 url = "https://github.com/thestk/stk/blob/master/LICENSE";
802746 };
803747
804− tcltk = {
748+ tcltk = spdx {
805749 spdxId = "TCL";
806750 fullName = "TCL/TK License";
807751 };
@@ -819,27 +763,25 @@ in mkLicense lset) ({
819763 unfreeRedistributable = {
820764 fullName = "Unfree redistributable";
821765 free = false;
822− redistributable = true;
823766 };
824767
825768 unfreeRedistributableFirmware = {
826769 fullName = "Unfree redistributable firmware";
827− redistributable = true;
828770 # Note: we currently consider these "free" for inclusion in the
829771 # channel and NixOS images.
830772 };
831773
832− unicode-dfs-2015 = {
774+ unicode-dfs-2015 = spdx {
833775 spdxId = "Unicode-DFS-2015";
834776 fullName = "Unicode License Agreement - Data Files and Software (2015)";
835777 };
836778
837− unicode-dfs-2016 = {
779+ unicode-dfs-2016 = spdx {
838780 spdxId = "Unicode-DFS-2016";
839781 fullName = "Unicode License Agreement - Data Files and Software (2016)";
840782 };
841783
842− unlicense = {
784+ unlicense = spdx {
843785 spdxId = "Unlicense";
844786 fullName = "The Unlicense";
845787 };
@@ -849,7 +791,7 @@ in mkLicense lset) ({
849791 url = "https://oss.oracle.com/licenses/upl/";
850792 };
851793
852− vim = {
794+ vim = spdx {
853795 spdxId = "Vim";
854796 fullName = "Vim License";
855797 };
@@ -860,17 +802,17 @@ in mkLicense lset) ({
860802 free = false;
861803 };
862804
863− vsl10 = {
805+ vsl10 = spdx {
864806 spdxId = "VSL-1.0";
865807 fullName = "Vovida Software License v1.0";
866808 };
867809
868− watcom = {
810+ watcom = spdx {
869811 spdxId = "Watcom-1.0";
870812 fullName = "Sybase Open Watcom Public License 1.0";
871813 };
872814
873− w3c = {
815+ w3c = spdx {
874816 spdxId = "W3C";
875817 fullName = "W3C Software Notice and License";
876818 };
@@ -880,12 +822,12 @@ in mkLicense lset) ({
880822 url = "https://fedoraproject.org/wiki/Licensing:Wadalab?rd=Licensing/Wadalab";
881823 };
882824
883− wtfpl = {
825+ wtfpl = spdx {
884826 spdxId = "WTFPL";
885827 fullName = "Do What The F*ck You Want To Public License";
886828 };
887829
888− wxWindows = {
830+ wxWindows = spdx {
889831 spdxId = "wxWindows";
890832 fullName = "wxWindows Library Licence, Version 3.1";
891833 };
@@ -895,68 +837,68 @@ in mkLicense lset) ({
895837 url = "http://mcj.sourceforge.net/authors.html#xfig"; # https is broken
896838 };
897839
898− zlib = {
840+ zlib = spdx {
899841 spdxId = "Zlib";
900842 fullName = "zlib License";
901843 };
902844
903− zpl20 = {
845+ zpl20 = spdx {
904846 spdxId = "ZPL-2.0";
905847 fullName = "Zope Public License 2.0";
906848 };
907849
908− zpl21 = {
850+ zpl21 = spdx {
909851 spdxId = "ZPL-2.1";
910852 fullName = "Zope Public License 2.1";
911853 };
912854} // {
913855 # TODO: remove legacy aliases
914− agpl3 = {
856+ agpl3 = spdx {
915857 spdxId = "AGPL-3.0";
916858 fullName = "GNU Affero General Public License v3.0";
917859 deprecated = true;
918860 };
919− fdl11 = {
861+ fdl11 = spdx {
920862 spdxId = "GFDL-1.1";
921863 fullName = "GNU Free Documentation License v1.1";
922864 deprecated = true;
923865 };
924− fdl12 = {
866+ fdl12 = spdx {
925867 spdxId = "GFDL-1.2";
926868 fullName = "GNU Free Documentation License v1.2";
927869 deprecated = true;
928870 };
929− fdl13 = {
871+ fdl13 = spdx {
930872 spdxId = "GFDL-1.3";
931873 fullName = "GNU Free Documentation License v1.3";
932874 deprecated = true;
933875 };
934− gpl1 = {
876+ gpl1 = spdx {
935877 spdxId = "GPL-1.0";
936878 fullName = "GNU General Public License v1.0";
937879 deprecated = true;
938880 };
939− gpl2 = {
881+ gpl2 = spdx {
940882 spdxId = "GPL-2.0";
941883 fullName = "GNU General Public License v2.0";
942884 deprecated = true;
943885 };
944− gpl3 = {
886+ gpl3 = spdx {
945887 spdxId = "GPL-3.0";
946888 fullName = "GNU General Public License v3.0";
947889 deprecated = true;
948890 };
949− lgpl2 = {
891+ lgpl2 = spdx {
950892 spdxId = "LGPL-2.0";
951893 fullName = "GNU Library General Public License v2";
952894 deprecated = true;
953895 };
954− lgpl21 = {
896+ lgpl21 = spdx {
955897 spdxId = "LGPL-2.1";
956898 fullName = "GNU Lesser General Public License v2.1";
957899 deprecated = true;
958900 };
959− lgpl3 = {
901+ lgpl3 = spdx {
960902 spdxId = "LGPL-3.0";
961903 fullName = "GNU Lesser General Public License v3.0";
962904 deprecated = true;
lib/lists.nix+13−11
@@ -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
@@ -643,7 +642,7 @@ rec {
643642 unique [ 3 2 3 4 ]
644643 => [ 3 2 4 ]
645644 */
646− unique = foldl' (acc: e: if elem e acc then acc else acc ++ [ e ]) [];
645+ unique = foldl' (acc: e: if elem e acc then acc else acc ++ [ e ]) [];
647646
648647 /* Intersects list 'e' and another list. O(nm) complexity.
649648
@@ -664,6 +663,9 @@ rec {
664663 /* Test if two lists have no common element.
665664 It should be slightly more efficient than (intersectLists a b == [])
666665 */
667− mutuallyExclusive = a: b: length a == 0 || !(any (x: elem x a) b);
666+ mutuallyExclusive = a: b:
667+ (builtins.length a) == 0 ||
668+ (!(builtins.elem (builtins.head a) b) &&
669+ mutuallyExclusive (builtins.tail a) b);
668670
669671}
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+89−342
@@ -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,63 +47,20 @@ 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 {
6854
69− /*
70− Evaluate a set of modules. The result is a set with the attributes:
71−
72− ‘options’: The nested set of all option declarations,
73−
74− ‘config’: The nested set of all option values.
75−
76− ‘type’: A module system type representing the module set as a submodule,
77− to be extended by configuration from the containing module set.
78−
79− This is also available as the module argument ‘moduleType’.
80−
81− ‘extendModules’: A function similar to ‘evalModules’ but building on top
82− of the module set. Its arguments, ‘modules’ and ‘specialArgs’ are
83− added to the existing values.
84−
85− Using ‘extendModules’ a few times has no performance impact as long
86− as you only reference the final ‘options’ and ‘config’.
87− If you do reference multiple ‘config’ (or ‘options’) from before and
88− after ‘extendModules’, performance is the same as with multiple
89− ‘evalModules’ invocations, because the new modules' ability to
90− override existing configuration fundamentally requires a new
91− fixpoint to be constructed.
92−
93− This is also available as a module argument.
94−
95− ‘_module’: A portion of the configuration tree which is elided from
96− ‘config’. It contains some values that are mostly internal to the
97− module system implementation.
98−
55+ /* Evaluate a set of modules. The result is a set of two
56+ attributes: ‘options’: the nested set of all option declarations,
57+ and ‘config’: the nested set of all option values.
9958 !!! Please think twice before adding to this argument list! The more
10059 that is specified here instead of in the modules themselves the harder
10160 it is to transparently move a set of modules to be a submodule of another
10261 config (as the proper arguments need to be replicated at each call to
10362 evalModules) and the less declarative the module set is. */
104− evalModules = evalModulesArgs@
105− { modules
63+ evalModules = { modules
10664 , prefix ? []
10765 , # This should only be used for special arguments that need to be evaluated
10866 # when resolving module structure (like in imports). For everything else,
@@ -113,39 +71,13 @@ rec {
11371 args ? {}
11472 , # This would be remove in the future, Prefer _module.check option instead.
11573 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
12074 }:
12175 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−
14076 # This internal module declare internal options under the `_module'
14177 # attribute. These options are fragile, as they are used by the
14278 # 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.
14779 internalModule = rec {
148− _file = "lib/modules.nix";
80+ _file = ./modules.nix;
14981
15082 key = _file;
15183
@@ -157,106 +89,21 @@ rec {
15789 # support for that, in turn it's lazy in its values. This means e.g.
15890 # a `_module.args.pkgs = import (fetchTarball { ... }) {}` won't
15991 # 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− '';
92+ type = types.lazyAttrsOf types.unspecified;
93+ internal = true;
94+ description = "Arguments passed to each module.";
24995 };
25096
25197 _module.check = mkOption {
25298 type = types.bool;
25399 internal = true;
254− default = true;
100+ default = check;
255101 description = "Whether to check whether all option definitions have matching declarations.";
256102 };
257103
258104 _module.freeformType = mkOption {
259− type = types.nullOr types.optionType;
105+ # Disallow merging for now, but could be implemented nicely with a `types.optionType`
106+ type = types.nullOr (types.uniq types.attrs);
260107 internal = true;
261108 default = null;
262109 description = ''
@@ -273,17 +120,14 @@ rec {
273120 };
274121
275122 config = {
276− _module.args = {
277− inherit extendModules;
278− moduleType = type;
279− };
123+ _module.args = args;
280124 };
281125 };
282126
283127 merged =
284128 let collected = collectModules
285129 (specialArgs.modulesPath or "")
286− (regularModules ++ [ internalModule ])
130+ (modules ++ [ internalModule ])
287131 ({ inherit lib options config specialArgs; } // specialArgs);
288132 in mergeModules prefix (reverseList collected);
289133
@@ -318,51 +162,20 @@ rec {
318162 baseMsg = "The option `${showOption (prefix ++ firstDef.prefix)}' does not exist. Definition values:${showDefs [ firstDef ]}";
319163 in
320164 if attrNames options == [ "_module" ]
321− then
322− let
323− optionName = showOption prefix;
324− in
325− if optionName == ""
326− then throw ''
327− ${baseMsg}
328−
329− It seems as if you're trying to declare an option by placing it into `config' rather than `options'!
330− ''
331− else
332− throw ''
333− ${baseMsg}
334−
335− However there are no options defined in `${showOption prefix}'. Are you sure you've
336− declared your options properly? This can happen if you e.g. declared your options in `types.submodule'
337− under `config' rather than `options'.
338− ''
165+ then throw ''
166+ ${baseMsg}
167+
168+ However there are no options defined in `${showOption prefix}'. Are you sure you've
169+ declared your options properly? This can happen if you e.g. declared your options in `types.submodule'
170+ under `config' rather than `options'.
171+ ''
339172 else throw baseMsg
340173 else null;
341174
342− checked = builtins.seq checkUnmatched;
343−
344− extendModules = extendArgs@{
345− modules ? [],
346− specialArgs ? {},
347− prefix ? [],
348− extensionOffset ? length modules,
349− }:
350− evalModules (evalModulesArgs // {
351− modules = regularModules ++ modules;
352− specialArgs = evalModulesArgs.specialArgs or {} // specialArgs;
353− prefix = extendArgs.prefix or evalModulesArgs.prefix;
354− inherit extensionOffset;
355− });
356−
357− type = lib.types.submoduleWith {
358− inherit modules specialArgs extensionOffset;
359− };
360−
361− result = withWarnings {
362− options = checked options;
363− config = checked (removeAttrs config [ "_module" ]);
364− _module = checked (config._module);
365− inherit extendModules type;
175+ result = builtins.seq checkUnmatched {
176+ inherit options;
177+ config = removeAttrs config [ "_module" ];
178+ inherit (config) _module;
366179 };
367180 in result;
368181
@@ -375,11 +188,11 @@ rec {
375188 # Like unifyModuleSyntax, but also imports paths and calls functions if necessary
376189 loadModule = args: fallbackFile: fallbackKey: m:
377190 if isFunction m || isAttrs m then
378− unifyModuleSyntax fallbackFile fallbackKey (applyModuleArgsIfFunction fallbackKey m args)
191+ unifyModuleSyntax fallbackFile fallbackKey (applyIfFunction fallbackKey m args)
379192 else if isList m then
380193 let defs = [{ file = fallbackFile; value = m; }]; in
381194 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);
195+ else unifyModuleSyntax (toString m) (toString m) (applyIfFunction (toString m) (import m) args);
383196
384197 /*
385198 Collects all modules recursively into the form
@@ -440,10 +253,6 @@ rec {
440253 in modulesPath: initialModules: args:
441254 filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args);
442255
443− /* Wrap a module with a default location for reporting errors. */
444− setDefaultModuleLocation = file: m:
445− { _file = file; imports = [ m ]; };
446−
447256 /* Massage a module into canonical form, that is, a set consisting
448257 of ‘options’, ‘config’ and ‘imports’ attributes. */
449258 unifyModuleSyntax = file: key: m:
@@ -476,7 +285,7 @@ rec {
476285 config = addFreeformType (addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports" "freeformType"]));
477286 };
478287
479− applyModuleArgsIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
288+ applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
480289 let
481290 # Module arguments are resolved in a strict manner when attribute set
482291 # deconstruction is used. As the arguments are now defined with the
@@ -553,11 +362,10 @@ rec {
553362 }
554363 */
555364 byName = attr: f: modules:
556− zipAttrsWith (n: concatLists)
557− (map (module: let subtree = module.${attr}; in
558− if !(builtins.isAttrs subtree) then
365+ foldl' (acc: module:
366+ if !(builtins.isAttrs module.${attr}) then
559367 throw ''
560− You're trying to declare a value of type `${builtins.typeOf subtree}'
368+ You're trying to declare a value of type `${builtins.typeOf module.${attr}}'
561369 rather than an attribute-set for the option
562370 `${builtins.concatStringsSep "." prefix}'!
563371
@@ -566,8 +374,11 @@ rec {
566374 this option by e.g. referring to `man 5 configuration.nix'!
567375 ''
568376 else
569− mapAttrs (n: f module) subtree
570− ) modules);
377+ acc // (mapAttrs (n: v:
378+ (acc.${n} or []) ++ f module v
379+ ) module.${attr}
380+ )
381+ ) {} modules;
571382 # an attrset 'name' => list of submodules that declare ‘name’.
572383 declsByName = byName "options" (module: option:
573384 [{ inherit (module) _file; options = option; }]
@@ -581,63 +392,28 @@ rec {
581392 [{ inherit (module) file; inherit value; }]
582393 ) configs;
583394
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:
395+ resultsByName = flip mapAttrs declsByName (name: decls:
601396 # We're descending into attribute ‘name’.
602397 let
603398 loc = prefix ++ [name];
604399 defns = defnsByName.${name} or [];
605400 defns' = defnsByName'.${name} or [];
606− optionDecls = filter (m: isOption m.options) decls;
401+ nrOptions = count (m: isOption m.options) decls;
607402 in
608− if length optionDecls == length decls then
403+ if nrOptions == length decls then
609404 let opt = fixupOptionType loc (mergeOptionDecls loc decls);
610405 in {
611406 matchedOptions = evalOptionValue loc opt defns';
612407 unmatchedDefns = [];
613408 }
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− }"
409+ else if nrOptions != 0 then
410+ let
411+ firstOption = findFirst (m: isOption m.options) "" decls;
412+ firstNonOption = findFirst (m: !isOption m.options) "" decls;
413+ in
414+ throw "The option `${showOption loc}' in `${firstOption._file}' is a prefix of options in `${firstNonOption._file}'."
639415 else
640− mergeModules' loc decls defns) declsByName;
416+ mergeModules' loc decls defns);
641417
642418 matchedOptions = mapAttrs (n: v: v.matchedOptions) resultsByName;
643419
@@ -651,19 +427,12 @@ rec {
651427 inherit matchedOptions;
652428
653429 # 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);
430+ unmatchedDefns = concatLists (mapAttrsToList (name: defs:
431+ map (def: def // {
432+ # Set this so we know when the definition first left unmatched territory
433+ prefix = [name] ++ (def.prefix or []);
434+ }) defs
435+ ) unmatchedDefnsByName);
667436 };
668437
669438 /* Merge multiple option declarations into a single declaration. In
@@ -679,9 +448,11 @@ rec {
679448 correspond to the definition of 'loc' in 'opt.file'. */
680449 mergeOptionDecls =
681450 let
451+ packSubmodule = file: m:
452+ { _file = file; imports = [ m ]; };
682453 coerceOption = file: opt:
683− if isFunction opt then setDefaultModuleLocation file opt
684− else setDefaultModuleLocation file { options = opt; };
454+ if isFunction opt then packSubmodule file opt
455+ else packSubmodule file { options = opt; };
685456 in loc: opts:
686457 foldl' (res: opt:
687458 let t = res.type;
@@ -702,9 +473,17 @@ rec {
702473 throw "The option `${showOption loc}' in `${opt._file}' is already declared in ${showFiles res.declarations}."
703474 else
704475 let
476+ /* Add the modules of the current option to the list of modules
477+ already collected. The options attribute except either a list of
478+ submodules or a submodule. For each submodule, we add the file of the
479+ current option declaration as the file use for the submodule. If the
480+ submodule defines any filename, then we ignore the enclosing option file. */
481+ options' = toList opt.options.options;
482+
705483 getSubModules = opt.options.type.getSubModules or null;
706484 submodules =
707− if getSubModules != null then map (setDefaultModuleLocation opt._file) getSubModules ++ res.options
485+ if getSubModules != null then map (packSubmodule opt._file) getSubModules ++ res.options
486+ else if opt.options ? options then map (coerceOption opt._file) options' ++ res.options
708487 else res.options;
709488 in opt.options // res //
710489 { declarations = res.declarations ++ [opt._file];
@@ -748,8 +527,6 @@ rec {
748527 definitions = map (def: def.value) res.defsFinal;
749528 files = map (def: def.file) res.defsFinal;
750529 inherit (res) isDefined;
751− # This allows options to be correctly displayed using `${options.path.to.it}`
752− __toString = _: showOption loc;
753530 };
754531
755532 # Merge definitions of a value of a given type.
@@ -887,13 +664,26 @@ rec {
887664 compare = a: b: (a.priority or 1000) < (b.priority or 1000);
888665 in sort compare defs';
889666
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
667+ /* Hack for backward compatibility: convert options of type
668+ optionSet to options of type submodule. FIXME: remove
669+ eventually. */
893670 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 = []; };
671+ let
672+ options = opt.options or
673+ (throw "Option `${showOption loc}' has type optionSet but has no option attribute, in ${showFiles opt.declarations}.");
674+ f = tp:
675+ let optionSetIn = type: (tp.name == type) && (tp.functor.wrapped.name == "optionSet");
676+ in
677+ if tp.name == "option set" || tp.name == "submodule" then
678+ throw "The option ${showOption loc} uses submodules without a wrapping type, in ${showFiles opt.declarations}."
679+ else if optionSetIn "attrsOf" then types.attrsOf (types.submodule options)
680+ else if optionSetIn "listOf" then types.listOf (types.submodule options)
681+ else if optionSetIn "nullOr" then types.nullOr (types.submodule options)
682+ else tp;
683+ in
684+ if opt.type.getSubModules or null == null
685+ then opt // { type = f (opt.type or types.unspecified); }
686+ else opt // { type = opt.type.substSubModules opt.options; options = []; };
897687
898688
899689 /* Properties. */
@@ -920,12 +710,9 @@ rec {
920710
921711 mkOptionDefault = mkOverride 1500; # priority of option defaults
922712 mkDefault = mkOverride 1000; # used in config sections of non-user modules to set a default
923− mkImageMediaOverride = mkOverride 60; # image media profiles can be derived by inclusion into host config, hence needing to override host config, but do allow user to mkForce
924713 mkForce = mkOverride 50;
925714 mkVMOverride = mkOverride 10; # used by ‘nixos-rebuild build-vm’
926715
927− mkFixStrictness = lib.warn "lib.mkFixStrictness has no effect and will be removed. It returns its argument unmodified, so you can just remove any calls." id;
928−
929716 mkOrder = priority: content:
930717 { _type = "order";
931718 inherit priority content;
@@ -1025,26 +812,6 @@ rec {
1025812 use = builtins.trace "Obsolete option `${showOption from}' is used. It was renamed to `${showOption to}'.";
1026813 };
1027814
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−
1048815 /* Return a module that causes a warning to be shown if any of the "from"
1049816 option is defined; the defined values can be used in the "mergeFn" to set
1050817 the "to" value.
@@ -1076,7 +843,7 @@ rec {
1076843 mkMergedOptionModule = from: to: mergeFn:
1077844 { config, options, ... }:
1078845 {
1079− options = foldl' recursiveUpdate {} (map (path: setAttrByPath path (mkOption {
846+ options = foldl recursiveUpdate {} (map (path: setAttrByPath path (mkOption {
1080847 visible = false;
1081848 # To use the value in mergeFn without triggering errors
1082849 default = "_mkMergedOptionModule";
@@ -1131,26 +898,6 @@ rec {
1131898 use = id;
1132899 };
1133900
1134− /* mkDerivedConfig : Option a -> (a -> Definition b) -> Definition b
1135−
1136− Create config definitions with the same priority as the definition of another option.
1137− This should be used for option definitions where one option sets the value of another as a convenience.
1138− For instance a config file could be set with a `text` or `source` option, where text translates to a `source`
1139− value using `mkDerivedConfig options.text (pkgs.writeText "filename.conf")`.
1140−
1141− It takes care of setting the right priority using `mkOverride`.
1142− */
1143− # TODO: make the module system error message include information about `opt` in
1144− # error messages about conflicts. E.g. introduce a variation of `mkOverride` which
1145− # adds extra location context to the definition object. This will allow context to be added
1146− # to all messages that report option locations "this value was derived from <full option name>
1147− # which was defined in <locations>". It can provide a trace of options that contributed
1148− # to definitions.
1149− mkDerivedConfig = opt: f:
1150− mkOverride
1151− (opt.highestPrio or defaultPriority)
1152− (f opt.value);
1153−
1154901 doRename = { from, to, visible, warn, use, withPriority ? true }:
1155902 { config, options, ... }:
1156903 let
@@ -1180,7 +927,7 @@ rec {
1180927
1181928 /* Use this function to import a JSON file as NixOS configuration.
1182929
1183− modules.importJSON :: path -> attrs
930+ importJSON -> path -> attrs
1184931 */
1185932 importJSON = file: {
1186933 _file = file;
@@ -1189,7 +936,7 @@ rec {
1189936
1190937 /* Use this function to import a TOML file as NixOS configuration.
1191938
1192− modules.importTOML :: path -> attrs
939+ importTOML -> path -> attrs
1193940 */
1194941 importTOML = file: {
1195942 _file = file;
lib/options.nix+19−84
@@ -11,7 +11,6 @@ let
1111 filter
1212 foldl'
1313 head
14− tail
1514 isAttrs
1615 isBool
1716 isDerivation
@@ -26,7 +25,6 @@ let
2625 take
2726 ;
2827 inherit (lib.attrsets)
29− attrByPath
3028 optionalAttrs
3129 ;
3230 inherit (lib.strings)
@@ -55,7 +53,7 @@ rec {
5553
5654 Example:
5755 mkOption { } // => { _type = "option"; }
58− mkOption { default = "foo"; } // => { _type = "option"; default = "foo"; }
56+ mkOption { defaultText = "foo"; } // => { _type = "option"; defaultText = "foo"; }
5957 */
6058 mkOption =
6159 {
@@ -75,10 +73,12 @@ rec {
7573 apply ? null,
7674 # Whether the option is for NixOS developers only.
7775 internal ? null,
78− # Whether the option shows up in the manual. Default: true. Use false to hide the option and any sub-options from submodules. Use "shallow" to hide only sub-options.
76+ # Whether the option shows up in the manual.
7977 visible ? null,
8078 # Whether the option can be set only once
8179 readOnly ? null,
80+ # Deprecated, used by types.optionSet.
81+ options ? null
8282 } @ attrs:
8383 attrs // { _type = "option"; };
8484
@@ -98,49 +98,6 @@ rec {
9898 type = lib.types.bool;
9999 };
100100
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−
144101 /* This option accepts anything, but it does not produce any result.
145102
146103 This is useful for sharing a module across different module sets
@@ -170,13 +127,11 @@ rec {
170127 else if all isInt list && all (x: x == head list) list then head list
171128 else throw "Cannot merge definitions of `${showOption loc}'. Definition values:${showDefs defs}";
172129
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}";
130+ mergeOneOption = loc: defs:
131+ if defs == [] then abort "This case should never happen."
132+ else if length defs != 1 then
133+ throw "The unique option `${showOption loc}' is defined multiple times. Definition values:${showDefs defs}"
134+ else (head defs).value;
180135
181136 /* "Merge" option definitions by checking that they all have the same value. */
182137 mergeEqualOption = loc: defs:
@@ -189,7 +144,7 @@ rec {
189144 if def.value != first.value then
190145 throw "The option `${showOption loc}' has conflicting definition values:${showDefs [ first def ]}"
191146 else
192− first) (head defs) (tail defs)).value;
147+ first) (head defs) defs).value;
193148
194149 /* Extracts values of all "value" keys of the given list.
195150
@@ -221,15 +176,12 @@ rec {
221176 docOption = rec {
222177 loc = opt.loc;
223178 name = showOption opt.loc;
224− description = opt.description or null;
179+ description = opt.description or (lib.warn "Option `${name}' has no description." "This option has no description.");
225180 declarations = filter (x: x != unknownModule) opt.declarations;
226181 internal = opt.internal or false;
227− visible =
228− if (opt?visible && opt.visible == "shallow")
229− then true
230− else opt.visible or true;
182+ visible = opt.visible or true;
231183 readOnly = opt.readOnly or false;
232− type = opt.type.description or "unspecified";
184+ type = opt.type.description or null;
233185 }
234186 // optionalAttrs (opt ? example) { example = scrubOptionValue opt.example; }
235187 // optionalAttrs (opt ? default) { default = scrubOptionValue opt.default; }
@@ -239,9 +191,8 @@ rec {
239191 subOptions =
240192 let ss = opt.type.getSubOptions opt.loc;
241193 in if ss != {} then optionAttrSetToDocList' opt.loc ss else [];
242− subOptionsVisible = docOption.visible && opt.visible or null != "shallow";
243194 in
244− [ docOption ] ++ optionals subOptionsVisible subOptions) (collect isOption options);
195+ [ docOption ] ++ optionals docOption.visible subOptions) (collect isOption options);
245196
246197
247198 /* This function recursively removes all derivation attributes from
@@ -260,25 +211,11 @@ rec {
260211 else x;
261212
262213
263− /* For use in the `defaultText` and `example` option attributes. Causes the
264− given string to be rendered verbatim in the documentation as Nix code. This
265− is necessary for complex values, e.g. functions, or values that depend on
266− other values or packages.
267− */
268− literalExpression = text:
269− if ! isString text then throw "literalExpression expects a string."
270− else { _type = "literalExpression"; inherit text; };
271−
272− literalExample = lib.warn "literalExample is deprecated, use literalExpression instead, or use literalDocBook for a non-Nix description." literalExpression;
273−
274−
275− /* For use in the `defaultText` and `example` option attributes. Causes the
276− given DocBook text to be inserted verbatim in the documentation, for when
277− a `literalExpression` would be too hard to read.
214+ /* For use in the `example` option attribute. It causes the given
215+ text to be included verbatim in documentation. This is necessary
216+ for example values that are not simple values, e.g., functions.
278217 */
279− literalDocBook = text:
280− if ! isString text then throw "literalDocBook expects a string."
281− else { _type = "literalDocBook"; inherit text; };
218+ literalExample = text: { _type = "literalExample"; inherit text; };
282219
283220 # Helper functions.
284221
@@ -309,9 +246,7 @@ rec {
309246 showDefs = defs: concatMapStrings (def:
310247 let
311248 # Pretty print the value for display, if successful
312− prettyEval = builtins.tryEval
313− (lib.generators.toPretty { }
314− (lib.generators.withRecursion { depthLimit = 10; throwOnDepthLimit = false; } def.value));
249+ prettyEval = builtins.tryEval (lib.generators.toPretty {} def.value);
315250 # Split it into its lines
316251 lines = filter (v: ! isList v) (builtins.split "\n" prettyEval.value);
317252 # Only display the first 5 lines, and indent them for better visibility
lib/sources.nix+49−70
@@ -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")) ||
@@ -52,53 +43,46 @@ let
5243 lib.hasSuffix ".o" baseName ||
5344 lib.hasSuffix ".so" baseName ||
5445 # Filter out nix-build result symlinks
55− (type == "symlink" && lib.hasPrefix "result" baseName) ||
56− # Filter out sockets and other types of files we can't have in the store.
57− (type == "unknown")
46+ (type == "symlink" && lib.hasPrefix "result" baseName)
5847 );
5948
60− /*
61− Filters a source tree removing version control files and directories using cleanSourceFilter.
62−
63− Example:
64− cleanSource ./.
65− */
49+ # Filters a source tree removing version control files and directories using cleanSourceWith
50+ #
51+ # Example:
52+ # cleanSource ./.
6653 cleanSource = src: cleanSourceWith { filter = cleanSourceFilter; inherit src; };
6754
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− }:
55+ # Like `builtins.filterSource`, except it will compose with itself,
56+ # allowing you to chain multiple calls together without any
57+ # intermediate copies being put in the nix store.
58+ #
59+ # lib.cleanSourceWith {
60+ # filter = f;
61+ # src = lib.cleanSourceWith {
62+ # filter = g;
63+ # src = ./.;
64+ # };
65+ # }
66+ # # Succeeds!
67+ #
68+ # builtins.filterSource f (builtins.filterSource g ./.)
69+ # # Fails!
70+ #
71+ # Parameters:
72+ #
73+ # src: A path or cleanSourceWith result to filter and/or rename.
74+ #
75+ # filter: A function (path -> type -> bool)
76+ # Optional with default value: constant true (include everything)
77+ # The function will be combined with the && operator such
78+ # that src.filter is called lazily.
79+ # For implementing a filter, see
80+ # https://nixos.org/nix/manual/#builtin-filterSource
81+ #
82+ # name: Optional name to use as part of the store path.
83+ # This defaults to `src.name` or otherwise `"source"`.
84+ #
85+ cleanSourceWith = { filter ? _path: _type: true, src, name ? null }:
10286 let
10387 orig = toSourceAttributes src;
10488 in fromSourceAttributes {
@@ -130,11 +114,9 @@ let
130114 satisfiesSubpathInvariant = src ? satisfiesSubpathInvariant && src.satisfiesSubpathInvariant;
131115 };
132116
133− /*
134− Filter sources by a list of regular expressions.
135−
136− Example: src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]
137− */
117+ # Filter sources by a list of regular expressions.
118+ #
119+ # E.g. `src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]`
138120 sourceByRegex = src: regexes:
139121 let
140122 isFiltered = src ? _isLibCleanSourceWith;
@@ -169,11 +151,8 @@ let
169151
170152 pathIsGitRepo = path: (tryEval (commitIdFromGitRepo path)).success;
171153
172− /*
173− Get the commit id of a git repo.
174−
175− Example: commitIdFromGitRepo <nixpkgs/.git>
176− */
154+ # Get the commit id of a git repo
155+ # Example: commitIdFromGitRepo <nixpkgs/.git>
177156 commitIdFromGitRepo =
178157 let readCommitFromFile = file: path:
179158 let fileName = toString path + "/" + file;
lib/strings.nix+6−210
@@ -17,7 +17,6 @@ rec {
1717 head
1818 isInt
1919 isList
20− isAttrs
2120 isString
2221 match
2322 parseDrvName
@@ -90,7 +89,7 @@ rec {
9089 => "usr/local/bin"
9190 */
9291 concatStringsSep = builtins.concatStringsSep or (separator: list:
93− lib.foldl' (x: y: x + y) "" (intersperse separator list));
92+ concatStrings (intersperse separator list));
9493
9594 /* Maps a function over a list of strings and then concatenates the
9695 result with the specified separator interspersed between
@@ -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
@@ -419,19 +362,6 @@ rec {
419362 if match "[a-zA-Z_][a-zA-Z0-9_'-]*" s != null
420363 then s else escapeNixString s;
421364
422− /* Escapes a string such that it is safe to include verbatim in an XML
423− document.
424−
425− Type: string -> string
426−
427− Example:
428− escapeXML ''"test" 'test' < & >''
429− => "&quot;test&quot; &apos;test&apos; &lt; &amp; &gt;"
430− */
431− escapeXML = builtins.replaceStrings
432− ["\"" "'" "<" ">" "&"]
433− ["&quot;" "&apos;" "&lt;" "&gt;" "&amp;"];
434−
435365 # Obsolete - use replaceStrings instead.
436366 replaceChars = builtins.replaceStrings or (
437367 del: new: s:
@@ -813,14 +743,7 @@ rec {
813743 sanitizeDerivationName pkgs.hello
814744 => "-nix-store-2g75chlbpxlrqn15zlby2dfh8hr9qwbk-hello-2.10"
815745 */
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 [
746+ sanitizeDerivationName = string: lib.pipe string [
824747 # Get rid of string context. This is safe under the assumption that the
825748 # resulting string is only used as a derivation name
826749 unsafeDiscardStringContext
@@ -838,131 +761,4 @@ rec {
838761 (x: if stringLength x == 0 then "unknown" else x)
839762 ];
840763
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;
968764}
lib/systems/default.nix+1−4
@@ -8,7 +8,6 @@ rec {
88 platforms = import ./platforms.nix { inherit lib; };
99 examples = import ./examples.nix { inherit lib; };
1010 architectures = import ./architectures.nix { inherit lib; };
11− supported = import ./supported.nix { inherit lib; };
1211
1312 # Elaborate a `localSystem` or `crossSystem` so that it contains everything
1413 # necessary.
@@ -105,11 +104,9 @@ rec {
105104 else if final.isAarch64 then "arm64"
106105 else if final.isx86_32 then "i386"
107106 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
107+ else if final.isMips then "mips"
110108 else if final.isPower then "powerpc"
111109 else if final.isRiscV then "riscv"
112− else if final.isS390 then "s390"
113110 else final.parsed.cpu.name;
114111
115112 qemuArch =
lib/systems/doubles.nix+7−17
@@ -26,22 +26,20 @@ let
2626
2727 # Linux
2828 "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux"
29− "armv7l-linux" "i686-linux" "m68k-linux" "mipsel-linux" "mips64el-linux"
30− "powerpc64-linux" "powerpc64le-linux" "riscv32-linux"
31− "riscv64-linux" "s390-linux" "s390x-linux" "x86_64-linux"
29+ "armv7l-linux" "i686-linux" "mipsel-linux" "powerpc64-linux"
30+ "powerpc64le-linux" "riscv32-linux" "riscv64-linux" "x86_64-linux"
3231
3332 # MMIXware
3433 "mmix-mmixware"
3534
3635 # NetBSD
3736 "aarch64-netbsd" "armv6l-netbsd" "armv7a-netbsd" "armv7l-netbsd"
38− "i686-netbsd" "m68k-netbsd" "mipsel-netbsd" "powerpc-netbsd"
39− "riscv32-netbsd" "riscv64-netbsd" "x86_64-netbsd"
37+ "i686-netbsd" "mipsel-netbsd" "powerpc-netbsd" "riscv32-netbsd"
38+ "riscv64-netbsd" "x86_64-netbsd"
4039
4140 # 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"
44− "riscv32-none" "riscv64-none" "s390-none" "s390x-none" "vc4-none"
41+ "aarch64-none" "arm-none" "armv6l-none" "avr-none" "i686-none" "msp430-none"
42+ "or1k-none" "powerpc-none" "riscv32-none" "riscv64-none" "vc4-none"
4543 "x86_64-none"
4644
4745 # OpenBSD
@@ -74,12 +72,8 @@ in {
7472 mips = filterDoubles predicates.isMips;
7573 mmix = filterDoubles predicates.isMmix;
7674 riscv = filterDoubles predicates.isRiscV;
77− riscv32 = filterDoubles predicates.isRiscV32;
78− riscv64 = filterDoubles predicates.isRiscV64;
7975 vc4 = filterDoubles predicates.isVc4;
8076 or1k = filterDoubles predicates.isOr1k;
81− m68k = filterDoubles predicates.isM68k;
82− s390 = filterDoubles predicates.isS390;
8377 js = filterDoubles predicates.isJavaScript;
8478
8579 bigEndian = filterDoubles predicates.isBigEndian;
@@ -89,11 +83,7 @@ in {
8983 darwin = filterDoubles predicates.isDarwin;
9084 freebsd = filterDoubles predicates.isFreeBSD;
9185 # 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; });
86+ 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; });
9787 illumos = filterDoubles predicates.isSunOS;
9888 linux = filterDoubles predicates.isLinux;
9989 netbsd = filterDoubles predicates.isNetBSD;
lib/systems/examples.nix−39
@@ -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 };
@@ -164,18 +144,6 @@ rec {
164144 libc = "newlib";
165145 };
166146
167− m68k = {
168− config = "m68k-unknown-linux-gnu";
169− };
170−
171− s390 = {
172− config = "s390-unknown-linux-gnu";
173− };
174−
175− s390x = {
176− config = "s390x-unknown-linux-gnu";
177− };
178−
179147 arm-embedded = {
180148 config = "arm-none-eabi";
181149 libc = "newlib";
@@ -278,12 +246,6 @@ rec {
278246 platform = {};
279247 };
280248
281− x86_64-darwin = {
282− config = "x86_64-apple-darwin";
283− xcodePlatform = "MacOSX";
284− platform = {};
285− };
286−
287249 #
288250 # Windows
289251 #
@@ -310,7 +272,6 @@ rec {
310272 libc = "nblibc";
311273 };
312274
313− # this is broken and never worked fully
314275 x86_64-netbsd-llvm = {
315276 config = "x86_64-unknown-netbsd";
316277 libc = "nblibc";
lib/systems/inspect.nix+1−11
@@ -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"; }; };
@@ -33,8 +26,6 @@ rec {
3326 isAvr = { cpu = { family = "avr"; }; };
3427 isAlpha = { cpu = { family = "alpha"; }; };
3528 isOr1k = { cpu = { family = "or1k"; }; };
36− isM68k = { cpu = { family = "m68k"; }; };
37− isS390 = { cpu = { family = "s390"; }; };
3829 isJavaScript = { cpu = cpuTypes.js; };
3930
4031 is32bit = { cpu = { bits = 32; }; };
@@ -63,8 +54,7 @@ rec {
6354 isNone = { kernel = kernels.none; };
6455
6556 isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ];
66− isGnu = with abis; map (a: { abi = a; }) [ gnuabi64 gnu gnueabi gnueabihf ];
67− isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf muslabin32 muslabi64 ];
57+ isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ];
6858 isUClibc = with abis; map (a: { abi = a; }) [ uclibc uclibceabi uclibceabihf ];
6959
7060 isEfi = map (family: { cpu.family = family; })
lib/systems/parse.nix+5−18
@@ -95,8 +95,6 @@ rec {
9595
9696 mmix = { bits = 64; significantByte = bigEndian; family = "mmix"; };
9797
98− m68k = { bits = 32; significantByte = bigEndian; family = "m68k"; };
99−
10098 powerpc = { bits = 32; significantByte = bigEndian; family = "power"; };
10199 powerpc64 = { bits = 64; significantByte = bigEndian; family = "power"; };
102100 powerpc64le = { bits = 64; significantByte = littleEndian; family = "power"; };
@@ -105,9 +103,6 @@ rec {
105103 riscv32 = { bits = 32; significantByte = littleEndian; family = "riscv"; };
106104 riscv64 = { bits = 64; significantByte = littleEndian; family = "riscv"; };
107105
108− s390 = { bits = 32; significantByte = bigEndian; family = "s390"; };
109− s390x = { bits = 64; significantByte = bigEndian; family = "s390"; };
110−
111106 sparc = { bits = 32; significantByte = bigEndian; family = "sparc"; };
112107 sparc64 = { bits = 64; significantByte = bigEndian; family = "sparc"; };
113108
@@ -128,10 +123,9 @@ rec {
128123
129124 # GNU build systems assume that older NetBSD architectures are using a.out.
130125 gnuNetBSDDefaultExecFormat = cpu:
131− if (cpu.family == "arm" && cpu.bits == 32) ||
132− (cpu.family == "sparc" && cpu.bits == 32) ||
133− (cpu.family == "m68k" && cpu.bits == 32) ||
134− (cpu.family == "x86" && cpu.bits == 32)
126+ if (cpu.family == "x86" && cpu.bits == 32) ||
127+ (cpu.family == "arm" && cpu.bits == 32) ||
128+ (cpu.family == "sparc" && cpu.bits == 32)
135129 then execFormats.aout
136130 else execFormats.elf;
137131
@@ -359,20 +353,13 @@ rec {
359353 ];
360354 };
361355 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"; };
369356
370357 musleabi = { float = "soft"; };
371358 musleabihf = { float = "hard"; };
372359 musl = {};
373360
374− uclibceabi = { float = "soft"; };
375− uclibceabihf = { float = "hard"; };
361+ uclibceabihf = { float = "soft"; };
362+ uclibceabi = { float = "hard"; };
376363 uclibc = {};
377364
378365 unknown = {};
lib/systems/platforms.nix+5−60
@@ -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 = {
@@ -27,17 +20,15 @@ rec {
2720 name = "PowerNV";
2821
2922 baseConfig = "powernv_defconfig";
30− target = "vmlinux";
23+ target = "zImage";
24+ installTarget = "install";
25+ file = "vmlinux";
3126 autoModules = true;
3227 # avoid driver/FS trouble arising from unusual page size
3328 extraConfig = ''
3429 PPC_64K_PAGES n
3530 PPC_4K_PAGES y
3631 IPV6 y
37−
38− ATA_BMDMA y
39− ATA_SFF y
40− VIRTIO_MENU y
4132 '';
4233 };
4334 };
@@ -242,7 +233,7 @@ rec {
242233 };
243234 };
244235
245− scaleway-c1 = armv7l-hf-multiplatform // {
236+ scaleway-c1 = lib.recursiveUpdate armv7l-hf-multiplatform {
246237 gcc = {
247238 cpu = "cortex-a9";
248239 fpu = "vfpv3";
@@ -324,12 +315,6 @@ rec {
324315 # Disable OABI to have seccomp_filter (required for systemd)
325316 # https://github.com/raspberrypi/firmware/issues/651
326317 OABI_COMPAT n
327−
328− # >=5.12 fails with:
329− # drivers/net/ethernet/micrel/ks8851_common.o: in function `ks8851_probe_common':
330− # ks8851_common.c:(.text+0x179c): undefined reference to `__this_module'
331− # See: https://lore.kernel.org/netdev/20210116164828.40545-1-marex@denx.de/T/
332− KS8851_MLL y
333318 '';
334319 };
335320 gcc = {
@@ -489,43 +474,6 @@ rec {
489474 };
490475 };
491476
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−
529477 ##
530478 ## Other
531479 ##
@@ -543,9 +491,6 @@ rec {
543491 };
544492 };
545493
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.
549494 select = platform:
550495 # x86
551496 /**/ if platform.isx86 then pc
@@ -568,5 +513,5 @@ rec {
568513
569514 else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv
570515
571− else { };
516+ else pc;
572517}
lib/systems/supported.nixdeleted−26
@@ -1,26 +0,0 @@
1−# Supported systems according to RFC0046's definition.
2−#
3−# https://github.com/NixOS/rfcs/blob/master/rfcs/0046-platform-support-tiers.md
4−{ lib }:
5−rec {
6− # List of systems that are built by Hydra.
7− hydra = tier1 ++ tier2 ++ tier3 ++ [
8− "aarch64-darwin"
9− ];
10−
11− tier1 = [
12− "x86_64-linux"
13− ];
14−
15− tier2 = [
16− "aarch64-linux"
17− "x86_64-darwin"
18− ];
19−
20− tier3 = [
21− "armv6l-linux"
22− "armv7l-linux"
23− "i686-linux"
24− "mipsel-linux"
25− ];
26−}
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/maintainers.nix+2−6
@@ -16,10 +16,6 @@ let
1616 email = lib.mkOption {
1717 type = types.str;
1818 };
19− matrix = lib.mkOption {
20− type = types.nullOr types.str;
21− default = null;
22− };
2319 github = lib.mkOption {
2420 type = types.nullOr types.str;
2521 default = null;
@@ -65,9 +61,9 @@ let
6561
6662 missingGithubIds = lib.concatLists (lib.mapAttrsToList checkMaintainer lib.maintainers);
6763
68− success = pkgs.runCommand "checked-maintainers-success" {} ">$out";
64+ success = pkgs.runCommandNoCC "checked-maintainers-success" {} ">$out";
6965
70− failure = pkgs.runCommand "checked-maintainers-failure" {
66+ failure = pkgs.runCommandNoCC "checked-maintainers-failure" {
7167 nativeBuildInputs = [ pkgs.curl pkgs.jq ];
7268 outputHash = "sha256:${lib.fakeSha256}";
7369 outputHAlgo = "sha256";
lib/tests/misc.nix+2−464
@@ -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
@@ -141,16 +132,6 @@ runTests {
141132 expected = [ 1 1 0 ];
142133 };
143134
144− testFunctionArgsFunctor = {
145− expr = functionArgs { __functor = self: { a, b }: null; };
146− expected = { a = false; b = false; };
147− };
148−
149− testFunctionArgsSetFunctionArgs = {
150− expr = functionArgs (setFunctionArgs (args: args.x) { x = false; });
151− expected = { x = false; };
152− };
153−
154135# STRINGS
155136
156137 testConcatMapStrings = {
@@ -255,61 +236,6 @@ runTests {
255236 };
256237 };
257238
258− testEscapeXML = {
259− expr = escapeXML ''"test" 'test' < & >'';
260− expected = "&quot;test&quot; &apos;test&apos; &lt; &amp; &gt;";
261− };
262−
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−
313239# LISTS
314240
315241 testFilter = {
@@ -530,66 +456,6 @@ runTests {
530456 '';
531457 };
532458
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−
593459 /* right now only invocation check */
594460 testToJSONSimple =
595461 let val = {
@@ -615,7 +481,7 @@ runTests {
615481
616482 testToPretty =
617483 let
618− deriv = derivation { name = "test"; builder = "/bin/sh"; system = "aarch64-linux"; };
484+ deriv = derivation { name = "test"; builder = "/bin/sh"; system = builtins.currentSystem; };
619485 in {
620486 expr = mapAttrs (const (generators.toPretty { multiline = false; })) rec {
621487 int = 42;
@@ -653,25 +519,6 @@ runTests {
653519 };
654520 };
655521
656− testToPrettyLimit =
657− let
658− a.b = 1;
659− a.c = a;
660− in {
661− expr = generators.toPretty { } (generators.withRecursion { throwOnDepthLimit = false; depthLimit = 2; } a);
662− expected = "{\n b = 1;\n c = {\n b = \"<unevaluated>\";\n c = {\n b = \"<unevaluated>\";\n c = \"<unevaluated>\";\n };\n };\n}";
663− };
664−
665− testToPrettyLimitThrow =
666− let
667− a.b = 1;
668− a.c = a;
669− in {
670− expr = (builtins.tryEval
671− (generators.toPretty { } (generators.withRecursion { depthLimit = 2; } a))).success;
672− expected = false;
673− };
674−
675522 testToPrettyMultiline = {
676523 expr = mapAttrs (const (generators.toPretty { })) rec {
677524 list = [ 3 4 [ false ] ];
@@ -768,11 +615,6 @@ runTests {
768615 expected = "foo";
769616 };
770617
771− testSanitizeDerivationNameUnicode = testSanitizeDerivationName {
772− name = "fö";
773− expected = "f-";
774− };
775−
776618 testSanitizeDerivationNameAscii = testSanitizeDerivationName {
777619 name = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
778620 expected = "-+--.-0123456789-=-?-ABCDEFGHIJKLMNOPQRSTUVWXYZ-_-abcdefghijklmnopqrstuvwxyz-";
@@ -815,7 +657,7 @@ runTests {
815657
816658 locs = filter (o: ! o.internal) (optionAttrSetToDocList options);
817659 in map (o: o.loc) locs;
818− expected = [ [ "_module" "args" ] [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ];
660+ expected = [ [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ];
819661 };
820662
821663 testCartesianProductOfEmptySet = {
@@ -885,308 +727,4 @@ runTests {
885727 { a = 3; b = 30; c = 300; }
886728 ];
887729 };
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− };
1192730}
lib/tests/modules.sh+121−180
@@ -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
63−checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*: true' config.enable ./define-enable.nix
64−
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
64+checkConfigOutput "false" config.enable ./declare-enable.nix
65+checkConfigError 'The option .* does not exist. Definition values:\n- In .*: true' config.enable ./define-enable.nix
7166
7267# Check integer types.
7368# unsigned
74−checkConfigOutput '^42$' config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
75−checkConfigError '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
69+checkConfigOutput "42" config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
70+checkConfigError 'A definition for option .* is not of type.*unsigned integer.*. Definition values:\n- In .*: -23' config.value ./declare-int-unsigned-value.nix ./define-value-int-negative.nix
7671# positive
77−checkConfigError '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
72+checkConfigError 'A definition for option .* is not of type.*positive integer.*. Definition values:\n- 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
80−checkConfigError '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
74+checkConfigOutput "42" config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
75+checkConfigError 'A definition for option .* is not of type.*between.*-21 and 43.*inclusive.*. Definition values:\n- 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,24 +115,24 @@ 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
133−checkConfigError "The option .*enable.* does not exist. Definition values:\n\s*- In .*: true" "$@" ./disable-declare-enable.nix
126+checkConfigOutput "true" "$@"
127+checkConfigOutput "false" "$@" ./disable-define-enable.nix
128+checkConfigError "The option .*enable.* does not exist. Definition values:\n- 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
136131
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.
@@ -147,78 +142,71 @@ checkConfigError 'infinite recursion encountered' "$@"
147142
148143# Check _module.check.
149144set -- config.enable ./declare-enable.nix ./define-enable.nix ./define-attrsOfSub-foo.nix
150−checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*' "$@"
151−checkConfigOutput '^true$' "$@" ./define-module-check.nix
145+checkConfigError 'The option .* does not exist. Definition values:\n- In .*' "$@"
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
156−checkConfigError '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
149+checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
150+checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
151+checkConfigError 'A definition for option .* is not.*string or signed integer convertible to it.*. Definition values:\n- 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
160−checkConfigError '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
161−checkConfigError 'json.exception.parse_error' config.value ./declare-coerced-value-unsound.nix ./define-value-string-arbitrary.nix
154+checkConfigOutput "12" config.value ./declare-coerced-value-unsound.nix
155+checkConfigError 'A definition for option .* is not of type .*. Definition values:\n- In .*: "1000"' config.value ./declare-coerced-value-unsound.nix ./define-value-string-bigint.nix
156+checkConfigError 'unrecognised JSON value' 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
177−checkConfigError "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
172+checkConfigError "You're trying to declare a value of type \`bool'\nrather than an attribute-set for the option" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-shorthand.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
183−# Should also be able to evaluate the type name (which evaluates freeformType,
184−# which evaluates all the modules defined by the type)
185−checkConfigOutput '^"submodule"$' options.submodule.type.description ./declare-submoduleWith-modules.nix
186−
187−## 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
176+checkConfigOutput "true" config.submodule.inner ./declare-submoduleWith-modules.nix
177+checkConfigOutput "true" config.submodule.outer ./declare-submoduleWith-modules.nix
190178# Should also be able to evaluate the type name (which evaluates freeformType,
191179# which evaluates all the modules defined by the type)
192−checkConfigOutput '^"submodule"$' options.submodule.type.description ./declare-submodule-via-evalModules.nix
180+checkConfigOutput "submodule" options.submodule.type.description ./declare-submoduleWith-modules.nix
193181
194182## Paths should be allowed as values and work as expected
195−checkConfigOutput '^true$' config.submodule.enable ./declare-submoduleWith-path.nix
183+checkConfigOutput "true" config.submodule.enable ./declare-submoduleWith-path.nix
196184
197185# 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}
201−checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*: true' config.enable ./disable-recursive/{main.nix,disable-foo.nix,disable-bar.nix}
186+checkConfigOutput "true" config.enable ./disable-recursive/main.nix
187+checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-foo.nix}
188+checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-bar.nix}
189+checkConfigError 'The option .* does not exist. Definition values:\n- In .*: true' config.enable ./disable-recursive/{main.nix,disable-foo.nix,disable-bar.nix}
202190
203191# Check that imports can depend on derivations
204−checkConfigOutput '^true$' config.enable ./import-from-store.nix
192+checkConfigOutput "true" config.enable ./import-from-store.nix
205193
206194# 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
195+checkConfigOutput true config.enable ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix
196+checkConfigOutput 360 config.value ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix
197+checkConfigOutput 7 config.value ./define-option-dependently.nix ./declare-int-positive-value.nix
198+checkConfigOutput true config.set.enable ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix
199+checkConfigOutput 360 config.set.value ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix
200+checkConfigOutput 7 config.set.value ./define-option-dependently-nested.nix ./declare-int-positive-value-nested.nix
213201
214202# Check attrsOf and lazyAttrsOf. Only lazyAttrsOf should be lazy, and only
215203# attrsOf should work with conditional definitions
216204# In addition, lazyAttrsOf should honor an options emptyValue
217205checkConfigError "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
206+checkConfigOutput "true" config.isLazy ./declare-lazyAttrsOf.nix ./attrsOf-lazy-check.nix
207+checkConfigOutput "true" config.conditionalWorks ./declare-attrsOf.nix ./attrsOf-conditional-check.nix
208+checkConfigOutput "false" config.conditionalWorks ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix
209+checkConfigOutput "empty" config.value.foo ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix
222210
223211
224212# Even with multiple assignments, a type error should be thrown if any of them aren't valid
@@ -227,109 +215,62 @@ checkConfigError 'A definition for option .* is not of type .*' \
227215
228216## Freeform modules
229217# Assigning without a declared option should work
230−checkConfigOutput '^"24"$' config.value ./freeform-attrsOf.nix ./define-value-string.nix
218+checkConfigOutput 24 config.value ./freeform-attrsOf.nix ./define-value-string.nix
231219# No freeform assigments shouldn't make it error
232−checkConfigOutput '^{ }$' config ./freeform-attrsOf.nix
220+checkConfigOutput '{ }' config ./freeform-attrsOf.nix
233221# but only if the type matches
234222checkConfigError 'A definition for option .* is not of type .*' config.value ./freeform-attrsOf.nix ./define-value-list.nix
235223# and properties should be applied
236−checkConfigOutput '^"yes"$' config.value ./freeform-attrsOf.nix ./define-value-string-properties.nix
224+checkConfigOutput yes config.value ./freeform-attrsOf.nix ./define-value-string-properties.nix
237225# 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
226+checkConfigOutput false config.enable ./freeform-attrsOf.nix ./define-value-string.nix ./declare-enable.nix
227+checkConfigOutput 24 config.value ./freeform-attrsOf.nix ./define-value-string.nix ./declare-enable.nix
240228# 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
229+checkConfigOutput false config.nest.foo ./freeform-attrsOf.nix ./freeform-nested.nix
230+checkConfigOutput bar config.nest.bar ./freeform-attrsOf.nix ./freeform-nested.nix
243231# 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
232+checkConfigOutput null config.foo ./freeform-attrsOf.nix ./freeform-str-dep-unstr.nix
233+checkConfigOutput 24 config.foo ./freeform-attrsOf.nix ./freeform-str-dep-unstr.nix ./define-value-string.nix
246234# Check whether an freeform-typed value can depend on a declared option, this can only work with lazyAttrsOf
247235checkConfigError 'infinite recursion encountered' config.foo ./freeform-attrsOf.nix ./freeform-unstr-dep-str.nix
248236checkConfigError '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
237+checkConfigOutput 24 config.foo ./freeform-lazyAttrsOf.nix ./freeform-unstr-dep-str.nix ./define-value-string.nix
255238
256239## types.anything
257240# 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
241+checkConfigOutput null config.value.foo ./types-anything/nested-attrs.nix
242+checkConfigOutput null config.value.l1.foo ./types-anything/nested-attrs.nix
243+checkConfigOutput null config.value.l1.l2.foo ./types-anything/nested-attrs.nix
244+checkConfigOutput null config.value.l1.l2.l3.foo ./types-anything/nested-attrs.nix
262245# Attribute sets that are coercible to strings shouldn't be recursed into
263−checkConfigOutput '^"foo"$' config.value.outPath ./types-anything/attrs-coercible.nix
246+checkConfigOutput foo config.value.outPath ./types-anything/attrs-coercible.nix
264247# Multiple lists aren't concatenated together
265248checkConfigError 'The option .* has conflicting definitions' config.value ./types-anything/lists.nix
266249# 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
250+checkConfigOutput 0 config.value.int ./types-anything/equal-atoms.nix
251+checkConfigOutput false config.value.bool ./types-anything/equal-atoms.nix
252+checkConfigOutput '""' config.value.string ./types-anything/equal-atoms.nix
253+checkConfigOutput / config.value.path ./types-anything/equal-atoms.nix
254+checkConfigOutput null config.value.null ./types-anything/equal-atoms.nix
255+checkConfigOutput 0.1 config.value.float ./types-anything/equal-atoms.nix
273256# Functions can't be merged together
274−checkConfigError "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
257+checkConfigError "The option .* has conflicting definition values" config.value.multiple-lambdas ./types-anything/functions.nix
258+checkConfigOutput '<LAMBDA>' config.value.single-lambda ./types-anything/functions.nix
278259# Check that all mk* modifiers are applied
279260checkConfigError '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
261+checkConfigOutput '{ }' config.value.mkiftrue ./types-anything/mk-mods.nix
262+checkConfigOutput 1 config.value.mkdefault ./types-anything/mk-mods.nix
263+checkConfigOutput '{ }' config.value.mkmerge ./types-anything/mk-mods.nix
264+checkConfigOutput true config.value.mkbefore ./types-anything/mk-mods.nix
265+checkConfigOutput 1 config.value.nested.foo ./types-anything/mk-mods.nix
266+checkConfigOutput baz config.value.nested.bar.baz ./types-anything/mk-mods.nix
286267
287268## types.functionTo
288−checkConfigOutput '^"input is input"$' config.result ./functionTo/trivial.nix
289−checkConfigOutput '^"a b"$' config.result ./functionTo/merging-list.nix
290−checkConfigError '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
269+checkConfigOutput "input is input" config.result ./functionTo/trivial.nix
270+checkConfigOutput "a b" config.result ./functionTo/merging-list.nix
271+checkConfigError 'A definition for option .fun.\[function body\]. is not of type .string.. Definition values:\n- In .*wrong-type.nix' config.result ./functionTo/wrong-type.nix
272+checkConfigOutput "b a" config.result ./functionTo/list-order.nix
273+checkConfigOutput "a c" config.result ./functionTo/merging-attrs.nix
333274
334275cat <<EOF
335276====== module tests ======
@@ -337,7 +278,7 @@ $pass Pass
337278$fail Fail
338279EOF
339280
340−if [ "$fail" -ne 0 ]; then
281+if test $fail -ne 0; then
341282 exit 1
342283fi
343284exit 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-submodule-via-evalModules.nixdeleted−28
@@ -1,28 +0,0 @@
1−{ lib, ... }: {
2− options.submodule = lib.mkOption {
3− inherit (lib.evalModules {
4− modules = [
5− {
6− options.inner = lib.mkOption {
7− type = lib.types.bool;
8− default = false;
9− };
10− }
11− ];
12− }) type;
13− default = {};
14− };
15−
16− config.submodule = lib.mkMerge [
17− ({ lib, ... }: {
18− options.outer = lib.mkOption {
19− type = lib.types.bool;
20− default = false;
21− };
22− })
23− {
24− inner = true;
25− outer = true;
26− }
27− ];
28−}
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/modules/types-anything/functions.nix+3−9
@@ -1,22 +1,16 @@
1−{ lib, config, ... }: {
1+{ lib, ... }: {
22
33 options.value = lib.mkOption {
44 type = lib.types.anything;
55 };
66
7− options.applied = lib.mkOption {
8− default = lib.mapAttrs (name: fun: fun null) config.value;
9− };
10−
117 config = lib.mkMerge [
128 {
139 value.single-lambda = x: x;
14− value.multiple-lambdas = x: { inherit x; };
15− value.merging-lambdas = x: { inherit x; };
10+ value.multiple-lambdas = x: x;
1611 }
1712 {
18− value.multiple-lambdas = x: [ x ];
19− value.merging-lambdas = y: { inherit y; };
13+ value.multiple-lambdas = x: x;
2014 }
2115 ];
2216
lib/tests/release.nix+1−5
@@ -3,7 +3,7 @@
33 pkgs ? import ../.. {} // { lib = throw "pkgs.lib accessed, but the lib tests should use nixpkgs' lib path directly!"; }
44}:
55
6−pkgs.runCommand "nixpkgs-lib-tests" {
6+pkgs.runCommandNoCC "nixpkgs-lib-tests" {
77 buildInputs = [
88 pkgs.nix
99 (import ./check-eval.nix)
@@ -23,10 +23,6 @@ pkgs.runCommand "nixpkgs-lib-tests" {
2323 export NIX_STORE_DIR=$TEST_ROOT/store
2424 export PAGER=cat
2525 cacheDir=$TEST_ROOT/binary-cache
26−
27− mkdir -p $NIX_CONF_DIR
28− echo "experimental-features = nix-command" >> $NIX_CONF_DIR/nix.conf
29−
3026 nix-store --init
3127
3228 cp -r ${../.} lib
lib/tests/sources.sh+9−11
@@ -1,6 +1,5 @@
11#!/usr/bin/env bash
22set -euo pipefail
3−shopt -s inherit_errexit
43
54# Use
65# || die
@@ -10,28 +9,27 @@ 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
2826# nix-instantiate doesn't write out the source, only computing the hash, so
2927# this uses the experimental nix command instead.
3028
31−dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${
29+dir="$(nix eval --raw '(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
@@ -39,20 +37,20 @@ EOF
3937) || die "cleanSource 1"
4038
4139
42−dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${
40+dir="$(nix eval --raw '(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
4947EOF
5048) || die "cleanSourceWith 1"
5149
52−dir="$(nix eval --impure --raw --expr '(with import <nixpkgs/lib>; "${
50+dir="$(nix eval --raw '(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+3−6
@@ -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,8 +28,8 @@ 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" ];
35− 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" ];
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" ];
32+ testnetbsd = mseteq netbsd [ "aarch64-netbsd" "armv6l-netbsd" "armv7a-netbsd" "armv7l-netbsd" "i686-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" ];
3835 testunix = mseteq unix (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ cygwin ++ redox);
lib/trivial.nix+10−128
@@ -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 =
@@ -327,84 +303,12 @@ rec {
327303 # TODO: figure out a clever way to integrate location information from
328304 # something like __unsafeGetAttrPos.
329305
330− /*
331− Print a warning before returning the second argument. This function behaves
332− like `builtins.trace`, but requires a string message and formats it as a
333− warning, including the `warning: ` prefix.
334−
335− To get a call stack trace and abort evaluation, set the environment variable
336− `NIX_ABORT_ON_WARN=true` and set the Nix options `--option pure-eval false --show-trace`
337−
338− Type: string -> a -> a
339− */
340− warn =
341− if lib.elem (builtins.getEnv "NIX_ABORT_ON_WARN") ["1" "true" "yes"]
342− then msg: builtins.trace "warning: ${msg}" (abort "NIX_ABORT_ON_WARN=true; warnings are treated as unrecoverable errors.")
343− else msg: builtins.trace "warning: ${msg}";
344−
345− /*
346− Like warn, but only warn when the first argument is `true`.
347−
348− Type: bool -> string -> a -> a
349− */
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)}";
306+ warn = msg: builtins.trace "warning: ${msg}";
307+ warnIf = cond: msg: if cond then warn msg else id;
404308
405309 info = msg: builtins.trace "INFO: ${msg}";
406310
407− showWarnings = warnings: res: lib.foldr (w: x: warn w x) res warnings;
311+ showWarnings = warnings: res: lib.fold (w: x: warn w x) res warnings;
408312
409313 ## Function annotations
410314
@@ -430,10 +334,7 @@ rec {
430334 has the same return type and semantics as builtins.functionArgs.
431335 setFunctionArgs : (a → b) → Map String Bool.
432336 */
433− functionArgs = f:
434− if f ? __functor
435− then f.__functionArgs or (lib.functionArgs (f.__functor f))
436− else builtins.functionArgs f;
337+ functionArgs = f: f.__functionArgs or (builtins.functionArgs f);
437338
438339 /* Check whether something is a function or something
439340 annotated with function args.
@@ -441,25 +342,6 @@ rec {
441342 isFunction = f: builtins.isFunction f ||
442343 (f ? __functor && isFunction (f.__functor f));
443344
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−
463345 /* Convert the given positive integer to a string of its hexadecimal
464346 representation. For example:
465347
lib/types.nix+52−153
@@ -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";
@@ -203,12 +192,6 @@ rec {
203192 else (listOf anything).merge;
204193 # This is the type of packages, only accept a single definition
205194 stringCoercibleSet = mergeOneOption;
206− lambda = loc: defs: arg: anything.merge
207− (loc ++ [ "<function body>" ])
208− (map (def: {
209− file = def.file;
210− value = def.value arg;
211− }) defs);
212195 # Otherwise fall back to only allowing all equal definitions
213196 }.${commonType} or mergeEqualOption;
214197 in mergeFunction loc defs;
@@ -304,26 +287,6 @@ rec {
304287 merge = mergeEqualOption;
305288 };
306289
307− nonEmptyStr = mkOptionType {
308− name = "nonEmptyStr";
309− description = "non-empty string";
310− check = x: str.check x && builtins.match "[ \t\n]*" x == null;
311− inherit (str) merge;
312− };
313−
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−
327290 strMatching = pattern: mkOptionType {
328291 name = "strMatching ${escapeNixString pattern}";
329292 description = "string matching the pattern ${pattern}";
@@ -368,21 +331,13 @@ rec {
368331 emptyValue = { value = {}; };
369332 };
370333
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.
334+ # derivation is a reserved keyword.
378335 package = mkOptionType {
379336 name = "package";
380337 check = x: isDerivation x || isStorePath x;
381338 merge = loc: defs:
382339 let res = mergeOneOption loc defs;
383− in if builtins.isPath res || (builtins.isString res && ! builtins.hasContext res)
384− then toDerivation res
385− else res;
340+ in if isDerivation res then res else toDerivation res;
386341 };
387342
388343 shellPackage = package // {
@@ -409,7 +364,7 @@ rec {
409364 ).optionalValue
410365 ) def.value
411366 ) defs)));
412− emptyValue = { value = []; };
367+ emptyValue = { value = {}; };
413368 getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["*"]);
414369 getSubModules = elemType.getSubModules;
415370 substSubModules = m: listOf (elemType.substSubModules m);
@@ -421,7 +376,7 @@ rec {
421376 let list = addCheck (types.listOf elemType) (l: l != []);
422377 in list // {
423378 description = "non-empty " + list.description;
424− emptyValue = { }; # no .value attr, meaning unset
379+ # Note: emptyValue is left as is, because another module may define an element.
425380 };
426381
427382 attrsOf = elemType: mkOptionType rec {
@@ -489,18 +444,6 @@ rec {
489444 nestedTypes.elemType = elemType;
490445 };
491446
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−
504447 # Null or value of ...
505448 nullOr = elemType: mkOptionType rec {
506449 name = "nullOr";
@@ -522,7 +465,7 @@ rec {
522465
523466 functionTo = elemType: mkOptionType {
524467 name = "functionTo";
525− description = "function that evaluates to a(n) ${elemType.description}";
468+ description = "function that evaluates to a(n) ${elemType.name}";
526469 check = isFunction;
527470 merge = loc: defs:
528471 fnArgs: (mergeDefinitions (loc ++ [ "[function body]" ]) elemType (map (fn: { inherit (fn) file; value = fn.value fnArgs; }) defs)).mergedValue;
@@ -537,84 +480,29 @@ rec {
537480 modules = toList modules;
538481 };
539482
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−
567483 submoduleWith =
568484 { modules
569485 , specialArgs ? {}
570486 , 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
576487 }@attrs:
577488 let
578489 inherit (lib.modules) evalModules;
579490
580− shorthandToModule = if shorthandOnlyDefinesConfig == false
581− then value: value
582− else value: { config = value; };
583−
584− 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)
491+ coerce = unify: value: if isFunction value
492+ then setFunctionArgs (args: unify (value args)) (functionArgs value)
493+ else unify (if shorthandOnlyDefinesConfig then { config = value; } else value);
494+
495+ allModules = defs: modules ++ imap1 (n: { value, file }:
496+ if isAttrs value || isFunction value then
497+ # Annotate the value with the location of its definition for better error messages
498+ coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value
592499 else value
593500 ) defs;
594501
595− base = evalModules {
596− inherit specialArgs;
597− modules = [{
598− # This is a work-around for the fact that some sub-modules,
599− # such as the one included in an attribute set, expects an "args"
600− # attribute to be given to the sub-module. As the option
601− # evaluation does not have any specific attribute name yet, we
602− # provide a default for the documentation and the freeform type.
603− #
604− # This is necessary as some option declaration might use the
605− # "name" attribute given as argument of the submodule and use it
606− # as the default of option declarations.
607− #
608− # We use lookalike unicode single angle quotation marks because
609− # of the docbook transformation the options receive. In all uses
610− # &gt; and &lt; wouldn't be encoded correctly so the encoded values
611− # would be used, and use of `<` and `>` would break the XML document.
612− # It shouldn't cause an issue since this is cosmetic for the manual.
613− _module.args.name = lib.mkOptionDefault "‹name›";
614− }] ++ modules;
615− };
616−
617− freeformType = base._module.freeformType;
502+ freeformType = (evalModules {
503+ inherit modules specialArgs;
504+ args.name = "‹name›";
505+ })._module.freeformType;
618506
619507 in
620508 mkOptionType rec {
@@ -622,14 +510,32 @@ rec {
622510 description = freeformType.description or name;
623511 check = x: isAttrs x || isFunction x || path.check x;
624512 merge = loc: defs:
625− (base.extendModules {
626− modules = [ { _module.args.name = last loc; } ] ++ allModules defs;
513+ (evalModules {
514+ modules = allModules defs;
515+ inherit specialArgs;
516+ args.name = last loc;
627517 prefix = loc;
628− extensionOffset = extensionOffset + length defs;
629518 }).config;
630519 emptyValue = { value = {}; };
631− getSubOptions = prefix: (base.extendModules
632− { inherit prefix; }).options // optionalAttrs (freeformType != null) {
520+ getSubOptions = prefix: (evalModules
521+ { inherit modules prefix specialArgs;
522+ # This is a work-around due to the fact that some sub-modules,
523+ # such as the one included in an attribute set, expects a "args"
524+ # attribute to be given to the sub-module. As the option
525+ # evaluation does not have any specific attribute name, we
526+ # provide a default one for the documentation.
527+ #
528+ # This is mandatory as some option declaration might use the
529+ # "name" attribute given as argument of the submodule and use it
530+ # as the default of option declarations.
531+ #
532+ # Using lookalike unicode single angle quotation marks because
533+ # of the docbook transformation the options receive. In all uses
534+ # &gt; and &lt; wouldn't be encoded correctly so the encoded values
535+ # would be used, and use of `<` and `>` would break the XML document.
536+ # It shouldn't cause an issue since this is cosmetic for the manual.
537+ args.name = "‹name›";
538+ }).options // optionalAttrs (freeformType != null) {
633539 # Expose the sub options of the freeform type. Note that the option
634540 # discovery doesn't care about the attribute name used here, so this
635541 # is just to avoid conflicts with potential options from the submodule
@@ -657,11 +563,7 @@ rec {
657563 then lhs.specialArgs // rhs.specialArgs
658564 else throw "A submoduleWith option is declared multiple times with the same specialArgs \"${toString (attrNames intersecting)}\"";
659565 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
566+ if lhs.shorthandOnlyDefinesConfig == rhs.shorthandOnlyDefinesConfig
665567 then lhs.shorthandOnlyDefinesConfig
666568 else throw "A submoduleWith option is declared multiple times with conflicting shorthandOnlyDefinesConfig values";
667569 };
@@ -671,7 +573,6 @@ rec {
671573 # A value from a set of allowed ones.
672574 enum = values:
673575 let
674− inherit (lib.lists) unique;
675576 show = v:
676577 if builtins.isString v then ''"${v}"''
677578 else if builtins.isInt v then builtins.toString v
@@ -680,17 +581,7 @@ rec {
680581 in
681582 mkOptionType rec {
682583 name = "enum";
683− description =
684− # Length 0 or 1 enums may occur in a design pattern with type merging
685− # where an "interface" module declares an empty enum and other modules
686− # provide implementations, each extending the enum with their own
687− # identifier.
688− if values == [] then
689− "impossible (empty enum)"
690− else if builtins.length values == 1 then
691− "value ${show (builtins.head values)} (singular enum)"
692− else
693− "one of ${concatMapStringsSep ", " show values}";
584+ description = "one of ${concatMapStringsSep ", " show values}";
694585 check = flip elem values;
695586 merge = mergeEqualOption;
696587 functor = (defaultFunctor name) // { payload = values; binOp = a: b: unique (a ++ b); };
@@ -755,6 +646,14 @@ rec {
755646 nestedTypes.finalType = finalType;
756647 };
757648
649+ # Obsolete alternative to configOf. It takes its option
650+ # declarations from the ‘options’ attribute of containing option
651+ # declaration.
652+ optionSet = mkOptionType {
653+ name = "optionSet";
654+ description = "option set";
655+ deprecationMessage = "Use `types.submodule' instead";
656+ };
758657 # Augment the given type with an additional type check function.
759658 addCheck = elemType: check: elemType // { check = x: elemType.check x && check x; };
760659
maintainers/maintainer-list.nix+202−2620
@@ -6,7 +6,6 @@
66 email = "address@example.org";
77
88 # Optional
9− matrix = "@user:example.org";
109 github = "GithubUsername";
1110 githubId = your-github-id;
1211 keys = [{
@@ -20,8 +19,7 @@
2019
2120 - `handle` is the handle you are going to use in nixpkgs expressions,
2221 - `name` is your, preferably real, name,
23− - `email` is your maintainer email address,
24− - `matrix` is your Matrix user ID,
22+ - `email` is your maintainer email address, and
2523 - `github` is your GitHub handle (as it appears in the URL of your profile page, `https://github.com/<userhandle>`),
2624 - `githubId` is your GitHub user ID, which can be found at `https://api.github.com/users/<userhandle>`,
2725 - `keys` is a list of your PGP/GPG key IDs and fingerprints.
@@ -58,7 +56,6 @@
5856 };
5957 _0x4A6F = {
6058 email = "mail-maintainer@0x4A6F.dev";
61− matrix = "@0x4a6f:matrix.org";
6259 name = "Joachim Ernst";
6360 github = "0x4A6F";
6461 githubId = 9675338;
@@ -83,24 +80,12 @@
8380 githubId = 791309;
8481 name = "Jan Hrnko";
8582 };
86− _1000teslas = {
87− name = "Kevin Tran";
88− email = "47207223+1000teslas@users.noreply.github.com";
89− github = "1000teslas";
90− githubId = 47207223;
91− };
9283 _3699n = {
9384 email = "nicholas@nvk.pm";
9485 github = "3699n";
9586 githubId = 7414843;
9687 name = "Nicholas von Klitzing";
9788 };
98− _13r0ck = {
99− name = "Brock Szuszczewicz";
100− email = "bnr@tuta.io";
101− github = "13r0ck";
102− githubId = 58987761;
103− };
10489 _3noch = {
10590 email = "eacameron@gmail.com";
10691 github = "3noch";
@@ -125,32 +110,18 @@
125110 githubId = 241628;
126111 name = "Adam Russell";
127112 };
128− aadibajpai = {
129− email = "hello@aadibajpai.com";
130− github = "aadibajpai";
131− githubId = 27063113;
132− name = "Aadi Bajpai";
133− };
134113 aanderse = {
135114 email = "aaron@fosslib.net";
136− matrix = "@aanderse:nixos.dev";
137115 github = "aanderse";
138116 githubId = 7755101;
139117 name = "Aaron Andersen";
140118 };
141119 aaronjanse = {
142120 email = "aaron@ajanse.me";
143− matrix = "@aaronjanse:matrix.org";
144121 github = "aaronjanse";
145122 githubId = 16829510;
146123 name = "Aaron Janse";
147124 };
148− aaronjheng = {
149− email = "wentworth@outlook.com";
150− github = "aaronjheng";
151− githubId = 806876;
152− name = "Aaron Jheng";
153− };
154125 aaronschif = {
155126 email = "aaronschif@gmail.com";
156127 github = "aaronschif";
@@ -177,7 +148,6 @@
177148 };
178149 abbe = {
179150 email = "ashish.is@lostca.se";
180− matrix = "@abbe:badti.me";
181151 github = "wahjava";
182152 githubId = 2255192;
183153 name = "Ashish SHUKLA";
@@ -266,14 +236,12 @@
266236 };
267237 addict3d = {
268238 email = "nickbathum@gmail.com";
269− matrix = "@nbathum:matrix.org";
270239 github = "addict3d";
271240 githubId = 49227;
272241 name = "Nick Bathum";
273242 };
274243 adisbladis = {
275244 email = "adisbladis@gmail.com";
276− matrix = "@adis:blad.is";
277245 github = "adisbladis";
278246 githubId = 63286;
279247 name = "Adam Hose";
@@ -296,12 +264,6 @@
296264 githubId = 1250775;
297265 name = "Adolfo E. García Castro";
298266 };
299− AdsonCicilioti = {
300− name = "Adson Cicilioti";
301− email = "adson.cicilioti@live.com";
302− github = "AdsonCicilioti";
303− githubId = 6278398;
304− };
305267 adsr = {
306268 email = "as@php.net";
307269 github = "adsr";
@@ -375,16 +337,10 @@
375337 name = "AmirHossein Roozbahani";
376338 };
377339 ahuzik = {
378− email = "ah1990au@gmail.com";
379− github = "alesya-h";
340+ email = "ales.guzik@gmail.com";
341+ github = "alesguzik";
380342 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";
343+ name = "Ales Huzik";
388344 };
389345 aij = {
390346 email = "aij+git@mrph.org";
@@ -392,15 +348,8 @@
392348 githubId = 4732885;
393349 name = "Ivan Jager";
394350 };
395− airwoodix = {
396− email = "airwoodix@posteo.me";
397− github = "airwoodix";
398− githubId = 44871469;
399− name = "Etienne Wodey";
400− };
401351 ajs124 = {
402352 email = "nix@ajs124.de";
403− matrix = "@andreas.schraegle:helsinki-systems.de";
404353 github = "ajs124";
405354 githubId = 1229027;
406355 name = "Andreas Schrägle";
@@ -441,12 +390,6 @@
441390 githubId = 1318982;
442391 name = "Anders Claesson";
443392 };
444− akho = {
445− name = "Alexander Khodyrev";
446− email = "a@akho.name";
447− github = "akho";
448− githubId = 104951;
449− };
450393 akru = {
451394 email = "mail@akru.me";
452395 github = "akru";
@@ -471,12 +414,6 @@
471414 githubId = 173595;
472415 name = "Caleb Maclennan";
473416 };
474− ALEX11BR = {
475− email = "alexioanpopa11@gmail.com";
476− github = "ALEX11BR";
477− githubId = 49609151;
478− name = "Popa Ioan Alexandru";
479− };
480417 alexarice = {
481418 email = "alexrice999@hotmail.co.uk";
482419 github = "alexarice";
@@ -507,12 +444,6 @@
507444 githubId = 2335822;
508445 name = "Alexandre Esteves";
509446 };
510− alexnortung = {
511− name = "alexnortung";
512− email = "alex_nortung@live.dk";
513− github = "alexnortung";
514− githubId = 1552267;
515− };
516447 alexvorobiev = {
517448 email = "alexander.vorobiev@gmail.com";
518449 github = "alexvorobiev";
@@ -525,11 +456,9 @@
525456 githubId = 38869148;
526457 name = "Alex Eyre";
527458 };
528− algram = {
529− email = "aliasgram@gmail.com";
530− github = "Algram";
531− githubId = 5053729;
532− name = "Alias Gram";
459+ algorith = {
460+ email = "dries_van_daele@telenet.be";
461+ name = "Dries Van Daele";
533462 };
534463 alibabzo = {
535464 email = "alistair.bill@gmail.com";
@@ -591,16 +520,6 @@
591520 fingerprint = "B422 CFB1 C9EF 73F7 E1E2 698D F53E 3233 42F7 A6D3A";
592521 }];
593522 };
594− alyaeanyx = {
595− email = "alexandra.hollmeier@mailbox.org";
596− github = "alyaeanyx";
597− githubId = 74795488;
598− name = "Alexandra Hollmeier";
599− keys = [{
600− longkeyid = "rsa3072/0x87D1AADCD25B8DEE";
601− fingerprint = "1F73 8879 5E5A 3DFC E2B3 FA32 87D1 AADC D25B 8DEE";
602− }];
603− };
604523 amanjeev = {
605524 email = "aj@amanjeev.com";
606525 github = "amanjeev";
@@ -613,12 +532,6 @@
613532 githubId = 15623522;
614533 name = "Amar Paul";
615534 };
616− amarshall = {
617− email = "andrew@johnandrewmarshall.com";
618− github = "amarshall";
619− githubId = 153175;
620− name = "Andrew Marshall";
621− };
622535 ambroisie = {
623536 email = "bruno.nixpkgs@belanyi.fr";
624537 github = "ambroisie";
@@ -631,22 +544,6 @@
631544 githubId = 2626481;
632545 name = "Ambroz Bizjak";
633546 };
634− ametrine = {
635− name = "Matilde Ametrine";
636− email = "matilde@diffyq.xyz";
637− github = "matilde-ametrine";
638− githubId = 90799677;
639− keys = [{
640− longkeyid = "rsa3072/0x07EE1FFCA58A11C5";
641− fingerprint = "7931 EB4E 4712 D7BE 04F8 6D34 07EE 1FFC A58A 11C5";
642− }];
643− };
644− amfl = {
645− email = "amfl@none.none";
646− github = "amfl";
647− githubId = 382798;
648− name = "amfl";
649− };
650547 amiddelk = {
651548 email = "amiddelk@gmail.com";
652549 github = "amiddelk";
@@ -681,18 +578,6 @@
681578 githubId = 858965;
682579 name = "Andrew Morsillo";
683580 };
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− };
696581 andehen = {
697582 email = "git@andehen.net";
698583 github = "andehen";
@@ -795,6 +680,12 @@
795680 githubId = 11699655;
796681 name = "Stanislas Lange";
797682 };
683+ angustrau = {
684+ name = "Angus Trau";
685+ email = "nix@angus.ws";
686+ github = "angustrau";
687+ githubId = 13267947;
688+ };
798689 anhdle14 = {
799690 name = "Le Anh Duc";
800691 email = "anhdle14@icloud.com";
@@ -811,12 +702,6 @@
811702 githubId = 1771266;
812703 name = "Vo Anh Duy";
813704 };
814− anirrudh = {
815− email = "anik597@gmail.com";
816− github = "anirrudh";
817− githubId = 6091755;
818− name = "Anirrudh Krishnan";
819− };
820705 ankhers = {
821706 email = "me@ankhers.dev";
822707 github = "ankhers";
@@ -841,13 +726,6 @@
841726 githubId = 5327697;
842727 name = "Anatolii Prylutskyi";
843728 };
844− anselmschueler = {
845− email = "mail@anselmschueler.com";
846− github = "schuelermine";
847− githubId = 48802534;
848− name = "Anselm Schüler";
849− matrix = "@schuelermine:matrix.org";
850− };
851729 antoinerg = {
852730 email = "roygobeil.antoine@gmail.com";
853731 github = "antoinerg";
@@ -924,12 +802,6 @@
924802 githubId = 13426784;
925803 name = "arcnmx";
926804 };
927− arcticlimer = {
928− email = "vinigm.nho@gmail.com";
929− github = "arcticlimer";
930− githubId = 59743220;
931− name = "Vinícius Müller";
932− };
933805 ardumont = {
934806 email = "eniotna.t@gmail.com";
935807 github = "ardumont";
@@ -960,18 +832,6 @@
960832 githubId = 1296771;
961833 name = "Anders Riutta";
962834 };
963− arjan-s = {
964− email = "github@anymore.nl";
965− github = "arjan-s";
966− githubId = 10400299;
967− name = "Arjan Schrijver";
968− };
969− arkivm = {
970− email = "vikram186@gmail.com";
971− github = "arkivm";
972− githubId = 1118815;
973− name = "Vikram Narayanan";
974− };
975835 armijnhemel = {
976836 email = "armijn@tjaldur.nl";
977837 github = "armijnhemel";
@@ -990,12 +850,6 @@
990850 githubId = 59696216;
991851 name = "Arnold Farkas";
992852 };
993− arnoutkroeze = {
994− email = "nixpkgs@arnoutkroeze.nl";
995− github = "arnoutkroeze";
996− githubId = 37151054;
997− name = "Arnout Kroeze";
998− };
999853 arobyn = {
1000854 email = "shados@shados.net";
1001855 github = "shados";
@@ -1038,7 +892,6 @@
1038892 };
1039893 asbachb = {
1040894 email = "asbachb-nixpkgs-5c2a@impl.it";
1041− matrix = "@asbachb:matrix.org";
1042895 github = "asbachb";
1043896 githubId = 1482768;
1044897 name = "Benjamin Asbach";
@@ -1068,8 +921,8 @@
1068921 name = "Kirill Boltaev";
1069922 };
1070923 ashley = {
1071− email = "ashley@kira64.xyz";
1072− github = "kira64xyz";
924+ email = "personavinny@protonmail.com";
925+ github = "paranoidcat";
1073926 githubId = 84152630;
1074927 name = "Ashley Chiara";
1075928 };
@@ -1119,12 +972,6 @@
1119972 githubId = 55833;
1120973 name = "Troels Henriksen";
1121974 };
1122− atila = {
1123− name = "Átila Saraiva";
1124− email = "atilasaraiva@gmail.com";
1125− github = "AtilaSaraiva";
1126− githubId = 29521461;
1127− };
1128975 atkinschang = {
1129976 email = "atkinschang+nixpkgs@gmail.com";
1130977 github = "AtkinsChang";
@@ -1155,12 +1002,6 @@
11551002 githubId = 354741;
11561003 name = "Austin Butler";
11571004 };
1158− autophagy = {
1159− email = "mail@autophagy.io";
1160− github = "autophagy";
1161− githubId = 12958979;
1162− name = "Mika Naylor";
1163− };
11641005 avaq = {
11651006 email = "nixpkgs@account.avaq.it";
11661007 github = "avaq";
@@ -1213,42 +1054,12 @@
12131054 githubId = 135230;
12141055 name = "Aycan iRiCAN";
12151056 };
1216− arjix = {
1217− email = "arjix@protonmail.com";
1218− github = "arjix";
1219− githubId = 62168569;
1220− name = "arjix";
1221− };
12221057 artturin = {
12231058 email = "artturin@artturin.com";
1224− matrix = "@artturin:matrix.org";
12251059 github = "artturin";
12261060 githubId = 56650223;
12271061 name = "Artturi N";
12281062 };
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− };
1240− ayazhafiz = {
1241− email = "ayaz.hafiz.1@gmail.com";
1242− github = "ayazhafiz";
1243− githubId = 262763;
1244− name = "Ayaz Hafiz";
1245− };
1246− azuwis = {
1247− email = "azuwis@gmail.com";
1248− github = "azuwis";
1249− githubId = 9315;
1250− name = "Zhong Jianxin";
1251− };
12521063 b4dm4n = {
12531064 email = "fabianm88@gmail.com";
12541065 github = "B4dM4n";
@@ -1281,7 +1092,6 @@
12811092 };
12821093 bachp = {
12831094 email = "pascal.bach@nextrem.ch";
1284− matrix = "@bachp:matrix.org";
12851095 github = "bachp";
12861096 githubId = 333807;
12871097 name = "Pascal Bach";
@@ -1302,12 +1112,6 @@
13021112 email = "sivaraman.balaji@gmail.com";
13031113 name = "Balaji Sivaraman";
13041114 };
1305− balodja = {
1306− email = "balodja@gmail.com";
1307− github = "balodja";
1308− githubId = 294444;
1309− name = "Vladimir Korolev";
1310− };
13111115 baloo = {
13121116 email = "nixpkgs@superbaloo.net";
13131117 github = "baloo";
@@ -1332,24 +1136,12 @@
13321136 githubId = 127523;
13331137 name = "Herman Fries";
13341138 };
1335− BarinovMaxim = {
1336− name = "Barinov Maxim";
1337− email = "barinov274@gmail.com";
1338− github = "barinov274";
1339− githubId = 54442153;
1340− };
13411139 barrucadu = {
13421140 email = "mike@barrucadu.co.uk";
13431141 github = "barrucadu";
13441142 githubId = 75235;
13451143 name = "Michael Walker";
13461144 };
1347− bartsch = {
1348− email = "consume.noise@gmail.com";
1349− github = "bartsch";
1350− githubId = 3390885;
1351− name = "Daniel Martin";
1352− };
13531145 bartuka = {
13541146 email = "wand@hey.com";
13551147 github = "wandersoncferreira";
@@ -1374,7 +1166,6 @@
13741166 };
13751167 bb010g = {
13761168 email = "me@bb010g.com";
1377− matrix = "@bb010g:matrix.org";
13781169 github = "bb010g";
13791170 githubId = 340132;
13801171 name = "Brayden Banks";
@@ -1409,12 +1200,6 @@
14091200 githubId = 164148;
14101201 name = "Ben Darwin";
14111202 };
1412− bdd = {
1413− email = "bdd@mindcast.org";
1414− github = "bdd";
1415− githubId = 11135;
1416− name = "Berk D. Demir";
1417− };
14181203 bdesham = {
14191204 email = "benjamin@esham.io";
14201205 github = "bdesham";
@@ -1441,7 +1226,6 @@
14411226 };
14421227 bendlas = {
14431228 email = "herwig@bendlas.net";
1444− matrix = "@bendlas:matrix.org";
14451229 github = "bendlas";
14461230 githubId = 214787;
14471231 name = "Herwig Hochleitner";
@@ -1488,7 +1272,6 @@
14881272 };
14891273 berberman = {
14901274 email = "berberman@yandex.com";
1491− matrix = "@berberman:mozilla.org";
14921275 github = "berberman";
14931276 githubId = 26041945;
14941277 name = "Potato Hatsue";
@@ -1511,24 +1294,12 @@
15111294 githubId = 251106;
15121295 name = "Daniel Bergey";
15131296 };
1514− bergkvist = {
1515− email = "tobias@bergkv.ist";
1516− github = "bergkvist";
1517− githubId = 410028;
1518− name = "Tobias Bergkvist";
1519− };
15201297 betaboon = {
15211298 email = "betaboon@0x80.ninja";
15221299 github = "betaboon";
15231300 githubId = 7346933;
15241301 name = "betaboon";
15251302 };
1526− bew = {
1527− email = "benoit.dechezelles@gmail.com";
1528− github = "bew";
1529− githubId = 9730330;
1530− name = "Benoit de Chezelles";
1531− };
15321303 bfortz = {
15331304 email = "bernard.fortz@gmail.com";
15341305 github = "bfortz";
@@ -1559,12 +1330,6 @@
15591330 githubId = 28444296;
15601331 name = "Benjamin Hougland";
15611332 };
1562− billewanick = {
1563− email = "bill@ewanick.com";
1564− github = "billewanick";
1565− githubId = 13324165;
1566− name = "Bill Ewanick";
1567− };
15681333 binarin = {
15691334 email = "binarin@binarin.ru";
15701335 github = "binarin";
@@ -1601,7 +1366,6 @@
16011366 };
16021367 blitz = {
16031368 email = "js@alien8.de";
1604− matrix = "@js:ukvly.org";
16051369 github = "blitz";
16061370 githubId = 37907;
16071371 name = "Julian Stecklina";
@@ -1636,13 +1400,6 @@
16361400 githubId = 10221570;
16371401 name = "Bo Bakker";
16381402 };
1639− bobby285271 = {
1640− name = "Bobby Rong";
1641− email = "rjl931189261@126.com";
1642− matrix = "@bobby285271:matrix.org";
1643− github = "bobby285271";
1644− githubId = 20080233;
1645− };
16461403 bobvanderlinden = {
16471404 email = "bobvanderlinden@gmail.com";
16481405 github = "bobvanderlinden";
@@ -1673,16 +1430,6 @@
16731430 githubId = 87764;
16741431 name = "Ben Ford";
16751432 };
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− };
16861433 borisbabic = {
16871434 email = "boris.ivan.babic@gmail.com";
16881435 github = "borisbabic";
@@ -1737,11 +1484,11 @@
17371484 githubId = 355401;
17381485 name = "Brian Hicks";
17391486 };
1740− brianmcgee = {
1741− name = "Brian McGee";
1742− email = "brian@41north.dev";
1743− github = "brianmcgee";
1744− githubId = 1173648;
1487+ bricewge = {
1488+ email = "bricewge@gmail.com";
1489+ github = "bricewge";
1490+ githubId = 5525646;
1491+ name = "Brice Waegeneire";
17451492 };
17461493 Br1ght0ne = {
17471494 email = "brightone@protonmail.com";
@@ -1771,12 +1518,6 @@
17711518 githubId = 1111035;
17721519 name = "Break Yang";
17731520 };
1774− brecht = {
1775− email = "brecht.savelkoul@alumni.lse.ac.uk";
1776− github = "brechtcs";
1777− githubId = 6107054;
1778− name = "Brecht Savelkoul";
1779− };
17801521 brettlyons = {
17811522 email = "blyons@fastmail.com";
17821523 github = "brettlyons";
@@ -1793,15 +1534,8 @@
17931534 fingerprint = "BF4FCB85C69989B4ED95BF938AE74787A4B7C07E";
17941535 }];
17951536 };
1796− broke = {
1797− email = "broke@in-fucking.space";
1798− github = "broke";
1799− githubId = 1071610;
1800− name = "Gunnar Nitsche";
1801− };
18021537 bryanasdev000 = {
18031538 email = "bryanasdev000@gmail.com";
1804− matrix = "@bryanasdev000:matrix.org";
18051539 github = "bryanasdev000";
18061540 githubId = 53131727;
18071541 name = "Bryan Albuquerque";
@@ -1814,7 +1548,6 @@
18141548 };
18151549 buckley310 = {
18161550 email = "sean.bck@gmail.com";
1817− matrix = "@buckley310:matrix.org";
18181551 github = "buckley310";
18191552 githubId = 2379774;
18201553 name = "Sean Buckley";
@@ -1831,12 +1564,6 @@
18311564 githubId = 7214361;
18321565 name = "Roman Gerasimenko";
18331566 };
1834− builditluc = {
1835− email = "builditluc@icloud.com";
1836− github = "builditluc";
1837− githubId = 37375448;
1838− name = "Buildit";
1839− };
18401567 bburdette = {
18411568 email = "bburdette@protonmail.com";
18421569 github = "bburdette";
@@ -1914,12 +1641,6 @@
19141641 githubId = 7435854;
19151642 name = "Victor Calvert";
19161643 };
1917− cameronnemo = {
1918− email = "cnemo@tutanota.com";
1919− github = "cameronnemo";
1920− githubId = 3212452;
1921− name = "Cameron Nemo";
1922− };
19231644 campadrenalin = {
19241645 email = "campadrenalin@gmail.com";
19251646 github = "campadrenalin";
@@ -1956,12 +1677,6 @@
19561677 githubId = 82591;
19571678 name = "Carl Sverre";
19581679 };
1959− carpinchomug = {
1960− email = "aki.suda@protonmail.com";
1961− github = "carpinchomug";
1962− githubId = 101536256;
1963− name = "Akiyoshi Suda";
1964− };
19651680 cartr = {
19661681 email = "carter.sande@duodecima.technology";
19671682 github = "cartr";
@@ -1986,13 +1701,6 @@
19861701 githubId = 495429;
19871702 name = "Claas Augner";
19881703 };
1989− cawilliamson = {
1990− email = "home@chrisaw.com";
1991− github = "cawilliamson";
1992− githubId = 1141769;
1993− matrix = "@cawilliamson:nixos.dev";
1994− name = "Christopher A. Williamson";
1995− };
19961704 cbley = {
19971705 email = "claudio.bley@gmail.com";
19981706 github = "avdv";
@@ -2004,14 +1712,15 @@
20041712 github = "cburstedde";
20051713 githubId = 109908;
20061714 name = "Carsten Burstedde";
2007− keys = [{
2008− longkeyid = "rsa2048/0x0704CD9E550A6BCD";
2009− fingerprint = "1127 A432 6524 BF02 737B 544E 0704 CD9E 550A 6BCD";
2010− }];
1715+ keys = [
1716+ {
1717+ longkeyid = "rsa2048/0x0704CD9E550A6BCD";
1718+ fingerprint = "1127 A432 6524 BF02 737B 544E 0704 CD9E 550A 6BCD";
1719+ }
1720+ ];
20111721 };
20121722 cdepillabout = {
20131723 email = "cdep.illabout@gmail.com";
2014− matrix = "@cdepillabout:matrix.org";
20151724 github = "cdepillabout";
20161725 githubId = 64804;
20171726 name = "Dennis Gosnell";
@@ -2034,12 +1743,6 @@
20341743 githubId = 543423;
20351744 name = "Alex Wied";
20361745 };
2037− cfhammill = {
2038− email = "cfhammill@gmail.com";
2039− github = "cfhammill";
2040− githubId = 7467038;
2041− name = "Chris Hammill";
2042− };
20431746 cfouche = {
20441747 email = "chaddai.fouche@gmail.com";
20451748 github = "Chaddai";
@@ -2080,18 +1783,6 @@
20801783 githubId = 1762540;
20811784 name = "Changlin Li";
20821785 };
2083− chanley = {
2084− email = "charlieshanley@gmail.com";
2085− github = "charlieshanley";
2086− githubId = 8228888;
2087− name = "Charlie Hanley";
2088− };
2089− charlesbaynham = {
2090− email = "charlesbaynham@gmail.com";
2091− github = "charlesbaynham";
2092− githubId = 4397637;
2093− name = "Charles Baynham";
2094− };
20951786 CharlesHD = {
20961787 email = "charleshdespointes@gmail.com";
20971788 github = "CharlesHD";
@@ -2108,12 +1799,6 @@
21081799 email = "me@philscotted.com";
21091800 name = "Phil Scott";
21101801 };
2111− chekoopa = {
2112− email = "chekoopa@mail.ru";
2113− github = "chekoopa";
2114− githubId = 1689801;
2115− name = "Mikhail Chekan";
2116− };
21171802 ChengCat = {
21181803 email = "yu@cheng.cat";
21191804 github = "ChengCat";
@@ -2132,6 +1817,12 @@
21321817 githubId = 18648043;
21331818 name = "Daniel Cartwright";
21341819 };
1820+ chiiruno = {
1821+ email = "okinan@protonmail.com";
1822+ github = "chiiruno";
1823+ githubId = 30435868;
1824+ name = "Okina Matara";
1825+ };
21351826 Chili-Man = {
21361827 email = "dr.elhombrechile@gmail.com";
21371828 name = "Diego Rodriguez";
@@ -2148,12 +1839,6 @@
21481839 githubId = 3086255;
21491840 name = "Barry Moore II";
21501841 };
2151− chisui = {
2152− email = "chisui.pd@gmail.com";
2153− github = "chisui";
2154− githubId = 4526429;
2155− name = "Philipp Dargel";
2156− };
21571842 chivay = {
21581843 email = "hubert.jasudowicz@gmail.com";
21591844 github = "chivay";
@@ -2190,18 +1875,18 @@
21901875 githubId = 399718;
21911876 name = "Chris Martin";
21921877 };
1878+ chrisaw = {
1879+ email = "home@chrisaw.com";
1880+ github = "cawilliamson";
1881+ githubId = 1141769;
1882+ name = "Christopher A. Williamson";
1883+ };
21931884 chrisjefferson = {
21941885 email = "chris@bubblescope.net";
21951886 github = "chrisjefferson";
21961887 githubId = 811527;
21971888 name = "Christopher Jefferson";
21981889 };
2199− chrispickard = {
2200− email = "chrispickard9@gmail.com";
2201− github = "chrispickard";
2202− githubId = 1438690;
2203− name = "Chris Pickard";
2204− };
22051890 chrisrosset = {
22061891 email = "chris@rosset.org.uk";
22071892 github = "chrisrosset";
@@ -2230,42 +1915,18 @@
22301915 githubId = 12386805;
22311916 name = "Chua Hou";
22321917 };
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− };
22441918 chvp = {
22451919 email = "nixpkgs@cvpetegem.be";
2246− matrix = "@charlotte:vanpetegem.me";
22471920 github = "chvp";
22481921 githubId = 42220376;
22491922 name = "Charlotte Van Petegem";
22501923 };
2251− cigrainger = {
2252− name = "Christopher Grainger";
2253− email = "chris@amplified.ai";
2254− github = "cigrainger";
2255− githubId = 3984794;
2256− };
22571924 ciil = {
22581925 email = "simon@lackerbauer.com";
22591926 github = "ciil";
22601927 githubId = 3956062;
22611928 name = "Simon Lackerbauer";
22621929 };
2263− cirno-999 = {
2264− email = "reverene@protonmail.com";
2265− github = "cirno-999";
2266− githubId = 73712874;
2267− name = "cirno-999";
2268− };
22691930 citadelcore = {
22701931 email = "alex@arctarus.co.uk";
22711932 github = "citadelcore";
@@ -2294,17 +1955,6 @@
22941955 githubId = 25088352;
22951956 name = "Christian Kögler";
22961957 };
2297− ckie = {
2298− email = "nixpkgs-0efe364@ckie.dev";
2299− github = "ckiee";
2300− githubId = 25263210;
2301− keys = [{
2302− longkeyid = "rsa4096/0x13E79449C0525215";
2303− fingerprint = "539F 0655 4D35 38A5 429A E253 13E7 9449 C052 5215";
2304− }];
2305− name = "ckie";
2306− matrix = "@ckie:ckie.dev";
2307− };
23081958 clkamp = {
23091959 email = "c@lkamp.de";
23101960 github = "clkamp";
@@ -2329,15 +1979,8 @@
23291979 githubId = 199180;
23301980 name = "Claes Wallin";
23311981 };
2332− cleeyv = {
2333− email = "cleeyv@riseup.net";
2334− github = "cleeyv";
2335− githubId = 71959829;
2336− name = "Cleeyv";
2337− };
23381982 cleverca22 = {
23391983 email = "cleverca22@gmail.com";
2340− matrix = "@cleverca22:matrix.org";
23411984 github = "cleverca22";
23421985 githubId = 848609;
23431986 name = "Michael Bishop";
@@ -2382,12 +2025,6 @@
23822025 githubId = 34317;
23832026 name = "Corey O'Connor";
23842027 };
2385− CodeLongAndProsper90 = {
2386− github = "CodeLongAndProsper90";
2387− githubId = 50145141;
2388− email = "jupiter@m.rdis.dev";
2389− name = "Scott Little";
2390− };
23912028 codsl = {
23922029 email = "codsl@riseup.net";
23932030 github = "codsl";
@@ -2400,13 +2037,6 @@
24002037 githubId = 5561189;
24012038 name = "Cody Opel";
24022039 };
2403− Cogitri = {
2404− email = "oss@cogitri.dev";
2405− github = "Cogitri";
2406− githubId = 8766773;
2407− matrix = "@cogitri:cogitri.dev";
2408− name = "Rasmus Thomsen";
2409− };
24102040 cohei = {
24112041 email = "a.d.xvii.kal.mai@gmail.com";
24122042 github = "cohei";
@@ -2421,7 +2051,6 @@
24212051 };
24222052 colemickens = {
24232053 email = "cole.mickens@gmail.com";
2424− matrix = "@colemickens:matrix.org";
24252054 github = "colemickens";
24262055 githubId = 327028;
24272056 name = "Cole Mickens";
@@ -2435,7 +2064,6 @@
24352064 cole-h = {
24362065 name = "Cole Helbling";
24372066 email = "cole.e.helbling@outlook.com";
2438− matrix = "@cole-h:matrix.org";
24392067 github = "cole-h";
24402068 githubId = 28582702;
24412069 keys = [{
@@ -2479,13 +2107,6 @@
24792107 githubId = 11145016;
24802108 name = "J.C.";
24812109 };
2482− congee = {
2483− email = "changshengwu@pm.me";
2484− matrix = "@congeec:matrix.org";
2485− github = "congee";
2486− name = "Changsheng Wu";
2487− githubId = 2083950;
2488− };
24892110 contrun = {
24902111 email = "uuuuuu@protonmail.com";
24912112 github = "contrun";
@@ -2498,23 +2119,6 @@
24982119 githubId = 5510514;
24992120 name = "Conrad Mearns";
25002121 };
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− };
25182122 couchemar = {
25192123 email = "couchemar@yandex.ru";
25202124 github = "couchemar";
@@ -2555,12 +2159,6 @@
25552159 githubId = 12202789;
25562160 name = "CrazedProgrammer";
25572161 };
2558− creator54 = {
2559− email = "hi.creator54@gmail.com";
2560− github = "creator54";
2561− githubId = 34543609;
2562− name = "creator54";
2563− };
25642162 cript0nauta = {
25652163 email = "shareman1204@gmail.com";
25662164 github = "cript0nauta";
@@ -2569,7 +2167,6 @@
25692167 };
25702168 CRTified = {
25712169 email = "carl.schneider+nixos@rub.de";
2572− matrix = "@schnecfk:ruhr-uni-bochum.de";
25732170 github = "CRTified";
25742171 githubId = 2440581;
25752172 name = "Carl Richard Theodor Schneider";
@@ -2624,12 +2221,6 @@
26242221 githubId = 1382175;
26252222 name = "Oliver Matthews";
26262223 };
2627− cyounkins = {
2628− name = "Craig Younkins";
2629− email = "cyounkins@gmail.com";
2630− github = "cyounkins";
2631− githubId = 346185;
2632− };
26332224 cypherpunk2140 = {
26342225 email = "stefan.mihaila@pm.me";
26352226 github = "stefan-mihaila";
@@ -2648,7 +2239,6 @@
26482239 };
26492240 cyplo = {
26502241 email = "nixos@cyplo.dev";
2651− matrix = "@cyplo:cyplo.dev";
26522242 github = "cyplo";
26532243 githubId = 217899;
26542244 name = "Cyryl Płotnicki";
@@ -2663,12 +2253,6 @@
26632253 fingerprint = "1C4E F4FE 7F8E D8B7 1E88 CCDF BAB1 D15F B7B4 D4CE";
26642254 }];
26652255 };
2666− d-xo = {
2667− email = "hi@d-xo.org";
2668− github = "d-xo";
2669− githubId = 6689924;
2670− name = "David Terry";
2671− };
26722256 dadada = {
26732257 name = "dadada";
26742258 email = "dadada@dadada.li";
@@ -2685,12 +2269,6 @@
26852269 githubId = 4331004;
26862270 name = "Naoya Hatta";
26872271 };
2688− dalpd = {
2689− email = "denizalpd@ogr.iu.edu.tr";
2690− github = "dalpd";
2691− githubId = 16895361;
2692− name = "Deniz Alp Durmaz";
2693− };
26942272 DamienCassou = {
26952273 email = "damien@cassou.me";
26962274 github = "DamienCassou";
@@ -2717,7 +2295,6 @@
27172295 };
27182296 dandellion = {
27192297 email = "daniel@dodsorf.as";
2720− matrix = "@dandellion:dodsorf.as";
27212298 github = "dali99";
27222299 githubId = 990767;
27232300 name = "Daniel Olsen";
@@ -2752,30 +2329,12 @@
27522329 githubId = 1298344;
27532330 name = "Daniel Fullmer";
27542331 };
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− };
27662332 dan4ik605743 = {
27672333 email = "6057430gu@gmail.com";
27682334 github = "dan4ik605743";
27692335 githubId = 86075850;
27702336 name = "Danil Danevich";
27712337 };
2772− darkonion0 = {
2773− name = "Alexandre Peruggia";
2774− email = "darkgenius1@protonmail.com";
2775− matrix = "@alexoo:matrix.org";
2776− github = "DarkOnion0";
2777− githubId = 68606322;
2778− };
27792338 das-g = {
27802339 email = "nixpkgs@raphael.dasgupta.ch";
27812340 github = "das-g";
@@ -2784,7 +2343,6 @@
27842343 };
27852344 das_j = {
27862345 email = "janne@hess.ooo";
2787− matrix = "@janne.hess:helsinki-systems.de";
27882346 github = "dasJ";
27892347 githubId = 4971975;
27902348 name = "Janne Heß";
@@ -2809,12 +2367,6 @@
28092367 email = "christoph.senjak@googlemail.com";
28102368 name = "Christoph-Simon Senjak";
28112369 };
2812− datafoo = {
2813− email = "34766150+datafoo@users.noreply.github.com";
2814− github = "datafoo";
2815− githubId = 34766150;
2816− name = "datafoo";
2817− };
28182370 davhau = {
28192371 email = "d.hauer.it@gmail.com";
28202372 name = "David Hauer";
@@ -2835,17 +2387,10 @@
28352387 };
28362388 davidak = {
28372389 email = "post@davidak.de";
2838− matrix = "@davidak:matrix.org";
28392390 github = "davidak";
28402391 githubId = 91113;
28412392 name = "David Kleuker";
28422393 };
2843− davidarmstronglewis = {
2844− email = "davidlewis@mac.com";
2845− github = "davidarmstronglewis";
2846− githubId = 6754950;
2847− name = "David Armstrong Lewis";
2848− };
28492394 davidrusu = {
28502395 email = "davidrusu.me@gmail.com";
28512396 github = "davidrusu";
@@ -2874,12 +2419,6 @@
28742419 githubId = 49904992;
28752420 name = "Dawid Sowa";
28762421 };
2877− dbeckwith = {
2878− email = "djbsnx@gmail.com";
2879− github = "dbeckwith";
2880− githubId = 1279939;
2881− name = "Daniel Beckwith";
2882− };
28832422 dbirks = {
28842423 email = "david@birks.dev";
28852424 github = "dbirks";
@@ -2930,12 +2469,6 @@
29302469 githubId = 452652;
29312470 name = "Kosyrev Serge";
29322471 };
2933− DeeUnderscore = {
2934− email = "d.anzorge@gmail.com";
2935− github = "DeeUnderscore";
2936− githubId = 156239;
2937− name = "D Anzorge";
2938− };
29392472 delan = {
29402473 name = "Delan Azabani";
29412474 email = "delan@azabani.com";
@@ -2954,16 +2487,6 @@
29542487 githubId = 202798;
29552488 name = "Pierre Bourdon";
29562489 };
2957− delta = {
2958− email = "d4delta@outlook.fr";
2959− name = "Delta";
2960− };
2961− deltadelta = {
2962− email = "contact@libellules.eu";
2963− name = "Dara Ly";
2964− github = "tournemire";
2965− githubId = 20159432;
2966− };
29672490 deltaevo = {
29682491 email = "deltaduartedavid@gmail.com";
29692492 github = "DeltaEvo";
@@ -2994,24 +2517,12 @@
29942517 githubId = 706758;
29952518 name = "Christian Gerbrandt";
29962519 };
2997− derekcollison = {
2998− email = "derek@nats.io";
2999− github = "derekcollison";
3000− githubId = 90097;
3001− name = "Derek Collison";
3002− };
30032520 DerGuteMoritz = {
30042521 email = "moritz@twoticketsplease.de";
30052522 github = "DerGuteMoritz";
30062523 githubId = 19733;
30072524 name = "Moritz Heidkamp";
30082525 };
3009− DerickEddington = {
3010− email = "derick.eddington@pm.me";
3011− github = "DerickEddington";
3012− githubId = 4731128;
3013− name = "Derick Eddington";
3014− };
30152526 dermetfan = {
30162527 email = "serverkorken@gmail.com";
30172528 github = "dermetfan";
@@ -3060,24 +2571,12 @@
30602571 githubId = 4708206;
30612572 name = "Daniel Fox Franke";
30622573 };
3063− dgliwka = {
3064− email = "dawid.gliwka@gmail.com";
3065− github = "dgliwka";
3066− githubId = 33262214;
3067− name = "Dawid Gliwka";
3068− };
30692574 dgonyeo = {
30702575 email = "derek@gonyeo.com";
30712576 github = "dgonyeo";
30722577 githubId = 2439413;
30732578 name = "Derek Gonyeo";
30742579 };
3075− dguenther = {
3076− email = "dguenther9@gmail.com";
3077− github = "dguenther";
3078− githubId = 767083;
3079− name = "Derek Guenther";
3080− };
30812580 dhkl = {
30822581 email = "david@davidslab.com";
30832582 github = "dhl";
@@ -3096,12 +2595,6 @@
30962595 githubId = 8404455;
30972596 name = "Diego Lelis";
30982597 };
3099− DieracDelta = {
3100− email = "justin@restivo.me";
3101− github = "DieracDelta";
3102− githubId = 13730968;
3103− name = "Justin Restivo";
3104− };
31052598 diffumist = {
31062599 email = "git@diffumist.me";
31072600 github = "diffumist";
@@ -3138,12 +2631,6 @@
31382631 githubId = 40633781;
31392632 name = "Sergei S.";
31402633 };
3141− dit7ya = {
3142− email = "7rat13@gmail.com";
3143− github = "dit7ya";
3144− githubId = 14034137;
3145− name = "Mostly Void";
3146− };
31472634 dizfer = {
31482635 email = "david@izquierdofernandez.com";
31492636 github = "dizfer";
@@ -3180,12 +2667,6 @@
31802667 githubId = 28980797;
31812668 name = "David Leslie";
31822669 };
3183− dlip = {
3184− email = "dane@lipscombe.com.au";
3185− github = "dlip";
3186− githubId = 283316;
3187− name = "Dane Lipscombe";
3188− };
31892670 dmalikov = {
31902671 email = "malikov.d.y@gmail.com";
31912672 github = "dmalikov";
@@ -3248,7 +2729,6 @@
32482729 };
32492730 dotlambda = {
32502731 email = "rschuetz17@gmail.com";
3251− matrix = "@robert:funklause.de";
32522732 github = "dotlambda";
32532733 githubId = 6806011;
32542734 name = "Robert Schütz";
@@ -3319,20 +2799,9 @@
33192799 githubId = 10198051;
33202800 name = "Drew Risinger";
33212801 };
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− };
33322802 drupol = {
33332803 name = "Pol Dellaiera";
33342804 email = "pol.dellaiera@protonmail.com";
3335− matrix = "@drupol:matrix.org";
33362805 github = "drupol";
33372806 githubId = 252042;
33382807 keys = [{
@@ -3340,18 +2809,6 @@
33402809 fingerprint = "85F3 72DF 4AF3 EF13 ED34 72A3 0AAF 2901 E804 0715";
33412810 }];
33422811 };
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− };
33552812 dschrempf = {
33562813 name = "Dominik Schrempf";
33572814 email = "dominik.schrempf@gmail.com";
@@ -3408,7 +2865,6 @@
34082865 };
34092866 dywedir = {
34102867 email = "dywedir@gra.red";
3411− matrix = "@dywedir:matrix.org";
34122868 github = "dywedir";
34132869 githubId = 399312;
34142870 name = "Vladyslav M.";
@@ -3451,21 +2907,10 @@
34512907 };
34522908 earvstedt = {
34532909 email = "erik.arvstedt@gmail.com";
3454− matrix = "@erikarvstedt:matrix.org";
34552910 github = "erikarvstedt";
34562911 githubId = 36110478;
34572912 name = "Erik Arvstedt";
34582913 };
3459− ebbertd = {
3460− email = "daniel@ebbert.nrw";
3461− github = "ebbertd";
3462− githubId = 20522234;
3463− name = "Daniel Ebbert";
3464− keys = [{
3465− longkeyid = "rsa2048/0x47BC155927CBB9C7";
3466− fingerprint = "E765 FCA3 D9BF 7FDB 856E AD73 47BC 1559 27CB B9C7";
3467− }];
3468− };
34692914 ebzzry = {
34702915 email = "ebzzry@ebzzry.io";
34712916 github = "ebzzry";
@@ -3496,11 +2941,11 @@
34962941 githubId = 50854;
34972942 name = "edef";
34982943 };
3499− edlimerkaj = {
3500− name = "Edli Merkaj";
3501− email = "edli.merkaj@identinet.io";
3502− github = "edlimerkaj";
3503− githubId = 71988351;
2944+ edibopp = {
2945+ email = "eduard.bopp@aepsil0n.de";
2946+ github = "edibopp";
2947+ githubId = 3098430;
2948+ name = "Eduard Bopp";
35042949 };
35052950 emantor = {
35062951 email = "rouven+nixos@czerwinskis.de";
@@ -3520,12 +2965,6 @@
35202965 githubId = 18535642;
35212966 name = "Emily";
35222967 };
3523− emilytrau = {
3524− name = "Emily Trau";
3525− email = "nix@angus.ws";
3526− github = "emilytrau";
3527− githubId = 13267947;
3528− };
35292968 enderger = {
35302969 email = "endergeryt@gmail.com";
35312970 github = "enderger";
@@ -3544,6 +2983,12 @@
35442983 githubId = 119483;
35452984 name = "Matthew Brown";
35462985 };
2986+ eduardosm = {
2987+ email = "esm@eduardosm.net";
2988+ github = "eduardosm";
2989+ githubId = 761151;
2990+ name = "Eduardo Sánchez Muñoz";
2991+ };
35472992 eduarrrd = {
35482993 email = "e.bachmakov@gmail.com";
35492994 github = "eduarrrd";
@@ -3588,7 +3033,6 @@
35883033 };
35893034 ekleog = {
35903035 email = "leo@gaspard.io";
3591− matrix = "@leo:gaspard.ninja";
35923036 github = "ekleog";
35933037 githubId = 411447;
35943038 name = "Leo Gaspard";
@@ -3599,12 +3043,6 @@
35993043 githubId = 4742;
36003044 name = "Aaron Bull Schaefer";
36013045 };
3602− elatov = {
3603− email = "elatov@gmail.com";
3604− github = "elatov";
3605− githubId = 7494394;
3606− name = "Karim Elatov";
3607− };
36083046 eleanor = {
36093047 email = "dejan@proteansec.com";
36103048 github = "proteansec";
@@ -3617,12 +3055,6 @@
36173055 githubId = 103082;
36183056 name = "Ed Brindley";
36193057 };
3620− elliot = {
3621− email = "hack00mind@gmail.com";
3622− github = "Eliot00";
3623− githubId = 18375468;
3624− name = "Elliot Xu";
3625− };
36263058 elliottvillars = {
36273059 email = "elliottvillars@gmail.com";
36283060 github = "elliottvillars";
@@ -3631,7 +3063,6 @@
36313063 };
36323064 eliasp = {
36333065 email = "mail@eliasprobst.eu";
3634− matrix = "@eliasp:kde.org";
36353066 github = "eliasp";
36363067 githubId = 48491;
36373068 name = "Elias Probst";
@@ -3691,18 +3122,11 @@
36913122 name = "Leo Maroni";
36923123 };
36933124 emmanuelrosa = {
3694− email = "emmanuelrosa@protonmail.com";
3695− matrix = "@emmanuelrosa:matrix.org";
3125+ email = "emmanuel_rosa@aol.com";
36963126 github = "emmanuelrosa";
36973127 githubId = 13485450;
36983128 name = "Emmanuel Rosa";
36993129 };
3700− emptyflask = {
3701− email = "jon@emptyflask.dev";
3702− github = "emptyflask";
3703− githubId = 28287;
3704− name = "Jon Roberts";
3705− };
37063130 endgame = {
37073131 email = "jack@jackkelly.name";
37083132 github = "endgame";
@@ -3721,9 +3145,9 @@
37213145 githubId = 5493775;
37223146 name = "Ente";
37233147 };
3724− Enzime = {
3148+ enzime = {
37253149 email = "enzime@users.noreply.github.com";
3726− github = "Enzime";
3150+ github = "enzime";
37273151 githubId = 10492681;
37283152 name = "Michael Hoang";
37293153 };
@@ -3771,13 +3195,6 @@
37713195 fingerprint = "2D37 1AD2 7E2B BC77 97E1 B759 6C79 278F 3FCD CC02";
37723196 }];
37733197 };
3774− ereslibre = {
3775− email = "ereslibre@ereslibre.es";
3776− matrix = "@ereslibre:matrix.org";
3777− github = "ereslibre";
3778− githubId = 8706;
3779− name = "Rafael Fernández López";
3780− };
37813198 ericbmerritt = {
37823199 email = "eric@afiniate.com";
37833200 github = "ericbmerritt";
@@ -3798,7 +3215,6 @@
37983215 };
37993216 ericson2314 = {
38003217 email = "John.Ericson@Obsidian.Systems";
3801− matrix = "@ericson2314:matrix.org";
38023218 github = "ericson2314";
38033219 githubId = 1055245;
38043220 name = "John Ericson";
@@ -3881,22 +3297,8 @@
38813297 githubId = 222467;
38823298 name = "Dmitry Ivanov";
38833299 };
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− };
38973300 etu = {
38983301 email = "elis@hirwing.se";
3899− matrix = "@etu:semi.social";
39003302 github = "etu";
39013303 githubId = 461970;
39023304 name = "Elis Hirwing";
@@ -3914,7 +3316,6 @@
39143316 evalexpr = {
39153317 name = "Jonathan Wilkins";
39163318 email = "nixos@wilkins.tech";
3917− matrix = "@evalexpr:matrix.org";
39183319 github = "evalexpr";
39193320 githubId = 23485511;
39203321 keys = [{
@@ -3948,7 +3349,6 @@
39483349 };
39493350 evils = {
39503351 email = "evils.devils@protonmail.com";
3951− matrix = "@evils:nixos.dev";
39523352 github = "evils";
39533353 githubId = 30512529;
39543354 name = "Evils";
@@ -3959,12 +3359,6 @@
39593359 githubId = 454695;
39603360 name = "Artur Taranchiev";
39613361 };
3962− exarkun = {
3963− email = "exarkun@twistedmatrix.com";
3964− github = "exarkun";
3965− githubId = 254565;
3966− name = "Jean-Paul Calderone";
3967− };
39683362 exfalso = {
39693363 email = "0slemi0@gmail.com";
39703364 github = "exfalso";
@@ -3985,14 +3379,9 @@
39853379 };
39863380 expipiplus1 = {
39873381 email = "nix@monoid.al";
3988− matrix = "@ellie:monoid.al";
39893382 github = "expipiplus1";
39903383 githubId = 857308;
3991− name = "Ellie Hermaszewska";
3992− keys = [{
3993− longkeyid = "rsa4096/0xC8116E3A0C1CA76A";
3994− fingerprint = "FC1D 3E4F CBCA 80DF E870 6397 C811 6E3A 0C1C A76A";
3995− }];
3384+ name = "Joe Hermaszewski";
39963385 };
39973386 extends = {
39983387 email = "sharosari@gmail.com";
@@ -4002,7 +3391,6 @@
40023391 };
40033392 eyjhb = {
40043393 email = "eyjhbb@gmail.com";
4005− matrix = "@eyjhb:eyjhb.dk";
40063394 github = "eyJhb";
40073395 githubId = 25955146;
40083396 name = "eyJhb";
@@ -4021,7 +3409,6 @@
40213409 };
40223410 fab = {
40233411 email = "mail@fabian-affolter.ch";
4024− matrix = "@fabaff:matrix.org";
40253412 name = "Fabian Affolter";
40263413 github = "fabaff";
40273414 githubId = 116184;
@@ -4030,12 +3417,6 @@
40303417 fingerprint = "2F6C 930F D3C4 7E38 6AFA 4EB4 E23C D2DD 36A4 397F";
40313418 }];
40323419 };
4033− fabiangd = {
4034− email = "fabian.g.droege@gmail.com";
4035− name = "Fabian G. Dröge";
4036− github = "FabianGD";
4037− githubId = 40316600;
4038− };
40393420 fabianhauser = {
40403421 email = "fabian.nixos@fh2.ch";
40413422 github = "fabianhauser";
@@ -4076,12 +3457,6 @@
40763457 githubId = 1276854;
40773458 name = "Florian Peter";
40783459 };
4079− fbeffa = {
4080− email = "beffa@fbengineering.ch";
4081− github = "fedeinthemix";
4082− githubId = 7670450;
4083− name = "Federico Beffa";
4084− };
40853460 fbrs = {
40863461 email = "yuuki@protonmail.com";
40873462 github = "cideM";
@@ -4094,13 +3469,6 @@
40943469 githubId = 541748;
40953470 name = "Felipe Espinoza";
40963471 };
4097− fedx-sudo = {
4098− email = "fedx-sudo@pm.me";
4099− github = "Fedx-sudo";
4100− githubId = 66258975;
4101− name = "Fedx sudo";
4102− matrix = "fedx:matrix.org";
4103− };
41043472 fehnomenal = {
41053473 email = "fehnomenal@fehn.systems";
41063474 github = "fehnomenal";
@@ -4121,21 +3489,13 @@
41213489 };
41223490 felschr = {
41233491 email = "dev@felschr.com";
4124− matrix = "@felschr:matrix.org";
41253492 github = "felschr";
41263493 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− ];
3494+ name = "Felix Tenley";
3495+ keys = [{
3496+ longkeyid = "ed25519/0x910ACB9F6BD26F58";
3497+ fingerprint = "6AB3 7A28 5420 9A41 82D9 0068 910A CB9F 6BD2 6F58";
3498+ }];
41393499 };
41403500 ffinkdevs = {
41413501 email = "fink@h0st.space";
@@ -4145,14 +3505,12 @@
41453505 };
41463506 fgaz = {
41473507 email = "fgaz@fgaz.me";
4148− matrix = "@fgaz:matrix.org";
41493508 github = "fgaz";
41503509 githubId = 8182846;
41513510 name = "Francesco Gazzetta";
41523511 };
41533512 figsoda = {
41543513 email = "figsoda@pm.me";
4155− matrix = "@figsoda:matrix.org";
41563514 github = "figsoda";
41573515 githubId = 40620903;
41583516 name = "figsoda";
@@ -4181,12 +3539,6 @@
41813539 github = "fitzgibbon";
41823540 githubId = 617048;
41833541 };
4184− fkautz = {
4185− name = "Frederick F. Kautz IV";
4186− email = "fkautz@alumni.cmu.edu";
4187− github = "fkautz";
4188− githubId = 135706;
4189− };
41903542 Flakebi = {
41913543 email = "flakebi@t-online.de";
41923544 github = "Flakebi";
@@ -4197,12 +3549,6 @@
41973549 fingerprint = "2F93 661D AC17 EA98 A104 F780 ECC7 55EE 583C 1672";
41983550 }];
41993551 };
4200− flexagoon = {
4201− email = "flexagoon@pm.me";
4202− github = "flexagoon";
4203− githubId = 66178592;
4204− name = "Pavel Zolotarevskiy";
4205− };
42063552 flexw = {
42073553 email = "felix.weilbach@t-online.de";
42083554 github = "FlexW";
@@ -4221,12 +3567,6 @@
42213567 githubId = 183879;
42223568 name = "Florian Klink";
42233569 };
4224− florentc = {
4225− email = "florentc@users.noreply.github.com";
4226− github = "florentc";
4227− githubId = 1149048;
4228− name = "Florent Ch.";
4229− };
42303570 FlorianFranzen = {
42313571 email = "Florian.Franzen@gmail.com";
42323572 github = "FlorianFranzen";
@@ -4283,7 +3623,6 @@
42833623 };
42843624 fortuneteller2k = {
42853625 email = "lythe1107@gmail.com";
4286− matrix = "@fortuneteller2k:matrix.org";
42873626 github = "fortuneteller2k";
42883627 githubId = 20619776;
42893628 name = "fortuneteller2k";
@@ -4311,18 +3650,19 @@
43113650 githubId = 119691;
43123651 name = "Michael Gough";
43133652 };
4314− freax13 = {
4315− email = "erbse.13@gmx.de";
4316− github = "freax13";
4317− githubId = 14952658;
4318− name = "Tom Dohrmann";
4319− };
3653+
43203654 fredeb = {
43213655 email = "im@fredeb.dev";
43223656 github = "fredeeb";
43233657 githubId = 7551358;
43243658 name = "Frede Emil";
43253659 };
3660+ freepotion = {
3661+ email = "42352817+freepotion@users.noreply.github.com";
3662+ github = "freepotion";
3663+ githubId = 42352817;
3664+ name = "Free Potion";
3665+ };
43263666 freezeboy = {
43273667 email = "freezeboy@users.noreply.github.com";
43283668 github = "freezeboy";
@@ -4445,16 +3785,6 @@
44453785 githubId = 1313787;
44463786 name = "Gabriel Gonzalez";
44473787 };
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− };
44583788 gal_bolle = {
44593789 email = "florent.becker@ens-lyon.org";
44603790 github = "FlorentBecker";
@@ -4479,12 +3809,6 @@
44793809 githubId = 20208;
44803810 name = "Rok Garbas";
44813811 };
4482− gardspirito = {
4483− name = "gardspirito";
4484− email = "nyxoroso@gmail.com";
4485− github = "gardspirito";
4486− githubId = 29687558;
4487− };
44883812 garrison = {
44893813 email = "jim@garrison.cc";
44903814 github = "garrison";
@@ -4503,28 +3827,12 @@
45033827 githubId = 16470252;
45043828 name = "Gemini Lasswell";
45053829 };
4506− gbtb = {
4507− email = "goodbetterthebeast3@gmail.com";
4508− github = "gbtb";
4509− githubId = 37017396;
4510− name = "gbtb";
4511− };
45123830 gebner = {
45133831 email = "gebner@gebner.org";
45143832 github = "gebner";
45153833 githubId = 313929;
45163834 name = "Gabriel Ebner";
45173835 };
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− };
45283836 georgewhewell = {
45293837 email = "georgerw@gmail.com";
45303838 github = "georgewhewell";
@@ -4555,17 +3863,10 @@
45553863 };
45563864 ggpeti = {
45573865 email = "ggpeti@gmail.com";
4558− matrix = "@ggpeti:ggpeti.com";
45593866 github = "ggpeti";
45603867 githubId = 3217744;
45613868 name = "Peter Ferenczy";
45623869 };
4563− ghostbuster91 = {
4564− name = "Kasper Kondzielski";
4565− email = "kghost0@gmail.com";
4566− github = "ghostbuster91";
4567− githubId = 5662622;
4568− };
45693870 ghuntley = {
45703871 email = "ghuntley@ghuntley.com";
45713872 github = "ghuntley";
@@ -4584,24 +3885,12 @@
45843885 githubId = 27668;
45853886 name = "Tobias Pflug";
45863887 };
4587− gin66 = {
4588− email = "jochen@kiemes.de";
4589− github = "gin66";
4590− githubId = 5549373;
4591− name = "Jochen Kiemes";
4592− };
45933888 giogadi = {
45943889 email = "lgtorres42@gmail.com";
45953890 github = "giogadi";
45963891 githubId = 1713676;
45973892 name = "Luis G. Torres";
45983893 };
4599− GKasparov = {
4600− email = "mizozahr@gmail.com";
4601− github = "GKasparov";
4602− githubId = 60962839;
4603− name = "Mazen Zahr";
4604− };
46053894 gleber = {
46063895 email = "gleber.p@gmail.com";
46073896 github = "gleber";
@@ -4666,16 +3955,6 @@
46663955 githubId = 1621335;
46673956 name = "Andrew Trachenko";
46683957 };
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− };
46793958 govanify = {
46803959 name = "Gauvain 'GovanifY' Roussel-Tarbouriech";
46813960 email = "gauvain@govanify.com";
@@ -4686,16 +3965,6 @@
46863965 fingerprint = "5214 2D39 A7CE F8FA 872B CA7F DE62 E1E2 A614 5556";
46873966 }];
46883967 };
4689− gpanders = {
4690− name = "Gregory Anders";
4691− email = "greg@gpanders.com";
4692− github = "gpanders";
4693− githubId = 8965202;
4694− keys = [{
4695− longkeyid = "rsa2048/0x56E93C2FB6B08BDB";
4696− fingerprint = "B9D5 0EDF E95E ECD0 C135 00A9 56E9 3C2F B6B0 8BDB";
4697− }];
4698− };
46993968 gpyh = {
47003969 email = "yacine.hmito@gmail.com";
47013970 github = "yacinehmito";
@@ -4720,12 +3989,6 @@
47203989 githubId = 4656860;
47213990 name = "Gaute Ravndal";
47223991 };
4723− graysonhead = {
4724− email = "grayson@graysonhead.net";
4725− github = "graysonhead";
4726− githubId = 6179496;
4727− name = "Grayson Head";
4728− };
47293992 grburst = {
47303993 email = "GRBurst@protonmail.com";
47313994 github = "GRBurst";
@@ -4754,12 +4017,6 @@
47544017 githubId = 201997;
47554018 name = "Eric Seidel";
47564019 };
4757− grindhold = {
4758− name = "grindhold";
4759− email = "grindhold+nix@skarphed.org";
4760− github = "grindhold";
4761− githubId = 2592640;
4762− };
47634020 gspia = {
47644021 email = "iahogsp@gmail.com";
47654022 github = "gspia";
@@ -4778,18 +4035,6 @@
47784035 githubId = 343415;
47794036 name = "Greg Roodt";
47804037 };
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− };
47934038 gschwartz = {
47944039 email = "gsch@pennmedicine.upenn.edu";
47954040 github = "GregorySchwartz";
@@ -4841,7 +4086,6 @@
48414086 gytis-ivaskevicius = {
48424087 name = "Gytis Ivaskevicius";
48434088 email = "me@gytis.io";
4844− matrix = "@gytis-ivaskevicius:matrix.org";
48454089 github = "gytis-ivaskevicius";
48464090 githubId = 23264966;
48474091 };
@@ -4887,7 +4131,6 @@
48874131 };
48884132 happysalada = {
48894133 email = "raphael@megzari.com";
4890− matrix = "@happysalada:matrix.org";
48914134 github = "happysalada";
48924135 githubId = 5317234;
48934136 name = "Raphael Megzari";
@@ -4898,16 +4141,6 @@
48984141 githubId = 54728477;
48994142 name = "Happy River";
49004143 };
4901− hardselius = {
4902− email = "martin@hardselius.dev";
4903− github = "hardselius";
4904− githubId = 1422583;
4905− name = "Martin Hardselius";
4906− keys = [{
4907− longkeyid = "rsa4096/0x03A6E6F786936619";
4908− fingerprint = "3F35 E4CA CBF4 2DE1 2E90 53E5 03A6 E6F7 8693 6619";
4909− }];
4910− };
49114144 haslersn = {
49124145 email = "haslersn@fius.informatik.uni-stuttgart.de";
49134146 github = "haslersn";
@@ -4920,15 +4153,8 @@
49204153 githubId = 731722;
49214154 name = "Ryan Scheel";
49224155 };
4923− hawkw = {
4924− email = "eliza@elizas.website";
4925− github = "hawkw";
4926− githubId = 2796466;
4927− name = "Eliza Weisman";
4928− };
49294156 hax404 = {
49304157 email = "hax404foogit@hax404.de";
4931− matrix = "@hax404:hax404.de";
49324158 github = "hax404";
49334159 githubId = 1379411;
49344160 name = "Georg Haas";
@@ -4945,16 +4171,6 @@
49454171 githubId = 147689;
49464172 name = "Hans-Christian Esperer";
49474173 };
4948− hdhog = {
4949− name = "Serg Larchenko";
4950− email = "hdhog@hdhog.ru";
4951− github = "hdhog";
4952− githubId = 386666;
4953− keys = [{
4954− longkeyid = "rsa496/952EACB76703BA63";
4955− fingerprint = "A25F 6321 AAB4 4151 4085 9924 952E ACB7 6703 BA63";
4956− }];
4957− };
49584174 hectorj = {
49594175 email = "hector.jusforgues+nixos@gmail.com";
49604176 github = "hectorj";
@@ -4979,13 +4195,6 @@
49794195 githubId = 2405974;
49804196 name = "Sébastian Méric de Bellefon";
49814197 };
4982− henkkalkwater = {
4983− email = "chris+nixpkgs@netsoj.nl";
4984− github = "HenkKalkwater";
4985− githubId = 4262067;
4986− matrix = "@chris:netsoj.nl";
4987− name = "Chris Josten";
4988− };
49894198 henrikolsson = {
49904199 email = "henrik@fixme.se";
49914200 github = "henrikolsson";
@@ -4998,12 +4207,6 @@
49984207 githubId = 6430643;
49994208 name = "Henry Till";
50004209 };
5001− heph2 = {
5002− email = "srht@mrkeebs.eu";
5003− github = "heph2";
5004− githubId = 87579883;
5005− name = "Marco";
5006− };
50074210 herberteuler = {
50084211 email = "herberteuler@gmail.com";
50094212 github = "herberteuler";
@@ -5012,17 +4215,10 @@
50124215 };
50134216 hexa = {
50144217 email = "hexa@darmstadt.ccc.de";
5015− matrix = "@hexa:lossy.network";
50164218 github = "mweinelt";
50174219 githubId = 131599;
50184220 name = "Martin Weinelt";
50194221 };
5020− hexagonal-sun = {
5021− email = "dev@mattleach.net";
5022− github = "hexagonal-sun";
5023− githubId = 222664;
5024− name = "Matthew Leach";
5025− };
50264222 hh = {
50274223 email = "hh@m-labs.hk";
50284224 github = "HarryMakes";
@@ -5041,12 +4237,6 @@
50414237 github = "higebu";
50424238 githubId = 733288;
50434239 };
5044− hiljusti = {
5045− name = "J.R. Hill";
5046− email = "hiljusti@so.dang.cool";
5047− github = "hiljusti";
5048− githubId = 17605298;
5049− };
50504240 hinton = {
50514241 email = "t@larkery.com";
50524242 name = "Tom Hinton";
@@ -5083,12 +4273,6 @@
50834273 fingerprint = "D618 7A03 A40A 3D56 62F5 4B46 03EF BF83 9A5F DC15";
50844274 }];
50854275 };
5086− hleboulanger = {
5087− email = "hleboulanger@protonmail.com";
5088− name = "Harold Leboulanger";
5089− github = "thbkrhsw";
5090− githubId = 33122;
5091− };
50924276 hlolli = {
50934277 email = "hlolli@gmail.com";
50944278 github = "hlolli";
@@ -5117,12 +4301,6 @@
51174301 githubId = 896431;
51184302 name = "Chris Hodapp";
51194303 };
5120− hollowman6 = {
5121− email = "hollowman@hollowman.ml";
5122− github = "HollowMan6";
5123− githubId = 43995067;
5124− name = "Songlin Jiang";
5125− };
51264304 holymonson = {
51274305 email = "holymonson@gmail.com";
51284306 github = "holymonson";
@@ -5143,7 +4321,6 @@
51434321 };
51444322 hoverbear = {
51454323 email = "operator+nix@hoverbear.org";
5146− matrix = "@hoverbear:matrix.org";
51474324 github = "hoverbear";
51484325 githubId = 130903;
51494326 name = "Ana Hobden";
@@ -5154,12 +4331,6 @@
51544331 github = "HolgerPeters";
51554332 githubId = 4097049;
51564333 };
5157− hqurve = {
5158− email = "hqurve@outlook.com";
5159− github = "hqurve";
5160− githubId = 53281855;
5161− name = "hqurve";
5162− };
51634334 hrdinka = {
51644335 email = "c.nix@hrdinka.at";
51654336 github = "hrdinka";
@@ -5202,16 +4373,6 @@
52024373 githubId = 12491746;
52034374 name = "Masato Yonekawa";
52044375 };
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− };
52154376 hyzual = {
52164377 email = "hyzual@gmail.com";
52174378 github = "Hyzual";
@@ -5230,19 +4391,8 @@
52304391 githubId = 2789926;
52314392 name = "Imran Hossain";
52324393 };
5233− iagoq = {
5234− email = "18238046+iagocq@users.noreply.github.com";
5235− github = "iagocq";
5236− githubId = 18238046;
5237− name = "Iago Manoel Brito";
5238− keys = [{
5239− longkeyid = "rsa4096/0x35D39F9A9A1BC8DA";
5240− fingerprint = "DF90 9D58 BEE4 E73A 1B8C 5AF3 35D3 9F9A 9A1B C8DA";
5241− }];
5242− };
52434394 iammrinal0 = {
52444395 email = "nixpkgs@mrinalpurohit.in";
5245− matrix = "@iammrinal0:nixos.dev";
52464396 github = "iammrinal0";
52474397 githubId = 890062;
52484398 name = "Mrinal";
@@ -5274,7 +4424,6 @@
52744424 icy-thought = {
52754425 name = "Icy-Thought";
52764426 email = "gilganyx@pm.me";
5277− matrix = "@gilganix:matrix.org";
52784427 github = "Icy-Thought";
52794428 githubId = 53710398;
52804429 };
@@ -5314,13 +4463,6 @@
53144463 githubId = 36193715;
53154464 name = "Lassi Haasio";
53164465 };
5317− ilkecan = {
5318− email = "ilkecan@protonmail.com";
5319− matrix = "@ilkecan:matrix.org";
5320− github = "ilkecan";
5321− githubId = 40234257;
5322− name = "ilkecan bozdogan";
5323− };
53244466 illegalprime = {
53254467 email = "themichaeleden@gmail.com";
53264468 github = "illegalprime";
@@ -5351,12 +4493,6 @@
53514493 githubId = 592849;
53524494 name = "Ilya Kolpakov";
53534495 };
5354− ilyakooo0 = {
5355− name = "Ilya Kostyuchenko";
5356− email = "ilyakooo0@gmail.com";
5357− github = "ilyakooo0";
5358− githubId = 6209627;
5359− };
53604496 imalison = {
53614497 email = "IvanMalison@gmail.com";
53624498 github = "IvanMalison";
@@ -5369,12 +4505,6 @@
53694505 githubId = 993484;
53704506 name = "Greg Hale";
53714507 };
5372− imgabe = {
5373− email = "gabrielpmonte@hotmail.com";
5374− github = "imgabe";
5375− githubId = 24387926;
5376− name = "Gabriel Pereira";
5377− };
53784508 imlonghao = {
53794509 email = "nixos@esd.cc";
53804510 github = "imlonghao";
@@ -5383,7 +4513,6 @@
53834513 };
53844514 immae = {
53854515 email = "ismael@bouya.org";
5386− matrix = "@immae:immae.eu";
53874516 github = "immae";
53884517 githubId = 510202;
53894518 name = "Ismaël Bouya";
@@ -5394,15 +4523,8 @@
53944523 githubId = 4085046;
53954524 name = "Imuli";
53964525 };
5397− ineol = {
5398− email = "leo.stefanesco@gmail.com";
5399− github = "ineol";
5400− githubId = 37965;
5401− name = "Léo Stefanesco";
5402− };
54034526 infinisil = {
54044527 email = "contact@infinisil.com";
5405− matrix = "@infinisil:matrix.org";
54064528 github = "infinisil";
54074529 githubId = 20525370;
54084530 name = "Silvan Mosberger";
@@ -5420,7 +4542,6 @@
54204542 irenes = {
54214543 name = "Irene Knapp";
54224544 email = "ireneista@gmail.com";
5423− matrix = "@irenes:matrix.org";
54244545 github = "IreneKnapp";
54254546 githubId = 157678;
54264547 keys = [{
@@ -5444,13 +4565,6 @@
54444565 fingerprint = "1412 816B A9FA F62F D051 1975 D3E1 B013 B463 1293";
54454566 }];
54464567 };
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− };
54544568 ivan = {
54554569 email = "ivan@ludios.org";
54564570 github = "ivan";
@@ -5484,7 +4598,7 @@
54844598 }];
54854599 };
54864600 ivankovnatsky = {
5487− email = "75213+ivankovnatsky@users.noreply.github.com";
4601+ email = "ikovnatsky@protonmail.ch";
54884602 github = "ivankovnatsky";
54894603 githubId = 75213;
54904604 name = "Ivan Kovnatsky";
@@ -5499,12 +4613,6 @@
54994613 githubId = 41924494;
55004614 name = "Ivar";
55014615 };
5502− iwanb = {
5503− email = "tracnar@gmail.com";
5504− github = "iwanb";
5505− githubId = 4035835;
5506− name = "Iwan";
5507− };
55084616 ixmatus = {
55094617 email = "parnell@digitalmentat.com";
55104618 github = "ixmatus";
@@ -5523,12 +4631,6 @@
55234631 githubId = 26877687;
55244632 name = "Yurii Izorkin";
55254633 };
5526− j0xaf = {
5527− email = "j0xaf@j0xaf.de";
5528− name = "Jörn Gersdorf";
5529− github = "j0xaf";
5530− githubId = 932697;
5531− };
55324634 j0hax = {
55334635 name = "Johannes Arnold";
55344636 email = "johannes.arnold@stud.uni-hannover.de";
@@ -5559,12 +4661,6 @@
55594661 githubId = 40566146;
55604662 name = "Jonas Braun";
55614663 };
5562− j-hui = {
5563− email = "j-hui@cs.columbia.edu";
5564− github = "j-hui";
5565− githubId = 11800204;
5566− name = "John Hui";
5567− };
55684664 j-keck = {
55694665 email = "jhyphenkeck@gmail.com";
55704666 github = "j-keck";
@@ -5649,12 +4745,6 @@
56494745 githubId = 488556;
56504746 name = "Javier Aguirre";
56514747 };
5652− jayesh-bhoot = {
5653− name = "Jayesh Bhoot";
5654− email = "jayesh@bhoot.sh";
5655− github = "jayesh-bhoot";
5656− githubId = 1915507;
5657− };
56584748 jb55 = {
56594749 email = "jb55@jb55.com";
56604750 github = "jb55";
@@ -5669,7 +4759,6 @@
56694759 };
56704760 jbedo = {
56714761 email = "cu@cua0.org";
5672− matrix = "@jb:vk3.wtf";
56734762 github = "jbedo";
56744763 githubId = 372912;
56754764 name = "Justin Bedő";
@@ -5680,34 +4769,12 @@
56804769 githubId = 221929;
56814770 name = "Jean-Baptiste Giraudeau";
56824771 };
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− };
56954772 jchw = {
56964773 email = "johnwchadwick@gmail.com";
56974774 github = "jchv";
56984775 githubId = 938744;
56994776 name = "John Chadwick";
57004777 };
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− };
57114778 jcumming = {
57124779 email = "jack@mudshark.org";
57134780 github = "jcumming";
@@ -5720,12 +4787,6 @@
57204787 githubId = 1383440;
57214788 name = "Jason Gilliland";
57224789 };
5723− jdahm = {
5724− email = "johann.dahm@gmail.com";
5725− github = "jdahm";
5726− githubId = 68032;
5727− name = "Johann Dahm";
5728− };
57294790 jdanek = {
57304791 email = "jdanek@redhat.com";
57314792 github = "jdanekrh";
@@ -5748,30 +4809,12 @@
57484809 githubId = 117874;
57494810 name = "Jeroen de Haas";
57504811 };
5751− jdreaver = {
5752− email = "johndreaver@gmail.com";
5753− github = "jdreaver";
5754− githubId = 1253071;
5755− name = "David Reaver";
5756− };
57574812 jduan = {
57584813 name = "Jingjing Duan";
57594814 email = "duanjingjing@gmail.com";
57604815 github = "jduan";
57614816 githubId = 452450;
57624817 };
5763− jdupak = {
5764− name = "Jakub Dupak";
5765− email = "dev@jakubdupak.com";
5766− github = "jdupak";
5767− githubId = 22683640;
5768− };
5769− jecaro = {
5770− email = "jeancharles.quillet@gmail.com";
5771− github = "jecaro";
5772− githubId = 17029738;
5773− name = "Jean-Charles Quillet";
5774− };
57754818 jefdaj = {
57764819 email = "jefdaj@gmail.com";
57774820 github = "jefdaj";
@@ -5820,16 +4863,6 @@
58204863 githubId = 143075;
58214864 name = "James Felix Black";
58224865 };
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− };
58334866 jflanglois = {
58344867 email = "yourstruly@julienlanglois.me";
58354868 github = "jflanglois";
@@ -5845,7 +4878,6 @@
58454878 jfroche = {
58464879 name = "Jean-François Roche";
58474880 email = "jfroche@pyxel.be";
5848− matrix = "@jfroche:matrix.pyxel.cloud";
58494881 github = "jfroche";
58504882 githubId = 207369;
58514883 keys = [{
@@ -5853,12 +4885,6 @@
58534885 fingerprint = "7EB1 C02A B62B B464 6D7C E4AE D1D0 9DE1 69EA 19A0";
58544886 }];
58554887 };
5856− jgart = {
5857− email = "jgart@dismail.de";
5858− github = "jgarte";
5859− githubId = 47760695;
5860− name = "Jorge Gomez";
5861− };
58624888 jgeerds = {
58634889 email = "jascha@geerds.org";
58644890 github = "jgeerds";
@@ -5921,17 +4947,10 @@
59214947 };
59224948 jk = {
59234949 email = "hello+nixpkgs@j-k.io";
5924− matrix = "@j-k:matrix.org";
59254950 github = "06kellyjac";
59264951 githubId = 9866621;
59274952 name = "Jack";
59284953 };
5929− jkarlson = {
5930− email = "jekarlson@gmail.com";
5931− github = "jkarlson";
5932− githubId = 1204734;
5933− name = "Emil Karlson";
5934− };
59354954 jlesquembre = {
59364955 email = "jl@lafuente.me";
59374956 github = "jlesquembre";
@@ -5962,36 +4981,12 @@
59624981 githubId = 8900;
59634982 name = "Johan Magnus Jonsson";
59644983 };
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− };
59834984 jmettes = {
59844985 email = "jonathan@jmettes.com";
59854986 github = "jmettes";
59864987 githubId = 587870;
59874988 name = "Jonathan Mettes";
59884989 };
5989− jmgilman = {
5990− email = "joshuagilman@gmail.com";
5991− github = "jmgilman";
5992− githubId = 2308444;
5993− name = "Joshua Gilman";
5994− };
59954990 jo1gi = {
59964991 email = "joakimholm@protonmail.com";
59974992 github = "jo1gi";
@@ -6046,7 +5041,6 @@
60465041 };
60475042 joepie91 = {
60485043 email = "admin@cryto.net";
6049− matrix = "@joepie91:pixie.town";
60505044 name = "Sven Slootweg";
60515045 github = "joepie91";
60525046 githubId = 1663259;
@@ -6093,12 +5087,6 @@
60935087 githubId = 8735102;
60945088 name = "John Ramsden";
60955089 };
6096− johnrichardrinehart = {
6097− email = "johnrichardrinehart@gmail.com";
6098− github = "johnrichardrinehart";
6099− githubId = 6321578;
6100− name = "John Rinehart";
6101− };
61025090 johntitor = {
61035091 email = "huyuumi.dev@gmail.com";
61045092 github = "JohnTitor";
@@ -6108,7 +5096,6 @@
61085096 jojosch = {
61095097 name = "Johannes Schleifenbaum";
61105098 email = "johannes@js-webcoding.de";
6111− matrix = "@jojosch:jswc.de";
61125099 github = "jojosch";
61135100 githubId = 327488;
61145101 keys = [{
@@ -6147,7 +5134,6 @@
61475134 };
61485135 jonringer = {
61495136 email = "jonringer117@gmail.com";
6150− matrix = "@jonringer:matrix.org";
61515137 github = "jonringer";
61525138 githubId = 7673602;
61535139 name = "Jonathan Ringer";
@@ -6188,12 +5174,6 @@
61885174 githubId = 20675;
61895175 name = "Joël Perras";
61905176 };
6191− jpetrucciani = {
6192− email = "j@cobi.dev";
6193− github = "jpetrucciani";
6194− githubId = 8117202;
6195− name = "Jacobi Petrucciani";
6196− };
61975177 jpierre03 = {
61985178 email = "nix@prunetwork.fr";
61995179 github = "jpierre03";
@@ -6218,15 +5198,8 @@
62185198 githubId = 4611077;
62195199 name = "Raymond Gauthier";
62205200 };
6221− jrpotter = {
6222− email = "jrpotter2112@gmail.com";
6223− github = "jrpotter";
6224− githubId = 3267697;
6225− name = "Joshua Potter";
6226− };
62275201 jschievink = {
62285202 email = "jonasschievink@gmail.com";
6229− matrix = "@jschievink:matrix.org";
62305203 github = "jonas-schievink";
62315204 githubId = 1786438;
62325205 name = "Jonas Schievink";
@@ -6243,13 +5216,6 @@
62435216 githubId = 107689;
62445217 name = "Josh Holland";
62455218 };
6246− jsierles = {
6247− email = "joshua@hey.com";
6248− matrix = "@jsierles:matrix.org";
6249− name = "Joshua Sierles";
6250− github = "jsierles";
6251− githubId = 82;
6252− };
62535219 jtcoolen = {
62545220 email = "jtcoolen@pm.me";
62555221 name = "Julien Coolen";
@@ -6268,35 +5234,22 @@
62685234 };
62695235 jtojnar = {
62705236 email = "jtojnar@gmail.com";
6271− matrix = "@jtojnar:matrix.org";
62725237 github = "jtojnar";
62735238 githubId = 705123;
62745239 name = "Jan Tojnar";
62755240 };
62765241 juaningan = {
62775242 email = "juaningan@gmail.com";
6278− github = "uningan";
5243+ github = "juaningan";
62795244 githubId = 810075;
62805245 name = "Juan Rodal";
62815246 };
6282− juboba = {
6283− email = "juboba@gmail.com";
6284− github = "juboba";
6285− githubId = 1189739;
6286− name = "Julio Borja Barra";
6287− };
62885247 juliendehos = {
62895248 email = "dehos@lisic.univ-littoral.fr";
62905249 github = "juliendehos";
62915250 githubId = 11947756;
62925251 name = "Julien Dehos";
62935252 };
6294− julienmalka = {
6295− email = "julien.malka@me.com";
6296− github = "JulienMalka";
6297− githubId = 1792886;
6298− name = "Julien Malka";
6299− };
63005253 julm = {
63015254 email = "julm+nixpkgs@sourcephile.fr";
63025255 github = "ju1m";
@@ -6309,12 +5262,6 @@
63095262 githubId = 39434424;
63105263 name = "Felix Springer";
63115264 };
6312− junjihashimoto = {
6313− email = "junji.hashimoto@gmail.com";
6314− github = "junjihashimoto";
6315− githubId = 2469618;
6316− name = "Junji Hashimoto";
6317− };
63185265 justinas = {
63195266 email = "justinas@justinas.org";
63205267 github = "justinas";
@@ -6333,16 +5280,6 @@
63335280 githubId = 2396926;
63345281 name = "Justin Woo";
63355282 };
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− };
63465283 jwatt = {
63475284 email = "jwatt@broken.watch";
63485285 github = "jjwatt";
@@ -6377,16 +5314,6 @@
63775314 githubId = 20658981;
63785315 name = "Jarosław Wygoda";
63795316 };
6380− jyooru = {
6381− email = "joel@joel.tokyo";
6382− github = "jyooru";
6383− githubId = 63786778;
6384− name = "Joel";
6385− keys = [{
6386− longkeyid = "rsa4096/18550BD205E9EF64";
6387− fingerprint = "9148 DC9E F4D5 3EB6 A30E 8EF0 1855 0BD2 05E9 EF64";
6388− }];
6389− };
63905317 jyp = {
63915318 email = "jeanphilippe.bernardy@gmail.com";
63925319 github = "jyp";
@@ -6399,19 +5326,6 @@
63995326 githubId = 66669;
64005327 name = "Jeff Zellner";
64015328 };
6402− k4leg = {
6403− name = "k4leg";
6404− email = "python.bogdan@gmail.com";
6405− github = "k4leg";
6406− githubId = 39882583;
6407− };
6408− k900 = {
6409− name = "Ilya K.";
6410− email = "me@0upti.me";
6411− github = "K900";
6412− githubId = 386765;
6413− matrix = "@k900:0upti.me";
6414− };
64155329 kaction = {
64165330 name = "Dmitry Bogatov";
64175331 email = "KAction@disroot.org";
@@ -6430,7 +5344,6 @@
64305344 };
64315345 kalbasit = {
64325346 email = "wael.nasreddine@gmail.com";
6433− matrix = "@kalbasit:matrix.org";
64345347 github = "kalbasit";
64355348 githubId = 87115;
64365349 name = "Wael Nasreddine";
@@ -6463,12 +5376,6 @@
64635376 githubId = 3831860;
64645377 name = "Arnold Krille";
64655378 };
6466− kanashimia = {
6467− email = "chad@redpilled.dev";
6468− github = "kanashimia";
6469− githubId = 56224949;
6470− name = "Mia Kanashi";
6471− };
64725379 karantan = {
64735380 name = "Gasper Vozel";
64745381 email = "karantan@gmail.com";
@@ -6503,12 +5410,6 @@
65035410 githubId = 37185887;
65045411 name = "Calvin Kim";
65055412 };
6506− keldu = {
6507− email = "mail@keldu.de";
6508− github = "keldu";
6509− githubId = 15373888;
6510− name = "Claudius Holeksa";
6511− };
65125413 kennyballou = {
65135414 email = "kb@devnulllabs.io";
65145415 github = "kennyballou";
@@ -6533,7 +5434,6 @@
65335434 };
65345435 kevincox = {
65355436 email = "kevincox@kevincox.ca";
6536− matrix = "@kevincox:matrix.org";
65375437 github = "kevincox";
65385438 githubId = 494012;
65395439 name = "Kevin Cox";
@@ -6544,12 +5444,6 @@
65445444 githubId = 209729;
65455445 name = "Kevin Griffin";
65465446 };
6547− kevink = {
6548− email = "kevin@kevink.dev";
6549− github = "Unkn0wnCat";
6550− githubId = 8211181;
6551− name = "Kevin Kandlbinder";
6552− };
65535447 kfollesdal = {
65545448 email = "kfollesdal@gmail.com";
65555449 github = "kfollesdal";
@@ -6590,12 +5484,6 @@
65905484 githubId = 25607;
65915485 name = "Raimon Grau";
65925486 };
6593− kidonng = {
6594− email = "hi@xuann.wang";
6595− github = "kidonng";
6596− githubId = 44045911;
6597− name = "Kid";
6598− };
65995487 kierdavis = {
66005488 email = "kierdavis@gmail.com";
66015489 github = "kierdavis";
@@ -6640,7 +5528,6 @@
66405528 };
66415529 kirelagin = {
66425530 email = "kirelagin@gmail.com";
6643− matrix = "@kirelagin:matrix.org";
66445531 github = "kirelagin";
66455532 githubId = 451835;
66465533 name = "Kirill Elagin";
@@ -6657,16 +5544,6 @@
66575544 githubId = 148352;
66585545 name = "Jim Fowler";
66595546 };
6660− kittywitch = {
6661− email = "kat@kittywit.ch";
6662− github = "kittywitch";
6663− githubId = 67870215;
6664− name = "kat witch";
6665− keys = [{
6666− longkeyid = "rsa4096/0x7248991EFA8EFBEE";
6667− fingerprint = "01F5 0A29 D4AA 9117 5A11 BDB1 7248 991E FA8E FBEE";
6668− }];
6669− };
66705547 kiwi = {
66715548 email = "envy1988@gmail.com";
66725549 github = "Kiwi";
@@ -6683,22 +5560,10 @@
66835560 githubId = 8260207;
66845561 name = "Karthik Iyengar";
66855562 };
6686− kjeremy = {
6687− email = "kjeremy@gmail.com";
6688− name = "Jeremy Kolb";
6689− github = "kjeremy";
6690− githubId = 4325700;
6691− };
66925563 kkallio = {
66935564 email = "tierpluspluslists@gmail.com";
66945565 name = "Karn Kallio";
66955566 };
6696− klden = {
6697− name = "Kenzyme Le";
6698− email = "kl@kenzymele.com";
6699− github = "klDen";
6700− githubId = 5478260;
6701− };
67025567 klntsky = {
67035568 email = "klntsky@gmail.com";
67045569 name = "Vladimir Kalnitsky";
@@ -6706,8 +5571,7 @@
67065571 githubId = 18447310;
67075572 };
67085573 kloenk = {
6709− email = "me@kloenk.dev";
6710− matrix = "@kloenk:petabyte.dev";
5574+ email = "me@kloenk.de";
67115575 name = "Finn Behrens";
67125576 github = "kloenk";
67135577 githubId = 12898828;
@@ -6730,7 +5594,7 @@
67305594 };
67315595
67325596 kmein = {
6733− email = "kmein@posteo.de";
5597+ email = "kieran.meinhardt@gmail.com";
67345598 name = "Kierán Meinhardt";
67355599 github = "kmein";
67365600 githubId = 10352507;
@@ -6783,12 +5647,6 @@
67835647 githubId = 15692230;
67845648 name = "Muhammad Herdiansyah";
67855649 };
6786− koozz = {
6787− email = "koozz@linux.com";
6788− github = "koozz";
6789− githubId = 264372;
6790− name = "Jan van den Berg";
6791− };
67925650 koral = {
67935651 email = "koral@mailoo.org";
67945652 github = "k0ral";
@@ -6813,12 +5671,6 @@
68135671 githubId = 787421;
68145672 name = "Kevin Quick";
68155673 };
6816− kradalby = {
6817− name = "Kristoffer Dalby";
6818− email = "kristoffer@dalby.cc";
6819− github = "kradalby";
6820− githubId = 98431;
6821− };
68225674 kraem = {
68235675 email = "me@kraem.xyz";
68245676 github = "kraem";
@@ -6885,17 +5737,11 @@
68855737 githubId = 99639;
68865738 name = "Pawel Kruszewski";
68875739 };
6888− kubukoz = {
6889− email = "kubukoz@gmail.com";
6890− github = "kubukoz";
6891− githubId = 894884;
6892− name = "Jakub Kozłowski";
6893− };
6894− kurnevsky = {
6895− email = "kurnevsky@gmail.com";
6896− github = "kurnevsky";
6897− githubId = 2943605;
6898− name = "Evgeny Kurnevsky";
5740+ ktosiek = {
5741+ email = "tomasz.kontusz@gmail.com";
5742+ github = "ktosiek";
5743+ githubId = 278013;
5744+ name = "Tomasz Kontusz";
68995745 };
69005746 kuznero = {
69015747 email = "roman@kuznero.com";
@@ -6903,13 +5749,6 @@
69035749 githubId = 449813;
69045750 name = "Roman Kuznetsov";
69055751 };
6906− kvark = {
6907− name = "Dzmitry Malyshau";
6908− email = "kvark@fastmail.com";
6909− matrix = "@kvark:matrix.org";
6910− github = "kvark";
6911− githubId = 107301;
6912− };
69135752 kwohlfahrt = {
69145753 email = "kai.wohlfahrt@gmail.com";
69155754 github = "kwohlfahrt";
@@ -6928,7 +5767,7 @@
69285767 };
69295768 kylesferrazza = {
69305769 name = "Kyle Sferrazza";
6931− email = "nixpkgs@kylesferrazza.com";
5770+ email = "kyle.sferrazza@gmail.com";
69325771
69335772 github = "kylesferrazza";
69345773 githubId = 6677292;
@@ -6940,7 +5779,6 @@
69405779 };
69415780 l-as = {
69425781 email = "las@protonmail.ch";
6943− matrix = "@Las:matrix.org";
69445782 github = "L-as";
69455783 githubId = 22075344;
69465784 keys = [{
@@ -6951,7 +5789,6 @@
69515789 };
69525790 l3af = {
69535791 email = "L3afMeAlon3@gmail.com";
6954− matrix = "@L3afMe:matrix.org";
69555792 github = "L3afMe";
69565793 githubId = 72546287;
69575794 name = "L3af";
@@ -6972,12 +5809,6 @@
69725809 githubId = 55911173;
69735810 name = "Gwendolyn Quasebarth";
69745811 };
6975− lammermann = {
6976− email = "k.o.b.e.r@web.de";
6977− github = "lammermann";
6978− githubId = 695526;
6979− name = "Benjamin Kober";
6980− };
69815812 larsr = {
69825813 email = "Lars.Rasmusson@gmail.com";
69835814 github = "larsr";
@@ -6998,7 +5829,6 @@
69985829 };
69995830 lassulus = {
70005831 email = "lassulus@gmail.com";
7001− matrix = "@lassulus:nixos.dev";
70025832 github = "Lassulus";
70035833 githubId = 621759;
70045834 name = "Lassulus";
@@ -7040,18 +5870,6 @@
70405870 githubId = 1104419;
70415871 name = "Lucas Hoffmann";
70425872 };
7043− lucasew = {
7044− email = "lucas59356@gmail.com";
7045− github = "lucasew";
7046− githubId = 15693688;
7047− name = "Lucas Eduardo Wendt";
7048− };
7049− lde = {
7050− email = "lilian.deloche@puck.fr";
7051− github = "lde";
7052− githubId = 1447020;
7053− name = "Lilian Deloche";
7054− };
70555873 ldelelis = {
70565874 email = "ldelelis@est.frba.utn.edu.ar";
70575875 github = "ldelelis";
@@ -7066,7 +5884,6 @@
70665884 };
70675885 ldesgoui = {
70685886 email = "ldesgoui@gmail.com";
7069− matrix = "@ldesgoui:matrix.org";
70705887 github = "ldesgoui";
70715888 githubId = 2472678;
70725889 name = "Lucas Desgouilles";
@@ -7107,27 +5924,11 @@
71075924 githubId = 4158274;
71085925 name = "Michiel Leenaars";
71095926 };
7110− lom = {
5927+ legendofmiracles = {
71115928 email = "legendofmiracles@protonmail.com";
7112− matrix = "@legendofmiracles:matrix.org";
71135929 github = "legendofmiracles";
71145930 githubId = 30902201;
71155931 name = "legendofmiracles";
7116− keys = [{
7117− longkeyid = "rsa4096/0x19B082B3DEFE5451";
7118− fingerprint = "CC50 F82C 985D 2679 0703 AF15 19B0 82B3 DEFE 5451";
7119− }];
7120− };
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− }];
71315932 };
71325933 lejonet = {
71335934 email = "daniel@kuehn.se";
@@ -7173,7 +5974,6 @@
71735974 };
71745975 lewo = {
71755976 email = "lewo@abesis.fr";
7176− matrix = "@lewo:matrix.org";
71775977 github = "nlewo";
71785978 githubId = 3425311;
71795979 name = "Antoine Eiche";
@@ -7218,13 +6018,6 @@
72186018 githubId = 1769386;
72196019 name = "Liam Diprose";
72206020 };
7221− libjared = {
7222− email = "jared@perrycode.com";
7223− github = "libjared";
7224− githubId = 3746656;
7225− matrix = "@libjared:matrix.org";
7226− name = "Jared Perry";
7227− };
72286021 liff = {
72296022 email = "liff@iki.fi";
72306023 github = "liff";
@@ -7255,19 +6048,18 @@
72556048 githubId = 714;
72566049 name = "Lily Ballard";
72576050 };
7258− lilyinstarlight = {
7259− email = "lily@lily.flowers";
7260− matrix = "@lily:lily.flowers";
7261− github = "lilyinstarlight";
7262− githubId = 298109;
7263− name = "Lily Foster";
7264− };
72656051 limeytexan = {
72666052 email = "limeytexan@gmail.com";
72676053 github = "limeytexan";
72686054 githubId = 36448130;
72696055 name = "Michael Brantley";
72706056 };
6057+ linarcx = {
6058+ email = "linarcx@gmail.com";
6059+ github = "linarcx";
6060+ githubId = 10884422;
6061+ name = "Kaveh Ahangar";
6062+ };
72716063 linc01n = {
72726064 email = "git@lincoln.hk";
72736065 github = "linc01n";
@@ -7280,12 +6072,6 @@
72806072 githubId = 791115;
72816073 name = "Linquize";
72826074 };
7283− linsui = {
7284− email = "linsui555@gmail.com";
7285− github = "linsui";
7286− githubId = 36977733;
7287− name = "linsui";
7288− };
72896075 linus = {
72906076 email = "linusarver@gmail.com";
72916077 github = "listx";
@@ -7312,30 +6098,12 @@
73126098 fingerprint = "5B93 9CFA E8FC 4D8F E07A 3AEA DFE1 D4A0 1733 7E2A";
73136099 }];
73146100 };
7315− lorenzleutgeb = {
7316− email = "lorenz@leutgeb.xyz";
7317− github = "lorenzleutgeb";
7318− githubId = 542154;
7319− name = "Lorenz Leutgeb";
7320− };
73216101 luis = {
73226102 email = "luis.nixos@gmail.com";
73236103 github = "Luis-Hebendanz";
73246104 githubId = 22085373;
73256105 name = "Luis Hebendanz";
73266106 };
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− };
73396107 lionello = {
73406108 email = "lio@lunesu.com";
73416109 github = "lionello";
@@ -7372,29 +6140,6 @@
73726140 githubId = 1267527;
73736141 name = "Daniel Firth";
73746142 };
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− };
73986143 lopsided98 = {
73996144 email = "benwolsieffer@gmail.com";
74006145 github = "lopsided98";
@@ -7427,7 +6172,6 @@
74276172 };
74286173 lovesegfault = {
74296174 email = "meurerbernardo@gmail.com";
7430− matrix = "@lovesegfault:matrix.org";
74316175 github = "lovesegfault";
74326176 githubId = 7243783;
74336177 name = "Bernardo Meurer";
@@ -7442,12 +6186,6 @@
74426186 githubId = 10626;
74436187 name = "Andreas Wagner";
74446188 };
7445− lrewega = {
7446− email = "lrewega@c32.ca";
7447− github = "lrewega";
7448− githubId = 639066;
7449− name = "Luke Rewega";
7450− };
74516189 lromor = {
74526190 email = "leonardo.romor@gmail.com";
74536191 github = "lromor";
@@ -7460,7 +6198,6 @@
74606198 };
74616199 lschuermann = {
74626200 email = "leon.git@is.currently.online";
7463− matrix = "@leons:is.currently.online";
74646201 github = "lschuermann";
74656202 githubId = 5341193;
74666203 name = "Leon Schuermann";
@@ -7537,7 +6274,6 @@
75376274 };
75386275 lukegb = {
75396276 email = "nix@lukegb.com";
7540− matrix = "@lukegb:zxcvbnm.ninja";
75416277 github = "lukegb";
75426278 githubId = 246745;
75436279 name = "Luke Granger-Brown";
@@ -7548,12 +6284,6 @@
75486284 githubId = 13791;
75496285 name = "Luke Gorrie";
75506286 };
7551− luker = {
7552− email = "luker@fenrirproject.org";
7553− github = "LucaFulchir";
7554− githubId = 2486026;
7555− name = "Luca Fulchir";
7556− };
75576287 lumi = {
75586288 email = "lumi@pew.im";
75596289 github = "lumi-me-not";
@@ -7562,7 +6292,6 @@
75626292 };
75636293 lunik1 = {
75646294 email = "ch.nixpkgs@themaw.xyz";
7565− matrix = "@lunik1:lunik.one";
75666295 github = "lunik1";
75676296 githubId = 13547699;
75686297 name = "Corin Hoad";
@@ -7571,12 +6300,6 @@
75716300 fingerprint = "BA3A 5886 AE6D 526E 20B4 57D6 6A37 DF94 8318 8492";
75726301 }];
75736302 };
7574− lux = {
7575− email = "lux@lux.name";
7576− githubId = 1208273;
7577− matrix = "@lux:ontheblueplanet.com";
7578− name = "Lux";
7579− };
75806303 luz = {
75816304 email = "luz666@daum.net";
75826305 github = "Luz";
@@ -7605,12 +6328,6 @@
76056328 email = "wheatdoge@gmail.com";
76066329 name = "Tim Liou";
76076330 };
7608− m00wl = {
7609− name = "Moritz Lumme";
7610− email = "moritz.lumme@gmail.com";
7611− github = "m00wl";
7612− githubId = 46034439;
7613− };
76146331 m1cr0man = {
76156332 email = "lucas+nix@m1cr0man.com";
76166333 github = "m1cr0man";
@@ -7623,7 +6340,6 @@
76236340 };
76246341 ma27 = {
76256342 email = "maximilian@mbosch.me";
7626− matrix = "@ma27:nicht-so.sexy";
76276343 github = "ma27";
76286344 githubId = 6025220;
76296345 name = "Maximilian Bosch";
@@ -7646,12 +6362,6 @@
76466362 githubId = 109141;
76476363 name = "Georges Dubus";
76486364 };
7649− Madouura = {
7650− email = "madouura@gmail.com";
7651− github = "Madouura";
7652− githubId = 93990818;
7653− name = "Madoura";
7654− };
76556365 mafo = {
76566366 email = "Marc.Fontaine@gmx.de";
76576367 github = "MarcFontaine";
@@ -7720,14 +6430,12 @@
77206430 };
77216431 manveru = {
77226432 email = "m.fellinger@gmail.com";
7723− matrix = "@manveru:matrix.org";
77246433 github = "manveru";
77256434 githubId = 3507;
77266435 name = "Michael Fellinger";
77276436 };
77286437 maralorn = {
77296438 email = "malte.brandy@maralorn.de";
7730− matrix = "@maralorn:maralorn.de";
77316439 github = "maralorn";
77326440 githubId = 1651325;
77336441 name = "Malte Brandy";
@@ -7790,24 +6498,12 @@
77906498 githubId = 623509;
77916499 name = "Martijn Vermaat";
77926500 };
7793− martinetd = {
7794− email = "f.ktfhrvnznqxacf@noclue.notk.org";
7795− github = "martinetd";
7796− githubId = 1729331;
7797− name = "Dominique Martinet";
7798− };
77996501 martingms = {
78006502 email = "martin@mg.am";
78016503 github = "martingms";
78026504 githubId = 458783;
78036505 name = "Martin Gammelsæter";
78046506 };
7805− martfont = {
7806− name = "Martino Fontana";
7807− email = "tinozzo123@tutanota.com";
7808− github = "SuperSamus";
7809− githubId = 40663462;
7810− };
78116507 marzipankaiser = {
78126508 email = "nixos@gaisseml.de";
78136509 github = "marzipankaiser";
@@ -7824,12 +6520,6 @@
78246520 githubId = 775189;
78256521 name = "Jordi Masip";
78266522 };
7827− MaskedBelgian = {
7828− email = "michael.colicchia@imio.be";
7829− github = "MaskedBelgian";
7830− githubId = 29855073;
7831− name = "Michael Colicchia";
7832− };
78336523 matejc = {
78346524 email = "cotman.matej@gmail.com";
78356525 github = "matejc";
@@ -7868,7 +6558,6 @@
78686558 };
78696559 matthiasbeyer = {
78706560 email = "mail@beyermatthias.de";
7871− matrix = "@musicmatze:beyermatthi.as";
78726561 github = "matthiasbeyer";
78736562 githubId = 427866;
78746563 name = "Matthias Beyer";
@@ -7885,16 +6574,6 @@
78856574 githubId = 279868;
78866575 name = "Matti Kariluoma";
78876576 };
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− };
78986577 maurer = {
78996578 email = "matthew.r.maurer+nix@gmail.com";
79006579 github = "maurer";
@@ -7907,16 +6586,6 @@
79076586 githubId = 95194;
79086587 name = "Mauricio Scheffer";
79096588 };
7910− max-niederman = {
7911− email = "max@maxniederman.com";
7912− github = "max-niederman";
7913− githubId = 19580458;
7914− name = "Max Niederman";
7915− keys = [{
7916− longkeyid = "rsa3072/0x9AED881481D8444E";
7917− fingerprint = "1DE4 424D BF77 1192 5DC4 CF5E 9AED 8814 81D8 444E";
7918− }];
7919− };
79206589 maxdamantus = {
79216590 email = "maxdamantus@gmail.com";
79226591 github = "Maxdamantus";
@@ -7929,36 +6598,18 @@
79296598 githubId = 35892750;
79306599 name = "Maxine Aubrey";
79316600 };
7932− maxhille = {
7933− email = "mh@lambdasoup.com";
7934− github = "maxhille";
7935− githubId = 693447;
7936− name = "Max Hille";
7937− };
79386601 maxhbr = {
79396602 email = "nixos@maxhbr.dev";
79406603 github = "maxhbr";
79416604 githubId = 1187050;
79426605 name = "Maximilian Huber";
79436606 };
7944− maximsmol = {
7945− email = "maximsmol@gmail.com";
7946− github = "maximsmol";
7947− githubId = 1472826;
7948− name = "Max Smolin";
7949− };
79506607 maxxk = {
79516608 email = "maxim.krivchikov@gmail.com";
79526609 github = "maxxk";
79536610 githubId = 1191859;
79546611 name = "Maxim Krivchikov";
79556612 };
7956− MayNiklas = {
7957− email = "info@niklas-steffen.de";
7958− github = "MayNiklas";
7959− githubId = 44636701;
7960− name = "Niklas Steffen";
7961− };
79626613 mazurel = {
79636614 email = "mateusz.mazur@yahoo.com";
79646615 github = "Mazurel";
@@ -8001,12 +6652,6 @@
80016652 githubId = 51356;
80026653 name = "Mathieu Boespflug";
80036654 };
8004− mbprtpmnr = {
8005− name = "mbprtpmnr";
8006− email = "mbprtpmnr@pm.me";
8007− github = "mbprtpmnr";
8008− githubId = 88109321;
8009− };
80106655 mbrgm = {
80116656 email = "marius@yeai.de";
80126657 github = "mbrgm";
@@ -8069,6 +6714,16 @@
80696714 fingerprint = "D709 03C8 0BE9 ACDC 14F0 3BFB 77BF E531 397E DE94";
80706715 }];
80716716 };
6717+ mdsp = {
6718+ github = "Mdsp9070";
6719+ githubId = 44469426;
6720+ name = "Matheus de Souza Pessanha";
6721+ email = "matheus_pessanha2001@outlook.com";
6722+ keys = [{
6723+ longkeyid = "rsa4096/6DFD656220A3B849";
6724+ fingerprint = "2D4D 488F 17FB FF75 664E C016 6DFD 6562 20A3 B849";
6725+ }];
6726+ };
80726727 meatcar = {
80736728 email = "nixpkgs@denys.me";
80746729 github = "meatcar";
@@ -8127,6 +6782,12 @@
81276782 github = "kira-bruneau";
81286783 githubId = 382041;
81296784 };
6785+ meutraa = {
6786+ email = "paul+nixpkgs@lost.host";
6787+ name = "Paul Meredith";
6788+ github = "meutraa";
6789+ githubId = 68550871;
6790+ };
81306791 mephistophiles = {
81316792 email = "mussitantesmortem@gmail.com";
81326793 name = "Maxim Zhukov";
@@ -8169,27 +6830,14 @@
81696830 githubId = 668926;
81706831 name = "Maximilian Güntner";
81716832 };
8172− mh = {
8173− email = "68288772+markus-heinrich@users.noreply.github.com";
8174− github = "markus-heinrich";
8175− githubId = 68288772;
8176− name = "Markus Heinrich";
8177− };
81786833 mhaselsteiner = {
81796834 email = "magdalena.haselsteiner@gmx.at";
81806835 github = "mhaselsteiner";
81816836 githubId = 20536514;
81826837 name = "Magdalena Haselsteiner";
81836838 };
8184− mh182 = {
8185− email = "mh182@chello.at";
8186− github = "mh182";
8187− githubId = 9980864;
8188− name = "Max Hofer";
8189− };
81906839 mic92 = {
81916840 email = "joerg@thalheim.io";
8192− matrix = "@mic92:nixos.dev";
81936841 github = "mic92";
81946842 githubId = 96200;
81956843 name = "Jörg Thalheim";
@@ -8199,12 +6847,6 @@
81996847 fingerprint = "3DEE 1C55 6E1C 3DC5 54F5 875A 003F 2096 411B 5F92";
82006848 }];
82016849 };
8202− michaeladler = {
8203− email = "therisen06@gmail.com";
8204− github = "michaeladler";
8205− githubId = 1575834;
8206− name = "Michael Adler";
8207− };
82086850 michaelpj = {
82096851 email = "michaelpj@gmail.com";
82106852 github = "michaelpj";
@@ -8229,12 +6871,6 @@
82296871 githubId = 21156022;
82306872 name = "Michal Minář";
82316873 };
8232− michzappa = {
8233− email = "me@michzappa.com";
8234− github = "michzappa";
8235− githubId = 59343378;
8236− name = "Michael Zappa";
8237− };
82386874 mickours = {
82396875 email = "mickours@gmail.com<";
82406876 github = "mickours";
@@ -8243,7 +6879,6 @@
82436879 };
82446880 midchildan = {
82456881 email = "git@midchildan.org";
8246− matrix = "@midchildan:matrix.org";
82476882 github = "midchildan";
82486883 githubId = 7343721;
82496884 name = "midchildan";
@@ -8252,12 +6887,6 @@
82526887 fingerprint = "FEF0 AE2D 5449 3482 5F06 40AA 186A 1EDA C5C6 3F83";
82536888 }];
82546889 };
8255− mihnea-s = {
8256− email = "mihn.stn@gmail.com";
8257− github = "mihnea-s";
8258− githubId = 43088426;
8259− name = "Mihnea Stoian";
8260− };
82616890 mikefaille = {
82626891 email = "michael@faille.io";
82636892 github = "mikefaille";
@@ -8286,36 +6915,18 @@
82866915 fingerprint = "DB43 2895 CF68 F0CE D4B7 EF60 DA01 5B05 B5A1 1B22";
82876916 }];
82886917 };
8289− milahu = {
8290− email = "milahu@gmail.com";
8291− github = "milahu";
8292− githubId = 12958815;
8293− name = "Milan Hauth";
8294− };
82956918 milesbreslin = {
82966919 email = "milesbreslin@gmail.com";
82976920 github = "milesbreslin";
82986921 githubId = 38543128;
82996922 name = "Miles Breslin";
83006923 };
8301− milibopp = {
8302− email = "contact@ebopp.de";
8303− github = "milibopp";
8304− githubId = 3098430;
8305− name = "Emilia Bopp";
8306− };
83076924 millerjason = {
83086925 email = "mailings-github@millerjason.com";
83096926 github = "millerjason";
83106927 githubId = 7610974;
83116928 name = "Jason Miller";
83126929 };
8313− milogert = {
8314− email = "milo@milogert.com";
8315− github = "milogert";
8316− githubId = 5378535;
8317− name = "Milo Gertjejansen";
8318− };
83196930 miltador = {
83206931 email = "miltador@yandex.ua";
83216932 name = "Vasiliy Solovey";
@@ -8360,17 +6971,6 @@
83606971 githubId = 1776903;
83616972 name = "Andrew Abbott";
83626973 };
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− };
83746974 mitchmindtree = {
83756975 email = "mail@mitchellnordine.com";
83766976 github = "mitchmindtree";
@@ -8383,6 +6983,12 @@
83836983 githubId = 1001112;
83846984 name = "Marcin Janczyk";
83856985 };
6986+ mjlbach = {
6987+ email = "m.j.lbach@gmail.com";
6988+ github = "mjlbach";
6989+ githubId = 13316262;
6990+ name = "Michael Lingelbach";
6991+ };
83866992 mjp = {
83876993 email = "mike@mythik.co.uk";
83886994 github = "MikePlayle";
@@ -8419,7 +7025,6 @@
84197025 };
84207026 mkg20001 = {
84217027 email = "mkg20001+nix@gmail.com";
8422− matrix = "@mkg20001:matrix.org";
84237028 github = "mkg20001";
84247029 githubId = 7735145;
84257030 name = "Maciej Krüger";
@@ -8503,7 +7108,6 @@
85037108 mohe2015 = {
85047109 name = "Moritz Hedtke";
85057110 email = "Moritz.Hedtke@t-online.de";
8506− matrix = "@moritz.hedtke:matrix.org";
85077111 github = "mohe2015";
85087112 githubId = 13287984;
85097113 keys = [{
@@ -8545,12 +7149,6 @@
85457149 githubId = 99988;
85467150 name = "Maarten Hoogendoorn";
85477151 };
8548− MoritzBoehme = {
8549− email = "mail@moritzboeh.me";
8550− github = "MoritzBoehme";
8551− githubId = 42215704;
8552− name = "Moritz Böhme";
8553− };
85547152 MostAwesomeDude = {
85557153 email = "cds@corbinsimpson.com";
85567154 github = "MostAwesomeDude";
@@ -8617,17 +7215,6 @@
86177215 githubId = 3073833;
86187216 name = "Massimo Redaelli";
86197217 };
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− };
86317218 mrkkrp = {
86327219 email = "markkarpov92@gmail.com";
86337220 github = "mrkkrp";
@@ -8666,16 +7253,6 @@
86667253 name = "Maxim Schuwalow";
86677254 email = "maxim.schuwalow@gmail.com";
86687255 };
8669− msfjarvis = {
8670− github = "msfjarvis";
8671− githubId = 13348378;
8672− name = "Harsh Shandilya";
8673− email = "nixos@msfjarvis.dev";
8674− keys = [{
8675− longkeyid = "rsa4096/0xB7843F823355E9B9";
8676− fingerprint = "8F87 050B 0F9C B841 1515 7399 B784 3F82 3355 E9B9";
8677− }];
8678− };
86797256 msiedlarek = {
86807257 email = "mikolaj@siedlarek.pl";
86817258 github = "msiedlarek";
@@ -8712,12 +7289,6 @@
87127289 githubId = 4996739;
87137290 name = "Masayuki Takeda";
87147291 };
8715− mtesseract = {
8716− email = "moritz@stackrox.com";
8717− github = "mtesseract";
8718− githubId = 11706080;
8719− name = "Moritz Clasmeier";
8720− };
87217292 MtP = {
87227293 email = "marko.nixos@poikonen.de";
87237294 github = "MtP76";
@@ -8772,30 +7343,12 @@
87727343 githubId = 25388474;
87737344 name = "Matej Urbas";
87747345 };
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− };
87867346 mvnetbiz = {
87877347 email = "mvnetbiz@gmail.com";
8788− matrix = "@mvtva:matrix.org";
87897348 github = "mvnetbiz";
87907349 githubId = 6455574;
87917350 name = "Matt Votava";
87927351 };
8793− mvs = {
8794− email = "mvs@nya.yt";
8795− github = "illdefined";
8796− githubId = 772914;
8797− name = "Mikael Voss";
8798− };
87997352 maxwilson = {
88007353 email = "nixpkgs@maxwilson.dev";
88017354 github = "mwilsoncoding";
@@ -8808,12 +7361,6 @@
88087361 githubId = 9636071;
88097362 name = "Myrl Hex";
88107363 };
8811− n0emis = {
8812− email = "nixpkgs@n0emis.network";
8813− github = "n0emis";
8814− githubId = 22817873;
8815− name = "Ember Keske";
8816− };
88177364 nadrieril = {
88187365 email = "nadrieril@gmail.com";
88197366 github = "nadrieril";
@@ -8846,12 +7393,6 @@
88467393 email = "natedevv@gmail.com";
88477394 name = "Nathan Moore";
88487395 };
8849− nathanruiz = {
8850− email = "nathanruiz@protonmail.com";
8851− github = "nathanruiz";
8852− githubId = 18604892;
8853− name = "Nathan Ruiz";
8854− };
88557396 nathan-gs = {
88567397 email = "nathan@nathan.gs";
88577398 github = "nathan-gs";
@@ -8870,23 +7411,6 @@
88707411 githubId = 56316606;
88717412 name = "Amneesh Singh";
88727413 };
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− };
88907414 nbren12 = {
88917415 email = "nbren12@gmail.com";
88927416 github = "nbren12";
@@ -8895,7 +7419,6 @@
88957419 };
88967420 ncfavier = {
88977421 email = "n@monade.li";
8898− matrix = "@ncfavier:matrix.org";
88997422 github = "ncfavier";
89007423 githubId = 4323933;
89017424 name = "Naïm Favier";
@@ -8922,42 +7445,18 @@
89227445 githubId = 3747396;
89237446 name = "Nathan Isom";
89247447 };
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− };
89377448 neonfuz = {
89387449 email = "neonfuz@gmail.com";
89397450 github = "neonfuz";
89407451 githubId = 2590830;
89417452 name = "Sage Raflik";
89427453 };
8943− neosimsim = {
8944− email = "me@abn.sh";
8945− github = "neosimsim";
8946− githubId = 1771772;
8947− name = "Alexander Ben Nasrallah";
8948− };
89497454 nequissimus = {
89507455 email = "tim@nequissimus.com";
89517456 github = "nequissimus";
89527457 githubId = 628342;
89537458 name = "Tim Steinbach";
89547459 };
8955− nerdypepper = {
8956− email = "nerdy@peppe.rs";
8957− github = "nerdypepper";
8958− githubId = 23743547;
8959− name = "Akshay Oppiliappan";
8960− };
89617460 nessdoor = {
89627461 name = "Tomas Antonio Lopez";
89637462 email = "entropy.overseer@protonmail.com";
@@ -8982,16 +7481,10 @@
89827481 name = "Xinhao Luo";
89837482 };
89847483 newam = {
8985− email = "alex@thinglab.org";
7484+ email = "alexmgit@protonmail.com";
89867485 github = "newAM";
89877486 githubId = 7845120;
8988− name = "Alex Martens";
8989− };
8990− nialov = {
8991− email = "nikolasovaskainen@gmail.com";
8992− github = "nialov";
8993− githubId = 47318483;
8994− name = "Nikolas Ovaskainen";
7487+ name = "Alex M.";
89957488 };
89967489 nikitavoloboev = {
89977490 email = "nikita.voloboev@gmail.com";
@@ -9005,7 +7498,6 @@
90057498 };
90067499 nh2 = {
90077500 email = "mail@nh2.me";
9008− matrix = "@nh2:matrix.org";
90097501 github = "nh2";
90107502 githubId = 399535;
90117503 name = "Niklas Hambüchen";
@@ -9032,12 +7524,6 @@
90327524 githubId = 1665818;
90337525 name = "Philipp Eder";
90347526 };
9035− nickcao = {
9036− name = "Nick Cao";
9037− email = "nickcao@nichi.co";
9038− github = "NickCao";
9039− githubId = 15247171;
9040− };
90417527 nickhu = {
90427528 email = "me@nickhu.co.uk";
90437529 github = "nickhu";
@@ -9056,12 +7542,6 @@
90567542 githubId = 8214542;
90577543 name = "Nicolò Balzarotti";
90587544 };
9059− nidabdella = {
9060− name = "Mohamed Nidabdella";
9061− email = "nidabdella.mohamed@gmail.com";
9062− github = "nidabdella";
9063− githubId = 8083813;
9064− };
90657545 NieDzejkob = {
90667546 email = "kuba@kadziolka.net";
90677547 github = "NieDzejkob";
@@ -9090,15 +7570,8 @@
90907570 githubId = 26231126;
90917571 name = "Nils ANDRÉ-CHANG";
90927572 };
9093− nils-degroot = {
9094− email = "nils@peeko.nl";
9095− github = "nils-degroot";
9096− githubId = 53556985;
9097− name = "Nils de Groot";
9098− };
90997573 ninjatrappeur = {
91007574 email = "felix@alternativebit.fr";
9101− matrix = "@ninjatrappeur:matrix.org";
91027575 github = "ninjatrappeur";
91037576 githubId = 1219785;
91047577 name = "Félix Baylac-Jacqué";
@@ -9119,22 +7592,6 @@
91197592 githubId = 3159451;
91207593 name = "Nicolas Schneider";
91217594 };
9122− nkje = {
9123− name = "Niels Kristian Lyshøj Jensen";
9124− email = "n@nk.je";
9125− github = "NKJe";
9126− githubId = 1102306;
9127− keys = [{
9128− longkeyid = "nistp256/0xDE3BADFECD31A89D";
9129− fingerprint = "B956 C6A4 22AF 86A0 8F77 A8CA DE3B ADFE CD31 A89D";
9130− }];
9131− };
9132− nitsky = {
9133− name = "nitsky";
9134− email = "492793+nitsky@users.noreply.github.com";
9135− github = "nitsky";
9136− githubId = 492793;
9137− };
91387595 nkpvk = {
91397596 email = "niko.pavlinek@gmail.com";
91407597 github = "nkpvk";
@@ -9153,7 +7610,6 @@
91537610 };
91547611 nixinator = {
91557612 email = "33lockdown33@protonmail.com";
9156− matrix = "@nixinator:nixos.dev";
91577613 github = "nixinator";
91587614 githubId = 66913205;
91597615 name = "Rick Sanchez";
@@ -9164,12 +7620,6 @@
91647620 githubId = 7588406;
91657621 name = "Andrew R. M.";
91667622 };
9167− nkalupahana = {
9168− email = "hello@nisa.la";
9169− github = "nkalupahana";
9170− githubId = 7347290;
9171− name = "Nisala Kalupahana";
9172− };
91737623 nloomans = {
91747624 email = "noah@nixos.noahloomans.com";
91757625 github = "nloomans";
@@ -9194,12 +7644,6 @@
91947644 githubId = 810877;
91957645 name = "Tom Doggett";
91967646 };
9197− noisersup = {
9198− email = "patryk@kwiatek.xyz";
9199− github = "noisersup";
9200− githubId = 42322511;
9201− name = "Patryk Kwiatek";
9202− };
92037647 nomeata = {
92047648 email = "mail@joachim-breitner.de";
92057649 github = "nomeata";
@@ -9214,14 +7658,13 @@
92147658 };
92157659 noneucat = {
92167660 email = "andy@lolc.at";
9217− matrix = "@noneucat:lolc.at";
92187661 github = "noneucat";
92197662 githubId = 40049608;
92207663 name = "Andy Chun";
92217664 };
92227665 noreferences = {
92237666 email = "norkus@norkus.net";
9224− github = "jozuas";
7667+ github = "noreferences";
92257668 githubId = 13085275;
92267669 name = "Juozas Norkus";
92277670 };
@@ -9237,9 +7680,9 @@
92377680 githubId = 2946283;
92387681 name = "Brian Cohen";
92397682 };
9240− novoxd = {
7683+ novoxudonoser = {
92417684 email = "radnovox@gmail.com";
9242− github = "novoxd";
7685+ github = "novoxudonoser";
92437686 githubId = 6052922;
92447687 name = "Kirill Struokov";
92457688 };
@@ -9257,7 +7700,6 @@
92577700 };
92587701 nrdxp = {
92597702 email = "tim.deh@pm.me";
9260− matrix = "@timdeh:matrix.org";
92617703 github = "nrdxp";
92627704 githubId = 34083928;
92637705 name = "Tim DeHerrera";
@@ -9278,12 +7720,6 @@
92787720 githubId = 1839979;
92797721 name = "Niklas Thörne";
92807722 };
9281− nukaduka = {
9282− email = "ksgokte@gmail.com";
9283− github = "NukaDuka";
9284− githubId = 22592293;
9285− name = "Kartik Gokte";
9286− };
92877723 nullx76 = {
92887724 email = "nix@xirion.net";
92897725 github = "NULLx76";
@@ -9299,7 +7735,6 @@
92997735 numkem = {
93007736 name = "Sebastien Bariteau";
93017737 email = "numkem@numkem.org";
9302− matrix = "@numkem:matrix.org";
93037738 github = "numkem";
93047739 githubId = 332423;
93057740 };
@@ -9321,17 +7756,6 @@
93217756 githubId = 127548;
93227757 name = "Judson Lester";
93237758 };
9324− nzbr = {
9325− email = "nixos@nzbr.de";
9326− github = "nzbr";
9327− githubId = 7851175;
9328− name = "nzbr";
9329− matrix = "@nzbr:nzbr.de";
9330− keys = [{
9331− longkeyid = "rsa2048/0x6C78B50B97A42F8A";
9332− fingerprint = "BF3A 3EE6 3144 2C5F C9FB 39A7 6C78 B50B 97A4 2F8A";
9333− }];
9334− };
93357759 nzhang-zh = {
93367760 email = "n.zhang.hp.au@gmail.com";
93377761 github = "nzhang-zh";
@@ -9352,7 +7776,6 @@
93527776 };
93537777 obfusk = {
93547778 email = "flx@obfusk.net";
9355− matrix = "@obfusk:matrix.org";
93567779 github = "obfusk";
93577780 githubId = 1260687;
93587781 name = "Felix C. Stegerman";
@@ -9367,12 +7790,6 @@
93677790 githubId = 158758;
93687791 name = "Oliver Dunkl";
93697792 };
9370− ofek = {
9371− email = "oss@ofek.dev";
9372− github = "ofek";
9373− githubId = 9677399;
9374− name = "Ofek Lev";
9375− };
93767793 offline = {
93777794 email = "jaka@x-truder.net";
93787795 github = "offlinehacker";
@@ -9407,12 +7824,6 @@
94077824 githubId = 72201;
94087825 name = "Ole Jørgen Brønner";
94097826 };
9410− ollieB = {
9411− email = "1237862+oliverbunting@users.noreply.github.com";
9412− github = "oliverbunting";
9413− githubId = 1237862;
9414− name = "Ollie Bunting";
9415− };
94167827 olynch = {
94177828 email = "owen@olynch.me";
94187829 github = "olynch";
@@ -9455,24 +7866,12 @@
94557866 githubId = 757752;
94567867 name = "Jonas Heinrich";
94577868 };
9458− ony = {
9459− name = "Mykola Orliuk";
9460− email = "virkony@gmail.com";
9461− github = "ony";
9462− githubId = 11265;
9463− };
94647869 OPNA2608 = {
94657870 email = "christoph.neidahl@gmail.com";
94667871 github = "OPNA2608";
94677872 githubId = 23431373;
94687873 name = "Christoph Neidahl";
94697874 };
9470− opeik = {
9471− email = "sandro@stikic.com";
9472− github = "opeik";
9473− githubId = 11566773;
9474− name = "Sandro Stikić";
9475− };
94767875 orbekk = {
94777876 email = "kjetil.orbekk@gmail.com";
94787877 github = "orbekk";
@@ -9491,12 +7890,6 @@
94917890 githubId = 101514;
94927891 name = "Orivej Desh";
94937892 };
9494− ornxka = {
9495− email = "ornxka@littledevil.sh";
9496− github = "ornxka";
9497− githubId = 52086525;
9498− name = "ornxka";
9499− };
95007893 oro = {
95017894 email = "marco@orovecchia.at";
95027895 github = "oro";
@@ -9557,12 +7950,6 @@
95577950 githubId = 15930073;
95587951 name = "Moritz Scheuren";
95597952 };
9560− ozkutuk = {
9561− email = "ozkutuk@protonmail.com";
9562− github = "ozkutuk";
9563− githubId = 5948762;
9564− name = "Berk Özkütük";
9565− };
95667953 pablovsky = {
95677954 email = "dealberapablo07@gmail.com";
95687955 github = "pablo1107";
@@ -9577,7 +7964,6 @@
95777964 };
95787965 pacman99 = {
95797966 email = "pachum99@gmail.com";
9580− matrix = "@pachumicchu:myrdd.info";
95817967 github = "Pacman99";
95827968 githubId = 16345849;
95837969 name = "Parthiv Seetharaman";
@@ -9608,7 +7994,6 @@
96087994 };
96097995 pamplemousse = {
96107996 email = "xav.maso@gmail.com";
9611− matrix = "@pamplemouss_:matrix.org";
96127997 github = "Pamplemousse";
96137998 githubId = 2647236;
96147999 name = "Xavier Maso";
@@ -9631,13 +8016,6 @@
96318016 githubId = 71795;
96328017 name = "Mica Semrick";
96338018 };
9634− papojari = {
9635− email = "papojari-git.ovoid@aleeas.com";
9636− matrix = "@papojari:artemislena.eu";
9637− github = "papojari";
9638− githubId = 81317317;
9639− name = "papojari";
9640− };
96418019 paraseba = {
96428020 email = "paraseba@gmail.com";
96438021 github = "paraseba";
@@ -9669,7 +8047,7 @@
96698047 name = "pasqui23";
96708048 };
96718049 patryk27 = {
9672− email = "pwychowaniec@pm.me";
8050+ email = "wychowaniec.patryk@gmail.com";
96738051 github = "Patryk27";
96748052 githubId = 3395477;
96758053 name = "Patryk Wychowaniec";
@@ -9696,12 +8074,6 @@
96968074 githubId = 116740;
96978075 name = "Paweł Pacana";
96988076 };
9699− pb- = {
9700− email = "pbaecher@gmail.com";
9701− github = "pb-";
9702− githubId = 84886;
9703− name = "Paul Baecher";
9704− };
97058077 pbogdan = {
97068078 email = "ppbogdan@gmail.com";
97078079 github = "pbogdan";
@@ -9726,18 +8098,18 @@
97268098 githubId = 8641;
97278099 name = "Pierre Carrier";
97288100 };
8101+ pengmeiyu = {
8102+ email = "pengmyu@gmail.com";
8103+ github = "pmeiyu";
8104+ githubId = 8529551;
8105+ name = "Peng Mei Yu";
8106+ };
97298107 penguwin = {
97308108 email = "penguwin@penguwin.eu";
97318109 github = "penguwin";
97328110 githubId = 13225611;
97338111 name = "Nicolas Martin";
97348112 };
9735− pennae = {
9736− name = "pennae";
9737− email = "github@quasiparticle.net";
9738− github = "pennae";
9739− githubId = 82953136;
9740− };
97418113 p3psi = {
97428114 name = "Elliot Boo";
97438115 email = "p3psi.boo@gmail.com";
@@ -9752,7 +8124,6 @@
97528124 };
97538125 petabyteboy = {
97548126 email = "milan@petabyte.dev";
9755− matrix = "@milan:petabyte.dev";
97568127 github = "petabyteboy";
97578128 githubId = 3250809;
97588129 name = "Milan Pässler";
@@ -9765,7 +8136,6 @@
97658136 };
97668137 peterhoeg = {
97678138 email = "peter@hoeg.com";
9768− matrix = "@peter:hoeg.com";
97698139 github = "peterhoeg";
97708140 githubId = 722550;
97718141 name = "Peter Hoeg";
@@ -9830,11 +8200,11 @@
98308200 githubId = 421510;
98318201 name = "Noé Rubinstein";
98328202 };
9833− photex = {
9834− email = "photex@gmail.com";
9835− github = "photex";
9836− githubId = 301903;
9837− name = "Chip Collier";
8203+ phreedom = {
8204+ email = "phreedom@yandex.ru";
8205+ github = "phreedom";
8206+ githubId = 62577;
8207+ name = "Evgeny Egorochkin";
98388208 };
98398209 phryneas = {
98408210 email = "mail@lenzw.de";
@@ -9851,7 +8221,6 @@
98518221 piegames = {
98528222 name = "piegames";
98538223 email = "nix@piegames.de";
9854− matrix = "@piegames:matrix.org";
98558224 github = "piegamesde";
98568225 githubId = 14054505;
98578226 };
@@ -9901,7 +8270,7 @@
99018270 githubId = 1719781;
99028271 name = "Pablo Ovelleiro Corral";
99038272 keys = [{
9904− longkeyid = "rsa4096/0x823A6154426408D3";
8273+ longkeyid = "sa4096/0x823A6154426408D3";
99058274 fingerprint = "D03B 218C AE77 1F77 D7F9 20D9 823A 6154 4264 08D3";
99068275 }];
99078276 };
@@ -9995,12 +8364,6 @@
99958364 githubId = 178496;
99968365 name = "Philipp Middendorf";
99978366 };
9998− pmy = {
9999− email = "pmy@xqzp.net";
10000− github = "pmeiyu";
10001− githubId = 8529551;
10002− name = "Peng Mei Yu";
10003− };
100048367 pmyjavec = {
100058368 email = "pauly@myjavec.com";
100068369 github = "pmyjavec";
@@ -10019,12 +8382,6 @@
100198382 githubId = 11365056;
100208383 name = "Kevin Liu";
100218384 };
10022− pnmadelaine = {
10023− name = "Paul-Nicolas Madelaine";
10024− email = "pnm@pnm.tf";
10025− github = "pnmadelaine";
10026− githubId = 21977014;
10027− };
100288385 pnotequalnp = {
100298386 email = "kevin@pnotequalnp.com";
100308387 github = "pnotequalnp";
@@ -10035,12 +8392,6 @@
100358392 fingerprint = "2CD2 B030 BD22 32EF DF5A 008A 3618 20A4 5DB4 1E9A";
100368393 }];
100378394 };
10038− podocarp = {
10039− email = "xdjiaxd@gmail.com";
10040− github = "podocarp";
10041− githubId = 10473184;
10042− name = "Jia Xiaodong";
10043− };
100448395 polendri = {
100458396 email = "paul@ijj.li";
100468397 github = "polendri";
@@ -10053,12 +8404,6 @@
100538404 github = "polygon";
100548405 githubId = 51489;
100558406 };
10056− polykernel = {
10057− email = "81340136+polykernel@users.noreply.github.com";
10058− github = "polykernel";
10059− githubId = 81340136;
10060− name = "polykernel";
10061− };
100628407 polyrod = {
100638408 email = "dc1mdp@gmail.com";
100648409 github = "polyrod";
@@ -10081,18 +8426,6 @@
100818426 fingerprint = "48AD DE10 F27B AFB4 7BB0 CCAF 2D25 95A0 0D08 ACE0";
100828427 }];
100838428 };
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− };
100968429 pradeepchhetri = {
100978430 email = "pradeep.chhetri89@gmail.com";
100988431 github = "pradeepchhetri";
@@ -10129,7 +8462,6 @@
101298462 };
101308463 primeos = {
101318464 email = "dev.primeos@gmail.com";
10132− matrix = "@primeos:matrix.org";
101338465 github = "primeos";
101348466 githubId = 7537109;
101358467 name = "Michael Weiss";
@@ -10190,23 +8522,14 @@
101908522 githubId = 33375;
101918523 name = "Peter Sanford";
101928524 };
10193− pshirshov = {
10194− email = "pshirshov@eml.cc";
10195− github = "pshirshov";
10196− githubId = 295225;
10197− name = "Pavel Shirshov";
10198− };
101998525 psibi = {
102008526 email = "sibi@psibi.in";
10201− matrix = "@psibi:matrix.org";
102028527 github = "psibi";
102038528 githubId = 737477;
102048529 name = "Sibi Prabakaran";
102058530 };
102068531 pstn = {
102078532 email = "philipp@xndr.de";
10208− github = "pstn";
10209− githubId = 1329940;
102108533 name = "Philipp Steinpaß";
102118534 };
102128535 pSub = {
@@ -10221,12 +8544,6 @@
102218544 githubId = 20524473;
102228545 name = "Psyanticy";
102238546 };
10224− psydvl = {
10225− email = "psydvl@fea.st";
10226− github = "psydvl";
10227− githubId = 43755002;
10228− name = "Dmitriy P";
10229− };
102308547 ptival = {
102318548 email = "valentin.robert.42@gmail.com";
102328549 github = "Ptival";
@@ -10257,13 +8574,6 @@
102578574 githubId = 5636;
102588575 name = "Steve Purcell";
102598576 };
10260− putchar = {
10261− email = "slim.cadoux@gmail.com";
10262− matrix = "@putch4r:matrix.org";
10263− github = "putchar";
10264− githubId = 8208767;
10265− name = "Slim Cadoux";
10266− };
102678577 puzzlewolf = {
102688578 email = "nixos@nora.pink";
102698579 github = "puzzlewolf";
@@ -10300,12 +8610,6 @@
103008610 githubId = 115877;
103018611 name = "Kenny Shen";
103028612 };
10303− quag = {
10304− email = "quaggy@gmail.com";
10305− github = "quag";
10306− githubId = 35086;
10307− name = "Jonathan Wright";
10308− };
103098613 queezle = {
103108614 email = "git@queezle.net";
103118615 github = "qzle";
@@ -10334,15 +8638,8 @@
103348638 githubId = 52847440;
103358639 name = "Ryan Burns";
103368640 };
10337− r3dl3g = {
10338− email = "redleg@rothfuss-web.de";
10339− github = "r3dl3g";
10340− githubId = 35229674;
10341− name = "Armin Rothfuss";
10342− };
103438641 raboof = {
103448642 email = "arnout@bzzt.net";
10345− matrix = "@raboof:matrix.org";
103468643 github = "raboof";
103478644 githubId = 131856;
103488645 name = "Arnout Engelen";
@@ -10359,13 +8656,6 @@
103598656 githubId = 1016742;
103608657 name = "Rafael García";
103618658 };
10362− raitobezarius = {
10363− email = "ryan@lahfa.xyz";
10364− matrix = "@raitobezarius:matrix.org";
10365− github = "RaitoBezarius";
10366− githubId = 314564;
10367− name = "Ryan Lahfa";
10368− };
103698659 raquelgb = {
103708660 email = "raquel.garcia.bautista@gmail.com";
103718661 github = "raquelgb";
@@ -10380,7 +8670,6 @@
103808670 };
103818671 ralith = {
103828672 email = "ben.e.saunders@gmail.com";
10383− matrix = "@ralith:ralith.com";
103848673 github = "ralith";
103858674 githubId = 104558;
103868675 name = "Benjamin Saunders";
@@ -10449,16 +8738,6 @@
104498738 githubId = 16487165;
104508739 name = "Rafael Basso";
104518740 };
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− };
104628741 rbrewer = {
104638742 email = "rwb123@gmail.com";
104648743 github = "rbrewer123";
@@ -10477,20 +8756,6 @@
104778756 githubId = 16624;
104788757 name = "Maxim Ivanov";
104798758 };
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− };
104948759 redfish64 = {
104958760 email = "engler@gmail.com";
104968761 github = "redfish64";
@@ -10545,12 +8810,6 @@
105458810 githubId = 546296;
105468811 name = "Eric Ren";
105478812 };
10548− renesat = {
10549− name = "Ivan Smolyakov";
10550− email = "smol.ivan97@gmail.com";
10551− github = "renesat";
10552− githubId = 11363539;
10553− };
105548813 renzo = {
105558814 email = "renzocarbonara@gmail.com";
105568815 github = "k0001";
@@ -10563,40 +8822,12 @@
105638822 githubId = 500703;
105648823 name = "Tadas Barzdžius";
105658824 };
10566− revol-xut = {
10567− email = "revol-xut@protonmail.com";
10568− name = "Tassilo Tanneberger";
10569− github = "revol-xut";
10570− githubId = 32239737;
10571− keys = [{
10572− longkeyid = "rsa4096/B966009D57E69CC6";
10573− fingerprint = "91EB E870 1639 1323 642A 6803 B966 009D 57E6 9CC6";
10574− }];
10575− };
105768825 rexim = {
105778826 email = "reximkut@gmail.com";
105788827 github = "rexim";
105798828 githubId = 165283;
105808829 name = "Alexey Kutepov";
105818830 };
10582− rewine = {
10583− email = "lhongxu@outlook.com";
10584− github = "wineee";
10585− githubId = 22803888;
10586− name = "Lu Hongxu";
10587− };
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− };
106008831 rgrunbla = {
106018832 email = "remy@grunblatt.org";
106028833 github = "rgrunbla";
@@ -10621,13 +8852,6 @@
106218852 githubId = 6047658;
106228853 name = "Ryan Horiguchi";
106238854 };
10624− rhysmdnz = {
10625− email = "rhys@memes.nz";
10626− matrix = "@rhys:memes.nz";
10627− github = "rhysmdnz";
10628− githubId = 2162021;
10629− name = "Rhys Davies";
10630− };
106318855 ribose-jeffreylau = {
106328856 name = "Jeffrey Lau";
106338857 email = "jeffrey.lau@ribose.com";
@@ -10652,13 +8876,6 @@
106528876 githubId = 16779;
106538877 name = "Rickard Nilsson";
106548878 };
10655− ricochet = {
10656− email = "behayes2@gmail.com";
10657− github = "ricochet";
10658− githubId = 974323;
10659− matrix = "@ricochetcode:matrix.org";
10660− name = "Bailey Hayes";
10661− };
106628879 riey = {
106638880 email = "creeper844@gmail.com";
106648881 github = "Riey";
@@ -10677,12 +8894,6 @@
106778894 githubId = 37246692;
106788895 name = "Riley Inman";
106798896 };
10680− riotbib = {
10681− email = "github-nix@lnrt.de";
10682− github = "riotbib";
10683− githubId = 43172581;
10684− name = "Lennart Mühlenmeier";
10685− };
106868897 ris = {
106878898 email = "code@humanleg.org.uk";
106888899 github = "risicle";
@@ -10692,7 +8903,6 @@
106928903 risson = {
106938904 name = "Marc Schmitt";
106948905 email = "marc.schmitt@risson.space";
10695− matrix = "@risson:lama-corp.space";
106968906 github = "rissson";
106978907 githubId = 18313093;
106988908 keys = [
@@ -10706,6 +8916,12 @@
107068916 }
107078917 ];
107088918 };
8919+ rittelle = {
8920+ email = "rittelle@posteo.de";
8921+ github = "rittelle";
8922+ githubId = 33598633;
8923+ name = "Lennart Rittel";
8924+ };
107098925 rixed = {
107108926 email = "rixed-github@happyleptic.org";
107118927 github = "rixed";
@@ -10744,14 +8960,12 @@
107448960 };
107458961 rmcgibbo = {
107468962 email = "rmcgibbo@gmail.com";
10747− matrix = "@rmcgibbo:matrix.org";
107488963 github = "rmcgibbo";
107498964 githubId = 641278;
107508965 name = "Robert T. McGibbon";
107518966 };
107528967 rnhmjoj = {
107538968 email = "rnhmjoj@inventati.org";
10754− matrix = "@rnhmjoj:maxwell.ydns.eu";
107558969 github = "rnhmjoj";
107568970 githubId = 2817565;
107578971 name = "Michele Guerini Rocco";
@@ -10792,7 +9006,6 @@
107929006 };
107939007 roberth = {
107949008 email = "nixpkgs@roberthensing.nl";
10795− matrix = "@roberthensing:matrix.org";
107969009 github = "roberth";
107979010 githubId = 496447;
107989011 name = "Robert Hensing";
@@ -10851,9 +9064,18 @@
108519064 githubId = 1312525;
108529065 name = "Rongcui Dong";
108539066 };
9067+ ronthecookie = {
9068+ name = "Ron B";
9069+ email = "me@ronthecookie.me";
9070+ github = "ronthecookie";
9071+ githubId = 2526321;
9072+ keys = [{
9073+ longkeyid = "rsa2048/0x6F5B32DE5E5FA80C";
9074+ fingerprint = "4B2C DDA5 FA35 642D 956D 7294 6F5B 32DE 5E5F A80C";
9075+ }];
9076+ };
108549077 roosemberth = {
108559078 email = "roosembert.palacios+nixpkgs@posteo.ch";
10856− matrix = "@roosemberth:orbstheorem.ch";
108579079 github = "roosemberth";
108589080 githubId = 3621083;
108599081 name = "Roosembert (Roosemberth) Palacios";
@@ -10890,12 +9112,6 @@
108909112 githubId = 592876;
108919113 name = "Robert W. Pearce";
108929114 };
10893− rprecenth = {
10894− email = "rasmus@precenth.eu";
10895− github = "Prillan";
10896− githubId = 1675190;
10897− name = "Rasmus Précenth";
10898− };
108999115 rprospero = {
109009116 email = "rprospero+nix@gmail.com";
109019117 github = "rprospero";
@@ -10914,24 +9130,12 @@
109149130 githubId = 373566;
109159131 name = "Ronuk Raval";
109169132 };
10917− rski = {
10918− name = "rski";
10919− email = "rom.skiad+nix@gmail.com";
10920− github = "rski";
10921− githubId = 2960312;
10922− };
109239133 rszibele = {
109249134 email = "richard@szibele.com";
109259135 github = "rszibele";
109269136 githubId = 1387224;
109279137 name = "Richard Szibele";
109289138 };
10929− rsynnest = {
10930− email = "contact@rsynnest.com";
10931− github = "rsynnest";
10932− githubId = 4392850;
10933− name = "Roland Synnestvedt";
10934− };
109359139 rtburns-jpl = {
109369140 email = "rtburns@jpl.nasa.gov";
109379141 github = "rtburns-jpl";
@@ -11006,7 +9210,6 @@
110069210 };
110079211 ryantm = {
110089212 email = "ryan@ryantm.com";
11009− matrix = "@ryantm:matrix.org";
110109213 github = "ryantm";
110119214 githubId = 4804;
110129215 name = "Ryan Mulligan";
@@ -11057,28 +9260,10 @@
110579260 };
110589261 s1341 = {
110599262 email = "s1341@shmarya.net";
11060− matrix = "@s1341:matrix.org";
110619263 name = "Shmarya Rubenstein";
110629264 github = "s1341";
110639265 githubId = 5682183;
110649266 };
11065− sagikazarmark = {
11066− name = "Mark Sagi-Kazar";
11067− email = "mark.sagikazar@gmail.com";
11068− matrix = "@mark.sagikazar:matrix.org";
11069− github = "sagikazarmark";
11070− githubId = 1226384;
11071− keys = [{
11072− longkeyid = "rsa4096/0xF251ADDC9D041C7E";
11073− fingerprint = "E628 C811 6FB8 1657 F706 4EA4 F251 ADDC 9D04 1C7E";
11074− }];
11075− };
11076− samalws = {
11077− email = "sam@samalws.com";
11078− name = "Sam Alws";
11079− github = "samalws";
11080− githubId = 20981725;
11081− };
110829267 samb96 = {
110839268 email = "samb96@gmail.com";
110849269 github = "samb96";
@@ -11113,35 +9298,28 @@
111139298 githubId = 115821;
111149299 name = "Sam Rose";
111159300 };
11116− samuela = {
11117− email = "skainsworth@gmail.com";
11118− github = "samuela";
11119− githubId = 226872;
11120− name = "Samuel Ainsworth";
11121− };
111229301 samueldr = {
111239302 email = "samuel@dionne-riel.com";
11124− matrix = "@samueldr:matrix.org";
111259303 github = "samueldr";
111269304 githubId = 132835;
111279305 name = "Samuel Dionne-Riel";
111289306 };
9307+ samuelgrf = {
9308+ email = "git@samuelgrf.com";
9309+ github = "samuelgrf";
9310+ githubId = 67663538;
9311+ name = "Samuel Gräfenstein";
9312+ keys = [{
9313+ longkeyid = "rsa4096/0xEF76A063F15C63C8";
9314+ fingerprint = "FF24 5832 8FAF 4660 18C6 186E EF76 A063 F15C 63C8";
9315+ }];
9316+ };
111299317 samuelrivas = {
111309318 email = "samuelrivas@gmail.com";
111319319 github = "samuelrivas";
111329320 githubId = 107703;
111339321 name = "Samuel Rivas";
111349322 };
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− };
111459323 sander = {
111469324 email = "s.vanderburg@tudelft.nl";
111479325 github = "svanderburg";
@@ -11190,12 +9368,6 @@
111909368 githubId = 720864;
111919369 name = "Sébastien Bourdeauducq";
111929370 };
11193− sbellem = {
11194− email = "sbellem@gmail.com";
11195− github = "sbellem";
11196− githubId = 125458;
11197− name = "Sylvain Bellemare";
11198− };
111999371 sbond75 = {
112009372 name = "sbond75";
112019373 email = "43617712+sbond75@users.noreply.github.com";
@@ -11248,16 +9420,6 @@
112489420 email = "schristopher@konputa.com";
112499421 name = "Scott Christopher";
112509422 };
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−};
112619423 scode = {
112629424 email = "peter.schuller@infidyne.com";
112639425 github = "scode";
@@ -11278,7 +9440,6 @@
112789440 };
112799441 Scriptkiddi = {
112809442 email = "nixos@scriptkiddi.de";
11281− matrix = "@fritz.otlinghaus:helsinki-systems.de";
112829443 github = "scriptkiddi";
112839444 githubId = 3598650;
112849445 name = "Fritz Otlinghaus";
@@ -11291,11 +9452,16 @@
112919452 };
112929453 sdier = {
112939454 email = "scott@dier.name";
11294− matrix = "@sdier:matrix.org";
112959455 github = "sdier";
112969456 githubId = 11613056;
112979457 name = "Scott Dier";
112989458 };
9459+ sdll = {
9460+ email = "sasha.delly@gmail.com";
9461+ github = "sdll";
9462+ githubId = 17913919;
9463+ name = "Sasha Illarionov";
9464+ };
112999465 SeanZicari = {
113009466 email = "sean.zicari@gmail.com";
113019467 github = "SeanZicari";
@@ -11308,30 +9474,12 @@
113089474 githubId = 19472270;
113099475 name = "Sebastian";
113109476 };
11311− sebastianblunt = {
11312− name = "Sebastian Blunt";
11313− email = "nix@sebastianblunt.com";
11314− github = "sebastianblunt";
11315− githubId = 47431204;
11316− };
113179477 sebbadk = {
113189478 email = "sebastian@sebba.dk";
113199479 github = "SEbbaDK";
113209480 githubId = 1567527;
113219481 name = "Sebastian Hyberts";
113229482 };
11323− sebbel = {
11324− email = "hej@sebastian-ball.de";
11325− github = "sebbel";
11326− githubId = 1940568;
11327− name = "Sebastian Ball";
11328− };
11329− sebtm = {
11330− email = "mail@sebastian-sellmeier.de";
11331− github = "sebtm";
11332− githubId = 17243347;
11333− name = "Sebastian Sellmeier";
11334− };
113359483 sellout = {
113369484 email = "greg@technomadic.org";
113379485 github = "sellout";
@@ -11368,18 +9516,6 @@
113689516 githubId = 307899;
113699517 name = "Gurkan Gur";
113709518 };
11371− serge = {
11372− email = "sb@canva.com";
11373− github = "serge-belov";
11374− githubId = 38824235;
11375− name = "Serge Belov";
11376− };
11377− sersorrel = {
11378− email = "ash@sorrel.sh";
11379− github = "sersorrel";
11380− githubId = 9433472;
11381− name = "ash";
11382− };
113839519 servalcatty = {
113849520 email = "servalcat@pm.me";
113859521 github = "servalcatty";
@@ -11418,12 +9554,6 @@
114189554 githubId = 1151264;
114199555 name = "Sebastian Graf";
114209556 };
11421− shadaj = {
11422− email = "shadaj@users.noreply.github.com";
11423− github = "shadaj";
11424− githubId = 543055;
11425− name = "Shadaj Laddad";
11426− };
114279557 shahrukh330 = {
114289558 email = "shahrukh330@gmail.com";
114299559 github = "shahrukh330";
@@ -11448,28 +9578,12 @@
114489578 githubId = 6720672;
114499579 name = "Shane Pearlman";
114509580 };
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− };
114619581 shawndellysse = {
114629582 email = "sdellysse@gmail.com";
114639583 github = "shawndellysse";
114649584 githubId = 293035;
114659585 name = "Shawn Dellysse";
114669586 };
11467− shawn8901 = {
11468− email = "shawn8901@googlemail.com";
11469− github = "shawn8901";
11470− githubId = 12239057;
11471− name = "Shawn8901";
11472− };
114739587 shazow = {
114749588 email = "andrey.petrov@shazow.net";
114759589 github = "shazow";
@@ -11500,22 +9614,6 @@
115009614 githubId = 251028;
115019615 name = "Shell Turner";
115029616 };
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− };
115199617 shlevy = {
115209618 email = "shea@shealevy.com";
115219619 github = "shlevy";
@@ -11546,16 +9644,6 @@
115469644 githubId = 819413;
115479645 name = "Benedict Aas";
115489646 };
11549− shreerammodi = {
11550− name = "Shreeram Modi";
11551− email = "shreerammodi10@gmail.com";
11552− github = "Shrimpram";
11553− githubId = 67710369;
11554− keys = [{
11555− longkeyid = "rsa4096/0x163B16EE76ED24CE";
11556− fingerprint = "EA88 EA07 26E9 6CBF 6365 3966 163B 16EE 76ED 24CE";
11557− }];
11558− };
115599647 shyim = {
115609648 email = "s.sayakci@gmail.com";
115619649 github = "shyim";
@@ -11587,7 +9675,7 @@
115879675 name = "Yann Hodique";
115889676 };
115899677 sikmir = {
11590− email = "sikmir@disroot.org";
9678+ email = "sikmir@gmail.com";
115919679 github = "sikmir";
115929680 githubId = 688044;
115939681 name = "Nikolay Korotkiy";
@@ -11596,12 +9684,6 @@
115969684 fingerprint = "ADF4 C13D 0E36 1240 BD01 9B51 D1DE 6D7F 6936 63A5";
115979685 }];
115989686 };
11599− simarra = {
11600− name = "simarra";
11601− email = "loic.martel@protonmail.com";
11602− github = "simarra";
11603− githubId = 14372987;
11604− };
116059687 simonchatts = {
116069688 email = "code@chatts.net";
116079689 github = "simonchatts";
@@ -11620,15 +9702,8 @@
116209702 githubId = 2770647;
116219703 name = "Simon Vandel Sillesen";
116229704 };
11623− sir4ur0n = {
11624− email = "sir4ur0n@users.noreply.github.com";
11625− github = "sir4ur0n";
11626− githubId = 1204125;
11627− name = "sir4ur0n";
11628− };
116299705 siraben = {
116309706 email = "bensiraphob@gmail.com";
11631− matrix = "@siraben:matrix.org";
116329707 github = "siraben";
116339708 githubId = 8219659;
116349709 name = "Siraphob Phipathananunth";
@@ -11643,12 +9718,6 @@
116439718 fingerprint = "B234 EFD4 2B42 FE81 EE4D 7627 F72C 4A88 7F9A 24CA";
116449719 }];
116459720 };
11646− sirseruju = {
11647− email = "sir.seruju@yandex.ru";
11648− github = "sirseruju";
11649− githubId = 74881555;
11650− name = "Fofanov Sergey";
11651− };
116529721 sivteck = {
116539722 email = "sivaram1992@gmail.com";
116549723 github = "sivteck";
@@ -11707,7 +9776,6 @@
117079776 };
117089777 SlothOfAnarchy = {
117099778 email = "slothofanarchy1@gmail.com";
11710− matrix = "@michel.weitbrecht:helsinki-systems.de";
117119779 github = "SlothOfAnarchy";
117129780 githubId = 12828415;
117139781 name = "Michel Weitbrecht";
@@ -11722,12 +9790,6 @@
117229790 fingerprint = "6F8A 18AE 4101 103F 3C54 24B9 6AA2 3A11 93B7 064B";
117239791 }];
117249792 };
11725− smancill = {
11726− email = "smancill@smancill.dev";
11727− github = "smancill";
11728− githubId = 238528;
11729− name = "Sebastián Mancilla";
11730− };
117319793 smaret = {
117329794 email = "sebastien.maret@icloud.com";
117339795 github = "smaret";
@@ -11738,25 +9800,12 @@
117389800 fingerprint = "4242 834C D401 86EF 8281 4093 86E3 0E5A 0F5F C59C";
117399801 }];
117409802 };
11741− smasher164 = {
11742− email = "aindurti@gmail.com";
11743− github = "smasher164";
11744− githubId = 12636891;
11745− name = "Akhil Indurti";
11746− };
117479803 smironov = {
117489804 email = "grrwlf@gmail.com";
117499805 github = "grwlf";
117509806 githubId = 4477729;
117519807 name = "Sergey Mironov";
117529808 };
11753− smitop = {
11754− name = "Smitty van Bodegom";
11755− email = "me@smitop.com";
11756− matrix = "@smitop:kde.org";
11757− github = "Smittyvb";
11758− githubId = 10530973;
11759− };
117609809 sna = {
117619810 email = "abouzahra.9@wright.edu";
117629811 github = "s-na";
@@ -11795,18 +9844,10 @@
117959844 };
117969845 solson = {
117979846 email = "scott@solson.me";
11798− matrix = "@solson:matrix.org";
117999847 github = "solson";
118009848 githubId = 26806;
118019849 name = "Scott Olson";
118029850 };
11803− SomeoneSerge = {
11804− email = "sergei.kozlukov@aalto.fi";
11805− matrix = "@ss:someonex.net";
11806− github = "SomeoneSerge";
11807− githubId = 9720532;
11808− name = "Sergei K";
11809− };
118109851 sondr3 = {
118119852 email = "nilsen.sondre@gmail.com";
118129853 github = "sondr3";
@@ -11855,7 +9896,6 @@
118559896 };
118569897 spencerjanssen = {
118579898 email = "spencerjanssen@gmail.com";
11858− matrix = "@sjanssen:matrix.org";
118599899 github = "spencerjanssen";
118609900 githubId = 2600039;
118619901 name = "Spencer Janssen";
@@ -11904,7 +9944,6 @@
119049944 };
119059945 srhb = {
119069946 email = "sbrofeldt@gmail.com";
11907− matrix = "@srhb:matrix.org";
119089947 github = "srhb";
119099948 githubId = 219362;
119109949 name = "Sarah Brofeldt";
@@ -11921,47 +9960,12 @@
119219960 githubId = 8668915;
119229961 name = "Stephane Schitter";
119239962 };
11924− staccato = {
11925− name = "staccato";
11926− email = "moveq@riseup.net";
11927− github = "staccato";
11928− githubId = 86573128;
11929− };
11930− stackshadow = {
11931− email = "stackshadow@evilbrain.de";
11932− github = "stackshadow";
11933− githubId = 7512804;
11934− name = "Martin Langlotz";
11935− };
11936− steamwalker = {
11937− email = "steamwalker@xs4all.nl";
11938− github = "steamwalker";
11939− githubId = 94006354;
11940− name = "steamwalker";
11941− };
119429963 steell = {
119439964 email = "steve@steellworks.com";
119449965 github = "Steell";
119459966 githubId = 1699155;
119469967 name = "Steve Elliott";
119479968 };
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− };
119659969 stelcodes = {
119669970 email = "stel@stel.codes";
119679971 github = "stelcodes";
@@ -11970,7 +9974,6 @@
119709974 };
119719975 stephank = {
119729976 email = "nix@stephank.nl";
11973− matrix = "@skochen:matrix.org";
119749977 github = "stephank";
119759978 githubId = 89950;
119769979 name = "Stéphan Kochen";
@@ -12021,24 +10024,12 @@
1202110024 githubId = 1829294;
1202210025 name = "Steve Chávez";
1202310026 };
12024− stevebob = {
12025− email = "stephen@sherra.tt";
12026− github = "stevebob";
12027− githubId = 417118;
12028− name = "Stephen Sherratt";
12029− };
1203010027 steveej = {
1203110028 email = "mail@stefanjunker.de";
1203210029 github = "steveej";
1203310030 githubId = 1181362;
1203410031 name = "Stefan Junker";
1203510032 };
12036− stevenroose = {
12037− email = "github@stevenroose.org";
12038− github = "stevenroose";
12039− githubId = 853468;
12040− name = "Steven Roose";
12041− };
1204210033 stianlagstad = {
1204310034 email = "stianlagstad@gmail.com";
1204410035 github = "stianlagstad";
@@ -12063,12 +10054,6 @@
1206310054 githubId = 1694705;
1206410055 name = "Sam Stites";
1206510056 };
12066− strager = {
12067− email = "strager.nds@gmail.com";
12068− github = "strager";
12069− githubId = 48666;
12070− name = "Matthew \"strager\" Glazar";
12071− };
1207210057 stumoss = {
1207310058 email = "samoss@gmail.com";
1207410059 github = "stumoss";
@@ -12088,10 +10073,10 @@
1208810073 name = "Justus K";
1208910074 };
1209010075 SubhrajyotiSen = {
12091− email = "subhrajyoti12@gmail.com";
12092− github = "SubhrajyotiSen";
12093− githubId = 12984845;
12094− name = "Subhrajyoti Sen";
10076+ email = "subhrajyoti12@gmail.com";
10077+ github = "SubhrajyotiSen";
10078+ githubId = 12984845;
10079+ name = "Subhrajyoti Sen";
1209510080 };
1209610081 suhr = {
1209710082 email = "suhr@i2pmail.org";
@@ -12114,13 +10099,11 @@
1211410099 superherointj = {
1211510100 name = "Sérgio G.";
1211610101 email = "5861043+superherointj@users.noreply.github.com";
12117− matrix = "@superherointj:matrix.org";
1211810102 github = "superherointj";
1211910103 githubId = 5861043;
1212010104 };
1212110105 SuperSandro2000 = {
1212210106 email = "sandro.jaeckel@gmail.com";
12123− matrix = "@sandro:supersandro.de";
1212410107 github = "SuperSandro2000";
1212510108 githubId = 7258858;
1212610109 name = "Sandro Jäckel";
@@ -12205,7 +10188,6 @@
1220510188 };
1220610189 symphorien = {
1220710190 email = "symphorien_nixpkgs@xlumurb.eu";
12208− matrix = "@symphorien:xlumurb.eu";
1220910191 github = "symphorien";
1221010192 githubId = 12595971;
1221110193 name = "Guillaume Girol";
@@ -12274,16 +10256,6 @@
1227410256 githubId = 321799;
1227510257 name = "Paul Colomiets";
1227610258 };
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− };
1228710259 takagiy = {
1228810260 email = "takagiy.4dev@gmail.com";
1228910261 github = "takagiy";
@@ -12304,7 +10276,6 @@
1230410276 };
1230510277 taktoa = {
1230610278 email = "taktoa@gmail.com";
12307− matrix = "@taktoa:matrix.org";
1230810279 github = "taktoa";
1230910280 githubId = 553443;
1231010281 name = "Remy Goldschmidt";
@@ -12323,7 +10294,6 @@
1232310294 };
1232410295 talyz = {
1232510296 email = "kim.lindberger@gmail.com";
12326− matrix = "@talyz:matrix.org";
1232710297 github = "talyz";
1232810298 githubId = 63433;
1232910299 name = "Kim Lindberger";
@@ -12358,13 +10328,6 @@
1235810328 githubId = 863327;
1235910329 name = "Tyler Benster";
1236010330 };
12361− tboerger = {
12362− email = "thomas@webhippie.de";
12363− matrix = "@tboerger:matrix.org";
12364− github = "tboerger";
12365− githubId = 156964;
12366− name = "Thomas Boerger";
12367− };
1236810331 tcbravo = {
1236910332 email = "tomas.bravo@protonmail.ch";
1237010333 github = "tcbravo";
@@ -12377,12 +10340,6 @@
1237710340 githubId = 2389333;
1237810341 name = "Andy Tockman";
1237910342 };
12380− techknowlogick = {
12381− email = "techknowlogick@gitea.io";
12382− github = "techknowlogick";
12383− githubId = 164197;
12384− name = "techknowlogick";
12385− };
1238610343 Technical27 = {
1238710344 email = "38222826+Technical27@users.noreply.github.com";
1238810345 github = "Technical27";
@@ -12419,12 +10376,6 @@
1241910376 githubId = 280235;
1242010377 name = "Terje Larsen";
1242110378 };
12422− terrorjack = {
12423− email = "astrohavoc@gmail.com";
12424− github = "TerrorJack";
12425− githubId = 3889585;
12426− name = "Cheng Shao";
12427− };
1242810379 tesq0 = {
1242910380 email = "mikolaj.galkowski@gmail.com";
1243010381 github = "tesq0";
@@ -12451,7 +10402,6 @@
1245110402 };
1245210403 tfc = {
1245310404 email = "jacek@galowicz.de";
12454− matrix = "@jonge:ukvly.org";
1245510405 github = "tfc";
1245610406 githubId = 29044;
1245710407 name = "Jacek Galowicz";
@@ -12462,12 +10412,6 @@
1246210412 githubId = 378734;
1246310413 name = "TG ⊗ Θ";
1246410414 };
12465− tgunnoe = {
12466− email = "t@gvno.net";
12467− github = "tgunnoe";
12468− githubId = 7254833;
12469− name = "Taylor Gunnoe";
12470− };
1247110415 th0rgal = {
1247210416 email = "thomas.marchand@tuta.io";
1247310417 github = "Th0rgal";
@@ -12492,17 +10436,6 @@
1249210436 githubId = 1141680;
1249310437 name = "Thane Gill";
1249410438 };
12495− thblt = {
12496− name = "Thibault Polge";
12497− email = "thibault@thb.lt";
12498− matrix = "@thbltp:matrix.org";
12499− github = "thblt";
12500− githubId = 2453136;
12501− keys = [{
12502− longkeyid = "rsa4096/0x63A44817A52EAB7B";
12503− fingerprint = "D2A2 F0A1 E7A8 5E6F B711 DEE5 63A4 4817 A52E AB7B";
12504− }];
12505− };
1250610439 TheBrainScrambler = {
1250710440 email = "esthromeris@riseup.net";
1250810441 github = "TheBrainScrambler";
@@ -12561,15 +10494,8 @@
1256110494 githubId = 844343;
1256210495 name = "Thiago K. Okada";
1256310496 };
12564− thibaultlemaire = {
12565− email = "thibault.lemaire@protonmail.com";
12566− github = "ThibaultLemaire";
12567− githubId = 21345269;
12568− name = "Thibault Lemaire";
12569− };
1257010497 thibautmarty = {
1257110498 email = "github@thibautmarty.fr";
12572− matrix = "@thibaut:thibautmarty.fr";
1257310499 github = "ThibautMarty";
1257410500 githubId = 3268082;
1257510501 name = "Thibaut Marty";
@@ -12632,13 +10558,6 @@
1263210558 githubId = 1618946;
1263310559 name = "Tiago Castro";
1263410560 };
12635− tilcreator = {
12636− name = "TilCreator";
12637− email = "contact.nixos@tc-j.de";
12638− matrix = "@tilcreator:matrix.org";
12639− github = "TilCreator";
12640− githubId = 18621411;
12641− };
1264210561 tilpner = {
1264310562 email = "till@hoeppner.ws";
1264410563 github = "tilpner";
@@ -12703,12 +10622,6 @@
1270310622 fingerprint = "556A 403F B0A2 D423 F656 3424 8489 B911 F9ED 617B";
1270410623 }];
1270510624 };
12706− tmarkovski = {
12707− email = "tmarkovski@gmail.com";
12708− github = "tmarkovski";
12709− githubId = 1280118;
12710− name = "Tomislav Markovski";
12711− };
1271210625 tmountain = {
1271310626 email = "tinymountain@gmail.com";
1271410627 github = "tmountain";
@@ -12723,22 +10636,10 @@
1272310636 };
1272410637 tnias = {
1272510638 email = "phil@grmr.de";
12726− matrix = "@tnias:stratum0.org";
1272710639 github = "tnias";
1272810640 githubId = 9853194;
1272910641 name = "Philipp Bartsch";
1273010642 };
12731− toastal = {
12732− email = "toastal+nix@posteo.net";
12733− matrix = "@toastal:matrix.org";
12734− github = "toastal";
12735− githubId = 561087;
12736− name = "toastal";
12737− keys = [{
12738− longkeyid = "ed25519/5CCE6F1466D47C9E";
12739− fingerprint = "7944 74B7 D236 DAB9 C9EF E7F9 5CCE 6F14 66D4 7C9E";
12740− }];
12741− };
1274210643 tobim = {
1274310644 email = "nix@tobim.fastmail.fm";
1274410645 github = "tobim";
@@ -12771,7 +10672,6 @@
1277110672 };
1277210673 tomberek = {
1277310674 email = "tomberek@gmail.com";
12774− matrix = "@tomberek:matrix.org";
1277510675 github = "tomberek";
1277610676 githubId = 178444;
1277710677 name = "Thomas Bereknyei";
@@ -12790,7 +10690,6 @@
1279010690 };
1279110691 toonn = {
1279210692 email = "nixpkgs@toonn.io";
12793− matrix = "@toonn:matrix.org";
1279410693 github = "toonn";
1279510694 githubId = 1486805;
1279610695 name = "Toon Nolten";
@@ -12813,25 +10712,12 @@
1281310712 githubId = 90456;
1281410713 name = "Rebecca (Bex) Kelly";
1281510714 };
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− };
1282310715 travisbhartwell = {
1282410716 email = "nafai@travishartwell.net";
1282510717 github = "travisbhartwell";
1282610718 githubId = 10110;
1282710719 name = "Travis B. Hartwell";
1282810720 };
12829− travisdavis-ops = {
12830− email = "travisdavismedia@gmail.com";
12831− github = "travisdavis-ops";
12832− githubId = 52011418;
12833− name = "Travis Davis";
12834− };
1283510721 TredwellGit = {
1283610722 email = "tredwell@tutanota.com";
1283710723 github = "TredwellGit";
@@ -12880,24 +10766,12 @@
1288010766 githubId = 1183303;
1288110767 name = "Jakob Klepp";
1288210768 };
12883− trundle = {
12884− name = "Andreas Stührk";
12885− email = "andy@hammerhartes.de";
12886− github = "Trundle";
12887− githubId = 332418;
12888− };
1288910769 tscholak = {
1289010770 email = "torsten.scholak@googlemail.com";
1289110771 github = "tscholak";
1289210772 githubId = 1568873;
1289310773 name = "Torsten Scholak";
1289410774 };
12895− tshaynik = {
12896− email = "tshaynik@protonmail.com";
12897− github = "tshaynik";
12898− githubId = 15064765;
12899− name = "tshaynik";
12900− };
1290110775 tstrobel = {
1290210776 email = "4ZKTUB6TEP74PYJOPWIR013S2AV29YUBW5F9ZH2F4D5UMJUJ6S@hash.domains";
1290310777 name = "Thomas Strobel";
@@ -12976,24 +10850,12 @@
1297610850 fingerprint = "E631 8869 586F 99B4 F6E6 D785 5942 58F0 389D 2802";
1297710851 }];
1297810852 };
12979− twitchyliquid64 = {
12980− name = "Tom";
12981− email = "twitchyliquid64@ciphersink.net";
12982− github = "twitchyliquid64";
12983− githubId = 6328589;
12984− };
1298510853 typetetris = {
1298610854 email = "ericwolf42@mail.com";
1298710855 github = "typetetris";
1298810856 githubId = 1983821;
1298910857 name = "Eric Wolf";
1299010858 };
12991− uakci = {
12992− name = "uakci";
12993− email = "uakci@uakci.pl";
12994− github = "uakci";
12995− githubId = 6961268;
12996− };
1299710859 udono = {
1299810860 email = "udono@virtual-things.biz";
1299910861 github = "udono";
@@ -13006,36 +10868,12 @@
1300610868 githubId = 1607770;
1300710869 name = "Ulrik Strid";
1300810870 };
13009− unclechu = {
13010− name = "Viacheslav Lotsmanov";
13011− email = "lotsmanov89@gmail.com";
13012− github = "unclechu";
13013− githubId = 799353;
13014− keys = [{
13015− longkeyid = "rsa4096/0xD276FF7467007335";
13016− fingerprint = "EE59 5E29 BB5B F2B3 5ED2 3F1C D276 FF74 6700 7335";
13017− }];
13018− };
13019− uniquepointer = {
13020− email = "uniquepointer@mailbox.org";
13021− matrix = "@uniquepointer:matrix.org";
13022− github = "uniquepointer";
13023− githubId = 71751817;
13024− name = "uniquepointer";
13025− };
1302610871 unode = {
1302710872 email = "alves.rjc@gmail.com";
13028− matrix = "@renato_alves:matrix.org";
1302910873 github = "unode";
1303010874 githubId = 122319;
1303110875 name = "Renato Alves";
1303210876 };
13033− unrooted = {
13034− name = "Konrad Klawikowski";
13035− email = "konrad.root.klawikowski@gmail.com";
13036− github = "unrooted";
13037− githubId = 30440603;
13038− };
1303910877 uralbash = {
1304010878 email = "root@uralbash.ru";
1304110879 github = "uralbash";
@@ -13090,9 +10928,14 @@
1309010928 github = "deviant";
1309110929 githubId = 68829907;
1309210930 };
10931+ va1entin = {
10932+ email = "github@valentinsblog.com";
10933+ github = "va1entin";
10934+ githubId = 31535155;
10935+ name = "Valentin Heidelberger";
10936+ };
1309310937 vaibhavsagar = {
1309410938 email = "vaibhavsagar@gmail.com";
13095− matrix = "@vaibhavsagar:matrix.org";
1309610939 github = "vaibhavsagar";
1309710940 githubId = 1525767;
1309810941 name = "Vaibhav Sagar";
@@ -13111,7 +10954,6 @@
1311110954 };
1311210955 valodim = {
1311310956 email = "look@my.amazin.horse";
13114− matrix = "@Valodim:stratum0.org";
1311510957 github = "valodim";
1311610958 githubId = 27813;
1311710959 name = "Vincent Breitmoser";
@@ -13123,14 +10965,10 @@
1312310965 name = "Jos van den Oever";
1312410966 };
1312510967 vanilla = {
13126− email = "osu_vanilla@126.com";
10968+ email = "neko@hydev.org";
1312710969 github = "VergeDX";
1312810970 githubId = 25173827;
1312910971 name = "Vanilla";
13130− keys = [{
13131− longkeyid = "rsa4096/0x3750028ED04FA42E";
13132− fingerprint = "2649 340C C909 F821 D251 6714 3750 028E D04F A42E";
13133− }];
1313410972 };
1313510973 vanschelven = {
1313610974 email = "klaas@vanschelven.com";
@@ -13172,7 +11010,6 @@
1317211010 name = "Vladimír Čunát";
1317311011 # vcunat@gmail.com predominated in commits before 2019/03
1317411012 email = "v@cunat.cz";
13175− matrix = "@vcunat:matrix.org";
1317611013 github = "vcunat";
1317711014 githubId = 1785925;
1317811015 keys = [{
@@ -13198,7 +11035,7 @@
1319811035 };
1319911036 vel = {
1320011037 email = "llathasa@outlook.com";
13201− github = "q60";
11038+ github = "llathasa-veleth";
1320211039 githubId = 61933599;
1320311040 name = "vel";
1320411041 };
@@ -13220,21 +11057,15 @@
1322011057 githubId = 335406;
1322111058 name = "David Asabina";
1322211059 };
13223− vidister = {
13224− email = "v@vidister.de";
13225− github = "vidister";
13226− githubId = 11413574;
13227− name = "Fiona Weber";
13228− };
1322911060 vifino = {
1323011061 email = "vifino@tty.sh";
1323111062 github = "vifino";
1323211063 githubId = 5837359;
1323311064 name = "Adrian Pistol";
1323411065 };
13235− vikanezrimaya = {
11066+ vika_nezrimaya = {
1323611067 email = "vika@fireburn.ru";
13237− github = "vikanezrimaya";
11068+ github = "kisik21";
1323811069 githubId = 7953163;
1323911070 name = "Vika Shleina";
1324011071 keys = [{
@@ -13258,12 +11089,6 @@
1325811089 githubId = 118959;
1325911090 name = "VinyMeuh";
1326011091 };
13261− viraptor = {
13262− email = "nix@viraptor.info";
13263− github = "viraptor";
13264− githubId = 188063;
13265− name = "Stanisław Pitucha";
13266− };
1326711092 viric = {
1326811093 email = "viric@viric.name";
1326911094 github = "viric";
@@ -13294,12 +11119,6 @@
1329411119 githubId = 1771332;
1329511120 name = "László Vaskó";
1329611121 };
13297− vlinkz = {
13298− email = "vmfuentes64@gmail.com";
13299− github = "vlinkz";
13300− githubId = 20145996;
13301− name = "Victor Fuentes";
13302− };
1330311122 vlstill = {
1330411123 email = "xstill@fi.muni.cz";
1330511124 github = "vlstill";
@@ -13349,6 +11168,10 @@
1334911168 githubId = 3413119;
1335011169 name = "Vonfry";
1335111170 };
11171+ vozz = {
11172+ email = "oliver.huntuk@gmail.com";
11173+ name = "Oliver Hunt";
11174+ };
1335211175 vq = {
1335311176 email = "vq@erq.se";
1335411177 name = "Daniel Nilsson";
@@ -13389,16 +11212,6 @@
1338911212 githubId = 3889405;
1339011213 name = "vyp";
1339111214 };
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− };
1340211215 wakira = {
1340311216 name = "Sheng Wang";
1340411217 email = "sheng@a64.work";
@@ -13427,44 +11240,16 @@
1342711240 githubId = 34962284;
1342811241 name = "wchresta";
1342911242 };
13430− wdavidw = {
13431− name = "David Worms";
13432− email = "david@adaltas.com";
13433− github = "wdavidw";
13434− githubId = 46896;
13435− };
1343611243 wedens = {
1343711244 email = "kirill.wedens@gmail.com";
1343811245 name = "wedens";
1343911246 };
13440− wegank = {
13441− name = "Weijia Wang";
13442− email = "contact@weijia.wang";
13443− github = "wegank";
13444− githubId = 9713184;
13445− };
1344611247 weihua = {
1344711248 email = "luwh364@gmail.com";
1344811249 github = "weihua-lu";
1344911250 githubId = 9002575;
1345011251 name = "Weihua Lu";
1345111252 };
13452− welteki = {
13453− email = "welteki@pm.me";
13454− github = "welteki";
13455− githubId = 16267532;
13456− name = "Han Verstraete";
13457− keys = [{
13458− longkeyid = "rsa4096/0x11F7BAEA856743FF";
13459− fingerprint = "2145 955E 3F5E 0C95 3458 41B5 11F7 BAEA 8567 43FF";
13460− }];
13461− };
13462− wentasah = {
13463− name = "Michal Sojka";
13464− email = "wsh@2x.cz";
13465− github = "wentasah";
13466− githubId = 140542;
13467− };
1346811253 wheelsandmetal = {
1346911254 email = "jakob@schmutz.co.uk";
1347011255 github = "wheelsandmetal";
@@ -13477,12 +11262,6 @@
1347711262 githubId = 19174984;
1347811263 name = "Alex Whitt";
1347911264 };
13480− whonore = {
13481− email = "wolfhonore@gmail.com";
13482− github = "whonore";
13483− githubId = 7121530;
13484− name = "Wolf Honoré";
13485− };
1348611265 wildsebastian = {
1348711266 name = "Sebastian Wild";
1348811267 email = "sebastian@wild-siena.com";
@@ -13503,12 +11282,6 @@
1350311282 email = "tim.williams.public@gmail.com";
1350411283 name = "Tim Philip Williams";
1350511284 };
13506− willcohen = {
13507− email = "willcohen@users.noreply.github.com";
13508− github = "willcohen";
13509− githubId = 5185341;
13510− name = "Will Cohen";
13511− };
1351211285 winden = {
1351311286 email = "windenntw@gmail.com";
1351411287 name = "Antonio Vargas Gonzalez";
@@ -13519,18 +11292,12 @@
1351911292 githubId = 6016963;
1352011293 name = "Patrick Winter";
1352111294 };
13522− winter = {
11295+ winterqt = {
1352311296 email = "nixos@winter.cafe";
1352411297 github = "winterqt";
1352511298 githubId = 78392041;
1352611299 name = "Winter";
1352711300 };
13528− wintrmvte = {
13529− name = "Jakub Lutczyn";
13530− email = "kubalutczyn@gmail.com";
13531− github = "wintrmvte";
13532− githubId = 41823252;
13533− };
1353411301 wirew0rm = {
1353511302 email = "alex@wirew0rm.de";
1353611303 github = "wirew0rm";
@@ -13592,7 +11359,7 @@
1359211359 name = "Andrei Pampu";
1359311360 };
1359411361 wolfangaukang = {
13595− email = "clone.gleeful135+nixpkgs@anonaddy.me";
11362+ email = "liquid.query960@4wrd.cc";
1359611363 github = "wolfangaukang";
1359711364 githubId = 8378365;
1359811365 name = "P. R. d. O.";
@@ -13609,12 +11376,6 @@
1360911376 githubId = 28888242;
1361011377 name = "WORLDofPEACE";
1361111378 };
13612− wr0belj = {
13613− name = "Jakub Wróbel";
13614− email = "wrobel.jakub@protonmail.com";
13615− github = "wr0belj";
13616− githubId = 40501814;
13617− };
1361811379 wscott = {
1361911380 email = "wsc9tt@gmail.com";
1362011381 github = "wscott";
@@ -13622,7 +11383,7 @@
1362211383 name = "Wayne Scott";
1362311384 };
1362411385 wucke13 = {
13625− email = "wucke13@gmail.com";
11386+ email = "info@wucke13.de";
1362611387 github = "wucke13";
1362711388 githubId = 20400405;
1362811389 name = "Wucke";
@@ -13645,25 +11406,12 @@
1364511406 github = "wunderbrick";
1364611407 githubId = 52174714;
1364711408 };
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− };
1365511409 wyvie = {
1365611410 email = "elijahrum@gmail.com";
1365711411 github = "wyvie";
1365811412 githubId = 3992240;
1365911413 name = "Elijah Rum";
1366011414 };
13661− x3ro = {
13662− name = "^x3ro";
13663− email = "nix@x3ro.dev";
13664− github = "x3rAx";
13665− githubId = 2268851;
13666− };
1366711415 xaverdh = {
1366811416 email = "hoe.dom@gmx.de";
1366911417 github = "xaverdh";
@@ -13684,7 +11432,6 @@
1368411432 };
1368511433 xe = {
1368611434 email = "me@christine.website";
13687− matrix = "@withoutwithin:matrix.org";
1368811435 github = "Xe";
1368911436 githubId = 529003;
1369011437 name = "Christine Dodrill";
@@ -13703,17 +11450,10 @@
1370311450 };
1370411451 xfix = {
1370511452 email = "konrad@borowski.pw";
13706− matrix = "@xfix:matrix.org";
1370711453 github = "xfix";
1370811454 githubId = 1297598;
1370911455 name = "Konrad Borowski";
1371011456 };
13711− xgroleau = {
13712− email = "xgroleau@gmail.com";
13713− github = "xgroleau";
13714− githubId = 31734358;
13715− name = "Xavier Groleau";
13716− };
1371711457 xiorcale = {
1371811458 email = "quentin.vaucher@pm.me";
1371911459 github = "xiorcale";
@@ -13756,6 +11496,12 @@
1375611496 githubId = 1962985;
1375711497 name = "Vincenzo Mantova";
1375811498 };
11499+ xwvvvvwx = {
11500+ email = "davidterry@posteo.de";
11501+ github = "xwvvvvwx";
11502+ githubId = 6689924;
11503+ name = "David Terry";
11504+ };
1375911505 xzfc = {
1376011506 email = "xzfcpw@gmail.com";
1376111507 github = "xzfc";
@@ -13768,12 +11514,6 @@
1376811514 githubId = 2242427;
1376911515 name = "Yoann Ono";
1377011516 };
13771− yana = {
13772− email = "yana@riseup.net";
13773− github = "sowelisuwi";
13774− githubId = 1643293;
13775− name = "Yana Timoshenko";
13776− };
1377711517 yarny = {
1377811518 email = "41838844+Yarny0@users.noreply.github.com";
1377911519 github = "Yarny0";
@@ -13786,12 +11526,11 @@
1378611526 githubId = 3705333;
1378711527 name = "Dmitry V.";
1378811528 };
13789− yayayayaka = {
13790− email = "nixpkgs@uwu.is";
13791− matrix = "@lara:uwu.is";
13792− github = "yayayayaka";
13793− githubId = 73759599;
13794− name = "Lara A.";
11529+ yegortimoshenko = {
11530+ email = "yegortimoshenko@riseup.net";
11531+ github = "yegortimoshenko";
11532+ githubId = 1643293;
11533+ name = "Yegor Timoshenko";
1379511534 };
1379611535 yesbox = {
1379711536 email = "jesper.geertsen.jonsson@gmail.com";
@@ -13799,30 +11538,12 @@
1379911538 githubId = 4113027;
1380011539 name = "Jesper Geertsen Jonsson";
1380111540 };
13802− yinfeng = {
13803− email = "lin.yinfeng@outlook.com";
13804− github = "linyinfeng";
13805− githubId = 11229748;
13806− name = "Lin Yinfeng";
13807− };
13808− ylecornec = {
13809− email = "yves.stan.lecornec@tweag.io";
13810− github = "ylecornec";
13811− githubId = 5978566;
13812− name = "Yves-Stan Le Cornec";
13813− };
1381411541 ylwghst = {
1381511542 email = "ylwghst@onionmail.info";
1381611543 github = "ylwghst";
1381711544 githubId = 26011724;
1381811545 name = "Burim Augustin Berisa";
1381911546 };
13820− yl3dy = {
13821− email = "aleksandr.kiselyov@gmail.com";
13822− github = "yl3dy";
13823− githubId = 1311192;
13824− name = "Alexander Kiselyov";
13825− };
1382611547 yochai = {
1382711548 email = "yochai@titat.info";
1382811549 github = "yochai";
@@ -13837,7 +11558,6 @@
1383711558 };
1383811559 yorickvp = {
1383911560 email = "yorickvanpelt@gmail.com";
13840− matrix = "@yorickvp:matrix.org";
1384111561 github = "yorickvp";
1384211562 githubId = 647076;
1384311563 name = "Yorick van Pelt";
@@ -13848,12 +11568,6 @@
1384811568 githubId = 452;
1384911569 name = "Yurii Rashkovskii";
1385011570 };
13851− yrd = {
13852− name = "Yannik Rödel";
13853− email = "nix@yannik.info";
13854− github = "yrd";
13855− githubId = 1820447;
13856− };
1385711571 ysndr = {
1385811572 email = "me@ysndr.de";
1385911573 github = "ysndr";
@@ -13884,14 +11598,12 @@
1388411598 };
1388511599 yuka = {
1388611600 email = "yuka@yuka.dev";
13887− matrix = "@yuka:yuka.dev";
1388811601 github = "yu-re-ka";
1388911602 githubId = 86169957;
1389011603 name = "Yureka";
1389111604 };
1389211605 yusdacra = {
1389311606 email = "y.bera003.06@protonmail.com";
13894− matrix = "@yusdacra:nixos.dev";
1389511607 github = "yusdacra";
1389611608 githubId = 19897088;
1389711609 name = "Yusuf Bera Ertan";
@@ -13900,16 +11612,6 @@
1390011612 fingerprint = "9270 66BD 8125 A45B 4AC4 0326 6180 7181 F60E FCB2";
1390111613 }];
1390211614 };
13903− yuu = {
13904− email = "yuuyin@protonmail.com";
13905− github = "yuuyins";
13906− githubId = 86538850;
13907− name = "Yuu Yin";
13908− keys = [{
13909− longkeyid = "rsa4096/0x416F303B43C20AC3";
13910− fingerprint = "9F19 3AE8 AA25 647F FC31 46B5 416F 303B 43C2 0AC3";
13911− }];
13912− };
1391311615 yvesf = {
1391411616 email = "yvesf+nix@xapek.org";
1391511617 github = "yvesf";
@@ -14004,7 +11706,6 @@
1400411706 };
1400511707 zhaofengli = {
1400611708 email = "hello@zhaofeng.li";
14007− matrix = "@zhaofeng:zhaofeng.li";
1400811709 github = "zhaofengli";
1400911710 githubId = 2189609;
1401011711 name = "Zhaofeng Li";
@@ -14033,6 +11734,12 @@
1403311734 githubId = 1772064;
1403411735 name = "Tim Zook";
1403511736 };
11737+ zoomulator = {
11738+ email = "zoomulator@gmail.com";
11739+ github = "zoomulator";
11740+ githubId = 1069303;
11741+ name = "Kim Simmons";
11742+ };
1403611743 zopieux = {
1403711744 email = "zopieux@gmail.com";
1403811745 github = "zopieux";
@@ -14129,6 +11836,12 @@
1412911836 githubId = 8686360;
1413011837 name = "Illia Shestakov";
1413111838 };
11839+ foxit64 = {
11840+ email = "o4nsxy05@gmail.com";
11841+ github = "foxit64";
11842+ githubId = 56247270;
11843+ name = "Foxit";
11844+ };
1413211845 masaeedu = {
1413311846 email = "masaeedu@gmail.com";
1413411847 github = "masaeedu";
@@ -14211,16 +11924,9 @@
1421111924 github = "deifactor";
1421211925 githubId = 30192992;
1421311926 };
14214− deinferno = {
14215− name = "deinferno";
14216− email = "14363193+deinferno@users.noreply.github.com";
14217− github = "deinferno";
14218− githubId = 14363193;
14219− };
1422011927 fzakaria = {
1422111928 name = "Farid Zakaria";
1422211929 email = "farid.m.zakaria@gmail.com";
14223− matrix = "@fzakaria:matrix.org";
1422411930 github = "fzakaria";
1422511931 githubId = 605070;
1422611932 };
@@ -14230,16 +11936,15 @@
1423011936 github = "nagisa";
1423111937 githubId = 679122;
1423211938 };
14233− yshym = {
11939+ yevhenshymotiuk = {
1423411940 name = "Yevhen Shymotiuk";
14235− email = "yshym@pm.me";
14236− github = "yshym";
11941+ email = "yevhenshymotiuk@gmail.com";
11942+ github = "yevhenshymotiuk";
1423711943 githubId = 44244245;
1423811944 };
1423911945 hmenke = {
1424011946 name = "Henri Menke";
1424111947 email = "henri@henrimenke.de";
14242− matrix = "@hmenke:matrix.org";
1424311948 github = "hmenke";
1424411949 githubId = 1903556;
1424511950 keys = [{
@@ -14306,7 +12011,6 @@
1430612011 princemachiavelli = {
1430712012 name = "Josh Hoffer";
1430812013 email = "jhoffer@sansorgan.es";
14309− matrix = "@princemachiavelli:matrix.org";
1431012014 github = "princemachiavelli";
1431112015 githubId = 2730968;
1431212016 keys = [{
@@ -14334,51 +12038,12 @@
1433412038 fingerprint = "61AE D40F 368B 6F26 9DAE 3892 6861 6B2D 8AC4 DCC5";
1433512039 }];
1433612040 };
14337− zbioe = {
14338− name = "Iury Fukuda";
14339− email = "zbioe@protonmail.com";
14340− github = "zbioe";
14341− githubId = 7332055;
14342− };
14343− zendo = {
14344− name = "zendo";
14345− email = "linzway@qq.com";
14346− github = "zendo";
14347− githubId = 348013;
14348− };
14349− zenithal = {
14350− name = "zenithal";
14351− email = "i@zenithal.me";
14352− github = "ZenithalHourlyRate";
14353− githubId = 19512674;
14354− keys = [{
14355− longkeyid = "rsa4096/0x87E17EEF9B18B6C9";
14356− fingerprint = "1127 F188 280A E312 3619 3329 87E1 7EEF 9B18 B6C9";
14357− }];
14358− };
1435912041 zeri = {
1436012042 name = "zeri";
1436112043 email = "68825133+zeri42@users.noreply.github.com";
14362− matrix = "@zeri:matrix.org";
1436312044 github = "zeri42";
1436412045 githubId = 68825133;
1436512046 };
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− };
1438212047 zseri = {
1438312048 name = "zseri";
1438412049 email = "zseri.devel@ytrizja.de";
@@ -14395,87 +12060,4 @@
1439512060 github = "zupo";
1439612061 githubId = 311580;
1439712062 };
14398− sei40kr = {
14399− name = "Seong Yong-ju";
14400− email = "sei40kr@gmail.com";
14401− github = "sei40kr";
14402− githubId = 11665236;
14403− };
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− };
1448112063}
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/copy-tarballs.pl+1−15
@@ -165,20 +165,6 @@ elsif (defined $expr) {
165165 my $hash = $fetch->{hash};
166166 my $name = $fetch->{name};
167167
168− if ($hash =~ /^([a-z0-9]+)-([A-Za-z0-9+\/=]+)$/) {
169− $algo = $1;
170− $hash = `nix hash to-base16 $hash` or die;
171− chomp $hash;
172− }
173−
174− next unless $algo =~ /^[a-z0-9]+$/;
175−
176− # Convert non-SRI base-64 to base-16.
177− if ($hash =~ /^[A-Za-z0-9+\/=]+$/) {
178− $hash = `nix hash to-base16 --type '$algo' $hash` or die;
179− chomp $hash;
180− }
181−
182168 if (defined $ENV{DEBUG}) {
183169 print "$url $algo $hash\n";
184170 next;
@@ -198,7 +184,7 @@ elsif (defined $expr) {
198184
199185 my $storePath = makeFixedOutputPath(0, $algo, $hash, $name);
200186
201− print STDERR "mirroring $url ($storePath, $algo, $hash)...\n";
187+ print STDERR "mirroring $url ($storePath)...\n";
202188
203189 if ($dryRun) {
204190 $mirrored++;
maintainers/scripts/db-to-md.shdeleted−88
@@ -1,88 +0,0 @@
1−#! /usr/bin/env nix-shell
2−#! nix-shell -I nixpkgs=. -i bash -p pandoc
3−
4−# This script is temporarily needed while we transition the manual to
5−# CommonMark. It converts DocBook files into our CommonMark flavour.
6−
7−debug=
8−files=()
9−
10−while [ "$#" -gt 0 ]; do
11− i="$1"; shift 1
12− case "$i" in
13− --debug)
14− debug=1
15− ;;
16− *)
17− files+=("$i")
18− ;;
19− esac
20−done
21−
22−echo "WARNING: This is an experimental script and might not preserve all formatting." > /dev/stderr
23−echo "Please report any issues you discover." > /dev/stderr
24−
25−outExtension="md"
26−if [[ $debug ]]; then
27− outExtension="json"
28−fi
29−
30−DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
31−
32−# NOTE: Keep in sync with Nixpkgs manual (/doc/Makefile).
33−# TODO: Remove raw-attribute when we can get rid of DocBook altogether.
34−pandoc_commonmark_enabled_extensions=+attributes+fenced_divs+footnotes+bracketed_spans+definition_lists+pipe_tables+raw_attribute
35−targetLang="commonmark${pandoc_commonmark_enabled_extensions}+smart"
36−if [[ $debug ]]; then
37− targetLang=json
38−fi
39−pandoc_flags=(
40− # Not needed:
41− # - diagram-generator.lua (we do not support that in NixOS manual to limit dependencies)
42− # - media extraction (was only required for diagram generator)
43− # - myst-reader/roles.lua (only relevant for MyST → DocBook)
44− # - link-unix-man-references.lua (links should only be added to display output)
45− # - docbook-writer/rst-roles.lua (only relevant for → DocBook)
46− # - docbook-writer/labelless-link-is-xref.lua (only relevant for → DocBook)
47− "--lua-filter=$DIR/../../doc/build-aux/pandoc-filters/docbook-reader/citerefentry-to-rst-role.lua"
48− "--lua-filter=$DIR/../../doc/build-aux/pandoc-filters/myst-writer/roles.lua"
49− "--lua-filter=$DIR/doc/unknown-code-language.lua"
50− -f docbook
51− -t "$targetLang"
52− --tab-stop=2
53− --wrap=none
54−)
55−
56−for file in "${files[@]}"; do
57− if [[ ! -f "$file" ]]; then
58− echo "db-to-md.sh: $file does not exist" > /dev/stderr
59− exit 1
60− else
61− rootElement=$(xmllint --xpath 'name(//*)' "$file")
62−
63− if [[ $rootElement = chapter ]]; then
64− extension=".chapter.$outExtension"
65− elif [[ $rootElement = section ]]; then
66− extension=".section.$outExtension"
67− else
68− echo "db-to-md.sh: $file contains an unsupported root element $rootElement" > /dev/stderr
69− exit 1
70− fi
71−
72− outFile="${file%".section.xml"}"
73− outFile="${outFile%".chapter.xml"}"
74− outFile="${outFile%".xml"}$extension"
75− temp1=$(mktemp)
76− $DIR/doc/escape-code-markup.py "$file" "$temp1"
77− if [[ $debug ]]; then
78− echo "Converted $file to $temp1" > /dev/stderr
79− fi
80− temp2=$(mktemp)
81− $DIR/doc/replace-xrefs-by-empty-links.py "$temp1" "$temp2"
82− if [[ $debug ]]; then
83− echo "Converted $temp1 to $temp2" > /dev/stderr
84− fi
85− pandoc "$temp2" -o "$outFile" "${pandoc_flags[@]}"
86− echo "Converted $file to $outFile" > /dev/stderr
87− fi
88−done
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/doc/escape-code-markup.pydeleted−97
@@ -1,97 +0,0 @@
1−#! /usr/bin/env nix-shell
2−#! nix-shell -I nixpkgs=channel:nixos-unstable -i python3 -p python3 -p python3.pkgs.lxml
3−
4−"""
5−Pandoc will strip any markup within code elements so
6−let’s escape them so that they can be handled manually.
7−"""
8−
9−import lxml.etree as ET
10−import re
11−import sys
12−
13−def replace_element_by_text(el: ET.Element, text: str) -> None:
14− """
15− Author: bernulf
16− Source: https://stackoverflow.com/a/10520552/160386
17− SPDX-License-Identifier: CC-BY-SA-3.0
18− """
19− text = text + (el.tail or "")
20− parent = el.getparent()
21− if parent is not None:
22− previous = el.getprevious()
23− if previous is not None:
24− previous.tail = (previous.tail or "") + text
25− else:
26− parent.text = (parent.text or "") + text
27− parent.remove(el)
28−
29−DOCBOOK_NS = "http://docbook.org/ns/docbook"
30−
31−# List of elements that pandoc’s DocBook reader strips markup from.
32−# https://github.com/jgm/pandoc/blob/master/src/Text/Pandoc/Readers/DocBook.hs
33−code_elements = [
34− # CodeBlock
35− "literallayout",
36− "screen",
37− "programlisting",
38− # Code (inline)
39− "classname",
40− "code",
41− "filename",
42− "envar",
43− "literal",
44− "computeroutput",
45− "prompt",
46− "parameter",
47− "option",
48− "markup",
49− "wordasword",
50− "command",
51− "varname",
52− "function",
53− "type",
54− "symbol",
55− "constant",
56− "userinput",
57− "systemitem",
58−]
59−
60−XMLNS_REGEX = re.compile(r'\s+xmlns(?::[^=]+)?="[^"]*"')
61−ROOT_ELEMENT_REGEX = re.compile(r'^\s*<[^>]+>')
62−
63−def remove_xmlns(match: re.Match) -> str:
64− """
65− Removes xmlns attributes.
66−
67− Expects a match containing an opening tag.
68− """
69− return XMLNS_REGEX.sub('', match.group(0))
70−
71−if __name__ == '__main__':
72− assert len(sys.argv) >= 3, "usage: escape-code-markup.py <input> <output>"
73−
74− tree = ET.parse(sys.argv[1])
75− name_predicate = " or ".join([f"local-name()='{el}'" for el in code_elements])
76−
77− for markup in tree.xpath(f"//*[({name_predicate}) and namespace-uri()='{DOCBOOK_NS}']/*"):
78− text = ET.tostring(markup, encoding=str)
79−
80− # tostring adds xmlns attributes to the element we want to stringify
81− # as if it was supposed to be usable standalone.
82− # We are just converting it to CDATA so we do not care.
83− # Let’s strip the namespace declarations to keep the code clean.
84− #
85− # Note that this removes even namespaces that were potentially
86− # in the original file. Though, that should be very rare –
87− # most of the time, we will stringify empty DocBook elements
88− # like <xref> or <co> or, at worst, <link> with xlink:href attribute.
89− #
90− # Also note that the regex expects the root element to be first
91− # thing in the string. But that should be fine, the tostring method
92− # does not produce XML declaration or doctype by default.
93− text = ROOT_ELEMENT_REGEX.sub(remove_xmlns, text)
94−
95− replace_element_by_text(markup, text)
96−
97− tree.write(sys.argv[2])
maintainers/scripts/doc/replace-xrefs-by-empty-links.pydeleted−32
@@ -1,32 +0,0 @@
1−#! /usr/bin/env nix-shell
2−#! nix-shell -I nixpkgs=channel:nixos-unstable -i python3 -p python3 -p python3.pkgs.lxml
3−
4−"""
5−Pandoc will try to resolve xrefs and replace them with regular links.
6−let’s replace them with links with empty labels which MyST
7−and our pandoc filters recognize as cross-references.
8−"""
9−
10−import lxml.etree as ET
11−import sys
12−
13−XLINK_NS = "http://www.w3.org/1999/xlink"
14−
15−ns = {
16− "db": "http://docbook.org/ns/docbook",
17−}
18−
19−
20−if __name__ == '__main__':
21− assert len(sys.argv) >= 3, "usage: replace-xrefs-by-empty-links.py <input> <output>"
22−
23− tree = ET.parse(sys.argv[1])
24− for xref in tree.findall(".//db:xref", ns):
25− text = ET.tostring(xref, encoding=str)
26− parent = xref.getparent()
27− link = parent.makeelement('link')
28− target_name = xref.get("linkend")
29− link.set(f"{{{XLINK_NS}}}href", f"#{target_name}")
30− parent.replace(xref, link)
31−
32− tree.write(sys.argv[2])
maintainers/scripts/doc/unknown-code-language.luadeleted−12
@@ -1,12 +0,0 @@
1−--[[
2−Adds “unknown” class to CodeBlock AST nodes without any classes.
3−
4−This will cause Pandoc to use fenced code block, which we prefer.
5−]]
6−
7−function CodeBlock(elem)
8− if #elem.classes == 0 then
9− elem.classes:insert('unknown')
10− return elem
11− end
12−end
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/find-tarballs.nix+1−1
@@ -37,7 +37,7 @@ let
3737 keyDrv = drv: if canEval drv.drvPath then { key = drv.drvPath; value = drv; } else { };
3838
3939 immediateDependenciesOf = drv:
40− concatLists (mapAttrsToList (n: v: derivationsIn v) (removeAttrs drv (["meta" "passthru"] ++ optionals (drv?passthru) (attrNames drv.passthru))));
40+ concatLists (mapAttrsToList (n: v: derivationsIn v) (removeAttrs drv ["meta" "passthru"]));
4141
4242 derivationsIn = x:
4343 if !canEval x then []
maintainers/scripts/haskell/dependencies.nixdeleted−10
@@ -1,10 +0,0 @@
1−# Nix script to calculate the Haskell dependencies of every haskellPackage. Used by ./hydra-report.hs.
2−let
3− pkgs = import ../../.. {};
4− inherit (pkgs) lib;
5− getDeps = _: pkg: {
6− deps = builtins.filter (x: !isNull x) (map (x: x.pname or null) (pkg.propagatedBuildInputs or []));
7− broken = (pkg.meta.hydraPlatforms or [null]) == [];
8− };
9−in
10− lib.mapAttrs getDeps pkgs.haskellPackages
maintainers/scripts/haskell/hydra-report.hs+33−115
@@ -26,8 +26,6 @@ Because step 1) is quite expensive and takes roughly ~5 minutes the result is ca
2626{-# LANGUAGE ScopedTypeVariables #-}
2727{-# LANGUAGE TupleSections #-}
2828{-# OPTIONS_GHC -Wall #-}
29−{-# LANGUAGE ViewPatterns #-}
30−{-# LANGUAGE TupleSections #-}
3129
3230import Control.Monad (forM_, (<=<))
3331import Control.Monad.Trans (MonadIO (liftIO))
@@ -43,7 +41,7 @@ import Data.List.NonEmpty (NonEmpty, nonEmpty)
4341import qualified Data.List.NonEmpty as NonEmpty
4442import Data.Map.Strict (Map)
4543import qualified Data.Map.Strict as Map
46−import Data.Maybe (fromMaybe, mapMaybe, isNothing)
44+import Data.Maybe (fromMaybe, mapMaybe)
4745import Data.Monoid (Sum (Sum, getSum))
4846import Data.Sequence (Seq)
4947import qualified Data.Sequence as Seq
@@ -72,12 +70,6 @@ import System.Directory (XdgDirectory (XdgCache), getXdgDirectory)
7270import System.Environment (getArgs)
7371import System.Process (readProcess)
7472import Prelude hiding (id)
75−import Data.List (sortOn)
76−import Control.Concurrent.Async (concurrently)
77−import Control.Exception (evaluate)
78−import qualified Data.IntMap.Strict as IntMap
79−import qualified Data.IntSet as IntSet
80−import Data.Bifunctor (second)
8173
8274newtype JobsetEvals = JobsetEvals
8375 { evals :: Seq Eval
@@ -142,17 +134,20 @@ hydraEvalCommand = "hydra-eval-jobs"
142134hydraEvalParams :: [String]
143135hydraEvalParams = ["-I", ".", "pkgs/top-level/release-haskell.nix"]
144136
145−nixExprCommand :: FilePath
146−nixExprCommand = "nix-instantiate"
137+handlesCommand :: FilePath
138+handlesCommand = "nix-instantiate"
139+
140+handlesParams :: [String]
141+handlesParams = ["--eval", "--strict", "--json", "-"]
147142
148−nixExprParams :: [String]
149−nixExprParams = ["--eval", "--strict", "--json"]
143+handlesExpression :: String
144+handlesExpression = "with import ./. {}; with lib; zipAttrsWith (_: builtins.head) (mapAttrsToList (_: v: if v ? github then { \"${v.email}\" = v.github; } else {}) (import maintainers/maintainer-list.nix))"
150145
151146-- | This newtype is used to parse a Hydra job output from @hydra-eval-jobs@.
152147-- The only field we are interested in is @maintainers@, which is why this
153148-- is just a newtype.
154149--
155−-- Note that there are occasionally jobs that don't have a maintainers
150+-- Note that there are occassionally jobs that don't have a maintainers
156151-- field, which is why this has to be @Maybe Text@.
157152newtype Maintainers = Maintainers { maintainers :: Maybe Text }
158153 deriving stock (Generic, Show)
@@ -200,49 +195,13 @@ type EmailToGitHubHandles = Map Text Text
200195-- @@
201196type MaintainerMap = Map Text (NonEmpty Text)
202197
203−-- | Information about a package which lists its dependencies and whether the
204−-- package is marked broken.
205−data DepInfo = DepInfo {
206− deps :: Set Text,
207− broken :: Bool
208−}
209− deriving stock (Generic, Show)
210− deriving anyclass (FromJSON, ToJSON)
211−
212−-- | Map from package names to their DepInfo. This is the data we get out of a
213−-- nix call.
214−type DependencyMap = Map Text DepInfo
215−
216−-- | Map from package names to its broken state, number of reverse dependencies (fst) and
217−-- unbroken reverse dependencies (snd).
218−type ReverseDependencyMap = Map Text (Int, Int)
219−
220−-- | Calculate the (unbroken) reverse dependencies of a package by transitively
221−-- going through all packages if it’s a dependency of them.
222−calculateReverseDependencies :: DependencyMap -> ReverseDependencyMap
223−calculateReverseDependencies depMap = Map.fromDistinctAscList $ zip keys (zip (rdepMap False) (rdepMap True))
224− where
225− -- This code tries to efficiently invert the dependency map and calculate
226− -- it’s transitive closure by internally identifying every pkg with it’s index
227− -- in the package list and then using memoization.
228− keys = Map.keys depMap
229− pkgToIndexMap = Map.fromDistinctAscList (zip keys [0..])
230− intDeps = zip [0..] $ (\DepInfo{broken,deps} -> (broken,mapMaybe (`Map.lookup` pkgToIndexMap) $ Set.toList deps)) <$> Map.elems depMap
231− rdepMap onlyUnbroken = IntSet.size <$> resultList
232− where
233− resultList = go <$> [0..]
234− oneStepMap = IntMap.fromListWith IntSet.union $ (\(key,(_,deps)) -> (,IntSet.singleton key) <$> deps) <=< filter (\(_, (broken,_)) -> not (broken && onlyUnbroken)) $ intDeps
235− go pkg = IntSet.unions (oneStep:((resultList !!) <$> IntSet.toList oneStep))
236− where oneStep = IntMap.findWithDefault mempty pkg oneStepMap
237−
238−-- | Generate a mapping of Hydra job names to maintainer GitHub handles. Calls
239−-- hydra-eval-jobs and the nix script ./maintainer-handles.nix.
198+-- | Generate a mapping of Hydra job names to maintainer GitHub handles.
240199getMaintainerMap :: IO MaintainerMap
241200getMaintainerMap = do
242201 hydraJobs :: HydraJobs <-
243− readJSONProcess hydraEvalCommand hydraEvalParams "Failed to decode hydra-eval-jobs output: "
202+ readJSONProcess hydraEvalCommand hydraEvalParams "" "Failed to decode hydra-eval-jobs output: "
244203 handlesMap :: EmailToGitHubHandles <-
245− readJSONProcess nixExprCommand ("maintainers/scripts/haskell/maintainer-handles.nix":nixExprParams) "Failed to decode nix output for lookup of github handles: "
204+ readJSONProcess handlesCommand handlesParams handlesExpression "Failed to decode nix output for lookup of github handles: "
246205 pure $ Map.mapMaybe (splitMaintainersToGitHubHandles handlesMap) hydraJobs
247206 where
248207 -- Split a comma-spearated string of Maintainers into a NonEmpty list of
@@ -252,12 +211,6 @@ getMaintainerMap = do
252211 splitMaintainersToGitHubHandles handlesMap (Maintainers maint) =
253212 nonEmpty . mapMaybe (`Map.lookup` handlesMap) . Text.splitOn ", " $ fromMaybe "" maint
254213
255−-- | Get the a map of all dependencies of every package by calling the nix
256−-- script ./dependencies.nix.
257−getDependencyMap :: IO DependencyMap
258−getDependencyMap =
259− readJSONProcess nixExprCommand ("maintainers/scripts/haskell/dependencies.nix":nixExprParams) "Failed to decode nix output for lookup of dependencies: "
260−
261214-- | Run a process that produces JSON on stdout and and decode the JSON to a
262215-- data type.
263216--
@@ -266,10 +219,11 @@ readJSONProcess
266219 :: FromJSON a
267220 => FilePath -- ^ Filename of executable.
268221 -> [String] -- ^ Arguments
222+ -> String -- ^ stdin to pass to the process
269223 -> String -- ^ String to prefix to JSON-decode error.
270224 -> IO a
271−readJSONProcess exe args err = do
272− output <- readProcess exe args ""
225+readJSONProcess exe args input err = do
226+ output <- readProcess exe args input
273227 let eitherDecodedOutput = eitherDecodeStrict' . encodeUtf8 . Text.pack $ output
274228 case eitherDecodedOutput of
275229 Left decodeErr -> error $ err <> decodeErr <> "\nRaw: '" <> take 1000 output <> "'"
@@ -310,13 +264,7 @@ platformIcon (Platform x) = case x of
310264data BuildResult = BuildResult {state :: BuildState, id :: Int} deriving (Show, Eq, Ord)
311265newtype Platform = Platform {platform :: Text} deriving (Show, Eq, Ord)
312266newtype Table row col a = Table (Map (row, col) a)
313−data SummaryEntry = SummaryEntry {
314− summaryBuilds :: Table Text Platform BuildResult,
315− summaryMaintainers :: Set Text,
316− summaryReverseDeps :: Int,
317− summaryUnbrokenReverseDeps :: Int
318−}
319−type StatusSummary = Map Text SummaryEntry
267+type StatusSummary = Map Text (Table Text Platform BuildResult, Set Text)
320268
321269instance (Ord row, Ord col, Semigroup a) => Semigroup (Table row col a) where
322270 Table l <> Table r = Table (Map.unionWith (<>) l r)
@@ -327,11 +275,11 @@ instance Functor (Table row col) where
327275instance Foldable (Table row col) where
328276 foldMap f (Table a) = foldMap f a
329277
330−buildSummary :: MaintainerMap -> ReverseDependencyMap -> Seq Build -> StatusSummary
331−buildSummary maintainerMap reverseDependencyMap = foldl (Map.unionWith unionSummary) Map.empty . fmap toSummary
278+buildSummary :: MaintainerMap -> Seq Build -> StatusSummary
279+buildSummary maintainerMap = foldl (Map.unionWith unionSummary) Map.empty . fmap toSummary
332280 where
333− unionSummary (SummaryEntry (Table lb) lm lr lu) (SummaryEntry (Table rb) rm rr ru) = SummaryEntry (Table $ Map.union lb rb) (lm <> rm) (max lr rr) (max lu ru)
334− toSummary Build{finished, buildstatus, job, id, system} = Map.singleton name (SummaryEntry (Table (Map.singleton (set, Platform system) (BuildResult state id))) maintainers reverseDeps unbrokenReverseDeps)
281+ unionSummary (Table l, l') (Table r, r') = (Table $ Map.union l r, l' <> r')
282+ toSummary Build{finished, buildstatus, job, id, system} = Map.singleton name (Table (Map.singleton (set, Platform system) (BuildResult state id)), maintainers)
335283 where
336284 state :: BuildState
337285 state = case (finished, buildstatus) of
@@ -349,7 +297,6 @@ buildSummary maintainerMap reverseDependencyMap = foldl (Map.unionWith unionSumm
349297 name = maybe packageName NonEmpty.last splitted
350298 set = maybe "" (Text.intercalate "." . NonEmpty.init) splitted
351299 maintainers = maybe mempty (Set.fromList . toList) (Map.lookup job maintainerMap)
352− (reverseDeps, unbrokenReverseDeps) = Map.findWithDefault (0,0) name reverseDependencyMap
353300
354301readBuildReports :: IO (Eval, UTCTime, Seq Build)
355302readBuildReports = do
@@ -392,29 +339,25 @@ makeSearchLink evalId linkLabel query = "[" <> linkLabel <> "](" <> "https://hyd
392339statusToNumSummary :: StatusSummary -> NumSummary
393340statusToNumSummary = fmap getSum . foldMap (fmap Sum . jobTotals)
394341
395−jobTotals :: SummaryEntry -> Table Platform BuildState Int
396−jobTotals (summaryBuilds -> Table mapping) = getSum <$> Table (Map.foldMapWithKey (\(_, platform) (BuildResult buildstate _) -> Map.singleton (platform, buildstate) (Sum 1)) mapping)
342+jobTotals :: (Table Text Platform BuildResult, a) -> Table Platform BuildState Int
343+jobTotals (Table mapping, _) = getSum <$> Table (Map.foldMapWithKey (\(_, platform) (BuildResult buildstate _) -> Map.singleton (platform, buildstate) (Sum 1)) mapping)
397344
398345details :: Text -> [Text] -> [Text]
399346details summary content = ["<details><summary>" <> summary <> " </summary>", ""] <> content <> ["</details>", ""]
400347
401−printBuildSummary :: Eval -> UTCTime -> StatusSummary -> [(Text, Int)] -> Text
348+printBuildSummary :: Eval -> UTCTime -> StatusSummary -> Text
402349printBuildSummary
403350 Eval{id, jobsetevalinputs = JobsetEvalInputs{nixpkgs = Nixpkgs{revision}}}
404351 fetchTime
405− summary
406− topBrokenRdeps =
352+ summary =
407353 Text.unlines $
408− headline <> [""] <> tldr <> ((" * "<>) <$> (errors <> warnings)) <> [""]
409− <> totals
354+ headline <> totals
410355 <> optionalList "#### Maintained packages with build failure" (maintainedList fails)
411356 <> optionalList "#### Maintained packages with failed dependency" (maintainedList failedDeps)
412357 <> optionalList "#### Maintained packages with unknown error" (maintainedList unknownErr)
413358 <> optionalHideableList "#### Unmaintained packages with build failure" (unmaintainedList fails)
414359 <> optionalHideableList "#### Unmaintained packages with failed dependency" (unmaintainedList failedDeps)
415360 <> optionalHideableList "#### Unmaintained packages with unknown error" (unmaintainedList unknownErr)
416− <> optionalHideableList "#### Top 50 broken packages, sorted by number of reverse dependencies" (brokenLine <$> topBrokenRdeps)
417− <> ["","*:arrow_heading_up:: The number of packages that depend (directly or indirectly) on this package (if any). If two numbers are shown the first (lower) number considers only packages which currently have enabled hydra jobs, i.e. are not marked broken. The second (higher) number considers all packages.*",""]
418361 <> footer
419362 where
420363 footer = ["*Report generated with [maintainers/scripts/haskell/hydra-report.hs](https://github.com/NixOS/nixpkgs/blob/haskell-updates/maintainers/scripts/haskell/hydra-report.sh)*"]
@@ -422,7 +365,7 @@ printBuildSummary
422365 [ "#### Build summary"
423366 , ""
424367 ]
425− <> printTable "Platform" (\x -> makeSearchLink id (platform x <> " " <> platformIcon x) ("." <> platform x)) (\x -> showT x <> " " <> icon x) showT numSummary
368+ <> printTable "Platform" (\x -> makeSearchLink id (platform x <> " " <> platformIcon x) ("." <> platform x)) (\x -> showT x <> " " <> icon x) showT (statusToNumSummary summary)
426369 headline =
427370 [ "### [haskell-updates build report from hydra](https://hydra.nixos.org/jobset/nixpkgs/haskell-updates)"
428371 , "*evaluation ["
@@ -437,49 +380,24 @@ printBuildSummary
437380 <> Text.pack (formatTime defaultTimeLocale "%Y-%m-%d %H:%M UTC" fetchTime)
438381 <> "*"
439382 ]
440− brokenLine (name, rdeps) = "[" <> name <> "](https://packdeps.haskellers.com/reverse/" <> name <> ") :arrow_heading_up: " <> Text.pack (show rdeps) <> " "
441− numSummary = statusToNumSummary summary
442− jobsByState predicate = Map.filter (predicate . worstState) summary
443− worstState = foldl' min Success . fmap state . summaryBuilds
383+ jobsByState predicate = Map.filter (predicate . foldl' min Success . fmap state . fst) summary
444384 fails = jobsByState (== Failed)
445385 failedDeps = jobsByState (== DependencyFailed)
446386 unknownErr = jobsByState (\x -> x > DependencyFailed && x < TimedOut)
447− withMaintainer = Map.mapMaybe (\e -> (summaryBuilds e,) <$> nonEmpty (Set.toList (summaryMaintainers e)))
448− withoutMaintainer = Map.mapMaybe (\e -> if Set.null (summaryMaintainers e) then Just e else Nothing)
387+ withMaintainer = Map.mapMaybe (\(x, m) -> (x,) <$> nonEmpty (Set.toList m))
388+ withoutMaintainer = Map.mapMaybe (\(x, m) -> if Set.null m then Just x else Nothing)
449389 optionalList heading list = if null list then mempty else [heading] <> list
450390 optionalHideableList heading list = if null list then mempty else [heading] <> details (showT (length list) <> " job(s)") list
451391 maintainedList = showMaintainedBuild <=< Map.toList . withMaintainer
452− unmaintainedList = showBuild <=< sortOn (\(snd -> x) -> (negate (summaryUnbrokenReverseDeps x), negate (summaryReverseDeps x))) . Map.toList . withoutMaintainer
453− showBuild (name, entry) = printJob id name (summaryBuilds entry, Text.pack (if summaryReverseDeps entry > 0 then " :arrow_heading_up: " <> show (summaryUnbrokenReverseDeps entry) <>" | "<> show (summaryReverseDeps entry) else ""))
392+ unmaintainedList = showBuild <=< Map.toList . withoutMaintainer
393+ showBuild (name, table) = printJob id name (table, "")
454394 showMaintainedBuild (name, (table, maintainers)) = printJob id name (table, Text.intercalate " " (fmap ("@" <>) (toList maintainers)))
455− tldr = case (errors, warnings) of
456− ([],[]) -> [":green_circle: **Ready to merge**"]
457− ([],_) -> [":yellow_circle: **Potential issues**"]
458− _ -> [":red_circle: **Branch not mergeable**"]
459− warnings =
460− if' (Unfinished > maybe Success worstState maintainedJob) "`maintained` jobset failed." <>
461− if' (Unfinished == maybe Success worstState mergeableJob) "`mergeable` jobset is not finished." <>
462− if' (Unfinished == maybe Success worstState maintainedJob) "`maintained` jobset is not finished."
463− errors =
464− if' (isNothing mergeableJob) "No `mergeable` job found." <>
465− if' (isNothing maintainedJob) "No `maintained` job found." <>
466− if' (Unfinished > maybe Success worstState mergeableJob) "`mergeable` jobset failed." <>
467− if' (outstandingJobs (Platform "x86_64-linux") > 100) "Too many outstanding jobs on x86_64-linux." <>
468− if' (outstandingJobs (Platform "aarch64-linux") > 100) "Too many outstanding jobs on aarch64-linux."
469− if' p e = if p then [e] else mempty
470− outstandingJobs platform | Table m <- numSummary = Map.findWithDefault 0 (platform, Unfinished) m
471− maintainedJob = Map.lookup "maintained" summary
472− mergeableJob = Map.lookup "mergeable" summary
473395
474396printMaintainerPing :: IO ()
475397printMaintainerPing = do
476− (maintainerMap, (reverseDependencyMap, topBrokenRdeps)) <- concurrently getMaintainerMap do
477− depMap <- getDependencyMap
478− rdepMap <- evaluate . calculateReverseDependencies $ depMap
479− let tops = take 50 . sortOn (negate . snd) . fmap (second fst) . filter (\x -> maybe False broken $ Map.lookup (fst x) depMap) . Map.toList $ rdepMap
480− pure (rdepMap, tops)
398+ maintainerMap <- getMaintainerMap
481399 (eval, fetchTime, buildReport) <- readBuildReports
482− putStrLn (Text.unpack (printBuildSummary eval fetchTime (buildSummary maintainerMap reverseDependencyMap buildReport) topBrokenRdeps))
400+ putStrLn (Text.unpack (printBuildSummary eval fetchTime (buildSummary maintainerMap buildReport)))
483401
484402printMarkBrokenList :: IO ()
485403printMarkBrokenList = do
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/maintainer-handles.nixdeleted−7
@@ -1,7 +0,0 @@
1−# Nix script to lookup maintainer github handles from their email address. Used by ./hydra-report.hs.
2−let
3− pkgs = import ../../.. {};
4− maintainers = import ../../maintainer-list.nix;
5− inherit (pkgs) lib;
6− mkMailGithubPair = _: maintainer: if maintainer ? github then { "${maintainer.email}" = maintainer.github; } else {};
7−in lib.zipAttrsWith (_: builtins.head) (lib.mapAttrsToList mkMailGithubPair maintainers)
maintainers/scripts/haskell/mark-broken.sh+3−4
@@ -30,10 +30,9 @@ EOF
3030
3131# clear environment here to avoid things like allowing broken builds in
3232sort -iu "$tmpfile" >> "$broken_config"
33−clear="env -u HOME -u NIXPKGS_CONFIG"
34−$clear maintainers/scripts/haskell/regenerate-hackage-packages.sh
35−$clear maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh
36−$clear maintainers/scripts/haskell/regenerate-hackage-packages.sh
33+env -i maintainers/scripts/haskell/regenerate-hackage-packages.sh
34+env -i maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh
35+env -i maintainers/scripts/haskell/regenerate-hackage-packages.sh
3736
3837if [[ "${1:-}" == "--do-commit" ]]; then
3938git add $broken_config
maintainers/scripts/haskell/merge-and-open-pr.shdeleted−122
@@ -1,122 +0,0 @@
1−#! /usr/bin/env nix-shell
2−#! nix-shell -i bash -p git gh -I nixpkgs=.
3−#
4−# Script to merge the currently open haskell-updates PR into master, bump the
5−# Stackage version and Hackage versions, and open the next haskell-updates PR.
6−
7−set -eu -o pipefail
8−
9−# exit after printing first argument to this function
10−function die {
11− # echo the first argument
12− echo "ERROR: $1"
13− echo "Aborting!"
14−
15− exit 1
16−}
17−
18−function help {
19− echo "Usage: $0 HASKELL_UPDATES_PR_NUM"
20− echo "Merge the currently open haskell-updates PR into master, and open the next one."
21− echo
22− echo " -h, --help print this help"
23− echo " HASKELL_UPDATES_PR_NUM number of the currently open PR on NixOS/nixpkgs"
24− echo " for the haskell-updates branch"
25− echo
26− echo "Example:"
27− echo " \$ $0 137340"
28−
29− exit 1
30−}
31−
32−# Read in the current haskell-updates PR number from the command line.
33−while [[ $# -gt 0 ]]; do
34− key="$1"
35−
36− case $key in
37− -h|--help)
38− help
39− ;;
40− *)
41− curr_haskell_updates_pr_num="$1"
42− shift
43− ;;
44− esac
45−done
46−
47−if [[ -z "${curr_haskell_updates_pr_num-}" ]] ; then
48− die "You must pass the current haskell-updates PR number as the first argument to this script."
49−fi
50−
51−# Make sure you have gh authentication setup.
52−if ! gh auth status 2>/dev/null ; then
53− die "You must setup the \`gh\` command. Run \`gh auth login\`."
54−fi
55−
56−# Fetch nixpkgs to get an up-to-date origin/haskell-updates branch.
57−echo "Fetching origin..."
58−git fetch origin >/dev/null
59−
60−# Make sure we are currently on a local haskell-updates branch.
61−curr_branch="$(git rev-parse --abbrev-ref HEAD)"
62−if [[ "$curr_branch" != "haskell-updates" ]]; then
63− die "Current branch is not called \"haskell-updates\"."
64−fi
65−
66−# Make sure our local haskell-updates branch is on the same commit as
67−# origin/haskell-updates.
68−curr_branch_commit="$(git rev-parse haskell-updates)"
69−origin_haskell_updates_commit="$(git rev-parse origin/haskell-updates)"
70−if [[ "$curr_branch_commit" != "$origin_haskell_updates_commit" ]]; then
71− die "Current branch is not at the same commit as origin/haskell-updates"
72−fi
73−
74−# Merge the current open haskell-updates PR.
75−echo "Merging https://github.com/NixOS/nixpkgs/pull/${curr_haskell_updates_pr_num}..."
76−gh pr merge --repo NixOS/nixpkgs --merge "$curr_haskell_updates_pr_num"
77−
78−# Update the list of Haskell package versions in NixOS on Hackage.
79−echo "Updating list of Haskell package versions in NixOS on Hackage..."
80−./maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh
81−
82−# Update stackage, Hackage hashes, and regenerate Haskell package set
83−echo "Updating Stackage..."
84−./maintainers/scripts/haskell/update-stackage.sh --do-commit
85−echo "Updating Hackage hashes..."
86−./maintainers/scripts/haskell/update-hackage.sh --do-commit
87−echo "Regenerating Hackage packages..."
88−./maintainers/scripts/haskell/regenerate-hackage-packages.sh --do-commit
89−
90−# Push these new commits to the haskell-updates branch
91−echo "Pushing commits just created to the remote haskell-updates branch..."
92−git push
93−
94−# Open new PR
95−new_pr_body=$(cat <<EOF
96−### This Merge
97−
98−This PR is the regular merge of the \`haskell-updates\` branch into \`master\`.
99−
100−This 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).
101−
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.
103−
104−### haskellPackages Workflow Summary
105−
106−Our workflow is currently described in [\`pkgs/development/haskell-modules/HACKING.md\`](https://github.com/NixOS/nixpkgs/blob/haskell-updates/pkgs/development/haskell-modules/HACKING.md).
107−
108−The short version is this:
109−* We regularly update the Stackage and Hackage pins on \`haskell-updates\` (normally at the beginning of a merge window).
110−* The community fixes builds of Haskell packages on that branch.
111−* We aim at at least one merge of \`haskell-updates\` into \`master\` every two weeks.
112−* We only do the merge if the [\`mergeable\`](https://hydra.nixos.org/job/nixpkgs/haskell-updates/mergeable) job is succeeding on hydra.
113−* If a [\`maintained\`](https://hydra.nixos.org/job/nixpkgs/haskell-updates/maintained) package is still broken at the time of merge, we will only merge if the maintainer has been pinged 7 days in advance. (If you care about a Haskell package, become a maintainer!)
114−
115−---
116−
117−This is the follow-up to #${curr_haskell_updates_pr_num}. Come to [#haskell:nixos.org](https://matrix.to/#/#haskell:nixos.org) if you have any questions.
118−EOF
119−)
120−
121−echo "Opening a PR for the next haskell-updates merge cycle..."
122−gh pr create --repo NixOS/nixpkgs --base master --head haskell-updates --title "haskellPackages: update stackage and hackage" --body "$new_pr_body"
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/regenerate-transitive-broken-packages.sh+1−1
@@ -12,4 +12,4 @@ dont-distribute-packages:
1212EOF
1313
1414echo "Regenerating list of transitive broken packages ..."
15−echo -e $(nix-instantiate --eval --strict maintainers/scripts/haskell/transitive-broken-packages.nix) | sed 's/\"//' | LC_ALL=C.UTF-8 sort -i >> $config_file
15+echo -e $(nix-instantiate --eval --strict maintainers/scripts/haskell/transitive-broken-packages.nix) | sed 's/\"//' | sort -i >> $config_file
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/haskell/upload-nixos-package-list-to-hackage.shdeleted−22
@@ -1,22 +0,0 @@
1−#! /usr/bin/env nix-shell
2−#! nix-shell -i bash -p nix curl gnused -I nixpkgs=.
3−
4−# On Hackage every package description shows a category "Distributions" which
5−# lists a "NixOS" version.
6−# This script uploads a csv to hackage which will update the displayed versions
7−# based on the current versions in nixpkgs. This happens with a simple http
8−# request.
9−
10−# For authorization you just need to have any valid hackage account. This
11−# script uses the `username` and `password-command` field from your
12−# ~/.cabal/config file.
13−
14−# e.g. username: maralorn
15−# password-command: pass hackage.haskell.org (this can be any command, but not an arbitrary shell expression. Like cabal we only read the first output line and ignore the rest.)
16−# Those fields are specified under `upload` on the `cabal` man page.
17−
18−package_list="$(nix-build -A haskell.package-list)/nixos-hackage-packages.csv"
19−username=$(grep "^username:" ~/.cabal/config | sed "s/^username: //")
20−password_command=$(grep "^password-command:" ~/.cabal/config | sed "s/^password-command: //")
21−curl -u "$username:$($password_command | head -n1)" --digest -H "Content-type: text/csv" -T "$package_list" http://hackage.haskell.org/distro/NixOS/packages.csv
22−echo
maintainers/scripts/luarocks-packages.csv+87−87
@@ -1,87 +1,87 @@
1−name,src,ref,server,version,luaversion,maintainers
2−alt-getopt,,,,,,arobyn
3−bit32,,,,5.3.0-1,lua5_1,lblasc
4−argparse,https://github.com/luarocks/argparse.git,,,,,
5−basexx,https://github.com/teto/basexx.git,,,,,
6−binaryheap,https://github.com/Tieske/binaryheap.lua,,,,,vcunat
7−busted,,,,,,
8−cassowary,,,,,,marsam alerque
9−compat53,,,,0.7-1,,vcunat
10−cosmo,,,,,,marsam
11−coxpcall,,,,1.17.0-1,,
12−cqueues,,,,,,vcunat
13−cyrussasl,https://github.com/JorjBauer/lua-cyrussasl.git,,,,,
14−digestif,https://github.com/astoff/digestif.git,,,0.2-1,lua5_3,
15−dkjson,,,,,,
16−fifo,,,,,,
17−gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,lua5_1,
18−http,,,,0.3-0,,vcunat
19−inspect,,,,,,
20−ldbus,,,http://luarocks.org/dev,,,
21−ldoc,https://github.com/stevedonovan/LDoc.git,,,,,
22−lgi,,,,,,
23−linenoise,https://github.com/hoelzro/lua-linenoise.git,,,,,
24−ljsyscall,,,,,lua5_1,lblasc
25−lpeg,,,,,,vyp
26−lpeg_patterns,,,,,,
27−lpeglabel,,,,,,
28−lpty,,,,,,
29−lrexlib-gnu,,,,,,
30−lrexlib-pcre,,,,,,vyp
31−lrexlib-posix,,,,,,
32−lua-cjson,,,,,,
33−lua-cmsgpack,,,,,,
34−lua-iconv,,,,,,
35−lua-lsp,,,,,,
36−lua-messagepack,,,,,,
37−lua-resty-http,,,,,,
38−lua-resty-jwt,,,,,,
39−lua-resty-openidc,,,,,,
40−lua-resty-openssl,,,,,,
41−lua-resty-session,,,,,,
42−lua-term,,,,,,
43−lua-toml,,,,,,
44−lua-zlib,,,,,,koral
45−lua_cliargs,https://github.com/amireh/lua_cliargs.git,,,,,
46−luabitop,https://github.com/teto/luabitop.git,,,,,
47−luacheck,,,,,,
48−luacov,,,,,,
49−luadbi,,,,,,
50−luadbi-mysql,,,,,,
51−luadbi-postgresql,,,,,,
52−luadbi-sqlite3,,,,,,
53−luaepnf,,,,,,
54−luaevent,,,,,,
55−luaexpat,,,,1.4.1-1,,arobyn flosse
56−luaffi,,,http://luarocks.org/dev,,,
57−luafilesystem,,,,1.7.0-2,,flosse
58−lualogging,,,,,,
59−luaossl,,,,,lua5_1,
60−luaposix,,,,34.1.1-1,,vyp lblasc
61−luarepl,,,,,,
62−luasec,,,,,,flosse
63−luasocket,,,,,,
64−luasql-sqlite3,,,,,,vyp
65−luassert,,,,,,
66−luasystem,,,,,,
67−luaunbound,,,,,
68−luautf8,,,,,,pstn
69−luazip,,,,,,
70−lua-yajl,,,,,,pstn
71−luuid,,,,,,
72−luv,,,,1.43.0-0,,
73−lyaml,,,,,,lblasc
74−markdown,,,,,,
75−mediator_lua,,,,,,
76−mpack,,,,,,
77−moonscript,https://github.com/leafo/moonscript.git,dev-1,,,,arobyn
78−nvim-client,https://github.com/neovim/lua-client.git,,,,,
79−penlight,https://github.com/lunarmodules/Penlight.git,,,,,alerque
80−plenary.nvim,https://github.com/nvim-lua/plenary.nvim.git,,,,lua5_1,
81−rapidjson,https://github.com/xpol/lua-rapidjson.git,,,,,
82−readline,,,,,,
83−say,https://github.com/Olivine-Labs/say.git,,,,,
84−std._debug,https://github.com/lua-stdlib/_debug.git,,,,,
85−std.normalize,https://github.com/lua-stdlib/normalize.git,,,,,
86−stdlib,,,,41.2.2,,vyp
87−vstruct,https://github.com/ToxicFrog/vstruct.git,,,,,
1+# nix name, luarocks name, server, version,luaversion,maintainers
2+alt-getopt,,,,,arobyn
3+ansicolors,,,,,
4+argparse,,,,,
5+basexx,,,,,
6+binaryheap,,,,,vcunat
7+bit32,,,,lua5_1,lblasc
8+busted,,,,,
9+cassowary,,,,,marsam alerque
10+cjson,lua-cjson,,,,
11+compat53,,,,,vcunat
12+cosmo,,,,,marsam
13+coxpcall,,,1.17.0-1,,
14+cqueues,,,,,vcunat
15+cyrussasl,,,,,
16+digestif,,,,lua5_3,
17+dkjson,,,,,
18+fifo,,,,,
19+http,,,,,vcunat
20+inspect,,,,,
21+ldbus,,http://luarocks.org/dev,,,
22+ldoc,,,,,
23+lgi,,,,,
24+linenoise,,,,,
25+ljsyscall,,,,lua5_1,lblasc
26+lpeg,,,,,vyp
27+lpeg_patterns,,,,,
28+lpeglabel,,,,,
29+lpty,,,,,
30+lrexlib-gnu,,,,,
31+lrexlib-pcre,,,,,vyp
32+lrexlib-posix,,,,,
33+ltermbox,,,,,
34+lua-cmsgpack,,,,,
35+lua-iconv,,,,,
36+lua-lsp,,http://luarocks.org/dev,,,
37+lua-messagepack,,,,,
38+lua-resty-http,,,,,
39+lua-resty-jwt,,,,,
40+lua-resty-openidc,,,,,
41+lua-resty-openssl,,,,,
42+lua-resty-session,,,,,
43+lua-term,,,,,
44+lua-toml,,,,,
45+lua-zlib,,,,,koral
46+lua_cliargs,,,,,
47+luabitop,,,,,
48+luacheck,,,,,
49+luacov,,,,,
50+luadbi,,,,,
51+luadbi-mysql,,,,,
52+luadbi-postgresql,,,,,
53+luadbi-sqlite3,,,,,
54+luadoc,,,,,
55+luaepnf,,,,,
56+luaevent,,,,,
57+luaexpat,,,1.3.0-1,,arobyn flosse
58+luaffi,,http://luarocks.org/dev,,,
59+luafilesystem,,,1.7.0-2,,flosse
60+lualogging,,,,,
61+luaossl,,,,lua5_1,
62+luaposix,,,,,vyp lblasc
63+luarepl,,,,,
64+luasec,,,,,flosse
65+luasocket,,,,,
66+luasql-sqlite3,,,,,vyp
67+luassert,,,,,
68+luasystem,,,,,
69+luautf8,,,,,pstn
70+luazip,,,,,
71+lua-yajl,,,,,pstn
72+luuid,,,,,
73+luv,,,,,
74+lyaml,,,,,lblasc
75+markdown,,,,,
76+mediator_lua,,,,,
77+mpack,,,,,
78+moonscript,,,,,arobyn
79+nvim-client,,,,,
80+penlight,,,,,
81+rapidjson,,,,,
82+readline,,,,,
83+say,,,,,
84+std__debug,std._debug,,,,
85+std_normalize,std.normalize,,,,
86+stdlib,,,,,vyp
87+vstruct,,,,,
maintainers/scripts/pluginupdate.py+212−358
@@ -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,6 @@ 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
3331
3432import git
3533
@@ -43,6 +41,8 @@ LOG_LEVELS = {
4341}
4442
4543log = logging.getLogger()
44+log.addHandler(logging.StreamHandler())
45+
4646
4747def retry(ExceptionToCheck: Any, tries: int = 4, delay: float = 3, backoff: float = 2):
4848 """Retry calling the decorated function using an exponential backoff.
@@ -74,103 +74,35 @@ def retry(ExceptionToCheck: Any, tries: int = 4, delay: float = 3, backoff: floa
7474
7575 return deco_retry
7676
77−@dataclass
78−class FetchConfig:
79− proc: int
80− github_token: str
81−
8277
83−def make_request(url: str, token=None) -> urllib.request.Request:
78+def make_request(url: str) -> urllib.request.Request:
79+ token = os.getenv("GITHUB_API_TOKEN")
8480 headers = {}
8581 if token is not None:
8682 headers["Authorization"] = f"token {token}"
8783 return urllib.request.Request(url, headers=headers)
8884
8985
90−# a dictionary of plugins and their new repositories
91−Redirects = Dict['PluginDesc', 'Repo']
92−
9386class Repo:
9487 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
88+ self, owner: str, name: str, branch: str, alias: Optional[str]
15489 ) -> None:
15590 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
91+ self.name = name
92+ self.branch = branch
93+ self.alias = alias
94+ self.redirect: Dict[str, str] = {}
16595
16696 def url(self, path: str) -> str:
167− res = urljoin(f"https://github.com/{self.owner}/{self.repo}/", path)
168− return res
97+ return urljoin(f"https://github.com/{self.owner}/{self.name}/", path)
98+
99+ def __repr__(self) -> str:
100+ return f"Repo({self.owner}, {self.name})"
169101
170102 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
171103 def has_submodules(self) -> bool:
172104 try:
173− req = make_request(self.url(f"blob/{self.branch}/.gitmodules"), self.token)
105+ req = make_request(self.url(f"blob/{self.branch}/.gitmodules"))
174106 urllib.request.urlopen(req, timeout=10).close()
175107 except urllib.error.HTTPError as e:
176108 if e.code == 404:
@@ -182,10 +114,9 @@ class RepoGitHub(Repo):
182114 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
183115 def latest_commit(self) -> Tuple[str, datetime]:
184116 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)
117+ commit_req = make_request(commit_url)
187118 with urllib.request.urlopen(commit_req, timeout=10) as req:
188− self._check_for_redirect(commit_url, req)
119+ self.check_for_redirect(commit_url, req)
189120 xml = req.read()
190121 root = ET.fromstring(xml)
191122 latest_entry = root.find(ATOM_ENTRY)
@@ -200,89 +131,46 @@ class RepoGitHub(Repo):
200131 updated = datetime.strptime(updated_tag.text, "%Y-%m-%dT%H:%M:%SZ")
201132 return Path(str(url.path)).name, updated
202133
203− def _check_for_redirect(self, url: str, req: http.client.HTTPResponse):
134+ def check_for_redirect(self, url: str, req: http.client.HTTPResponse):
204135 response_url = req.geturl()
205136 if url != response_url:
206137 new_owner, new_name = (
207138 urllib.parse.urlsplit(response_url).path.strip("/").split("/")[:2]
208139 )
140+ end_line = "\n" if self.alias is None else f" as {self.alias}\n"
141+ plugin_line = "{owner}/{name}" + end_line
209142
210− new_repo = RepoGitHub(owner=new_owner, repo=new_name, branch=self.branch)
211− self.redirect = new_repo
212−
143+ old_plugin = plugin_line.format(owner=self.owner, name=self.name)
144+ new_plugin = plugin_line.format(owner=new_owner, name=new_name)
145+ self.redirect[old_plugin] = new_plugin
213146
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
147+ def prefetch_git(self, ref: str) -> str:
148+ data = subprocess.check_output(
149+ ["nix-prefetch-git", "--fetch-submodules", self.url(""), ref]
150+ )
151+ return json.loads(data)["sha256"]
220152
221153 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)
154+ data = subprocess.check_output(
155+ ["nix-prefetch-url", "--unpack", self.url(f"archive/{ref}.tar.gz")]
156+ )
225157 return data.strip().decode("utf-8")
226158
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− }}'''
239159
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)
278−
279−@dataclass
280160class Plugin:
281− name: str
282− commit: str
283− has_submodules: bool
284− sha256: str
285− date: Optional[datetime] = None
161+ def __init__(
162+ self,
163+ name: str,
164+ commit: str,
165+ has_submodules: bool,
166+ sha256: str,
167+ date: Optional[datetime] = None,
168+ ) -> None:
169+ self.name = name
170+ self.commit = commit
171+ self.has_submodules = has_submodules
172+ self.sha256 = sha256
173+ self.date = date
286174
287175 @property
288176 def normalized_name(self) -> str:
@@ -299,28 +187,6 @@ class Plugin:
299187 return copy
300188
301189
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−
324190class Editor:
325191 """The configuration of the update script."""
326192
@@ -329,126 +195,21 @@ class Editor:
329195 name: str,
330196 root: Path,
331197 get_plugins: str,
198+ generate_nix: Callable[[List[Tuple[str, str, Plugin]], str], None],
332199 default_in: Optional[Path] = None,
333200 default_out: Optional[Path] = None,
334201 deprecated: Optional[Path] = None,
335202 cache_file: Optional[str] = None,
336203 ):
337− log.debug("get_plugins:", get_plugins)
338204 self.name = name
339205 self.root = root
340206 self.get_plugins = get_plugins
207+ self.generate_nix = generate_nix
341208 self.default_in = default_in or root.joinpath(f"{name}-plugin-names")
342209 self.default_out = default_out or root.joinpath("generated.nix")
343210 self.deprecated = deprecated or root.joinpath("deprecated.json")
344211 self.cache_file = cache_file or f"{name}-plugin-cache.json"
345212
346− def get_current_plugins(self) -> List[Plugin]:
347− """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)
359−
360− def generate_nix(self, plugins, outfile: str):
361− '''Returns nothing for now, writes directly to outfile'''
362− raise NotImplementedError()
363−
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−
385−
386− @property
387− def attr_path(self):
388− return self.name + "Plugins"
389−
390− def get_drv_name(self, name: str):
391− return self.attr_path + "." + name
392−
393− def rewrite_input(self, *args, **kwargs):
394− return rewrite_input(*args, **kwargs)
395−
396− def create_parser(self):
397− 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}"""
401− )
402− )
403− parser.add_argument(
404− "--add",
405− dest="add_plugins",
406− default=[],
407− action="append",
408− help=f"Plugin to add to {self.attr_path} from Github in the form owner/repo",
409− )
410− parser.add_argument(
411− "--input-names",
412− "-i",
413− dest="input_file",
414− default=self.default_in,
415− help="A list of plugins in the form owner/repo",
416− )
417− parser.add_argument(
418− "--out",
419− "-o",
420− dest="outfile",
421− default=self.default_out,
422− help="Filename to save generated nix code",
423− )
424− parser.add_argument(
425− "--proc",
426− "-p",
427− dest="proc",
428− type=int,
429− 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.""",
439− )
440− parser.add_argument(
441− "--no-commit", "-n", action="store_true", default=False,
442− help="Whether to autocommit changes"
443− )
444− parser.add_argument(
445− "--debug", "-d", choices=LOG_LEVELS.keys(),
446− default=logging.getLevelName(logging.WARN),
447− help="Adjust log level"
448− )
449− return parser
450−
451−
452213
453214class CleanEnvironment(object):
454215 def __enter__(self) -> None:
@@ -465,33 +226,52 @@ class CleanEnvironment(object):
465226 self.empty_config.close()
466227
467228
229+def get_current_plugins(editor: Editor) -> List[Plugin]:
230+ with CleanEnvironment():
231+ out = subprocess.check_output(["nix", "eval", "--json", editor.get_plugins])
232+ data = json.loads(out)
233+ plugins = []
234+ for name, attr in data.items():
235+ p = Plugin(name, attr["rev"], attr["submodules"], attr["sha256"])
236+ plugins.append(p)
237+ return plugins
238+
239+
468240def prefetch_plugin(
469− p: PluginDesc,
241+ user: str,
242+ repo_name: str,
243+ branch: str,
244+ alias: Optional[str],
470245 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}")
246+) -> Tuple[Plugin, Dict[str, str]]:
247+ log.info("Prefetching plugin %s", repo_name)
248+ repo = Repo(user, repo_name, branch, alias)
476249 commit, date = repo.latest_commit()
250+ has_submodules = repo.has_submodules()
477251 cached_plugin = cache[commit] if cache else None
478252 if cached_plugin is not None:
479− log.debug("Cache hit !")
480− cached_plugin.name = name
253+ cached_plugin.name = alias or repo_name
481254 cached_plugin.date = date
482255 return cached_plugin, repo.redirect
483256
484− has_submodules = repo.has_submodules()
485− log.debug(f"prefetch {name}")
486− sha256 = repo.prefetch(commit)
257+ print(f"prefetch {user}/{repo_name}")
258+ if has_submodules:
259+ sha256 = repo.prefetch_git(commit)
260+ else:
261+ sha256 = repo.prefetch_github(commit)
487262
488263 return (
489− Plugin(name, commit, has_submodules, sha256, date=date),
264+ Plugin(alias or repo_name, commit, has_submodules, sha256, date=date),
490265 repo.redirect,
491266 )
492267
493268
494−def print_download_error(plugin: PluginDesc, ex: Exception):
269+def fetch_plugin_from_pluginline(plugin_line: str) -> Plugin:
270+ plugin, _ = prefetch_plugin(*parse_plugin_line(plugin_line))
271+ return plugin
272+
273+
274+def print_download_error(plugin: str, ex: Exception):
495275 print(f"{plugin}: {ex}", file=sys.stderr)
496276 ex_traceback = ex.__traceback__
497277 tb_lines = [
@@ -500,22 +280,19 @@ def print_download_error(plugin: PluginDesc, ex: Exception):
500280 ]
501281 print("\n".join(tb_lines))
502282
283+
503284def 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]] = []
285+ results: List[Tuple[str, str, Union[Exception, Plugin], Dict[str, str]]]
286+) -> Tuple[List[Tuple[str, str, Plugin]], Dict[str, str]]:
287+ failures: List[Tuple[str, Exception]] = []
508288 plugins = []
509− redirects: Redirects = {}
510− for (pdesc, result, redirect) in results:
289+ redirects: Dict[str, str] = {}
290+ for (owner, name, result, redirect) in results:
511291 if isinstance(result, Exception):
512− failures.append((pdesc, result))
292+ failures.append((name, result))
513293 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))
294+ plugins.append((owner, name, result))
295+ redirects.update(redirect)
519296
520297 print(f"{len(results) - len(failures)} plugins were checked", end="")
521298 if len(failures) == 0:
@@ -529,16 +306,31 @@ def check_results(
529306
530307 sys.exit(1)
531308
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
309+
310+def parse_plugin_line(line: str) -> Tuple[str, str, str, Optional[str]]:
311+ branch = "master"
312+ alias = None
313+ name, repo = line.split("/")
314+ if " as " in repo:
315+ repo, alias = repo.split(" as ")
316+ alias = alias.strip()
317+ if "@" in repo:
318+ repo, branch = repo.split("@")
319+
320+ return (name.strip(), repo.strip(), branch.strip(), alias)
321+
322+
323+def load_plugin_spec(plugin_file: str) -> List[Tuple[str, str, str, Optional[str]]]:
324+ plugins = []
325+ with open(plugin_file) as f:
326+ for line in f:
327+ plugin = parse_plugin_line(line)
328+ if not plugin[0]:
329+ msg = f"Invalid repository {line}, must be in the format owner/repo[ as alias]"
330+ print(msg, file=sys.stderr)
331+ sys.exit(1)
332+ plugins.append(plugin)
333+ return plugins
542334
543335
544336def get_cache_path(cache_file_name: str) -> Optional[Path]:
@@ -595,38 +387,38 @@ class Cache:
595387
596388
597389def prefetch(
598− pluginDesc: PluginDesc, cache: Cache
599−) -> Tuple[PluginDesc, Union[Exception, Plugin], Optional[Repo]]:
390+ args: Tuple[str, str, str, Optional[str]], cache: Cache
391+) -> Tuple[str, str, Union[Exception, Plugin], dict]:
392+ assert len(args) == 4
393+ owner, repo, branch, alias = args
600394 try:
601− plugin, redirect = prefetch_plugin(pluginDesc, cache)
395+ plugin, redirect = prefetch_plugin(owner, repo, branch, alias, cache)
602396 cache[plugin.commit] = plugin
603− return (pluginDesc, plugin, redirect)
397+ return (owner, repo, plugin, redirect)
604398 except Exception as e:
605− return (pluginDesc, e, None)
606−
399+ return (owner, repo, e, {})
607400
608401
609402def rewrite_input(
610− config: FetchConfig,
611403 input_file: Path,
612404 deprecated: Path,
613− # old pluginDesc and the new
614− redirects: Redirects = {},
615− append: List[PluginDesc] = [],
405+ redirects: Dict[str, str] = None,
406+ append: Tuple = (),
616407):
617− plugins = load_plugins_from_csv(config, input_file,)
408+ with open(input_file, "r") as f:
409+ lines = f.readlines()
618410
619− plugins.extend(append)
411+ lines.extend(append)
620412
621413 if redirects:
414+ lines = [redirects.get(line, line) for line in lines]
622415
623416 cur_date_iso = datetime.now().strftime("%Y-%m-%d")
624417 with open(deprecated, "r") as f:
625418 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)
419+ for old, new in redirects.items():
420+ old_plugin = fetch_plugin_from_pluginline(old)
421+ new_plugin = fetch_plugin_from_pluginline(new)
630422 if old_plugin.normalized_name != new_plugin.normalized_name:
631423 deprecations[old_plugin.normalized_name] = {
632424 "new": new_plugin.normalized_name,
@@ -636,14 +428,58 @@ def rewrite_input(
636428 json.dump(deprecations, f, indent=4, sort_keys=True)
637429 f.write("\n")
638430
431+ lines = sorted(lines, key=str.casefold)
432+
639433 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))
434+ f.writelines(lines)
435+
436+
437+def parse_args(editor: Editor):
438+ parser = argparse.ArgumentParser(
439+ description=(
440+ f"Updates nix derivations for {editor.name} plugins"
441+ f"By default from {editor.default_in} to {editor.default_out}"
442+ )
443+ )
444+ parser.add_argument(
445+ "--add",
446+ dest="add_plugins",
447+ default=[],
448+ action="append",
449+ help=f"Plugin to add to {editor.name}Plugins from Github in the form owner/repo",
450+ )
451+ parser.add_argument(
452+ "--input-names",
453+ "-i",
454+ dest="input_file",
455+ default=editor.default_in,
456+ help="A list of plugins in the form owner/repo",
457+ )
458+ parser.add_argument(
459+ "--out",
460+ "-o",
461+ dest="outfile",
462+ default=editor.default_out,
463+ help="Filename to save generated nix code",
464+ )
465+ parser.add_argument(
466+ "--proc",
467+ "-p",
468+ dest="proc",
469+ type=int,
470+ default=30,
471+ help="Number of concurrent processes to spawn.",
472+ )
473+ parser.add_argument(
474+ "--no-commit", "-n", action="store_true", default=False,
475+ help="Whether to autocommit changes"
476+ )
477+ parser.add_argument(
478+ "--debug", "-d", choices=LOG_LEVELS.keys(),
479+ default=logging.getLevelName(logging.WARN),
480+ help="Adjust log level"
481+ )
482+ return parser.parse_args()
647483
648484
649485def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
@@ -656,46 +492,64 @@ def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
656492 print("no changes in working tree to commit")
657493
658494
495+def get_update(input_file: str, outfile: str, proc: int, editor: Editor):
496+ cache: Cache = Cache(get_current_plugins(editor), editor.cache_file)
497+ _prefetch = functools.partial(prefetch, cache=cache)
498+
499+ def update() -> dict:
500+ plugin_names = load_plugin_spec(input_file)
501+
502+ try:
503+ pool = Pool(processes=proc)
504+ results = pool.map(_prefetch, plugin_names)
505+ finally:
506+ cache.store()
507+
508+ plugins, redirects = check_results(results)
509+
510+ editor.generate_nix(plugins, outfile)
511+
512+ return redirects
659513
660−def update_plugins(editor: Editor, args):
514+ return update
515+
516+
517+def update_plugins(editor: Editor):
661518 """The main entry function of this module. All input arguments are grouped in the `Editor`."""
662519
520+ args = parse_args(editor)
663521 log.setLevel(LOG_LEVELS[args.debug])
522+
664523 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)
524+ nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True)
525+ update = get_update(args.input_file, args.outfile, args.proc, editor)
667526
668527 redirects = update()
669− editor.rewrite_input(fetch_config, args.input_file, editor.deprecated, redirects)
528+ rewrite_input(args.input_file, editor.deprecated, redirects)
670529
671530 autocommit = not args.no_commit
672531
673− nixpkgs_repo = None
674532 if autocommit:
675− nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True)
676− commit(nixpkgs_repo, f"{editor.attr_path}: update", [args.outfile])
533+ commit(nixpkgs_repo, f"{editor.name}Plugins: update", [args.outfile])
677534
678535 if redirects:
679536 update()
680537 if autocommit:
681538 commit(
682539 nixpkgs_repo,
683− f"{editor.attr_path}: resolve github repository redirects",
540+ f"{editor.name}Plugins: resolve github repository redirects",
684541 [args.outfile, args.input_file, editor.deprecated],
685542 )
686543
687544 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)
545+ rewrite_input(args.input_file, editor.deprecated, append=(plugin_line + "\n",))
691546 update()
692− plugin, _ = prefetch_plugin(pdesc, )
547+ plugin = fetch_plugin_from_pluginline(plugin_line)
693548 if autocommit:
694549 commit(
695550 nixpkgs_repo,
696− "{drv_name}: init at {version}".format(
697− drv_name=editor.get_drv_name(plugin.normalized_name),
698− version=plugin.version
551+ "{editor}Plugins.{name}: init at {version}".format(
552+ editor=editor.name, name=plugin.normalized_name, version=plugin.version
699553 ),
700554 [args.outfile, args.input_file],
701555 )
maintainers/scripts/rebuild-amount.sh+79−86
@@ -4,130 +4,123 @@ set -e
44# --print: avoid dependency on environment
55optPrint=
66if [ "$1" == "--print" ]; then
7− optPrint=true
8− shift
7+ optPrint=true
8+ shift
99fi
1010
1111if [ "$#" != 1 ] && [ "$#" != 2 ]; then
12− cat <<EOF
13− Usage: $0 [--print] from-commit-spec [to-commit-spec]
14− You need to be in a git-controlled nixpkgs tree.
15− The current state of the tree will be used if the second commit is missing.
16−
17− Examples:
18− effect of latest commit:
19− $ $0 HEAD^
20− $ $0 --print HEAD^
21− effect of the whole patch series for 'staging' branch:
22− $ $0 origin/staging staging
23−EOF
24− exit 1
12+ cat <<-EOF
13+ Usage: $0 [--print] commit-spec [commit-spec]
14+ You need to be in a git-controlled nixpkgs tree.
15+ The current state of the tree will be used if the second commit is missing.
16+ EOF
17+ exit 1
2518fi
2619
2720# A slightly hacky way to get the config.
2821parallel="$(echo 'config.rebuild-amount.parallel or false' | nix-repl . 2>/dev/null \
29− | grep -v '^\(nix-repl.*\)\?$' | tail -n 1 || true)"
22+ | grep -v '^\(nix-repl.*\)\?$' | tail -n 1 || true)"
3023
31−echo "Estimating rebuild amount by counting changed Hydra jobs (parallel=${parallel:-unset})."
24+echo "Estimating rebuild amount by counting changed Hydra jobs."
3225
3326toRemove=()
3427
3528cleanup() {
36− rm -rf "${toRemove[@]}"
29+ rm -rf "${toRemove[@]}"
3730}
3831trap cleanup EXIT SIGINT SIGQUIT ERR
3932
4033MKTEMP='mktemp --tmpdir nix-rebuild-amount-XXXXXXXX'
4134
4235nixexpr() {
43− cat <<EONIX
44− let
45− lib = import $1/lib;
46− hydraJobs = import $1/pkgs/top-level/release.nix
47− # Compromise: accuracy vs. resources needed for evaluation.
48− { supportedSystems = cfg.systems or [ "x86_64-linux" "x86_64-darwin" ]; };
49− cfg = (import $1 {}).config.rebuild-amount or {};
50−
51− recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; };
52−
53− # hydraJobs leaves recurseForDerivations as empty attrmaps;
54− # that would break nix-env and we also need to recurse everywhere.
55− tweak = lib.mapAttrs
56− (name: val:
57− if name == "recurseForDerivations" then true
58− else if lib.isAttrs val && val.type or null != "derivation"
59− then recurseIntoAttrs (tweak val)
60− else val
61− );
62−
63− # Some of these contain explicit references to platform(s) we want to avoid;
64− # some even (transitively) depend on ~/.nixpkgs/config.nix (!)
65− blacklist = [
66− "tarball" "metrics" "manual"
67− "darwin-tested" "unstable" "stdenvBootstrapTools"
68− "moduleSystem" "lib-tests" # these just confuse the output
69− ];
70−
71− in
72− tweak (builtins.removeAttrs hydraJobs blacklist)
73−EONIX
36+ cat <<-EONIX
37+ let
38+ lib = import $1/lib;
39+ hydraJobs = import $1/pkgs/top-level/release.nix
40+ # Compromise: accuracy vs. resources needed for evaluation.
41+ { supportedSystems = cfg.systems or [ "x86_64-linux" "x86_64-darwin" ]; };
42+ cfg = (import $1 {}).config.rebuild-amount or {};
43+
44+ recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; };
45+
46+ # hydraJobs leaves recurseForDerivations as empty attrmaps;
47+ # that would break nix-env and we also need to recurse everywhere.
48+ tweak = lib.mapAttrs
49+ (name: val:
50+ if name == "recurseForDerivations" then true
51+ else if lib.isAttrs val && val.type or null != "derivation"
52+ then recurseIntoAttrs (tweak val)
53+ else val
54+ );
55+
56+ # Some of these contain explicit references to platform(s) we want to avoid;
57+ # some even (transitively) depend on ~/.nixpkgs/config.nix (!)
58+ blacklist = [
59+ "tarball" "metrics" "manual"
60+ "darwin-tested" "unstable" "stdenvBootstrapTools"
61+ "moduleSystem" "lib-tests" # these just confuse the output
62+ ];
63+
64+ in
65+ tweak (builtins.removeAttrs hydraJobs blacklist)
66+ EONIX
7467}
7568
7669# Output packages in tree $2 that weren't in $1.
7770# Changing the output hash or name is taken as a change.
7871# Extra nix-env parameters can be in $3
7972newPkgs() {
80− # We use files instead of pipes, as running multiple nix-env processes
81− # could eat too much memory for a standard 4GiB machine.
82− local -a list
83− for i in 1 2; do
84− local l="$($MKTEMP)"
85− list[$i]="$l"
86− toRemove+=("$l")
87−
88− local expr="$($MKTEMP)"
89− toRemove+=("$expr")
90− nixexpr "${!i}" > "$expr"
91−
92− nix-env -f "$expr" -qaP --no-name --out-path --show-trace $3 \
93− | sort > "${list[$i]}" &
94−
95− if [ "$parallel" != "true" ]; then
96− wait
97− fi
98− done
99−
100− wait
101− comm -13 "${list[@]}"
73+ # We use files instead of pipes, as running multiple nix-env processes
74+ # could eat too much memory for a standard 4GiB machine.
75+ local -a list
76+ for i in 1 2; do
77+ local l="$($MKTEMP)"
78+ list[$i]="$l"
79+ toRemove+=("$l")
80+
81+ local expr="$($MKTEMP)"
82+ toRemove+=("$expr")
83+ nixexpr "${!i}" > "$expr"
84+
85+ nix-env -f "$expr" -qaP --no-name --out-path --show-trace $3 \
86+ | sort > "${list[$i]}" &
87+
88+ if [ "$parallel" != "true" ]; then
89+ wait
90+ fi
91+ done
92+
93+ wait
94+ comm -13 "${list[@]}"
10295}
10396
10497# Prepare nixpkgs trees.
10598declare -a tree
10699for i in 1 2; do
107− if [ -n "${!i}" ]; then # use the given commit
108− dir="$($MKTEMP -d)"
109− tree[$i]="$dir"
110− toRemove+=("$dir")
111−
112− git clone --shared --no-checkout --quiet . "${tree[$i]}"
113− (cd "${tree[$i]}" && git checkout --quiet "${!i}")
114− else #use the current tree
115− tree[$i]="$(pwd)"
116− fi
100+ if [ -n "${!i}" ]; then # use the given commit
101+ dir="$($MKTEMP -d)"
102+ tree[$i]="$dir"
103+ toRemove+=("$dir")
104+
105+ git clone --shared --no-checkout --quiet . "${tree[$i]}"
106+ (cd "${tree[$i]}" && git checkout --quiet "${!i}")
107+ else #use the current tree
108+ tree[$i]="$(pwd)"
109+ fi
117110done
118111
119112newlist="$($MKTEMP)"
120113toRemove+=("$newlist")
121114# Notes:
122−# - the evaluation is done on x86_64-linux, like on Hydra.
123−# - using $newlist file so that newPkgs() isn't in a sub-shell (because of toRemove)
115+# - the evaluation is done on x86_64-linux, like on Hydra.
116+# - using $newlist file so that newPkgs() isn't in a sub-shell (because of toRemove)
124117newPkgs "${tree[1]}" "${tree[2]}" '--argstr system "x86_64-linux"' > "$newlist"
125118
126119# Hacky: keep only the last word of each attribute path and sort.
127120sed -n 's/\([^. ]*\.\)*\([^. ]*\) .*$/\2/p' < "$newlist" \
128− | sort | uniq -c
121+ | sort | uniq -c
129122
130123if [ -n "$optPrint" ]; then
131− echo
132− cat "$newlist"
124+ echo
125+ cat "$newlist"
133126fi
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+125−207
@@ -1,218 +1,136 @@
11#!/usr/bin/env nix-shell
2−#!nix-shell update-luarocks-shell.nix -i python3
3−
4−# format:
5−# $ nix run nixpkgs.python3Packages.black -c black update.py
6−# type-check:
7−# $ nix run nixpkgs.python3Packages.mypy -c mypy update.py
8−# linted:
9−# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265,E402 update.py
10−
11−import inspect
12−import os
13−import tempfile
14−import shutil
15−from dataclasses import dataclass
16−import subprocess
17−import csv
18−import logging
19−import textwrap
20−from multiprocessing.dummy import Pool
21−
22−from typing import List, Tuple, Optional
23−from pathlib import Path
24−
25−log = logging.getLogger()
26−log.addHandler(logging.StreamHandler())
27−
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
30−
31−PKG_LIST="maintainers/scripts/luarocks-packages.csv"
2+#!nix-shell update-luarocks-shell.nix -i bash
3+
4+# You'll likely want to use
5+# ``
6+# nixpkgs $ maintainers/scripts/update-luarocks-packages pkgs/development/lua-modules/generated-packages.nix
7+# ``
8+# to update all libraries in that folder.
9+# to debug, redirect stderr to stdout with 2>&1
10+
11+# stop the script upon C-C
12+set -eu -o pipefail
13+
14+CSV_FILE="maintainers/scripts/luarocks-packages.csv"
3215TMP_FILE="$(mktemp)"
33−GENERATED_NIXFILE="pkgs/development/lua-modules/generated-packages.nix"
34−LUAROCKS_CONFIG="$NIXPKGS_PATH/maintainers/scripts/luarocks-config.lua"
16+# Set in the update-luarocks-shell.nix
17+NIXPKGS_PATH="$LUAROCKS_NIXPKGS_PATH"
18+export LUAROCKS_CONFIG="$NIXPKGS_PATH/maintainers/scripts/luarocks-config.lua"
19+
20+# 10 is a pretty arbitrary number of simultaneous jobs, but it is generally
21+# impolite to hit a webserver with *too* many simultaneous connections :)
22+PARALLEL_JOBS=1
23+
24+exit_trap() {
25+ local lc="$BASH_COMMAND" rc=$?
26+ test $rc -eq 0 || echo -e "*** error $rc: $lc.\nGenerated temporary file in $TMP_FILE" >&2
27+}
3528
36−HEADER = """/* {GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
29+print_help() {
30+ echo "Usage: $0 <GENERATED_FILE>"
31+ echo "(most likely pkgs/development/lua-modules/generated-packages.nix)"
32+ echo ""
33+ echo " -c <CSV_FILE> to set the list of luarocks package to generate"
34+ exit 1
35+}
36+
37+if [ $# -lt 1 ]; then
38+ print_help
39+ exit 1
40+fi
41+
42+trap exit_trap EXIT
43+
44+while getopts ":hc:" opt; do
45+ case $opt in
46+ h)
47+ print_help
48+ ;;
49+ c)
50+ echo "Loading package list from $OPTARG !" >&2
51+ CSV_FILE="$OPTARG"
52+ ;;
53+ \?)
54+ echo "Invalid option: -$OPTARG" >&2
55+ ;;
56+ esac
57+ shift $((OPTIND - 1))
58+done
59+
60+GENERATED_NIXFILE="$1"
61+
62+HEADER="
63+/* ${GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
3764Regenerate it with:
38−nixpkgs$ ./maintainers/scripts/update-luarocks-packages
65+nixpkgs$ ${0} ${GENERATED_NIXFILE}
3966
40−You can customize the generated packages in pkgs/development/lua-modules/overrides.nix
67+These packages are manually refined in lua-overrides.nix
4168*/
42−""".format(GENERATED_NIXFILE=GENERATED_NIXFILE)
69+{ self, stdenv, lib, fetchurl, fetchgit, pkgs, ... } @ args:
70+self: super:
71+with self;
72+{
73+"
4374
44−FOOTER="""
75+FOOTER="
76+}
77+/* GENERATED */
78+"
79+
80+function convert_pkg() {
81+ nix_pkg_name="$1"
82+ lua_pkg_name="$2"
83+ server="$3"
84+ pkg_version="$4"
85+ lua_version="$5"
86+ maintainers="$6"
87+
88+ if [ "${nix_pkg_name:0:1}" == "#" ]; then
89+ echo "Skipping comment ${*}" >&2
90+ return
91+ fi
92+ if [ -z "$lua_pkg_name" ]; then
93+ echo "Using nix_name as lua_pkg_name for '$nix_pkg_name'" >&2
94+ lua_pkg_name="$nix_pkg_name"
95+ fi
96+
97+ echo "Building expression for $lua_pkg_name (version $pkg_version) from server [$server]" >&2
98+ luarocks_args=(nix)
99+ if [[ -n $server ]]; then
100+ luarocks_args+=("--only-server=$server")
101+ fi
102+ if [[ -n $maintainers ]]; then
103+ luarocks_args+=("--maintainers=$maintainers")
104+ fi
105+ if [[ -n $lua_version ]]; then
106+ lua_drv_path=$(nix-build --no-out-link "$NIXPKGS_PATH" -A "$lua_version")
107+ luarocks_args+=("--lua-dir=$lua_drv_path/bin")
108+ fi
109+ luarocks_args+=("$lua_pkg_name")
110+ if [[ -n $pkg_version ]]; then
111+ luarocks_args+=("$pkg_version")
112+ fi
113+ echo "Running 'luarocks ${luarocks_args[*]}'" >&2
114+ if drv="$nix_pkg_name = $(luarocks "${luarocks_args[@]}")"; then
115+ echo "$drv"
116+ else
117+ echo "Failed to convert $nix_pkg_name" >&2
118+ return 1
119+ fi
45120}
46−/* GENERATED - do not edit this file */
47−"""
48−
49−@dataclass
50−class LuaPlugin:
51− name: str
52− '''Name of the plugin, as seen on luarocks.org'''
53− src: str
54− '''address to the git repository'''
55− ref: Optional[str]
56− '''git reference (branch name/tag)'''
57− version: Optional[str]
58− '''Set it to pin a package '''
59− server: Optional[str]
60− '''luarocks.org registers packages under different manifests.
61− Its value can be 'http://luarocks.org/dev'
62− '''
63− luaversion: Optional[str]
64− '''Attribue of the lua interpreter if a package is available only for a specific lua version'''
65− maintainers: Optional[str]
66− ''' Optional string listing maintainers separated by spaces'''
67−
68− @property
69− def normalized_name(self) -> str:
70− return self.name.replace(".", "-")
71−
72−# rename Editor to LangUpdate/ EcosystemUpdater
73−class LuaEditor(Editor):
74− def get_current_plugins(self):
75− return []
76−
77− def load_plugin_spec(self, input_file) -> List[LuaPlugin]:
78− luaPackages = []
79− csvfilename=input_file
80− log.info("Loading package descriptions from %s", csvfilename)
81−
82− with open(csvfilename, newline='') as csvfile:
83− reader = csv.DictReader(csvfile,)
84− for row in reader:
85− # name,server,version,luaversion,maintainers
86− plugin = LuaPlugin(**row)
87− luaPackages.append(plugin)
88− return luaPackages
89−
90− def generate_nix(
91− self,
92− results: List[Tuple[LuaPlugin, str]],
93− outfilename: str
94− ):
95−
96− with tempfile.NamedTemporaryFile("w+") as f:
97− f.write(HEADER)
98− header2 = textwrap.dedent(
99− # header2 = inspect.cleandoc(
100− """
101− { self, stdenv, lib, fetchurl, fetchgit, callPackage, ... } @ args:
102− final: prev:
103− {
104− """)
105− f.write(header2)
106− for (plugin, nix_expr) in results:
107− f.write(f"{plugin.normalized_name} = {nix_expr}")
108− f.write(FOOTER)
109− f.flush()
110−
111− # if everything went fine, move the generated file to its destination
112− # using copy since move doesn't work across disks
113− shutil.copy(f.name, outfilename)
114−
115− print(f"updated {outfilename}")
116−
117− @property
118− def attr_path(self):
119− return "luaPackages"
120−
121− def get_update(self, input_file: str, outfile: str, config: FetchConfig):
122− _prefetch = generate_pkg_nix
123−
124− def update() -> dict:
125− plugin_specs = self.load_plugin_spec(input_file)
126− sorted_plugin_specs = sorted(plugin_specs, key=lambda v: v.name.lower())
127−
128− try:
129− pool = Pool(processes=config.proc)
130− results = pool.map(_prefetch, sorted_plugin_specs)
131− finally:
132− pass
133−
134− self.generate_nix(results, outfile)
135−
136− redirects = {}
137− return redirects
138−
139− return update
140−
141− def rewrite_input(self, input_file: str, *args, **kwargs):
142− # vim plugin reads the file before update but that shouldn't be our case
143− # not implemented yet
144− # fieldnames = ['name', 'server', 'version', 'luaversion', 'maintainers']
145− # input_file = "toto.csv"
146− # with open(input_file, newline='') as csvfile:
147− # writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
148− # writer.writeheader()
149− # for row in reader:
150− # # name,server,version,luaversion,maintainers
151− # plugin = LuaPlugin(**row)
152− # luaPackages.append(plugin)
153− pass
154−
155−def generate_pkg_nix(plug: LuaPlugin):
156− '''
157− Generate nix expression for a luarocks package
158− Our cache key associates "p.name-p.version" to its rockspec
159− '''
160− log.debug("Generating nix expression for %s", plug.name)
161− cmd = [ "luarocks", "nix"]
162−
163−
164− if plug.maintainers:
165− cmd.append(f"--maintainers={plug.maintainers}")
166−
167− # updates plugin directly from its repository
168− print("server: [%s]" % plug.server)
169− # if plug.server == "src":
170− if plug.src != "":
171− if plug.src is None:
172− msg = "src must be set when 'version' is set to \"src\" for package %s" % plug.name
173− log.error(msg)
174− raise RuntimeError(msg)
175− log.debug("Updating from source %s", plug.src)
176− cmd.append(plug.src)
177− # update the plugin from luarocks
178− else:
179− cmd.append(plug.name)
180− if plug.version and plug.version != "src":
181−
182− cmd.append(plug.version)
183−
184− if plug.server != "src" and plug.server:
185− cmd.append(f"--only-server={plug.server}")
186−
187− if plug.luaversion:
188− with CleanEnvironment():
189− local_pkgs = str(ROOT.resolve())
190− cmd2 = ["nix-build", "--no-out-link", local_pkgs, "-A", f"{plug.luaversion}"]
191−
192− log.debug("running %s", ' '.join(cmd2))
193− lua_drv_path=subprocess.check_output(cmd2, text=True).strip()
194− cmd.append(f"--lua-dir={lua_drv_path}/bin")
195−
196− log.debug("running %s", ' '.join(cmd))
197− output = subprocess.check_output(cmd, text=True)
198− output = "callPackage(" + output.strip() + ") {};\n\n"
199− return (plug, output)
200−
201−def main():
202−
203− editor = LuaEditor("lua", ROOT, '',
204− default_in = ROOT.joinpath(PKG_LIST),
205− default_out = ROOT.joinpath(GENERATED_NIXFILE)
206− )
207−
208− parser = editor.create_parser()
209− args = parser.parse_args()
210121
211− update_plugins(editor, args)
122+# params needed when called via callPackage
123+echo "$HEADER" | tee "$TMP_FILE"
124+
125+# Ensure parallel can run our bash function
126+export -f convert_pkg
127+export SHELL=bash
128+# Read each line in the csv file and run convert_pkg for each, in parallel
129+parallel --group --keep-order --halt now,fail=1 --jobs "$PARALLEL_JOBS" --colsep ',' convert_pkg {} <"$CSV_FILE" | tee -a "$TMP_FILE"
130+
131+# close the set
132+echo "$FOOTER" | tee -a "$TMP_FILE"
212133
134+cp "$TMP_FILE" "$GENERATED_NIXFILE"
213135
214−if __name__ == "__main__":
215−
216− main()
217−
218−# vim: set ft=python noet fdm=manual fenc=utf-8 ff=unix sts=0 sw=4 ts=4 :
136+# vim: set ts=4 sw=4 ft=sh:
maintainers/scripts/update-luarocks-shell.nix+3−4
@@ -1,13 +1,12 @@
11{ nixpkgs ? import ../.. { }
22}:
33with nixpkgs;
4−let
5− pyEnv = python3.withPackages(ps: [ ps.GitPython ]);
6−in
74mkShell {
85 packages = [
9− pyEnv
6+ bash
107 luarocks-nix
118 nix-prefetch-scripts
9+ parallel
1210 ];
11+ LUAROCKS_NIXPKGS_PATH = toString nixpkgs.path;
1312}
maintainers/scripts/update-ruby-packages+1−4
@@ -6,10 +6,7 @@ set -euf -o pipefail
66(
77 cd pkgs/development/ruby-modules/with-packages
88 rm -f gemset.nix Gemfile.lock
9− # Since bundler 2+, the lock command generates a platform-dependent
10− # Gemfile.lock, hence causing to bundix to generate a gemset tied to the
11− # platform from where it was executed.
12− BUNDLE_FORCE_RUBY_PLATFORM=1 bundle lock
9+ bundle lock
1310 bundix
1411 mv gemset.nix ../../../top-level/ruby-packages.nix
1512 rm -f Gemfile.lock
maintainers/scripts/update.nix+3−3
@@ -103,7 +103,7 @@ let
103103 pathContent = lib.attrByPath prefix null pkgs;
104104 in
105105 if pathContent == null then
106− builtins.throw "Attribute path `${path}` does not exist."
106+ builtins.throw "Attribute path `${path}` does not exists."
107107 else
108108 packagesWithPath prefix (path: pkg: builtins.hasAttr "updateScript" pkg)
109109 pathContent;
@@ -115,7 +115,7 @@ let
115115 package = lib.attrByPath (lib.splitString "." path) null pkgs;
116116 in
117117 if package == null then
118− builtins.throw "Package with an attribute name `${path}` does not exist."
118+ builtins.throw "Package with an attribute name `${path}` does not exists."
119119 else if ! builtins.hasAttr "updateScript" package then
120120 builtins.throw "Package with an attribute name `${path}` does not have a `passthru.updateScript` attribute defined."
121121 else
@@ -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+1−5
@@ -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
@@ -118,7 +114,7 @@ async def check_changes(package: Dict, worktree: str, update_info: str):
118114 changes[0]['newVersion'] = json.loads((await obtain_new_version_process.stdout.read()).decode('utf-8'))
119115
120116 if 'files' not in changes[0]:
121− changed_files_process = await check_subprocess('git', 'diff', '--name-only', 'HEAD', stdout=asyncio.subprocess.PIPE, cwd=worktree)
117+ changed_files_process = await check_subprocess('git', 'diff', '--name-only', stdout=asyncio.subprocess.PIPE, cwd=worktree)
122118 changed_files = (await changed_files_process.stdout.read()).splitlines()
123119 changes[0]['files'] = changed_files
124120
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+5−458
@@ -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,45 +93,32 @@ 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 = {
274116 members = [
275− cdepillabout
276− expipiplus1
277117 maralorn
118+ cdepillabout
278119 sternenseemann
279120 ];
280− githubTeams = [
281− "haskell"
282− ];
283121 scope = "Maintain Haskell packages and infrastructure.";
284− shortName = "Haskell";
285− enableFeatureFreezePing = true;
286122 };
287123
288124 home-assistant = {
@@ -293,42 +129,16 @@ with lib.maintainers; {
293129 mic92
294130 ];
295131 scope = "Maintain the Home Assistant ecosystem";
296− shortName = "Home Assistant";
297− };
298−
299− iog = {
300− members = [
301− cleverca22
302− disassembler
303− jonringer
304− manveru
305− nrdxp
306− ];
307− scope = "Input-Output Global employees, which maintain critical software";
308− shortName = "Input-Output Global employees";
309132 };
310133
311134 jitsi = {
312135 members = [
313− cleeyv
136+ mmilata
314137 petabyteboy
315138 ryantm
316139 yuka
317140 ];
318141 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";
332142 };
333143
334144 kodi = {
@@ -341,61 +151,6 @@ with lib.maintainers; {
341151 sephalon
342152 ];
343153 scope = "Maintain Kodi and related packages.";
344− shortName = "Kodi";
345− };
346−
347− linux-kernel = {
348− members = [
349− TredwellGit
350− ma27
351− nequissimus
352− qyliss
353− ];
354− 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;
390− };
391−
392− mate = {
393− members = [
394− j03
395− romildo
396− ];
397− scope = "Maintain Mate desktop environment and related packages.";
398− shortName = "MATE";
399154 };
400155
401156 matrix = {
@@ -405,92 +160,21 @@ with lib.maintainers; {
405160 mguentner
406161 ekleog
407162 ralith
163+ mjlbach
408164 dandellion
409− sumnerevans
410165 ];
411166 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;
446− };
447−
448− openstack = {
449− members = [
450− emilytrau
451− SuperSandro2000
452− ];
453− scope = "Maintain the ecosystem around OpenStack";
454− shortName = "OpenStack";
455− };
456−
457− pantheon = {
458− members = [
459− davidak
460− bobby285271
461− ];
462− githubTeams = [
463− "pantheon"
464− ];
465− 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;
477167 };
478168
479169 php = {
480170 members = [
481171 aanderse
482− drupol
483172 etu
484173 globin
485174 ma27
486175 talyz
487176 ];
488− githubTeams = [
489− "php"
490− ];
491177 scope = "Maintain PHP related packages and extensions.";
492− shortName = "PHP";
493− enableFeatureFreezePing = true;
494178 };
495179
496180 podman = {
@@ -500,95 +184,7 @@ with lib.maintainers; {
500184 vdemeester
501185 zowoq
502186 ];
503− githubTeams = [
504− "podman"
505− ];
506187 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;
592188 };
593189
594190 sage = {
@@ -599,15 +195,6 @@ with lib.maintainers; {
599195 collares
600196 ];
601197 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";
611198 };
612199
613200 serokell = {
@@ -617,26 +204,6 @@ with lib.maintainers; {
617204 mkaito
618205 ];
619206 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;
640207 };
641208
642209 tts = {
@@ -645,25 +212,5 @@ with lib.maintainers; {
645212 mic92
646213 ];
647214 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";
668215 };
669216}
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/READMEnew file+3
@@ -0,0 +1,3 @@
1+Moved to: ./contributing-to-this-manual.xml. Link:
2+
3+https://nixos.org/manual/nixos/unstable/#chap-contributing
nixos/doc/manual/README.mddeleted−3
@@ -1,3 +0,0 @@
1−[Moved to ./contributing-to-this-manual.chapter.md](./contributing-to-this-manual.chapter.md). Link:
2−
3−https://nixos.org/manual/nixos/unstable/#chap-contributing
nixos/doc/manual/administration/boot-problems.section.md+1−1
@@ -16,7 +16,7 @@ If NixOS fails to boot, there are a number of kernel command line parameters tha
1616
1717`boot.debug1mounts`
1818
19−: Like `boot.debug1` or `boot.debug1devices`, but runs stage1 until all filesystems that are mounted during initrd are mounted (see [neededForBoot](#opt-fileSystems._name_.neededForBoot)). As a motivating example, this could be useful if you've forgotten to set [neededForBoot](#opt-fileSystems._name_.neededForBoot) on a file system.
19+: Like `boot.debug1` or `boot.debug1devices`, but runs stage1 until all filesystems that are mounted during initrd are mounted (see [neededForBoot](#opt-fileSystems._name_.neededForBoot)). As a motivating example, this could be useful if you've forgotten to set [neededForBoot](options.html#opt-fileSystems._name_.neededForBoot) on a file system.
2020
2121`boot.trace`
2222
nixos/doc/manual/administration/cleaning-store.chapter.mddeleted−62
@@ -1,62 +0,0 @@
1−# Cleaning the Nix Store {#sec-nix-gc}
2−
3−Nix has a purely functional model, meaning that packages are never
4−upgraded in place. Instead new versions of packages end up in a
5−different location in the Nix store (`/nix/store`). You should
6−periodically run Nix's *garbage collector* to remove old, unreferenced
7−packages. This is easy:
8−
9−```ShellSession
10−$ nix-collect-garbage
11−```
12−
13−Alternatively, you can use a systemd unit that does the same in the
14−background:
15−
16−```ShellSession
17−# systemctl start nix-gc.service
18−```
19−
20−You can tell NixOS in `configuration.nix` to run this unit automatically
21−at certain points in time, for instance, every night at 03:15:
22−
23−```nix
24−nix.gc.automatic = true;
25−nix.gc.dates = "03:15";
26−```
27−
28−The commands above do not remove garbage collector roots, such as old
29−system configurations. Thus they do not remove the ability to roll back
30−to previous configurations. The following command deletes old roots,
31−removing the ability to roll back to them:
32−
33−```ShellSession
34−$ nix-collect-garbage -d
35−```
36−
37−You can also do this for specific profiles, e.g.
38−
39−```ShellSession
40−$ nix-env -p /nix/var/nix/profiles/per-user/eelco/profile --delete-generations old
41−```
42−
43−Note that NixOS system configurations are stored in the profile
44−`/nix/var/nix/profiles/system`.
45−
46−Another way to reclaim disk space (often as much as 40% of the size of
47−the Nix store) is to run Nix's store optimiser, which seeks out
48−identical files in the store and replaces them with hard links to a
49−single copy.
50−
51−```ShellSession
52−$ nix-store --optimise
53−```
54−
55−Since this command needs to read the entire Nix store, it can take quite
56−a while to finish.
57−
58−## NixOS Boot Entries {#sect-nixos-gc-boot-entries}
59−
60−If your `/boot` partition runs out of space, after clearing old profiles
61−you must rebuild your system with `nixos-rebuild boot` or `nixos-rebuild
62−switch` to update the `/boot` partition and clear space.
nixos/doc/manual/administration/cleaning-store.xmlnew file+63
@@ -0,0 +1,63 @@
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+ version="5.0"
5+ xml:id="sec-nix-gc">
6+ <title>Cleaning the Nix Store</title>
7+ <para>
8+ Nix has a purely functional model, meaning that packages are never upgraded
9+ in place. Instead new versions of packages end up in a different location in
10+ the Nix store (<filename>/nix/store</filename>). You should periodically run
11+ Nix’s <emphasis>garbage collector</emphasis> to remove old, unreferenced
12+ packages. This is easy:
13+<screen>
14+<prompt>$ </prompt>nix-collect-garbage
15+</screen>
16+ Alternatively, you can use a systemd unit that does the same in the
17+ background:
18+<screen>
19+<prompt># </prompt>systemctl start nix-gc.service
20+</screen>
21+ You can tell NixOS in <filename>configuration.nix</filename> to run this unit
22+ automatically at certain points in time, for instance, every night at 03:15:
23+<programlisting>
24+<xref linkend="opt-nix.gc.automatic"/> = true;
25+<xref linkend="opt-nix.gc.dates"/> = "03:15";
26+</programlisting>
27+ </para>
28+ <para>
29+ The commands above do not remove garbage collector roots, such as old system
30+ configurations. Thus they do not remove the ability to roll back to previous
31+ configurations. The following command deletes old roots, removing the ability
32+ to roll back to them:
33+<screen>
34+<prompt>$ </prompt>nix-collect-garbage -d
35+</screen>
36+ You can also do this for specific profiles, e.g.
37+<screen>
38+<prompt>$ </prompt>nix-env -p /nix/var/nix/profiles/per-user/eelco/profile --delete-generations old
39+</screen>
40+ Note that NixOS system configurations are stored in the profile
41+ <filename>/nix/var/nix/profiles/system</filename>.
42+ </para>
43+ <para>
44+ Another way to reclaim disk space (often as much as 40% of the size of the
45+ Nix store) is to run Nix’s store optimiser, which seeks out identical files
46+ in the store and replaces them with hard links to a single copy.
47+<screen>
48+<prompt>$ </prompt>nix-store --optimise
49+</screen>
50+ Since this command needs to read the entire Nix store, it can take quite a
51+ while to finish.
52+ </para>
53+ <section xml:id="sect-nixos-gc-boot-entries">
54+ <title>NixOS Boot Entries</title>
55+
56+ <para>
57+ If your <filename>/boot</filename> partition runs out of space, after
58+ clearing old profiles you must rebuild your system with
59+ <literal>nixos-rebuild</literal> to update the <filename>/boot</filename>
60+ partition and clear space.
61+ </para>
62+ </section>
63+</chapter>
nixos/doc/manual/administration/container-networking.section.mddeleted−44
@@ -1,44 +0,0 @@
1−# Container Networking {#sec-container-networking}
2−
3−When you create a container using `nixos-container create`, it gets it
4−own private IPv4 address in the range `10.233.0.0/16`. You can get the
5−container's IPv4 address as follows:
6−
7−```ShellSession
8−# nixos-container show-ip foo
9−10.233.4.2
10−
11−$ ping -c1 10.233.4.2
12−64 bytes from 10.233.4.2: icmp_seq=1 ttl=64 time=0.106 ms
13−```
14−
15−Networking is implemented using a pair of virtual Ethernet devices. The
16−network interface in the container is called `eth0`, while the matching
17−interface in the host is called `ve-container-name` (e.g., `ve-foo`).
18−The container has its own network namespace and the `CAP_NET_ADMIN`
19−capability, so it can perform arbitrary network configuration such as
20−setting up firewall rules, without affecting or having access to the
21−host's network.
22−
23−By default, containers cannot talk to the outside network. If you want
24−that, you should set up Network Address Translation (NAT) rules on the
25−host to rewrite container traffic to use your external IP address. This
26−can be accomplished using the following configuration on the host:
27−
28−```nix
29−networking.nat.enable = true;
30−networking.nat.internalInterfaces = ["ve-+"];
31−networking.nat.externalInterface = "eth0";
32−```
33−
34−where `eth0` should be replaced with the desired external interface.
35−Note that `ve-+` is a wildcard that matches all container interfaces.
36−
37−If you are using Network Manager, you need to explicitly prevent it from
38−managing container interfaces:
39−
40−```nix
41−networking.networkmanager.unmanaged = [ "interface-name:ve-*" ];
42−```
43−
44−You may need to restart your system for the changes to take effect.
nixos/doc/manual/administration/container-networking.xmlnew file+59
@@ -0,0 +1,59 @@
1+<section 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+ version="5.0"
5+ xml:id="sec-container-networking">
6+ <title>Container Networking</title>
7+
8+ <para>
9+ When you create a container using <literal>nixos-container create</literal>,
10+ it gets it own private IPv4 address in the range
11+ <literal>10.233.0.0/16</literal>. You can get the container’s IPv4 address
12+ as follows:
13+<screen>
14+<prompt># </prompt>nixos-container show-ip foo
15+10.233.4.2
16+
17+<prompt>$ </prompt>ping -c1 10.233.4.2
18+64 bytes from 10.233.4.2: icmp_seq=1 ttl=64 time=0.106 ms
19+</screen>
20+ </para>
21+
22+ <para>
23+ Networking is implemented using a pair of virtual Ethernet devices. The
24+ network interface in the container is called <literal>eth0</literal>, while
25+ the matching interface in the host is called
26+ <literal>ve-<replaceable>container-name</replaceable></literal> (e.g.,
27+ <literal>ve-foo</literal>). The container has its own network namespace and
28+ the <literal>CAP_NET_ADMIN</literal> capability, so it can perform arbitrary
29+ network configuration such as setting up firewall rules, without affecting or
30+ having access to the host’s network.
31+ </para>
32+
33+ <para>
34+ By default, containers cannot talk to the outside network. If you want that,
35+ you should set up Network Address Translation (NAT) rules on the host to
36+ rewrite container traffic to use your external IP address. This can be
37+ accomplished using the following configuration on the host:
38+<programlisting>
39+<xref linkend="opt-networking.nat.enable"/> = true;
40+<xref linkend="opt-networking.nat.internalInterfaces"/> = ["ve-+"];
41+<xref linkend="opt-networking.nat.externalInterface"/> = "eth0";
42+</programlisting>
43+ where <literal>eth0</literal> should be replaced with the desired external
44+ interface. Note that <literal>ve-+</literal> is a wildcard that matches all
45+ container interfaces.
46+ </para>
47+
48+ <para>
49+ If you are using Network Manager, you need to explicitly prevent it from
50+ managing container interfaces:
51+<programlisting>
52+networking.networkmanager.unmanaged = [ "interface-name:ve-*" ];
53+</programlisting>
54+ </para>
55+
56+ <para>
57+ You may need to restart your system for the changes to take effect.
58+ </para>
59+</section>
nixos/doc/manual/administration/containers.chapter.mddeleted−28
@@ -1,28 +0,0 @@
1−# Container Management {#ch-containers}
2−
3−NixOS allows you to easily run other NixOS instances as *containers*.
4−Containers are a light-weight approach to virtualisation that runs
5−software in the container at the same speed as in the host system. NixOS
6−containers share the Nix store of the host, making container creation
7−very efficient.
8−
9−::: {.warning}
10−Currently, NixOS containers are not perfectly isolated from the host
11−system. This means that a user with root access to the container can do
12−things that affect the host. So you should not give container root
13−access to untrusted users.
14−:::
15−
16−NixOS containers can be created in two ways: imperatively, using the
17−command `nixos-container`, and declaratively, by specifying them in your
18−`configuration.nix`. The declarative approach implies that containers
19−get upgraded along with your host system when you run `nixos-rebuild`,
20−which is often not what you want. By contrast, in the imperative
21−approach, containers are configured and updated independently from the
22−host system.
23−
24−```{=docbook}
25−<xi:include href="imperative-containers.section.xml" />
26−<xi:include href="declarative-containers.section.xml" />
27−<xi:include href="container-networking.section.xml" />
28−```
nixos/doc/manual/administration/containers.xmlnew file+34

This diff is too big to show here.

nixos/doc/manual/administration/control-groups.chapter.mddeleted−59

This diff is too big to show here.

nixos/doc/manual/administration/control-groups.xmlnew file+65

This diff is too big to show here.

nixos/doc/manual/administration/declarative-containers.section.mddeleted−48

This diff is too big to show here.

nixos/doc/manual/administration/declarative-containers.xmlnew file+60

This diff is too big to show here.

nixos/doc/manual/administration/imperative-containers.section.mddeleted−115

This diff is too big to show here.

nixos/doc/manual/administration/imperative-containers.xmlnew file+123

This diff is too big to show here.

nixos/doc/manual/administration/logging.chapter.mddeleted−38

This diff is too big to show here.

nixos/doc/manual/administration/logging.xmlnew file+43

This diff is too big to show here.

nixos/doc/manual/administration/maintenance-mode.section.mddeleted−11

This diff is too big to show here.

nixos/doc/manual/administration/maintenance-mode.xmlnew file+16

This diff is too big to show here.

nixos/doc/manual/administration/network-problems.section.mddeleted−21

This diff is too big to show here.

nixos/doc/manual/administration/network-problems.xmlnew file+27

This diff is too big to show here.

nixos/doc/manual/administration/rebooting.chapter.mddeleted−30

This diff is too big to show here.

nixos/doc/manual/administration/rebooting.xmlnew file+35

This diff is too big to show here.

nixos/doc/manual/administration/rollback.section.mddeleted−38

This diff is too big to show here.

nixos/doc/manual/administration/rollback.xmlnew file+41

This diff is too big to show here.

nixos/doc/manual/administration/running.xml+8−8

This diff is too big to show here.

nixos/doc/manual/administration/service-mgmt.chapter.mddeleted−120

This diff is too big to show here.

nixos/doc/manual/administration/service-mgmt.xmlnew file+140

This diff is too big to show here.

nixos/doc/manual/administration/store-corruption.section.mddeleted−28

This diff is too big to show here.

nixos/doc/manual/administration/store-corruption.xmlnew file+36

This diff is too big to show here.

nixos/doc/manual/administration/troubleshooting.chapter.mddeleted−12

This diff is too big to show here.

nixos/doc/manual/administration/troubleshooting.xmlnew file+16

This diff is too big to show here.

nixos/doc/manual/administration/user-sessions.chapter.mddeleted−43

This diff is too big to show here.

nixos/doc/manual/administration/user-sessions.xmlnew file+45

This diff is too big to show here.

nixos/doc/manual/configuration/ad-hoc-network-config.section.mddeleted−13

This diff is too big to show here.

nixos/doc/manual/configuration/ad-hoc-network-config.xmlnew file+20

This diff is too big to show here.

nixos/doc/manual/configuration/ad-hoc-packages.section.mddeleted−51

This diff is too big to show here.

nixos/doc/manual/configuration/ad-hoc-packages.xmlnew file+61

This diff is too big to show here.

nixos/doc/manual/configuration/adding-custom-packages.section.mddeleted−74

This diff is too big to show here.

nixos/doc/manual/configuration/adding-custom-packages.xmlnew file+73

This diff is too big to show here.

nixos/doc/manual/configuration/config-file.section.mddeleted−175

This diff is too big to show here.

nixos/doc/manual/configuration/config-file.xmlnew file+216

This diff is too big to show here.

nixos/doc/manual/configuration/config-syntax.chapter.mddeleted−19

This diff is too big to show here.

nixos/doc/manual/configuration/config-syntax.xmlnew file+25

This diff is too big to show here.

nixos/doc/manual/configuration/configuration.xml+13−13

This diff is too big to show here.

nixos/doc/manual/configuration/customizing-packages.section.mddeleted−74

This diff is too big to show here.

nixos/doc/manual/configuration/customizing-packages.xmlnew file+86

This diff is too big to show here.

nixos/doc/manual/configuration/declarative-packages.section.mddeleted−46

This diff is too big to show here.

nixos/doc/manual/configuration/declarative-packages.xmlnew file+54

This diff is too big to show here.

nixos/doc/manual/configuration/file-systems.chapter.mddeleted−42

This diff is too big to show here.

nixos/doc/manual/configuration/file-systems.xmlnew file+58

This diff is too big to show here.

nixos/doc/manual/configuration/firewall.section.mddeleted−32

This diff is too big to show here.

nixos/doc/manual/configuration/firewall.xmlnew file+37

This diff is too big to show here.

nixos/doc/manual/configuration/gpu-accel.chapter.mddeleted−204

This diff is too big to show here.

nixos/doc/manual/configuration/gpu-accel.xmlnew file+262

This diff is too big to show here.

nixos/doc/manual/configuration/ipv4-config.section.mddeleted−35

This diff is too big to show here.

nixos/doc/manual/configuration/ipv4-config.xmlnew file+43

This diff is too big to show here.

nixos/doc/manual/configuration/ipv6-config.section.mddeleted−42

This diff is too big to show here.

nixos/doc/manual/configuration/ipv6-config.xmlnew file+54

This diff is too big to show here.

nixos/doc/manual/configuration/kubernetes.chapter.mddeleted−104

This diff is too big to show here.

nixos/doc/manual/configuration/kubernetes.xmlnew file+112

This diff is too big to show here.

nixos/doc/manual/configuration/linux-kernel.chapter.mddeleted−140

This diff is too big to show here.

nixos/doc/manual/configuration/linux-kernel.xmlnew file+138

This diff is too big to show here.

nixos/doc/manual/configuration/luks-file-systems.section.mddeleted−77

This diff is too big to show here.

nixos/doc/manual/configuration/luks-file-systems.xmlnew file+78

This diff is too big to show here.

nixos/doc/manual/configuration/modularity.section.mddeleted−133

This diff is too big to show here.

nixos/doc/manual/configuration/modularity.xmlnew file+146

This diff is too big to show here.

nixos/doc/manual/configuration/network-manager.section.mddeleted−42

This diff is too big to show here.

nixos/doc/manual/configuration/network-manager.xmlnew file+48

This diff is too big to show here.

nixos/doc/manual/configuration/networking.chapter.mddeleted−16

This diff is too big to show here.

nixos/doc/manual/configuration/networking.xmlnew file+20

This diff is too big to show here.

nixos/doc/manual/configuration/package-mgmt.chapter.mddeleted−18

This diff is too big to show here.

nixos/doc/manual/configuration/package-mgmt.xmlnew file+31

This diff is too big to show here.

nixos/doc/manual/configuration/profiles.chapter.mddeleted−34

This diff is too big to show here.

nixos/doc/manual/configuration/profiles.xmlnew file+39

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/all-hardware.section.mddeleted−11

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/all-hardware.xmlnew file+21

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/base.section.mddeleted−7

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/base.xmlnew file+15

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/clone-config.section.mddeleted−11

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/clone-config.xmlnew file+21

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/demo.section.mddeleted−4

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/demo.xmlnew file+14

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/docker-container.section.mddeleted−7

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/docker-container.xmlnew file+16

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/graphical.section.mddeleted−10

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/graphical.xmlnew file+20

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/hardened.section.mddeleted−20

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/hardened.xmlnew file+32

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/headless.section.mddeleted−9

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/headless.xmlnew file+19

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/installation-device.section.mddeleted−24

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/installation-device.xmlnew file+36

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/minimal.section.mddeleted−9

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/minimal.xmlnew file+17

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/qemu-guest.section.mddeleted−7

This diff is too big to show here.

nixos/doc/manual/configuration/profiles/qemu-guest.xmlnew file+17

This diff is too big to show here.

nixos/doc/manual/configuration/renaming-interfaces.section.mddeleted−51

This diff is too big to show here.

nixos/doc/manual/configuration/renaming-interfaces.xmlnew file+67

This diff is too big to show here.

nixos/doc/manual/configuration/ssh.section.mddeleted−19

This diff is too big to show here.

nixos/doc/manual/configuration/ssh.xmlnew file+27

This diff is too big to show here.

nixos/doc/manual/configuration/sshfs-file-systems.section.md+1−1

This diff is too big to show here.

nixos/doc/manual/configuration/subversion.chapter.mddeleted−102

This diff is too big to show here.

nixos/doc/manual/configuration/subversion.xmlnew file+140

This diff is too big to show here.

nixos/doc/manual/configuration/summary.section.mddeleted−46

This diff is too big to show here.

nixos/doc/manual/configuration/summary.xmlnew file+227

This diff is too big to show here.

nixos/doc/manual/configuration/user-mgmt.chapter.mddeleted−92

This diff is too big to show here.

nixos/doc/manual/configuration/user-mgmt.xmlnew file+88

This diff is too big to show here.

nixos/doc/manual/configuration/wayland.chapter.mddeleted−27

This diff is too big to show here.

nixos/doc/manual/configuration/wayland.xmlnew file+33

This diff is too big to show here.

nixos/doc/manual/configuration/wireless.section.mddeleted−67

This diff is too big to show here.

nixos/doc/manual/configuration/wireless.xmlnew file+70

This diff is too big to show here.

nixos/doc/manual/configuration/x-windows.chapter.mddeleted−337

This diff is too big to show here.

nixos/doc/manual/configuration/x-windows.xmlnew file+355

This diff is too big to show here.

nixos/doc/manual/configuration/xfce.chapter.mddeleted−52

This diff is too big to show here.

nixos/doc/manual/configuration/xfce.xmlnew file+59

This diff is too big to show here.

nixos/doc/manual/default.nix+6−19

This diff is too big to show here.

nixos/doc/manual/development/activation-script.section.mddeleted−72

This diff is too big to show here.

nixos/doc/manual/development/building-nixos.chapter.mdnew file+18

This diff is too big to show here.

nixos/doc/manual/development/building-parts.chapter.mddeleted−74

This diff is too big to show here.

nixos/doc/manual/development/building-parts.xmlnew file+121

This diff is too big to show here.

nixos/doc/manual/development/development.xml+7−7

This diff is too big to show here.

nixos/doc/manual/development/freeform-modules.section.mddeleted−79

This diff is too big to show here.

nixos/doc/manual/development/freeform-modules.xmlnew file+68

This diff is too big to show here.

nixos/doc/manual/development/importing-modules.section.mddeleted−46

This diff is too big to show here.

nixos/doc/manual/development/importing-modules.xmlnew file+56

This diff is too big to show here.

nixos/doc/manual/development/linking-nixos-tests-to-packages.section.mddeleted−6

This diff is too big to show here.

nixos/doc/manual/development/meta-attributes.section.mddeleted−66

This diff is too big to show here.

nixos/doc/manual/development/meta-attributes.xmlnew file+63

This diff is too big to show here.

nixos/doc/manual/development/nixos-tests.chapter.mddeleted−13

This diff is too big to show here.

nixos/doc/manual/development/nixos-tests.xmlnew file+19

This diff is too big to show here.

nixos/doc/manual/development/option-declarations.section.mddeleted−221

This diff is too big to show here.

nixos/doc/manual/development/option-declarations.xmlnew file+199

This diff is too big to show here.

nixos/doc/manual/development/option-def.section.mddeleted−91

This diff is too big to show here.

nixos/doc/manual/development/option-def.xmlnew file+99

This diff is too big to show here.

nixos/doc/manual/development/option-types.section.mddeleted−583

This diff is too big to show here.

nixos/doc/manual/development/option-types.xmlnew file+914

This diff is too big to show here.

nixos/doc/manual/development/replace-modules.section.mddeleted−64

This diff is too big to show here.

nixos/doc/manual/development/replace-modules.xmlnew file+79

This diff is too big to show here.

nixos/doc/manual/development/running-nixos-tests-interactively.section.md+17−8

This diff is too big to show here.

nixos/doc/manual/development/running-nixos-tests.section.md+2−2

This diff is too big to show here.

nixos/doc/manual/development/settings-options.section.mddeleted−251

This diff is too big to show here.

nixos/doc/manual/development/settings-options.xmlnew file+226

This diff is too big to show here.

nixos/doc/manual/development/sources.chapter.mddeleted−77

This diff is too big to show here.

nixos/doc/manual/development/sources.xmlnew file+85

This diff is too big to show here.

nixos/doc/manual/development/testing-installer.chapter.mddeleted−18

This diff is too big to show here.

nixos/doc/manual/development/testing-installer.xmlnew file+22

This diff is too big to show here.

nixos/doc/manual/development/unit-handling.section.mddeleted−62

This diff is too big to show here.

nixos/doc/manual/development/what-happens-during-a-system-switch.chapter.mddeleted−53

This diff is too big to show here.

nixos/doc/manual/development/writing-documentation.chapter.mddeleted−93

This diff is too big to show here.

nixos/doc/manual/development/writing-documentation.xmlnew file+150

This diff is too big to show here.

nixos/doc/manual/development/writing-modules.chapter.mddeleted−208

This diff is too big to show here.

nixos/doc/manual/development/writing-modules.xmlnew file+191

This diff is too big to show here.

nixos/doc/manual/development/writing-nixos-tests.section.md+30−111

This diff is too big to show here.

nixos/doc/manual/from_md/administration/boot-problems.section.xml+1−1

This diff is too big to show here.

nixos/doc/manual/from_md/administration/cleaning-store.chapter.xmldeleted−72

This diff is too big to show here.

nixos/doc/manual/from_md/administration/container-networking.section.xmldeleted−54

This diff is too big to show here.

nixos/doc/manual/from_md/administration/containers.chapter.xmldeleted−31

This diff is too big to show here.

nixos/doc/manual/from_md/administration/control-groups.chapter.xmldeleted−67

This diff is too big to show here.

nixos/doc/manual/from_md/administration/declarative-containers.section.xmldeleted−60

This diff is too big to show here.

nixos/doc/manual/from_md/administration/imperative-containers.section.xmldeleted−132

This diff is too big to show here.

nixos/doc/manual/from_md/administration/logging.chapter.xmldeleted−45

This diff is too big to show here.

nixos/doc/manual/from_md/administration/maintenance-mode.section.xmldeleted−14

This diff is too big to show here.

nixos/doc/manual/from_md/administration/network-problems.section.xmldeleted−25

This diff is too big to show here.

nixos/doc/manual/from_md/administration/rebooting.chapter.xmldeleted−38

This diff is too big to show here.

nixos/doc/manual/from_md/administration/rollback.section.xmldeleted−42

This diff is too big to show here.

nixos/doc/manual/from_md/administration/service-mgmt.chapter.xmldeleted−141

This diff is too big to show here.

nixos/doc/manual/from_md/administration/store-corruption.section.xmldeleted−34

This diff is too big to show here.

nixos/doc/manual/from_md/administration/troubleshooting.chapter.xmldeleted−12

This diff is too big to show here.

nixos/doc/manual/from_md/administration/user-sessions.chapter.xmldeleted−46

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/ad-hoc-network-config.section.xmldeleted−16

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/ad-hoc-packages.section.xmldeleted−59

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/adding-custom-packages.section.xmldeleted−80

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/config-file.section.xmldeleted−231

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/config-syntax.chapter.xmldeleted−21

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/customizing-packages.section.xmldeleted−90

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/declarative-packages.section.xmldeleted−53

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/file-systems.chapter.xmldeleted−55

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/firewall.section.xmldeleted−39

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/gpu-accel.chapter.xmldeleted−239

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/ipv4-config.section.xmldeleted−43

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/ipv6-config.section.xmldeleted−47

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/kubernetes.chapter.xmldeleted−126

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/linux-kernel.chapter.xmldeleted−157

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/luks-file-systems.section.xmldeleted−84

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/modularity.section.xmldeleted−152

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/network-manager.section.xmldeleted−49

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/networking.chapter.xmldeleted−15

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/package-mgmt.chapter.xmldeleted−28

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles.chapter.xmldeleted−38

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/all-hardware.section.xmldeleted−15

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/base.section.xmldeleted−10

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/clone-config.section.xmldeleted−16

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/demo.section.xmldeleted−10

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/docker-container.section.xmldeleted−12

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/graphical.section.xmldeleted−14

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/hardened.section.xmldeleted−25

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/headless.section.xmldeleted−15

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/installation-device.section.xmldeleted−32

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/minimal.section.xmldeleted−13

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/profiles/qemu-guest.section.xmldeleted−11

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/renaming-interfaces.section.xmldeleted−62

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/ssh.section.xmldeleted−23

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/sshfs-file-systems.section.xml+2−2

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/subversion.chapter.xmldeleted−121

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/summary.section.xmldeleted−332

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/user-mgmt.chapter.xmldeleted−105

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/wayland.chapter.xmldeleted−31

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/wireless.section.xmldeleted−73

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/x-windows.chapter.xmldeleted−381

This diff is too big to show here.

nixos/doc/manual/from_md/configuration/xfce.chapter.xmldeleted−62

This diff is too big to show here.

nixos/doc/manual/from_md/development/activation-script.section.xmldeleted−150

This diff is too big to show here.

nixos/doc/manual/from_md/development/building-nixos.chapter.xmlnew file+33

This diff is too big to show here.

nixos/doc/manual/from_md/development/building-parts.chapter.xmldeleted−124

This diff is too big to show here.

nixos/doc/manual/from_md/development/freeform-modules.section.xmldeleted−87

This diff is too big to show here.

nixos/doc/manual/from_md/development/importing-modules.section.xmldeleted−47

This diff is too big to show here.

nixos/doc/manual/from_md/development/linking-nixos-tests-to-packages.section.xmldeleted−10

This diff is too big to show here.

nixos/doc/manual/from_md/development/meta-attributes.section.xmldeleted−95

This diff is too big to show here.

nixos/doc/manual/from_md/development/nixos-tests.chapter.xmldeleted−14

This diff is too big to show here.

nixos/doc/manual/from_md/development/option-declarations.section.xmldeleted−327

This diff is too big to show here.

nixos/doc/manual/from_md/development/option-def.section.xmldeleted−104

This diff is too big to show here.

nixos/doc/manual/from_md/development/option-types.section.xmldeleted−1038

This diff is too big to show here.

nixos/doc/manual/from_md/development/replace-modules.section.xmldeleted−70

This diff is too big to show here.

nixos/doc/manual/from_md/development/running-nixos-tests-interactively.section.xml+19−8

This diff is too big to show here.

nixos/doc/manual/from_md/development/running-nixos-tests.section.xml+2−2

This diff is too big to show here.

nixos/doc/manual/from_md/development/settings-options.section.xmldeleted−421

This diff is too big to show here.

nixos/doc/manual/from_md/development/sources.chapter.xmldeleted−90

This diff is too big to show here.

nixos/doc/manual/from_md/development/testing-installer.chapter.xmldeleted−22

This diff is too big to show here.

nixos/doc/manual/from_md/development/unit-handling.section.xmldeleted−131

This diff is too big to show here.

nixos/doc/manual/from_md/development/what-happens-during-a-system-switch.chapter.xmldeleted−122

This diff is too big to show here.

nixos/doc/manual/from_md/development/writing-documentation.chapter.xmldeleted−144

This diff is too big to show here.

nixos/doc/manual/from_md/development/writing-modules.chapter.xmldeleted−245

This diff is too big to show here.

nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml+392−521

This diff is too big to show here.

nixos/doc/manual/from_md/installation/building-nixos.chapter.xmldeleted−106

This diff is too big to show here.

nixos/doc/manual/from_md/installation/changing-config.chapter.xmldeleted−117

This diff is too big to show here.

nixos/doc/manual/from_md/installation/installing-behind-a-proxy.section.xmldeleted−41

This diff is too big to show here.

nixos/doc/manual/from_md/installation/installing-from-other-distro.section.xmldeleted−388

This diff is too big to show here.

nixos/doc/manual/from_md/installation/installing-pxe.section.xmldeleted−42

This diff is too big to show here.

nixos/doc/manual/from_md/installation/installing-usb.section.xmldeleted−35

This diff is too big to show here.

nixos/doc/manual/from_md/installation/installing-virtualbox-guest.section.xmldeleted−92

This diff is too big to show here.

nixos/doc/manual/from_md/installation/installing.chapter.xmldeleted−645

This diff is too big to show here.

nixos/doc/manual/from_md/installation/obtaining.chapter.xmldeleted−48

This diff is too big to show here.

nixos/doc/manual/from_md/installation/upgrading.chapter.xmldeleted−152

This diff is too big to show here.

nixos/doc/manual/from_md/release-notes/rl-1803.section.xml−8

This diff is too big to show here.

nixos/doc/manual/from_md/release-notes/rl-2009.section.xml+3−7

This diff is too big to show here.

nixos/doc/manual/from_md/release-notes/rl-2105.section.xml+1−1

This diff is too big to show here.

nixos/doc/manual/from_md/release-notes/rl-2111.section.xml+229−1798

This diff is too big to show here.

nixos/doc/manual/from_md/release-notes/rl-2205.section.xmldeleted−2470

This diff is too big to show here.

nixos/doc/manual/installation/building-nixos.chapter.mddeleted−77

This diff is too big to show here.

nixos/doc/manual/installation/changing-config.chapter.mddeleted−100

This diff is too big to show here.

nixos/doc/manual/installation/changing-config.xmlnew file+97

This diff is too big to show here.

nixos/doc/manual/installation/installation.xml+4−5

This diff is too big to show here.

nixos/doc/manual/installation/installing-behind-a-proxy.section.mddeleted−29

This diff is too big to show here.

nixos/doc/manual/installation/installing-behind-a-proxy.xmlnew file+48

This diff is too big to show here.

nixos/doc/manual/installation/installing-from-other-distro.section.mddeleted−279

This diff is too big to show here.

nixos/doc/manual/installation/installing-from-other-distro.xmlnew file+364

This diff is too big to show here.

nixos/doc/manual/installation/installing-pxe.section.mddeleted−32

This diff is too big to show here.

nixos/doc/manual/installation/installing-pxe.xmlnew file+50

This diff is too big to show here.

nixos/doc/manual/installation/installing-usb.section.mddeleted−31

This diff is too big to show here.

nixos/doc/manual/installation/installing-usb.xmlnew file+40

This diff is too big to show here.

nixos/doc/manual/installation/installing-virtualbox-guest.section.mddeleted−59

This diff is too big to show here.

nixos/doc/manual/installation/installing-virtualbox-guest.xmlnew file+103

This diff is too big to show here.

nixos/doc/manual/installation/installing.chapter.mddeleted−482

This diff is too big to show here.

nixos/doc/manual/installation/installing.xmlnew file+579

This diff is too big to show here.

nixos/doc/manual/installation/obtaining.chapter.mddeleted−26

This diff is too big to show here.

nixos/doc/manual/installation/obtaining.xmlnew file+54

This diff is too big to show here.

nixos/doc/manual/installation/upgrading.chapter.mddeleted−118

This diff is too big to show here.

nixos/doc/manual/installation/upgrading.xmlnew file+139

This diff is too big to show here.

nixos/doc/manual/man-nixos-install.xml+4−9

This diff is too big to show here.

nixos/doc/manual/man-nixos-rebuild.xml+7−45

This diff is too big to show here.

nixos/doc/manual/man-pages.xml+2−7

This diff is too big to show here.

nixos/doc/manual/md-to-db.sh+8−18

This diff is too big to show here.

nixos/doc/manual/release-notes/release-notes.xml−1

This diff is too big to show here.

nixos/doc/manual/release-notes/rl-1803.section.md−2

This diff is too big to show here.

nixos/doc/manual/release-notes/rl-2009.section.md+1−3

This diff is too big to show here.

nixos/doc/manual/release-notes/rl-2105.section.md+1−1

This diff is too big to show here.

nixos/doc/manual/release-notes/rl-2111.section.md+17−464

This diff is too big to show here.

nixos/doc/manual/release-notes/rl-2205.section.mddeleted−878

This diff is too big to show here.

nixos/lib/build-vms.nix+9−16

This diff is too big to show here.

nixos/lib/default.nixdeleted−33

This diff is too big to show here.

nixos/lib/eval-cacheable-options.nixdeleted−53

This diff is too big to show here.

nixos/lib/eval-config-minimal.nixdeleted−49

This diff is too big to show here.

nixos/lib/eval-config.nix+16−54

This diff is too big to show here.

nixos/lib/make-disk-image.nix+23−66

This diff is too big to show here.

nixos/lib/make-iso9660-image.sh−1

This diff is too big to show here.

nixos/lib/make-multi-disk-zfs-image.nixdeleted−333

This diff is too big to show here.

nixos/lib/make-options-doc/default.nix+103−78

This diff is too big to show here.

nixos/lib/make-options-doc/generateAsciiDoc.pydeleted−37

This diff is too big to show here.

nixos/lib/make-options-doc/generateCommonMark.pydeleted−27

This diff is too big to show here.

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+20−30

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.pydeleted−27

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/qemu-common.nixdeleted−32

This diff is too big to show here.

nixos/lib/qemu-flags.nixnew file+32

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+1017

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+188−92

This diff is too big to show here.

nixos/lib/utils.nix+4−54

This diff is too big to show here.

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

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-zfs.nixdeleted−12

This diff is too big to show here.

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

This diff is too big to show here.

nixos/maintainers/scripts/ec2/create-amis.sh+45−83

This diff is too big to show here.

nixos/maintainers/scripts/lxd/lxd-image-inner.nixdeleted−102

This diff is too big to show here.

nixos/maintainers/scripts/lxd/lxd-image.nixdeleted−34

This diff is too big to show here.

nixos/maintainers/scripts/lxd/nix.tpldeleted−9

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+10−28

This diff is too big to show here.

nixos/modules/config/fonts/fontconfig.nix+17−1

This diff is too big to show here.

nixos/modules/config/fonts/fontdir.nix+2−2

This diff is too big to show here.

nixos/modules/config/fonts/fonts.nix+21−46

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+1−7

This diff is too big to show here.

nixos/modules/config/krb5/default.nix+8−8

This diff is too big to show here.

nixos/modules/config/ldap.nix+1−1

This diff is too big to show here.

nixos/modules/config/malloc.nix+3−22

This diff is too big to show here.

nixos/modules/config/networking.nix+7−11

This diff is too big to show here.

nixos/modules/config/nsswitch.nix+6−9

This diff is too big to show here.

nixos/modules/config/power-management.nix+2−2

This diff is too big to show here.

nixos/modules/config/pulseaudio.nix+5−5

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/shells-environment.nix+5−3

This diff is too big to show here.

nixos/modules/config/swap.nix+7−21

This diff is too big to show here.

nixos/modules/config/sysctl.nix+1−1

This diff is too big to show here.

nixos/modules/config/system-environment.nix+36−34

This diff is too big to show here.

nixos/modules/config/system-path.nix+9−19

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/unix-odbc-drivers.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/config/users-groups.nix+27−64

This diff is too big to show here.

nixos/modules/config/xdg/mime.nix+2−64

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/config/xdg/portals/wlr.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/hardware/ckb-next.nix+1−1

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/device-tree.nix+5−5

This diff is too big to show here.

nixos/modules/hardware/digitalbitbox.nix+1−1

This diff is too big to show here.

nixos/modules/hardware/flirc.nixdeleted−12

This diff is too big to show here.

nixos/modules/hardware/gkraken.nixdeleted−18

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/default.nix → nixos/modules/hardware/onlykey.nixrenamed

The content is the same.

nixos/modules/hardware/onlykey.udevnew file+4

This diff is too big to show here.

nixos/modules/hardware/onlykey/onlykey.udevdeleted−18

This diff is too big to show here.

nixos/modules/hardware/opengl.nix+2−2

This diff is too big to show here.

nixos/modules/hardware/openrazer.nix+5−18

This diff is too big to show here.

nixos/modules/hardware/opentabletdriver.nix+1−1

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/printers.nix+11−6

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/sata.nix+1−1

This diff is too big to show here.

nixos/modules/hardware/sensor/iio.nix+1−1

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/nvidia.nix+23−58

This diff is too big to show here.

nixos/modules/hardware/video/uvcvideo/default.nix+1−1

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+1−4

This diff is too big to show here.

nixos/modules/i18n/input-method/fcitx5.nix+12−21

This diff is too big to show here.

nixos/modules/i18n/input-method/ibus.nix+2−5

This diff is too big to show here.

nixos/modules/i18n/input-method/kime.nix+2−4

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-base.nix−5

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+76−92

This diff is too big to show here.

nixos/modules/installer/cd-dvd/system-tarball-fuloong2f.nix+1−1

This diff is too big to show here.

nixos/modules/installer/cd-dvd/system-tarball-pc.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

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

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+6−8

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-raspberrypi.nix+1−1

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+5−5

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/installer/tools/nixos-build-vms/build-vms.nix+5−18

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+1−33

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-option/default.nixdeleted−1

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−28

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/crashdump.nix+1−1

This diff is too big to show here.

nixos/modules/misc/documentation.nix+53−129

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+54−67

This diff is too big to show here.

nixos/modules/misc/locate.nix+69−134

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+10−18

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+18−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+31−157

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/headless.nix+1−1

This diff is too big to show here.

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

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/atop.nix+4−11

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/programs/bash/bash-completion.nix+1−1

This diff is too big to show here.

nixos/modules/programs/bash/bash.nix+4−4

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.nixdeleted−27

This diff is too big to show here.

nixos/modules/programs/captive-browser.nix+19−45

This diff is too big to show here.

nixos/modules/programs/ccache.nix−2

This diff is too big to show here.

nixos/modules/programs/chromium.nix+2−13

This diff is too big to show here.

nixos/modules/programs/cnping.nixdeleted−21

This diff is too big to show here.

nixos/modules/programs/command-not-found/command-not-found.nix+6−6

This diff is too big to show here.

nixos/modules/programs/command-not-found/command-not-found.pl+12−37

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/digitalbitbox/default.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/programs/environment.nix+2−9

This diff is too big to show here.

nixos/modules/programs/evince.nix+4−13

This diff is too big to show here.

nixos/modules/programs/extra-container.nixdeleted−17

This diff is too big to show here.

nixos/modules/programs/feedbackd.nix−1

This diff is too big to show here.

nixos/modules/programs/file-roller.nix+4−13

This diff is too big to show here.

nixos/modules/programs/firejail.nix+8−15

This diff is too big to show here.

nixos/modules/programs/flexoptix-app.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/programs/git.nixdeleted−69

This diff is too big to show here.

nixos/modules/programs/gnupg.nix+1−4

This diff is too big to show here.

nixos/modules/programs/htop.nixdeleted−58

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

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/kbdlight.nix+1−6

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/kdeconnect.nix+2−2

This diff is too big to show here.

nixos/modules/programs/less.nix+6−9

This diff is too big to show here.

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

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/mosh.nix+1−1

This diff is too big to show here.

nixos/modules/programs/msmtp.nix−2

This diff is too big to show here.

nixos/modules/programs/mtr.nix+1−4

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/neovim.nix+28−29

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/noisetorch.nix+1−4

This diff is too big to show here.

nixos/modules/programs/npm.nix+2−3

This diff is too big to show here.

nixos/modules/programs/pantheon-tweaks.nixdeleted−19

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/plotinus.nix+1−1

This diff is too big to show here.

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

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/shadow.nix+8−15

This diff is too big to show here.

nixos/modules/programs/singularity.nix+1−6

This diff is too big to show here.

nixos/modules/programs/slock.nix+1−6

This diff is too big to show here.

nixos/modules/programs/spacefm.nix+6−6

This diff is too big to show here.

nixos/modules/programs/ssh.nix+18−72

This diff is too big to show here.

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

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+4−7

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/traceroute.nix+1−3

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/programs/udevil.nix+1−6

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/programs/weylus.nixdeleted−47

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/programs/wshowkeys.nix+1−6

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/programs/xss-lock.nix+1−2

This diff is too big to show here.

nixos/modules/programs/xwayland.nix+8−13

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/programs/zsh/oh-my-zsh.nix+1−1

This diff is too big to show here.

nixos/modules/programs/zsh/zsh-autoenv.nix+1−1

This diff is too big to show here.

nixos/modules/programs/zsh/zsh-autosuggestions.nix+11−20

This diff is too big to show here.

nixos/modules/programs/zsh/zsh-syntax-highlighting.nix+2−2

This diff is too big to show here.

nixos/modules/programs/zsh/zsh.nix+5−13

This diff is too big to show here.

nixos/modules/rename.nix+44−63

This diff is too big to show here.

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

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/apparmor/includes.nix+1−1

This diff is too big to show here.

nixos/modules/security/ca.nix+12−11

This diff is too big to show here.

nixos/modules/security/chromium-suid-sandbox.nix+1−6

This diff is too big to show here.

nixos/modules/security/dhparams.nix+3−5

This diff is too big to show here.

nixos/modules/security/doas.nix+5−8

This diff is too big to show here.

nixos/modules/security/duosec.nix+1−6

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/lock-kernel-modules.nix+9−19

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−435

This diff is too big to show here.

nixos/modules/security/pam_mount.nix+8−80

This diff is too big to show here.

nixos/modules/security/pam_usb.nix+2−12

This diff is too big to show here.

nixos/modules/security/polkit.nix+7−15

This diff is too big to show here.

nixos/modules/security/rtkit.nix+1−4

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/security/tpm2.nix+5−5

This diff is too big to show here.

nixos/modules/security/wrappers/default.nix+98−189

This diff is too big to show here.

nixos/modules/services/admin/meshcentral.nixdeleted−53

This diff is too big to show here.

nixos/modules/services/admin/oxidized.nix+2−2

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/amqp/activemq/default.nix+1−2

This diff is too big to show here.

nixos/modules/services/amqp/rabbitmq.nix+8−25

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/audio/hqplayerd.nixdeleted−142

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/jack.nix+3−3

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/liquidsoap.nix+3−3

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/audio/mpd.nix+44−24

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.nixdeleted−71

This diff is too big to show here.

nixos/modules/services/audio/networkaudiod.nixdeleted−19

This diff is too big to show here.

nixos/modules/services/audio/roon-bridge.nix+6−8

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/audio/snapserver.nix+23−31

This diff is too big to show here.

nixos/modules/services/audio/spotifyd.nix+1−26

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−1

This diff is too big to show here.

nixos/modules/services/backup/automysqlbackup.nix+2−3

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+23−77

This diff is too big to show here.

nixos/modules/services/backup/btrbk.nix+1−1

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/postgresql-backup.nix+9−38

This diff is too big to show here.

nixos/modules/services/backup/postgresql-wal-receiver.nix+5−5

This diff is too big to show here.

nixos/modules/services/backup/restic-rest-server.nix+1−5

This diff is too big to show here.

nixos/modules/services/backup/restic.nix+5−17

This diff is too big to show here.

nixos/modules/services/backup/sanoid.nix+108−127

This diff is too big to show here.

nixos/modules/services/backup/syncoid.nix+185−390

This diff is too big to show here.

nixos/modules/services/backup/tarsnap.nix+18−25

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/znapzend.nix+8−8

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/blockchain/ethereum/geth.nix+2−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+12−25

This diff is too big to show here.

nixos/modules/services/cluster/hadoop/default.nix+23−175

This diff is too big to show here.

nixos/modules/services/cluster/hadoop/hdfs.nix+44−175

This diff is too big to show here.

nixos/modules/services/cluster/hadoop/yarn.nix+29−155

This diff is too big to show here.

nixos/modules/services/cluster/k3s/default.nix+13−27

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/addon-manager.nix+3−7

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+15−50

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/apiserver.nix+8−11

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/default.nix+21−31

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/cluster/kubernetes/pki.nix+2−5

This diff is too big to show here.

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

This diff is too big to show here.

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

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/cluster/spark/default.nixdeleted−162

This diff is too big to show here.

nixos/modules/services/computing/boinc/client.nix+2−2

This diff is too big to show here.

nixos/modules/services/computing/foldingathome/client.nix+1−1

This diff is too big to show here.

nixos/modules/services/computing/slurm/slurm.nix+9−18

This diff is too big to show here.

nixos/modules/services/continuous-integration/buildbot/master.nix+8−11

This diff is too big to show here.

nixos/modules/services/continuous-integration/buildbot/worker.nix+4−6

This diff is too big to show here.

nixos/modules/services/continuous-integration/buildkite-agents.nix+3−4

This diff is too big to show here.

nixos/modules/services/continuous-integration/github-runner.nix+37−58

This diff is too big to show here.

nixos/modules/services/continuous-integration/gitlab-runner.nix+9−22

This diff is too big to show here.

nixos/modules/services/continuous-integration/gocd-agent/default.nix+2−12

This diff is too big to show here.

nixos/modules/services/continuous-integration/gocd-server/default.nix+2−17

This diff is too big to show here.

nixos/modules/services/continuous-integration/hail.nix+1−1

This diff is too big to show here.

nixos/modules/services/continuous-integration/hercules-ci-agent/common.nix+19−75

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+14−18

This diff is too big to show here.

nixos/modules/services/continuous-integration/jenkins/default.nix+4−4

This diff is too big to show here.

nixos/modules/services/continuous-integration/jenkins/job-builder.nix+2−2

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/aerospike.nix+1−1

This diff is too big to show here.

nixos/modules/services/databases/cassandra.nix+4−6

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+30−38

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/databases/hbase.nix+17−39

This diff is too big to show here.

nixos/modules/services/databases/influxdb.nix+4−4

This diff is too big to show here.

nixos/modules/services/databases/influxdb2.nixdeleted−66

This diff is too big to show here.

nixos/modules/services/databases/memcached.nix−2

This diff is too big to show here.

nixos/modules/services/databases/monetdb.nix+1−1

This diff is too big to show here.

nixos/modules/services/databases/mongodb.nix+2−4

This diff is too big to show here.

nixos/modules/services/databases/mysql.nix+201−191

This diff is too big to show here.

nixos/modules/services/databases/neo4j.nix+2−12

This diff is too big to show here.

nixos/modules/services/databases/openldap.nix+6−7

This diff is too big to show here.

nixos/modules/services/databases/opentsdb.nix+2−1

This diff is too big to show here.

nixos/modules/services/databases/pgmanage.nix+1−1

This diff is too big to show here.

nixos/modules/services/databases/postgresql.nix+10−13

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+222−275

This diff is too big to show here.

nixos/modules/services/databases/riak.nix+2−1

This diff is too big to show here.

nixos/modules/services/databases/victoriametrics.nix+1−9

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/bamf.nix+2−2

This diff is too big to show here.

nixos/modules/services/desktops/cpupower-gui.nixdeleted−56

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/geoclue2.nix+4−4

This diff is too big to show here.

nixos/modules/services/desktops/gnome/evolution-data-server.nix+1−1

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-keyring.nix+1−3

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/gsignond.nix+1−1

This diff is too big to show here.

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

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/media-session/alsa-monitor.conf.json → nixos/modules/services/desktops/pipewire/alsa-monitor.conf.jsonrenamed

The content is the same.

nixos/modules/services/desktops/pipewire/bluez-hardware.conf.jsonnew file+197

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/media-session/bluez-monitor.conf.json → nixos/modules/services/desktops/pipewire/bluez-monitor.conf.jsonrenamed

The content is the same.

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

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/daemon/client.conf.json → nixos/modules/services/desktops/pipewire/client.conf.jsonrenamed

The content is the same.

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.jsondeleted−100

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/daemon/jack.conf.json → nixos/modules/services/desktops/pipewire/jack.conf.jsonrenamed+1−11

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/media-session/media-session.conf.json → nixos/modules/services/desktops/pipewire/media-session.conf.jsonrenamed−1

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/pipewire-media-session.nix+23−29

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/pipewire-pulse.conf.jsonnew file+41

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/pipewire.nix+13−73

This diff is too big to show here.

nixos/modules/services/desktops/pipewire/media-session/v4l2-monitor.conf.json → nixos/modules/services/desktops/pipewire/v4l2-monitor.conf.jsonrenamed

The content is the same.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/development/blackfire.nix+9−4

This diff is too big to show here.

nixos/modules/services/development/blackfire.xml+1−2

This diff is too big to show here.

nixos/modules/services/development/distccd.nixdeleted−155

This diff is too big to show here.

nixos/modules/services/development/hoogle.nix+4−5

This diff is too big to show here.

nixos/modules/services/development/jupyter/default.nix+5−4

This diff is too big to show here.

nixos/modules/services/development/jupyter/kernel-options.nix+4−4

This diff is too big to show here.

nixos/modules/services/development/jupyterhub/default.nix+8−20

This diff is too big to show here.

nixos/modules/services/development/lorri.nix+2−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/display-managers/greetd.nix+4−9

This diff is too big to show here.

nixos/modules/services/editors/emacs.nix+1−1

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/editors/infinoted.nix+1−1

This diff is too big to show here.

nixos/modules/services/finance/odoo.nixdeleted−122

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/crossfire-server.nixdeleted−179

This diff is too big to show here.

nixos/modules/services/games/deliantra-server.nixdeleted−172

This diff is too big to show here.

nixos/modules/services/games/factorio.nix+5−14

This diff is too big to show here.

nixos/modules/services/games/minecraft-server.nix+6−29

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/acpid.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/hardware/bluetooth.nix+7−3

This diff is too big to show here.

nixos/modules/services/hardware/ddccontrol.nixdeleted−39

This diff is too big to show here.

nixos/modules/services/hardware/fancontrol.nix−1

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/hardware/fwupd.nix+1−2

This diff is too big to show here.

nixos/modules/services/hardware/interception-tools.nix−1

This diff is too big to show here.

nixos/modules/services/hardware/joycond.nixdeleted−36

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/hardware/power-profiles-daemon.nix−2

This diff is too big to show here.

nixos/modules/services/hardware/rasdaemon.nixdeleted−170

This diff is too big to show here.

nixos/modules/services/hardware/sane.nix+2−28

This diff is too big to show here.

nixos/modules/services/hardware/sane_extra_backends/brscan4.nix+4−4

This diff is too big to show here.

nixos/modules/services/hardware/sane_extra_backends/brscan4_etc_files.nix+2−1

This diff is too big to show here.

nixos/modules/services/hardware/sane_extra_backends/brscan5.nix+4−4

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+5−7

This diff is too big to show here.

nixos/modules/services/hardware/thermald.nix+2−4

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+2−2

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+4−2

This diff is too big to show here.

nixos/modules/services/hardware/upower.nix+8−7

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/hardware/vdr.nix+2−2

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/SystemdJournal2Gelf.nix−1

This diff is too big to show here.

nixos/modules/services/logging/awstats.nix+4−4

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/fluentd.nix+1−1

This diff is too big to show here.

nixos/modules/services/logging/graylog.nix+4−5

This diff is too big to show here.

nixos/modules/services/logging/journalbeat.nix+17−4

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/logcheck.nix+2−6

This diff is too big to show here.

nixos/modules/services/logging/logrotate.nix+33−267

This diff is too big to show here.

nixos/modules/services/logging/logstash.nix+9−23

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/logging/syslog-ng.nix+2−2

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/mail/dovecot.nix+48−19

This diff is too big to show here.

nixos/modules/services/mail/exim.nix+3−8

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/mail.nix+1−2

This diff is too big to show here.

nixos/modules/services/mail/mailman.nix+9−16

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/mail/offlineimap.nix+2−2

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/opensmtpd.nix+2−5

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/mail/postfixadmin.nixdeleted−199

This diff is too big to show here.

nixos/modules/services/mail/roundcube.nix+4−5

This diff is too big to show here.

nixos/modules/services/mail/rspamd.nix+11−9

This diff is too big to show here.

nixos/modules/services/mail/sympa.nix+4−4

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.nixdeleted−242

This diff is too big to show here.

nixos/modules/services/matrix/mjolnir.xmldeleted−134

This diff is too big to show here.

nixos/modules/services/matrix/pantalaimon-options.nixdeleted−70

This diff is too big to show here.

nixos/modules/services/matrix/pantalaimon.nixdeleted−70

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/ananicy.nixdeleted−107

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/apache-kafka.nix+3−5

This diff is too big to show here.

nixos/modules/services/misc/autofs.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+2−5

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/cgminer.nix+3−7

This diff is too big to show here.

nixos/modules/services/misc/clipcat.nixdeleted−31

This diff is too big to show here.

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

This diff is too big to show here.

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

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/dictd.nix+2−2

This diff is too big to show here.

nixos/modules/services/misc/disnix.nix+2−1

This diff is too big to show here.

nixos/modules/services/misc/docker-registry.nix−2

This diff is too big to show here.

nixos/modules/services/misc/dwm-status.nix+2−2

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+3−13

This diff is too big to show here.

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

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/felix.nix+1−1

This diff is too big to show here.

nixos/modules/services/misc/freeswitch.nix+5−4

This diff is too big to show here.

nixos/modules/services/misc/gammu-smsd.nix+2−2

This diff is too big to show here.

nixos/modules/services/misc/gitea.nix+35−51

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/gitlab.nix+34−95

This diff is too big to show here.

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

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/gpsd.nix−1

This diff is too big to show here.

nixos/modules/services/misc/greenclip.nix+1−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+400

This diff is too big to show here.

nixos/modules/services/misc/ihaskell.nix+3−4

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/jackett.nix+1−1

This diff is too big to show here.

nixos/modules/services/misc/jellyfin.nix+4−6

This diff is too big to show here.

nixos/modules/services/misc/klipper.nix+12−70

This diff is too big to show here.

nixos/modules/services/misc/libreddit.nixdeleted−66

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/matrix-appservice-discord.nix+2−7

This diff is too big to show here.

nixos/modules/services/misc/matrix-appservice-irc.nix+1−4

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+777

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-facebook.nixdeleted−195

This diff is too big to show here.

nixos/modules/services/misc/mautrix-telegram.nix+3−6

This diff is too big to show here.

nixos/modules/services/misc/mbpfan.nix+61−59

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/moonraker.nixdeleted−178

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.nixdeleted−122

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/nitter.nixdeleted−358

This diff is too big to show here.

nixos/modules/services/misc/nix-daemon.nix+283−509

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+2−10

This diff is too big to show here.

nixos/modules/services/misc/nzbget.nix+18−36

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/octoprint.nix+2−5

This diff is too big to show here.

nixos/modules/services/misc/owncast.nixdeleted−98

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.nix+66−203

This diff is too big to show here.

nixos/modules/services/misc/plex.nix+14−43

This diff is too big to show here.

nixos/modules/services/misc/prowlarr.nixdeleted−41

This diff is too big to show here.

nixos/modules/services/misc/redmine.nix+8−9

This diff is too big to show here.

nixos/modules/services/misc/ripple-data-api.nix+1−3

This diff is too big to show here.

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

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/safeeyes.nix−4

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/signald.nixdeleted−105

This diff is too big to show here.

nixos/modules/services/misc/snapper.nix+19−42

This diff is too big to show here.

nixos/modules/services/misc/sourcehut/builds.nix+5−7

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+3−6

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/ssm-agent.nix+1−1

This diff is too big to show here.

nixos/modules/services/misc/subsonic.nix+4−8

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/tautulli.nix+1−1

This diff is too big to show here.

nixos/modules/services/misc/tp-auto-kbbl.nixdeleted−58

This diff is too big to show here.

nixos/modules/services/misc/uhub.nix+153−85

This diff is too big to show here.

nixos/modules/services/misc/weechat.nix+5−9

This diff is too big to show here.

nixos/modules/services/misc/xmr-stak.nix+1−1

This diff is too big to show here.

nixos/modules/services/misc/xmrig.nixdeleted−76

This diff is too big to show here.

nixos/modules/services/home-automation/zigbee2mqtt.nix → nixos/modules/services/misc/zigbee2mqtt.nixrenamed+9−6

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/misc/zookeeper.nix+3−12

This diff is too big to show here.

nixos/modules/services/monitoring/alerta.nix+4

This diff is too big to show here.

nixos/modules/services/monitoring/arbtt.nix+2−1

This diff is too big to show here.

nixos/modules/services/monitoring/bosun.nix+2−1

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+28−56

This diff is too big to show here.

nixos/modules/services/monitoring/datadog-agent.nix+7−9

This diff is too big to show here.

nixos/modules/services/monitoring/grafana-reporter.nix+2−3

This diff is too big to show here.

nixos/modules/services/monitoring/grafana.nix+3−39

This diff is too big to show here.

nixos/modules/services/monitoring/graphite.nix+4−16

This diff is too big to show here.

nixos/modules/services/monitoring/heapster.nix+2−4

This diff is too big to show here.

nixos/modules/services/monitoring/incron.nix+2−7

This diff is too big to show here.

nixos/modules/services/monitoring/kapacitor.nix+4−1

This diff is too big to show here.

nixos/modules/services/monitoring/loki.nix+2−2

This diff is too big to show here.

nixos/modules/services/monitoring/mackerel-agent.nix+1

This diff is too big to show here.

nixos/modules/services/monitoring/metricbeat.nix+4−3

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/munin.nix+5−7

This diff is too big to show here.

nixos/modules/services/monitoring/nagios.nix+6−7

This diff is too big to show here.

nixos/modules/services/monitoring/netdata.nix+42−82

This diff is too big to show here.

nixos/modules/services/monitoring/parsedmarc.mddeleted−113

This diff is too big to show here.

nixos/modules/services/monitoring/parsedmarc.nixdeleted−542

This diff is too big to show here.

nixos/modules/services/monitoring/parsedmarc.xmldeleted−125

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/alertmanager.nix+1−1

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/default.nix+384−1260

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters.nix+4−32

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−5

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/buildkite-agent.nixdeleted−64

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/dovecot.nix−4

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/fastly.nixdeleted−41

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/influxdb.nixdeleted−34

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/modemmanager.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/node.nix+2−11

This diff is too big to show here.

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

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/postgres.nix−4

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/process.nix+8−6

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/rspamd.nix+2−2

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/rtl_433.nix−5

This diff is too big to show here.

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

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/smokeping.nix−1

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/exporters/snmp.nix+9−7

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

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/prometheus/exporters/wireguard.nix−5

This diff is too big to show here.

nixos/modules/services/monitoring/prometheus/pushgateway.nix+1−1

This diff is too big to show here.

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

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/teamviewer.nix+3−6

This diff is too big to show here.

nixos/modules/services/monitoring/telegraf.nix+6−9

This diff is too big to show here.

nixos/modules/services/monitoring/thanos.nix+5−8

This diff is too big to show here.

nixos/modules/services/monitoring/tuptime.nix−1

This diff is too big to show here.

nixos/modules/services/monitoring/unifi-poller.nix+4−80

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-agent.nix+5−5

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/monitoring/zabbix-server.nix+6−17

This diff is too big to show here.

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

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+4−1

This diff is too big to show here.

nixos/modules/services/network-filesystems/ipfs.nix+59−97

This diff is too big to show here.

nixos/modules/services/network-filesystems/litestream/default.nixdeleted−100

This diff is too big to show here.

nixos/modules/services/network-filesystems/litestream/litestream.xmldeleted−65

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/client.nix+8−7

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/network-filesystems/orangefs/client.nix+1

This diff is too big to show here.

nixos/modules/services/network-filesystems/orangefs/server.nix+9−9

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+6−17

This diff is too big to show here.

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

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/network-filesystems/xtreemfs.nix+2−2

This diff is too big to show here.

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

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/antennas.nixdeleted−80

This diff is too big to show here.

nixos/modules/services/networking/asterisk.nix+45−13

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/avahi-daemon.nix+5−5

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/bind.nix+8−38

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/bitcoind.nix+2−2

This diff is too big to show here.

nixos/modules/services/networking/bitlbee.nix+16−8

This diff is too big to show here.

nixos/modules/services/networking/blockbook-frontend.nix+9−6

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/cjdns.nix+3−3

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+4−6

This diff is too big to show here.

nixos/modules/services/networking/consul.nix+10−40

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/corerad.nix+4−4

This diff is too big to show here.

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

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+24−54

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+50−49

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/doh-proxy-rust.nix+1−1

This diff is too big to show here.

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

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/epmd.nix+3−17

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/ferm.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+9−8

This diff is too big to show here.

nixos/modules/services/networking/flannel.nix+2−5

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/ghostunnel.nix+2−2

This diff is too big to show here.

nixos/modules/services/networking/git-daemon.nix−1

This diff is too big to show here.

nixos/modules/services/networking/globalprotect-vpn.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/gnunet.nix+11−15

This diff is too big to show here.

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

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/hans.nix+1−1

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+13−11

This diff is too big to show here.

nixos/modules/services/networking/i2pd.nix+12−19

This diff is too big to show here.

nixos/modules/services/networking/icecream/daemon.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/icecream/scheduler.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/iodine.nix+1−2

This diff is too big to show here.

nixos/modules/services/networking/ircd-hybrid/default.nix+2−2

This diff is too big to show here.

nixos/modules/services/networking/iscsi/initiator.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/iscsi/root-initiator.nix−9

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/jibri/default.nixdeleted−417

This diff is too big to show here.

nixos/modules/services/networking/jibri/logging.properties-journaldeleted−32

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/jitsi-videobridge.nix+3−5

This diff is too big to show here.

nixos/modules/services/networking/kea.nixdeleted−449

This diff is too big to show here.

nixos/modules/services/networking/keepalived/vrrp-instance-options.nix+3−1

This diff is too big to show here.

nixos/modules/services/networking/keepalived/vrrp-script-options.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/kippo.nixnew file+117

This diff is too big to show here.

nixos/modules/services/networking/knot.nix+8−43

This diff is too big to show here.

nixos/modules/services/networking/kresd.nix+6−7

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/lxd-image-server.nixdeleted−133

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/minidlna.nix+1−1

This diff is too big to show here.

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

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/morty.nix+5−4

This diff is too big to show here.

nixos/modules/services/networking/mosquitto.mddeleted−102

This diff is too big to show here.

nixos/modules/services/networking/mosquitto.nix+175−541

This diff is too big to show here.

nixos/modules/services/networking/mosquitto.xmldeleted−147

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/mullvad-vpn.nix+1−5

This diff is too big to show here.

nixos/modules/services/networking/multipath.nixdeleted−557

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/nats.nixdeleted−158

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+3−6

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/nebula.nix+8−6

This diff is too big to show here.

nixos/modules/services/networking/networkmanager.nix+61−86

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/ngircd.nix+2−5

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/nixops-dns.nix+1

This diff is too big to show here.

nixos/modules/services/networking/nntp-proxy.nix+18−18

This diff is too big to show here.

nixos/modules/services/networking/nomad.nix+7−20

This diff is too big to show here.

nixos/modules/services/networking/nsd.nix+16−11

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+12−22

This diff is too big to show here.

nixos/modules/services/networking/ntp/ntpd.nix+7−8

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/onedrive.nix+2−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/openvpn.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/pdns-recursor.nix+8−13

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/pleroma.xml+121−177

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/pppd.nix+5−23

This diff is too big to show here.

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

This diff is too big to show here.

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

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+3−6

This diff is too big to show here.

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

This diff is too big to show here.

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

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+5−9

This diff is too big to show here.

nixos/modules/services/networking/radvd.nix+1−4

This diff is too big to show here.

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

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.nixdeleted−287

This diff is too big to show here.

nixos/modules/services/networking/searx.nix+4−3

This diff is too big to show here.

nixos/modules/services/networking/shadowsocks.nix+6−4

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/shorewall.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/smartdns.nix+1−2

This diff is too big to show here.

nixos/modules/services/networking/smokeping.nix+21−61

This diff is too big to show here.

nixos/modules/services/networking/sniproxy.nix+17−6

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/softether.nix+1−1

This diff is too big to show here.

nixos/modules/services/networking/soju.nixdeleted−114

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/spiped.nix+1−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+16−15

This diff is too big to show here.

nixos/modules/services/networking/strongswan-swanctl/module.nix+1−1

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/strongswan.nix+2−2

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−3

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/supybot.nix+3−4

This diff is too big to show here.

nixos/modules/services/networking/syncplay.nix+3−19

This diff is too big to show here.

nixos/modules/services/networking/syncthing.nix+308−372

This diff is too big to show here.

nixos/modules/services/networking/tailscale.nix+2−10

This diff is too big to show here.

nixos/modules/services/networking/teamspeak3.nix+2−20

This diff is too big to show here.

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

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+8−39

This diff is too big to show here.

nixos/modules/services/networking/tinc.nix+8−11

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/tox-bootstrapd.nix+13−8

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/toxvpn.nix+2−4

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/ucarp.nix+5−5

This diff is too big to show here.

nixos/modules/services/networking/unbound.nix+3−13

This diff is too big to show here.

nixos/modules/services/networking/unifi.nix+60−80

This diff is too big to show here.

nixos/modules/services/networking/v2ray.nix+7−15

This diff is too big to show here.

nixos/modules/services/networking/vsftpd.nix+2−5

This diff is too big to show here.

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

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/websockify.nix+1−1

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+13−12

This diff is too big to show here.

nixos/modules/services/networking/wicd.nixnew file+40

This diff is too big to show here.

nixos/modules/services/networking/wireguard.nix+7−7

This diff is too big to show here.

nixos/modules/services/networking/wpa_supplicant.nix+102−343

This diff is too big to show here.

nixos/modules/services/networking/x2goserver.nix+7−10

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/networking/xrdp.nix+3−9

This diff is too big to show here.

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

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+7−5

This diff is too big to show here.

nixos/modules/services/networking/zerotierone.nix+2−1

This diff is too big to show here.

nixos/modules/services/networking/znc/default.nix+3−3

This diff is too big to show here.

nixos/modules/services/networking/znc/options.nix+3−3

This diff is too big to show here.

nixos/modules/services/printing/cupsd.nix+1−1

This diff is too big to show here.

nixos/modules/services/scheduling/atd.nix+1−3

This diff is too big to show here.

nixos/modules/services/scheduling/cron.nix+2−7

This diff is too big to show here.

nixos/modules/services/scheduling/fcron.nix−3

This diff is too big to show here.

nixos/modules/services/search/elasticsearch.nix+12−43

This diff is too big to show here.

nixos/modules/services/search/hound.nix+11−13

This diff is too big to show here.

nixos/modules/services/search/kibana.nix+4−9

This diff is too big to show here.

nixos/modules/services/search/meilisearch.mddeleted−39

This diff is too big to show here.

nixos/modules/services/search/meilisearch.nixdeleted−132

This diff is too big to show here.

nixos/modules/services/search/meilisearch.xmldeleted−85

This diff is too big to show here.

nixos/modules/services/search/solr.nix+1−1

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/certmgr.nix+2−2

This diff is too big to show here.

nixos/modules/services/security/cfssl.nix+43−56

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/fail2ban.nix+4−6

This diff is too big to show here.

nixos/modules/services/security/fprintd.nix+2−2

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/haka.nix+1−1

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/hockeypuck.nixdeleted−106

This diff is too big to show here.

nixos/modules/services/security/nginx-sso.nix+2−2

This diff is too big to show here.

nixos/modules/services/security/oauth2_proxy.nix+5−10

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.nixdeleted−125

This diff is too big to show here.

nixos/modules/services/security/physlock.nix+4−6

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/security/shibboleth-sp.nix+1−1

This diff is too big to show here.

nixos/modules/services/security/sks.nix+2−2

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+1−13

This diff is too big to show here.

nixos/modules/services/security/tor.nix+7−28

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/usbguard.nix+1−1

This diff is too big to show here.

nixos/modules/services/security/vault.nix+2−8

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/security/yubikey-agent.nix+2−8

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−134

This diff is too big to show here.

nixos/modules/services/system/kerberos/heimdal.nix+1−1

This diff is too big to show here.

nixos/modules/services/system/localtime.nix−2

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/saslauthd.nix+1−1

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/system/uptimed.nix+3−7

This diff is too big to show here.

nixos/modules/services/torrent/deluge.nix+2−9

This diff is too big to show here.

nixos/modules/services/torrent/flexget.nix+1−1

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/torrent/opentracker.nix+1−1

This diff is too big to show here.

nixos/modules/services/torrent/peerflix.nix+2−8

This diff is too big to show here.

nixos/modules/services/torrent/rtorrent.nix+2−4

This diff is too big to show here.

nixos/modules/services/torrent/transmission.nix+135−225

This diff is too big to show here.

nixos/modules/services/ttys/getty.nix+14−20

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+153−192

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+5−5

This diff is too big to show here.

nixos/modules/services/video/replay-sorcery.nixdeleted−72

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.nixdeleted−271

This diff is too big to show here.

nixos/modules/services/wayland/cage.nix+2−7

This diff is too big to show here.

nixos/modules/services/web-apps/atlassian/confluence.nix+2−2

This diff is too big to show here.

nixos/modules/services/web-apps/atlassian/crowd.nix+2−2

This diff is too big to show here.

nixos/modules/services/web-apps/atlassian/jira.nix+2−3

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+73−154

This diff is too big to show here.

nixos/modules/services/web-apps/code-server.nixdeleted−139

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-apps/dex.nixdeleted−118

This diff is too big to show here.

nixos/modules/services/web-apps/discourse.nix+41−65

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-apps/dokuwiki.nix+274−325

This diff is too big to show here.

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

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/fluidd.nixdeleted−66

This diff is too big to show here.

nixos/modules/services/web-apps/galene.nix+2−36

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-apps/ihatemoney/default.nix+2−17

This diff is too big to show here.

nixos/modules/services/web-apps/invidious.nixdeleted−264

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/isso.nixdeleted−69

This diff is too big to show here.

nixos/modules/services/web-apps/jirafeau.nix+6−10

This diff is too big to show here.

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

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+599−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/lemmy.mddeleted−34

This diff is too big to show here.

nixos/modules/services/web-apps/lemmy.nixdeleted−236

This diff is too big to show here.

nixos/modules/services/web-apps/lemmy.xmldeleted−56

This diff is too big to show here.

nixos/modules/services/web-apps/limesurvey.nix+5−5

This diff is too big to show here.

nixos/modules/services/web-apps/mastodon.nix+11−50

This diff is too big to show here.

nixos/modules/services/web-apps/matomo.nix+17−36

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/mediawiki.nix+5−6

This diff is too big to show here.

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

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+7−7

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+101−376

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-apps/nexus.nix−22

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/node-red.nixdeleted−149

This diff is too big to show here.

nixos/modules/services/web-apps/openwebrx.nixdeleted−34

This diff is too big to show here.

nixos/modules/services/web-apps/peertube.nixdeleted−475

This diff is too big to show here.

nixos/modules/services/web-apps/pgpkeyserver-lite.nix+2−5

This diff is too big to show here.

nixos/modules/services/web-apps/pict-rs.mddeleted−88

This diff is too big to show here.

nixos/modules/services/web-apps/pict-rs.nixdeleted−50

This diff is too big to show here.

nixos/modules/services/web-apps/pict-rs.xmldeleted−162

This diff is too big to show here.

nixos/modules/services/web-apps/plantuml-server.nix+4−21

This diff is too big to show here.

nixos/modules/services/web-apps/plausible.nix+35−54

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+4−1

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-apps/selfoss.nix+1

This diff is too big to show here.

nixos/modules/services/web-apps/shiori.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+87−96

This diff is too big to show here.

nixos/modules/services/web-apps/vikunja.nix+3−3

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-apps/wordpress.nix+60−172

This diff is too big to show here.

nixos/modules/services/web-apps/youtrack.nix+2−3

This diff is too big to show here.

nixos/modules/services/web-apps/zabbix.nix+5−12

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+29−45

This diff is too big to show here.

nixos/modules/services/web-servers/apache-httpd/vhost-options.nix+6−26

This diff is too big to show here.

nixos/modules/services/web-servers/caddy.nixnew file+171

This diff is too big to show here.

nixos/modules/services/web-servers/caddy/default.nixdeleted−339

This diff is too big to show here.

nixos/modules/services/web-servers/caddy/vhost-options.nixdeleted−79

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/cgit.nix+5−7

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/lighttpd/default.nix+1−13

This diff is too big to show here.

nixos/modules/services/web-servers/minio.nix+3−9

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-servers/nginx/default.nix+31−110

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+2−2

This diff is too big to show here.

nixos/modules/services/web-servers/nginx/vhost-options.nix+9−49

This diff is too big to show here.

nixos/modules/services/web-servers/phpfpm/default.nix+5−5

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+5−6

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-servers/trafficserver.nixnew file+318

This diff is too big to show here.

nixos/modules/services/web-servers/trafficserver/default.nixdeleted−310

This diff is too big to show here.

nixos/modules/services/web-servers/trafficserver/ip_allow.jsondeleted−36

This diff is too big to show here.

nixos/modules/services/web-servers/trafficserver/logging.jsondeleted−37

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-servers/unit/default.nix+2−2

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/web-servers/varnish/default.nix+7−9

This diff is too big to show here.

nixos/modules/services/web-servers/zope2.nix+2−6

This diff is too big to show here.

nixos/modules/services/x11/clight.nix−8

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/cde.nix+3−4

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/cinnamon.nix+7−14

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+3−24

This diff is too big to show here.

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

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/kodi.nix+2−2

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/lxqt.nix+3−12

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/mate.nix+38−10

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+22−37

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/plasma5.nix+130−330

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/surf-display.nix+1−2

This diff is too big to show here.

nixos/modules/services/x11/desktop-managers/xfce.nix+3−10

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/x11/display-managers/account-service-util.nix+1−1

This diff is too big to show here.

nixos/modules/services/x11/display-managers/default.nix+12−16

This diff is too big to show here.

nixos/modules/services/x11/display-managers/gdm.nix+56−44

This diff is too big to show here.

nixos/modules/services/x11/display-managers/lightdm-greeters/enso-os.nix+3−3

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix+2−2

This diff is too big to show here.

nixos/modules/services/x11/display-managers/lightdm.nix+6−8

This diff is too big to show here.

nixos/modules/services/x11/display-managers/sddm.nix+9−10

This diff is too big to show here.

nixos/modules/services/x11/display-managers/set-session.py−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.nixdeleted−34

This diff is too big to show here.

nixos/modules/services/x11/extra-layouts.nix+48−9

This diff is too big to show here.

nixos/modules/services/x11/hardware/libinput.nix+4−20

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/imwheel.nix+9−11

This diff is too big to show here.

nixos/modules/services/x11/picom.nix+3−13

This diff is too big to show here.

nixos/modules/services/x11/redshift.nix+1−1

This diff is too big to show here.

nixos/modules/services/x11/touchegg.nixdeleted−38

This diff is too big to show here.

nixos/modules/services/x11/unclutter-xfixes.nix+1−1

This diff is too big to show here.

nixos/modules/services/x11/unclutter.nix+1−1

This diff is too big to show here.

nixos/modules/services/x11/urxvtd.nix+1−1

This diff is too big to show here.

nixos/modules/services/x11/window-managers/awesome.nix+1−1

This diff is too big to show here.

nixos/modules/services/x11/window-managers/bspwm.nix+6−6

This diff is too big to show here.

nixos/modules/services/x11/window-managers/clfswm.nix+3−13

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/services/x11/window-managers/exwm.nix+3−4

This diff is too big to show here.

nixos/modules/services/x11/window-managers/herbstluftwm.nix+1−1

This diff is too big to show here.

nixos/modules/services/x11/window-managers/i3.nix+3−3

This diff is too big to show here.

nixos/modules/services/x11/window-managers/mlvwm.nixdeleted−41

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/wmderland.nix+1−1

This diff is too big to show here.

nixos/modules/services/x11/window-managers/xmonad.nix+15−51

This diff is too big to show here.

nixos/modules/services/x11/xautolock.nix+3−4

This diff is too big to show here.

nixos/modules/services/x11/xserver.nix+17−44

This diff is too big to show here.

nixos/modules/system/activation/activation-script.nix+46−77

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/system/activation/top-level.nix+35−100

This diff is too big to show here.

nixos/modules/system/boot/binfmt.nix+10−52

This diff is too big to show here.

nixos/modules/system/boot/initrd-openvpn.nix+1−1

This diff is too big to show here.

nixos/modules/system/boot/initrd-ssh.nix+1−1

This diff is too big to show here.

nixos/modules/system/boot/kernel.nix+10−13

This diff is too big to show here.

nixos/modules/system/boot/kernel_config.nix+1−1

This diff is too big to show here.

nixos/modules/system/boot/kexec.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+7−36

This diff is too big to show here.

nixos/modules/system/boot/loader/grub/install-grub.pl+86−115

This diff is too big to show here.

nixos/modules/system/boot/loader/grub/ipxe.nix+1−1

This diff is too big to show here.

nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py+60−102

This diff is too big to show here.

nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix+3−152

This diff is too big to show here.

nixos/modules/system/boot/luksroot.nix+9−75

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+14−328

This diff is too big to show here.

nixos/modules/system/boot/plymouth.nix+2−9

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/system/boot/stage-1.nix+23−92

This diff is too big to show here.

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

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+673−87

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+2−20

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+21−60

This diff is too big to show here.

nixos/modules/system/etc/make-etc.shnew file+45

This diff is too big to show here.

nixos/modules/system/etc/setup-etc.pl−6

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/encrypted-devices.nix+1−1

This diff is too big to show here.

nixos/modules/tasks/filesystems.nix+14−50

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/ecryptfs.nix+2−12

This diff is too big to show here.

nixos/modules/tasks/filesystems/exfat.nix+3−5

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/nfs.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+7−85

This diff is too big to show here.

nixos/modules/tasks/lvm.nix+14−73

This diff is too big to show here.

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

This diff is too big to show here.

nixos/modules/tasks/network-interfaces-systemd.nix+5−115

This diff is too big to show here.

nixos/modules/tasks/network-interfaces.nix+34−251

This diff is too big to show here.

nixos/modules/tasks/snapraid.nixdeleted−230

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+32−32

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+10−33

This diff is too big to show here.

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

This diff is too big to show here.

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

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+2−7

This diff is too big to show here.

nixos/modules/virtualisation/containers.nix+4−4

This diff is too big to show here.

nixos/modules/virtualisation/cri-o.nix+33−52

This diff is too big to show here.

nixos/modules/virtualisation/digital-ocean-init.nix+1−1

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+8−32

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/ecs-agent.nix+1−1

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/google-compute-image.nix+1−10

This diff is too big to show here.

nixos/modules/virtualisation/hyperv-guest.nix+1−1

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+67−166

This diff is too big to show here.

nixos/modules/virtualisation/lxc-container.nix+13−161

This diff is too big to show here.

nixos/modules/virtualisation/lxd.nix+5−5

This diff is too big to show here.

nixos/modules/virtualisation/nixos-containers.nix+16−31

This diff is too big to show here.

nixos/modules/virtualisation/oci-containers.nix+17−15

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+54−9

This diff is too big to show here.

nixos/modules/virtualisation/parallels-guest.nix+2−1

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-image.nixdeleted−169

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-guest-agent.nix+1−2

This diff is too big to show here.

nixos/modules/virtualisation/qemu-vm.nix+89−366

This diff is too big to show here.

nixos/modules/virtualisation/railcar.nix+4−3

This diff is too big to show here.

nixos/modules/virtualisation/spice-usb-redirection.nix+2−4

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/virtualbox-host.nix+2−10

This diff is too big to show here.

nixos/modules/virtualisation/virtualbox-image.nix−8

This diff is too big to show here.

nixos/modules/virtualisation/vmware-guest.nix+1−27

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.nixdeleted−75

This diff is too big to show here.

nixos/modules/virtualisation/xen-dom0.nix+5−4

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−47

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+5−2

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+37−177

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/ammonite.nixnew file+20

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+16−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/awscli.nixnew file+17

This diff is too big to show here.

nixos/tests/bat.nixnew file+12

This diff is too big to show here.

nixos/tests/bazarr.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/bittorrent.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+18−61

This diff is too big to show here.

nixos/tests/borgbackup.nix+1−34

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+40−56

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/calibre-web.nix+10

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+76−70

This diff is too big to show here.

nixos/tests/cifs-utils.nixnew file+12

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.nixdeleted−75

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/ec2.nix−1

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+3−2

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+3−2

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+12−11

This diff is too big to show here.

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

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+3−2

This diff is too big to show here.

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

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/croc.nix+1−1

This diff is too big to show here.

nixos/tests/cryptpad.nixdeleted−18

This diff is too big to show here.

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

This diff is too big to show here.

nixos/tests/deluge.nix+57−11

This diff is too big to show here.

nixos/tests/dex-oidc.nixdeleted−78

This diff is too big to show here.

nixos/tests/disable-installer-tools.nixdeleted−29

This diff is too big to show here.

nixos/tests/discourse.nix+2−4

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−16

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+6−47

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/dokuwiki.nix+25−60

This diff is too big to show here.

nixos/tests/domination.nixdeleted−26

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/ec2.nix−5

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+45−98

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+5−4

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+2−2

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+10−8

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/fluidd.nixdeleted−21

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+2−2

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/ghostunnel.nix+3−2

This diff is too big to show here.

nixos/tests/gitlab.nix+27−311

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−17

This diff is too big to show here.

nixos/tests/gnome.nix+2−17

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+2−2

This diff is too big to show here.

nixos/tests/grocy.nix+2−2

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.nixdeleted−255

This diff is too big to show here.

nixos/tests/hadoop/hdfs.nix+27−57

This diff is too big to show here.

nixos/tests/hadoop/yarn.nix+23−22

This diff is too big to show here.

nixos/tests/handbrake.nixnew file+31

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+31−6

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+2−1

This diff is too big to show here.

nixos/tests/hibernate.nix+8−21

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.nixdeleted−63

This diff is too big to show here.

nixos/tests/home-assistant.nix+34−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.nixnew file+62

This diff is too big to show here.

nixos/tests/ihatemoney/default.nixdeleted−78

This diff is too big to show here.

nixos/tests/ihatemoney/rates.jsondeleted−39

This diff is too big to show here.

nixos/tests/ihatemoney/server.crtdeleted−28

This diff is too big to show here.

nixos/tests/ihatemoney/server.keydeleted−52

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−4

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/installed-tests/power-profiles-daemon.nixdeleted−9

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+37−44

This diff is too big to show here.

nixos/tests/invidious.nixdeleted−81

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.nixdeleted−267

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.nixdeleted−30

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.nixdeleted−69

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+4−2

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.nixdeleted−19

This diff is too big to show here.

nixos/tests/kea.nixdeleted−73

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+2−2

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+15−18

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+19−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/keymap.nix+1−1

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+5−13

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/libreddit.nixdeleted−19

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+1−1

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.nixdeleted−93

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+1−1

This diff is too big to show here.

nixos/tests/lsd.nixnew file+12

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.nixdeleted−94

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+68−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/magic-wormhole-mailbox-server.nix+1−1

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+63−125

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+9−140

This diff is too big to show here.

nixos/tests/matrix/mjolnir.nixdeleted−170

This diff is too big to show here.

nixos/tests/matrix/pantalaimon.nixdeleted−88

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.nixdeleted−60

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/minecraft.nix+1−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+7−19

This diff is too big to show here.

nixos/tests/minio.nix+1−4

This diff is too big to show here.

nixos/tests/misc.nix+6−7

This diff is too big to show here.

nixos/tests/mod_perl.nixdeleted−53

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/mosquitto.nix+51−166

This diff is too big to show here.

nixos/tests/mpd.nix+1−1

This diff is too big to show here.

nixos/tests/mpv.nixdeleted−28

This diff is too big to show here.

nixos/tests/mtp.nixdeleted−109

This diff is too big to show here.

nixos/tests/mumble.nix+2−2

This diff is too big to show here.

nixos/tests/musescore.nix+2−2

This diff is too big to show here.

nixos/tests/mutable-users.nix−28

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+223

This diff is too big to show here.

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

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+188−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.nixdeleted−63

This diff is too big to show here.

nixos/tests/navidrome.nixdeleted−12

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+14−223

This diff is too big to show here.

nixos/tests/nextcloud/basic.nix+3−13

This diff is too big to show here.

nixos/tests/nextcloud/default.nix+8−20

This diff is too big to show here.

nixos/tests/nextcloud/with-mysql-and-memcached.nix+18−8

This diff is too big to show here.

nixos/tests/nextcloud/with-postgresql-and-redis.nix+2−5

This diff is too big to show here.

nixos/tests/nexus.nix+1−1

This diff is too big to show here.

nixos/tests/nfs/simple.nix+1−1

This diff is too big to show here.

nixos/tests/nginx-etag.nix+2−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/nitter.nixdeleted−18

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.nixdeleted−22

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.nixdeleted−114

This diff is too big to show here.

nixos/tests/nixops/legacy/base-configuration.nixdeleted−31

This diff is too big to show here.

nixos/tests/nixops/legacy/nixops.nixdeleted−15

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/node-red.nixdeleted−31

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/nsd.nix−1

This diff is too big to show here.

nixos/tests/nzbget.nix+1−17

This diff is too big to show here.

nixos/tests/odoo.nixdeleted−27

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/openarena.nix+2−2

This diff is too big to show here.

nixos/tests/openldap.nix+3−3

This diff is too big to show here.

nixos/tests/openresty-lua.nixdeleted−55

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+10−10

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/owncast.nixdeleted−42

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+8−7

This diff is too big to show here.

nixos/tests/paperless.nix+17−25

This diff is too big to show here.

nixos/tests/parsedmarc/default.nixdeleted−235

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.nixdeleted−17

This diff is too big to show here.

nixos/tests/plasma5-systemd-start.nixdeleted−42

This diff is too big to show here.

nixos/tests/plasma5.nix+6−5

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+20−4

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+2−2

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/postfixadmin.nixdeleted−31

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+7−32

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/printing.nix+10−2

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+43−141

This diff is too big to show here.

nixos/tests/prometheus.nix+1−91

This diff is too big to show here.

nixos/tests/prowlarr.nixdeleted−18

This diff is too big to show here.

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

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+2−8

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.nixdeleted−34

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.nixdeleted−73

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/run-in-machine.nixnew file+23

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/samba.nix+2−1

This diff is too big to show here.

nixos/tests/sanoid.nix+2−15

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.nixdeleted−121

This diff is too big to show here.

nixos/tests/service-runner.nix+1−1

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+2−3

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+8−23

This diff is too big to show here.

nixos/tests/simple.nix+1−1

This diff is too big to show here.

nixos/tests/slurm.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.nixdeleted−24

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.nixdeleted−27

This diff is too big to show here.

nixos/tests/spark/spark_sample.pydeleted−40

This diff is too big to show here.

nixos/tests/spike.nixnew file+22

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+81−79

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+6−1016

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+9−9

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/syncthing.nix+2−2

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+5−169

This diff is too big to show here.

nixos/tests/systemd-confinement.nix+24−45

This diff is too big to show here.

nixos/tests/systemd-cryptenroll.nixdeleted−54

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+12−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/tigervnc.nixdeleted−53

This diff is too big to show here.

nixos/tests/tinydns.nix+1−15

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/traefik.nix−2

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+4−5

This diff is too big to show here.

nixos/tests/tuxguitar.nixdeleted−24

This diff is too big to show here.

nixos/tests/txredisapi.nix+4−6

This diff is too big to show here.

nixos/tests/ucg.nixnew file+18

This diff is too big to show here.

nixos/tests/udisks2.nix+2−2

This diff is too big to show here.

nixos/tests/unbound.nix+2−11

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+2−2

This diff is too big to show here.

nixos/tests/user-activation-scripts.nixdeleted−33

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+2−2

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/wasabibackend.nix+1−1

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.nixdeleted−131

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.nixdeleted−48

This diff is too big to show here.

nixos/tests/wireguard/wg-quick.nix+1−1

This diff is too big to show here.

nixos/tests/without-nix.nixdeleted−32

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+23−56

This diff is too big to show here.

nixos/tests/wpa_supplicant.nixdeleted−96

This diff is too big to show here.

nixos/tests/xautolock.nix+1−1

This diff is too big to show here.

nixos/tests/xfce.nix+3−2

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+2−3

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/xrdp.nix+2−2

This diff is too big to show here.

nixos/tests/xss-lock.nix+1−1

This diff is too big to show here.

nixos/tests/xterm.nix+2−2

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+2−2

This diff is too big to show here.

nixos/tests/yq.nixnew file+12

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+6−9

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.nixdeleted−106

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/aacgain/default.nix+2−3

This diff is too big to show here.

pkgs/applications/audio/aether-lv2/default.nixdeleted−33

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/5.nixnew file+161

This diff is too big to show here.

pkgs/applications/audio/ardour/default.nix+3−3

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+6−8

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+13−28

This diff is too big to show here.

pkgs/applications/audio/axoloti/libusb1.nix+6−7

This diff is too big to show here.

pkgs/applications/audio/bambootracker/default.nix+21−9

This diff is too big to show here.

pkgs/applications/audio/bchoppr/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/bespokesynth/default.nixdeleted−148

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.nixdeleted−80

This diff is too big to show here.

pkgs/applications/audio/bjumblr/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/blanket/default.nixdeleted−69

This diff is too big to show here.

pkgs/applications/audio/boops/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/bschaffl/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/bsequencer/default.nix+2−2

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−11

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/cdparanoia/default.nix+2−12

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+10−33

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-audiobooks/default.nixnew file+87

This diff is too big to show here.

pkgs/applications/audio/cozy/default.nixdeleted−92

This diff is too big to show here.

pkgs/applications/audio/crip/default.nix+2−3

This diff is too big to show here.

pkgs/applications/audio/csound/default.nix+7−4

This diff is too big to show here.

pkgs/applications/audio/cyanrip/default.nixdeleted−34

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/deadbeef/plugins/statusnotifier.nixdeleted−39

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+3−1

This diff is too big to show here.

pkgs/applications/audio/dirt/default.nix+1−2

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/drumkv1/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/easyeffects/default.nix+9−37

This diff is too big to show here.

pkgs/applications/audio/ecasound/default.nix−11

This diff is too big to show here.

pkgs/applications/audio/espeak-ng/default.nix−10

This diff is too big to show here.

pkgs/applications/audio/espeak/default.nix+2−3

This diff is too big to show here.

pkgs/applications/audio/espeak/edit.nix+2−3

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/exaile/default.nixdeleted−107

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+23−7

This diff is too big to show here.

pkgs/applications/audio/fmit/default.nix+2

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/freqtweak/default.nix+1−1

This diff is too big to show here.

pkgs/applications/audio/friture/default.nix+8−21

This diff is too big to show here.

pkgs/applications/audio/friture/factorial.patchnew file+13

This diff is too big to show here.

pkgs/applications/audio/friture/unlock_constraints.patchnew file+34

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/giada/default.nix+25−39

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+3−22

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+5−15

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−4

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/helm/default.nix+11−6

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+6−7

This diff is too big to show here.

pkgs/applications/audio/hushboard/default.nixdeleted−73

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/iannix/default.nix+2

This diff is too big to show here.

pkgs/applications/audio/in-formant/default.nixdeleted−45

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/jack-rack/default.nix+2−3

This diff is too big to show here.

pkgs/applications/audio/jackmeter/default.nix+2−3

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/jconvolver/default.nixdeleted−114

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/kapitonov-plugins-pack/default.nix+1−1

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/librespot/cargo-lock.patchnew file+3817

This diff is too big to show here.

pkgs/applications/audio/librespot/default.nix+17−11

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+3−3

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/midi-visualizer/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/mikmod/default.nix+2−3

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/mimic/default.nix+6−14

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+4−20

This diff is too big to show here.

pkgs/applications/audio/mmtc/default.nix+7−6

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/mod-distortion/default.nix+2−2

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−6

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/mpd.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/mopidy/mpris.nix+2−2

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/spotify.nix+7−9

This diff is too big to show here.

pkgs/applications/audio/mopidy/youtube.nix+15−43

This diff is too big to show here.

pkgs/applications/audio/mopidy/ytmusic.nixdeleted−35

This diff is too big to show here.

pkgs/applications/audio/mousai/default.nix+2−12

This diff is too big to show here.

pkgs/applications/audio/mousai/paths.patchdeleted−13

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/mp3gain/default.nix+3−4

This diff is too big to show here.

pkgs/applications/audio/mp3info/default.nix+2−3

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/mpdevil/default.nix+3−4

This diff is too big to show here.

pkgs/applications/audio/mpg123/default.nix+13−36

This diff is too big to show here.

pkgs/applications/audio/munt/default.nixnew file+51

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−6

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/mympd/default.nix+2−2

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+16−14

This diff is too big to show here.

pkgs/applications/audio/netease-cloud-music-gtk/cargo-lock.patchdeleted−2007

This diff is too big to show here.

pkgs/applications/audio/netease-cloud-music-gtk/default.nixdeleted−60

This diff is too big to show here.

pkgs/applications/audio/netease-cloud-music-gtk/update-cargo-lock.shdeleted−20

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+3−3

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/nootka/default.nix+2−3

This diff is too big to show here.

pkgs/applications/audio/nootka/unstable.nix+7−25

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/openmpt123/default.nixnew file+30

This diff is too big to show here.

pkgs/applications/audio/opus-tools/default.nix+2−4

This diff is too big to show here.

pkgs/applications/audio/orca-c/default.nix+2−5

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/oxefmsynth/default.nix+1−1

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/pamixer/default.nix+6−6

This diff is too big to show here.

pkgs/applications/audio/paprefs/default.nix+4−6

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/pavucontrol/default.nix+15−24

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+7−6

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/pocket-casts/default.nixdeleted−55

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.nixdeleted−30

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/qmidinet/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/qmmp/default.nix+3−3

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/qsynth/default.nix+2−2

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/quodlibet/default.nix+1−1

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/radiotray-ng/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/reaper/default.nix+5−7

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+5−50

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/rosegarden/default.nix+9−27

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/samplv1/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/sayonara/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/sc68/default.nix+3−3

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+3−6

This diff is too big to show here.

pkgs/applications/audio/snd/default.nix+3−6

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+39−62

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/soundtracker/default.nix+9−27

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+2−2

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+7−12

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+3−4

This diff is too big to show here.

pkgs/applications/audio/spotify/default.nix+11−16

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+18−27

This diff is too big to show here.

pkgs/applications/audio/sublime-music/default.nix+7−14

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.nixdeleted−93

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/synthv1/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/tageditor/default.nix+2

This diff is too big to show here.

pkgs/applications/audio/tagutil/default.nixdeleted−45

This diff is too big to show here.

pkgs/applications/audio/tauon/default.nixdeleted−122

This diff is too big to show here.

pkgs/applications/audio/tenacity/default.nixdeleted−148

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+34−32

This diff is too big to show here.

pkgs/applications/audio/tonelib-jam/default.nix+32−33

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/tonelib-zoom/default.nix+19−34

This diff is too big to show here.

pkgs/applications/audio/tony/default.nix+2−3

This diff is too big to show here.

pkgs/applications/audio/transcode/default.nix+2−3

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+2−9

This diff is too big to show here.

pkgs/applications/audio/wavegain/default.nix+2−15

This diff is too big to show here.

pkgs/applications/audio/whipper/default.nix+1−9

This diff is too big to show here.

pkgs/applications/audio/x42-avldrums/default.nix+2−2

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/xmp/default.nix+2−3

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/zam-plugins/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/zita-ajbridge/default.nix+2−3

This diff is too big to show here.

pkgs/applications/audio/zita-at1/default.nix+2−3

This diff is too big to show here.

pkgs/applications/audio/zita-njbridge/default.nix+2−2

This diff is too big to show here.

pkgs/applications/audio/zrythm/default.nixdeleted−174

This diff is too big to show here.

pkgs/applications/audio/zynaddsubfx/default.nix+1−14

This diff is too big to show here.

pkgs/applications/backup/areca/default.nix+3−6

This diff is too big to show here.

pkgs/applications/backup/deja-dup/default.nix+12−12

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+3−12

This diff is too big to show here.

pkgs/applications/backup/urbackup-client/default.nixdeleted−23

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+13−28

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+33−35

This diff is too big to show here.

pkgs/applications/blockchains/bisq-desktop/update.shdeleted−22

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-abc.nixnew file+50

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-abc/default.nixdeleted−76

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-classic.nixnew file+56

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-classic/default.nixdeleted−76

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-gold/default.nix → pkgs/applications/blockchains/bitcoin-gold.nixrenamed

The content is the same.

pkgs/applications/blockchains/bitcoin-knots.nixnew file+41

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-knots/default.nixdeleted−83

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-unlimited.nixnew file+66

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-unlimited/default.nixdeleted−66

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin.nixnew file+104

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin/default.nixdeleted−108

This diff is too big to show here.

pkgs/applications/blockchains/btcpayserver/default.nix+38−14

This diff is too big to show here.

pkgs/applications/blockchains/btcpayserver/deps.nix+602−687

This diff is too big to show here.

pkgs/applications/blockchains/btcpayserver/update.sh+1−2

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/charge-lnd/default.nix+2−2

This diff is too big to show here.

pkgs/applications/blockchains/chia-plotter/default.nixdeleted−72

This diff is too big to show here.

pkgs/applications/blockchains/chia-plotter/dont_fetch_dependencies.patchdeleted−63

This diff is too big to show here.

pkgs/applications/blockchains/chia/default.nix+24−31

This diff is too big to show here.

pkgs/applications/blockchains/clightning.nixnew file+63

This diff is too big to show here.

pkgs/applications/blockchains/clightning/default.nixdeleted−71

This diff is too big to show here.

pkgs/applications/blockchains/crypto-org-wallet.nixnew file+33

This diff is too big to show here.

pkgs/applications/blockchains/crypto-org-wallet/default.nixdeleted−33

This diff is too big to show here.

pkgs/applications/blockchains/cryptop/default.nix+2−2

This diff is too big to show here.

pkgs/applications/blockchains/dashpay.nixnew file+44

This diff is too big to show here.

pkgs/applications/blockchains/dashpay/default.nixdeleted−44

This diff is too big to show here.

pkgs/applications/blockchains/dcrd/default.nix → pkgs/applications/blockchains/dcrd.nixrenamed

The content is the same.

pkgs/applications/blockchains/dcrwallet/default.nix → pkgs/applications/blockchains/dcrwallet.nixrenamed

The content is the same.

pkgs/applications/blockchains/dero.nixnew file+25

This diff is too big to show here.

pkgs/applications/blockchains/digibyte/default.nix → pkgs/applications/blockchains/digibyte.nixrenamed

The content is the same.

pkgs/applications/blockchains/dogecoin.nixnew file+41

This diff is too big to show here.

pkgs/applications/blockchains/dogecoin/default.nixdeleted−41

This diff is too big to show here.

pkgs/applications/blockchains/eclair/default.nixdeleted−38

This diff is too big to show here.

pkgs/applications/blockchains/electrs.nixnew file+30

This diff is too big to show here.

pkgs/applications/blockchains/electrs/default.nixdeleted−42

This diff is too big to show here.

pkgs/applications/blockchains/electrs/update.shdeleted−40

This diff is too big to show here.

pkgs/applications/blockchains/elements/default.nixdeleted−84

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.nixdeleted−34

This diff is too big to show here.

pkgs/applications/blockchains/ethabi/default.nix+1

This diff is too big to show here.

pkgs/applications/blockchains/exodus/default.nix+3−4

This diff is too big to show here.

pkgs/applications/blockchains/bitcoin-abc/fix-bitcoin-qt-build.patch → pkgs/applications/blockchains/fix-bitcoin-qt-build.patchrenamed

The content is the same.

pkgs/applications/blockchains/fulcrum/default.nixdeleted−36

This diff is too big to show here.

pkgs/applications/blockchains/go-ethereum.nixnew file+60

This diff is too big to show here.

pkgs/applications/blockchains/go-ethereum/default.nixdeleted−61

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+5−18

This diff is too big to show here.

pkgs/applications/blockchains/ledger-live-desktop/systemd.patchdeleted−14

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.nixnew file+55

This diff is too big to show here.

pkgs/applications/blockchains/litecoin/default.nixdeleted−54

This diff is too big to show here.

pkgs/applications/blockchains/lnd.nixnew file+40

This diff is too big to show here.

pkgs/applications/blockchains/lnd/default.nixdeleted−40

This diff is too big to show here.

pkgs/applications/blockchains/lndconnect/default.nix+1−1

This diff is too big to show here.

pkgs/applications/blockchains/lndmanage.nixnew file+44

This diff is too big to show here.

pkgs/applications/blockchains/lndmanage/default.nixdeleted−44

This diff is too big to show here.

pkgs/applications/blockchains/masari/default.nix → pkgs/applications/blockchains/masari.nixrenamed

The content is the same.

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+19−14

This diff is too big to show here.

pkgs/applications/blockchains/monero/default.nixnew file+68

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+4−4

This diff is too big to show here.

pkgs/applications/blockchains/namecoin.nixnew file+48

This diff is too big to show here.

pkgs/applications/blockchains/namecoin/default.nixdeleted−47

This diff is too big to show here.

pkgs/applications/blockchains/nano-wallet/default.nix+3−4

This diff is too big to show here.

pkgs/applications/blockchains/nbxplorer/default.nix+36−12

This diff is too big to show here.

pkgs/applications/blockchains/nbxplorer/deps.nix+243−263

This diff is too big to show here.

pkgs/applications/blockchains/nbxplorer/update.sh+1−1

This diff is too big to show here.

pkgs/applications/blockchains/nbxplorer/util/create-deps.sh+3−4

This diff is too big to show here.

pkgs/applications/blockchains/nbxplorer/util/update-common.sh+4−5

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+5−5

This diff is too big to show here.

pkgs/applications/blockchains/oxen/default.nixdeleted−68

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.nixdeleted−56

This diff is too big to show here.

pkgs/applications/blockchains/particl/particl-core.nixnew file+53

This diff is too big to show here.

pkgs/applications/blockchains/pivx.nixnew file+59

This diff is too big to show here.

pkgs/applications/blockchains/pivx/default.nixdeleted−78

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/quorum/default.nix → pkgs/applications/blockchains/quorum.nixrenamed

The content is the same.

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.nixnew file+46

This diff is too big to show here.

pkgs/applications/blockchains/stellar-core/default.nixdeleted−50

This diff is too big to show here.

pkgs/applications/blockchains/sumokoin/default.nix → pkgs/applications/blockchains/sumokoin.nixrenamed

The content is the same.

pkgs/applications/blockchains/tessera/default.nix → pkgs/applications/blockchains/tessera.nixrenamed

The content is the same.

pkgs/applications/blockchains/trezor-suite/default.nix+5−4

This diff is too big to show here.

pkgs/applications/blockchains/turbo-geth.nixnew file+30

This diff is too big to show here.

pkgs/applications/blockchains/vertcoin/default.nix → pkgs/applications/blockchains/vertcoin.nixrenamed

The content is the same.

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+5−6

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.nixnew file+60

This diff is too big to show here.

pkgs/applications/blockchains/wownero/default.nixdeleted−61

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/display-managers/lightdm/default.nix+1−1

This diff is too big to show here.

pkgs/applications/display-managers/ly/default.nix+1−1

This diff is too big to show here.

pkgs/applications/display-managers/sddm/default.nix−7

This diff is too big to show here.

pkgs/applications/display-managers/sddm/sddm-default-session.patchdeleted−71

This diff is too big to show here.

pkgs/applications/editors/aewan/default.nix+1−12

This diff is too big to show here.

pkgs/applications/editors/android-studio/common.nix+16−21

This diff is too big to show here.

pkgs/applications/editors/android-studio/default.nix+8−8

This diff is too big to show here.

pkgs/applications/editors/apostrophe/default.nix+8−14

This diff is too big to show here.

pkgs/applications/editors/aseprite/skia.nix+1−10

This diff is too big to show here.

pkgs/applications/editors/atom/default.nix+4−4

This diff is too big to show here.

pkgs/applications/editors/atom/env.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+8−25

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+3−5

This diff is too big to show here.

pkgs/applications/editors/cudatext/deps.json+22−22

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+7−7

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+3−98

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/elvis/default.nix+7−10

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/agda-input/default.nixdeleted−18

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/agda2-mode/default.nixdeleted−27

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix+25−23

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/bqn-mode/default.nixdeleted−22

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/cedet/default.nixnew file+51

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/cedille/default.nix+9−12

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/color-theme-solarized/default.nix+17−22

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+3−3

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/elpa-generated.nix+224−988

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix+5−52

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/emacs2nix.nix+4−5

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix+12−30

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/ement/default.nixdeleted−44

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/ement/handle-nil-images.patchdeleted−28

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/ess-R-object-popup/default.nix+13−21

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix+31−19

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/fetchelpa.nixdeleted−21

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix+13−16

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix+23−13

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/helm-words/default.nix+15−20

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/ido-ubiquitous/default.nixnew file+27

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix+25−14

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix+24−14

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/jam-mode/default.nix+3−10

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/libgenerated.nix+3−5

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/llvm-mode/default.nixdeleted−17

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix+117−86

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix+67−89

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/mu4e-patch/default.nixnew file+38

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/nano-theme/default.nix+12−5

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/nongnu-generated.nix−2393

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix−37

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/org-generated.nix+33

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/org-mac-link/default.nix+31

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/org-packages.nix+32

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/ott-mode/default.nix−19

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/perl-completion/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/plz/default.nix−31

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/power-mode/default.nix+11−4

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/prolog/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/railgun/default.nix+22

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json+8353−12642

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/rect-mark/default.nix+25−19

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/session-management-for-emacs/default.nix+9−11

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/sunrise-commander/default.nix+18−5

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/sv-kalender/default.nix+5−2

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tramp/default.nix+28

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default-grammars.json−32

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix−44

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/update-defaults.py−74

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tsc/default.nix−89

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tsc/src.json−10

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/tsc/update.py−122

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/update−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-manual−7

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/update-manual.nix−11

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/update-nongnu−4

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/update-org+4

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/urweb-mode/default.nix−27

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix+21−13

This diff is too big to show here.

pkgs/applications/editors/emacs/elisp-packages/zeitgeist/default.nix+25

This diff is too big to show here.

pkgs/applications/editors/emacs/generic.nix+8−34

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.patch+14

This diff is too big to show here.

pkgs/applications/editors/emacs/tramp-detect-wrapped-gvfsd.patch+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/focuswriter/default.nix+2

This diff is too big to show here.

pkgs/applications/editors/fte/default.nix+1−2

This diff is too big to show here.

pkgs/applications/editors/geany/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/glow/default.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/gnome-builder/default.nix+21−24

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+11−23

This diff is too big to show here.

pkgs/applications/editors/heme/default.nix+29

This diff is too big to show here.

pkgs/applications/editors/hexcurse/default.nix−16

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.nix+97

This diff is too big to show here.

pkgs/applications/editors/jetbrains/darwin.nix−36

This diff is too big to show here.

pkgs/applications/editors/jetbrains/default.nix+112−130

This diff is too big to show here.

pkgs/applications/editors/jetbrains/linux.nix−93

This diff is too big to show here.

pkgs/applications/editors/jetbrains/update.pl+97

This diff is too big to show here.

pkgs/applications/editors/jetbrains/update.py−100

This diff is too big to show here.

pkgs/applications/editors/jetbrains/versions.json−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/clojupyter/default.nix−73

This diff is too big to show here.

pkgs/applications/editors/jupyter-kernels/clojupyter/deps.edn−1

This diff is too big to show here.

pkgs/applications/editors/jupyter-kernels/clojupyter/deps.nix−1107

This diff is too big to show here.

pkgs/applications/editors/jupyter-kernels/clojupyter/update.sh−16

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.nix−22

This diff is too big to show here.

pkgs/applications/editors/jupyter-kernels/wolfram/kernel.nix−32

This diff is too big to show here.

pkgs/applications/editors/kakoune/default.nix+12−5

This diff is too big to show here.

pkgs/applications/editors/kakoune/plugins/aliases.nix+1−1

This diff is too big to show here.

pkgs/applications/editors/kakoune/plugins/build-kakoune-plugin.nix+2−2

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-shell.nix−15

This diff is too big to show here.

pkgs/applications/editors/kakoune/plugins/update.py+39−44

This diff is too big to show here.

pkgs/applications/editors/kdevelop5/kdev-php.nix+3−3

This diff is too big to show here.

pkgs/applications/editors/kdevelop5/kdev-python.nix+3−3

This diff is too big to show here.

pkgs/applications/editors/kdevelop5/kdevelop.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/kile/default.nix+2−3

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.nix−99

This diff is too big to show here.

pkgs/applications/editors/leo-editor/default.nix+7−6

This diff is too big to show here.

pkgs/applications/editors/libresprite/default.nix−111

This diff is too big to show here.

pkgs/applications/editors/lifeograph/default.nix−40

This diff is too big to show here.

pkgs/applications/editors/lighttable/default.nix+3−3

This diff is too big to show here.

pkgs/applications/editors/lite-xl/0001-replace-unpack-with-table-unpack.patch−91

This diff is too big to show here.

pkgs/applications/editors/lite-xl/default.nix−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+5−7

This diff is too big to show here.

pkgs/applications/editors/micro/test-with-expect.nix−30

This diff is too big to show here.

pkgs/applications/editors/mindforger/default.nix+1

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.nix+81

This diff is too big to show here.

pkgs/applications/editors/monodevelop/git-revert-12d610fb3f6dce121df538e36f21d8c2eeb0a6e3.patch+57

This diff is too big to show here.

pkgs/applications/editors/music/tuxguitar/default.nix+6−6

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/nanorc/default.nix+2

This diff is too big to show here.

pkgs/applications/editors/nano/test-with-expect.nix−35

This diff is too big to show here.

pkgs/applications/editors/ne/default.nix+3−3

This diff is too big to show here.

pkgs/applications/editors/neovim/default.nix+22−17

This diff is too big to show here.

pkgs/applications/editors/neovim/neovide/default.nix+12−37

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-qt.nix+1−2

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+3−3

This diff is too big to show here.

pkgs/applications/editors/neovim/ruby_provider/gemset.nix+6−12

This diff is too big to show here.

pkgs/applications/editors/neovim/tests.nix−39

This diff is too big to show here.

pkgs/applications/editors/neovim/utils.nix+1−11

This diff is too big to show here.

pkgs/applications/editors/neovim/wrapper.nix+3−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−251

This diff is too big to show here.

pkgs/applications/editors/oni2/default.nix−16

This diff is too big to show here.

pkgs/applications/editors/oni2/esy_skia_use_nixpkgs.patch−13

This diff is too big to show here.

pkgs/applications/editors/oni2/extensions.lock−497

This diff is too big to show here.

pkgs/applications/editors/oni2/extensions.nix−629

This diff is too big to show here.

pkgs/applications/editors/oni2/node.lock−376

This diff is too big to show here.

pkgs/applications/editors/oni2/node.nix−453

This diff is too big to show here.

pkgs/applications/editors/pinegrow/default.nix−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/quilter/default.nix+55

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+14−27

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/clang-location.patch+15−51

This diff is too big to show here.

pkgs/applications/editors/rstudio/default.nix+104−202

This diff is too big to show here.

pkgs/applications/editors/rstudio/package.json−83

This diff is too big to show here.

pkgs/applications/editors/rstudio/r-location.patch+15−20

This diff is too big to show here.

pkgs/applications/editors/rstudio/yarn.lock−3835

This diff is too big to show here.

pkgs/applications/editors/rstudio/yarndeps.nix−4373

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+9−11

This diff is too big to show here.

pkgs/applications/editors/sublime/3/common.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/sublime/4/common.nix+2−2

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/supertux-editor/default.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/texmaker/default.nix+6−4

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/thiefmd/default.nix−48

This diff is too big to show here.

pkgs/applications/editors/thonny/default.nix+3−18

This diff is too big to show here.

pkgs/applications/editors/tiled/default.nix+6−4

This diff is too big to show here.

pkgs/applications/editors/typora/default.nix+72

This diff is too big to show here.

pkgs/applications/editors/uivonim/yarn.nix+1−1

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−17

This diff is too big to show here.

pkgs/applications/editors/vim/default.nix+3−1

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.nix−143

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/build-vim-plugin.nix−54

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/default.nix−52

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/deprecated.json−42

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/generated.nix−12184

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/markdown-preview-nvim/fix-node-paths.patch−46

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/markdown-preview-nvim/package.json−17

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/overrides.nix−1160

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/patches/sniprun/fix-paths.patch−36

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/update-shell.nix−16

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/update.py−128

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/vim-command-check-hook.sh−25

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/vim-gen-doc-hook.sh−30

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/vim-plugin-names−1014

This diff is too big to show here.

pkgs/applications/editors/vim/plugins/vim-utils.nix−566

This diff is too big to show here.

pkgs/applications/editors/vim/vimacs.nix+2−2

This diff is too big to show here.

pkgs/applications/editors/vis/default.nix+16−11

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/cpptools/default.nix−111

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/default.nix−2348

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/language-packs.nix−89

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/ms-dotnettools-csharp/default.nix−152

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/ms-dotnettools-csharp/rt-deps-bin-srcs.json−94

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/ms-dotnettools-csharp/update-bin-srcs−21

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/ms-toolsai-jupyter/default.nix−42

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/ms-vsliveshare-vsliveshare/default.nix−133

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/python/default.nix−128

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/remote-ssh/default.nix−54

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/rescript/default.nix−28

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/rescript/rescript-editor-analysis.nix−31

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/rust-analyzer/build-deps/package.json−19

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/rust-analyzer/default.nix−88

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/rust-analyzer/update.sh−49

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/terraform/default.nix−20

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/terraform/fix-terraform-ls.patch−19

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/update_installed_exts.sh−90

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/vscode-lldb/build-deps/package.json−23

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/vscode-lldb/default.nix−104

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/vscode-lldb/update.sh−46

This diff is too big to show here.

pkgs/applications/editors/vscode/extensions/wakatime/default.nix−22

This diff is too big to show here.

pkgs/applications/editors/vscode/generic.nix+44−70

This diff is too big to show here.

pkgs/applications/editors/vscode/update-shell.nix−18

This diff is too big to show here.

pkgs/applications/editors/vscode/update-vscode.sh+14−18

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+10−11

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/vscode/with-extensions.nix+9−19

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.nix−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−30

This diff is too big to show here.

pkgs/applications/emulators/attract-mode/default.nix−33

This diff is too big to show here.

pkgs/applications/emulators/basiliskii/default.nix−28

This diff is too big to show here.

pkgs/applications/emulators/basiliskii/remove-redhat-6-workaround-for-scsi-sg.h.patch−10

This diff is too big to show here.

pkgs/applications/emulators/bochs/default.nix−136

This diff is too big to show here.

pkgs/applications/emulators/bsnes/ares/default.nix−84

This diff is too big to show here.

pkgs/applications/emulators/bsnes/ares/fix-ruby.patch−27

This diff is too big to show here.

pkgs/applications/emulators/bsnes/bsnes-hd/default.nix−55

This diff is too big to show here.

pkgs/applications/emulators/bsnes/bsnes-hd/macos-copy-app-to-prefix.patch−18

This diff is too big to show here.

pkgs/applications/emulators/bsnes/bsnes-hd/macos-replace-sips-with-png2icns.patch−13

This diff is too big to show here.

pkgs/applications/emulators/bsnes/higan/001-include-cmath.patch−8

This diff is too big to show here.

pkgs/applications/emulators/bsnes/higan/002-sips-to-png2icns.patch−24

This diff is too big to show here.

pkgs/applications/emulators/bsnes/higan/default.nix−155

This diff is too big to show here.

pkgs/applications/emulators/ccemux/default.nix−67

This diff is too big to show here.

pkgs/applications/emulators/cdemu/base.nix−36

This diff is too big to show here.

pkgs/applications/emulators/cdemu/client.nix−16

This diff is too big to show here.

pkgs/applications/emulators/cdemu/daemon.nix−9

This diff is too big to show here.

pkgs/applications/emulators/cdemu/vhba.nix−22

This diff is too big to show here.

pkgs/applications/emulators/citra/default.nix−91

This diff is too big to show here.

pkgs/applications/emulators/collapseos-cvm/default.nix−30

This diff is too big to show here.

pkgs/applications/emulators/commanderx16/emulator.nix−44

This diff is too big to show here.

pkgs/applications/emulators/commanderx16/rom.nix−52

This diff is too big to show here.

pkgs/applications/emulators/commanderx16/run.nix−37

This diff is too big to show here.

pkgs/applications/emulators/desmume/default.nix−87

This diff is too big to show here.

pkgs/applications/emulators/dgen-sdl/default.nix−69

This diff is too big to show here.

pkgs/applications/emulators/dolphin-emu/master.nix−89

This diff is too big to show here.

pkgs/applications/emulators/dolphin-emu/primehack.nix−151

This diff is too big to show here.

pkgs/applications/emulators/dosbox-staging/default.nix−112

This diff is too big to show here.

pkgs/applications/emulators/dosbox/default.nix−75

This diff is too big to show here.

pkgs/applications/emulators/duckstation/default.nix−106

This diff is too big to show here.

pkgs/applications/emulators/dynamips/default.nix−36

This diff is too big to show here.

pkgs/applications/emulators/emu2/default.nix−26

This diff is too big to show here.

pkgs/applications/emulators/fceux/default.nix−24

This diff is too big to show here.

pkgs/applications/emulators/firebird-emu/default.nix−36

This diff is too big to show here.

pkgs/applications/emulators/flycast/default.nix−52

This diff is too big to show here.

pkgs/applications/emulators/fs-uae/default.nix−65

This diff is too big to show here.

pkgs/applications/emulators/fs-uae/launcher.nix−43

This diff is too big to show here.

pkgs/applications/emulators/fuse-emulator/default.nix−29

This diff is too big to show here.

pkgs/applications/emulators/gens-gs/default.nix−26

This diff is too big to show here.

pkgs/applications/emulators/goldberg-emu/default.nix−52

This diff is too big to show here.

pkgs/applications/emulators/goldberg-emu/dont-install-unsupported.patch−34

This diff is too big to show here.

pkgs/applications/emulators/hercules/default.nix−27

This diff is too big to show here.

pkgs/applications/emulators/libdsk/default.nix−19

This diff is too big to show here.

pkgs/applications/emulators/mame/0001-Revert-Added-PDF-documentation-to-dist.mak.patch−37

This diff is too big to show here.

pkgs/applications/emulators/mame/default.nix−155

This diff is too big to show here.

pkgs/applications/emulators/mednafen/default.nix−98

This diff is too big to show here.

pkgs/applications/emulators/mednaffe/default.nix−41

This diff is too big to show here.

pkgs/applications/emulators/melonDS/default.nix−43

This diff is too big to show here.

pkgs/applications/emulators/mgba/default.nix−87

This diff is too big to show here.

pkgs/applications/emulators/nestopia/default.nix−72

This diff is too big to show here.

pkgs/applications/emulators/openmsx/default.nix−75

This diff is too big to show here.

pkgs/applications/emulators/pcsx2/default.nix−93

This diff is too big to show here.

pkgs/applications/emulators/pcsxr/0001-libpcsxcore-fix-build-with-ffmpeg-4.patch−76

This diff is too big to show here.

pkgs/applications/emulators/pcsxr/default.nix−89

This diff is too big to show here.

pkgs/applications/emulators/ppsspp/default.nix−72

This diff is too big to show here.

pkgs/applications/emulators/proton-caller/default.nix−24

This diff is too big to show here.

pkgs/applications/emulators/punes/default.nix−64

This diff is too big to show here.

pkgs/applications/emulators/resim/default.nix−21

This diff is too big to show here.

pkgs/applications/emulators/retroarch/cores.nix−892

This diff is too big to show here.

pkgs/applications/emulators/retroarch/default.nix−139

This diff is too big to show here.

pkgs/applications/emulators/retroarch/disable-menu_show_core_updater.patch−25

This diff is too big to show here.

pkgs/applications/emulators/retroarch/fix-config.patch−26

This diff is too big to show here.

pkgs/applications/emulators/retroarch/fix-libretro-paths.patch−28

This diff is too big to show here.

pkgs/applications/emulators/retroarch/hashes.json−488

This diff is too big to show here.

pkgs/applications/emulators/retroarch/update_cores.py−173

This diff is too big to show here.

pkgs/applications/emulators/retroarch/use-fixed-paths-on-libretro_info_path.patch−84

This diff is too big to show here.

pkgs/applications/emulators/retroarch/wrapper.nix−41

This diff is too big to show here.

pkgs/applications/emulators/retrofe/default.nix−78

This diff is too big to show here.

pkgs/applications/emulators/ripes/default.nix−50

This diff is too big to show here.

pkgs/applications/emulators/rpcs3/0001-llvm-ExecutionEngine-IntelJITEvents-only-use-ITTAPI_.patch−62

This diff is too big to show here.

pkgs/applications/emulators/rpcs3/default.nix−80

This diff is too big to show here.

pkgs/applications/emulators/rpcs3/update.sh−59

This diff is too big to show here.

pkgs/applications/emulators/ruffle/default.nix−60

This diff is too big to show here.

pkgs/applications/emulators/ryujinx/appdir.patch−23

This diff is too big to show here.

pkgs/applications/emulators/ryujinx/default.nix−108

This diff is too big to show here.

pkgs/applications/emulators/ryujinx/deps.nix−227

This diff is too big to show here.

pkgs/applications/emulators/ryujinx/updater.sh−86

This diff is too big to show here.

pkgs/applications/emulators/sameboy/default.nix−48

This diff is too big to show here.

pkgs/applications/emulators/snes9x/default.nix−130

This diff is too big to show here.

pkgs/applications/emulators/stella/default.nix−45

This diff is too big to show here.

pkgs/applications/emulators/tiny8086/default.nix−68

This diff is too big to show here.

pkgs/applications/emulators/tinyemu/default.nix−46

This diff is too big to show here.

pkgs/applications/emulators/uae/default.nix−27

This diff is too big to show here.

pkgs/applications/emulators/uxn/default.nix−54

This diff is too big to show here.

pkgs/applications/emulators/vice/default.nix−187

This diff is too big to show here.

pkgs/applications/emulators/wine/base.nix−199

This diff is too big to show here.

pkgs/applications/emulators/wine/cert-path.patch−15

This diff is too big to show here.

pkgs/applications/emulators/wine/darwin-metal-compat.patch−31

This diff is too big to show here.

pkgs/applications/emulators/wine/default.nix−67

This diff is too big to show here.

pkgs/applications/emulators/wine/packages.nix−44

This diff is too big to show here.

pkgs/applications/emulators/wine/setup-hook-darwin.sh−37

This diff is too big to show here.

pkgs/applications/emulators/wine/sources.nix−93

This diff is too big to show here.

pkgs/applications/emulators/wine/vkd3d.nix−28

This diff is too big to show here.

pkgs/applications/emulators/wine/winetricks.nix−33

This diff is too big to show here.

pkgs/applications/emulators/yuzu/compatibility-list.json−1

This diff is too big to show here.

pkgs/applications/emulators/yuzu/default.nix−40

This diff is too big to show here.

pkgs/applications/emulators/yuzu/generic.nix−157

This diff is too big to show here.

pkgs/applications/emulators/yuzu/update.sh−102

This diff is too big to show here.

pkgs/applications/emulators/zesarux/default.nix−97

This diff is too big to show here.

pkgs/applications/emulators/zsnes/default.nix−64

This diff is too big to show here.

pkgs/applications/finance/cryptowatch/default.nix−57

This diff is too big to show here.

pkgs/applications/finance/irpf/default.nix−73

This diff is too big to show here.

pkgs/applications/finance/odoo/default.nix−103

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/openorienteering-mapper/default.nix+3

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.nix−32

This diff is too big to show here.

pkgs/applications/gis/qgis/unwrapped-ltr.nix−153

This diff is too big to show here.

pkgs/applications/gis/qgis/unwrapped.nix+18−74

This diff is too big to show here.

pkgs/applications/gis/qmapshack/default.nix+4−12

This diff is too big to show here.

pkgs/applications/gis/qmapshack/fix-qttranslations-path.patch−74

This diff is too big to show here.

pkgs/applications/gis/saga/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.patch−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+3−3

This diff is too big to show here.

pkgs/applications/graphics/ImageMagick/7.0.nix+14−55

This diff is too big to show here.

pkgs/applications/graphics/akira/default.nix+7−9

This diff is too big to show here.

pkgs/applications/graphics/antimony/default.nix+7−3

This diff is too big to show here.