text:
lsp-plugins: 1.1.5 -> 1.1.7

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/lsp-plugins/versions.
meta.description for lsp-plugins is: '"Collection of open-source audio plugins"'.
Release on GitHub
Compare changes on GitHub

Checks done (click to expand)

built on NixOS
/bin/sh passed the binary check.
1 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
found 1.1.7 with grep in /nix/store/55a6sxzw2hy8kivrn40lnn8l9dass8hr-lsp-plugins-1.1.7
directory tree listing: https://gist.github.com/32a4188267d149a77dc964d220db7f6e
du listing: https://gist.github.com/cfe753f8b3e8548c94c064d2b15f7b06

Rebuild report (if merged into master) (click to expand)

6 total rebuild path(s)
2 package rebuild(s)
2 x86_64-linux rebuild(s)
2 i686-linux rebuild(s)
0 x86_64-darwin rebuild(s)
2 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
lsp-plugins
pulseeffects

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/55a6sxzw2hy8kivrn40lnn8l9dass8hr-lsp-plugins-1.1.7 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A lsp-plugins https://github.com/r-ryantm/nixpkgs/archive/20a257754e97b480735b2cda0c737ec3b474a5fb.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/55a6sxzw2hy8kivrn40lnn8l9dass8hr-lsp-plugins-1.1.7
ls -la /nix/store/55a6sxzw2hy8kivrn40lnn8l9dass8hr-lsp-plugins-1.1.7/bin

cc @magnetophon for testing.

I tried to do this upgrade as well, but the jack standalone versions don't work anymore.
Same with the latest release: 1.1.9.

closing, see comment above

authors: magnetophon r-ryantm xeji


text:
sunvox: 1.9.3b -> 1.9.4c

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/sunvox/versions.
meta.description for sunvox is: '"Small, fast and powerful modular synthesizer with pattern-based sequencer"'.

Checks done (click to expand)

built on NixOS
/bin/sh passed the binary check.
1 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
found 1.9.4c with grep in /nix/store/1pi9yl2n63qvzzmm9qw7qi01n04zwljg-SunVox-1.9.4c
directory tree listing: https://gist.github.com/148859f01ce84c062d1f9c0bf8863126
du listing: https://gist.github.com/3e1e4df41b1353e800c87e92ded67581

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)
1 package rebuild(s)
1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
0 x86_64-darwin rebuild(s)
0 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
sunvox

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/1pi9yl2n63qvzzmm9qw7qi01n04zwljg-SunVox-1.9.4c \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A sunvox https://github.com/r-ryantm/nixpkgs/archive/76d42f5550d71baced772c0f33576a31b16ba0ea.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/1pi9yl2n63qvzzmm9qw7qi01n04zwljg-SunVox-1.9.4c
ls -la /nix/store/1pi9yl2n63qvzzmm9qw7qi01n04zwljg-SunVox-1.9.4c/bin

cc @puffnfresh for testing.

superseded by #56888

source: gharchive/pull-request

authors: r-ryantm xeji

repo: NixOS/nixpkgs

license: MIT

license_type: permissive

license_source: github-api


text:
krunner-pass: Add dbus to CMakeLists (fix)

Motivation for this change
#59355 could be fixed by this addition, currently it seems broken on 19.03
Another PR is opened to the upstream, but we might want to have something here to keep it working.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build krunner-pass

There seems to be a new problem now:
                 from /build/source/config.cpp:24:
/nix/store/3zkpjgjyfxnxz8kdkf07f099kpfbdjlz-kconfigwidgets-5.56.0-dev/include/KF5/KConfigWidgets/kcmodule.h:29:10: fatal error: kauthaction.h: No such file or directory
 #include <kauthaction.h>
          ^~~~~~~~~~~~~~~
compilation terminated.

According to hydra it broke here
https://hydra.nixos.org/build/89244876, when kauth was updated from 5.53 to 5.54.

Duh, I wish I'd understand cpp programming a bit. Anyway, will poke the upstream again and wait for their patch (and open a version bump PR if I see one). Thanks.

authors: markuskowa seqizz


text:
vscod{e,ium}: 1.33.1 -> 1.34.0

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Builds and runs for me on NixOS.

authors: eadwu lightbulbjim


text:
python37Packages.annoy: 1.15.2 -> 1.16.0

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/python3.7-annoy/versions.
meta.description for python37Packages.annoy is: '"Approximate Nearest Neighbors in C++/Python optimized for memory usage and loading/saving to disk"'.
meta.homepage for python37Packages.annoy is: '"https://github.com/spotify/annoy"

Checks done (click to expand)

built on NixOS

Warning: a test defined in passthru.tests did not pass

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 1.16.0 with grep in /nix/store/3v9qai0162vplq523iqflirx2wqrgysw-python3.7-annoy-1.16.0

directory tree listing: https://gist.github.com/c323442948453604d95fbccf25d64ea4

du listing: https://gist.github.com/1e122ddcc5119f871f9e8a75a3410a62

Rebuild report (if merged into master) (click to expand)

12 total rebuild path(s)
3 package rebuild(s)
3 x86_64-linux rebuild(s)
3 i686-linux rebuild(s)
3 x86_64-darwin rebuild(s)
3 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
python27Packages.annoy
python37Packages.annoy
python37Packages.rl-coach

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/3v9qai0162vplq523iqflirx2wqrgysw-python3.7-annoy-1.16.0 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A python37Packages.annoy https://github.com/r-ryantm/nixpkgs/archive/a2ef604823615c020e98706600e609f47fc30726.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/3v9qai0162vplq523iqflirx2wqrgysw-python3.7-annoy-1.16.0
ls -la /nix/store/3v9qai0162vplq523iqflirx2wqrgysw-python3.7-annoy-1.16.0/bin

cc @timokau for testing.

@GrahamcOfBorg build python3.pkgs.rl-coach

authors: r-ryantm timokau


text:
haskellPackages.pandoc-emphasize-code: mark unbroken

Motivation for this change
To unbreak pandoc-emphasize-code. It actually seems to build just fine without any change necessary.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Thanks for the quick merge.

Oh, @cdepillabout is it possible to backport this change to 19.09 as well?

@rycee Yes, I believe it is.  If you open a PR for the backport to the release-19.09 branch, I will review it.
@peti Just to make sure, when backporting these kinds of changes to 19.09, it is okay to directly modify pkgs/development/haskell-modules/hackage-packages.nix, right?

