Nix, the purely functional package manager
Go to file
Robert Hensing 7e5fa5c25c doc/glossary: Define package and package attribute set
A small step towards https://github.com/NixOS/nix/issues/6507

I believe this incomplete definition is one that can be agreed on.
It would be nice to define more, but considering that the issue
also proposes changes to the design, I believe we should hold off
on those.

As for the wording, we're dealing with some very general and vague
terms, that have to be treated with exactly the right amount of
vagueness to be effective.

I start out with a fairly abstract definition of package.
1. to establish a baseline so we know what we're talking about
2. so that we can go in and clarify that we have an extra, Nix-specific
   definition.

"Software" is notoriously ill-defined, so it makes a great qualifier
for package, which we don't really want to pin down either, because
that would just get us lost in discussion.
We can come back to this after we've done 6057 and a few years in a
desert cave.

Then comes the "package attribute set" definition.
I can already hear Valentin say "That's not even Nix's responsibility!"
and on some days I might even agree.
However, in our current reality, we have `nix-env`, `nix-build` and
`nix profile`, which query the `outputName` attribute - among others -
which just don't exist in the derivation.

For those who can't believe what they're reading:

    $ nix-build --expr 'with import ./. {}; bind // {outputName = "lib";}' --no-out-link
    this path will be fetched (1.16 MiB download, 3.72 MiB unpacked):
      /nix/store/rfk6klfx3z972gavxlw6iypnj6j806ma-bind-9.18.21-lib
    copying path '/nix/store/rfk6klfx3z972gavxlw6iypnj6j806ma-bind-9.18.21-lib' from 'https://cache.nixos.org'...
    /nix/store/rfk6klfx3z972gavxlw6iypnj6j806ma-bind-9.18.21-lib

and let me tell you that bind is not a library.

So anyway, that's also proof of why calling this a "derivation attrset" would be wrong, despite the type attribute.
2024-01-13 20:00:06 +01: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 doc/glossary: Define package and package attribute set 2024-01-13 20:00:06 +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 Build Windows DLLs with -Wl,--export-all-symbols 2024-01-11 23:34:37 -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 Merge pull request #9737 from obsidiansystems/sys-error-split 2024-01-12 12:41:36 -05:00
tests Merge pull request #9737 from obsidiansystems/sys-error-split 2024-01-12 12:41:36 -05:00
.clang-format Add clang format configuration 2024-01-08 19:46:38 +01: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 Newer Nixpkgs, get readline on Windows 2024-01-12 19:19:21 -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 Build Windows DLLs with -Wl,--export-all-symbols 2024-01-11 23:34:37 -05:00
Makefile.config.in Split --disable-tests, fix cross builds 2023-12-18 10:47:50 -05:00
package.nix Newer Nixpkgs, get readline on Windows 2024-01-12 19:19:21 -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.