forked from lix-project/lix-website
Compare commits
16 commits
aveao-patc
...
main
Author | SHA1 | Date | |
---|---|---|---|
jade | 4f6ed2d524 | ||
jade | 77aaaee24c | ||
jade | 32c70a33c2 | ||
jade | c40c23728a | ||
jade | 9b2456b2eb | ||
jade | f898c3be84 | ||
bd42350f74 | |||
Rebecca Turner | 91d0546087 | ||
Rebecca Turner | 2de52f9546 | ||
piegames | 048d0e9a54 | ||
jade | ad8ff9bfbb | ||
jade | 1bfa87942b | ||
jade | ebec33fdfb | ||
jade | 4982dca516 | ||
jade | c103690644 | ||
jade | f332f4d226 |
|
@ -51,7 +51,7 @@ You can verify that it works by running the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix --version
|
$ nix --version
|
||||||
nix (Lix, like Nix) 2.90.0
|
nix (Lix, like Nix) 2.91.1
|
||||||
```
|
```
|
||||||
|
|
||||||
# Using the Lix NixOS module
|
# Using the Lix NixOS module
|
||||||
|
@ -76,7 +76,7 @@ Adding Lix to a flake-based configuration is relatively simple. First, add the L
|
||||||
# which is often the case. If you've named it something else,
|
# which is often the case. If you've named it something else,
|
||||||
# you'll need to change the `nixpkgs` below.
|
# you'll need to change the `nixpkgs` below.
|
||||||
lix-module = {
|
lix-module = {
|
||||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz";
|
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ You should now be using Lix! You can verify this by asking the `nix` command to
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix --version
|
$ nix --version
|
||||||
nix (Lix, like Nix) 2.90.0
|
nix (Lix, like Nix) 2.91.1
|
||||||
```
|
```
|
||||||
|
|
||||||
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
||||||
|
@ -180,20 +180,20 @@ section, and add the line provided in the configuration
|
||||||
#
|
#
|
||||||
# The sha256 hashes were obtained with the following command in Lix (n.b.
|
# The sha256 hashes were obtained with the following command in Lix (n.b.
|
||||||
# this relies on --unpack, which is only in Lix and CppNix > 2.18):
|
# this relies on --unpack, which is only in Lix and CppNix > 2.18):
|
||||||
# nix store prefetch-file --name source --unpack https://git.lix.systems/lix-project/lix/archive/2.90.0.tar.gz
|
# nix store prefetch-file --name source --unpack https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz
|
||||||
#
|
#
|
||||||
# Note that the tag (e.g. 2.90.0) in the URL here is what determines
|
# Note that the tag (e.g. 2.91.1) in the URL here is what determines
|
||||||
# which version of Lix you'll wind up with.
|
# which version of Lix you'll wind up with.
|
||||||
(let
|
(let
|
||||||
module = fetchTarball {
|
module = fetchTarball {
|
||||||
name = "source";
|
name = "source";
|
||||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz";
|
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz";
|
||||||
sha256 = "sha256-yEO2cGNgzm9x/XxiDQI+WckSWnZX63R8aJLBRSXtYNE=";
|
sha256 = "sha256-DN5/166jhiiAW0Uw6nueXaGTueVxhfZISAkoxasmz/g=";
|
||||||
};
|
};
|
||||||
lixSrc = fetchTarball {
|
lixSrc = fetchTarball {
|
||||||
name = "source";
|
name = "source";
|
||||||
url = "https://git.lix.systems/lix-project/lix/archive/2.90.0.tar.gz";
|
url = "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz";
|
||||||
sha256 = "sha256-f8k+BezKdJfmE+k7zgBJiohtS3VkkriycdXYsKOm3sc=";
|
sha256 = "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=";
|
||||||
};
|
};
|
||||||
# This is the core of the code you need; it is an exercise to the
|
# This is the core of the code you need; it is an exercise to the
|
||||||
# reader to write the sources in a nicer way, or by using npins or
|
# reader to write the sources in a nicer way, or by using npins or
|
||||||
|
@ -230,7 +230,7 @@ You should now be using Lix! You can verify this by asking the `nix` command to
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix --version
|
$ nix --version
|
||||||
nix (Lix, like Nix) 2.90.0
|
nix (Lix, like Nix) 2.91.1
|
||||||
```
|
```
|
||||||
|
|
||||||
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
||||||
|
|
|
@ -51,7 +51,7 @@ You can verify that it works by running the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix --version
|
$ nix --version
|
||||||
nix (Lix, like Nix) @VERSION@
|
nix (Lix, like Nix) @VERSION_NOTRAIL@
|
||||||
```
|
```
|
||||||
|
|
||||||
# Using the Lix NixOS module
|
# Using the Lix NixOS module
|
||||||
|
@ -153,7 +153,7 @@ You should now be using Lix! You can verify this by asking the `nix` command to
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix --version
|
$ nix --version
|
||||||
nix (Lix, like Nix) @VERSION@
|
nix (Lix, like Nix) @VERSION_NOTRAIL@
|
||||||
```
|
```
|
||||||
|
|
||||||
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
||||||
|
@ -180,9 +180,9 @@ section, and add the line provided in the configuration
|
||||||
#
|
#
|
||||||
# The sha256 hashes were obtained with the following command in Lix (n.b.
|
# The sha256 hashes were obtained with the following command in Lix (n.b.
|
||||||
# this relies on --unpack, which is only in Lix and CppNix > 2.18):
|
# this relies on --unpack, which is only in Lix and CppNix > 2.18):
|
||||||
# nix store prefetch-file --name source --unpack https://git.lix.systems/lix-project/lix/archive/@VERSION@.tar.gz
|
# nix store prefetch-file --name source --unpack https://git.lix.systems/lix-project/lix/archive/@VERSION_NOTRAIL@.tar.gz
|
||||||
#
|
#
|
||||||
# Note that the tag (e.g. @VERSION@) in the URL here is what determines
|
# Note that the tag (e.g. @VERSION_NOTRAIL@) in the URL here is what determines
|
||||||
# which version of Lix you'll wind up with.
|
# which version of Lix you'll wind up with.
|
||||||
(let
|
(let
|
||||||
module = fetchTarball {
|
module = fetchTarball {
|
||||||
|
@ -192,7 +192,7 @@ section, and add the line provided in the configuration
|
||||||
};
|
};
|
||||||
lixSrc = fetchTarball {
|
lixSrc = fetchTarball {
|
||||||
name = "source";
|
name = "source";
|
||||||
url = "https://git.lix.systems/lix-project/lix/archive/@VERSION@.tar.gz";
|
url = "https://git.lix.systems/lix-project/lix/archive/@VERSION_NOTRAIL@.tar.gz";
|
||||||
sha256 = "@LIX_ARCHIVE_HASH@";
|
sha256 = "@LIX_ARCHIVE_HASH@";
|
||||||
};
|
};
|
||||||
# This is the core of the code you need; it is an exercise to the
|
# This is the core of the code you need; it is an exercise to the
|
||||||
|
@ -230,7 +230,7 @@ You should now be using Lix! You can verify this by asking the `nix` command to
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix --version
|
$ nix --version
|
||||||
nix (Lix, like Nix) @VERSION@
|
nix (Lix, like Nix) @VERSION_NOTRAIL@
|
||||||
```
|
```
|
||||||
|
|
||||||
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
+++
|
+++
|
||||||
title = "Announcing Lix 2.90 \"Vanilla Ice Cream\""
|
title = "Announcing Lix 2.90 \"Vanilla Ice Cream\""
|
||||||
author = "Lix Team"
|
author = "Lix Team"
|
||||||
|
date = "2024-07-10"
|
||||||
+++
|
+++
|
||||||
|
|
||||||
We at the Lix team are proud to announce our first release, version 2.90
|
We at the Lix team are proud to announce our first release, version 2.90
|
||||||
|
|
191
content/blog/2024-08-12-lix-2.91-release.md
Normal file
191
content/blog/2024-08-12-lix-2.91-release.md
Normal file
|
@ -0,0 +1,191 @@
|
||||||
|
+++
|
||||||
|
title = "Announcing Lix 2.91 \"Dragon's Breath\""
|
||||||
|
author = "Lix Team"
|
||||||
|
date = "2024-08-12"
|
||||||
|
+++
|
||||||
|
|
||||||
|
We at the Lix team are proud to announce our second major release, version 2.91 "Dragon's Breath".
|
||||||
|
This release contains unspecified bug fixes and performance improvements—no of course we will tell you what is in it.
|
||||||
|
|
||||||
|
> [Dragon's Breath](https://en.wikipedia.org/wiki/Dragon%27s_Breath_(dessert)) is a frozen dessert made of spheres of cereal frozen in liquid nitrogen
|
||||||
|
|
||||||
|
Lix is a Nix implementation focused on reliability, predictability, friendliness, developed by a community of people from around the world.
|
||||||
|
We have long term plans to incrementally evolve Nix to work in more places, to make it more reliable and secure, and to update the language and semantics to correct past mistakes and reduce errors, all the while providing an amazing tooling experience.
|
||||||
|
|
||||||
|
## Upgrading from CppNix or previous Lix versions
|
||||||
|
|
||||||
|
The upgrade procedure depends on how you installed Lix or CppNix, and is fully described in the [Lix installation guide][install-guide].
|
||||||
|
|
||||||
|
If you are using Lix from nixpkgs on NixOS, you just need to upgrade your nixpkgs once the [upgrade pull request][upgrade-pr] has passed through the build farm into your channel; no other action is required.
|
||||||
|
The build progress can be checked on the [unofficial pull request tracker].
|
||||||
|
|
||||||
|
[upgrade-pr]: https://github.com/NixOS/nixpkgs/pull/334269
|
||||||
|
|
||||||
|
[unofficial pull request tracker]: https://nixpk.gs/pr-tracker.html?pr=334269
|
||||||
|
|
||||||
|
[install-guide]: https://lix.systems/install/
|
||||||
|
|
||||||
|
If you want to help us test the next version of Lix, consider running `main` by following the [beta guide][beta-guide].
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
|
||||||
|
The general theme of Lix 2.91 is to perform another wave of refactorings and design improvements in preparation for our evolution plans.
|
||||||
|
|
||||||
|
Nevertheless, there are a few exciting user facing changes:
|
||||||
|
|
||||||
|
- Lix now supports `--log-format multiline` and `--log-format multiline-with-logs` that show current activities in progress, thanks to [kloenk].
|
||||||
|
|
||||||
|
The following is a snapshot in time of the output; that is, the activities shown at the bottom are *just* the ones in progress and each disappears after it finishes.
|
||||||
|
```
|
||||||
|
~ » nix build --log-format multiline nixpkgs#chromium
|
||||||
|
[0/1 built, 3/3/7 copied (12.8/598.7 MiB), 1.1/127.3 MiB DL]
|
||||||
|
fetching adwaita-icon-theme-46.0 from https://cache.nixos.org
|
||||||
|
fetching gtk4-4.14.4 from https://cache.nixos.org
|
||||||
|
fetching chromium-unwrapped-126.0.6478.126 from https://cache.nixos.org
|
||||||
|
```
|
||||||
|
|
||||||
|
- `nix flake metadata` now prints the date inputs were updated, thanks to [jade].
|
||||||
|
|
||||||
|
```
|
||||||
|
lix » nix flake metadata .
|
||||||
|
...
|
||||||
|
Description: Lix: A modern, delicious implementation of the Nix package manager
|
||||||
|
Path: /nix/store/w44z74qv8g8nrxacn931qsbjxp8dz9g5-source
|
||||||
|
Revision: 35c9069c665fd776a377c179231403f9877e3e2f-dirty
|
||||||
|
Last modified: 2024-08-09 19:03:08
|
||||||
|
Inputs:
|
||||||
|
├───flake-compat: github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33
|
||||||
|
│ Last modified: 2023-10-04 06:37:54
|
||||||
|
├───nix2container: github:nlewo/nix2container/3853e5caf9ad24103b13aa6e0e8bcebb47649fe4
|
||||||
|
│ Last modified: 2024-07-10 13:15:56
|
||||||
|
├───nixpkgs: github:NixOS/nixpkgs/e21630230c77140bc6478a21cd71e8bb73706fce
|
||||||
|
│ Last modified: 2024-07-25 11:26:27
|
||||||
|
├───nixpkgs-regression: github:NixOS/nixpkgs/215d4d0fd80ca5163643b03a33fde804a29cc1e2
|
||||||
|
│ Last modified: 2022-01-24 11:20:45
|
||||||
|
└───pre-commit-hooks: github:cachix/git-hooks.nix/f451c19376071a90d8c58ab1a953c6e9840527fd
|
||||||
|
Last modified: 2024-07-15 04:21:09
|
||||||
|
```
|
||||||
|
- `nix flake show` now prints output descriptions, thanks to [kjeremy] and [isabelroses].
|
||||||
|
|
||||||
|
```
|
||||||
|
lix/lix2 » nix flake show .
|
||||||
|
git+file:///home/jade/lix/lix2
|
||||||
|
├───checks
|
||||||
|
........
|
||||||
|
│ └───x86_64-linux
|
||||||
|
│ ├───binaryTarball: derivation 'lix-binary-tarball-2.91.0-devpre20240810_446668b' - 'Distribution-independe...'
|
||||||
|
│ ├───dockerImage: derivation 'image-lix.json' - 'Docker image for Lix. This is built with nix2container; se...'
|
||||||
|
........
|
||||||
|
│ └───rl-next: derivation 'test-rl-next-release-notes'
|
||||||
|
```
|
||||||
|
- Hash-mismatch diagnostics now include a guess at the URL based on the derivation fields, thanks to [jade].
|
||||||
|
The URL may or may not be able to be directly passed to `nix-prefetch-url` to obtain the correct hash, so it is primarily intended just to identify which fixed-output derivation failed.
|
||||||
|
|
||||||
|
```
|
||||||
|
error: hash mismatch in fixed-output derivation '/nix/store/sjfw324j4533lwnpmr5z4icpb85r63ai-x1.drv':
|
||||||
|
likely URL: https://meow.puppy.forge/puppy.tar.gz
|
||||||
|
specified: sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
|
got: sha256-a1Qvp3FOOkWpL9kFHgugU1ok5UtRPSu+NwCZKbbaEro=
|
||||||
|
```
|
||||||
|
- The Nix language pipe operator, [RFC 148](https://github.com/NixOS/rfcs/pull/148), has been implemented as an experimental feature `pipe-operator` in Lix by [piegames].
|
||||||
|
As usual with experimental features, the pipe operator is subject to potentially-breaking change as the design evolves.
|
||||||
|
|
||||||
|
Here is an impractical example for illustration:
|
||||||
|
|
||||||
|
```
|
||||||
|
nix-repl> 2 |> builtins.mul 5 |> builtins.add 2
|
||||||
|
12
|
||||||
|
```
|
||||||
|
- There is now a setting `build-dir` which allows changing the temporary directory used for builds, thanks to [K900]'s backport of [Robert Hensing] and [Tom Bereknyei]'s implementation in CppNix.
|
||||||
|
- The environment variables `NOCOLOR`/`NO_COLOR` and `CLICOLOR_FORCE`/`FORCE_COLOR` are heeded in the expected way for all Lix output, thanks to [jade].
|
||||||
|
|
||||||
|
Various little annoyances have been fixed:
|
||||||
|
|
||||||
|
- `:edit` of a file in the repl does not reload the repl if the file is in the Nix store, since the file is immutable so could not possibly change the evaluation result.
|
||||||
|
Thanks to [goldstein] for implementing this.
|
||||||
|
- Lix now respects your consent when you tell it to `accept-flake-config = false` and rejects the flake config instead of asking every time, thanks to [alois31].
|
||||||
|
- `nix-collect-garbage --dry-run` now actually prints out the paths it was going to delete instead of doing nothing, thanks to [Quantum Jump].
|
||||||
|
- Due to a bug, `nix copy` to various stores, especially s3, used to be exceptionally slow at querying paths in the remote store, to the tune of Lix releases taking an hour just to figure out what was in the binary cache before uploading the release.
|
||||||
|
|
||||||
|
This has now been made `nproc` times faster thanks to [jade] fixing the threading bug.
|
||||||
|
- The `nix upgrade-nix` logic is finally fixed thanks to [Qyriad] and should correctly handle upgrading from CppNix without workarounds.
|
||||||
|
|
||||||
|
Lix now makes various erroneous conditions clearer:
|
||||||
|
|
||||||
|
- Unknown flake URI parameters are now [reported as an error](https://git.lix.systems/lix-project/lix/issues/174), thanks to [ma27].
|
||||||
|
|
||||||
|
```
|
||||||
|
» nix flake metadata '.?meow=true'
|
||||||
|
error: unsupported Git input attribute 'meow'
|
||||||
|
```
|
||||||
|
- Evaluation errors are clearer:
|
||||||
|
- The component in an attribute path causing an error is correctly diagnosed, thanks to [Qyriad].
|
||||||
|
In particular, if an evaluation error occurs when accessing an attribute path `foo.bar.baz`, the error will now point to which of `foo`, `bar`, or `baz` caused the error.
|
||||||
|
- Errors caused by an explicit `builtins.throw` are diagnosed as such, rather than "while calling the 'throw' builtin", which could equally be because the arguments to `throw` *themselves* threw.
|
||||||
|
This is now unambiguous thanks to [Qyriad].
|
||||||
|
- Integer overflow in the Nix language is now considered an evaluation error, thanks to [jade].
|
||||||
|
This has also been [ported to CppNix](https://github.com/NixOS/nix/pull/11188), effectively changing the language definition.
|
||||||
|
|
||||||
|
```
|
||||||
|
» nix eval --expr '9223372036854775807 + 1'
|
||||||
|
error: integer overflow in adding 9223372036854775807 + 1
|
||||||
|
```
|
||||||
|
|
||||||
|
Fun fact: Lix 2.90 also rejects integer overflow in the Nix language, by aborting the interpreter, due to our strict compiler flags.
|
||||||
|
The fact that nobody noticed the interpreter crash for months has emboldened us to remove it from the language with confidence.
|
||||||
|
|
||||||
|
We have, as usual, made various changes behind the scenes to enable future work:
|
||||||
|
|
||||||
|
- The parser has been rewritten using [pegtl] instead of the haunted and legacy GNU Bison, yielding a performance improvement around 5% to Lix evaluation.
|
||||||
|
|
||||||
|
This also improves the contributor experience and technical debt by removing many memory leaks and making the parser much easier to deal with as a normal C++ file.
|
||||||
|
|
||||||
|
This is all thanks to the hard work of [eldritch horrors].
|
||||||
|
- Several refactorings have been implemented to improve maintainability, thanks to [Artemis Tosini], [Qyriad], [jade], [alois31], [eldritch horrors], [ma27], [V.] and several others.
|
||||||
|
- clang-tidy is finally implemented in an enforcing mode in CI, which means that work can be done to add more lints to the enforced list, thanks to [jade].
|
||||||
|
- Since 2.90, Lix had a custom clang-tidy lint plugin in-tree, and as of 2.91, it is now being run on every change in CI.
|
||||||
|
As of this release, the first useful custom lint is now operational, requiring that certain already-safe `reinterpret_cast` invocations are replaced with a template wrapper `charptr_cast` that strictly checks its arguments.
|
||||||
|
|
||||||
|
This is thanks to [jade].
|
||||||
|
- Several lints have been added to the hard-fail list and eliminated altogether from the codebase, thanks to [eldritch horrors] and [jade].
|
||||||
|
- Lix now fully builds and passes its test suite with AddressSanitizer (assuming the garbage collector is disabled, which a helpful error will tell you), thanks to [eldritch horrors] and [jade].
|
||||||
|
- Boost coroutines, which blocked AddressSanitizer usage, have been completely excised from the codebase by the claws of [eldritch horrors] and replaced with C++ standard stackless coroutines.
|
||||||
|
- Overall the release process has been simplified and bugs fixed in it thanks to [jade].
|
||||||
|
The docker image of 2.91 should have a `latest` tag as intended, for example.
|
||||||
|
|
||||||
|
[pegtl]: https://github.com/taocpp/pegtl
|
||||||
|
|
||||||
|
[Qyriad]: https://github.com/qyriad
|
||||||
|
[ma27]: https://github.com/ma27
|
||||||
|
[eldritch horrors]: https://git.lix.systems/pennae
|
||||||
|
[Artemis Tosini]: https://github.com/artemist
|
||||||
|
[jade]: https://jade.fyi
|
||||||
|
[Robert Hensing]: https://github.com/roberth
|
||||||
|
[kloenk]: https://git.lix.systems/kloenk
|
||||||
|
[kjeremy]: https://github.com/kjeremy
|
||||||
|
[isabelroses]: https://git.lix.systems/isabelroses
|
||||||
|
[K900]: https://github.com/k900
|
||||||
|
[alois31]: https://git.lix.systems/alois31
|
||||||
|
[Quantum Jump]: https://github.com/QuantumBJump
|
||||||
|
[piegames]: https://github.com/piegamesde
|
||||||
|
[V.]: https://github.com/vigress8
|
||||||
|
[goldstein]: https://git.lix.systems/goldstein
|
||||||
|
[Tom Bereknyei]: https://github.com/tomberek
|
||||||
|
|
||||||
|
You can read the full changelog [in the manual](https://docs.lix.systems/manual/lix/stable/release-notes/rl-2.91.html).
|
||||||
|
|
||||||
|
Thanks, as always, to the following groups:
|
||||||
|
- The several dozen people who [beta tested][beta-guide] the upcoming release by running `main` in production since the 2.91 branch-off.
|
||||||
|
We really appreciate having immediate feedback on our work, and the trust of running `main` alongside us means a lot to us.
|
||||||
|
|
||||||
|
If you want to run Lix `main` yourself, [see the beta guide][beta-guide] for details.
|
||||||
|
- Everyone who contributed by filing bugs and giving us feedback on Matrix.
|
||||||
|
- All the first time contributors who made their first contributions to a Nix implementation in Lix.
|
||||||
|
We are eternally grateful to everyone who helped us out on the numerous important but tedious issues.
|
||||||
|
- All the contributors who have helped us with the backlog of bugs.
|
||||||
|
- The CppNix contributors and CppNix team, without whom we would not have this software, and who wrote some of the improvements ported into this release.
|
||||||
|
|
||||||
|
[beta-guide]: https://wiki.lix.systems/books/lix-contributors/page/lix-beta-guide
|
||||||
|
|
||||||
|
Onwards and upwards for the next release.
|
||||||
|
We look forward to continuing to work together with everyone to build a better foundation for the future evolution of Nix.
|
22
content/blog/2024-09-15-sequoia-intervention.md
Normal file
22
content/blog/2024-09-15-sequoia-intervention.md
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
+++
|
||||||
|
title = "Lix installations upgrading to macOS Sequoia require manual repair"
|
||||||
|
author = "Lix Team"
|
||||||
|
date = "2024-09-15"
|
||||||
|
+++
|
||||||
|
|
||||||
|
macOS Sequoia release day is almost upon us, and that means all your Lix and Nix installations on macOS are going to break when you upgrade your OS.
|
||||||
|
Apple claimed some user IDs that are used in the default Nix installation which are then clobbered by the updater, leading to builds failing with the following error:
|
||||||
|
|
||||||
|
```
|
||||||
|
error: the user '_nixbld1' in the group 'nixbld' does not exist
|
||||||
|
```
|
||||||
|
|
||||||
|
To fix this, you can use the repair functionality of the installer (thanks to cole-h at DetSys for implementing the repair functionality and emilazy for porting it to lix-installer!):
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -sSf -L https://install.lix.systems/lix | sh -s -- repair sequoia
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to apply the repair before upgrading, add `--move-existing-users` to the end of the command.
|
||||||
|
|
||||||
|
We have a wiki page with more links and details here: https://wiki.lix.systems/link/81
|
|
@ -44,9 +44,11 @@ We encourage working through conflicts privately with involved parties, but we a
|
||||||
|
|
||||||
If you wish to contact a member of the interim community team about a concern, consider contacting one of the following people:
|
If you wish to contact a member of the interim community team about a concern, consider contacting one of the following people:
|
||||||
|
|
||||||
|
<!-- throw a die and insert at random position -->
|
||||||
- qyriad (@qyriad:katesiria.org)
|
- qyriad (@qyriad:katesiria.org)
|
||||||
- piegames (@piegames:flausch.social)
|
- piegames (@piegames:flausch.social)
|
||||||
- ktemkin (@ktemkin:katesiria.org)
|
- ktemkin (@ktemkin:katesiria.org)
|
||||||
- hexchen (@hexchen:colon.at)
|
- hexchen (@hexchen:colon.at)
|
||||||
- lunaphied (@lunaphied:lunaphied.me)
|
- lunaphied (@lunaphied:lunaphied.me)
|
||||||
|
- k900 (@k900:0upti.me)
|
||||||
- jade (@jade_:matrix.org)
|
- jade (@jade_:matrix.org)
|
||||||
|
|
|
@ -69,7 +69,7 @@ great time to check out some of the [community's resources on Nix](/resources).
|
||||||
|
|
||||||
### Existing Installs
|
### Existing Installs
|
||||||
|
|
||||||
If you have an existing Nix installation, you should be able to upgrade by using a variant
|
If you have an existing Nix installation (either CppNix or Lix), you should be able to upgrade by using a variant
|
||||||
of the `upgrade-nix` command.
|
of the `upgrade-nix` command.
|
||||||
|
|
||||||
Thanks to Nix, we can actually ask Lix to upgrade your system directly. Run the following command:
|
Thanks to Nix, we can actually ask Lix to upgrade your system directly. Run the following command:
|
||||||
|
@ -78,7 +78,7 @@ Thanks to Nix, we can actually ask Lix to upgrade your system directly. Run the
|
||||||
sudo --preserve-env=PATH nix run \
|
sudo --preserve-env=PATH nix run \
|
||||||
--experimental-features "nix-command flakes" \
|
--experimental-features "nix-command flakes" \
|
||||||
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" \
|
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" \
|
||||||
'git+https://git.lix.systems/lix-project/lix?ref=refs/tags/2.90.0' -- \
|
'git+https://git.lix.systems/lix-project/lix?ref=refs/tags/2.91.1' -- \
|
||||||
upgrade-nix \
|
upgrade-nix \
|
||||||
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
||||||
```
|
```
|
||||||
|
@ -88,7 +88,7 @@ to report its version:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix --version
|
$ nix --version
|
||||||
nix (Lix, like Nix) 2.90.0
|
nix (Lix, like Nix) 2.91.1
|
||||||
```
|
```
|
||||||
|
|
||||||
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
||||||
|
|
|
@ -69,7 +69,7 @@ great time to check out some of the [community's resources on Nix](/resources).
|
||||||
|
|
||||||
### Existing Installs
|
### Existing Installs
|
||||||
|
|
||||||
If you have an existing Nix installation, you should be able to upgrade by using a variant
|
If you have an existing Nix installation (either CppNix or Lix), you should be able to upgrade by using a variant
|
||||||
of the `upgrade-nix` command.
|
of the `upgrade-nix` command.
|
||||||
|
|
||||||
Thanks to Nix, we can actually ask Lix to upgrade your system directly. Run the following command:
|
Thanks to Nix, we can actually ask Lix to upgrade your system directly. Run the following command:
|
||||||
|
@ -78,7 +78,7 @@ Thanks to Nix, we can actually ask Lix to upgrade your system directly. Run the
|
||||||
sudo --preserve-env=PATH nix run \
|
sudo --preserve-env=PATH nix run \
|
||||||
--experimental-features "nix-command flakes" \
|
--experimental-features "nix-command flakes" \
|
||||||
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" \
|
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" \
|
||||||
'git+https://git.lix.systems/lix-project/lix?ref=refs/tags/@VERSION@' -- \
|
'git+https://git.lix.systems/lix-project/lix?ref=refs/tags/@VERSION_NOTRAIL@' -- \
|
||||||
upgrade-nix \
|
upgrade-nix \
|
||||||
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
||||||
```
|
```
|
||||||
|
@ -88,7 +88,7 @@ to report its version:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix --version
|
$ nix --version
|
||||||
nix (Lix, like Nix) @VERSION@
|
nix (Lix, like Nix) @VERSION_NOTRAIL@
|
||||||
```
|
```
|
||||||
|
|
||||||
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a
|
||||||
|
|
8
content/quicklinks/index.md
Normal file
8
content/quicklinks/index.md
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
title: "Quick Links"
|
||||||
|
description: "Just the Lix links and very little else"
|
||||||
|
date: "2024-09-06"
|
||||||
|
author: "Lix Team"
|
||||||
|
# Use our special template that renders the `links.yaml`.
|
||||||
|
layout: quicklinks
|
||||||
|
---
|
38
content/quicklinks/links.yaml
Normal file
38
content/quicklinks/links.yaml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
---
|
||||||
|
# This defines the cards that appear in `index.md`
|
||||||
|
|
||||||
|
- label: user manual
|
||||||
|
url: https://docs.lix.systems/manual/lix/stable/
|
||||||
|
|
||||||
|
- label: (nightly)
|
||||||
|
url: https://docs.lix.systems/manual/lix/nightly/
|
||||||
|
|
||||||
|
- label: git repo
|
||||||
|
url: https://git.lix.systems/lix-project/lix
|
||||||
|
|
||||||
|
- label: issue tracker
|
||||||
|
url: https://git.lix.systems/lix-project/lix/issues
|
||||||
|
|
||||||
|
- label: lix-installer
|
||||||
|
url: https://git.lix.systems/lix-project/lix-installer
|
||||||
|
|
||||||
|
- label: lix-website
|
||||||
|
url: https://git.lix.systems/lix-project/lix-website
|
||||||
|
|
||||||
|
- label: code review
|
||||||
|
url: https://gerrit.lix.systems/
|
||||||
|
|
||||||
|
- label: buildbot (ci)
|
||||||
|
url: https://buildbot.lix.systems/
|
||||||
|
|
||||||
|
- label: gitiles
|
||||||
|
url: https://gerrit.lix.systems/plugins/gitiles/lix
|
||||||
|
|
||||||
|
- label: wiki
|
||||||
|
url: https://wiki.lix.systems/books
|
||||||
|
|
||||||
|
- label: matrix (chat)
|
||||||
|
url: https://matrix.to/#/#space:lix.systems
|
||||||
|
|
||||||
|
- label: |
|
||||||
|
`git clone ssh://{username}@gerrit.lix.systems:2022/lix`
|
|
@ -37,7 +37,7 @@ If you're learning about those topics because you want to understand the ideas t
|
||||||
## Understanding Flakes
|
## Understanding Flakes
|
||||||
|
|
||||||
- [Flakes aren't real and can't hurt you](https://jade.fyi/blog/flakes-arent-real/), by our own **jade**.
|
- [Flakes aren't real and can't hurt you](https://jade.fyi/blog/flakes-arent-real/), by our own **jade**.
|
||||||
- Several of Lix community member [Xe Iaso]()'s blog posts:
|
- Several of Lix community member [Xe Iaso](https://xeiaso.net)'s blog posts:
|
||||||
- [Nix Flakes: An Introduction](https://xeiaso.net/blog/nix-flakes-1-2022-02-21/)
|
- [Nix Flakes: An Introduction](https://xeiaso.net/blog/nix-flakes-1-2022-02-21/)
|
||||||
- [Nix Flakes: Packages and How To Use Them](https://xeiaso.net/blog/nix-flakes-2-2022-02-27/)
|
- [Nix Flakes: Packages and How To Use Them](https://xeiaso.net/blog/nix-flakes-2-2022-02-27/)
|
||||||
- [Nix Flakes: Exposing and using NixOS Modules](https://xeiaso.net/blog/nix-flakes-3-2022-04-07/)
|
- [Nix Flakes: Exposing and using NixOS Modules](https://xeiaso.net/blog/nix-flakes-3-2022-04-07/)
|
||||||
|
|
|
@ -127,6 +127,6 @@ conflicts of interest.
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
These declarations were last updated on **May 5th, 2024**, and are believed to be up-to-date to the current date.
|
These declarations were last updated on **May 5st, 2024**, and are believed to be up-to-date to the current date.
|
||||||
If the bolded date is more than 28 days in the past, feel free to reach out via our
|
If the bolded date is more than 28 days in the past, feel free to reach out via our
|
||||||
[community channels](/community) to request these declarations be updated.
|
[community channels](/community) to request these declarations be updated.
|
||||||
|
|
|
@ -20,11 +20,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720553833,
|
"lastModified": 1722987190,
|
||||||
"narHash": "sha256-IXMiHQMtdShDXcBW95ctA+m5Oq2kLxnBt7WlMxvDQXA=",
|
"narHash": "sha256-68hmex5efCiM2aZlAAEcQgmFI4ZwWt8a80vOeB/5w3A=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "249fbde2a178a2ea2638b65b9ecebd531b338cf9",
|
"rev": "21cc704b5e918c5fbf4f9fff22b4ac2681706d90",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
21
themes/lix/assets/scss/shared/_blockquote.scss
Normal file
21
themes/lix/assets/scss/shared/_blockquote.scss
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
@use 'sass:color';
|
||||||
|
|
||||||
|
$blockquote-y-padding: 0.7rem;
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
border-left-color: desaturate($primary, 20%);
|
||||||
|
border-left-width: 0.4rem;
|
||||||
|
border-left-style: solid;
|
||||||
|
padding-left: 0.5rem;
|
||||||
|
padding-top: $blockquote-y-padding;
|
||||||
|
padding-bottom: $blockquote-y-padding;
|
||||||
|
|
||||||
|
>:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
>:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
12
themes/lix/assets/scss/shared/_code.scss
Normal file
12
themes/lix/assets/scss/shared/_code.scss
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
$code-colour: darken($light, 5%);
|
||||||
|
pre {
|
||||||
|
background-color: $code-colour;
|
||||||
|
padding: 0.8rem;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
}
|
||||||
|
:not(pre)>code {
|
||||||
|
background-color: $code-colour;
|
||||||
|
font-size: 0.85em;
|
||||||
|
padding: 0.2em;
|
||||||
|
border-radius: 0.3em;
|
||||||
|
}
|
10
themes/lix/assets/scss/shared/_type.scss
Normal file
10
themes/lix/assets/scss/shared/_type.scss
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
html {
|
||||||
|
/* The default body text size of 16px is slightly too small. Make it 18px
|
||||||
|
* (relatively, of course, so that people can change their browser settings).
|
||||||
|
*
|
||||||
|
* Doing it this way ensures that the entire type scale aligns with the body
|
||||||
|
* text size rather than being detached from it (and possibly having
|
||||||
|
* too-small headers and similar problems).
|
||||||
|
*/
|
||||||
|
font-size: 112.5%;
|
||||||
|
}
|
|
@ -3,6 +3,9 @@
|
||||||
@import "fonts";
|
@import "fonts";
|
||||||
@import "utilities";
|
@import "utilities";
|
||||||
|
|
||||||
|
@import "type";
|
||||||
|
@import "blockquote";
|
||||||
|
@import "code";
|
||||||
@import "header";
|
@import "header";
|
||||||
@import "footer";
|
@import "footer";
|
||||||
@import "buttons";
|
@import "buttons";
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="row justify-content-center pb-5">
|
<div class="row justify-content-center pb-5">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
{{ with .Title | safeHTML }}
|
{{ with .Title | safeHTML }}
|
||||||
<h2 class="display-1 fw-bold text-center text-primary pb-3">{{ . }}</h2>
|
<h2 class="display-2 fw-bold text-center text-primary pb-3">{{ . }}</h2>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ with .Params.description }}
|
{{ with .Params.description }}
|
||||||
<p class="text-black-61 text-center pb-3">{{ . }}</p>
|
<p class="text-black-61 text-center pb-3">{{ . }}</p>
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="row pb-5">
|
<div class="row pb-5">
|
||||||
<div class="col-12 d-flex justify-content-center">
|
<div class="col-12 d-flex justify-content-center">
|
||||||
<div class="blog-content fs-5">
|
<div class="blog-content">
|
||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
50
themes/lix/layouts/page/quicklinks.html
Normal file
50
themes/lix/layouts/page/quicklinks.html
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<section class="section blog-single py-5">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center pb-5">
|
||||||
|
<div class="col-12">
|
||||||
|
{{ with .Title | safeHTML }}
|
||||||
|
<h2 class="display-2 fw-bold text-center text-primary pb-3">{{ . }}</h2>
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Params.description }}
|
||||||
|
<p class="text-black-61 text-center pb-3">{{ . }}</p>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row pb-5">
|
||||||
|
<div class="col-12 d-flex justify-content-center">
|
||||||
|
<div class="blog-content">
|
||||||
|
{{ .Content }}
|
||||||
|
|
||||||
|
{{ $data := dict }}
|
||||||
|
{{ $path := "links.yaml" }}
|
||||||
|
{{ with .Resources.Get $path }}
|
||||||
|
{{ with . | transform.Unmarshal }}
|
||||||
|
{{ $data = . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ errorf "Unable to get quicklinks %q" $path }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<div class="flex">
|
||||||
|
{{ range $data }}
|
||||||
|
{{ with .url }}
|
||||||
|
<a href="{{ . }}">
|
||||||
|
{{- end -}}
|
||||||
|
<div class="btn btn-primary text-light px-3 mt-2">
|
||||||
|
{{- .label | markdownify -}}
|
||||||
|
</div>
|
||||||
|
{{- with .url -}}
|
||||||
|
</a>
|
||||||
|
{{- end -}}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row pb-5">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
|
@ -6,21 +6,21 @@
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent" aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle navigation">
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent" aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="navbarContent">
|
<nav id="navbarContent" class="collapse navbar-collapse">
|
||||||
<ul class="navbar-nav ms-auto mb-2 mb-xl-0">
|
<ul class="navbar-nav ms-auto mb-2 mb-xl-0">
|
||||||
{{ range .Site.Menus.main }}
|
{{ range .Site.Menus.main }}
|
||||||
<li class="nav-item text-center">
|
<li class="nav-item text-center">
|
||||||
<a class="nav-link text-primary px-4" href="{{ .URL }}">{{ .Name }}</a>
|
<a class="nav-link text-primary px-3" href="{{ .URL }}">{{ .Name }}</a>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="navbar-nav ms-xl-3 mb-2 mb-xl-0">
|
<ul class="navbar-nav ms-xl-3 mb-2 mb-xl-0">
|
||||||
{{ range .Site.Menus.buttons }}
|
{{ range .Site.Menus.buttons }}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link btn btn-primary text-light px-4" href="{{ .URL }}">{{ .Name }}</a>
|
<a class="nav-link btn btn-primary text-light px-3" href="{{ .URL }}">{{ .Name }}</a>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
@ -29,9 +29,12 @@ def go(version: str):
|
||||||
Path('./content/install.md')
|
Path('./content/install.md')
|
||||||
]
|
]
|
||||||
|
|
||||||
|
version_notrail = version.partition('-')[0]
|
||||||
|
|
||||||
substitutions = {
|
substitutions = {
|
||||||
|
'@VERSION_NOTRAIL@': version_notrail,
|
||||||
'@VERSION@': version,
|
'@VERSION@': version,
|
||||||
'@LIX_ARCHIVE_HASH@': get_archive_hash(BASE_URL + f'/lix-project/lix/archive/{version}.tar.gz'),
|
'@LIX_ARCHIVE_HASH@': get_archive_hash(BASE_URL + f'/lix-project/lix/archive/{version_notrail}.tar.gz'),
|
||||||
'@NIXOS_MODULE_HASH@': get_archive_hash(BASE_URL + f'/lix-project/nixos-module/archive/{version}.tar.gz'),
|
'@NIXOS_MODULE_HASH@': get_archive_hash(BASE_URL + f'/lix-project/nixos-module/archive/{version}.tar.gz'),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue