# This file defines overlays
{ inputs, ... }:
{
  # This one brings our custom packages from the 'pkgs' directory
  additions = final: _prev: import ../pkgs final.pkgs;

  # This one contains whatever you want to overlay
  # You can change versions, add patches, set compilation flags, anything really.
  # https://nixos.wiki/wiki/Overlays
  modifications = final: prev: {
    zed-editor = final.callPackage prev.zed-editor.override {
      rustPlatform = final.rustPlatform // {
        buildRustPackage = args: final.rustPlatform.buildRustPackage (args // {
          patches = (args.patches or [ ] ++ [
            ./zed-use-custom-cosmic-text.patch
          ]);
          cargoLock = {
            lockFile = ./zed.Cargo.lock;
            outputHashes = args.cargoLock.outputHashes // {
              "cosmic-text-0.11.2" = "sha256-ld9mrvtZIEftenn1D5IuXFQikJU2GAil6MCsrIh9o14=";
            };
          };
        });
      };
    };
  };

  # When applied, the unstable nixpkgs set (declared in the flake inputs) will
  # be accessible through 'pkgs.unstable'
  unstable-packages = final: _prev: {
    unstable = import inputs.nixpkgs-unstable {
      system = final.system;
      config.allowUnfree = true;
    };
  };
}