{
  config,
  lib,
  self,
  inputs,
  ...
}: let
  # TODO legacy refactor
  # not high priority, this still works well for this overlay.
  nixfiles = self;
  overlay = final: prev: let
    pkgs-unstable = import nixfiles.inputs.nixpkgs-unstable {
      config.allowUnfree = true;
      inherit (final) system;
    };
    inherit (final) callPackage kdePackages lib;

    backport = let
      _callPackage = callPackage;
    in
      {
        pkgname,
        callPackage ? _callPackage,
        new ? pkgs-unstable,
        override ? {},
      }: let
        inherit (lib) getAttrFromPath;
        inherit (builtins) getAttr isString;

        getAttr' = name: attrs:
          if isString pkgname
          then getAttr name attrs
          else getAttrFromPath name attrs;
        oldPkg = getAttr' pkgname prev;
        newPkg = getAttr' pkgname pkgs-unstable;
      in
        if oldPkg.version == newPkg.version
        then oldPkg
        else (callPackage newPkg.override) override;

    backport' = pkgname: backport {inherit pkgname;};

    # defined locally to not pull in perl from unstable
    stripJavaArchivesHook =
      final.makeSetupHook {
        name = "strip-java-archives-hook";
        propagatedBuildInputs = [final.strip-nondeterminism];
      }
      ./strip-java-archives.sh;
  in {
    vesktop = backport' "vesktop";
    obsidian = backport {
      pkgname = "obsidian";
      override.electron = final.electron_28;
    };
    prismlauncher-unwrapped = backport {
      pkgname = "prismlauncher-unwrapped";
      inherit (kdePackages) callPackage;
      override = {
        # apple something idk why the package doesn't just ask for darwin and get it itself
        # maybe i should make a pull request that changes the params to `darwin, Cocoa ? darwin.apple_sdk.frameworks.Cocoa`
        inherit (final.darwin.apple_sdk.frameworks) Cocoa;
      };
    };
  };
in {
  config.flake.overlays.backports = overlay;
}