A modern, delicious implementation of the Nix package manager, focused on correctness, usability, and growth — and committed to doing right by its community
Find a file
Chuck 3e2c77d001 Check for and repair bad .links entries
A corrupt entry in .links prevents adding a fixed version of that file
to the store in any path.  The user experience is that corruption
present in the store 'spreads' to new paths added to the store:

(With store optimisation enabled)

1. A file in the store gets corrupted somehow (eg: filesystem bug).
2. The user tries to add a thing to the store which contains a good copy
   of the corrupted file.
3. The file being added to the store is hashed, found to match the bad
   .links entry, and is replaced by a link to the bad .links entry.
   (The .links entry's hash is not verified during add -- this would
   impose a substantial performance burden.)
4. The user observes that the thing in the store that is supposed to be
   a copy of what they were trying to add is not a correct copy -- some
   files have different contents!  Running "nix-store --verify
   --check-contents --repair" does not fix the problem.

This change makes "nix-store --verify --check-contents --repair" fix
this problem.  Bad .links entries are simply removed, allowing future
attempts to insert a good copy of the file to succeed.
2019-11-15 11:55:36 -08:00
.github Remove .github/FUNDING.yml 2019-07-23 15:21:23 +02:00
config update config/config.{sub,guess} 2018-08-13 20:00:17 +00:00
contrib function-trace: always show the trace 2019-09-18 23:23:21 +02:00
corepkgs nix-channel: Don't fetch binary-cache-url 2019-06-25 13:27:16 +02:00
doc/manual manual: nix-shell: Elaborate on using -p with expressions. 2019-11-10 17:29:13 +01:00
m4 autoconf: Fix C++17 detection not working on Ubuntu 16.04. 2019-07-03 04:32:25 +02:00
maintainers upload-release.pl: Fix sshfs call 2019-09-04 21:44:40 +02:00
misc Make nix-daemon.plist less fragile on macOS 2019-10-09 12:52:01 +01:00
mk Fix Perl bindings 2019-11-07 12:18:37 +01:00
perl Fix Perl bindings 2019-11-07 12:18:37 +01:00
scripts install-multi-user.sh: Remove unused variables 2019-10-23 21:24:21 +02:00
src Check for and repair bad .links entries 2019-11-15 11:55:36 -08:00
tests Replace $TMPDIR with $TEST_ROOT in tests/fetchurl.sh 2019-11-08 12:08:10 -08:00
.dir-locals.el Add .dir-locals.el for Emacs 2016-01-28 11:12:04 +01:00
.editorconfig Add .editorconfig 2017-06-05 22:57:28 +01:00
.gitignore gitignore /precompiled-headers.h.?ch 2019-11-08 14:48:52 +00:00
.travis.yml travis: enable linux builds 2019-10-31 16:37:33 +00:00
.version Bump version 2019-09-04 15:59:33 +02:00
bootstrap.sh bootstrap: Simplify & make more robust. 2011-09-06 12:11:05 +00:00
configure.ac Revert "autoconf: Allow overriding CFLAGS/CXXFLAGS from outside." 2019-11-07 10:12:35 +01:00
COPYING * Change this to LGPL to keep the government happy. 2006-04-25 16:41:06 +00:00
local.mk Merge all nix-* binaries into nix 2018-10-26 12:54:00 +02:00
Makefile Fix Perl bindings 2019-11-07 12:18:37 +01:00
Makefile.config.in Get BOOST_LDFLAGS from autoconf, fix Ubuntu 16.04 build. 2019-07-03 04:32:25 +02:00
nix.spec.in Remove world-writability from per-user directories 2019-10-09 23:34:48 +02:00
precompiled-headers.h Fix macOS build 2019-11-07 11:53:28 +01:00
README.md Add Open Collective 2019-07-18 10:57:26 +02:00
release-common.nix Use upstream nlohmann_json 2019-11-07 18:23:17 +01:00
release.nix Fix installerScript job 2019-11-07 18:31:16 +01:00
shell.nix Switch to nixpkgs 19.09 2019-10-25 07:23:05 -04:00

Open Collective supporters

Nix, the purely functional package manager

Nix is a new take on package management that is fairly unique. Because of its purity aspects, a lot of issues found in traditional package managers don't appear with Nix.

To find out more about the tool, usage and installation instructions, please read the manual, which is available on the Nix website at http://nixos.org/nix/manual.

Contributing

Take a look at the Hacking Section of the manual. It helps you to get started with building Nix from source.

License

Nix is released under the LGPL v2.1

This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit.