Nix, the purely functional package manager
Go to file
Rebecca Turner 0fa08b4516
Unify and refactor value printing
Previously, there were two mostly-identical value printers -- one in
`libexpr/eval.cc` (which didn't force values) and one in
`libcmd/repl.cc` (which did force values and also printed ANSI color
codes).

This PR unifies both of these printers into `print.cc` and provides a
`PrintOptions` struct for controlling the output, which allows for
toggling whether values are forced, whether repeated values are tracked,
and whether ANSI color codes are displayed.

Additionally, `PrintOptions` allows tuning the maximum number of
attributes, list items, and bytes in a string that will be displayed;
this makes it ideal for contexts where printing too much output (e.g.
all of Nixpkgs) is distracting. (As requested by @roberth in
https://github.com/NixOS/nix/pull/9554#issuecomment-1845095735)

Please read the tests for example output.

Future work:
- It would be nice to provide this function as a builtin, perhaps
  `builtins.toStringDebug` -- a printing function that never fails would
  be useful when debugging Nix code.
- It would be nice to support customizing `PrintOptions` members on the
  command line, e.g. `--option to-string-max-attrs 1000`.
2024-01-11 16:34:36 -08:00
.github build(deps): bump zeebe-io/backport-action from 2.2.0 to 2.3.0 2023-12-18 22:36:31 +00:00
config Run autoupdate 2021-06-01 11:42:38 +02:00
contrib function-trace: always show the trace 2019-09-18 23:23:21 +02:00
doc fix an old lost direct (#9458) 2024-01-08 19:38:36 +01:00
m4 Add configure test to ensure GCC bug is fixed 2023-10-31 12:09:46 -04:00
maintainers flake.nix: Use config not system for cross so we can be a bit more precise 2023-12-11 12:31:27 -05:00
misc Remove custom lowdown 2023-12-13 16:25:18 -05:00
mk Only link with -pthread on Unix 2024-01-10 20:38:39 -05:00
perl Signer infrastructure: Prep for #9076 2024-01-03 16:13:55 -05:00
scripts installer: allow overriding of NIX_FIRST_BUILD_ID on darwin 2023-12-18 15:02:26 -08:00
src Unify and refactor value printing 2024-01-11 16:34:36 -08:00
tests Unify and refactor value printing 2024-01-11 16:34:36 -08:00
.dir-locals.el .dir-locals.el: Set c-block-comment-prefix 2020-07-10 11:21:06 +02:00
.editorconfig .editorconfig: Also affect Perl FFI xs file 2023-11-09 23:11:52 -05:00
.gitignore gitignore: add result-* 2024-01-09 18:36:09 +07:00
.version Bump version 2023-11-20 15:06:28 +01:00
boehmgc-coroutine-sp-fallback.diff Fix boehmgc-coroutine-sp-fallback.diff for FreeBSD 2023-09-20 09:04:42 -04:00
boehmgc-traceable_allocator-public.diff Use boost::container::small_vector in place of VLAs 2023-11-21 20:52:27 +01:00
configure.ac Improve build sytem support for readline instead of editline 2024-01-09 16:56:55 -05:00
CONTRIBUTING.md Merge pull request #9182 from fricklerhandwerk/popular-issues 2023-10-19 16:25:36 -04:00
COPYING * Change this to LGPL to keep the government happy. 2006-04-25 16:41:06 +00:00
default.nix add flake-compat to flake.nix and use sha256 in default.nix 2023-03-06 21:11:24 +01:00
docker.nix fix "add an option to include flake-registry..." 2023-05-16 14:35:31 +02:00
flake.lock flake: Go back to regular nixos-23.05-small 2024-01-04 10:45:00 -05:00
flake.nix Improve the build without GC 2024-01-09 17:48:50 -05:00
local.mk Use positive source filtering for the standalone functional tests job 2023-10-09 08:29:27 -04:00
Makefile Move down fallback targets in Makefile 2023-12-20 03:23:49 -05:00
Makefile.config.in Split --disable-tests, fix cross builds 2023-12-18 10:47:50 -05:00
package.nix packages.nix: Fix installUnitTests condition 2024-01-11 16:39:56 -05:00
precompiled-headers.h Config: Use nlohmann/json 2020-08-20 11:02:16 +02:00
README.md fix: Remove extra to from README.md (#9213) 2023-10-23 19:20:23 +02:00
shell.nix Remove url literals 2022-01-24 13:28:21 +01:00

Nix

Open Collective supporters Test

Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. Please refer to the Nix manual for more details.

Installation and first steps

Visit nix.dev for installation instructions and beginner tutorials.

Full reference documentation can be found in the Nix manual.

Building And Developing

See our Hacking guide in our manual for instruction on how to set up a development environment and build Nix from source.

Contributing

Check the contributing guide if you want to get involved with developing Nix.

Additional Resources

License

Nix is released under the LGPL v2.1.