{ lib
, newScope
, stdenv
, fetchzip
, makeWrapper
, runCommand

, variant
}:

let

  mkIdeaPlugins = import ../applications/editors/jetbrains/idea-plugins.nix {
    inherit lib stdenv fetchzip;
  };

  jetbrainsWithPlugins = import ../applications/editors/jetbrains/wrapper.nix {
    inherit lib makeWrapper runCommand;
  };

in lib.makeScope newScope (self: lib.makeOverridable ({
  ideaPlugins ? mkIdeaPlugins self
}: ({ }
  // ideaPlugins // { inherit ideaPlugins; }
  // {
    inherit variant;
    jetbrainsWithPlugins = jetbrainsWithPlugins self variant;
  })
) { })