Installing wezterm from git

I came across this issue as well and ended up with this solution before seeing this thread

The issue is overrideAttrrs overrides the attribute set passed to stdenv.mkDerivation, so you don’t have direct access to buildRustPackage from my understanding

But you can just call override instead. This has the advantage of also being able to override the rustc/cargo versions for when the latest version in nixpkgs isn’t up to date

My own flake is a bit complex because of my use of std/hive. So my snippet below is outside of the overlay context, and nixpkgs is an unaltered nixpkgs whereas pkgs is nixpkgs + overlays

And you do still need to have a local copy of the Cargo.toml like in the nixpkgs drv

et voila:

  wezterm = nixpkgs.wezterm.override (
    let
      rustPlatform = nixpkgs.makeRustPlatform {
        rustc = pkgs.rust-bin.stable.latest.minimal;
        cargo = pkgs.rust-bin.stable.latest.minimal;
      };
    in
    old: {
      rustPlatform = old.rustPlatform // {
        buildRustPackage =
          args:
          rustPlatform.buildRustPackage (
            args
            // rec {
              pname = "wezterm";
              version = "552bb1d66b6d0102961974c0da22dc7c69b0cd30";
              src = nixpkgs.fetchFromGitHub {
                owner = "wez";
                repo = pname;
                rev = version;
                fetchSubmodules = true;
                hash = "sha256-dr/f/zEqgzJ26s2KkiX6/68IU986jAYpeerRMSqejjM=";
              };

              cargoLock = {
                lockFile = ./wezterm/Cargo.lock;
                outputHashes = {
                  "sqlite-cache-0.1.3" = "sha256-sBAC8MsQZgH+dcWpoxzq9iw5078vwzCijgyQnMOWIkk=";
                  "xcb-imdkit-0.3.0" = "sha256-77KaJO+QJWy3tJ9AF1TXKaQHpoVOfGIRqteyqpQaSWo=";
                };
              };
            }
          );
      };
    }
  );

references:

1 Like