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
eldritch horrors 1c28270c9d libstore: don't hold state lock while unpausing transfers
libcurl may call callbacks during unpause. if libcurl calls these
callbacks often enough they may find that they've exhausted their
allotted buffer space, at which point they will call dataCallback
as provided in enqueueFileTransfer. download() provides callbacks
that have their own state locks and may call unpause on transfers
with *their* state locks they share with curlFileTransfer. it was
possible to cause a deadlock between these two if the curl worker
thread tried to provide some data to a callback with the transfer
state lock held and the user transfer simultaneously unpaused its
associated curl transfer, with its own state lock held. obviously
not a great situation, but avoidable by not holding any lock when
we unpause transfers and execute their callbacks, as is otherwise
the case when a transfer runs normally and is never paused at all

Change-Id: I58556d292adaf7dfb14001d3a6c5c38fa71994da
2024-11-04 23:54:41 +00:00
.github fix: docs issue template was busted 2024-09-14 19:28:46 +00:00
bench benchmarks: Fix purity 2024-10-18 19:37:23 +02:00
contrib
doc Merge "add .mailmap" into main 2024-11-04 13:16:16 +00:00
maintainers rl-next: fix incorrect CL list syntax 2024-08-09 19:03:08 -07:00
meson clang-tidy: fix the fact that we are not linting headers properly 2024-08-28 09:52:08 -07:00
misc packaging: use in-tree capnproto derivation 2024-10-18 15:40:22 -07:00
nix-support editline: Vendor cl/1883 patch to recognize Alt+Left/Alt+Right 2024-09-11 09:35:00 -07:00
perl
releng
scripts build: fix deprecated uses of configure_file 2024-09-27 11:55:32 -05:00
src libstore: don't hold state lock while unpausing transfers 2024-11-04 23:54:41 +00:00
subprojects rowan: 0.15.15 -> 0.15.16 2024-08-26 11:34:43 -07:00
tests Merge "Revert "Reject weak hash algorithms as SRIs, and warn in any other cases"" into main 2024-11-02 19:50:52 +00:00
.clang-format
.clang-tidy
.dir-locals.el
.editorconfig editorconfig: Add meson.build 2024-10-01 16:09:47 -07:00
.envrc
.gitignore gitignore: ignore *.pyc files 2024-10-20 22:08:35 -07:00
.mailmap add .mailmap 2024-11-04 13:46:10 +01:00
.this-is-lix
Cargo.lock rowan: 0.15.15 -> 0.15.16 2024-08-26 11:34:43 -07:00
Cargo.toml build: move to a Cargo workspace 2024-08-21 17:09:10 +00:00
CONTRIBUTING.md
COPYING
default.nix
docker.nix
flake.lock flake.lock: update everything 2024-09-25 18:42:16 -07:00
flake.nix package.nix: Fix cross devShell 2024-11-02 06:32:20 +00:00
justfile
meson.build chore: remove monolithic coreutils requirement 2024-10-30 15:12:35 +04:00
meson.options
package.nix package.nix: Fix cross devShell 2024-11-02 06:32:20 +00:00
README.md README: clarify license to match documentation 2024-08-10 16:11:58 -07:00
shell.nix
treefmt.toml
version.json Update version to 2.92 2024-08-12 18:06:08 -07:00

Lix

Lix is an implementation of Nix, a powerful package management system for Linux and other Unix systems that makes package management reliable and reproducible.

Read more about us at https://lix.systems.

Installation

On Linux and macOS the easiest way to install Lix is to run the following shell command (as a user other than root):

$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install

For systems that already have a Nix implementation installed, such as NixOS systems, read our install page

Building And Developing

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

Additional Resources

License

Lix is released under LGPL-2.1-or-later.