diff --git a/pkgs/README.md b/pkgs/README.md index 4118b92c2e146..7abcc84896453 100644 --- a/pkgs/README.md +++ b/pkgs/README.md @@ -20,6 +20,7 @@ See the [CONTRIBUTING.md](../CONTRIBUTING.md) document for more general informat - [`pkgs-lib`](./pkgs-lib): Definitions for utilities that need packages but are not needed for packages - [`test`](./test): Tests not directly associated with any specific packages - [`by-name`](./by-name): Top-level packages organised by name ([docs](./by-name/README.md)) +- [`sets`](./sets): Nested package sets ([docs](./sets/README.md)). - All other directories loosely categorise top-level packages definitions, see [category hierarchy][categories] ## Quick Start to Adding a Package diff --git a/pkgs/sets/README.md b/pkgs/sets/README.md new file mode 100644 index 0000000000000..56c1a0bd6ab1d --- /dev/null +++ b/pkgs/sets/README.md @@ -0,0 +1,5 @@ +# Package sets + +All folders here containing a `packageset.nix` will be autocalled as a package set with `recurseIntoAttrs (callPackage sets//packageset.nix {})`, however since package sets often depend on some other package version, this directory stucture is relatively loose. + +Calling package sets that cannot be autocalled should be done in [`pkgs/top-level/packagesets.nix`](../top-level/packagesets.nix). diff --git a/pkgs/shells/fish/plugins/async-prompt.nix b/pkgs/sets/fishPlugins/async-prompt/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/async-prompt.nix rename to pkgs/sets/fishPlugins/async-prompt/package.nix diff --git a/pkgs/shells/fish/plugins/autopair.nix b/pkgs/sets/fishPlugins/autopair/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/autopair.nix rename to pkgs/sets/fishPlugins/autopair/package.nix diff --git a/pkgs/shells/fish/plugins/aws.nix b/pkgs/sets/fishPlugins/aws/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/aws.nix rename to pkgs/sets/fishPlugins/aws/package.nix diff --git a/pkgs/shells/fish/plugins/bang-bang.nix b/pkgs/sets/fishPlugins/bang-bang/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/bang-bang.nix rename to pkgs/sets/fishPlugins/bang-bang/package.nix diff --git a/pkgs/shells/fish/plugins/bass.nix b/pkgs/sets/fishPlugins/bass/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/bass.nix rename to pkgs/sets/fishPlugins/bass/package.nix diff --git a/pkgs/shells/fish/plugins/bobthefish.nix b/pkgs/sets/fishPlugins/bobthefish/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/bobthefish.nix rename to pkgs/sets/fishPlugins/bobthefish/package.nix diff --git a/pkgs/shells/fish/plugins/bobthefisher.nix b/pkgs/sets/fishPlugins/bobthefisher/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/bobthefisher.nix rename to pkgs/sets/fishPlugins/bobthefisher/package.nix diff --git a/pkgs/shells/fish/plugins/build-fish-plugin.nix b/pkgs/sets/fishPlugins/buildFishPlugin/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/build-fish-plugin.nix rename to pkgs/sets/fishPlugins/buildFishPlugin/package.nix diff --git a/pkgs/shells/fish/plugins/clownfish.nix b/pkgs/sets/fishPlugins/clownfish/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/clownfish.nix rename to pkgs/sets/fishPlugins/clownfish/package.nix diff --git a/pkgs/shells/fish/plugins/colored-man-pages.nix b/pkgs/sets/fishPlugins/colored-man-pages/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/colored-man-pages.nix rename to pkgs/sets/fishPlugins/colored-man-pages/package.nix diff --git a/pkgs/shells/fish/plugins/done.nix b/pkgs/sets/fishPlugins/done/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/done.nix rename to pkgs/sets/fishPlugins/done/package.nix diff --git a/pkgs/shells/fish/plugins/exercism-cli-fish-wrapper.nix b/pkgs/sets/fishPlugins/exercism-cli-fish-wrapper/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/exercism-cli-fish-wrapper.nix rename to pkgs/sets/fishPlugins/exercism-cli-fish-wrapper/package.nix diff --git a/pkgs/shells/fish/plugins/fifc.nix b/pkgs/sets/fishPlugins/fifc/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/fifc.nix rename to pkgs/sets/fishPlugins/fifc/package.nix diff --git a/pkgs/shells/fish/plugins/fish-bd.nix b/pkgs/sets/fishPlugins/fish-bd/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/fish-bd.nix rename to pkgs/sets/fishPlugins/fish-bd/package.nix diff --git a/pkgs/shells/fish/plugins/fish-you-should-use.nix b/pkgs/sets/fishPlugins/fish-you-should-use/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/fish-you-should-use.nix rename to pkgs/sets/fishPlugins/fish-you-should-use/package.nix diff --git a/pkgs/shells/fish/plugins/fishbang.nix b/pkgs/sets/fishPlugins/fishbang/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/fishbang.nix rename to pkgs/sets/fishPlugins/fishbang/package.nix diff --git a/pkgs/shells/fish/plugins/fishtape.nix b/pkgs/sets/fishPlugins/fishtape/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/fishtape.nix rename to pkgs/sets/fishPlugins/fishtape/package.nix diff --git a/pkgs/shells/fish/plugins/fishtape_3.nix b/pkgs/sets/fishPlugins/fishtape_3/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/fishtape_3.nix rename to pkgs/sets/fishPlugins/fishtape_3/package.nix diff --git a/pkgs/shells/fish/plugins/foreign-env/default.nix b/pkgs/sets/fishPlugins/foreign-env/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/foreign-env/default.nix rename to pkgs/sets/fishPlugins/foreign-env/package.nix diff --git a/pkgs/shells/fish/plugins/forgit.nix b/pkgs/sets/fishPlugins/forgit/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/forgit.nix rename to pkgs/sets/fishPlugins/forgit/package.nix diff --git a/pkgs/shells/fish/plugins/fzf-fish.nix b/pkgs/sets/fishPlugins/fzf-fish/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/fzf-fish.nix rename to pkgs/sets/fishPlugins/fzf-fish/package.nix diff --git a/pkgs/shells/fish/plugins/fzf.nix b/pkgs/sets/fishPlugins/fzf/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/fzf.nix rename to pkgs/sets/fishPlugins/fzf/package.nix diff --git a/pkgs/shells/fish/plugins/git-abbr.nix b/pkgs/sets/fishPlugins/git-abbr/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/git-abbr.nix rename to pkgs/sets/fishPlugins/git-abbr/package.nix diff --git a/pkgs/shells/fish/plugins/github-copilot-cli-fish.nix b/pkgs/sets/fishPlugins/github-copilot-cli-fish/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/github-copilot-cli-fish.nix rename to pkgs/sets/fishPlugins/github-copilot-cli-fish/package.nix diff --git a/pkgs/shells/fish/plugins/grc.nix b/pkgs/sets/fishPlugins/grc/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/grc.nix rename to pkgs/sets/fishPlugins/grc/package.nix diff --git a/pkgs/shells/fish/plugins/gruvbox.nix b/pkgs/sets/fishPlugins/gruvbox/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/gruvbox.nix rename to pkgs/sets/fishPlugins/gruvbox/package.nix diff --git a/pkgs/shells/fish/plugins/humantime-fish.nix b/pkgs/sets/fishPlugins/humantime-fish/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/humantime-fish.nix rename to pkgs/sets/fishPlugins/humantime-fish/package.nix diff --git a/pkgs/shells/fish/plugins/hydro.nix b/pkgs/sets/fishPlugins/hydro/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/hydro.nix rename to pkgs/sets/fishPlugins/hydro/package.nix diff --git a/pkgs/shells/fish/plugins/macos.nix b/pkgs/sets/fishPlugins/macos/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/macos.nix rename to pkgs/sets/fishPlugins/macos/package.nix diff --git a/pkgs/shells/fish/plugins/nvm.nix b/pkgs/sets/fishPlugins/nvm/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/nvm.nix rename to pkgs/sets/fishPlugins/nvm/package.nix diff --git a/pkgs/sets/fishPlugins/packageset.nix b/pkgs/sets/fishPlugins/packageset.nix new file mode 100644 index 0000000000000..1e9e89163c65f --- /dev/null +++ b/pkgs/sets/fishPlugins/packageset.nix @@ -0,0 +1,17 @@ +{ + lib, + newScope, + config, +}: + +lib.makeScope newScope ( + self: + (lib.pipe ./. [ + builtins.readDir + (lib.filterAttrs (name: _: lib.pathIsRegularFile ./${name}/package.nix)) + (builtins.mapAttrs (name: _: self.callPackage ./${name}/package.nix { })) + ]) + // lib.optionalAttrs config.allowAliases { + autopair-fish = self.autopair; # Added 2023-03-10 + } +) diff --git a/pkgs/shells/fish/plugins/pisces.nix b/pkgs/sets/fishPlugins/pisces/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/pisces.nix rename to pkgs/sets/fishPlugins/pisces/package.nix diff --git a/pkgs/shells/fish/plugins/plugin-git.nix b/pkgs/sets/fishPlugins/plugin-git/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/plugin-git.nix rename to pkgs/sets/fishPlugins/plugin-git/package.nix diff --git a/pkgs/shells/fish/plugins/plugin-sudope.nix b/pkgs/sets/fishPlugins/plugin-sudope/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/plugin-sudope.nix rename to pkgs/sets/fishPlugins/plugin-sudope/package.nix diff --git a/pkgs/shells/fish/plugins/puffer.nix b/pkgs/sets/fishPlugins/puffer/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/puffer.nix rename to pkgs/sets/fishPlugins/puffer/package.nix diff --git a/pkgs/shells/fish/plugins/pure.nix b/pkgs/sets/fishPlugins/pure/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/pure.nix rename to pkgs/sets/fishPlugins/pure/package.nix diff --git a/pkgs/shells/fish/plugins/sdkman-for-fish.nix b/pkgs/sets/fishPlugins/sdkman-for-fish/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/sdkman-for-fish.nix rename to pkgs/sets/fishPlugins/sdkman-for-fish/package.nix diff --git a/pkgs/shells/fish/plugins/spark.nix b/pkgs/sets/fishPlugins/spark/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/spark.nix rename to pkgs/sets/fishPlugins/spark/package.nix diff --git a/pkgs/shells/fish/plugins/sponge.nix b/pkgs/sets/fishPlugins/sponge/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/sponge.nix rename to pkgs/sets/fishPlugins/sponge/package.nix diff --git a/pkgs/shells/fish/plugins/tide.nix b/pkgs/sets/fishPlugins/tide/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/tide.nix rename to pkgs/sets/fishPlugins/tide/package.nix diff --git a/pkgs/shells/fish/plugins/transient-fish.nix b/pkgs/sets/fishPlugins/transient-fish/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/transient-fish.nix rename to pkgs/sets/fishPlugins/transient-fish/package.nix diff --git a/pkgs/shells/fish/plugins/wakatime-fish.nix b/pkgs/sets/fishPlugins/wakatime-fish/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/wakatime-fish.nix rename to pkgs/sets/fishPlugins/wakatime-fish/package.nix diff --git a/pkgs/shells/fish/plugins/z.nix b/pkgs/sets/fishPlugins/z/package.nix similarity index 100% rename from pkgs/shells/fish/plugins/z.nix rename to pkgs/sets/fishPlugins/z/package.nix diff --git a/pkgs/shells/nushell/plugins/dbus.nix b/pkgs/sets/nushellPlugins/dbus/package.nix similarity index 96% rename from pkgs/shells/nushell/plugins/dbus.nix rename to pkgs/sets/nushellPlugins/dbus/package.nix index d989b61def66e..a1568086436c5 100644 --- a/pkgs/shells/nushell/plugins/dbus.nix +++ b/pkgs/sets/nushellPlugins/dbus/package.nix @@ -5,7 +5,7 @@ pkg-config, nix-update-script, fetchFromGitHub, - dbus, + pkgs, }: rustPlatform.buildRustPackage (finalAttrs: { @@ -22,7 +22,7 @@ rustPlatform.buildRustPackage (finalAttrs: { cargoHash = "sha256-7pD5LA1ytO7VqFnHwgf7vW9eS3olnZBgdsj+rmcHkbU="; nativeBuildInputs = [ pkg-config ] ++ lib.optionals stdenv.cc.isClang [ rustPlatform.bindgenHook ]; - buildInputs = [ dbus ]; + buildInputs = [ pkgs.dbus ]; passthru.updateScript = nix-update-script { }; diff --git a/pkgs/shells/nushell/plugins/desktop_notifications.nix b/pkgs/sets/nushellPlugins/desktop_notifications/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/desktop_notifications.nix rename to pkgs/sets/nushellPlugins/desktop_notifications/package.nix diff --git a/pkgs/shells/nushell/plugins/formats.nix b/pkgs/sets/nushellPlugins/formats/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/formats.nix rename to pkgs/sets/nushellPlugins/formats/package.nix diff --git a/pkgs/shells/nushell/plugins/gstat.nix b/pkgs/sets/nushellPlugins/gstat/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/gstat.nix rename to pkgs/sets/nushellPlugins/gstat/package.nix diff --git a/pkgs/shells/nushell/plugins/hcl.nix b/pkgs/sets/nushellPlugins/hcl/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/hcl.nix rename to pkgs/sets/nushellPlugins/hcl/package.nix diff --git a/pkgs/shells/nushell/plugins/highlight.nix b/pkgs/sets/nushellPlugins/highlight/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/highlight.nix rename to pkgs/sets/nushellPlugins/highlight/package.nix diff --git a/pkgs/shells/nushell/plugins/net.nix b/pkgs/sets/nushellPlugins/net/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/net.nix rename to pkgs/sets/nushellPlugins/net/package.nix diff --git a/pkgs/shells/nushell/plugins/default.nix b/pkgs/sets/nushellPlugins/packageset.nix similarity index 68% rename from pkgs/shells/nushell/plugins/default.nix rename to pkgs/sets/nushellPlugins/packageset.nix index b8424c75b3bfa..f8b385a4755eb 100644 --- a/pkgs/shells/nushell/plugins/default.nix +++ b/pkgs/sets/nushellPlugins/packageset.nix @@ -7,7 +7,6 @@ nushell, runCommand, }: - lib.makeScope newScope ( self: @@ -43,23 +42,11 @@ lib.makeScope newScope ( withChecks ) ( - with self; - { - gstat = callPackage ./gstat.nix { }; - formats = callPackage ./formats.nix { }; - polars = callPackage ./polars.nix { }; - query = callPackage ./query.nix { }; - net = callPackage ./net.nix { }; - units = callPackage ./units.nix { }; - highlight = callPackage ./highlight.nix { }; - dbus = callPackage ./dbus.nix { - inherit dbus; - }; - skim = callPackage ./skim.nix { }; - semver = callPackage ./semver.nix { }; - hcl = callPackage ./hcl.nix { }; - desktop_notifications = callPackage ./desktop_notifications.nix { }; - } + (lib.pipe ./. [ + builtins.readDir + (lib.filterAttrs (name: _: lib.pathIsRegularFile ./${name}/package.nix)) + (builtins.mapAttrs (name: _: self.callPackage ./${name}/package.nix { })) + ]) // lib.optionalAttrs config.allowAliases { regex = throw "`nu_plugin_regex` is no longer compatible with the current Nushell release."; } diff --git a/pkgs/shells/nushell/plugins/polars.nix b/pkgs/sets/nushellPlugins/polars/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/polars.nix rename to pkgs/sets/nushellPlugins/polars/package.nix diff --git a/pkgs/shells/nushell/plugins/query.nix b/pkgs/sets/nushellPlugins/query/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/query.nix rename to pkgs/sets/nushellPlugins/query/package.nix diff --git a/pkgs/shells/nushell/plugins/semver.nix b/pkgs/sets/nushellPlugins/semver/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/semver.nix rename to pkgs/sets/nushellPlugins/semver/package.nix diff --git a/pkgs/shells/nushell/plugins/skim.nix b/pkgs/sets/nushellPlugins/skim/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/skim.nix rename to pkgs/sets/nushellPlugins/skim/package.nix diff --git a/pkgs/shells/nushell/plugins/units.nix b/pkgs/sets/nushellPlugins/units/package.nix similarity index 100% rename from pkgs/shells/nushell/plugins/units.nix rename to pkgs/sets/nushellPlugins/units/package.nix diff --git a/pkgs/shells/fish/plugins/default.nix b/pkgs/shells/fish/plugins/default.nix deleted file mode 100644 index 0620be9974160..0000000000000 --- a/pkgs/shells/fish/plugins/default.nix +++ /dev/null @@ -1,99 +0,0 @@ -{ - lib, - newScope, - config, -}: - -lib.makeScope newScope ( - self: - with self; - { - async-prompt = callPackage ./async-prompt.nix { }; - - autopair = callPackage ./autopair.nix { }; - - aws = callPackage ./aws.nix { }; - - bang-bang = callPackage ./bang-bang.nix { }; - - bobthefish = callPackage ./bobthefish.nix { }; - - bobthefisher = callPackage ./bobthefisher.nix { }; - - buildFishPlugin = callPackage ./build-fish-plugin.nix { }; - - colored-man-pages = callPackage ./colored-man-pages.nix { }; - - clownfish = callPackage ./clownfish.nix { }; - - bass = callPackage ./bass.nix { }; - - done = callPackage ./done.nix { }; - - exercism-cli-fish-wrapper = callPackage ./exercism-cli-fish-wrapper.nix { }; - - fifc = callPackage ./fifc.nix { }; - - fishbang = callPackage ./fishbang.nix { }; - - fish-bd = callPackage ./fish-bd.nix { }; - - # Fishtape 2.x and 3.x aren't compatible, - # but both versions are used in the tests of different other plugins. - fishtape = callPackage ./fishtape.nix { }; - fishtape_3 = callPackage ./fishtape_3.nix { }; - - fish-you-should-use = callPackage ./fish-you-should-use.nix { }; - - foreign-env = callPackage ./foreign-env { }; - - forgit = callPackage ./forgit.nix { }; - - fzf = callPackage ./fzf.nix { }; - - fzf-fish = callPackage ./fzf-fish.nix { }; - - github-copilot-cli-fish = callPackage ./github-copilot-cli-fish.nix { }; - - git-abbr = callPackage ./git-abbr.nix { }; - - grc = callPackage ./grc.nix { }; - - gruvbox = callPackage ./gruvbox.nix { }; - - humantime-fish = callPackage ./humantime-fish.nix { }; - - hydro = callPackage ./hydro.nix { }; - - macos = callPackage ./macos.nix { }; - - nvm = callPackage ./nvm.nix { }; - - pisces = callPackage ./pisces.nix { }; - - plugin-git = callPackage ./plugin-git.nix { }; - - plugin-sudope = callPackage ./plugin-sudope.nix { }; - - puffer = callPackage ./puffer.nix { }; - - pure = callPackage ./pure.nix { }; - - sdkman-for-fish = callPackage ./sdkman-for-fish.nix { }; - - spark = callPackage ./spark.nix { }; - - sponge = callPackage ./sponge.nix { }; - - tide = callPackage ./tide.nix { }; - - transient-fish = callPackage ./transient-fish.nix { }; - - wakatime-fish = callPackage ./wakatime-fish.nix { }; - - z = callPackage ./z.nix { }; - } - // lib.optionalAttrs config.allowAliases { - autopair-fish = self.autopair; # Added 2023-03-10 - } -) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 40a578061d6f8..aa05b0b6f6516 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4033,8 +4033,6 @@ with pkgs; wrapFish = callPackage ../shells/fish/wrapper.nix { }; - fishPlugins = recurseIntoAttrs (callPackage ../shells/fish/plugins { }); - powerline = with python3Packages; toPythonApplication powerline; ### DEVELOPMENT / COMPILERS @@ -9461,11 +9459,6 @@ with pkgs; nushell = callPackage ../shells/nushell { }; - nushellPlugins = recurseIntoAttrs ( - callPackage ../shells/nushell/plugins { - } - ); - net-tools = # some platforms refer back to this from unixtools, so this is needed to # break the cycle diff --git a/pkgs/top-level/packagesets.nix b/pkgs/top-level/packagesets.nix new file mode 100644 index 0000000000000..070e1a852ebe7 --- /dev/null +++ b/pkgs/top-level/packagesets.nix @@ -0,0 +1,12 @@ +self: super: +let + # Because of Nix's import-value cache, importing lib is free + lib = import ../../lib; +in +(lib.pipe ../sets [ + builtins.readDir + (lib.filterAttrs (name: _: lib.pathIsRegularFile ../sets/${name}/packageset.nix)) + (builtins.mapAttrs ( + name: _: lib.recurseIntoAttrs (self.callPackage ../sets/${name}/packageset.nix { }) + )) +]) diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix index 926a132a3805e..2ab9c44aaab6f 100644 --- a/pkgs/top-level/stage.nix +++ b/pkgs/top-level/stage.nix @@ -16,6 +16,9 @@ let # this value gets reused even if this file is imported multiple times, # thanks to Nix's import-value cache. autoCalledPackages = import ./by-name-overlay.nix ../by-name; + + # An overlay to call package sets in ../sets. + packageSets = import ./packagesets.nix; in { @@ -341,6 +344,7 @@ let trivialBuilders splice autoCalledPackages + packageSets allPackages otherPackageSets aliases