Thanks @cdepillabout! I've opened  #72200 for the 19.09 change.

authors: cdepillabout rycee


text:
bgpdump: 2017-09-29 -> 1.6.0

Motivation for this change
Refresh an old package
+ it was reported as problematic by Repology because of version mismatch
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @nlewo

Thanks!


text:
xfce.catfish: 1.4.12 -> 1.4.13

Motivation for this change
Update to version 1.4.13
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Thanks @romildo

authors: romildo worldofpeace


text:
[ZHF] pythonPackages.astroquery 0.3.10 -> 0.4

Motivation for this change
Backport #80552 to the 20.03 release branch.
ZHF: #80379
cc @NixOS/nixos-release-managers

Doing random review.
I was able to successfully build the PR and use the module:
> nix-shell -p nixpkgs-review --run "nixpkgs-review pr 81409"
...
[nix-shell:~/.cache/nixpkgs-review/pr-81409-1]$ python3.8
Python 3.8.1 (default, Dec 18 2019, 19:06:26)
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from astroquery.simbad import Simbad
Downloading https://hpiers.obspm.fr/iers/bul/bulc/Leap_Second.dat
|==================================================================================| 1.3k/1.3k (100.00%)         0s
>>> result_table = Simbad.query_object("m1")
>>> result_table.pprint(show_unit=True)
MAIN_ID      RA         DEC     RA_PREC DEC_PREC ... COO_ERR_ANGLE COO_QUAL COO_WAVELENGTH     COO_BIBCODE
          "h:m:s"     "d:m:s"                    ...      deg
------- ----------- ----------- ------- -------- ... ------------- -------- -------------- -------------------
  M   1 05 34 31.94 +22 00 52.2       6        6 ...             0        C              R 2011A&A...533A..10L

authors: pvgoran smaret


text:
eigen: fetch source from gitlab

@svanderburg @7c6f434c
Motivation for this change
Migrated over to Gitlab.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

There seems to be a lot of rebuilds just from changing the src. I guess this would be better after a new version releases?


text:
nixos/initrd-ssh: switch from Dropbear to OpenSSH

Motivation for this change
Dropbear lags behind OpenSSH significantly in both support for modern
key formats like ssh-ed25519, let alone the recently-introduced
U2F/FIDO2-based sk-ssh-ed25519@openssh.com (as I found when I switched
my authorizedKeys over to it and promptly locked myself out of my
server's initrd SSH, breaking reboots), as well as security features
like multiprocess isolation. Using the same SSH daemon for stage-1 and
the main system ensures key formats will always remain compatible, as
well as more conveniently allowing the sharing of configuration and
host keys.
The main reason to use Dropbear over OpenSSH would be initrd space
concerns, but NixOS initrds are already large (17 MiB currently on my
server), and the size difference between the two isn't huge (the test's
initrd goes from 9.7 MiB to 12 MiB with this change). If the size is
still a problem, then it would be easy to shrink sshd down to a few
hundred kilobytes by using an initrd-specific build that uses musl and
disables things like Kerberos support.
This passes the test and works on my server, but more rigorous testing
and review from people who use initrd SSH would be appreciated!
@GrahamcOfBorg test initrd-network-ssh
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg test initrd-network-ssh

I think it's a good idea to not have two SSH servers to maintain.

Test failed.-

OpenSSH takes some time to start up, as a result test non-deterministically fails. This fixes the issue:
diff --git a/nixos/tests/initrd-network-ssh/default.nix b/nixos/tests/initrd-network-ssh/default.nix
index cc193c6cb6e..7e0930617f6 100644
--- a/nixos/tests/initrd-network-ssh/default.nix
+++ b/nixos/tests/initrd-network-ssh/default.nix
@@ -56,7 +56,17 @@ import ../make-test-python.nix ({ lib, ... }:
   testScript = ''
     start_all()
     client.wait_for_unit("network.target")
-    client.wait_until_succeeds("ping -c 1 server")
+
+
+    def ssh_is_up(_) -> bool:
+        status, _ = client.execute("nc -z server 22")
+        return status == 0
+
+
+    with client.nested("waiting for SSH server to come up"):
+        retry(ssh_is_up)
+
+
     client.succeed(
         "ssh -i /etc/sshKey -o UserKnownHostsFile=/etc/knownHosts server 'touch /fnord'"
     )

@GrahamcOfBorg test initrd-network-ssh

Applied @yegortimoshenko's patch, thanks!
@GrahamcOfBorg test initrd-network-ssh

@GrahamcOfBorg test initrd-network-ssh

Rebased to fix conflict in the release notes.
@GrahamcOfBorg test initrd-network-ssh
cc @volth @Mic92 for having touched this module (relatively) recently

Updated to remove the key generation functionality (and thus remove ssh-keygen from initrds).
@GrahamcOfBorg test initrd-network-ssh

@GrahamcOfBorg test initrd-network-ssh

Rebased again.
@GrahamcOfBorg test initrd-network-ssh

LGTM. I'd like to merge this on Mar 27 unless anyone objects. cc @Mic92 @adisbladis @cole-h @andrew-d @misuzu

This PR broke the build of my system, which was to be expected. I just found the PR after I updated the channel on a system that use initrd ssh.
And I read the manual for the new setting and followed the setup of creating keys and configured as described in the example of the manual.
Then it didn't work. And it died on my with the following error (I promise, the file exists):
cp: cannot stat '/persistent/etc/initrd-ssh/ssh_host_ed_25519_key': No such file or directory

So I read the test that was mentioned above after finding this issue through searching the first error message (regarding the old setting being removed) and doing a git blame and looking a bit in the log. And I've read the test to see that the test specify boot.initrd.network.ssh.hostKeys as a list of paths and not as list of strings (as it's described in the manual for boot.initrd.network.ssh.hostKeys).
Broken:
{
  boot.initrd.network.ssh.hostKeys = [
    "/persistent/etc/initrd-ssh/ssh_host_rsa_key"
    "/persistent/etc/initrd-ssh/ssh_host_ed_25519_key"
  ];
}

Works:
{
  boot.initrd.network.ssh.hostKeys = [
    /persistent/etc/initrd-ssh/ssh_host_rsa_key
    /persistent/etc/initrd-ssh/ssh_host_ed_25519_key
  ];
}

