{
  inputs,
  outputs,
}:
{
  # For every flake input, aliases 'pkgs.inputs.${flake}' to
  # 'inputs.${flake}.packages.${pkgs.system}' or
  # 'inputs.${flake}.legacyPackages.${pkgs.system}'
  flake-inputs = final: _: {
    inputs = builtins.mapAttrs (
      _: flake:
      let
        legacyPackages = (flake.legacyPackages or { }).${final.system} or { };
        packages = (flake.packages or { }).${final.system} or { };
      in
      if legacyPackages != { } then legacyPackages else packages
    ) inputs;
  };

  # Adds my custom packages
  my-pkgs = final: prev: import ../pkgs { pkgs = final; };

  nixpkgs-stable-unstable = final: prev: {
    unstable = import inputs.nixpkgs {
      system = prev.system;
      config.allowUnfree = true;
    };
    stable = import inputs.nixpkgs-stable {
      system = prev.system;
      config.allowUnfree = true;
    };
  };

  # Makes gparted actually open
  gparted-xhost = self: super: {
    gparted-xhost = super.gparted.overrideAttrs (oldAttrs: {
      configureFlags = oldAttrs.configureFlags ++ [ "--enable-xhost-root" ];
    });
  };

  nix-matlab = inputs.nix-matlab.overlay;

}