Pykeepass failed to build --> qutebrowser failed to build

I assume this is related to the python upgrades going on, but recently qutebrowser is failing to build.

It seem the culprit is pykeepass.

Does anyone know if this is being worked on, or if there is a workaround, or a way to use a different version of qutebrowser that will build?

error: 1 dependencies of derivation '/nix/store/jscd98zw883yy47rkamf0y3rgqwkzfk7-python3.12-pykeepass-4.1.0-post1.drv' failed to build
error: 1 dependencies of derivation '/nix/store/yf02gf9hbasv8dabdhx6a2lb2fpg1jdq-qutebrowser-3.2.1.drv' failed to build

It says a dependency failed to build, see what that dependency is first and report it on github if no one else did.

Thanks for the reply. Your reply helped me to understand where to research and report these issues. I now have a better handle on it.

For completeness, the issue looks like it has been fixed 3 hours ago, but I don’t know how long it will take to be available?

Fix is on master, but it takes time to get to channels.
It is everywhere except nixos-unstable atm, which could take some time (a few days maybe):
https://status.nixos.org

During this period before the fix gets to the nixos-unstable channel, is there any work-around to get qutebrowser working?

Being my main browser, it is one of my most important applications. Is there a way to run an older version in the mean time?

I assume there must be a best practices way to revert to an older version in cases like this waiting for fixes to be made and propagated.

To revert:

  • on channels probably nix-channel --list-generations and then nix-channel --rollback to one of them.
  • on any type of lock (flake/niv/npins/tarball url) just revert to previous one (hopefully you had it in git/other VCS).

You can also apply overlay fixing src from that PR, but it’s in python312Packages, which is not exactly straightforward (and compounds on not exactly easy concept of overlays):

overlays = [
  (final: prev: {
    pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
      (pyfinal: pyprev: {
        pykeepass = pyprev.pykeepass.overridePythonAttrs (oldAttrs: rec {
          version = "4.1.0.post1";
          src = prev.fetchFromGitHub {
            owner = "libkeepass";
            repo = "pykeepass";
            rev = "refs/tags/v${version}";
            hash = "sha256-64is/XoRF/kojqd4jQIAQi1od8TRhiv9uR+WNIGvP2A=";
          };
        });
      })
    ];
  })
];