I feel that this should be mentioned in the documentation somehow. In text or through an updated example.
Also, big thanks to @emilazy for doing this work, it has always been a bit meh for me that we've had dropbear since it doesn't support all types of keys that are common today. :)

Yep, see #84976, #85004; sorry you ran into this before the latter was merged.

Cool! Thanks :)

This change has created many problems for me, especially when combined with nixops deployments; it smacks of fixing something that wasn't broken:

I've no secure way or desire to push state (private host keys) to remote machines
Old system profiles that are broken by a bad path persist in breaking the rebuilds until they are removed by --delete-generations
I haven't even tried to boot these initrds yet, but it sounds like others are having problem with the openssh process starting up reliably.

At least one of these should be possible, going forward:

Select between using Dropbear or OpenSSH in initrd
Auto-generate keys in OpenSSH
Wait for proper secret storage in the nix store to be finished (I'm unclear on the status of this)
Find a way to deterministically generate the host key at run-time from the hardware

I'm willing to accept the security risks of using Dropbear and auto-generated keys. As far as I understand, any key embedded in the initrd is prone to being compromised anyway, and only through using some HW-crypto TPM scheme with secure boot could it be significantly mitigated. Keeping unprivileged users away from the host key but not root is a distinction without a difference, for my purposes.
I may be missing something simple regarding nixops/nixstore and secrets, but my initial impression of these changes is that they add configuration and runtime complexity for no real benefit. Forcing users to add more lines to their configs to do the same thing as before is regressive, and should be avoided at all costs.

This PR scratched at least one concrete itch for me (ed25519 key support), but I'm sorry that it's causing you problems.
I understand your objections primarily relate to the initrd secrets mechanism, which was already optionally used by the previous implementation. My original PR supported generating host keys at boot, like the previous implementation. I removed it at the request of the reviewer @Mic92 (https://github.com/NixOS/nixpkgs/pull/82603#discussion_r395337704, https://github.com/NixOS/nixpkgs/pull/82603#discussion_r395489116) as it makes very little sense to generate SSH host keys on every boot, and the migration overhead is one ssh-keygen(1) and a single line of NixOS configuration. The functionality could easily be restored, though, and has nothing to do with Dropbear vs. OpenSSH.

I haven't even tried to boot these initrds yet, but it sounds like others are having problem with the openssh process starting up reliably.

I haven't heard any reports of this; @etu's comment was a system build-time issue related to the implementation of initrd secrets that would have happened with the same configuration before this PR, and has been fixed in master. If you know of anyone having issues, please point me to them so I can help fix it.

(As far as fixing things that weren't broken goes, I think "using Ed25519 SSH public keys in your NixOS configuration will silently brick your initrd without warning" is definitely something broken, and had to be addressed one way or another; I implemented this PR after having to manually rescue my server boot after migrating off legacy RSA keys.)

NixOS breaking because it no longer has an RSA hostkey to use in initrd is a problem orthogonal to these changes; checks and warnings can always be improved. Rather than continuing to try to explain why the changes bother me, let me propose a solution:
TPM is the superior option for securing the initrd environment. I'm not too familiar with it myself, but I think it should be possible to store the private part of the host key in there, so not even root can ever see it. I don't understand TPM's design well enough to entrust it with my disk keys, but for a host key it should be more than enough. Whether OpenSSH or the initrd environment can be made to use the TPM for its encryption is a matter I would need to research.
Any precautions taken in storing keys outside of TPM are half-measures. Read permissions to /boot/**/*initrd (the default, btw) give an attacker all the material he needs to spoof your host and capture its disk keys from you.
I think configuration.nix should offer admins at minimum 2 options:

I don't care about security or I trust my network; generate a host key every boot
Store the host key material in TPM where nobody can read it, not even root.
(optional, actual) Store a fixed key somewhere on the host's FS

The second option is the best and should be encouraged, but not everyone has a TPM device available. Appropriate warnings should be shown based on whichever is chosen, but forcing admins to manage extra state by default is bad practice, so the first option should be the not-so-silent default.

I'm referring to the user authorizedKeys that are used to log in to the initrd sshd, not host keys. No amount of build-time checks can get around the fact that my YubiKey only has 4 OpenPGP key slots and all of them are Ed25519; there is literally no way for me to use my hardware security token to log in to my server without ssh-ed25519 key support (or sk-ssh-{ecdsa,ed25519}@openssh.com, since FIDO supports an arbitrary number of derived key pairs on the device, but again this is OpenSSH only). (As far as read permissions go, I have options = [ "umask=077 " ] set on /boot; arguably this should be default when using initrd secrets but it'd be fiddly to achieve, as /boot is often FAT32 which has no permission support, hence the requirement to use a mount option.)
Deriving a private key from a TPM would potentially be possible for those platforms that support it, but it would be a lot of engineering work (likely requiring extensive patches to the SSH daemon, as TPMs generally do not disclose a private key blob to you but act as an HSM), and we'd still need a basic mechanism to copy things to the initrd for the simple case.  Currently NixOS has no real strong verified boot chain or TPM support, so I don't think that pervasively using the TPM really makes sense, but it would definitely be an interesting project to implement.
The following patch should enable generating keys at boot again:
diff --git a/nixos/modules/system/boot/initrd-ssh.nix b/nixos/modules/system/boot/initrd-ssh.nix
index 5a334e69056..30da7b533a6 100644
--- a/nixos/modules/system/boot/initrd-ssh.nix
+++ b/nixos/modules/system/boot/initrd-ssh.nix
@@ -133,19 +133,13 @@ in
         assertion = cfg.authorizedKeys != [];
         message = "You should specify at least one authorized key for initrd SSH";
       }
-
-      {
-        assertion = cfg.hostKeys != [];
-        message = ''
-          You must now pre-generate the host keys for initrd SSH.
-          See the boot.initrd.network.ssh.hostKeys documentation
-          for instructions.
-        '';
-      }
     ];

     boot.initrd.extraUtilsCommands = ''
       copy_bin_and_libs ${pkgs.openssh}/bin/sshd
+      ${optionalString (cfg.hostKeys == []) ''
+        copy_bin_and_libs ${pkgs.openssh}/bin/ssh-keygen
+      ''}
       cp -pv ${pkgs.glibc.out}/lib/libnss_files.so.* $out/lib
     '';

