···11111212 lib = import ./lib;
13131414- systems = lib.systems.supported.hydra;
1515-1616- forAllSystems = f: lib.genAttrs systems (system: f system);
1414+ forAllSystems = f: lib.genAttrs lib.systems.flakeExposed (system: f system);
17151816 in
1917 {
+11-1
lib/generators.nix
···251251 }:
252252 assert builtins.isInt depthLimit;
253253 let
254254+ specialAttrs = [
255255+ "__functor"
256256+ "__functionArgs"
257257+ "__toString"
258258+ "__pretty"
259259+ ];
260260+ stepIntoAttr = evalNext: name:
261261+ if builtins.elem name specialAttrs
262262+ then id
263263+ else evalNext;
254264 transform = depth:
255265 if depthLimit != null && depth > depthLimit then
256266 if throwOnDepthLimit
···261271 let
262272 evalNext = x: mapAny (depth + 1) (transform (depth + 1) x);
263273 in
264264- if isAttrs v then mapAttrs (const evalNext) v
274274+ if isAttrs v then mapAttrs (stepIntoAttr evalNext) v
265275 else if isList v then map evalNext v
266276 else transform (depth + 1) v;
267277 in
+10-1
lib/systems/default.nix
···88 platforms = import ./platforms.nix { inherit lib; };
99 examples = import ./examples.nix { inherit lib; };
1010 architectures = import ./architectures.nix { inherit lib; };
1111- supported = import ./supported.nix { inherit lib; };
1111+1212+ /* List of all Nix system doubles the nixpkgs flake will expose the package set
1313+ for. All systems listed here must be supported by nixpkgs as `localSystem`.
1414+1515+ **Warning**: This attribute is considered experimental and is subject to change.
1616+ */
1717+ flakeExposed = import ./flake-systems.nix { };
1818+1919+ # TODO(@sternenseemann): remove before 21.11
2020+ supported = throw "2022-05-23: Use lib.systems.flakeExposed instead of lib.systems.supported.hydra, as lib.systems.supported has been removed";
12211322 # Elaborate a `localSystem` or `crossSystem` so that it contains everything
1423 # necessary.
+29
lib/systems/flake-systems.nix
···11+# See [RFC 46] for mandated platform support and ../../pkgs/stdenv for
22+# implemented platform support. This list is mainly descriptive, i.e. all
33+# system doubles for platforms where nixpkgs can do native compiliation
44+# reasonably well are included.
55+#
66+# [RFC 46]: https://github.com/NixOS/rfcs/blob/master/rfcs/0046-platform-support-tiers.md
77+{ }:
88+99+[
1010+ # Tier 1
1111+ "x86_64-linux"
1212+ # Tier 2
1313+ "aarch64-linux"
1414+ "x86_64-darwin"
1515+ # Tier 3
1616+ "armv6l-linux"
1717+ "armv7l-linux"
1818+ "i686-linux"
1919+ "mipsel-linux"
2020+2121+ # Other platforms with sufficient support in stdenv which is not formally
2222+ # mandated by their platform tier.
2323+ "aarch64-darwin"
2424+ "armv5tel-linux"
2525+ "powerpc64le-linux"
2626+ "riscv64-linux"
2727+2828+ # "x86_64-freebsd" is excluded because it is mostly broken
2929+]
-26
lib/systems/supported.nix
···11-# Supported systems according to RFC0046's definition.
22-#
33-# https://github.com/NixOS/rfcs/blob/master/rfcs/0046-platform-support-tiers.md
44-{ lib }:
55-rec {
66- # List of systems that are built by Hydra.
77- hydra = tier1 ++ tier2 ++ tier3 ++ [
88- "aarch64-darwin"
99- ];
1010-1111- tier1 = [
1212- "x86_64-linux"
1313- ];
1414-1515- tier2 = [
1616- "aarch64-linux"
1717- "x86_64-darwin"
1818- ];
1919-2020- tier3 = [
2121- "armv6l-linux"
2222- "armv7l-linux"
2323- "i686-linux"
2424- "mipsel-linux"
2525- ];
2626-}
+15
lib/tests/misc.nix
···674674 expected = false;
675675 };
676676677677+ testWithRecursionDealsWithFunctors =
678678+ let
679679+ functor = {
680680+ __functor = self: { a, b, }: null;
681681+ };
682682+ a = {
683683+ value = "1234";
684684+ b = functor;
685685+ c.d = functor;
686686+ };
687687+ in {
688688+ expr = generators.toPretty { } (generators.withRecursion { depthLimit = 1; throwOnDepthLimit = false; } a);
689689+ expected = "{\n b = <function, args: {a, b}>;\n c = {\n d = \"<unevaluated>\";\n };\n value = \"<unevaluated>\";\n}";
690690+ };
691691+677692 testToPrettyMultiline = {
678693 expr = mapAttrs (const (generators.toPretty { })) rec {
679694 list = [ 3 4 [ false ] ];
···11<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-release-22.05">
22 <title>Release 22.05 (“Quokka”, 2022.05/??)</title>
33- <para>
44- In addition to numerous new and upgraded packages, this release has
55- the following highlights:
66- </para>
73 <itemizedlist spacing="compact">
84 <listitem>
95 <para>
···1410 </itemizedlist>
1511 <section xml:id="sec-release-22.05-highlights">
1612 <title>Highlights</title>
1313+ <para>
1414+ In addition to numerous new and upgraded packages, this release
1515+ has the following highlights:
1616+ </para>
1717 <itemizedlist>
1818 <listitem>
1919 <para>
···586586 <literal>libcontainer</literal> based software such as Podman
587587 and Skopeo which assumes they have ownership over
588588 <literal>/etc/containers</literal>.
589589+ </para>
590590+ </listitem>
591591+ <listitem>
592592+ <para>
593593+ <literal>lib.systems.supported</literal> has been removed, as
594594+ it was overengineered for determining the systems to support
595595+ in the nixpkgs flake. The list of systems exposed by the
596596+ nixpkgs flake can now be accessed as
597597+ <literal>lib.systems.flakeExposed</literal>.
589598 </para>
590599 </listitem>
591600 <listitem>
+4-2
nixos/doc/manual/release-notes/rl-2205.section.md
···11# Release 22.05 (“Quokka”, 2022.05/??) {#sec-release-22.05}
2233-In addition to numerous new and upgraded packages, this release has the following highlights:
44-53- Support is planned until the end of December 2022, handing over to 22.11.
6475## Highlights {#sec-release-22.05-highlights}
66+77+In addition to numerous new and upgraded packages, this release has the following highlights:
8899- The `firefox` browser on `x86_64-linux` is now making use of
1010 profile-guided optimization resulting in a much more responsive
···194194195195 This is to improve compatibility with `libcontainer` based software such as Podman and Skopeo
196196 which assumes they have ownership over `/etc/containers`.
197197+198198+- `lib.systems.supported` has been removed, as it was overengineered for determining the systems to support in the nixpkgs flake. The list of systems exposed by the nixpkgs flake can now be accessed as `lib.systems.flakeExposed`.
197199198200- For new installations `virtualisation.oci-containers.backend` is now set to `podman` by default.
199201 If you still want to use Docker on systems where `system.stateVersion` is set to to `"22.05"` set `virtualisation.oci-containers.backend = "docker";`.Old systems with older `stateVersion`s stay with "docker".
···51515252 # Do a backup and wait for it to start
5353 master.start_job("mysql-backup.service")
5454- master.wait_for_unit("mysql-backup.service")
55545655 # wait for backup to fail, because of database 'doesnotexist'
5756 master.wait_until_fails("systemctl is-active -q mysql-backup.service")
···3232 # without making a new release. We simply substitute the possibly changed fields
3333 # with their content from when we last updated, and thus get a deterministic output
3434 # hash.
3535- extraPostFetch = ''
3535+ postFetch = ''
3636 echo "${metadata}" | base64 --decode > $out/metadata.json
3737 '';
3838 };
···1111 sha256 = "1cxj6r85d5f3qxdwzxrmkx8z875hig4cr8zsi30w6vj23cyds3l2";
1212 # Remove unicode file names which leads to different checksums on HFS+
1313 # vs. other filesystems because of unicode normalisation.
1414- extraPostFetch = ''
1414+ postFetch = ''
1515 rm -r $out/test/e2e/unicode-pwd
1616 '';
1717 };
+1-1
pkgs/development/misc/resholve/oildev.nix
···7070 Note: -f is necessary to keep it from being a pain to update
7171 hash on rev updates. Command will fail w/o and not print hash.
7272 */
7373- extraPostFetch = ''
7373+ postFetch = ''
7474 rm -rf Python-2.7.13 benchmarks metrics py-yajl rfc gold web testdata services demo devtools cpp
7575 '';
7676 };
···2929 # Upstream uses versioneer, which relies on git attributes substitution.
3030 # This leads to non-reproducible archives on github. Remove the substituted
3131 # file here, and recreate it later based on our version info.
3232- extraPostFetch = ''
3232+ postFetch = ''
3333 rm "$out/limits/_version.py"
3434 '';
3535 hash = "sha256-ja+YbRHCcZ5tFnoofdR44jbkkdDroVUdKeDOt6yE0LI=";
···3636 # The content of .git_archival.txt is substituted upon tarball creation,
3737 # which creates indeterminism if master no longer points to the tag.
3838 # See https://github.com/jbarlow83/OCRmyPDF/issues/841
3939- extraPostFetch = ''
3939+ postFetch = ''
4040 rm "$out/.git_archival.txt"
4141 '';
4242 hash = "sha256-uFKnohUxh17h6u0vwVB7EaTEh5NRowP8a6za63Ehodk=";
···3737 # The content of .git_archival.txt is substituted upon tarball creation,
3838 # which creates indeterminism if master no longer points to the tag.
3939 # See https://github.com/jbarlow83/OCRmyPDF/issues/841
4040- extraPostFetch = ''
4040+ postFetch = ''
4141 rm "$out/.git_archival.txt"
4242 '';
4343 hash = "sha256-jkAwc1bQ1jRDf/qY+xAjiLXXO98qKjyX+J7Lu4tYWoI=";
···1515 # filesystems because of unicode normalisation. The documentation
1616 # has such files and will be removed.
1717 sha256 = "sha256-v1z6caEMJNXqbcbTmFXoy3KQewHiz6qK4vhNU6Qbukk=";
1818- extraPostFetch = "rm -rf $out/docs/reST";
1818+ postFetch = "rm -rf $out/docs/reST";
1919 };
20202121 patches = [
···2222 rev = "fb9f2b7bc9fcba954d70f63857cc0c3841b1cf47";
2323 sha256 = "1arkbpbzvhcmz5fhjqg34x2jbjnwmlisapk22rjki17qpamh7zks";
2424 # ncdns must be put in a subdirectory for this to work.
2525- extraPostFetch = ''
2525+ postFetch = ''
2626 cp -r --no-preserve=mode "${ncdns}" "$out/ncdns"
2727 '';
2828 };
···1616 # > the license requires that you agree to these use restrictions,
1717 # > or you must remove the software (source and binary) from your hard disks
1818 # https://fedoraproject.org/wiki/Licensing:Unrar
1919- extraPostFetch = lib.optionalString (!enableUnfree) ''
1919+ postFetch = lib.optionalString (!enableUnfree) ''
2020 rm -r $out/CPP/7zip/Compress/Rar*
2121 find $out -name makefile'*' -exec sed -i '/Rar/d' {} +
2222 '';
+1-1
pkgs/tools/graphics/vips/default.nix
···4949 sha256 = "sha256-ffDJJWe/SzG+lppXEiyfXXL5KLdZgnMjv1SYnuYnh4c=";
5050 # Remove unicode file names which leads to different checksums on HFS+
5151 # vs. other filesystems because of unicode normalisation.
5252- extraPostFetch = ''
5252+ postFetch = ''
5353 rm -r $out/test/test-suite/images/
5454 '';
5555 };
+1-1
pkgs/tools/misc/dua/default.nix
···1313 sha256 = "sha256-dpkUbZz/bIiTMhZalXHGct77qMzYB6LATs7MPVyW1GY=";
1414 # Remove unicode file names which leads to different checksums on HFS+
1515 # vs. other filesystems because of unicode normalisation.
1616- extraPostFetch = ''
1616+ postFetch = ''
1717 rm -r $out/tests/fixtures
1818 '';
1919 };
+1-1
pkgs/tools/misc/dust/default.nix
···1111 sha256 = "sha256-qC8AlLyg8MU9ZON0hITTaM5AmRFZMOqJVt7PJ5fCtus=";
1212 # Remove unicode file names which leads to different checksums on HFS+
1313 # vs. other filesystems because of unicode normalisation.
1414- extraPostFetch = ''
1414+ postFetch = ''
1515 rm -r $out/tests/test_dir_unicode/
1616 '';
1717 };
+1-1
pkgs/tools/misc/dutree/default.nix
···1111 sha256 = "17lm8jd07bi499mywg2iq669im34j4x4yhc8a3adxn12f8j0dfg7";
1212 # test directory has files with unicode names which causes hash mismatches
1313 # It is also not used by any tests or parts of build process
1414- extraPostFetch = ''
1414+ postFetch = ''
1515 rm -r $out/test
1616 '';
1717 };
+1-1
pkgs/tools/misc/jdupes/default.nix
···1212 # Unicode file names lead to different checksums on HFS+ vs. other
1313 # filesystems because of unicode normalisation. The testdir
1414 # directories have such files and will be removed.
1515- extraPostFetch = "rm -r $out/testdir";
1515+ postFetch = "rm -r $out/testdir";
1616 };
17171818 dontConfigure = true;
+67-9
pkgs/tools/misc/mons/default.nix
···11-{ stdenv, lib, fetchFromGitHub, help2man, xrandr }:
11+{ lib
22+, bash
33+, coreutils
44+, fetchFromGitHub
55+, gawk
66+, gnugrep
77+, gnused
88+, help2man
99+, resholve
1010+, xrandr
1111+}:
21233-stdenv.mkDerivation rec {
1313+resholve.mkDerivation rec {
414 pname = "mons";
55- version = "20200320";
1515+ version = "unstable-2020-03-20";
616717 src = fetchFromGitHub {
818 owner = "Ventto";
···1222 fetchSubmodules = true;
1323 };
14241515- patches = [
1616- # Substitute xrandr path with @xrandr@ so we can replace it with
1717- # real path in substituteInPlace
1818- ./xrandr.patch
1919- ];
2525+ /*
2626+ Remove reference to `%LIBDIR%/liblist.sh`. This would be linked to the
2727+ non-resholved of the library in the final derivation.
20282929+ Patching out the library check; it's bad on multiple levels:
3030+ 1. The check literally breaks if it fails.
3131+ See https://github.com/Ventto/mons/pull/49
3232+ 2. It doesn't need to do this; source would fail with a
3333+ sensible message if the script was missing.
3434+ 3. resholve can't wrestle with test/[] (at least until
3535+ https://github.com/abathur/resholve/issues/78)
3636+ */
2137 postPatch = ''
2222- substituteInPlace mons.sh --replace '@xrandr@' '${xrandr}/bin/xrandr'
3838+ substituteInPlace mons.sh \
3939+ --replace "lib='%LIBDIR%/liblist.sh'" "" \
4040+ --replace '[ ! -r "$lib" ] && { "$lib: library not found."; exit 1; }' ""
2341 '';
24424343+ solutions = {
4444+ mons = {
4545+ scripts = [ "bin/mons" "lib/libshlist/liblist.sh" ];
4646+ interpreter = "${bash}/bin/sh";
4747+ inputs = [
4848+ bash
4949+ coreutils
5050+ gawk
5151+ gnugrep
5252+ gnused
5353+ xrandr
5454+ ];
5555+ fix = {
5656+ "$lib" = [ "lib/libshlist/liblist.sh" ];
5757+ "$XRANDR" = [ "xrandr" ];
5858+ };
5959+ keep = {
6060+ /*
6161+ has a whole slate of *flag variables that it sets to either
6262+ the true or false builtin and then executes...
6363+ */
6464+ "$aFlag" = true;
6565+ "$dFlag" = true;
6666+ "$eFlag" = true;
6767+ "$mFlag" = true;
6868+ "$nFlag" = true;
6969+ "$oFlag" = true;
7070+ "$sFlag" = true;
7171+ "$OFlag" = true;
7272+ "$SFlag" = true;
7373+ "$pFlag" = true;
7474+ "$iFlag" = true;
7575+ "$xFlag" = true;
7676+ "$is_flag" = true;
7777+ };
7878+ };
7979+ };
8080+2581 nativeBuildInputs = [ help2man ];
8282+2683 makeFlags = [
2784 "DESTDIR=$(out)"
2885 "PREFIX="
···3390 homepage = "https://github.com/Ventto/mons.git";
3491 license = licenses.mit;
3592 maintainers = with maintainers; [ mschneider thiagokokada ];
9393+ platforms = platforms.unix;
3694 };
3795}
···1212 rev = version;
1313 sha256 = "0bwv6x651gyq703pywrhb7lfby6xwnd1iwnrzzjihipn7x3v2hz9";
1414 # the stat call has to be in a subshell or we get the current date
1515- extraPostFetch = ''
1515+ postFetch = ''
1616 echo $(stat -c %Y $out) > $out/.timestamp
1717 '';
1818 };
+1
pkgs/top-level/aliases.nix
···170170 chunkwm = throw "chunkwm has been removed: abandoned by upstream"; # Added 2022-01-07
171171 cifs_utils = throw "'cifs_utils' has been renamed to/replaced by 'cifs-utils'"; # Converted to throw 2022-02-22
172172 cipherscan = throw "cipherscan was removed from nixpkgs, as it was unmaintained"; # added 2021-12-11
173173+ citra = citra-nightly; # added 2022-05-17
173174 ckb = throw "'ckb' has been renamed to/replaced by 'ckb-next'"; # Converted to throw 2022-02-22
174175 inherit (libsForQt5.mauiPackages) clip; # added 2022-05-17
175176 cpp-ipfs-api = cpp-ipfs-http-client; # Project has been renamed. Added 2022-05-15