From 748d8310fa7e044ad4c950ff38e31309ea3f606d Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Sun, 5 May 2024 15:32:20 -0700 Subject: [PATCH] Fix the pages in the manual for Lix This doesn't comprehensively fix everything outdated in the manual, or make the manual greatly better, but it does note down where at least jade noticed it was wrong, and it does fix all the instances of referencing Nix to conform to the style guide to the best of our ability. A lot of things have been commented out for being wrong, and there are three types of FIXME introduced: - FIXME(Lix): generically Lix needs to fix it - FIXME(Qyriad): re https://git.lix.systems/lix-project/lix/issues/215 - FIXME(meson): docs got outdated by meson changes and need rewriting I did fix a bunch of it that I could, but there could certainly be mistakes and this is definitely just an incremental improvement. Fixes: https://git.lix.systems/lix-project/lix/issues/266 Change-Id: I5993c4603d7f026a887089fce77db08394362135 --- doc/manual/book.toml | 8 ++-- ...debugger-more-reliably-in-let-and-calls.md | 4 +- doc/manual/rl-next/eval-system.md | 2 +- doc/manual/rl-next/nix-profile-names.md | 2 +- doc/manual/src/SUMMARY.md | 10 ++-- .../src/advanced-topics/cores-vs-jobs.md | 4 +- doc/manual/src/advanced-topics/diff-hook.md | 14 +++--- .../src/advanced-topics/distributed-builds.md | 19 ++++---- .../src/advanced-topics/post-build-hook.md | 6 +-- doc/manual/src/architecture/architecture.md | 6 +-- .../src/architecture/file-system-object.md | 4 +- doc/manual/src/command-ref/command-ref.md | 2 +- doc/manual/src/command-ref/conf-file.md | 6 +-- doc/manual/src/command-ref/env-common.md | 30 ++++++------ doc/manual/src/command-ref/files.md | 2 +- doc/manual/src/command-ref/files/profiles.md | 2 +- doc/manual/src/command-ref/main-commands.md | 2 +- .../src/command-ref/nix-collect-garbage.md | 4 +- doc/manual/src/command-ref/nix-daemon.md | 4 +- doc/manual/src/command-ref/opt-common.md | 36 ++++++++------ doc/manual/src/command-ref/utilities.md | 2 +- doc/manual/src/contributing/cli-guideline.md | 12 ++--- .../src/contributing/experimental-features.md | 11 ++++- doc/manual/src/contributing/hacking.md | 21 +++++---- doc/manual/src/contributing/testing.md | 47 +++++++++++++++---- doc/manual/src/glossary.md | 8 ++-- .../src/installation/building-source.md | 12 ++++- doc/manual/src/installation/env-variables.md | 24 +++++++--- doc/manual/src/installation/installation.md | 33 ++----------- .../src/installation/installing-binary.md | 14 ++++-- .../src/installation/installing-docker.md | 15 ++++-- .../src/installation/installing-source.md | 6 +-- doc/manual/src/installation/nix-security.md | 6 +-- .../src/installation/prerequisites-source.md | 12 +++++ .../src/installation/supported-platforms.md | 10 ++-- doc/manual/src/installation/uninstall.md | 21 +++++++-- doc/manual/src/installation/upgrading.md | 31 +++++++----- doc/manual/src/introduction.md | 43 +++++++---------- .../src/language/advanced-attributes.md | 10 ++-- doc/manual/src/language/derivations.md | 12 ++--- .../package-management/basic-package-mgmt.md | 31 +++++++----- .../binary-cache-substituter.md | 24 +++++++--- .../package-management/garbage-collection.md | 2 +- .../package-management/package-management.md | 2 +- .../src/package-management/s3-substituter.md | 29 ++++++++---- .../src/package-management/ssh-substituter.md | 6 +-- doc/manual/src/protocols/protocols.md | 2 +- doc/manual/src/protocols/tarball-fetcher.md | 4 +- doc/manual/src/quick-start.md | 23 +++++++-- doc/manual/src/release-notes/release-notes.md | 2 +- src/nix/upgrade-nix.md | 4 +- 51 files changed, 393 insertions(+), 253 deletions(-) diff --git a/doc/manual/book.toml b/doc/manual/book.toml index 54efa7965..1030f96bb 100644 --- a/doc/manual/book.toml +++ b/doc/manual/book.toml @@ -1,5 +1,5 @@ [book] -title = "Nix Reference Manual" +title = "Lix Reference Manual" [build] create-missing = false @@ -7,8 +7,10 @@ create-missing = false [output.html] additional-css = ["custom.css"] additional-js = ["redirects.js"] -edit-url-template = "https://github.com/NixOS/nix/tree/master/doc/manual/{path}" -git-repository-url = "https://github.com/NixOS/nix" +# Using our GitHub mirror enables easier typo fixes since there is no easy way +# to just submit a Gerrit CL by the web for trivial stuff. +edit-url-template = "https://github.com/lix-project/lix/tree/main/doc/manual/{path}" +git-repository-url = "https://git.lix.systems/lix-project/lix" # Handles replacing @docroot@ with a path to ./src relative to that markdown file, # {{#include handlebars}}, and the @generated@ syntax used within these. it mostly diff --git a/doc/manual/rl-next/enter-debugger-more-reliably-in-let-and-calls.md b/doc/manual/rl-next/enter-debugger-more-reliably-in-let-and-calls.md index c93225816..49e6c1cc8 100644 --- a/doc/manual/rl-next/enter-debugger-more-reliably-in-let-and-calls.md +++ b/doc/manual/rl-next/enter-debugger-more-reliably-in-let-and-calls.md @@ -18,8 +18,8 @@ in b ``` -Nix would correctly enter the debugger at `builtins.break a`, but if you asked +Lix would correctly enter the debugger at `builtins.break a`, but if you asked it to `:continue`, it would skip over the `builtins.break "hello"` expression entirely. -Now, Nix will correctly enter the debugger at both breakpoints. +Now, Lix will correctly enter the debugger at both breakpoints. diff --git a/doc/manual/rl-next/eval-system.md b/doc/manual/rl-next/eval-system.md index a4696a56c..54456cd6c 100644 --- a/doc/manual/rl-next/eval-system.md +++ b/doc/manual/rl-next/eval-system.md @@ -6,7 +6,7 @@ prs: 4093 Add a new `eval-system` option. Unlike `system`, it just overrides the value of `builtins.currentSystem`. This is more useful than overriding `system`, because you can build these derivations on remote builders which can work on the given system. -In contrast, `system` also effects scheduling which will cause Nix to build those derivations locally even if that doesn't make sense. +In contrast, `system` also effects scheduling which will cause Lix to build those derivations locally even if that doesn't make sense. `eval-system` only takes effect if it is non-empty. If empty (the default) `system` is used as before, so there is no breakage. diff --git a/doc/manual/rl-next/nix-profile-names.md b/doc/manual/rl-next/nix-profile-names.md index 53dc53fa9..0b2cd35d9 100644 --- a/doc/manual/rl-next/nix-profile-names.md +++ b/doc/manual/rl-next/nix-profile-names.md @@ -6,4 +6,4 @@ cls: [978, 980] [`nix profile`](@docroot@/command-ref/new-cli/nix3-profile.md) now uses names to refer to installed packages when running [`list`](@docroot@/command-ref/new-cli/nix3-profile-list.md), [`remove`](@docroot@/command-ref/new-cli/nix3-profile-remove.md) or [`upgrade`](@docroot@/command-ref/new-cli/nix3-profile-upgrade.md) as opposed to indices. Indices have been removed. Profile element names are generated when a package is installed and remain the same until the package is removed. -**Warning**: The `manifest.nix` file used to record the contents of profiles has changed. Nix will automatically upgrade profiles to the new version when you modify the profile. After that, the profile can no longer be used by older versions of Nix. +**Warning**: The `manifest.nix` file used to record the contents of profiles has changed. Lix will automatically upgrade profiles to the new version when you modify the profile. After that, the profile can no longer be used by older versions of Lix. diff --git a/doc/manual/src/SUMMARY.md b/doc/manual/src/SUMMARY.md index 499f3f9db..e0bba146e 100644 --- a/doc/manual/src/SUMMARY.md +++ b/doc/manual/src/SUMMARY.md @@ -5,17 +5,17 @@ - [Installation](installation/installation.md) - [Supported Platforms](installation/supported-platforms.md) - [Installing a Binary Distribution](installation/installing-binary.md) - - [Installing Nix from Source](installation/installing-source.md) + - [Installing Lix from Source](installation/installing-source.md) - [Prerequisites](installation/prerequisites-source.md) - [Obtaining a Source Distribution](installation/obtaining-source.md) - - [Building Nix from Source](installation/building-source.md) - - [Using Nix within Docker](installation/installing-docker.md) + - [Building Lix from Source](installation/building-source.md) + - [Using Lix within Docker](installation/installing-docker.md) - [Security](installation/nix-security.md) - [Single-User Mode](installation/single-user.md) - [Multi-User Mode](installation/multi-user.md) - [Environment Variables](installation/env-variables.md) - - [Upgrading Nix](installation/upgrading.md) - - [Uninstalling Nix](installation/uninstall.md) + - [Upgrading Lix](installation/upgrading.md) + - [Uninstalling Lix](installation/uninstall.md) - [Package Management](package-management/package-management.md) - [Basic Package Management](package-management/basic-package-mgmt.md) - [Profiles](package-management/profiles.md) diff --git a/doc/manual/src/advanced-topics/cores-vs-jobs.md b/doc/manual/src/advanced-topics/cores-vs-jobs.md index 9e91ab9c7..5a2e2ab0e 100644 --- a/doc/manual/src/advanced-topics/cores-vs-jobs.md +++ b/doc/manual/src/advanced-topics/cores-vs-jobs.md @@ -1,13 +1,13 @@ # Tuning Cores and Jobs -Nix has two relevant settings with regards to how your CPU cores will +Lix has two relevant settings with regards to how your CPU cores will be utilized: `cores` and `max-jobs`. This chapter will talk about what they are, how they interact, and their configuration trade-offs. - `max-jobs`\ Dictates how many separate derivations will be built at the same time. If you set this to zero, the local machine will do no - builds. Nix will still substitute from binary caches, and build + builds. Lix will still substitute from binary caches, and build remotely if remote builders are configured. - `cores`\ diff --git a/doc/manual/src/advanced-topics/diff-hook.md b/doc/manual/src/advanced-topics/diff-hook.md index 6e5834a15..367de6d6d 100644 --- a/doc/manual/src/advanced-topics/diff-hook.md +++ b/doc/manual/src/advanced-topics/diff-hook.md @@ -1,6 +1,6 @@ # Verifying Build Reproducibility -You can use Nix's `diff-hook` setting to compare build results. Note +You can use Lix's `diff-hook` setting to compare build results. Note that this hook is only executed if the results differ; it is not used for determining if the results are the same. @@ -44,7 +44,7 @@ built. Verify a path which already exists in the Nix store by passing `--check` to the build command. -If the build passes and is deterministic, Nix will exit with a status +If the build passes and is deterministic, Lix will exit with a status code of 0: ```console @@ -59,7 +59,7 @@ checking outputs of '/nix/store/z98fasz2jqy9gs0xbvdj939p27jwda38-stable.drv'... /nix/store/yyxlzw3vqaas7wfp04g0b1xg51f2czgq-stable ``` -If the build is not deterministic, Nix will exit with a status code of +If the build is not deterministic, Lix will exit with a status code of 1: ```console @@ -75,7 +75,7 @@ error: derivation '/nix/store/cgl13lbj1w368r5z8gywipl1ifli7dhk-unstable.drv' may not be deterministic: output '/nix/store/krpqk0l9ib0ibi1d2w52z293zw455cap-unstable' differs ``` -In the Nix daemon's log, we will now see: +In the Lix daemon's log, we will now see: ``` For derivation /nix/store/cgl13lbj1w368r5z8gywipl1ifli7dhk-unstable.drv: @@ -85,7 +85,7 @@ For derivation /nix/store/cgl13lbj1w368r5z8gywipl1ifli7dhk-unstable.drv: > 30204 ``` -Using `--check` with `--keep-failed` will cause Nix to keep the second +Using `--check` with `--keep-failed` will cause Lix to keep the second build's output in a special, `.check` path: ```console @@ -98,7 +98,7 @@ from '/nix/store/krpqk0l9ib0ibi1d2w52z293zw455cap-unstable.check' ``` In particular, notice the -`/nix/store/krpqk0l9ib0ibi1d2w52z293zw455cap-unstable.check` output. Nix +`/nix/store/krpqk0l9ib0ibi1d2w52z293zw455cap-unstable.check` output. Lix has copied the build results to that directory where you can examine it. > []{#check-dirs-are-unregistered} **Note** @@ -114,7 +114,7 @@ has copied the build results to that directory where you can examine it. > build was not deterministic and also a check path does not exist. `--check` is only usable if the derivation has been built on the system -already. If the derivation has not been built Nix will fail with the +already. If the derivation has not been built Lix will fail with the error: error: some outputs of '/nix/store/hzi1h60z2qf0nb85iwnpvrai3j2w7rr6-unstable.drv' diff --git a/doc/manual/src/advanced-topics/distributed-builds.md b/doc/manual/src/advanced-topics/distributed-builds.md index 73a113d35..80443b53e 100644 --- a/doc/manual/src/advanced-topics/distributed-builds.md +++ b/doc/manual/src/advanced-topics/distributed-builds.md @@ -1,10 +1,10 @@ # Remote Builds -Nix supports remote builds, where a local Nix installation can forward +Lix supports remote builds, where a local Lix installation can forward Nix builds to other machines. This allows multiple builds to be -performed in parallel and allows Nix to perform multi-platform builds in +performed in parallel and allows Lix to perform multi-platform builds in a semi-transparent way. For instance, if you perform a build for a -`x86_64-darwin` on an `i686-linux` machine, Nix can automatically +`x86_64-darwin` on an `i686-linux` machine, Lix can automatically forward the build to a `x86_64-darwin` machine, if available. To forward a build to a remote machine, it’s required that the remote @@ -38,12 +38,15 @@ contains Nix. > **Warning** > -> If you are building via the Nix daemon, it is the Nix daemon user account (that is, `root`) that should have SSH access to a user (not necessarily `root`) on the remote machine. +> If you are building via the Lix daemon (default on Linux and macOS), it is the Lix daemon user account (that is, `root`) that should have SSH access to a user (not necessarily `root`) on the remote machine. +> +> Furthermore, `root` needs to have the public host keys for the remote system in its `.ssh/known_hosts`. +> To add them to `known_hosts` for root, do `ssh-keyscan USER@HOST | sudo tee -a ~root/.ssh/known_hosts`. > > If you can’t or don’t want to configure `root` to be able to access the remote machine, you can use a private Nix store instead by passing e.g. `--store ~/my-nix` when running a Nix command from the local machine. The list of remote machines can be specified on the command line or in -the Nix configuration file. The former is convenient for testing. For +the Lix configuration file. The former is convenient for testing. For example, the following command allows you to build a derivation for `x86_64-darwin` on a Linux machine: @@ -84,17 +87,17 @@ default, set it to `-`. 3. The SSH identity file to be used to log in to the remote machine. If omitted, SSH will use its regular identities. -4. The maximum number of builds that Nix will execute in parallel on +4. The maximum number of builds that Lix will execute in parallel on the machine. Typically this should be equal to the number of CPU cores. For instance, the machine `itchy` in the example will execute up to 8 builds in parallel. 5. The “speed factor”, indicating the relative speed of the machine. If - there are multiple machines of the right type, Nix will prefer the + there are multiple machines of the right type, Lix will prefer the fastest, taking load into account. 6. A comma-separated list of *supported features*. If a derivation has - the `requiredSystemFeatures` attribute, then Nix will only perform + the `requiredSystemFeatures` attribute, then Lix will only perform the derivation on a machine that has the specified features. For instance, the attribute diff --git a/doc/manual/src/advanced-topics/post-build-hook.md b/doc/manual/src/advanced-topics/post-build-hook.md index a251dec48..508d945ae 100644 --- a/doc/manual/src/advanced-topics/post-build-hook.md +++ b/doc/manual/src/advanced-topics/post-build-hook.md @@ -8,7 +8,7 @@ simple and working example, but it is not suitable for all use cases. The post build hook program runs after each executed build, and blocks the build loop. The build loop exits if the hook program fails. -Concretely, this implementation will make Nix slow or unusable when the +Concretely, this implementation will make Lix slow or unusable when the internet is slow or unreliable. A more advanced implementation might pass the store paths to a @@ -76,7 +76,7 @@ Then make sure the hook program is executable by the `root` user: # chmod +x /etc/nix/upload-to-cache.sh ``` -# Updating Nix Configuration +# Updating Lix Configuration Edit `/etc/nix/nix.conf` to run our hook, by adding the following configuration snippet at the end: @@ -119,7 +119,7 @@ warning: you did not specify '--add-root'; the result might be removed by the ga # Conclusion -We now have a Nix installation configured to automatically sign and +We now have a Lix installation configured to automatically sign and upload every local build to a remote binary cache. Before deploying this to production, be sure to consider the diff --git a/doc/manual/src/architecture/architecture.md b/doc/manual/src/architecture/architecture.md index d9752e193..9fc232ea9 100644 --- a/doc/manual/src/architecture/architecture.md +++ b/doc/manual/src/architecture/architecture.md @@ -1,7 +1,7 @@ # Architecture This chapter describes how Nix works. -It should help users understand why Nix behaves as it does, and it should help developers understand how to modify Nix and how to write similar tools. +It should help users understand why Lix behaves as it does, and it should help developers understand how to modify Lix and how to write similar tools. ## Overview @@ -21,8 +21,8 @@ The following [concept map] shows its main components (rectangles), the objects | passed to | | +----------|-------------------|--------------------------------+ -| Nix | V | -| | +-------------------------+ | +| Nix impl.| V | +| (Lix) | +-------------------------+ | | | | commmand line interface |------. | | | +-------------------------+ | | | | | | | diff --git a/doc/manual/src/architecture/file-system-object.md b/doc/manual/src/architecture/file-system-object.md index 42f047260..8bc02de09 100644 --- a/doc/manual/src/architecture/file-system-object.md +++ b/doc/manual/src/architecture/file-system-object.md @@ -1,6 +1,6 @@ # File System Object -Nix uses a simplified model of the file system, which consists of file system objects. +Nix implementations use a simplified model of the file system, which consists of file system objects. Every file system object is one of the following: - File @@ -15,7 +15,7 @@ Every file system object is one of the following: - [Symbolic link](https://en.m.wikipedia.org/wiki/Symbolic_link) An arbitrary string. - Nix does not assign any semantics to symbolic links. + Nix implementations do not assign any semantics to symbolic links. File system objects and their children form a tree. A bare file or symlink can be a root file system object. diff --git a/doc/manual/src/command-ref/command-ref.md b/doc/manual/src/command-ref/command-ref.md index 6a78075db..c79f8e0ba 100644 --- a/doc/manual/src/command-ref/command-ref.md +++ b/doc/manual/src/command-ref/command-ref.md @@ -1,2 +1,2 @@ This section lists commands and options that you can use when you work -with Nix. +with Lix. diff --git a/doc/manual/src/command-ref/conf-file.md b/doc/manual/src/command-ref/conf-file.md index 980cf8c14..fda6ebde7 100644 --- a/doc/manual/src/command-ref/conf-file.md +++ b/doc/manual/src/command-ref/conf-file.md @@ -1,14 +1,14 @@ # Name -`nix.conf` - Nix configuration file +`nix.conf` - Lix configuration file # Description -Nix supports a variety of configuration settings, which are read from configuration files or taken as command line flags. +Lix supports a variety of configuration settings, which are read from configuration files or taken as command line flags. ## Configuration file -By default Nix reads settings from the following places, in that order: +By default Lix reads settings from the following places, in that order: 1. The system-wide configuration file `sysconfdir/nix/nix.conf` (i.e. `/etc/nix/nix.conf` on most systems), or `$NIX_CONF_DIR/nix.conf` if [`NIX_CONF_DIR`](./env-common.md#env-NIX_CONF_DIR) is set. diff --git a/doc/manual/src/command-ref/env-common.md b/doc/manual/src/command-ref/env-common.md index 3de8ba9eb..ea8420c72 100644 --- a/doc/manual/src/command-ref/env-common.md +++ b/doc/manual/src/command-ref/env-common.md @@ -1,6 +1,6 @@ # Common Environment Variables -Most Nix commands interpret the following environment variables: +Most commands in Lix interpret the following environment variables: - [`IN_NIX_SHELL`](#env-IN_NIX_SHELL)\ Indicator that tells if the current environment was set up by @@ -13,7 +13,7 @@ Most Nix commands interpret the following environment variables: e.g. `/home/eelco/Dev:/etc/nixos`. It can be extended using the [`-I` option](@docroot@/command-ref/opt-common.md#opt-I). - If `NIX_PATH` is not set at all, Nix will fall back to the following list in [impure](@docroot@/command-ref/conf-file.md#conf-pure-eval) and [unrestricted](@docroot@/command-ref/conf-file.md#conf-restrict-eval) evaluation mode: + If `NIX_PATH` is not set at all, Lix will fall back to the following list in [impure](@docroot@/command-ref/conf-file.md#conf-pure-eval) and [unrestricted](@docroot@/command-ref/conf-file.md#conf-restrict-eval) evaluation mode: 1. `$HOME/.nix-defexpr/channels` 2. `nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixpkgs` @@ -50,28 +50,28 @@ Most Nix commands interpret the following environment variables: Overrides the location of the Nix store (default `prefix/store`). - [`NIX_DATA_DIR`](#env-NIX_DATA_DIR)\ - Overrides the location of the Nix static data directory (default + Overrides the location of the Lix static data directory (default `prefix/share`). - [`NIX_LOG_DIR`](#env-NIX_LOG_DIR)\ - Overrides the location of the Nix log directory (default + Overrides the location of the Lix log directory (default `prefix/var/log/nix`). - [`NIX_STATE_DIR`](#env-NIX_STATE_DIR)\ - Overrides the location of the Nix state directory (default + Overrides the location of the Lix state directory (default `prefix/var/nix`). - [`NIX_CONF_DIR`](#env-NIX_CONF_DIR)\ - Overrides the location of the system Nix configuration directory + Overrides the location of the system Lix configuration directory (default `prefix/etc/nix`). - [`NIX_CONFIG`](#env-NIX_CONFIG)\ - Applies settings from Nix configuration from the environment. - The content is treated as if it was read from a Nix configuration file. + Applies settings from Lix configuration from the environment. + The content is treated as if it was read from a Lix configuration file. Settings are separated by the newline character. - [`NIX_USER_CONF_FILES`](#env-NIX_USER_CONF_FILES)\ - Overrides the location of the Nix user configuration files to load from. + Overrides the location of the Lix user configuration files to load from. The default are the locations according to the [XDG Base Directory Specification]. See the [XDG Base Directories](#xdg-base-directories) sub-section for details. @@ -84,19 +84,19 @@ Most Nix commands interpret the following environment variables: substantial amounts of disk space. The default is `/tmp`. - [`NIX_REMOTE`](#env-NIX_REMOTE)\ - This variable should be set to `daemon` if you want to use the Nix + This variable should be set to `daemon` if you want to use the Lix daemon to execute Nix operations. This is necessary in [multi-user - Nix installations](@docroot@/installation/multi-user.md). If the Nix + Nix installations](@docroot@/installation/multi-user.md). If the Lix daemon's Unix socket is at some non-standard path, this variable should be set to `unix://path/to/socket`. Otherwise, it should be left unset. - [`NIX_SHOW_STATS`](#env-NIX_SHOW_STATS)\ - If set to `1`, Nix will print some evaluation statistics, such as + If set to `1`, Lix will print some evaluation statistics, such as the number of values allocated. - [`NIX_COUNT_CALLS`](#env-NIX_COUNT_CALLS)\ - If set to `1`, Nix will print how often functions were called during + If set to `1`, Lix will print how often functions were called during Nix expression evaluation. This is useful for profiling your Nix expressions. @@ -108,9 +108,9 @@ Most Nix commands interpret the following environment variables: ## XDG Base Directories -Nix follows the [XDG Base Directory Specification]. +Lix follows the [XDG Base Directory Specification]. -For backwards compatibility, Nix commands will follow the standard only when [`use-xdg-base-directories`] is enabled. +For backwards compatibility, commands in Lix will follow the standard only when [`use-xdg-base-directories`] is enabled. [New Nix commands](@docroot@/command-ref/new-cli/nix.md) (experimental) conform to the standard by default. The following environment variables are used to determine locations of various state and configuration files: diff --git a/doc/manual/src/command-ref/files.md b/doc/manual/src/command-ref/files.md index df5646c05..e2d08923b 100644 --- a/doc/manual/src/command-ref/files.md +++ b/doc/manual/src/command-ref/files.md @@ -1,4 +1,4 @@ # Files This section lists configuration files that you can use when you work -with Nix. +with Lix. diff --git a/doc/manual/src/command-ref/files/profiles.md b/doc/manual/src/command-ref/files/profiles.md index b5c737880..a6b679e34 100644 --- a/doc/manual/src/command-ref/files/profiles.md +++ b/doc/manual/src/command-ref/files/profiles.md @@ -21,7 +21,7 @@ lrwxrwxrwx 1 alice users 51 Oct 29 13:20 /home/alice/.local/state/nix/profiles/p lrwxrwxrwx 1 alice users 51 Nov 25 14:35 /home/alice/.local/state/nix/profiles/profile-7-link -> /nix/store/mp0x6xnsg0b8qhswy6riqvimai4gm677-profile ``` -Each of these symlinks is a root for the Nix garbage collector. +Each of these symlinks is a root for the Lix garbage collector. The contents of the store path corresponding to each version of the profile is a tree of symlinks to the files of the installed packages, diff --git a/doc/manual/src/command-ref/main-commands.md b/doc/manual/src/command-ref/main-commands.md index e4f1f1d0e..0c1ca4fa1 100644 --- a/doc/manual/src/command-ref/main-commands.md +++ b/doc/manual/src/command-ref/main-commands.md @@ -1,4 +1,4 @@ # Main Commands This section lists commands and options that you can use when you work -with Nix. +with Lix. diff --git a/doc/manual/src/command-ref/nix-collect-garbage.md b/doc/manual/src/command-ref/nix-collect-garbage.md index 3cab79f0e..f9a3f1940 100644 --- a/doc/manual/src/command-ref/nix-collect-garbage.md +++ b/doc/manual/src/command-ref/nix-collect-garbage.md @@ -37,7 +37,9 @@ Instead, it looks in a few locations, and acts on all profiles it finds there: > Not stable; subject to change > > Do not rely on this functionality; it just exists for migration purposes and is may change in the future. - > These deprecated paths remain a private implementation detail of Nix. + > These deprecated paths remain a private implementation detail of Lix. + + `$NIX_STATE_DIR/profiles` and `$NIX_STATE_DIR/profiles/per-user`. diff --git a/doc/manual/src/command-ref/nix-daemon.md b/doc/manual/src/command-ref/nix-daemon.md index 04b483be3..268bbc558 100644 --- a/doc/manual/src/command-ref/nix-daemon.md +++ b/doc/manual/src/command-ref/nix-daemon.md @@ -1,6 +1,6 @@ # Name -`nix-daemon` - Nix multi-user support daemon +`nix-daemon` - Lix multi-user support daemon # Synopsis @@ -8,6 +8,6 @@ # Description -The Nix daemon is necessary in multi-user Nix installations. It runs +The Lix daemon is necessary in multi-user Lix installations. It runs build tasks and other operations on the Nix store on behalf of unprivileged users. diff --git a/doc/manual/src/command-ref/opt-common.md b/doc/manual/src/command-ref/opt-common.md index 67772cac8..cd289b7ea 100644 --- a/doc/manual/src/command-ref/opt-common.md +++ b/doc/manual/src/command-ref/opt-common.md @@ -1,6 +1,6 @@ # Common Options -Most Nix commands accept the following command-line options: +Most commands in Lix accept the following command-line options: - [`--help`](#opt-help) @@ -8,12 +8,12 @@ Most Nix commands accept the following command-line options: - [`--version`](#opt-version) - Prints out the Nix version number on standard output and exits. + Prints out the Lix version number on standard output and exits. - [`--verbose`](#opt-verbose) / `-v` Increases the level of verbosity of diagnostic messages printed on standard error. - For each Nix operation, the information printed on standard output is well-defined; + For each Lix operation, the information printed on standard output is well-defined; any diagnostic information is printed on standard error, never on standard output. This option may be specified repeatedly. @@ -21,11 +21,11 @@ Most Nix commands accept the following command-line options: - `0` “Errors only” - Only print messages explaining why the Nix invocation failed. + Only print messages explaining why the Lix invocation failed. - `1` “Informational” - Print *useful* messages about what Nix is doing. + Print *useful* messages about what Lix is doing. This is the default. - `2` “Talkative” @@ -80,13 +80,13 @@ Most Nix commands accept the following command-line options: - [`--no-build-output`](#opt-no-build-output) / `-Q` - By default, output written by builders to standard output and standard error is echoed to the Nix command's standard error. + By default, output written by builders to standard output and standard error is echoed to the Lix command's standard error. This option suppresses this behaviour. Note that the builder's standard output and error are always written to a log file in `prefix/nix/var/log/nix`. - [`--max-jobs`](#opt-max-jobs) / `-j` *number* - Sets the maximum number of build jobs that Nix will perform in parallel to the specified number. + Sets the maximum number of build jobs that Lix will perform in parallel to the specified number. Specify `auto` to use the number of CPUs in the system. The default is specified by the `max-jobs` configuration setting, which itself defaults to `1`. A higher value is useful on SMP systems or to exploit I/O latency. @@ -116,8 +116,8 @@ Most Nix commands accept the following command-line options: - [`--keep-going`](#opt-keep-going) / `-k` Keep going in case of failed builds, to the greatest extent possible. - That is, if building an input of some derivation fails, Nix will still build the other inputs, but not the derivation itself. - Without this option, Nix stops if any build fails (except for builds of substitutes), possibly killing builds in progress (in case of parallel or distributed builds). + That is, if building an input of some derivation fails, Lix will still build the other inputs, but not the derivation itself. + Without this option, Lix stops if any build fails (except for builds of substitutes), possibly killing builds in progress (in case of parallel or distributed builds). - [`--keep-failed`](#opt-keep-failed) / `-K` @@ -126,18 +126,24 @@ Most Nix commands accept the following command-line options: - [`--fallback`](#opt-fallback) - Whenever Nix attempts to build a derivation for which substitutes are known for each output path, but realising the output paths through the substitutes fails, fall back on building the derivation. + Whenever Lix attempts to build a derivation for which substitutes are known for each output path, but realising the output paths through the substitutes fails, fall back on building the derivation. The most common scenario in which this is useful is when we have registered substitutes in order to perform binary distribution from, say, a network repository. If the repository is down, the realisation of the derivation will fail. - When this option is specified, Nix will build the derivation instead. + When this option is specified, Lix will build the derivation instead. Thus, installation from binaries falls back on installation from source. This option is not the default since it is generally not desirable for a transient failure in obtaining the substitutes to lead to a full build from source (with the related consumption of resources). - [`--readonly-mode`](#opt-readonly-mode) - When this option is used, no attempt is made to open the Nix database. - Most Nix operations do need database access, so those operations will fail. + When this option is used, no attempt is made to open the Lix database. + Most Lix operations do need database access, so those operations will fail. + +
+ + FIXME(Lix): sometimes you want `--store dummy` instead, because this option sometimes doesn't work. Document why this is. + +
- [`--arg`](#opt-arg) *name* *value* @@ -195,8 +201,8 @@ Most Nix commands accept the following command-line options: - [`--option`](#opt-option) *name* *value* - Set the Nix configuration option *name* to *value*. - This overrides settings in the Nix configuration file (see nix.conf5). + Set the Lix configuration option *name* to *value*. + This overrides settings in the Lix configuration file (see nix.conf(5)). - [`--repair`](#opt-repair) diff --git a/doc/manual/src/command-ref/utilities.md b/doc/manual/src/command-ref/utilities.md index 5ba8a02a3..3ee09ea6c 100644 --- a/doc/manual/src/command-ref/utilities.md +++ b/doc/manual/src/command-ref/utilities.md @@ -1,3 +1,3 @@ # Utilities -This section lists utilities that you can use when you work with Nix. +This section lists utilities that you can use when you work with Lix. diff --git a/doc/manual/src/contributing/cli-guideline.md b/doc/manual/src/contributing/cli-guideline.md index e53d2d178..f170e5e8f 100644 --- a/doc/manual/src/contributing/cli-guideline.md +++ b/doc/manual/src/contributing/cli-guideline.md @@ -11,12 +11,12 @@ follow to ensure a consistent and approachable user experience. `nix` command provides a single entry to a number of sub-commands that help **developers and system administrators** in the life-cycle of a software project. We particularly need to pay special attention to help and assist new -users of Nix. +users of Lix. # Naming the `COMMANDS` Words matter. Naming is an important part of the usability. Users will be -interacting with Nix on a regular basis so we should **name things for ease of +interacting with Lix on a regular basis so we should **name things for ease of understanding**. We recommend following the [Principle of Least @@ -184,7 +184,7 @@ Initializing Nix project at `/path/to/here`. ### Next steps It can be invaluable to newcomers to show what a possible next steps and what -is the usual development workflow with Nix. For example: +is the usual development workflow with Lix. For example: ```shell @@ -317,7 +317,7 @@ compromise between being terse and being verbose, between showing help to beginners and annoying advance users. For this it is important that we know what are the priorities. -Nix command line should be first and foremost written with beginners in mind. +Lix command line should be first and foremost written with beginners in mind. But users won't stay beginners for long and what was once useful might quickly become annoying. There is no golden rule that we can give in this guideline that would make it easier how to draw a line and find best compromise. @@ -331,7 +331,7 @@ certain `OPTIONS`, etc…) ## Follow best practices -Needless to say we Nix must be a good citizen and follow best practices in +Needless to say we Lix must be a good citizen and follow best practices in command line. In short: **STDOUT is for output, STDERR is for (human) messaging.** @@ -462,7 +462,7 @@ However, simply converting everything to records is not enough, because the orde { "outputs": { "bin": {}, "out": {} } } ``` -The first item is the default output. Deriving this information from the outputs ordering is not great, but this is how Nix currently happens to work. +The first item is the default output. Deriving this information from the outputs ordering is not great, but this is how Lix currently happens to work. While it is possible for a JSON parser to preserve the order of fields, we can not rely on this capability to be present in all JSON libraries. This representation is extensible and preserves the ordering: diff --git a/doc/manual/src/contributing/experimental-features.md b/doc/manual/src/contributing/experimental-features.md index b2dddeb8e..c27ba5da0 100644 --- a/doc/manual/src/contributing/experimental-features.md +++ b/doc/manual/src/contributing/experimental-features.md @@ -1,4 +1,11 @@ -This section describes the notion of *experimental features*, and how it fits into the big picture of the development of Nix. +This section describes the notion of *experimental features*, and how it fits into the big picture of the development of Lix. + +
+ +This section has not been updated for Lix *development practices* and should not be considered authoritative with respect to those; see the Lix wiki for more up-to-date information as it gets written . The technical content on this page is correct. + +
+ # What are experimental features? @@ -12,7 +19,7 @@ This was a source of confusion and controversy. # When should a new feature be marked experimental? -A change in the Nix codebase should be guarded by an experimental feature flag if it is considered likely to be reverted or adapted in a backwards-incompatible manner after gathering more experience with it in practice. +A change in the Lix codebase should be guarded by an experimental feature flag if it is considered likely to be reverted or adapted in a backwards-incompatible manner after gathering more experience with it in practice. Examples: diff --git a/doc/manual/src/contributing/hacking.md b/doc/manual/src/contributing/hacking.md index a7d707438..a8591e7ca 100644 --- a/doc/manual/src/contributing/hacking.md +++ b/doc/manual/src/contributing/hacking.md @@ -1,6 +1,6 @@ # Hacking -This section provides some notes on how to hack on Nix. To get the latest version of Lix from Forgejo: +This section provides some notes on how to hack on Lix. To get the latest version of Lix from Forgejo: ```console $ git clone https://git.lix.systems/lix-project/lix @@ -120,13 +120,13 @@ $ meson introspect ## Building Lix outside of development shells -To build a release version of Nix for the current operating system and CPU architecture: +To build a release version of Lix for the current operating system and CPU architecture: ```console $ nix build ``` -You can also build Nix for one of the [supported platforms](#platforms). +You can also build Lix for one of the [supported platforms](#platforms). > **Note** > @@ -135,7 +135,7 @@ You can also build Nix for one of the [supported platforms](#platforms). ## Platforms -Nix can be built for various platforms, as specified in [`flake.nix`]: +Lix can be built for various platforms, as specified in [`flake.nix`]: [`flake.nix`]: https://github.com/nixos/nix/blob/master/flake.nix @@ -147,7 +147,7 @@ Nix can be built for various platforms, as specified in [`flake.nix`]: - `armv6l-linux` - `armv7l-linux` -In order to build Nix for a different platform than the one you're currently +In order to build Lix for a different platform than the one you're currently on, you need a way for your current Nix installation to build code for that platform. Common solutions include [remote builders] and [binary format emulation] (only supported on NixOS). @@ -196,7 +196,7 @@ Lix uses a string with the following format to identify the *system type* or *pl -[-] ``` -It is set when Nix is compiled for the given system, and determined by [Meson's `host_machine.cpu_family()` and `host_machine.system()` values](https://mesonbuild.com/Reference-manual_builtin_host_machine.html). +It is set when Lix is compiled for the given system, and determined by [Meson's `host_machine.cpu_family()` and `host_machine.system()` values](https://mesonbuild.com/Reference-manual_builtin_host_machine.html). For historic reasons and backward-compatibility, some CPU and OS identifiers are translated from the GNU Autotools naming convention in [`meson.build`](https://git.lix.systems/lix-project/lix/blob/main/meson.build) as follows: @@ -212,7 +212,7 @@ For historic reasons and backward-compatibility, some CPU and OS identifiers are ## Compilation environments -Nix can be compiled using multiple environments: +Lix can be compiled using multiple environments: - `stdenv`: default; - `gccStdenv`: force the use of `gcc` compiler; @@ -325,8 +325,13 @@ Here's what a complete entry looks like. The file name is not incorporated in th ``` --- synopsis: Basically a title -issues: 1234 +# 1234 or gh#1234 will refer to CppNix GitHub, fj#1234 will refer to a Lix forgejo issue. +issues: [1234, fj#1234] +# Use this *only* if there is a CppNix pull request associated with this change prs: 1238 +# List of Lix Gerrit changelist numbers; if there is an associated Lix GitHub +# PR, just put in the Gerrit CL number. +cls: [123] --- Here's one or more paragraphs that describe the change. diff --git a/doc/manual/src/contributing/testing.md b/doc/manual/src/contributing/testing.md index 883850561..0a844c662 100644 --- a/doc/manual/src/contributing/testing.md +++ b/doc/manual/src/contributing/testing.md @@ -32,7 +32,9 @@ The unit tests are defined using the [googletest] and [rapidcheck] frameworks. > … > ``` -The unit tests for each Nix library (`libnixexpr`, `libnixstore`, etc..) live inside a directory `src/${library_shortname}/tests` within the directory for the library (`src/${library_shortname}`). + + +The unit tests for each Lix library (`libnixexpr`, `libnixstore`, etc..) live inside a directory `src/${library_shortname}/tests` within the directory for the library (`src/${library_shortname}`). The data is in `unit-test-data`, with one subdir per library, with the same name as where the code goes. For example, `libnixstore` code is in `src/libstore`, and its test data is in `unit-test-data/libstore`. @@ -45,8 +47,13 @@ The path to the `unit-test-data` directory is passed to the unit test executable ### Running tests -You can run the whole testsuite with `make check`, or the tests for a specific component with `make libfoo-tests_RUN`. -Finer-grained filtering is also possible using the [--gtest_filter](https://google.github.io/googletest/advanced.html#running-a-subset-of-the-tests) command-line option, or the `GTEST_FILTER` environment variable. +You can run the whole testsuite with `just test` (see justfile for exact invocation of meson), and if you want to run just one test suite, use `just test --suite installcheck functional-init` where `installcheck` is the name of the test suite in this case and `functional-init` is the name of the test. + +To get a list of tests, use `meson test -C build --list`. + +For `installcheck` specifically, first run `just install` before running the test suite (this is due to meson limitations that don't let us put a dependency on installing before doing the test). + +Finer-grained filtering within a test suite is also possible using the [--gtest_filter](https://google.github.io/googletest/advanced.html#running-a-subset-of-the-tests) command-line option to a test suite executable, or the `GTEST_FILTER` environment variable. ### Unit test support libraries @@ -85,6 +92,11 @@ Each test is a bash script. ### Running the whole test suite +
+FIXME(meson): this section is wrong for meson and commented out accordingly. See "Running Tests" above, and ask the Lix team if you need further clarification. +
+ + + ### Debugging failing functional tests When a functional test fails, it usually does so somewhere in the middle of the script. @@ -170,6 +184,10 @@ edit it like so: bar ``` +
+FIXME(meson): the command here may be incorrect for meson. +
+ Then, running the test with `./mk/debug-test.sh` will drop you into GDB once the script reaches that point: ```shell-session @@ -186,11 +204,15 @@ For example, enter `run` to start the Nix invocation. ### Characterization testing -Occasionally, Nix utilizes a technique called [Characterization Testing](https://en.wikipedia.org/wiki/Characterization_test) as part of the functional tests. -This technique is to include the exact output/behavior of a former version of Nix in a test in order to check that Nix continues to produce the same behavior going forward. +Occasionally, Lix utilizes a technique called [Characterization Testing](https://en.wikipedia.org/wiki/Characterization_test) as part of the functional tests. +This technique is to include the exact output/behavior of a former version of Nix in a test in order to check that Lix continues to produce the same behavior going forward. For example, this technique is used for the language tests, to check both the printed final value if evaluation was successful, and any errors and warnings encountered. +
+FIXME(meson): this is incorrect for meson. `_NIX_TEST_ACCEPT=1` is still valid but the test invocation needs to change. +
+ It is frequently useful to regenerate the expected output. To do that, rerun the failed test(s) with `_NIX_TEST_ACCEPT=1`. For example: @@ -214,14 +236,21 @@ To ensure that characterization testing doesn't make it harder to intentionally ## Integration tests The integration tests are defined in the Nix flake under the `hydraJobs.tests` attribute. -These tests include everything that needs to interact with external services or run Nix in a non-trivial distributed setup. +These tests include everything that needs to interact with external services or run Lix in a non-trivial distributed setup. Because these tests are expensive and require more than what the standard github-actions setup provides, they only run on the master branch (on ). You can run them manually with `nix build .#hydraJobs.tests.{testName}` or `nix-build -A hydraJobs.tests.{testName}` +
+ +Installer tests section is outdated and commented out, see https://git.lix.systems/lix-project/lix/issues/33 + +
+ + diff --git a/doc/manual/src/glossary.md b/doc/manual/src/glossary.md index b7c340d36..caf740724 100644 --- a/doc/manual/src/glossary.md +++ b/doc/manual/src/glossary.md @@ -57,12 +57,12 @@ The location in the file system where store objects live. Typically `/nix/store`. - From the perspective of the location where Nix is + From the perspective of the location where Lix is invoked, the Nix store can be referred to as a "_local_" or a "_remote_" one: + A [local store]{#gloss-local-store} exists on the filesystem of - the machine where Nix is invoked. You can use other + the machine where Lix is invoked. You can use other local stores by passing the `--store` flag to the `nix` command. Local stores can be used for building derivations. @@ -133,7 +133,7 @@ - [substituter]{#gloss-substituter} - An additional [store]{#gloss-store} from which Nix can obtain store objects instead of building them. + An additional [store]{#gloss-store} from which Lix can obtain store objects instead of building them. Often the substituter is a [binary cache](#gloss-binary-cache), but any store can serve as substituter. See the [`substituters` configuration option](./command-ref/conf-file.md#conf-substituters) for details. @@ -159,7 +159,7 @@ - [Nix expression]{#gloss-nix-expression} A high-level description of software packages and compositions - thereof. Deploying software using Nix entails writing Nix + thereof. Deploying software using Lix entails writing Nix expressions for your packages. Nix expressions are translated to derivations that are stored in the Nix store. These derivations can then be built. diff --git a/doc/manual/src/installation/building-source.md b/doc/manual/src/installation/building-source.md index d57f42c5a..83c645ae7 100644 --- a/doc/manual/src/installation/building-source.md +++ b/doc/manual/src/installation/building-source.md @@ -1,6 +1,13 @@ -# Building Nix from Source +# Building Lix from Source -After cloning Nix's Git repository, issue the following commands: +
+ +FIXME(meson): This section is outdated for meson and has been commented out. See https://git.lix.systems/lix-project/lix/issues/258 + +
+ + diff --git a/doc/manual/src/installation/env-variables.md b/doc/manual/src/installation/env-variables.md index db98f52ff..fb6f02e41 100644 --- a/doc/manual/src/installation/env-variables.md +++ b/doc/manual/src/installation/env-variables.md @@ -1,6 +1,6 @@ # Environment Variables -To use Nix, some environment variables should be set. In particular, +To use Lix, some environment variables should be set. In particular, `PATH` should contain the directories `prefix/bin` and `~/.nix-profile/bin`. The first directory contains the Nix tools themselves, while `~/.nix-profile` is a symbolic link to the current @@ -16,20 +16,30 @@ source prefix/etc/profile.d/nix.sh # `NIX_SSL_CERT_FILE` +
+ +FIXME(Lix): This section is undoubtedly wrong due to the Lix installer being replaced. The definitely-wrong install section has been commented out. + +
+ If you need to specify a custom certificate bundle to account for an HTTPS-intercepting man in the middle proxy, you must specify the path to the certificate bundle in the environment variable `NIX_SSL_CERT_FILE`. -If you don't specify a `NIX_SSL_CERT_FILE` manually, Nix will install +If you don't specify a `NIX_SSL_CERT_FILE` manually, Lix will install and use its own certificate bundle. -Set the environment variable and install Nix + + In the shell profile and rc files (for example, `/etc/bashrc`, `/etc/zshrc`), add the following line: @@ -39,10 +49,10 @@ export NIX_SSL_CERT_FILE=/etc/ssl/my-certificate-bundle.crt > **Note** > -> You must not add the export and then do the install, as the Nix +> You must not add the export and then do the install, as the Lix > installer will detect the presence of Nix configuration, and abort. -If you use the Nix daemon, you should also add the following to +If you use the Lix daemon, you should also add the following to `/etc/nix/nix.conf`: ``` @@ -51,11 +61,11 @@ ssl-cert-file = /etc/ssl/my-certificate-bundle.crt ## Proxy Environment Variables -The Nix installer has special handling for these proxy-related +The Lix installer has special handling for these proxy-related environment variables: `http_proxy`, `https_proxy`, `ftp_proxy`, `no_proxy`, `HTTP_PROXY`, `HTTPS_PROXY`, `FTP_PROXY`, `NO_PROXY`. -If any of these variables are set when running the Nix installer, then +If any of these variables are set when running the Lix installer, then the installer will create an override file at `/etc/systemd/system/nix-daemon.service.d/override.conf` so `nix-daemon` will use them. diff --git a/doc/manual/src/installation/installation.md b/doc/manual/src/installation/installation.md index dafdeb667..d05445eab 100644 --- a/doc/manual/src/installation/installation.md +++ b/doc/manual/src/installation/installation.md @@ -1,38 +1,15 @@ # Installation -This section describes how to install and configure Nix for first-time use. +See https://lix.systems/install/ for more details. -The current recommended option on Linux and MacOS is [multi-user](#multi-user). + diff --git a/doc/manual/src/installation/installing-binary.md b/doc/manual/src/installation/installing-binary.md index ffabb250a..c2edc0dc2 100644 --- a/doc/manual/src/installation/installing-binary.md +++ b/doc/manual/src/installation/installing-binary.md @@ -1,5 +1,11 @@ # Installing a Binary Distribution +See https://lix.systems/install/ for more details. + + + We believe we have ironed out how to cleanly support the read-only root on modern macOS. New installs will do this automatically. @@ -101,7 +107,7 @@ this to run the installer, but it may help if you run into trouble: - `nobrowse`: prevent the Nix Store volume from showing up on your desktop; also keeps Spotlight from spending resources to index this volume - + ~~> - if you have FileVault enabled - generate an encryption password - put it in your system Keychain @@ -156,3 +162,5 @@ $ ./install If you need to edit the multi-user installation script to use different group ID or a different user ID range, modify the variables set in the file named `install-multi-user`. + +--> diff --git a/doc/manual/src/installation/installing-docker.md b/doc/manual/src/installation/installing-docker.md index 9d6d8f2d9..2d7701024 100644 --- a/doc/manual/src/installation/installing-docker.md +++ b/doc/manual/src/installation/installing-docker.md @@ -1,6 +1,10 @@ -# Using Nix within Docker +# Using Lix within Docker -To run the latest stable release of Nix with Docker run the following command: +Currently the Lix project doesn't ship docker images. However, we have the infrastructure to do it, it's just not yet been done. See https://git.lix.systems/lix-project/lix/issues/252 + + diff --git a/doc/manual/src/installation/installing-source.md b/doc/manual/src/installation/installing-source.md index 09b4e4887..06d070610 100644 --- a/doc/manual/src/installation/installing-source.md +++ b/doc/manual/src/installation/installing-source.md @@ -1,4 +1,4 @@ -# Installing Nix from Source +# Installing Lix from Source -If no binary package is available or if you want to hack on Nix, you -can build Nix from its Git repository. +If no binary package is available or if you want to hack on Lix, you +can build Lix from its Git repository. diff --git a/doc/manual/src/installation/nix-security.md b/doc/manual/src/installation/nix-security.md index 1e9036b68..d5ae7535d 100644 --- a/doc/manual/src/installation/nix-security.md +++ b/doc/manual/src/installation/nix-security.md @@ -1,15 +1,15 @@ # Security -Nix has two basic security models. First, it can be used in “single-user +Lix has two basic security models. First, it can be used in “single-user mode”, which is similar to what most other package management tools do: there is a single user (typically root) who performs all package management operations. All other users can then use the installed packages, but they cannot perform package management operations themselves. -Alternatively, you can configure Nix in “multi-user mode”. In this +Alternatively, you can configure Lix in “multi-user mode”. In this model, all users can perform package management operations — for instance, every user can install software without requiring root -privileges. Nix ensures that this is secure. For instance, it’s not +privileges. Lix ensures that this is secure. For instance, it’s not possible for one user to overwrite a package used by another user with a Trojan horse. diff --git a/doc/manual/src/installation/prerequisites-source.md b/doc/manual/src/installation/prerequisites-source.md index d4babf1ea..8584f295a 100644 --- a/doc/manual/src/installation/prerequisites-source.md +++ b/doc/manual/src/installation/prerequisites-source.md @@ -1,5 +1,15 @@ # Prerequisites +
+ +FIXME(meson): This section is very wrong with respect to meson and we have commented it out. +We are sorry. +The most current alternative to this section is to read `package.nix` and see which things are being depended on. + +
+ + diff --git a/doc/manual/src/installation/supported-platforms.md b/doc/manual/src/installation/supported-platforms.md index 8ca3ce8d4..3b07ce48a 100644 --- a/doc/manual/src/installation/supported-platforms.md +++ b/doc/manual/src/installation/supported-platforms.md @@ -1,7 +1,11 @@ # Supported Platforms -Nix is currently supported on the following platforms: +Lix is currently supported on the following platforms: - - Linux (i686, x86\_64, aarch64). + - Linux (i686 (tier 2), x86\_64 (tier 1), aarch64 (tier 1)). - - macOS (x86\_64, aarch64). + - macOS (x86\_64 (tier 2 [(issue to make tier 1)](https://git.lix.systems/lix-project/lix/issues/269)), aarch64 (tier 1)). + + +Tier 2 platforms aren't checked in CI, so may break without notice; such breakage *is* however considered a bug. +We would like for them to work but they are a secondary priority. diff --git a/doc/manual/src/installation/uninstall.md b/doc/manual/src/installation/uninstall.md index 06dab6cdb..5fb8b56e4 100644 --- a/doc/manual/src/installation/uninstall.md +++ b/doc/manual/src/installation/uninstall.md @@ -1,8 +1,18 @@ -# Uninstalling Nix +# Uninstalling Lix + +
+ +FIXME(Lix): This section is outdated and commented out due to the Lix installer being replaced such that it has an actual uninstaller. + +See https://git.lix.systems/lix-project/lix-installer#uninstalling for up-to-date uninstallation instructions using the installer. + +
+ + diff --git a/doc/manual/src/installation/upgrading.md b/doc/manual/src/installation/upgrading.md index 6d09f54d8..2cdbf9683 100644 --- a/doc/manual/src/installation/upgrading.md +++ b/doc/manual/src/installation/upgrading.md @@ -1,14 +1,23 @@ -# Upgrading Nix +# Upgrading Lix -Multi-user Nix users on macOS can upgrade Nix by running: `sudo -i sh -c -'nix-channel --update && -nix-env --install --attr nixpkgs.nix && -launchctl remove org.nixos.nix-daemon && -launchctl load /Library/LaunchDaemons/org.nixos.nix-daemon.plist'` +
-Single-user installations of Nix should run this: `nix-channel --update; -nix-env --install --attr nixpkgs.nix nixpkgs.cacert` +FIXME(Lix): does Lix forward to the installer for `nix upgrade-nix`? Should it, if present? Lix *should* restart the daemon for you [but currently doesn't (issue)](https://git.lix.systems/lix-project/lix/issues/267). -Multi-user Nix users on Linux should run this with sudo: `nix-channel ---update; nix-env --install --attr nixpkgs.nix nixpkgs.cacert; systemctl -daemon-reload; systemctl restart nix-daemon` +
+ +**For instructions to switch to Lix**, see . + +Lix may be upgraded by running `nix upgrade-nix` and then restarting the Nix daemon. + +## Restarting daemon on Linux + +`sudo systemctl daemon-reload && sudo systemctl restart nix-daemon` + +## Restarting daemon on macOS + +
+ +FIXME(Lix): Write instructions that, according to the [beta installation guide](https://wiki.lix.systems/link/1) do not sometimes crash macOS (?!) + +
diff --git a/doc/manual/src/introduction.md b/doc/manual/src/introduction.md index 76489bc1b..9fbc429f8 100644 --- a/doc/manual/src/introduction.md +++ b/doc/manual/src/introduction.md @@ -1,12 +1,8 @@ # Introduction -Nix is a _purely functional package manager_. This means that it -treats packages like values in purely functional programming languages -such as Haskell — they are built by functions that don’t have -side-effects, and they never change after they have been built. Nix -stores packages in the _Nix store_, usually the directory -`/nix/store`, where each package has its own unique subdirectory such -as +Lix is an implementation of Nix, a powerful, _purely functional_ package management system. +This means that it treats packages like values in purely functional programming languages such as Haskell — they are built by functions that don’t have side-effects, and they never change after they have been built. +Lix stores packages in the _Nix store_, usually the directory `/nix/store`, where each package has its own unique subdirectory such as /nix/store/b6gvzjyb2pg0kjfwrjmg1vfhh54ad73z-firefox-33.1/ @@ -31,7 +27,7 @@ used by other packages. ## Complete dependencies -Nix helps you make sure that package dependency specifications are +Lix helps you make sure that package dependency specifications are complete. In general, when you’re making a package for a package management system like RPM, you have to specify for each package what its dependencies are, but there are no guarantees that this @@ -40,7 +36,7 @@ package will build and work correctly on _your_ machine if you have the dependency installed, but not on the end user's machine if it's not there. -Since Nix on the other hand doesn’t install packages in “global” +Since Lix on the other hand doesn’t install packages in “global” locations like `/usr/bin` but in package-specific directories, the risk of incomplete dependencies is greatly reduced. This is because tools such as compilers don’t search in per-packages directories such @@ -54,13 +50,11 @@ This sounds risky, but it works extremely well. ## Multi-user support -Nix has multi-user support. This means that non-privileged users can -securely install software. Each user can have a different _profile_, -a set of packages in the Nix store that appear in the user’s `PATH`. -If a user installs a package that another user has already installed -previously, the package won’t be built or downloaded a second time. -At the same time, it is not possible for one user to inject a Trojan -horse into a package that might be used by another user. +Lix has multi-user support. +This means that non-privileged users can securely install software, and it is considered a bug if users can trample on each other. +Each user can have a different _profile_, a set of packages in the Nix store that appear in the user’s `PATH`. +If a user installs a package that another user has already installed previously, the package won’t be built or downloaded a second time. +At the same time, it is not possible for one user to inject a Trojan horse into a package that might be used by another user. ## Atomic upgrades and rollbacks @@ -106,7 +100,7 @@ Packages are built from _Nix expressions_, which is a simple functional language. A Nix expression describes everything that goes into a package build task (a “derivation”): other packages, sources, the build script, environment variables for the build script, etc. -Nix tries very hard to ensure that Nix expressions are +Lix tries very hard to ensure that Nix expressions are _deterministic_: building a Nix expression twice should yield the same result. @@ -130,22 +124,21 @@ also all its dependencies (all the way up to the C library and the compiler) would have to be built, at least if they are not already in the Nix store. This is a _source deployment model_. For most users, building from source is not very pleasant as it takes far too long. -However, Nix can automatically skip building from source and instead +However, Lix can automatically skip building from source and instead use a _binary cache_, a web server that provides pre-built binaries. For instance, when asked to build -`/nix/store/b6gvzjyb2pg0…-firefox-33.1` from source, Nix would first +`/nix/store/b6gvzjyb2pg0…-firefox-33.1` from source, Lix would first check if the file `https://cache.nixos.org/b6gvzjyb2pg0….narinfo` exists, and if so, fetch the pre-built binary referenced from there; otherwise, it would fall back to building from source. ## Nix Packages collection -We provide a large set of Nix expressions containing hundreds of -existing Unix packages, the _Nix Packages collection_ (Nixpkgs). +We provide a large set of Nix expressions containing tens of thousands of existing Unix packages, the _Nix Packages collection_ (Nixpkgs). ## Managing build environments -Nix is extremely useful for developers as it makes it easy to +Lix is extremely useful for developers as it makes it easy to automatically set up the build environment for a package. Given a Nix expression that describes the dependencies of your package, the command `nix-shell` will build or download those dependencies if @@ -174,11 +167,11 @@ the package: ## Portability -Nix runs on Linux and macOS. +Lix runs on Linux and macOS. ## NixOS -NixOS is a Linux distribution based on Nix. It uses Nix not just for +NixOS is a Linux distribution based on Nix technology. It uses Nix not just for package management but also to manage the system configuration (e.g., to build configuration files in `/etc`). This means, among other things, that it is easy to roll back the entire configuration of the @@ -188,6 +181,6 @@ homepage](https://nixos.org/). ## License -Nix is released under the terms of the [GNU LGPLv2.1 or (at your +Lix is released under the terms of the [GNU LGPLv2.1 or (at your option) any later version](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html). diff --git a/doc/manual/src/language/advanced-attributes.md b/doc/manual/src/language/advanced-attributes.md index a5ad47a93..ec21b9990 100644 --- a/doc/manual/src/language/advanced-attributes.md +++ b/doc/manual/src/language/advanced-attributes.md @@ -116,7 +116,7 @@ Derivations can declare some infrequently used optional attributes. These attributes declare that the derivation is a so-called *fixed-output derivation*, which means that a cryptographic hash of the output is already known in advance. When the build of a - fixed-output derivation finishes, Nix computes the cryptographic + fixed-output derivation finishes, Lix computes the cryptographic hash of the output and compares it to the hash declared with these attributes. If there is a mismatch, the build fails. @@ -241,7 +241,7 @@ Derivations can declare some infrequently used optional attributes. then when the builder runs, the environment variable `bigPath` will contain the absolute path to a temporary file containing `a very long string`. That is, for any attribute *x* listed in - `passAsFile`, Nix will pass an environment variable `xPath` + `passAsFile`, Lix will pass an environment variable `xPath` holding the path of the file containing the value of attribute *x*. This is useful when you need to pass large strings to a builder, since most operating systems impose a limit on the size @@ -256,13 +256,13 @@ Derivations can declare some infrequently used optional attributes. the cost of building locally. - [`allowSubstitutes`]{#adv-attr-allowSubstitutes}\ - If this attribute is set to `false`, then Nix will always build this + If this attribute is set to `false`, then Lix will always build this derivation; it will not try to substitute its outputs. This is useful for very trivial derivations (such as `writeText` in Nixpkgs) that are cheaper to build than to substitute from a binary cache. You may disable the effects of this attibute by enabling the - `always-allow-substitutes` configuration option in Nix. + `always-allow-substitutes` configuration option in Lix. > **Note** > @@ -284,7 +284,7 @@ Derivations can declare some infrequently used optional attributes. [`outputChecks`](#adv-attr-outputChecks) for example. As a convenience to Bash builders, - Nix writes a script that initialises shell variables + Lix writes a script that initialises shell variables corresponding to all attributes that are representable in Bash. The environment variable `NIX_ATTRS_SH_FILE` points to the exact location of the script, both in a build and a diff --git a/doc/manual/src/language/derivations.md b/doc/manual/src/language/derivations.md index 1dceacab7..c10e8149d 100644 --- a/doc/manual/src/language/derivations.md +++ b/doc/manual/src/language/derivations.md @@ -61,7 +61,7 @@ the attributes of which specify the inputs of the build. outputs = [ "lib" "headers" "doc" ]; ``` - This will cause Nix to pass environment variables `lib`, `headers` + This will cause Lix to pass environment variables `lib`, `headers` and `doc` to the builder containing the intended store paths of each output. The builder would typically do something like @@ -137,7 +137,7 @@ The builder is executed as follows: it’s `out`.) - If an output path already exists, it is removed. Also, locks are - acquired to prevent multiple Nix instances from performing the same + acquired to prevent multiple Lix instances from performing the same build at the same time. - A log of the combined standard output and error is written to @@ -150,17 +150,17 @@ The builder is executed as follows: - The temporary directory is removed (unless the `-K` option was specified). - - If the build was successful, Nix scans each output path for + - If the build was successful, Lix scans each output path for references to input paths by looking for the hash parts of the input - paths. Since these are potential runtime dependencies, Nix registers + paths. Since these are potential runtime dependencies, Lix registers them as dependencies of the output paths. - - After the build, Nix sets the last-modified timestamp on all files + - After the build, Lix sets the last-modified timestamp on all files in the build result to 1 (00:00:01 1/1/1970 UTC), sets the group to the default group, and sets the mode of the file to 0444 or 0555 (i.e., read-only, with execute permission enabled if the file was originally executable). Note that possible `setuid` and `setgid` bits are cleared. Setuid and setgid programs are not currently - supported by Nix. This is because the Nix archives used in + supported by Lix. This is because the Lix archives used in deployment have no concept of ownership information, and because it makes the build result dependent on the user performing the build. diff --git a/doc/manual/src/package-management/basic-package-mgmt.md b/doc/manual/src/package-management/basic-package-mgmt.md index e86ef7396..0d94ea231 100644 --- a/doc/manual/src/package-management/basic-package-mgmt.md +++ b/doc/manual/src/package-management/basic-package-mgmt.md @@ -1,11 +1,20 @@ # Basic Package Management +
+ +FIXME(Lix): This section does not document the most common modern practices in terms of avoiding channels, pinning, declarative software installation (see flakey-profile or home-manager or NixOS), or using flakes, etc. +It is, however, likely correct at a technical level. + +For more information on modern practices, see the [resources](https://lix.systems/resources) page on the Lix site. + +
+ The main command for package management is [`nix-env`](../command-ref/nix-env.md). You can use it to install, upgrade, and erase packages, and to query what packages are installed or are available for installation. -In Nix, different users can have different “views” on the set of +In Nix systems, different users can have different “views” on the set of installed applications. That is, there might be lots of applications present on the system (possibly in many different versions), but users can have a specific selection of those active — where “active” just @@ -14,12 +23,12 @@ on the set of installed applications is called a *user environment*, which is just a directory tree consisting of symlinks to the files of the active applications. -Components are installed from a set of *Nix expressions* that tell Nix +Components are installed from a set of *Nix expressions* that tell Lix how to build those packages, including, if necessary, their -dependencies. There is a collection of Nix expressions called the +dependencies. There is a very large collection of Nix expressions called the Nixpkgs package collection that contains packages ranging from basic development stuff such as GCC and Glibc, to end-user applications like -Mozilla Firefox. (Nix is however not tied to the Nixpkgs package +Mozilla Firefox. (Lix is however not tied to the Nixpkgs package collection; you could write your own Nix expressions based on Nixpkgs, or completely new ones.) @@ -28,7 +37,7 @@ You can manually download the latest version of Nixpkgs from convenient to use the Nixpkgs [*channel*](../command-ref/nix-channel.md), since it makes it easy to stay up to date with new versions of Nixpkgs. Nixpkgs is automatically added to your list of “subscribed” channels when you -install Nix. If this is not the case for some reason, you can add it +install Lix. If this is not the case for some reason, you can add it as follows: ```console @@ -107,7 +116,7 @@ present on your system (in which case installing it into your user environment would be a very quick operation). The last one (`S`) indicates whether there is a so-called *substitute* for the package, which is Nix’s mechanism for doing binary deployment. It just means that -Nix knows that it can fetch a pre-built package from somewhere +Lix knows that it can fetch a pre-built package from somewhere (typically a network server) instead of building it locally. You can install a package using `nix-env --install --attr `. For instance, @@ -121,12 +130,12 @@ will install the package called `subversion` from `nixpkgs` channel (which is, o > **Note** > -> When you ask Nix to install a package, it will first try to get it in -> pre-compiled form from a *binary cache*. By default, Nix will use the +> When you ask Lix to install a package, it will first try to get it in +> pre-compiled form from a *binary cache*. By default, Lix will use the > binary cache ; it contains binaries for most > packages in Nixpkgs. Only if no binary is available in the binary -> cache, Nix will build the package from source. So if `nix-env -> -iA nixpkgs.subversion` results in Nix building stuff from source, then either +> cache, Lix will build the package from source. So if `nix-env +> -iA nixpkgs.subversion` results in Lix building stuff from source, then either > the package is not built for your platform by the Nixpkgs build > servers, or your version of Nixpkgs is too old or too new. For > instance, if you have a very recent checkout of Nixpkgs, then the @@ -147,7 +156,7 @@ $ nix-env --uninstall subversion ``` Upgrading to a new version is just as easy. If you have a new release of -Nix Packages, you can do: +nixpkgs, you can do: ```console $ nix-env --upgrade --attr nixpkgs.subversion diff --git a/doc/manual/src/package-management/binary-cache-substituter.md b/doc/manual/src/package-management/binary-cache-substituter.md index 855eaf470..4dcf2ca3f 100644 --- a/doc/manual/src/package-management/binary-cache-substituter.md +++ b/doc/manual/src/package-management/binary-cache-substituter.md @@ -1,8 +1,21 @@ # Serving a Nix store via HTTP +
+ +FIXME(Lix): This section documents outdated practices. + +In particular, the Lix developers would *not* recommend using `nix-serve` as it is relatively-unmaintained Perl. +The Lix developers would recommend instead using an s3 based cache (which is what https://cache.nixos.org is), and if it is desired to self-host it, use something like [garage](https://garagehq.deuxfleurs.fr/). + +See the following projects: +- [attic](https://github.com/zhaofengli/attic) - multi-tenant cache for larger deployments, using s3 as a backend. +- [harmonia](https://github.com/nix-community/harmonia) - closer to a drop in replacement for use cases served by nix-serve + +
+ You can easily share the Nix store of a machine via HTTP. This allows other machines to fetch store paths from that machine to speed up -installations. It uses the same *binary cache* mechanism that Nix +installations. It uses the same *binary cache* mechanism that Lix usually uses to fetch pre-built binaries from . The daemon that handles binary cache requests via HTTP, `nix-serve`, is @@ -31,20 +44,19 @@ which should print something like: WantMassQuery: 1 Priority: 30 -On the client side, you can tell Nix to use your binary cache using -`--substituters`, e.g.: +On the client side, you can tell Lix to use your binary cache using `--substituters` (assuming you are a trusted user, see `trusted-users` in nix.conf), e.g.: ```console $ nix-env --install --attr nixpkgs.firefox --substituters http://avalon:8080/ ``` -The option `substituters` tells Nix to use this binary cache in +The option `substituters` tells Lix to use this binary cache in addition to your default caches, such as . -Thus, for any path in the closure of Firefox, Nix will first check if +Thus, for any path in the closure of Firefox, Lix will first check if the path is available on the server `avalon` or another binary caches. If not, it will fall back to building from source. -You can also tell Nix to always use your binary cache by adding a line +You can also tell Lix to always use your binary cache by adding a line to the `nix.conf` configuration file like this: substituters = http://avalon:8080/ https://cache.nixos.org/ diff --git a/doc/manual/src/package-management/garbage-collection.md b/doc/manual/src/package-management/garbage-collection.md index 29a3b3101..07ca29365 100644 --- a/doc/manual/src/package-management/garbage-collection.md +++ b/doc/manual/src/package-management/garbage-collection.md @@ -6,7 +6,7 @@ is to create a new user environment that no longer contains symlinks to the “deleted” packages. Of course, since disk space is not infinite, unused packages should be -removed at some point. You can do this by running the Nix garbage +removed at some point. You can do this by running the Lix garbage collector. It will remove from the Nix store any package not used (directly or indirectly) by any generation of any profile. diff --git a/doc/manual/src/package-management/package-management.md b/doc/manual/src/package-management/package-management.md index d528112e2..274986663 100644 --- a/doc/manual/src/package-management/package-management.md +++ b/doc/manual/src/package-management/package-management.md @@ -1,4 +1,4 @@ -This chapter discusses how to do package management with Nix, i.e., +This chapter discusses how to do package management with Lix, i.e., how to obtain, install, upgrade, and erase packages. This is the “user’s” perspective of the Nix system — people who want to *create* packages should consult the chapter on the [Nix language](../language/index.md). diff --git a/doc/manual/src/package-management/s3-substituter.md b/doc/manual/src/package-management/s3-substituter.md index d8a1d9105..55182128b 100644 --- a/doc/manual/src/package-management/s3-substituter.md +++ b/doc/manual/src/package-management/s3-substituter.md @@ -1,17 +1,28 @@ # Serving a Nix store via S3 -Nix has [built-in support](@docroot@/command-ref/new-cli/nix3-help-stores.md#s3-binary-cache-store) -for storing and fetching store paths from -Amazon S3 and S3-compatible services. This uses the same *binary* -cache mechanism that Nix usually uses to fetch prebuilt binaries from +Lix has [built-in support](@docroot@/command-ref/new-cli/nix3-help-stores.md#s3-binary-cache-store) +for storing and fetching store paths from Amazon S3 and S3-compatible services. + +
+ +FIXME(Lix): document the correct setup to fetch from a s3 cache via HTTP rather than just through `s3://` (which works, but forces you to remain s3-like on the client side) + +
+ + In this example we will use the bucket named `example-nix-cache`. ## Anonymous Reads to your S3-compatible binary cache If your binary cache is publicly accessible and does not require -authentication, the simplest and easiest way to use Nix with your S3 +authentication, the simplest and easiest way to use Lix with your S3 compatible binary cache is to use the HTTP URL for that cache. For AWS S3 the binary cache URL for example bucket will be exactly @@ -48,11 +59,11 @@ Your bucket will need the following bucket policy: For AWS S3 the binary cache URL for example bucket will be exactly . -Nix will use the [default credential provider +Lix will use the [default credential provider chain](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/credentials.html) for authenticating requests to Amazon S3. -Nix supports authenticated reads from Amazon S3 and S3 compatible binary +Lix supports authenticated reads from Amazon S3 and S3 compatible binary caches. Your bucket will need a bucket policy allowing the desired users to @@ -63,11 +74,11 @@ updated to have a restricted `Principal` to support this. ## Authenticated Writes to your S3-compatible binary cache -Nix support fully supports writing to Amazon S3 and S3 compatible +Lix support fully supports writing to Amazon S3 and S3 compatible buckets. The binary cache URL for our example bucket will be . -Nix will use the [default credential provider +Lix will use the [default credential provider chain](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/credentials.html) for authenticating requests to Amazon S3. diff --git a/doc/manual/src/package-management/ssh-substituter.md b/doc/manual/src/package-management/ssh-substituter.md index bd07b97cc..44dc3ef84 100644 --- a/doc/manual/src/package-management/ssh-substituter.md +++ b/doc/manual/src/package-management/ssh-substituter.md @@ -1,6 +1,6 @@ # Serving a Nix store via SSH -You can tell Nix to automatically fetch needed binaries from a remote +You can tell Lix to automatically fetch needed binaries from a remote Nix store via SSH. For example, the following installs Firefox, automatically fetching any store paths in Firefox’s closure if they are available on the server `avalon`: @@ -9,8 +9,8 @@ available on the server `avalon`: $ nix-env --install --attr nixpkgs.firefox --substituters ssh://alice@avalon ``` -This works similar to the binary cache substituter that Nix usually -uses, only using SSH instead of HTTP: if a store path `P` is needed, Nix +This works similar to the binary cache substituter that Lix usually +uses, only using SSH instead of HTTP: if a store path `P` is needed, Lix will first check if it’s available in the Nix store on `avalon`. If not, it will fall back to using the binary cache substituter, and then to building from source. diff --git a/doc/manual/src/protocols/protocols.md b/doc/manual/src/protocols/protocols.md index d6bf1d809..1f77f98a2 100644 --- a/doc/manual/src/protocols/protocols.md +++ b/doc/manual/src/protocols/protocols.md @@ -1,4 +1,4 @@ # Protocols This chapter documents various developer-facing interfaces provided by -Nix. +Lix. diff --git a/doc/manual/src/protocols/tarball-fetcher.md b/doc/manual/src/protocols/tarball-fetcher.md index 274fa6d63..3527333f2 100644 --- a/doc/manual/src/protocols/tarball-fetcher.md +++ b/doc/manual/src/protocols/tarball-fetcher.md @@ -23,11 +23,11 @@ Link: ; rel="immutable" *flakeref* must be a tarball flakeref. It can contain the tarball flake attributes `narHash`, `rev`, `revCount` and `lastModified`. If `narHash` is included, its value must be the NAR hash of the unpacked tarball (as computed via -`nix hash path`). Nix checks the contents of the returned tarball +`nix hash path`). Lix checks the contents of the returned tarball against the `narHash` attribute. The `rev` and `revCount` attributes are useful when the tarball flake is a mirror of a fetcher type that has those attributes, such as Git or GitHub. They are not checked by -Nix. +Lix. ``` Link: + +FIXME(Lix): This chapter is quite outdated with respect to recommended practices in 2024 and needs updating. +The commands in here will work, however, and the installation section is up to date. + +For more updated guidance, see the links on + + + This chapter is for impatient people who don't like reading documentation. For more in-depth information you are kindly referred to subsequent chapters. -1. Install Nix by running the following: +1. Install Lix: + + On Linux and macOS the easiest way to install Lix is to run the following shell command + (as a user other than root): ```console - $ curl -L https://nixos.org/nix/install | sh + $ curl -sSf -L https://install.lix.systems/lix | sh -s -- install ``` + For systems that **already have Nix installed**, such as NixOS systems, read our [install page](https://lix.systems/install) + The install script will use `sudo`, so make sure you have sufficient rights. - On Linux, `--daemon` can be omitted for a single-user install. For other installation methods, see [here](installation/installation.md). @@ -90,10 +103,12 @@ to subsequent chapters. $ nix-env --rollback ``` -1. You should periodically run the Nix garbage collector to get rid of +1. You should periodically run the Lix garbage collector to get rid of unused packages, since uninstalls or upgrades don't actually delete them: ```console $ nix-collect-garbage --delete-old ``` + + N.B. on NixOS there is an option [`nix.gc.automatic`](https://nixos.org/manual/nixos/stable/options#opt-nix.gc.automatic) to enable a systemd timer to automate this task. diff --git a/doc/manual/src/release-notes/release-notes.md b/doc/manual/src/release-notes/release-notes.md index b05d5ee0a..cdac464ca 100644 --- a/doc/manual/src/release-notes/release-notes.md +++ b/doc/manual/src/release-notes/release-notes.md @@ -1 +1 @@ -# Nix Release Notes +# Lix Release Notes diff --git a/src/nix/upgrade-nix.md b/src/nix/upgrade-nix.md index cce88c397..b327727dd 100644 --- a/src/nix/upgrade-nix.md +++ b/src/nix/upgrade-nix.md @@ -16,8 +16,8 @@ R""( # Description -This command upgrades Nix to the stable version declared in Nixpkgs. -This stable version is defined in [nix-fallback-paths.nix](https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix) +This command upgrades Lix to the latest stable version. +This stable version is defined in [the Lix manifest](https://releases.lix.systems/manifest.nix) and updated manually. It may not always be the latest tagged release. By default, it locates the directory containing the `nix` binary in the `$PATH`