final: prev: { lib = prev.lib.extend (import ./lib/overlay.nix); fetchFromSteam = prev.callPackage ./lib/fetchsteam {}; fetchb4 = prev.callPackage ./lib/fetchb4 {}; makeSquashFs = prev.callPackage ./lib/make-squashfs {}; makeHpcDist = final.callPackage ./lib/make-hpc-dist {}; instrumentedFetch = drv: drv.overrideAttrs (afinal: aprev: { postFetch = (aprev.postFetch or "") + '' printf "FETCH_HASH:%s:FETCH_HASH" "$(\ ${final.lib.getExe final.nix} --extra-experimental-features "nix-command" \ hash path --sri "$out")" ''; }); ghidra_headless = final.ghidra.lib; # stuff that tracks upstream ghidra = final.callPackage ./pkgs/reverse-engineering/ghidra/build.nix { protobuf = final.protobuf_21; }; ghidra-extensions = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/reverse-engineering/ghidra/extensions.nix { }); # end stuff that tracks upstream idapro = final.callPackage ./pkgs/reverse-engineering/idapro9 {}; ocamlPackages = prev.ocamlPackages.overrideScope (ofinal: oprev: { ppx_unicode = ofinal.callPackage ./pkgs/ocaml/ppx_unicode {}; xlog = ofinal.callPackage ./pkgs/ocaml/xlog {}; systemd-ml = ofinal.callPackage ./pkgs/ocaml/systemd-ml {}; ocaml-manual = ofinal.callPackage ./pkgs/ocaml/ocaml-manual {}; patdiff-bin = ofinal.callPackage ./pkgs/ocaml/patdiff-bin {}; }); python312 = prev.python312.override { packageOverrides = pfinal: pprev: { feedvalidator = pfinal.callPackage ./pkgs/python/feedvalidator {}; megacom = pfinal.callPackage ./pkgs/python/megacom {}; }; }; # add to top level because it has a binary feedvalidator = final.python312Packages.feedvalidator; megacom = final.python312Packages.megacom; python311 = prev.python311.override { packageOverrides = pfinal: pprev: { libbs = pfinal.callPackage ./pkgs/reverse-engineering/binsync/libbs.nix {}; binsync = pfinal.callPackage ./pkgs/reverse-engineering/binsync/binsync.nix {}; }; }; outer-wilds-text-adventure = prev.callPackage ./pkgs/games/outer-wilds-text-adventure {}; satisfactory-dedicated-server = prev.callPackage ./pkgs/games/satisfactory-dedicated-server {}; mkNginxServer = prev.callPackage ./lib/dev-nginx {}; zbasefind = final.callPackage ./pkgs/rust/zbasefind {}; eta = prev.callPackage ./pkgs/cmdline/eta {}; cado-nfs = prev.callPackage ./pkgs/crypto/cado-nfs {}; lix-plugins = prev.callPackage ./pkgs/lix/lix-plugins {}; nix-plugins = builtins.throw "nix-plugins is not supported. see pkgs.lix-plugins"; zfs_2_3 = prev.zfs_2_3.overrideAttrs { patches = [ ./pkgs/zfs/0001-ZED-add-support-for-desktop-notifications-D-Bus.patch ]; }; pympress = prev.pympress.overrideDerivation (oldAttrs: { patches = [ ./pkgs/python/pympress/0001-Fix-KDE-window-icon.patch ]; }); texliveDragonPackages = { moloch = prev.callPackage ./pkgs/tex/moloch {}; }; racket-minimal = final.callPackage ./pkgs/racket/racket/minimal.nix {}; racket = final.callPackage ./pkgs/racket/racket/package.nix {}; racketPackages = let names = builtins.readDir ./pkgs/racket/racket-catalog |> final.lib.attrNames; byName = self: final.lib.map (name: { inherit name; value = self.callPackage ./pkgs/racket/racket-catalog/${name} {}; }) names |> final.lib.listToAttrs; in final.lib.makeScope final.newScope (self: { racketInstallHook = self.callPackage ./pkgs/racket/racket-install-hook.nix {}; buildRacketPackage = self.callPackage ./pkgs/racket/build-racket-package.nix {}; makeRacketEnv = self.callPackage ./pkgs/racket/make-racket-env.nix {}; } // (byName self)); }