@@ -181,6 +175,11 @@ in
         chmod 0600 "${initrdKeyPath path}"
       '')}

+      ${optionalString (cfg.hostKeys == []) ''
+        ssh-keygen -q -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key
+        ssh-keygen -q -t ed25519 -N "" -f /etc/ssh/ssh_host_ed25519_key
+      ''}
+
       /bin/sshd -e
     '';

If this works for you, I can open a new PR and see what people think about restoring this functionality upstream. I think that recommending people set static host keys is still the most reasonable default, though; ssh(1) really doesn't like host keys changing on every connect and it's both simple to get up to be relatively secure (only root or your hosting provider can see the keys), and is never more insecure than generating keys on boot even when the bootloader doesn't support initrd secrets natively.

While I'm excited to see this PR (since I would rather be rid of Dropbear either way), it seems worth noting that the concrete itch (Ed25519 support) is covered by Dropbear now: https://github.com/mkj/dropbear/pull/91

While I'm excited to see this PR (since I would rather be rid of Dropbear either way), it seems worth noting that the concrete itch mentioned (Ed25519 support) got covered by Dropbear prior to this getting merged: https://github.com/mkj/dropbear/pull/91

For something as mission-critical and prone to breakage as the initrd environment, I find it imprudent to make such a substantial change and not leave behind an option to keep the old behavior, at least until the next major release, warning users until then. Being forced to face the potential of bricking your remote host with an update to initrd you have no use for is not a pleasant experience.
I also don't understand the disdain for Dropbear; it does the job of creating a secure channel over which to receive the unlock key. I'm confident many users like myself can trust their networks, and don't have to worry about MITM attacks for stealing keys that could probably be more practically stolen by reading kernel memory on the booted host. It should probably always be an option, if only to keep the initrd closure size down by a few MB.

