Welcome to this instance of Nixery, an ad-hoc container image registry that provides packages from the Nix package manager.
You can pull container images from this registry
at image-factory-stg.devx.us-east.core-services.ingress.coreweave.com by appending any
packages that you need in the URL, separated by slashes.
These usage examples assume that you use Docker, but should not be much different for other OCI-compatible platforms.
Pull an image from this registry, separating each package you want included by a slash:
docker pull image-factory-stg.devx.us-east.core-services.ingress.coreweave.com/shell/git/htop
This gives you an image with git, htop and an interactively
configured shell. You could run it like this:
docker run -ti image-factory-stg.devx.us-east.core-services.ingress.coreweave.com/shell/git/htop bash
Each path segment corresponds either to a key in the Nix package set, or a meta-package that automatically expands to several other packages.
Meta-packages must be the first path component if they are used. Currently there are only two meta-packages:
shell, which provides a bash-shell with interactive
configuration and standard tools like coreutils
arm64, which provides ARM64 binaries
Below are the Nix build errors for some packages that failed to build recently. If Nixery served you an error, you might be able to find more details about it here.
unpacking 'https://github.com/NixOS/nixpkgs/archive/nixpkgs-unstable.tar.gz' into the Git cache...
error:
… from call site
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:13:1:
12|
13| {
| ^
14| # Description of the package set to be used (will be loaded by load-pkgs.nix)
… while calling anonymous lambda
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:13:1:
12|
13| {
| ^
14| # Description of the package set to be used (will be loaded by load-pkgs.nix)
… from call site
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:195:1:
194| in
195| writeText "build-output.json" (if (length allContents.errors) == 0
| ^
196| then toJSON buildOutput
… while calling 'writeText'
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/build-support/trivial-builders/default.nix:187:11:
186| writeText =
187| name: text:
| ^
188| # TODO: To fully deprecate, replace the assertion with `lib.isString` and remove the warning
… in the condition of the assert statement
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/build-support/trivial-builders/default.nix:189:5:
188| # TODO: To fully deprecate, replace the assertion with `lib.isString` and remove the warning
189| assert
| ^
190| lib.strings.isConvertibleWithToString text
… in the left operand of the OR (||) operator
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/build-support/trivial-builders/default.nix:191:7:
190| lib.strings.isConvertibleWithToString text
191| || throw "pkgs.writeText ${lib.strings.escapeNixString name}: The second argument should be a string, but it's a ${builtins.typeOf text} instead.";
| ^
192| lib.warnIf (!lib.isString text)
… from call site
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/build-support/trivial-builders/default.nix:190:7:
189| assert
190| lib.strings.isConvertibleWithToString text
| ^
191| || throw "pkgs.writeText ${lib.strings.escapeNixString name}: The second argument should be a string, but it's a ${builtins.typeOf text} instead.";
… while calling anonymous lambda
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/strings.nix:2625:5:
2624| in
2625| x: isStringLike x || elem (typeOf x) types || (isList x && lib.all isConvertibleWithToString x);
| ^
2626|
… in the left operand of the OR (||) operator
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/strings.nix:2625:48:
2624| in
2625| x: isStringLike x || elem (typeOf x) types || (isList x && lib.all isConvertibleWithToString x);
| ^
2626|
… in the left operand of the OR (||) operator
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/strings.nix:2625:23:
2624| in
2625| x: isStringLike x || elem (typeOf x) types || (isList x && lib.all isConvertibleWithToString x);
| ^
2626|
… from call site
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/strings.nix:2625:8:
2624| in
2625| x: isStringLike x || elem (typeOf x) types || (isList x && lib.all isConvertibleWithToString x);
| ^
2626|
… while calling 'isStringLike'
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/strings.nix:2645:18:
2644| */
2645| isStringLike = x: isString x || isPath x || x ? outPath || x ? __toString;
| ^
2646|
… in the left operand of the OR (||) operator
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/strings.nix:2645:59:
2644| */
2645| isStringLike = x: isString x || isPath x || x ? outPath || x ? __toString;
| ^
2646|
… in the left operand of the OR (||) operator
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/strings.nix:2645:44:
2644| */
2645| isStringLike = x: isString x || isPath x || x ? outPath || x ? __toString;
| ^
2646|
… in the left operand of the OR (||) operator
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/strings.nix:2645:32:
2644| */
2645| isStringLike = x: isString x || isPath x || x ? outPath || x ? __toString;
| ^
2646|
… while calling the 'isString' builtin
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/strings.nix:2645:21:
2644| */
2645| isStringLike = x: isString x || isPath x || x ? outPath || x ? __toString;
| ^
2646|
… while evaluating a branch condition
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:195:32:
194| in
195| writeText "build-output.json" (if (length allContents.errors) == 0
| ^
196| then toJSON buildOutput
… while calling the 'length' builtin
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:195:36:
194| in
195| writeText "build-output.json" (if (length allContents.errors) == 0
| ^
196| then toJSON buildOutput
… while calling the 'foldl'' builtin
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:122:5:
121| in
122| foldl' splitter init fetched;
| ^
123|
… while calling 'splitter'
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:115:25:
114| let
115| splitter = attrs: res:
| ^
116| if hasAttr "error" res
… while evaluating a branch condition
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:116:9:
115| splitter = attrs: res:
116| if hasAttr "error" res
| ^
117| then attrs // { errors = attrs.errors ++ [ res ]; }
… while calling the 'hasAttr' builtin
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:116:12:
115| splitter = attrs: res:
116| if hasAttr "error" res
| ^
117| then attrs // { errors = attrs.errors ++ [ res ]; }
… while calling anonymous lambda
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:68:28:
67| # `haskellPackages.stylish-haskell`.
68| deepFetch = with lib; s: n:
| ^
69| let
… from call site
at /nix/store/zk2qpnzz9hcvwh46q1vcrbzasfiny2jh-prepare-image.nix:90:5:
89| in
90| attrByPath path fetchLower s;
| ^
91|
… while calling 'attrByPath'
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/attrsets.nix:88:24:
87| attrByPath =
88| attrPath: default: set:
| ^
89| let
… from call site
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/attrsets.nix:105:5:
104| in
105| attrByPath' 0 set;
| ^
106|
… while calling 'attrByPath''
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/attrsets.nix:92:12:
91| attrByPath' =
92| n: s:
| ^
93| (
… from call site
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/attrsets.nix:101:35:
100| in
101| if s ? ${attr} then attrByPath' (n + 1) s.${attr} else default
| ^
102| )
… while calling 'attrByPath''
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/attrsets.nix:92:12:
91| attrByPath' =
92| n: s:
| ^
93| (
… from call site
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/lib/attrsets.nix:101:55:
100| in
101| if s ? ${attr} then attrByPath' (n + 1) s.${attr} else default
| ^
102| )
… while calling anonymous lambda
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/top-level/aliases.nix:217:31:
216| mapAliases =
217| aliases: lib.mapAttrs (n: alias: removeRecurseForDerivations (checkInPkgs n alias)) aliases;
| ^
218|
… from call site
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/top-level/aliases.nix:217:38:
216| mapAliases =
217| aliases: lib.mapAttrs (n: alias: removeRecurseForDerivations (checkInPkgs n alias)) aliases;
| ^
218|
… while calling 'removeRecurseForDerivations'
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/top-level/aliases.nix:25:5:
24| removeRecurseForDerivations =
25| alias:
| ^
26| if alias.recurseForDerivations or false then
… while evaluating a branch condition
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/top-level/aliases.nix:26:5:
25| alias:
26| if alias.recurseForDerivations or false then
| ^
27| lib.removeAttrs alias [ "recurseForDerivations" ]
… from call site
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/top-level/aliases.nix:217:67:
216| mapAliases =
217| aliases: lib.mapAttrs (n: alias: removeRecurseForDerivations (checkInPkgs n alias)) aliases;
| ^
218|
… while calling 'checkInPkgs'
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/top-level/aliases.nix:213:8:
212| checkInPkgs =
213| n: alias:
| ^
214| if builtins.hasAttr n super then abort "Alias ${n} is still in all-packages.nix" else alias;
… while calling the 'throw' builtin
at /nix/store/slrb6y4glmnzavmh5bfzh0fnxbvbm6wk-source/pkgs/top-level/aliases.nix:1835:12:
1834| python314Full = throw "python314Full has been removed. Bluetooth support is now enabled by default. The tkinter package is available within the package set."; # Added 2025-08-30
1835| python = throw "`python` previously pointed to Python 2; use `python3` instead"; # Converted to throw 2025-10-27
| ^
1836| python-qt = throw "python-qt has been removed, because hard to maintain and not required by anything"; # Added 2025-01-14
error: `python` previously pointed to Python 2; use `python3` instead
The short version is that we use the Nix package manager and an optimised layering strategy.
Check out the Nixery talk from NixCon 2019 for more information.
nixery.dev in production?
While we appreciate the enthusiasm, if you would like to use Nixery in your production
project we recommend setting up a private instance. The public Nixery
at nixery.dev is run on a best-effort basis and we make no guarantees
about availability.
Nixery was written by tazjin, originally at Google. These days Nixery is maintained by TVL.
Nixery would not be possible without the many people that have contributed to Nix and nixpkgs over time, maybe you could become one of them?
Nixery lives in the TVL monorepo. All development happens there and follows the TVL contribution guidelines.
We mirror the source code to Github but do not guarantee that anyone will look at PRs or issues there.