nixpkgs/pkgs/by-name
nixpkgs-merge-bot[bot] 75f5060a18
Merge pull request #321970 from r-ryantm/auto-update/nezha-agent
nezha-agent: 0.16.11 -> 0.17.0
2024-06-23 14:53:49 +00:00
..
_0/_0xpropo
_2/_2ship2harkinian
_4
_6/_64gram
_9/_9base
a4/a4
a5/a52dec
aa
ab
ac
ad ad-miner: 1.4.0 -> 1.5.0 2024-06-22 19:55:44 +00:00
ae
af
ag
ai
al
am
an ananicy-rules-cachyos: 0-unstable-2024-06-14 -> 0-unstable-2024-06-19 2024-06-22 17:48:52 +00:00
ao/aocl-utils
ap
ar ardugotools: 0.5.1 -> 0.5.2 2024-06-22 00:23:08 +00:00
as Merge pull request #320642 from r-ryantm/auto-update/ast-grep 2024-06-18 16:19:51 -04:00
at atuin: use buildPackages.protobuf 2024-06-18 18:32:18 +02:00
au Merge pull request #320725 from r-ryantm/auto-update/audion 2024-06-18 15:36:54 +02:00
av
aw
ax
ay
ba Merge pull request #310617 from wentasah/package/python-babeltrace 2024-06-18 09:47:22 +03:00
bc
bd
be bend: 0.2.22 -> 0.2.34, hvm: 2.0.17 -> 2.0.19 2024-06-21 18:41:48 -07:00
bi Merge pull request #321815 from r-ryantm/auto-update/bitmagnet 2024-06-23 09:49:38 +10:00
bk/bk
bl Merge pull request #319287 from TomaSajt/blockbench 2024-06-21 23:01:55 +08:00
bm/bmake
bn/bngblaster
bo
bp
bq/bqn
br
bs
bt
bu
by
c-
c2
ca Merge pull request #321426 from ifd3f/caligula/mark-nonbroken-darwin 2024-06-22 18:08:33 +02:00
cb
cc
cd cdncheck: init at 1.1.0 2024-06-22 15:29:51 +02:00
ce cemu: 2.0-85 -> 2.0-86 2024-06-17 17:54:13 -03:00
cg
ch charmcraft: 2.6.0 -> 2.7.0 2024-06-22 12:27:01 +00:00
ci
cl Merge pull request #310027 from Ramblurr/bump/clojure-lsp 2024-06-21 21:41:40 -03:00
cm
cn/cntb
co Merge pull request #320784 from fabaff/conkeyscan 2024-06-22 20:01:26 +02:00
cp
cr crabfit: Remove thubrecht as maintainer 2024-06-21 09:32:00 +02:00
cs
ct/ctx
cu
cv/cvemap
cy cyme: 1.6.0 -> 1.6.1 2024-06-18 04:23:54 +00:00
cz/czkawka
da
db dbgate: 5.3.0 -> 5.3.1 2024-06-22 11:27:42 +02:00
dc/dc3dd
dd
de Merge pull request #318829 from linsui/design 2024-06-20 12:01:27 +02:00
dg/dgoss
dh/dhcpig
di Merge pull request #280911 from katexochen/distribution/3 2024-06-19 14:35:40 +02:00
dj/djent
dm dmarc-report-converter: 0.8.0 -> 0.8.1 2024-06-17 12:01:26 +00:00
dn
do Merge pull request #321704 from tomodachi94/create/doctoc 2024-06-23 10:35:25 +05:30
dp
dr
ds
dt
du
dv/dvb-apps
dx
dy dynamodb-local: 2.5.1 -> 2.5.2 2024-06-20 21:53:04 +00:00
e1/e1s
ea eask: add piotrkwiecinski to maintainers 2024-06-17 23:51:32 +02:00
eb
ec
ed
ee/eepers
ef/efibootmgr efibootmgr: adopt; modernize (#319159) 2024-06-22 03:29:49 +03:00
ei
ej/ejsonkms
ek/eksctl eksctl: 0.182.0 -> 0.183.0 2024-06-20 08:42:53 +00:00
el
em
en maintainers: drop lheckemann 2024-06-21 15:54:54 +02:00
ep
er errands: 46.2.2 -> 46.2.3 2024-06-18 14:34:20 +02:00
es Merge pull request #320259 from Aleksanaa/escambo 2024-06-18 20:40:08 +02:00
et
eu
ev
ew/eww
ex exhibit: init at 1.2.0 2024-06-18 12:02:37 +08:00
ez/eza eza: 0.18.18 -> 0.18.19 2024-06-20 07:23:57 +02:00
fa Merge pull request #321793 from r-ryantm/auto-update/fastfetch 2024-06-22 20:29:49 +00:00
fb/fbset
fc catppuccin-fcitx5: merge with fcitx5-catppuccin 2024-06-19 20:56:13 +02:00
fe
ff fflogs: 8.5.12 -> 8.5.16 2024-06-17 19:46:49 +00:00
fg/fgqcanvas
fi firefly-iii: 6.1.17 -> 6.1.18 2024-06-19 21:28:25 +02:00
fj/fjo
fl Merge pull request #321869 from r-ryantm/auto-update/flawz 2024-06-23 09:41:15 -04:00
fm
fn/fnott
fo forgejo: actually run go tests 2024-06-18 21:36:26 +02:00
fr
fs
ft/fte
fu furmark: add an icon 2024-06-19 16:46:56 +02:00
fv
fw/fwupd
fy/fypp
fz fzf-make: 0.33.0 -> 0.34.0 2024-06-18 23:06:20 +00:00
g3/g3kb-switch
ga gamescope: 3.14.18 -> 3.14.22 2024-06-22 07:56:52 +03:00
gb
gc
gd
ge Merge pull request #320736 from Aleksanaa/geopard 2024-06-18 20:27:22 +02:00
gf
gg/gg
gh ghciwatch: 0.5.16 -> 1.0.0 2024-06-17 00:45:09 +00:00
gi Merge pull request #318101 from getchoo/pkgs/gitbutler/init 2024-06-22 18:37:58 +08:00
gl glock: migrate to buildGoModule 2024-06-18 08:19:29 +02:00
gm Merge pull request #320845 from r-ryantm/auto-update/gmid 2024-06-18 23:34:21 +04:00
gn Merge pull request #320801 from Aleksanaa/gnome-feeds 2024-06-22 14:33:45 +08:00
go Merge pull request #321168 from r-ryantm/auto-update/gosmee 2024-06-20 10:53:34 +02:00
gp gptscript: 0.5.0 -> 0.8.2 2024-06-18 22:08:27 -03:00
gr Merge pull request #318613 from msanft/grafana-reporter/build-go-module 2024-06-21 09:21:09 +02:00
gt
gu
gv/gvisor
gx/gxml
h8/h8mail
ha hatsu: 0.2.0 -> 0.2.1 2024-06-22 13:14:21 +08:00
hb/hb-honeypot
hd
he hermitcli: 0.39.2 -> 0.39.3 2024-06-21 13:07:39 +00:00
hi hifile: 0.9.9.12 -> 0.9.9.13 2024-06-21 20:53:40 +02:00
hj/hjson-go
hn/hn-text
ho home-manager: 0-unstable-2024-06-13 -> 0-unstable-2024-06-22 2024-06-22 09:18:39 +00:00
ht
hu
hv/hvm bend: 0.2.22 -> 0.2.34, hvm: 2.0.17 -> 2.0.19 2024-06-21 18:41:48 -07:00
hy hyprutils: 0.1.2 -> 0.1.4 2024-06-19 21:26:01 +05:30
i2/i2p
i3
ia
ic ice-bar: init at 0.9.0 (#317971) 2024-06-20 12:02:45 +02:00
id
if/ifrextractor-rs
ig
ii
ij/ijhttp
im imposm: 0.12.0 -> 0.13.2 2024-06-20 13:33:00 +00:00
in insync-nautilus: use insync-emblem-icons 2024-06-22 14:49:29 +03:00
io/ioq3-scion
ip iplookup-gtk: init at 0.3.4 2024-06-18 18:44:55 +08:00
ir
is/iscc
it Merge pull request #315797 from amyipdev/itools 2024-06-20 10:25:28 +02:00
iw/iw
iz/izrss
ja jan: 0.5.0 -> 0.5.1 2024-06-21 13:34:34 +00:00
jd/jdt-language-server
je jellyfin: fix makeWrapperArgs after #313005 2024-06-18 11:13:04 +03:00
ji
jj/jj
jn
jo Merge pull request #320291 from JulienMalka/init-joularjx 2024-06-17 00:00:48 +02:00
jq/jq-zsh-plugin
jr/jrl-cmakemodules
js/jsoncons
jt/jtdx
ju
jw/jwasm
ka
kc
kd
ke Merge pull request #264430 from Compile-Time/master 2024-06-22 20:39:48 +05:30
kg/kgeotag
ki
kl/klog-time-tracker
km
kn
ko Merge pull request #320778 from r-ryantm/auto-update/kor 2024-06-19 10:25:45 -04:00
kp/kplex
kr
ks
kt
ku
kx
ky
la laravel: 5.8.1 -> 5.8.3 2024-06-19 16:52:07 +03:00
lb
lc lc0: 0.30.0 -> 0.31.0 2024-06-17 01:14:21 +00:00
ld
le Merge pull request #320506 from r-ryantm/auto-update/lefthook 2024-06-17 13:03:11 +00:00
li Merge pull request #321368 from NickCao/libsignal-ffi 2024-06-21 07:44:17 -04:00
lk/lk-jwt-service
ll
lm
ln/lngen
lo local-ai: 2.16.0 -> 2.17.1 2024-06-22 17:39:54 +02:00
lp
ls
lt/ltris
lu
lw/lwgrp
lx lxd-ui: 0.8.1 -> 0.9 2024-06-20 22:58:13 +00:00
lz
m1/m1ddc
m2
ma Merge pull request #320754 from r-ryantm/auto-update/marcel 2024-06-18 16:33:49 -04:00
mb
mc
md mdsh: 0.8.0 -> 0.9.0 2024-06-19 00:26:05 +00:00
me melonDS: 0.9.5-unstable-2024-06-08 -> 0.9.5-unstable-2024-06-18 2024-06-22 06:40:58 +00:00
mf
mg
mi miru: 5.1.3 -> 5.1.4 2024-06-20 16:52:18 -05:00
mk
ml/mlx42
mo Merge pull request #321511 from paparodeo/monophony-update 2024-06-22 16:32:36 +08:00
mp
mq
ms
mu
my myks: 4.2.0 -> 4.2.1 2024-06-22 03:42:06 +00:00
n2/n2
na namespace-cli: 0.0.376 -> 0.0.377 2024-06-21 12:58:30 +00:00
nb
nc
nd/ndstrim
ne Merge pull request #321970 from r-ryantm/auto-update/nezha-agent 2024-06-23 14:53:49 +00:00
nf
ng
nh nhost-cli: 1.18.2 -> 1.18.3 2024-06-18 19:40:18 +00:00
ni nix-web: Depend on SystemConfiguration.framework on Darwin 2024-06-21 22:11:15 +02:00
nl
nm/nmap-parse
nn/nncp
no novelwriter: 2.4.3 -> 2.4.4 2024-06-18 22:40:02 +00:00
np
nr
ns
nt/ntfs2btrfs
nu Merge pull request #316731 from d4rkstar/master 2024-06-20 12:27:10 +02:00
nv
nw Merge pull request #320675 from r-ryantm/auto-update/nwg-drawer 2024-06-18 15:52:20 +00:00
nx/nxengine-evo
oa
ob
oc
od odoo: 17.0.20240507 -> 17.0.20240616 2024-06-19 13:35:22 +00:00
oe/oelint-adv oelint-adv: 5.5.0 -> 5.6.0 2024-06-20 19:43:01 +00:00
of
oh
oi oink: 1.1.1 -> 1.2.0 2024-06-23 04:19:40 +00:00
ok/okolors
ol ollama: refactor wrapper options 2024-06-22 13:14:04 -04:00
om omnictl: 0.37.5 -> 0.38.1 2024-06-22 08:52:30 +00:00
on
oo/oo7
op openmesh: init at 11.0.0 2024-06-23 13:11:59 +08:00
or Merge pull request #321248 from r-ryantm/auto-update/orchard 2024-06-20 16:36:10 -04:00
os
ot
ou
ov
ow
pa
pc/pcsx2
pd
pe
pf/pfft
pg
ph phpunit: 11.2.2 -> 11.2.5 2024-06-22 22:39:41 +00:00
pi Merge pull request #319466 from aaronjheng/pixi 2024-06-22 15:41:35 +08:00
pk
pl Merge pull request #319694 from r-ryantm/auto-update/plumber 2024-06-18 01:10:41 +08:00
pm pm2: 5.4.0 -> 5.4.1 2024-06-18 14:01:02 +00:00
pn
po poutine: add shell completions 2024-06-21 01:42:45 +00:00
pp/ppsspp
pq
pr Merge pull request #321672 from r-ryantm/auto-update/proto 2024-06-23 14:15:08 +02:00
ps/ps_mem
pt ptyxis: 46.2 -> 46.3 2024-06-20 00:07:36 +08:00
pu
pv/pvsneslib
pw
px/pxder
py Merge pull request #321884 from r-ryantm/auto-update/pyright 2024-06-23 04:58:46 +00:00
pz/pzip
qa/qadwaitadecorations
qc/qcm
qd qdrant-web-ui: 0.1.28 -> 0.1.29 2024-06-22 02:43:01 +00:00
qg/qgrep
qp/qpoases
qr
qs
qt/qtractor
qu
r0/r0vm
r1/r10k
ra Merge pull request #321802 from r-ryantm/auto-update/rabbit 2024-06-22 23:09:32 +02:00
rc
rd/rdwatool
re Merge pull request #321589 from r-ryantm/auto-update/renode-dts2repl 2024-06-22 10:03:47 -04:00
rh/rHttp
ri
rk
rl/rl_json
rm
rn/rnd-name
ro roddhjav-apparmor-rules: 0-unstable-2024-06-12 -> 0-unstable-2024-06-16 2024-06-21 02:26:47 +00:00
rp/rpcs3
rq rquickshare: 0.7.1 -> 0.8.2 2024-06-20 12:15:30 +09:00
rs
rt
ru Merge pull request #320726 from CherryKitten/init-rusty-diceware 2024-06-19 17:54:33 +08:00
rw/rwpspread
ry ryujinx: 1.1.1330 -> 1.1.1336 2024-06-19 21:19:55 +00:00
s0/s0ix-selftest-tool
s3
sa Merge pull request #321231 from pinpox/update-satty-0.13.0 2024-06-20 16:37:15 -04:00
sb/sbom-utility
sc
sd
se treewide: remove wolfangaukang as maintainer 2024-06-22 07:03:16 -06:00
sf/sfwbar
sg/sgfutils
sh
si
sk Merge pull request #317258 from vigress8/upd-aseprite 2024-06-17 12:21:32 -03:00
sl slumber: 1.4.0 -> 1.5.0 2024-06-18 11:15:23 +02:00
sm Merge pull request #320821 from lpchaim/init-smartcat 2024-06-22 19:58:12 +00:00
sn snipe-it: 6.4.2 -> 7.0.4 2024-06-23 12:52:04 +02:00
so sof-tools: init at 2.9 2024-06-19 19:15:24 +08:00
sp SP800-90B_EntropyAssessment: rename to sp800-90b-entropyassessment 2024-06-23 12:39:49 +02:00
sq
sr srm-cuarzo: 0.5.6-2 -> 0.5.7-1 2024-06-18 04:20:32 +00:00
ss
st stalwart-mail: patch service file to fix module compat 2024-06-22 18:53:41 +02:00
su
sv svelte-language-server: 0.16.10 -> 0.16.11 2024-06-20 21:51:09 +00:00
sw
sx
sy Merge pull request #320801 from Aleksanaa/gnome-feeds 2024-06-22 14:33:45 +08:00
t-/t-rex
ta Merge pull request #321430 from r-ryantm/auto-update/tailscale-nginx-auth 2024-06-21 22:25:42 +02:00
tb/tbump
tc/tcsh
td
te
tg Merge pull request #303121 from pacien/tg-archive-init 2024-06-21 00:15:29 +05:30
th
ti tiny-dfr: 0.2.0 -> 0.3.0 2024-06-22 15:42:32 +00:00
tk
tl
tm
to toml-sort: init at 0.23.1 2024-06-21 20:18:56 +01:00
tp tparse: 0.13.3 -> 0.14.0 2024-06-22 02:59:12 +00:00
tr Merge pull request #258058 from doronbehar/pkg/transmission_4 2024-06-23 00:07:37 +03:00
tt
tu
tw
tx/txr
ty typstyle: 0.11.26 -> 0.11.27 2024-06-21 09:44:35 +02:00
uc Merge #321435: Revert #320852: Clean up cross bootstrapping 2024-06-21 08:14:02 +02:00
ud
ue
ug
uh/uhttpmock_1_0
ui
um/umpire
un
up
us
ut
uu/uuu
uv/uv uv: 0.2.11 -> 0.2.13 2024-06-19 10:43:46 +00:00
uw/uwhoisd
ux
va vacuum-go: 0.10.0 -> 0.10.1 2024-06-22 15:45:10 +00:00
vc vcpkg-tool: move some deps to buildInputs 2024-06-20 17:01:25 +02:00
vd/vdhcoapp
ve vencord: 1.8.9 -> 1.9.0 2024-06-21 10:04:31 -04:00
vg/vgm2x
vi violet: 0.4.6 -> 0.5.0 2024-06-20 08:59:30 +00:00
vk/vkd3d
vl
vm/vms-empire
vn/vndr vndr: migrate to buildGoModule 2024-06-21 10:21:33 +02:00
vo/voidmap
vp
vs/vscode-js-debug vscode-js-debug: fix missing jq in postPatch 2024-06-18 22:24:01 +02:00
vu
vv/vvvvvv
vz/vzic
wa warp-terminal: 0.2024.06.11.08.02.stable_03 -> 0.2024.06.18.08.02.stable_04 2024-06-22 06:49:39 +00:00
wb
we treewide: remove wolfangaukang as maintainer 2024-06-22 07:03:16 -06:00
wh whatsapp: init at 2.24.11.85 (#321464) 2024-06-22 20:45:31 +05:30
wi
wl wl-clipboard-rs: 0.8.1 -> 0.9.0 2024-06-20 04:11:15 +00:00
wo
wp
ws nixosTests.wstunnel: init 2024-06-18 11:07:06 +03:00
wt wttrbar: 0.10.2 -> 0.10.4 2024-06-21 01:57:55 +00:00
wx/wxc
wy/wyoming-satellite
x1/x16
x5/x509-limbo
xa/xarcan
xc
xd
xe xemu: 0.7.123 -> 0.7.127 2024-06-21 05:24:29 +00:00
xf/xfs-undelete
xh/xhosts
xi
xl/xlights
xm Merge pull request #318266 from katexochen/xmonad-log/mod 2024-06-19 15:55:20 +02:00
xn/xnlinkfinder
xo xonsh: 0.15.1 -> 0.17.0 2024-06-18 22:49:13 +08:00
xp
xr/xr-hardware
xs
xu/xunit-viewer
xw/xwayland-run
ya yamlscript: 0.1.61 -> 0.1.63 2024-06-21 23:35:03 +00:00
yc/ycmd
yd/ydotool
ye
yg/yggdrasil
yj/yj
yo
ys/ysfx
yt
yu
za
zb/zbus-xmlgen
zc/zcfan
ze zed-editor: add withGLES flag 2024-06-21 15:38:36 +02:00
zf/zfind zfind: 0.4.3 -> 0.4.4 2024-06-22 19:36:35 +00:00
zi zitadel: Drop Sorixelle as maintainer 2024-06-21 16:11:10 +02:00
zl/zluda
zm/zmkBATx
zo zoraxy: 3.0.6 -> 3.0.7 2024-06-20 19:23:31 +00:00
zp zpaqfranz: 59.7 -> 59.8 2024-06-19 16:16:47 +00:00
zs Merge pull request #296562 from fidgetingbits/add-zsh-zhooks-plugin 2024-06-21 00:24:07 +05:30
zu/zug
zw/zwave-js-server
zx
README.md

Name-based package directories

The structure of this directory maps almost directly to top-level package attributes. Add new top-level packages to Nixpkgs using this mechanism whenever possible.

Packages found in the name-based structure are automatically included, without needing to be added to all-packages.nix. However if the implicit attribute defaults need to be changed for a package, this must still be declared in all-packages.nix.

Example

The top-level package pkgs.some-package may be declared by setting up this file structure:

pkgs
└── by-name
   ├── so
   ┊  ├── some-package
      ┊  └── package.nix

Where some-package is the package name and so is the lowercased 2-letter prefix of the package name.

The package.nix may look like this:

# A function taking an attribute set as an argument
{
  # Get access to top-level attributes for use as dependencies
  lib,
  stdenv,
  libbar,

  # Make this derivation configurable using `.override { enableBar = true }`
  enableBar ? false,
}:

# The return value must be a derivation
stdenv.mkDerivation {
  # ...
  buildInputs =
    lib.optional enableBar libbar;
}

You can also split up the package definition into more files in the same directory if necessary.

Once defined, the package can be built from the Nixpkgs root directory using:

nix-build -A some-package

See the general package conventions for more information on package definitions.

Changing implicit attribute defaults

The above expression is called using these arguments by default:

{
  lib = pkgs.lib;
  stdenv = pkgs.stdenv;
  libbar = pkgs.libbar;
}

But the package might need pkgs.libbar_2 instead. While the function could be changed to take libbar_2 directly as an argument, this would change the .override interface, breaking code like .override { libbar = ...; }. So instead it is preferable to use the same generic parameter name libbar and override its value in pkgs/top-level/all-packages.nix:

{
  libfoo = callPackage ../by-name/so/some-package/package.nix {
    libbar = libbar_2;
  };
}

Manual migration guidelines

Most packages are still defined in all-packages.nix and the category hierarchy. Please hold off migrating your maintained packages to this directory.

  1. An automated migration for the majority of packages is being worked on. In order to save on contributor and reviewer time, packages should only be migrated manually afterwards if they couldn't be migrated automatically.

  2. Manual migrations should only be lightly encouraged if the relevant code is being worked on anyways. For example with a package update or refactoring.

  3. Manual migrations should not remove definitions from all-packages.nix with custom arguments. That is a backwards-incompatible change because it changes the .override interface. Such packages may still be moved to pkgs/by-name however, while keeping the definition in all-packages.nix. See also changing implicit attribute defaults.

Limitations

There's some limitations as to which packages can be defined using this structure:

  • Only packages defined using pkgs.callPackage. This excludes packages defined using pkgs.python3Packages.callPackage ....

    Instead:

    • Either change the package definition to work with pkgs.callPackage.
    • Or use the category hierarchy.
  • Only top-level packages. This excludes packages for other package sets like pkgs.pythonPackages.*.

    Refer to the definition and documentation of the respective package set to figure out how such packages can be declared.

Validation

CI performs certain checks on the pkgs/by-name structure. This is done using the nixpkgs-check-by-name tool.

You can locally emulate the CI check using

$ ./maintainers/scripts/check-by-name.sh master

See here for more info.

Recommendation for new packages with multiple versions

These checks of the pkgs/by-name structure can cause problems in combination:

  1. New top-level packages using callPackage must be defined via pkgs/by-name.
  2. Packages in pkgs/by-name cannot refer to files outside their own directory.

This means that outside pkgs/by-name, multiple already-present top-level packages can refer to some common file. If you open a PR to another instance of such a package, CI will fail check 1, but if you try to move the package to pkgs/by-name, it will fail check 2.

This is often the case for packages with multiple versions, such as

{
  foo_1 = callPackage ../tools/foo/1.nix { };
  foo_2 = callPackage ../tools/foo/2.nix { };
}

The best way to resolve this is to not use callPackage directly, such that check 1 doesn't trigger. This can be done by using inherit on a local package set:

{
  inherit
    ({
      foo_1 = callPackage ../tools/foo/1.nix { };
      foo_2 = callPackage ../tools/foo/2.nix { };
    })
    foo_1
    foo_2
    ;
}

While this may seem pointless, this can in fact help with future package set refactorings, because it establishes a clear connection between related attributes.

Further possible refactorings

This is not required, but the above solution also allows refactoring the definitions into a separate file:

{
  inherit (import ../tools/foo pkgs)
    foo_1 foo_2;
}
# pkgs/tools/foo/default.nix
pkgs: {
  foo_1 = callPackage ./1.nix { };
  foo_2 = callPackage ./2.nix { };
}

Alternatively using callPackages if callPackage isn't used underneath and you want the same .override arguments for all attributes:

{
  inherit (callPackages ../tools/foo { })
    foo_1 foo_2;
}
# pkgs/tools/foo/default.nix
{
  stdenv
}: {
  foo_1 = stdenv.mkDerivation { /* ... */ };
  foo_2 = stdenv.mkDerivation { /* ... */ };
}

Exposing the package set

This is not required, but the above solution also allows exposing the package set as an attribute:

{
  foo-versions = import ../tools/foo pkgs;
  # Or using callPackages
  # foo-versions = callPackages ../tools/foo { };

  inherit (foo-versions) foo_1 foo_2;
}