@edef1c
It's good to hear that Dropbear supports Ed25519 keys now, since it's widely deployed in a lot of embedded environments and Ed25519 keys are getting very common. Still, there's a lot of functionality with no support in Dropbear; other than U2F/FIDO keys, to my knowledge Dropbear doesn't support SSH CAs at all, so even if it had equally good privilege separation there are a lot of configurations that would require OpenSSH.
The supported set of ciphers is also not ideal by modern cryptography standards, with no support for AES-GCM or ChaCha20-Poly1305, our top-preference OpenSSH ciphers (though this too seems like it's being addressed, it's several years after OpenSSH, libssh, tinyssh, ...).
@elitak
Unless you have any concrete problems with this PR that you didn't mention in previous comments, I'm afraid I don't have much more to say than my existing replies. The functionality is tested, this change has been in unstable for a month and a half now, and nobody has had any issues to my knowledge that weren't a result of initrd secrets misconfiguration/infelicities (which are tracked in other issues (#85000, #85563) and orthogonal to the choice of SSH implementation), so while I appreciate that changes to initrd should be made carefully, I don't think your stated reasons for conservatism override the benefits of using OpenSSH (better compatibility, better security architecture, the maintenance and support benefits of only having one SSH implementation used in NixOS).
I believe that maintaining parallel support for Dropbear would be a significant maintenance and testing burden and lead to a lot of additional code complexity for no concrete benefit. If initrd closure size is an issue, then there are several potential avenues to reducing the OpenSSH closure size mentioned in the original commit message that could be explored; I'd be happy to review a PR adding such an option if you'd like to write one. If you're having specific problems with initrd SSH after this change, I'd be happy to help debug them. Otherwise, I understand that you don't personally agree with this change, but I hope you can also understand that I think the benefits outweigh the costs of switching implementation.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/full-encrypted-nixos-system-on-legacy-boot-with-secrets-and-remote-unlock-for-unstable-20-03/8279/1

authors: alyssais bachp edef1c elitak emilazy etu nixos-discourse yegortimoshenko


text:
nlohmann_json: 3.7.3 -> 3.8.0

Semi-automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/nlohmann_json/versions.
meta.description for nlohmann_json is: "Header only C++ library for the JSON file format"
meta.homepage for nlohmann_json is: "https://github.com/nlohmann/json"
meta.changelog for nlohmann_json is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 3.8.0 with grep in /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0

directory tree listing: https://gist.github.com/5419a1f4260da3841290cddf931a3555

du listing: https://gist.github.com/f3b32df65bac0bc0988088a7c7ac4ea0

Rebuild report (if merged into master) (click to expand)

214 total rebuild path(s)

60 package rebuild(s)

60 x86_64-linux rebuild(s)
53 i686-linux rebuild(s)
49 x86_64-darwin rebuild(s)
52 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
bundix
cabal2nix
cachix
common-updater-scripts
cpp-ipfs-api
crystal2nix
dep2nix
disnix
disnixos
fusionInventory
giada
go2nix
haskellPackages.cachix
haskellPackages.nix-paths
hydra-migration
hydra-unstable
lispPackages.quicklisp-to-nix
lispPackages.quicklisp-to-nix-system-info
mtxclient
nheko
nix
nix-build-uncached
nix-bundle
nix-direnv
nix-du
nix-exec
nix-index
nix-pin
nix-plugins
nix-prefetch
nix-prefetch-bzr
nix-prefetch-cvs
nix-prefetch-docker
nix-prefetch-git
nix-prefetch-hg
nix-prefetch-scripts
nix-prefetch-svn
nix-serve
nix-update
nix-update-source
nixFlakes
nixStable
nixUnstable
nixos-generators
nixos-shell
nixpkgs-review
nixui
nlohmann_json
pantheon.nixpkgs-github-update
poedit

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A nlohmann_json https://github.com/r-ryantm/nixpkgs/archive/594a769cee97fe16b38aee7aa20ee7f1152d3770.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0
ls -la /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review 1

7 packages marked as broken and skipped:
- cadaver
- nix-delegate
- nix-deploy
- nix-exec
- python37Packages.pythonnet
- python38Packages.nixpkgs-pytools
- python38Packages.pythonnet

6 packages failed to build:
- disnix
- disnixos
- hydra-unstable
- nixFlakes
- nixUnstable
- python37Packages.nixpkgs

49 packages built:
- bundix
- cabal2nix
- cachix
- common-updater-scripts
- cpp-ipfs-api
- crystal2nix
- dep2nix
- fusionInventory
- giada
- go2nix
- hydra-migration
- lispPackages.quicklisp-to-nix
- lispPackages.quicklisp-to-nix-system-info
- mtxclient
- nheko
- nix (nixStable)
- nix-binary-cache
- nix-build-uncached
- nix-bundle
- nix-direnv
- nix-du
- nix-index
- nix-pin
- nix-plugins
- nix-prefetch
- nix-prefetch-bzr
- nix-prefetch-cvs
- nix-prefetch-docker
- nix-prefetch-git
- nix-prefetch-hg
- nix-prefetch-scripts
- nix-prefetch-svn
- nix-review (nixpkgs-review)
- nix-serve
- nix-update
- nix-update-source
- nixos-generators
- nixos-shell
- nixui
- nlohmann_json
- pantheon.nixpkgs-github-update
- poedit
- python37Packages.pythonix
- python38Packages.nixpkgs
- python38Packages.pythonix
- sycl-info
- toxvpn
- vgo2nix
- vulnix

Maintainer pings

Changelog says:

All changes are backward-compatible.

But nixUnstable fails with error:
src/libexpr/json-to-value.cc: In function 'void nix::parseJSON(nix::EvalState&, const string&, nix::Value&)':
src/libexpr/json-to-value.cc:154:13: error: cannot declare variable 'parser' to be of abstract type 'nix::JSONSax'
  154 |     JSONSax parser(state, v);
      |             ^~~~~~
src/libexpr/json-to-value.cc:12:7: note:   because the following virtual functions are pure within 'nix::JSONSax':
   12 | class JSONSax : nlohmann::json_sax<json> {
      |       ^~~~~~~

Click to expand
src/libexpr/json-to-value.cc: In function 'void nix::parseJSON(nix::EvalState&, const string&, nix::Value&)':
src/libexpr/json-to-value.cc:154:13: error: cannot declare variable 'parser' to be of abstract type 'nix::JSONSax'
  154 |     JSONSax parser(state, v);
      |             ^~~~~~
src/libexpr/json-to-value.cc:12:7: note:   because the following virtual functions are pure within 'nix::JSONSax':
   12 | class JSONSax : nlohmann::json_sax<json> {
      |       ^~~~~~~
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:18,
                 from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/json_sax.hpp:81:18: note:         'bool nlohmann::json_sax<BasicJsonType>::binary(nlohmann::json_sax<BasicJsonType>::binary_t&) [with BasicJsonType = nlohmann::basic_json<>; nlohmann::json_sax<BasicJsonType>::binary_t = nlohmann::byte_container_with_subtype<std::vector<unsigned char> >]'
   81 |     virtual bool binary(binary_t& val) = 0;
      |                  ^~~~~~
  CXX    src/libexpr/function-trace.o
  CXX    src/libstore/build.o
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp: In instantiation of 'bool nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::parse_cbor_internal(bool) [with BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >; SAX = nix::JSONSax]':
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:100:26:   required from 'bool nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::sax_parse(nlohmann::detail::input_format_t, nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::json_sax_t*, bool) [with BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >; SAX = nix::JSONSax; nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::json_sax_t = nix::JSONSax]'
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:6744:16:   required from 'static bool nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::sax_parse(InputType&&, SAX*, nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::input_format_t, bool) [with InputType = const std::__cxx11::basic_string<char>&; SAX = nix::JSONSax; ObjectType = std::map; ArrayType = std::vector; StringType = std::__cxx11::basic_string<char>; BooleanType = bool; NumberIntegerType = long int; NumberUnsignedType = long unsigned int; NumberFloatType = double; AllocatorType = std::allocator; JSONSerializer = nlohmann::adl_serializer; BinaryType = std::vector<unsigned char>; nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::input_format_t = nlohmann::detail::input_format_t]'
src/libexpr/json-to-value.cc:155:43:   required from here
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:538:43: error: 'bool nlohmann::json_sax<BasicJsonType>::binary(nlohmann::json_sax<BasicJsonType>::binary_t&) [with BasicJsonType = nlohmann::basic_json<>; nlohmann::json_sax<BasicJsonType>::binary_t = nlohmann::byte_container_with_subtype<std::vector<unsigned char> >]' is inaccessible within this context
  538 |                 return get_cbor_binary(b) and sax->binary(b);
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:18,
                 from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/json_sax.hpp:81:18: note: declared here
   81 |     virtual bool binary(binary_t& val) = 0;
      |                  ^~~~~~
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:538:43: error: 'nlohmann::json_sax<nlohmann::basic_json<> >' is not an accessible base of 'nlohmann::detail::binary_reader<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >, nix::JSONSax>::json_sax_t' {aka 'nix::JSONSax'}
  538 |                 return get_cbor_binary(b) and sax->binary(b);
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp: In instantiation of 'bool nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::parse_msgpack_internal() [with BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >; SAX = nix::JSONSax]':
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:104:26:   required from 'bool nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::sax_parse(nlohmann::detail::input_format_t, nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::json_sax_t*, bool) [with BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >; SAX = nix::JSONSax; nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::json_sax_t = nix::JSONSax]'
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:6744:16:   required from 'static bool nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::sax_parse(InputType&&, SAX*, nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::input_format_t, bool) [with InputType = const std::__cxx11::basic_string<char>&; SAX = nix::JSONSax; ObjectType = std::map; ArrayType = std::vector; StringType = std::__cxx11::basic_string<char>; BooleanType = bool; NumberIntegerType = long int; NumberUnsignedType = long unsigned int; NumberFloatType = double; AllocatorType = std::allocator; JSONSerializer = nlohmann::adl_serializer; BinaryType = std::vector<unsigned char>; nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::input_format_t = nlohmann::detail::input_format_t]'
src/libexpr/json-to-value.cc:155:43:   required from here
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:1288:46: error: 'bool nlohmann::json_sax<BasicJsonType>::binary(nlohmann::json_sax<BasicJsonType>::binary_t&) [with BasicJsonType = nlohmann::basic_json<>; nlohmann::json_sax<BasicJsonType>::binary_t = nlohmann::byte_container_with_subtype<std::vector<unsigned char> >]' is inaccessible within this context
 1288 |                 return get_msgpack_binary(b) and sax->binary(b);
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:18,
                 from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/json_sax.hpp:81:18: note: declared here
   81 |     virtual bool binary(binary_t& val) = 0;
      |                  ^~~~~~
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:1288:46: error: 'nlohmann::json_sax<nlohmann::basic_json<> >' is not an accessible base of 'nlohmann::detail::binary_reader<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >, nix::JSONSax>::json_sax_t' {aka 'nix::JSONSax'}
 1288 |                 return get_msgpack_binary(b) and sax->binary(b);
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp: In instantiation of 'bool nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::parse_bson_element_internal(nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::char_int_type, std::size_t) [with BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >; SAX = nix::JSONSax; nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::char_int_type = int; std::size_t = long unsigned int]':
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:350:17:   required from 'bool nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::parse_bson_element_list(bool) [with BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >; SAX = nix::JSONSax]'
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:156:13:   required from 'bool nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::parse_bson_internal() [with BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >; SAX = nix::JSONSax]'
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:96:26:   required from 'bool nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::sax_parse(nlohmann::detail::input_format_t, nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::json_sax_t*, bool) [with BasicJsonType = nlohmann::basic_json<>; InputAdapterType = nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >; SAX = nix::JSONSax; nlohmann::detail::binary_reader<BasicJsonType, InputAdapterType, SAX>::json_sax_t = nix::JSONSax]'
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:6744:16:   required from 'static bool nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::sax_parse(InputType&&, SAX*, nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::input_format_t, bool) [with InputType = const std::__cxx11::basic_string<char>&; SAX = nix::JSONSax; ObjectType = std::map; ArrayType = std::vector; StringType = std::__cxx11::basic_string<char>; BooleanType = bool; NumberIntegerType = long int; NumberUnsignedType = long unsigned int; NumberFloatType = double; AllocatorType = std::allocator; JSONSerializer = nlohmann::adl_serializer; BinaryType = std::vector<unsigned char>; nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::input_format_t = nlohmann::detail::input_format_t]'
src/libexpr/json-to-value.cc:155:43:   required from here
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:282:114: error: 'bool nlohmann::json_sax<BasicJsonType>::binary(nlohmann::json_sax<BasicJsonType>::binary_t&) [with BasicJsonType = nlohmann::basic_json<>; nlohmann::json_sax<BasicJsonType>::binary_t = nlohmann::byte_container_with_subtype<std::vector<unsigned char> >]' is inaccessible within this context
  282 |                 return get_number<std::int32_t, true>(input_format_t::bson, len) and get_bson_binary(len, value) and sax->binary(value);
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:18,
                 from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/json_sax.hpp:81:18: note: declared here
   81 |     virtual bool binary(binary_t& val) = 0;
      |                  ^~~~~~
In file included from /nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/json.hpp:56,
                 from src/libexpr/json-to-value.cc:4:
/nix/store/7nrhwdg3pmwh3886zzckk10kwrfh1ndh-nlohmann_json-3.8.0/include/nlohmann/detail/input/binary_reader.hpp:282:114: error: 'nlohmann::json_sax<nlohmann::basic_json<> >' is not an accessible base of 'nlohmann::detail::binary_reader<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > >, nix::JSONSax>::json_sax_t' {aka 'nix::JSONSax'}
  282 |                 return get_number<std::int32_t, true>(input_format_t::bson, len) and get_bson_binary(len, value) and sax->binary(value);
  CXX    src/nix/sigs.o
  CXX    src/libexpr/eval.o
make: *** [mk/patterns.mk:3: src/libexpr/json-to-value.o] Error 1
make: *** Waiting for unfinished jobs....
builder for '/nix/store/4spy4b4hv8lf0plzxmbd9aiy9m8iqxfi-nix-2.4pre7534_b92f58f6.drv' failed with exit code 2

CC @edolstra

@GrahamcOfBorg eval

authors: doronbehar nh2 r-ryantm


text:
python38Packages.coloredlogs: disable tests on darwin

Fixing the build on darwin / py38 by turning capturer and verboselogs into checkInputs and disabling the test for this combo.
This can be reverted after https://github.com/xolox/python-capturer/issues/10 is fixed.
See

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[x] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@jonringer done.

@tobim Please fix the merge conflict.

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 96037 run on x86_64-linux 1

19 packages built:

coloredlogs (python38Packages.coloredlogs)
executor (python38Packages.executor)
ocrmypdf
python37Packages.coloredlogs
python37Packages.executor
python37Packages.property-manager
python37Packages.rotate-backups
python37Packages.update-dotdee
python37Packages.zigpy-znp
python38Packages.property-manager
rotate-backups (python38Packages.rotate-backups)
update-dotdee (python38Packages.update-dotdee)
python38Packages.zigpy-znp
python39Packages.coloredlogs
python39Packages.executor
python39Packages.property-manager
python39Packages.rotate-backups
python39Packages.update-dotdee
python39Packages.zigpy-znp

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 96037 run on x86_64-linux 1

19 packages built:

coloredlogs (python38Packages.coloredlogs)
executor (python38Packages.executor)
ocrmypdf
python37Packages.coloredlogs
python37Packages.executor
python37Packages.property-manager
python37Packages.rotate-backups
python37Packages.update-dotdee
python37Packages.zigpy-znp
python38Packages.property-manager
rotate-backups (python38Packages.rotate-backups)
update-dotdee (python38Packages.update-dotdee)
python38Packages.zigpy-znp
python39Packages.coloredlogs
python39Packages.executor
python39Packages.property-manager
python39Packages.rotate-backups
python39Packages.update-dotdee
python39Packages.zigpy-znp

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 96037 run on x86_64-darwin 1

10 packages failed to build and are new build failures:

python37Packages.coloredlogs: log https://termbin.com/mj6c
python37Packages.executor: log was empty
python37Packages.property-manager: log was empty
python37Packages.rotate-backups: log was empty
python37Packages.update-dotdee: log was empty
python39Packages.coloredlogs: log was empty
python39Packages.executor: log was empty
python39Packages.property-manager: log was empty
python39Packages.rotate-backups: log was empty
python39Packages.update-dotdee: log was empty

5 packages built:

coloredlogs (python38Packages.coloredlogs)
executor (python38Packages.executor)
python38Packages.property-manager
rotate-backups (python38Packages.rotate-backups)
update-dotdee (python38Packages.update-dotdee)

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 96037 run on x86_64-darwin 1

10 packages failed to build and are new build failures:

python37Packages.coloredlogs: log https://termbin.com/mj6c
python37Packages.executor: log was empty
python37Packages.property-manager: log was empty
python37Packages.rotate-backups: log was empty
python37Packages.update-dotdee: log was empty
python39Packages.coloredlogs: log was empty
python39Packages.executor: log was empty
python39Packages.property-manager: log was empty
python39Packages.rotate-backups: log was empty
python39Packages.update-dotdee: log was empty

5 packages built:

coloredlogs (python38Packages.coloredlogs)
executor (python38Packages.executor)
python38Packages.property-manager
rotate-backups (python38Packages.rotate-backups)
update-dotdee (python38Packages.update-dotdee)


text:
🛑 BreezeWiki breezewiki.hyperreal.coffee is down

In cba9b31, BreezeWiki breezewiki.hyperreal.coffee (https://breezewiki.hyperreal.coffee) was down:

HTTP code: 0
Response time: 0 ms

Resolved: BreezeWiki breezewiki.hyperreal.coffee is back up in 86c9440 after 38 minutes.

source: gharchive/issue

repo: NoPlagiarism/services-personal-upptime


text:
🛑 libreddit libreddit.domain.glass is down

In 4968399, libreddit libreddit.domain.glass (https://libreddit.domain.glass) was down:

HTTP code: 503
Response time: 193 ms

Resolved: libreddit libreddit.domain.glass is back up in 3c37367 after 9 minutes.


text:
🛑 AnonymousOverflow overflow.lunar.icu is down

In bf14c61, AnonymousOverflow overflow.lunar.icu (https://overflow.lunar.icu) was down:

HTTP code: 0
Response time: 0 ms

Resolved: AnonymousOverflow overflow.lunar.icu is back up in a7f9fac after 9 minutes.


text:
🛑 libreddit discuss.whatever.social is down

In 0e72238, libreddit discuss.whatever.social (https://discuss.whatever.social) was down:

HTTP code: 0
Response time: 0 ms

Resolved: libreddit discuss.whatever.social is back up in d54b824 after 30 minutes.


text:
hCaptcha protected sites without  'data-sitekey' and 'challenge-form submit' elements

Some sites seem to obfuscate their site-keys and other elements on the page (or they use the hCaptcha stuff in a different way). Since hcaptcha-solver doesn't require the sitekey, I made some changes so the code doesn't break when these elements are not found:
routes.ts
lines 157ff
let sitekey = null
         if (captchaType != 'hCaptcha' && process.env.CAPTCHA_SOLVER != 'hcaptcha-solver') {
           const sitekeyElem = await page.$('*[data-sitekey]')
           if (!sitekeyElem) { return ctx.errorResponse('Could not find sitekey!') }
           sitekey = await sitekeyElem.evaluate((e) => e.getAttribute('data-sitekey'))
         }

lines 187ff
try {
              await page.waitForSelector('#challenge-form [type=submit]', {
              timeout: 5000
            })
          } catch (err) {
            log.debug(`No '#challenge-form [type=submit]' element detected.`)
          }

I can make a PR if you like but maybe you want to code it differently or look into the issue.
Cheers,
Jx-

Sorry, I've been bust lately. I read this and thought I responded...
Feel free to submit a PR and I can tinker with it if need be.

Could you send me as many example domains with this behavior? I'd like to take a closer look at what they are doing to obfuscate the captchas.

authors: NoahCardoza jairoxyz

repo: NoahCardoza/CloudProxy


text:
add new line if global_prep_cmd doesn't exist

Fixes #8

Reverting commit as it did not fix the issue, but I will fix the bug however.
This has to deal with how PowerShell implicity changes types on the fly, instead of remaining the same type.
The reason it did not line break, is because it assumed it was a string instead of a string array. PowerShell just magically made the $config variable a string because it only had one line.
The real fix is basically casting the $config as [object[]]

authors: Nonary alanmccallum

repo: Nonary/ResolutionAutomation

license: Unlicense


text:
exception: disposed with an active ticker

relevant lines
The following assertion was thrown while finalizing the widget tree:
flutter: PimpedButtonState#0c8cd(ticker active) was disposed with an active Ticker.
flutter: PimpedButtonState created a Ticker via its SingleTickerProviderStateMixin, but at the time dispose()
flutter: was called on the mixin, that Ticker was still active. The Ticker must be disposed before calling
flutter: super.dispose(). Tickers used by AnimationControllers should be disposed by calling dispose() on the
flutter: AnimationController itself. Otherwise, the ticker will leak.
flutter: The offending ticker was: Ticker(created by PimpedButtonState#0c8cd(lifecycle state: created))
flutter: The stack trace when the Ticker was actually created was:
...
flutter: #4      PimpedButtonState.initState (package:pimp_my_button/src/pimp_my_button.dart:38:18)

full stacktrace:
flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following assertion was thrown while finalizing the widget tree:
flutter: PimpedButtonState#0c8cd(ticker active) was disposed with an active Ticker.
flutter: PimpedButtonState created a Ticker via its SingleTickerProviderStateMixin, but at the time dispose()
flutter: was called on the mixin, that Ticker was still active. The Ticker must be disposed before calling
flutter: super.dispose(). Tickers used by AnimationControllers should be disposed by calling dispose() on the
flutter: AnimationController itself. Otherwise, the ticker will leak.
flutter: The offending ticker was: Ticker(created by PimpedButtonState#0c8cd(lifecycle state: created))
flutter: The stack trace when the Ticker was actually created was:
flutter: #0      new Ticker.<anonymous closure> (package:flutter/src/scheduler/ticker.dart:64:40)
flutter: #1      new Ticker (package:flutter/src/scheduler/ticker.dart:66:6)
flutter: #2      _PimpedButtonState&State&SingleTickerProviderStateMixin.createTicker (package:flutter/src/widgets/ticker_provider.dart:97:19)
flutter: #3      new AnimationController (package:flutter/src/animation/animation_controller.dart:155:21)
flutter: #4      PimpedButtonState.initState (package:pimp_my_button/src/pimp_my_button.dart:38:18)
flutter: #5      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3763:58)
flutter: #6      ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #7      Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #8      MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4771:32)
flutter: #9      Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #10     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #11     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #12     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #13     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #14     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #15     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #16     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #17     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #18     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #19     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #20     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #21     Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #22     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #23     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #24     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #25     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #26     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #27     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #28     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #29     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #30     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #31     Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #32     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #33     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #34     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #35     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #36     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #37     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #38     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #39     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #40     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #41     Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #42     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #43     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #44     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #45     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #46     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #47     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #48     Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #49     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #50     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #51     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #52     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #53     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #54     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #55     Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #56     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #57     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #58     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #59     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #60     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #61     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #62     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #63     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #64     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #65     Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #66     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #67     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #68     ParentDataElement.mount (package:flutter/src/widgets/framework.dart:3967:11)
flutter: #69     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #70     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4771:32)
flutter: #71     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #72     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #73     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #74     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #75     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #76     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #77     Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #78     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #79     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #80     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #81     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #82     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #83     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #84     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #85     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4771:32)
flutter: #86     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #87     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #88     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #89     Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #90     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #91     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #92     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #93     Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #94     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #95     Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #96     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #97     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #98     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #99     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #100    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #101    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #102    Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #103    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #104    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #105    Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #106    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #107    ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #108    Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #109    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #110    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #111    Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #112    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #113    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #114    Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #115    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #116    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #117    ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #118    Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #119    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #120    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #121    Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #122    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #123    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #124    ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #125    Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #126    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #127    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #128    Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #129    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #130    SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4666:14)
flutter: #131    Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #132    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #133    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #134    Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #135    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #136    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3781:11)
flutter: #137    ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #138    Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #139    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #140    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3665:16)
flutter: #141    Element.rebuild (package:flutter/src/widgets/framework.dart:3507:5)
flutter: #142    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3634:5)
flutter: #143    ComponentElement.mount (package:flutter/src/widgets/framework.dart:3629:5)
flutter: #144    Element.inflateWidget (package:flutter/src/widgets/framework.dart:2919:14)
flutter: #145    Element.updateChild (package:flutter/src/widgets/framework.dart:2722:12)
flutter: #146    _SliverPersistentHeaderElement._build.<anonymous closure> (package:flutter/src/widgets/sliver_persistent_header.dart:199:15)
flutter: #147    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2235:19)
flutter: #148    _SliverPersistentHeaderElement._build (package:flutter/src/widgets/sliver_persistent_header.dart:198:11)
flutter: #149    __RenderSliverPinnedPersistentHeaderForWidgets&_RenderSliverPinnedPersistentHeader&_RenderSliverPersistentHeaderForWidgetsMixin.updateChild (package:flutter/src/widgets/sliver_persistent_header.dart:270:14)
flutter: #150    RenderSliverPersistentHeader.layoutChild.<anonymous closure> (package:flutter/src/rendering/sliver_persistent_header.dart:126:9)
flutter: #151    RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1727:58)
flutter: #152    PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:796:15)
flutter: #153    RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1727:13)
flutter: #154    RenderSliverPersistentHeader.layoutChild (package:flutter/src/rendering/sliver_persistent_header.dart:124:7)
flutter: #155    RenderSliverPinnedPersistentHeader.performLayout (package:flutter/src/rendering/sliver_persistent_header.dart:294:5)
flutter: #156    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #157    RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:405:13)
flutter: #158    RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1320:12)
flutter: #159    RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1238:20)
flutter: #160    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #161    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #162    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #163    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #164    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #165    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #166    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #167    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #168    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #169    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #170    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #171    MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:141:11)
flutter: #172    _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:338:7)
flutter: #173    MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:211:7)
flutter: #174    RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:355:14)
flutter: #175    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #176    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #177    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #178    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #179    _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1192:11)
flutter: #180    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #181    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #182    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #183    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #184    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #185    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #186    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #187    RenderStack.performLayout (package:flutter/src/rendering/stack.dart:520:15)
flutter: #188    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #189    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #190    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #191    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #192    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #193    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #194    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #195    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #196    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #197    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #198    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #199    RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:2882:14)
flutter: #200    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #201    RenderStack.performLayout (package:flutter/src/rendering/stack.dart:520:15)
flutter: #202    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #203    __RenderTheatre&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #204    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #205    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #206    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #207    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #208    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #209    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #210    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #211    RenderStack.performLayout (package:flutter/src/rendering/stack.dart:520:15)
flutter: #212    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #213    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #214    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #215    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #216    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #217    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #218    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #219    _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:108:13)
flutter: #220    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #221    RenderStack.performLayout (package:flutter/src/rendering/stack.dart:520:15)
flutter: #222    RenderObject.layout (package:flutter/src/rendering/object.dart:1631:7)
flutter: #223    MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:141:11)
flutter: #224    _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:338:7)
flutter: #225    MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:211:7)
flutter: #226    RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:355:14)
flutter: #227    RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1506:7)
flutter: #228    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:765:18)
flutter: #229    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:270:19)
flutter: #230    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:654:13)
flutter: #231    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
flutter: #232    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
flutter: #233    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
flutter: #234    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
flutter: #235    _invoke (dart:ui/hooks.dart:128:13)
flutter: #236    _drawFrame (dart:ui/hooks.dart:117:3)

and
flutter: When the exception was thrown, this was the stack:
flutter: #0      _PimpedButtonState&State&SingleTickerProviderStateMixin.dispose.<anonymous closure> (package:flutter/src/widgets/ticker_provider.dart:110:7)
flutter: #1      _PimpedButtonState&State&SingleTickerProviderStateMixin.dispose (package:flutter/src/widgets/ticker_provider.dart:119:6)
flutter: #2      StatefulElement.unmount (package:flutter/src/widgets/framework.dart:3833:12)
flutter: #3      _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1697:13)
flutter: #4      _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1695:7)
flutter: #5      MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4754:16)
flutter: #6      _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1693:13)
flutter: #7      _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1695:7)
flutter: #8      SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4654:14)
flutter: #9      _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1693:13)
flutter: #10     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1695:7)
flutter: #11     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4654:14)
...

Calling super.dispose() ahead of _controller.dispose() caused this error in my project.
Swapping it so that _controller.dispose() was called first fixed it:
@override
void dispose() {
  _controller.dispose();
  super.dispose();
}

Excelente muchas gracias

authors: mgleason modulovalue russomaclaud