Compare commits
56 commits
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 | ||
jade | 7069486d7f | ||
jade | 39067fc705 | ||
Tom Hubrecht | 9f5e21978a | ||
jade | 7e44247748 | ||
Qyriad | 10e479016a | ||
Qyriad | 8568afd19c | ||
jade | 9e2c54bdb2 | ||
jade | 67cb38d869 | ||
jade | 008f542aff | ||
jade | 9384845c40 | ||
jade | 863e72530f | ||
jade | 18b557c010 | ||
hexchen | 3bdac0f902 | ||
hexchen | d4b0057bef | ||
jade | 204f164488 | ||
jade | d35de33c50 | ||
jade | 2c4e1b905f | ||
jade | 4194388431 | ||
Pol Dellaiera | 92b9c4408b | ||
irenes | 1e9c1e775f | ||
raito | 116e2cbd61 | ||
raito | 50a12f4798 | ||
raito | c533c9eaf8 | ||
Dave Anderson | 91cc630e23 | ||
Dave Anderson | c526b37c6d | ||
Qyriad | 9eeba87c32 | ||
Yaya | 73c79b98f2 | ||
Qyriad | 93047e5a9a | ||
Raphael Das Gupta | cc3d177e76 | ||
Qyriad | b87cc0ff2d | ||
Annika Hannig | 0b198dcaef | ||
Qyriad | 4cceedc66d | ||
Dave Anderson | 6c8c31915d | ||
Qyriad | 8a6aaff86c | ||
Yureka | 844d27440c | ||
Alex Jackson | 51f93203b8 | ||
Qyriad | 8288b491f9 | ||
5b03fa1581 | |||
Val Lorentz | 214d82d475 | ||
Val Lorentz | 54d647ebae |
16
config.yaml
|
@ -46,16 +46,20 @@ menus:
|
|||
url: "/faq"
|
||||
weight: 2
|
||||
|
||||
#- name: "Docs"
|
||||
# url: "/#"
|
||||
# weight: 4
|
||||
|
||||
- name: "Resources"
|
||||
url: "/resources"
|
||||
weight: 5
|
||||
weight: 3
|
||||
|
||||
- name: "Community"
|
||||
url: "/community"
|
||||
weight: 4
|
||||
|
||||
- name: News
|
||||
url: "/blog"
|
||||
weight: 5
|
||||
|
||||
- name: "Docs"
|
||||
url: "https://docs.lix.systems/manual/lix/stable"
|
||||
weight: 6
|
||||
|
||||
- name: "Code"
|
||||
|
@ -67,7 +71,7 @@ menus:
|
|||
weight: 8
|
||||
|
||||
buttons:
|
||||
- name: "Install Lix (beta)"
|
||||
- name: "Install Lix"
|
||||
url: "/install"
|
||||
weight: 5
|
||||
pre: "btn btn-primary text-light"
|
||||
|
|
|
@ -31,7 +31,7 @@ to clusters of critical infrastructure. With this in mind, the Lix team has been
|
|||
provide a collection of necessary improvements over CppNix:
|
||||
|
||||
- **Built for a community, not for a corporation.**
|
||||
Lix is built by a team of open-source volunteers -- and exists to provide a alternative to the
|
||||
Lix is built by a team of open-source volunteers -- and exists to provide an alternative to the
|
||||
commercial interests that have long plagued both upstream CppNix and corporate-authored forks.
|
||||
We're proud to stand by our open [conflict of interest statements](/team#conflict-of-interest-statements),
|
||||
and proud to listen to community voices on issues of sponsorship, direction, and moderation.
|
||||
|
@ -58,7 +58,7 @@ provide a collection of necessary improvements over CppNix:
|
|||
- **A language with room to grow.**
|
||||
Unlike upstream Nix, Lix intends to be an evolving language -- a robust language versioning
|
||||
system will allow the language to grow and evolve without sacrificing backwards-compatibility or correctness.
|
||||
And room to grow means room for **usability and ergonomics improvements** -- both in the langauge and in
|
||||
And room to grow means room for **usability and ergonomics improvements** -- both in the language and in
|
||||
tooling.
|
||||
|
||||
|
||||
|
|
|
@ -1,13 +1,66 @@
|
|||
---
|
||||
title: "Switching To Lix"
|
||||
description: "or: how to make your existing configruation Delicious"
|
||||
description: "or: how to make your existing configuration Delicious"
|
||||
date: "2024-04-27"
|
||||
author: "Lix Team"
|
||||
---
|
||||
|
||||
If you have an existing configuration on **NixOS** or **nix-darwin**, the easiest way
|
||||
to switch to Lix is currently by using our provided _NixOS module_. Fortunately, this
|
||||
usually means adding only a couple of lines to your configuration.
|
||||
<!--
|
||||
HI!!!
|
||||
The file add-to-config.md is generated by update_version.py by
|
||||
substituting values into add-to-config.md.in.
|
||||
|
||||
Please don't edit add-to-config.md directly!
|
||||
-->
|
||||
|
||||
If you have an existing configuration on **NixOS** or **nix-darwin**, there are
|
||||
a couple of ways to switch to Lix, all of which are relatively easy.
|
||||
|
||||
- Using Lix from nixpkgs:
|
||||
- Potentially slightly older version of Lix
|
||||
- Working binary caching
|
||||
- Programs like nix-eval-jobs and colmena still use the default version of
|
||||
Nix (may be unacceptable depending on your use case)
|
||||
- Using the Lix NixOS module:
|
||||
- Fresh version of Lix right out of the freezer
|
||||
- You will be compiling Lix yourself, for now at least
|
||||
- Programs like nix-eval-jobs and colmena have the version of Nix they use
|
||||
overridden by an overlay such that most of the system uses Lix.
|
||||
|
||||
# Using Lix from nixpkgs
|
||||
|
||||
This approach has some caveats: since it is not using an overlay, it does not
|
||||
set the version of Nix depended on by other tools like colmena or
|
||||
nix-eval-jobs. Consequently, those tools will be using whichever version of
|
||||
CppNix is default in nixpkgs, likely leading to an inconsistent experience. It
|
||||
is, however, easy, and it does not take the few minutes to compile Lix from
|
||||
source.
|
||||
|
||||
Add the following code to your NixOS configuration:
|
||||
|
||||
```nix
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
nix.package = pkgs.lix;
|
||||
}
|
||||
```
|
||||
|
||||
That's it, you're done.
|
||||
|
||||
You can verify that it works by running the following command:
|
||||
|
||||
```sh
|
||||
$ nix --version
|
||||
nix (Lix, like Nix) 2.91.1
|
||||
```
|
||||
|
||||
# Using the Lix NixOS module
|
||||
|
||||
The Lix NixOS module is the way to get the most consistent experience using
|
||||
Lix, and to have a system that has Lix as the default Nix implementation
|
||||
wherever possible by using an overlay to replace `pkgs.nix`. It will result in
|
||||
building Lix from source, which takes a few minutes on every update, which is a
|
||||
perfect time to get up, get some water, and stretch for a bit.
|
||||
|
||||
## Flake-based Configurations
|
||||
|
||||
|
@ -22,13 +75,8 @@ Adding Lix to a flake-based configuration is relatively simple. First, add the L
|
|||
# Note that this assumes you have a flake-input called nixpkgs,
|
||||
# which is often the case. If you've named it something else,
|
||||
# you'll need to change the `nixpkgs` below.
|
||||
lix = {
|
||||
url = "git+https://git@git.lix.systems/lix-project/lix?ref=refs/tags/2.90-beta.1";
|
||||
flake = false;
|
||||
};
|
||||
lix-module = {
|
||||
url = "git+https://git.lix.systems/lix-project/nixos-module";
|
||||
inputs.lix.follows = "lix";
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
|
@ -78,12 +126,17 @@ Add the Lix _NixOS Module_ to your configuration:
|
|||
}
|
||||
```
|
||||
|
||||
<!--
|
||||
FIXME: the binary cache doesn't do much good given that everyone is running a
|
||||
different nixpkgs than Lix is actually cached with during the release process.
|
||||
We need a hydra to be able to fix that.
|
||||
|
||||
Finally, if you'd prefer not to build Lix yourself, you can add our binary cache.
|
||||
Add the following to any NixOS module in your configuration (e.g. `configuration.nix`):
|
||||
|
||||
```nix
|
||||
{
|
||||
nix.settings.extra-substituters = [
|
||||
nix.settings.substituters = [
|
||||
"https://cache.lix.systems"
|
||||
];
|
||||
|
||||
|
@ -93,12 +146,14 @@ Add the following to any NixOS module in your configuration (e.g. `configuration
|
|||
}
|
||||
```
|
||||
|
||||
-->
|
||||
|
||||
Rebuild and switch into your new system (either using `nixos-rebuild` or `darwin-rebuild`).
|
||||
You should now be using Lix! You can verify this by asking the `nix` command to report its version:
|
||||
|
||||
```sh
|
||||
$ nix --version
|
||||
nix (Lix, like Nix) 2.90.0-beta.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
|
||||
|
@ -113,12 +168,6 @@ Lix release tarball, and then add it to your `configuration.nix`.
|
|||
Open your `/etc/nixos/configuration.nix` in the editor of your choice. Find the `imports`
|
||||
section, and add the line provided in the configuration
|
||||
|
||||
<mark>
|
||||
<b>This section is currently pending on a quick update.</b>
|
||||
</mark>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
```nix
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
|
@ -126,20 +175,30 @@ section, and add the line provided in the configuration
|
|||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
|
||||
# This is the core line -- it pulls down the Lix module and
|
||||
# includes it in your configuration. It looks much nicer with a let
|
||||
# binding -- but for clarity, we'll leave that as an exercise for the
|
||||
# reader. :)
|
||||
# This includes the Lix NixOS module in your configuration along with the
|
||||
# matching version of Lix itself.
|
||||
#
|
||||
# Note that the tag (e.g. v2.90) in the URL here is what determines
|
||||
# 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):
|
||||
# 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.91.1) in the URL here is what determines
|
||||
# which version of Lix you'll wind up with.
|
||||
(import
|
||||
(
|
||||
(fetchTarball { url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"; }) + "/module.nix"
|
||||
)
|
||||
{
|
||||
lix = fetchTarball { url = "https://git.lix.systems/lix-project/lix/archive/2.90-beta.1.tar.gz"; };
|
||||
}
|
||||
(let
|
||||
module = fetchTarball {
|
||||
name = "source";
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz";
|
||||
sha256 = "sha256-DN5/166jhiiAW0Uw6nueXaGTueVxhfZISAkoxasmz/g=";
|
||||
};
|
||||
lixSrc = fetchTarball {
|
||||
name = "source";
|
||||
url = "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz";
|
||||
sha256 = "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=";
|
||||
};
|
||||
# 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
|
||||
# similar pinning tools.
|
||||
in import "${module}/module.nix" { lix = lixSrc; }
|
||||
)
|
||||
];
|
||||
|
||||
|
@ -147,12 +206,15 @@ section, and add the line provided in the configuration
|
|||
}
|
||||
```
|
||||
|
||||
<!--
|
||||
FIXME: as above, doesn't work, we should not recommend it.
|
||||
|
||||
Finally, if you'd prefer not to build Lix yourself, you can add our binary cache.
|
||||
Add the following to any NixOS module in your configuration (e.g. `configuration.nix`):
|
||||
|
||||
```nix
|
||||
{
|
||||
nix.settings.extra-substituters = [
|
||||
nix.settings.substituters = [
|
||||
"https://cache.lix.systems"
|
||||
];
|
||||
|
||||
|
@ -161,13 +223,14 @@ Add the following to any NixOS module in your configuration (e.g. `configuration
|
|||
];
|
||||
}
|
||||
```
|
||||
-->
|
||||
|
||||
Rebuild and switch into your new system (either using `nixos-rebuild` or `darwin-rebuild`).
|
||||
You should now be using Lix! You can verify this by asking the `nix` command to report its version:
|
||||
|
||||
```sh
|
||||
$ nix --version
|
||||
nix (Lix, like Nix) 2.90.0-beta.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
|
||||
|
|
246
content/add-to-config.md.in
Normal file
|
@ -0,0 +1,246 @@
|
|||
---
|
||||
title: "Switching To Lix"
|
||||
description: "or: how to make your existing configuration Delicious"
|
||||
date: "2024-04-27"
|
||||
author: "Lix Team"
|
||||
---
|
||||
|
||||
<!--
|
||||
HI!!!
|
||||
The file add-to-config.md is generated by update_version.py by
|
||||
substituting values into add-to-config.md.in.
|
||||
|
||||
Please don't edit add-to-config.md directly!
|
||||
-->
|
||||
|
||||
If you have an existing configuration on **NixOS** or **nix-darwin**, there are
|
||||
a couple of ways to switch to Lix, all of which are relatively easy.
|
||||
|
||||
- Using Lix from nixpkgs:
|
||||
- Potentially slightly older version of Lix
|
||||
- Working binary caching
|
||||
- Programs like nix-eval-jobs and colmena still use the default version of
|
||||
Nix (may be unacceptable depending on your use case)
|
||||
- Using the Lix NixOS module:
|
||||
- Fresh version of Lix right out of the freezer
|
||||
- You will be compiling Lix yourself, for now at least
|
||||
- Programs like nix-eval-jobs and colmena have the version of Nix they use
|
||||
overridden by an overlay such that most of the system uses Lix.
|
||||
|
||||
# Using Lix from nixpkgs
|
||||
|
||||
This approach has some caveats: since it is not using an overlay, it does not
|
||||
set the version of Nix depended on by other tools like colmena or
|
||||
nix-eval-jobs. Consequently, those tools will be using whichever version of
|
||||
CppNix is default in nixpkgs, likely leading to an inconsistent experience. It
|
||||
is, however, easy, and it does not take the few minutes to compile Lix from
|
||||
source.
|
||||
|
||||
Add the following code to your NixOS configuration:
|
||||
|
||||
```nix
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
nix.package = pkgs.lix;
|
||||
}
|
||||
```
|
||||
|
||||
That's it, you're done.
|
||||
|
||||
You can verify that it works by running the following command:
|
||||
|
||||
```sh
|
||||
$ nix --version
|
||||
nix (Lix, like Nix) @VERSION_NOTRAIL@
|
||||
```
|
||||
|
||||
# Using the Lix NixOS module
|
||||
|
||||
The Lix NixOS module is the way to get the most consistent experience using
|
||||
Lix, and to have a system that has Lix as the default Nix implementation
|
||||
wherever possible by using an overlay to replace `pkgs.nix`. It will result in
|
||||
building Lix from source, which takes a few minutes on every update, which is a
|
||||
perfect time to get up, get some water, and stretch for a bit.
|
||||
|
||||
## Flake-based Configurations
|
||||
|
||||
Adding Lix to a flake-based configuration is relatively simple. First, add the Lix module to your _flake inputs_:
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
|
||||
# Add this section to your flake inputs!
|
||||
#
|
||||
# Note that this assumes you have a flake-input called nixpkgs,
|
||||
# which is often the case. If you've named it something else,
|
||||
# you'll need to change the `nixpkgs` below.
|
||||
lix-module = {
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/@VERSION@.tar.gz";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
# <rest of configuration omitted>
|
||||
}
|
||||
```
|
||||
|
||||
Next, add the `lix-module` as one of the arguments to your output function:
|
||||
|
||||
```nix
|
||||
{
|
||||
# <configuration above omitted>
|
||||
|
||||
# Add the `lix-module` argument to your output function, as below:
|
||||
outputs = {nixpkgs, lix-module, ...}: {
|
||||
# <rest of configuration omitted>
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Add the Lix _NixOS Module_ to your configuration:
|
||||
|
||||
```nix
|
||||
{
|
||||
# <configuration above omitted>
|
||||
|
||||
# Add the `lix-module` argument to your output function, as below:
|
||||
outputs = {nixpkgs, lix-module, ...}: {
|
||||
|
||||
# The configuration here is an example; it will look slightly different
|
||||
# based on your platform (NixOS, nix-darwin) and architecture.
|
||||
nixosConfigurations.your-box = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux"
|
||||
|
||||
modules = [
|
||||
|
||||
# This is the important part -- add this line to your module list!
|
||||
lix-module.nixosModules.default
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
# <configuration below omitted>
|
||||
}
|
||||
```
|
||||
|
||||
<!--
|
||||
FIXME: the binary cache doesn't do much good given that everyone is running a
|
||||
different nixpkgs than Lix is actually cached with during the release process.
|
||||
We need a hydra to be able to fix that.
|
||||
|
||||
Finally, if you'd prefer not to build Lix yourself, you can add our binary cache.
|
||||
Add the following to any NixOS module in your configuration (e.g. `configuration.nix`):
|
||||
|
||||
```nix
|
||||
{
|
||||
nix.settings.substituters = [
|
||||
"https://cache.lix.systems"
|
||||
];
|
||||
|
||||
nix.settings.trusted-public-keys = [
|
||||
"cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
-->
|
||||
|
||||
Rebuild and switch into your new system (either using `nixos-rebuild` or `darwin-rebuild`).
|
||||
You should now be using Lix! You can verify this by asking the `nix` command to report its version:
|
||||
|
||||
```sh
|
||||
$ 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
|
||||
great time to check out some of the [community's resources on Nix](/resources).
|
||||
|
||||
|
||||
## Non-Flake Configurations
|
||||
|
||||
If you're not using flakes, you can set up your configuration to automatically pull down a
|
||||
Lix release tarball, and then add it to your `configuration.nix`.
|
||||
|
||||
Open your `/etc/nixos/configuration.nix` in the editor of your choice. Find the `imports`
|
||||
section, and add the line provided in the configuration
|
||||
|
||||
```nix
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
|
||||
# This includes the Lix NixOS module in your configuration along with the
|
||||
# matching version of Lix itself.
|
||||
#
|
||||
# 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):
|
||||
# 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_NOTRAIL@) in the URL here is what determines
|
||||
# which version of Lix you'll wind up with.
|
||||
(let
|
||||
module = fetchTarball {
|
||||
name = "source";
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/@VERSION@.tar.gz";
|
||||
sha256 = "@NIXOS_MODULE_HASH@";
|
||||
};
|
||||
lixSrc = fetchTarball {
|
||||
name = "source";
|
||||
url = "https://git.lix.systems/lix-project/lix/archive/@VERSION_NOTRAIL@.tar.gz";
|
||||
sha256 = "@LIX_ARCHIVE_HASH@";
|
||||
};
|
||||
# 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
|
||||
# similar pinning tools.
|
||||
in import "${module}/module.nix" { lix = lixSrc; }
|
||||
)
|
||||
];
|
||||
|
||||
# <configuration below omitted>
|
||||
}
|
||||
```
|
||||
|
||||
<!--
|
||||
FIXME: as above, doesn't work, we should not recommend it.
|
||||
|
||||
Finally, if you'd prefer not to build Lix yourself, you can add our binary cache.
|
||||
Add the following to any NixOS module in your configuration (e.g. `configuration.nix`):
|
||||
|
||||
```nix
|
||||
{
|
||||
nix.settings.substituters = [
|
||||
"https://cache.lix.systems"
|
||||
];
|
||||
|
||||
nix.settings.trusted-public-keys = [
|
||||
"cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
||||
];
|
||||
}
|
||||
```
|
||||
-->
|
||||
|
||||
Rebuild and switch into your new system (either using `nixos-rebuild` or `darwin-rebuild`).
|
||||
You should now be using Lix! You can verify this by asking the `nix` command to report its version:
|
||||
|
||||
```sh
|
||||
$ 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
|
||||
great time to check out some of the [community's resources on Nix](/resources).
|
||||
|
||||
## Having Trouble?
|
||||
|
||||
**One quick thing to check:** have you set `nix.package` anywhere in your configuration?
|
||||
If so, your configuration option will override the Lix module. You'll want to remove it, first --
|
||||
or, if you're feeling savvy, point it to the provided Lix package.
|
||||
|
||||
**Otherwise:** If you're having difficulty installing Lix, don't panic! Hop on over to our
|
||||
[community page](/community), and check out the various ways to find help.
|
229
content/blog/2024-07-10-lix-2.90-release.md
Normal file
|
@ -0,0 +1,229 @@
|
|||
+++
|
||||
title = "Announcing Lix 2.90 \"Vanilla Ice Cream\""
|
||||
author = "Lix Team"
|
||||
date = "2024-07-10"
|
||||
+++
|
||||
|
||||
We at the Lix team are proud to announce our first release, version 2.90
|
||||
"Vanilla Ice Cream". This release focuses on foundations and reliability, but
|
||||
nevertheless contains several small but exciting user-facing features that are
|
||||
exclusive to Lix.
|
||||
|
||||
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.
|
||||
|
||||
Lix forks from CppNix version 2.18, which is the default version of Nix in
|
||||
NixOS 23.11 and 24.05. It includes backports for most bug fixes in later versions of
|
||||
CppNix, as well as various reliability improvements, and many improvements to user
|
||||
experience. Our goal with Lix 2.90 is to create a better Nix 2.18: faster, more
|
||||
user friendly, with fewer bugs, and fully compatible with previously-valid
|
||||
Nix code including flakes.
|
||||
|
||||
Some highlights of this release include:
|
||||
|
||||
- `:doc` in `nix repl` now works on lambdas, in addition to built-in functions
|
||||
as before, thanks to [Lunaphied] and [jade]:
|
||||
|
||||
```
|
||||
dev/nixpkgs » nix repl -f .
|
||||
Lix 2.90.0-lixpre20240520-992c63f
|
||||
Type :? for help.
|
||||
Loading installable ''...
|
||||
Added 21430 variables.
|
||||
nix-repl> :doc lib.forEach
|
||||
Synopsis: func = xs: f: ...
|
||||
|
||||
| Apply the function to each element in the list.
|
||||
| Same as `map`, but arguments flipped.
|
||||
|
|
||||
| Inputs
|
||||
|
|
||||
| `xs`
|
||||
|
|
||||
| : 1\. Function argument
|
||||
|
|
||||
| `f`
|
||||
|
|
||||
| : 2\. Function argument
|
||||
|
|
||||
| Type
|
||||
|
|
||||
| ``
|
||||
| forEach :: [a] -> (a -> b) -> [b]
|
||||
| ``
|
||||
|
|
||||
| Examples
|
||||
| :::{.example}
|
||||
|
||||
# lib.lists.forEach usage example
|
||||
|
||||
| ``nix
|
||||
| forEach [ 1 2 ] (x:
|
||||
| toString x
|
||||
| )
|
||||
| => [ "1" "2" ]
|
||||
| ``
|
||||
|
|
||||
| :::
|
||||
|
||||
/home/jade/dev/nixpkgs/lib/lists.nix:77
|
||||
|
||||
```
|
||||
- `nix repl` supports creating shortcuts using the [`repl-overlays`][repl-overlays]
|
||||
setting, thanks to [wiggles]. For example, one can create a shortcut to
|
||||
`legacyPackages.${currentSystem}` with the following repl overlay, configured
|
||||
as a file in the `repl-overlays` setting in `~/.config/nix/nix.conf`:
|
||||
|
||||
```nix
|
||||
{ currentSystem, ...}: final: prev: let
|
||||
optionalAttrs = predicate: attrs:
|
||||
if predicate
|
||||
then attrs
|
||||
else {};
|
||||
in
|
||||
optionalAttrs (prev ? legacyPackages && prev.legacyPackages ? ${currentSystem})
|
||||
{
|
||||
pkgs = prev.legacyPackages.${currentSystem};
|
||||
}
|
||||
```
|
||||
|
||||
Then:
|
||||
|
||||
```
|
||||
~ » nix repl nixpkgs
|
||||
Lix 2.90.0-lixpre20240520-992c63f
|
||||
Type :? for help.
|
||||
Loading installable 'flake:nixpkgs#'...
|
||||
Added 5 variables.
|
||||
Loading 'repl-overlays'...
|
||||
Added 6 variables.
|
||||
nix-repl> pkgs.hello
|
||||
«derivation /nix/store/w0hjp1fnvyf1z30s29fj4im8c7bxqrql-hello-2.12.1.drv»
|
||||
```
|
||||
- Evaluation is 5-20% faster than 2.18, depending on which benchmark is in use,
|
||||
thanks to [eldritch horrors].
|
||||
- Various user experience issues have been fixed. For example:
|
||||
- Error reporting has been fixed to be more accurate in several cases thanks
|
||||
to [wiggles], and errors give more details to diagnose them.
|
||||
|
||||
For instance, type errors now give the actual value that caused the error.
|
||||
- `nix flake lock --update-input nixpkgs` is now the much more reasonable
|
||||
`nix flake update nixpkgs`.
|
||||
- `nix build -E` is now an alias for `nix build --expr`, mirroring `nix-build
|
||||
-E`.
|
||||
- Several very silly `--debugger` bugs that one runs into in normal usage
|
||||
have been fixed thanks to [wiggles], so the debugger actually works properly
|
||||
without a mental index of all the bugs in it.
|
||||
- The Lix evaluation cache no longer caches failures, so "cached failure" is an
|
||||
error of the past.
|
||||
- The REPL value printer now intelligently chooses whether to print on one
|
||||
line or multiple lines, rather than putting everything on one very long
|
||||
line.
|
||||
- Various failures that were silent in the past are no longer silent:
|
||||
- The Lix daemon warns when it rejects a setting from a client that requires
|
||||
being a trusted user, instead of silently ignoring it.
|
||||
- Remote builds failing to connect to a builder now print the error.
|
||||
- Crashing the daemon now indicates that is what probably happened.
|
||||
- Lix now generally crashes much harder in the case of bugs, such that bugs
|
||||
are easier to find and fix.
|
||||
- Various errors have been made more specific, like "path is invalid".
|
||||
- Several hauntings have been exorcised from the codebase:
|
||||
- Flake input overrides like `foo.inputs.bar.inputs.nixpkgs` now work as
|
||||
documented rather than being ignored.
|
||||
- Store path names starting with `.` are now permitted, fixing some home-manager
|
||||
issues.
|
||||
- A crash when running patched kernels with non-default schedulers has been
|
||||
fixed.
|
||||
- Breakage inside the sandbox when running on systems with unprivileged user
|
||||
namespaces disabled has been fixed.
|
||||
- Various format string crashes have been fixed.
|
||||
- `nix doctor` now has correct output of client trustedness.
|
||||
|
||||
[wiggles]: https://github.com/9999years
|
||||
[eldritch horrors]: https://git.lix.systems/pennae
|
||||
[Lunaphied]: https://github.com/lunaphied
|
||||
[jade]: https://jade.fyi
|
||||
|
||||
[repl-overlays]: https://docs.lix.systems/manual/lix/2.90/command-ref/conf-file.html#conf-repl-overlays
|
||||
|
||||
A lot of internal stability work and development process work has gone into
|
||||
this release. For instance:
|
||||
- Lix builds exclusively with the Meson build system. The historical CppNix
|
||||
Make-based build system has been removed altogether. This improves
|
||||
compile times as well as various aspects of the developer experience: the `clangd`
|
||||
language server just works with no configuration now, for instance.
|
||||
- Lix has the beginnings of the infrastructure to do linting of its C++ code and work on
|
||||
modernization with automated tools.
|
||||
- Lix enforces various aspects of [its
|
||||
styleguide][styleguide] with `pre-commit` hooks.
|
||||
- A lot of onboarding and project planning information has been written down in
|
||||
the [Wiki]. In general we strive to be transparent with our plans and
|
||||
priorities, and to communicate them clearly.
|
||||
- We have completed a release automation project, which should let us release more
|
||||
frequently given that our `main` is more or less releaseable on any given day.
|
||||
- We have built out a lot of infrastructure which we own end-to-end, allowing
|
||||
us to quickly improve on pain points in the project ourselves.
|
||||
- We have [Single Sign-On](https://identity.lix.systems) permitting us to
|
||||
easily deploy more services that cleanly integrate together.
|
||||
- We use [Gerrit](https://gerrit.lix.systems) for reviews, which allows us to
|
||||
focus on providing prompt and high quality patch reviews by making it easy
|
||||
to review changes piece by piece, with CI testing of every commit.
|
||||
|
||||
Gerrit is one of our secret superpowers in shipping correct code, since it,
|
||||
by its structure, enforces good commit history, reviewable code, and
|
||||
incremental changes.
|
||||
- We use [Forgejo](https://git.lix.systems) for code hosting and issue
|
||||
tracking, which we have customised to integrate natively with Gerrit and
|
||||
to work natively with Nix flakes for locking tarballs.
|
||||
- We have a [Wiki] with design documents, styleguide, and other project
|
||||
organisational information.
|
||||
|
||||
[Wiki]: https://wiki.lix.systems
|
||||
|
||||
[styleguide]: https://wiki.lix.systems/books/lix-contributors/chapter/style-guide
|
||||
|
||||
For a more comprehensive list of the changes in this release, see
|
||||
[the release notes][release-notes].
|
||||
|
||||
[release-notes]: https://docs.lix.systems/manual/lix/2.90/release-notes/rl-2.90.html
|
||||
|
||||
The Lix team as well as several dozen beta testers have been running a
|
||||
development release of Lix 2.90 in production every day for a couple of months,
|
||||
and we do not expect any significant regressions compared to Nix 2.18. However,
|
||||
if you find a bug or suspicious behaviour in Lix, feel free to mention it on
|
||||
Matrix or [file a bug on Forgejo][bugs]. If you would like to participate in
|
||||
beta testing of future Lix versions, we have a [guide on the wiki][beta-guide]
|
||||
and a [Matrix channel][beta-channel] for running `main`.
|
||||
|
||||
[bugs]: https://git.lix.systems/lix-project/lix/issues
|
||||
[beta-guide]: https://wiki.lix.systems/books/lix-contributors/page/lix-beta-guide
|
||||
[beta-channel]: https://matrix.to/#/#open-beta:lix.systems
|
||||
|
||||
We would especially like to thank all the following groups for their hard work
|
||||
and trust in contributing to this release:
|
||||
- The several dozen Lix beta testers who have been running Lix `main` in
|
||||
production for over a month, and who have helped us fix the various
|
||||
longstanding CppNix bugs they have had stuck in their craw as well as put up
|
||||
with our work-in-progress infrastructure as we built it out.
|
||||
- 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 people new to Nix who have trusted us by running experimental
|
||||
versions of Lix and given us feedback.
|
||||
- The long time CppNix contributors who came to Lix and helped out with fixing
|
||||
many issues.
|
||||
- The CppNix contributors and CppNix team, without whom we would not have this
|
||||
software, and who wrote many of the bug fixes we backported to Lix from CppNix
|
||||
versions > 2.18.
|
||||
- Everyone else who has worked with us on starting to make this dream a
|
||||
reality.
|
||||
|
||||
We are very proud of what everyone has achieved with this release since we
|
||||
begun in late February 2024, and we are just getting started. We are looking
|
||||
forward to continue working together with everyone to build a better foundation
|
||||
for the future evolution of Nix.
|
||||
|
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
|
@ -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
|
6
content/blog/_index.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
+++
|
||||
aliases = ["posts", "articles", "blog", "news"]
|
||||
title = "News"
|
||||
author = "Lix Team"
|
||||
tags = ["index"]
|
||||
+++
|
|
@ -44,8 +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:
|
||||
|
||||
- ktemkin (@ktemkin:katesiria.org)
|
||||
- jade (@jade_:matrix.org)
|
||||
<!-- throw a die and insert at random position -->
|
||||
- qyriad (@qyriad:katesiria.org)
|
||||
- piegames (@piegames:flausch.social)
|
||||
- ktemkin (@ktemkin:katesiria.org)
|
||||
- hexchen (@hexchen:colon.at)
|
||||
- lunaphied (@lunaphied:lunaphied.me)
|
||||
- k900 (@k900:0upti.me)
|
||||
- jade (@jade_:matrix.org)
|
||||
|
|
|
@ -5,6 +5,14 @@ date: "2024-04-27"
|
|||
author: "Lix Team"
|
||||
---
|
||||
|
||||
<!--
|
||||
HI!!!
|
||||
The file install.md is generated by update_version.py by
|
||||
substituting values into install.md.in.
|
||||
|
||||
Please don't edit install.md directly!
|
||||
-->
|
||||
|
||||
Whether you're a new or returning user, **we're thrilled you've decided to pick up Lix!**
|
||||
|
||||
Lix works out-of-the-box on most Linux and MacOS systems, including with system management tools
|
||||
|
@ -20,13 +28,11 @@ first, to get familiar with how Nix works.
|
|||
|
||||
If you haven't already installed NixOS, do so using any upstream
|
||||
[install image](https://nixos.org/download/#NixOS) and the instructions in the
|
||||
[NixOS Manual](https://nixos.org/manual/nixos/stable/#sec-installation). Then, follow
|
||||
the instructions for either:
|
||||
[NixOS Manual](https://nixos.org/manual/nixos/stable/#sec-installation).
|
||||
|
||||
- [flake-based configurations](/add-to-config#flake-based-configurations); or
|
||||
- [non-flake configurations](/add-to-config#non-flake-configurations)
|
||||
|
||||
depending on how you prefer to configure your system.
|
||||
Then, follow the [instructions to add Lix to your
|
||||
configuration](/add-to-config). Both flake-based and non-flake-based
|
||||
configurations are fully supported.
|
||||
|
||||
|
||||
## On an Existing `nix-darwin` Install
|
||||
|
@ -63,7 +69,7 @@ great time to check out some of the [community's resources on Nix](/resources).
|
|||
|
||||
### 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.
|
||||
|
||||
Thanks to Nix, we can actually ask Lix to upgrade your system directly. Run the following command:
|
||||
|
@ -72,7 +78,7 @@ Thanks to Nix, we can actually ask Lix to upgrade your system directly. Run the
|
|||
sudo --preserve-env=PATH nix run \
|
||||
--experimental-features "nix-command flakes" \
|
||||
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" \
|
||||
'git+https://git@git.lix.systems/lix-project/lix?ref=refs/tags/2.90-beta.1' -- \
|
||||
'git+https://git.lix.systems/lix-project/lix?ref=refs/tags/2.91.1' -- \
|
||||
upgrade-nix \
|
||||
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
||||
```
|
||||
|
@ -82,7 +88,7 @@ to report its version:
|
|||
|
||||
```sh
|
||||
$ nix --version
|
||||
nix (Lix, like Nix) 2.90.0-beta.1
|
||||
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
|
||||
|
@ -96,4 +102,4 @@ If you're having difficulty installing Lix, don't panic! Hop on over to our
|
|||
## Feedback?
|
||||
|
||||
If you have thoughts on these instructions, feel free to drop by our [community](/community),
|
||||
or to [make a pull request to our website](git@git.lix.systems:lix-project/lix-website.git)!
|
||||
or to [make a pull request to our website](https://git.lix.systems/lix-project/lix-website/pulls)!
|
||||
|
|
105
content/install.md.in
Normal file
|
@ -0,0 +1,105 @@
|
|||
---
|
||||
title: "Installing Lix"
|
||||
description: "or: how to make your configuration Delicious"
|
||||
date: "2024-04-27"
|
||||
author: "Lix Team"
|
||||
---
|
||||
|
||||
<!--
|
||||
HI!!!
|
||||
The file install.md is generated by update_version.py by
|
||||
substituting values into install.md.in.
|
||||
|
||||
Please don't edit install.md directly!
|
||||
-->
|
||||
|
||||
Whether you're a new or returning user, **we're thrilled you've decided to pick up Lix!**
|
||||
|
||||
Lix works out-of-the-box on most Linux and MacOS systems, including with system management tools
|
||||
such as [home-manager](https://github.com/nix-community/home-manager) and
|
||||
[nix-darwin](https://github.com/LnL7/nix-darwin) -- but, like any Nix-based system, some Nix background
|
||||
knowledge is recommended before installation.
|
||||
|
||||
If you're new to the Nix ecosystem, you may want to check out some [community resources](/resources)
|
||||
first, to get familiar with how Nix works.
|
||||
|
||||
|
||||
## On NixOS
|
||||
|
||||
If you haven't already installed NixOS, do so using any upstream
|
||||
[install image](https://nixos.org/download/#NixOS) and the instructions in the
|
||||
[NixOS Manual](https://nixos.org/manual/nixos/stable/#sec-installation).
|
||||
|
||||
Then, follow the [instructions to add Lix to your
|
||||
configuration](/add-to-config). Both flake-based and non-flake-based
|
||||
configurations are fully supported.
|
||||
|
||||
|
||||
## On an Existing `nix-darwin` Install
|
||||
|
||||
If you already have a [nix-darwin](https://github.com/LnL7/nix-darwin) installation, you
|
||||
can use the same instructions as installing on a NixOS-based system. Follow the instructions
|
||||
for either:
|
||||
|
||||
- [flake-based configurations](/add-to-config#flake-based-configurations); or
|
||||
- [non-flake configurations](/add-to-config#non-flake-configurations)
|
||||
|
||||
depending on how you prefer to configure your system.
|
||||
|
||||
|
||||
## On Any Other Linux/MacOS System
|
||||
|
||||
You can either perform a **new install**, or choose to
|
||||
**upgrade an existing install** to Lix.
|
||||
|
||||
### New Installs
|
||||
|
||||
The easiest way to install Lix is to use the [Lix Installer](https://git.lix.systems/lix-project/lix-installer)[^1].
|
||||
Open a terminal, and run the following command:
|
||||
|
||||
```sh
|
||||
curl -sSf -L https://install.lix.systems/lix | sh -s -- install
|
||||
```
|
||||
|
||||
The installer will guide you through installing Lix -- and once it's finished,
|
||||
you'll have a full, working installation. If you're not sure what to do, now is a
|
||||
great time to check out some of the [community's resources on Nix](/resources).
|
||||
|
||||
[^1]: a customized variant of the [Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer).
|
||||
|
||||
### Existing Installs
|
||||
|
||||
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.
|
||||
|
||||
Thanks to Nix, we can actually ask Lix to upgrade your system directly. Run the following command:
|
||||
|
||||
```sh
|
||||
sudo --preserve-env=PATH nix run \
|
||||
--experimental-features "nix-command flakes" \
|
||||
--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_NOTRAIL@' -- \
|
||||
upgrade-nix \
|
||||
--extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
||||
```
|
||||
|
||||
You should now have upgraded to Lix! You can verify this by asking the `nix` command
|
||||
to report its version:
|
||||
|
||||
```sh
|
||||
$ 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
|
||||
great time to check out some of the [community's resources on Nix](/resources).
|
||||
|
||||
## Having Trouble?
|
||||
|
||||
If you're having difficulty installing Lix, don't panic! Hop on over to our
|
||||
[community page](/community), and check out the various ways to find help.
|
||||
|
||||
## Feedback?
|
||||
|
||||
If you have thoughts on these instructions, feel free to drop by our [community](/community),
|
||||
or to [make a pull request to our website](https://git.lix.systems/lix-project/lix-website/pulls)!
|
|
@ -1,6 +0,0 @@
|
|||
+++
|
||||
aliases = ["posts", "articles", "blog", "showcase", "docs"]
|
||||
title = "Posts"
|
||||
author = "Hugo Authors"
|
||||
tags = ["index"]
|
||||
+++
|
|
@ -1,46 +0,0 @@
|
|||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Emoji Support"
|
||||
date = "2019-03-05"
|
||||
description = "Guide to emoji usage in Hugo"
|
||||
tags = [
|
||||
"emoji",
|
||||
]
|
||||
+++
|
||||
|
||||
Emoji can be enabled in a Hugo project in a number of ways.
|
||||
<!--more-->
|
||||
The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).
|
||||
|
||||
To enable emoji globally, set `enableEmoji` to `true` in your site's [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g.
|
||||
|
||||
<p><span class="nowrap"><span class="emojify">🙈</span> <code>:see_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙉</span> <code>:hear_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙊</span> <code>:speak_no_evil:</code></span></p>
|
||||
<br>
|
||||
|
||||
The [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) is a useful reference for emoji shorthand codes.
|
||||
|
||||
***
|
||||
|
||||
**N.B.** The above steps enable Unicode Standard emoji characters and sequences in Hugo, however the rendering of these glyphs depends on the browser and the platform. To style the emoji you can either use a third party emoji font or a font stack; e.g.
|
||||
|
||||
{{< highlight html >}}
|
||||
.emoji {
|
||||
font-family: Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols;
|
||||
}
|
||||
{{< /highlight >}}
|
||||
|
||||
{{< css.inline >}}
|
||||
<style>
|
||||
.emojify {
|
||||
font-family: Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols;
|
||||
font-size: 2rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
@media screen and (max-width:650px) {
|
||||
.nowrap {
|
||||
display: block;
|
||||
margin: 25px 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
{{< /css.inline >}}
|
|
@ -1,148 +0,0 @@
|
|||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Markdown Syntax Guide"
|
||||
date = "2019-03-11"
|
||||
description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
|
||||
tags = [
|
||||
"markdown",
|
||||
"css",
|
||||
"html",
|
||||
]
|
||||
categories = [
|
||||
"themes",
|
||||
"syntax",
|
||||
]
|
||||
series = ["Themes Guide"]
|
||||
aliases = ["migrate-from-jekyl"]
|
||||
+++
|
||||
|
||||
This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
|
||||
<!--more-->
|
||||
|
||||
## Headings
|
||||
|
||||
The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
|
||||
|
||||
# H1
|
||||
## H2
|
||||
### H3
|
||||
#### H4
|
||||
##### H5
|
||||
###### H6
|
||||
|
||||
## Paragraph
|
||||
|
||||
Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
|
||||
|
||||
Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
|
||||
|
||||
## Blockquotes
|
||||
|
||||
The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
|
||||
|
||||
#### Blockquote without attribution
|
||||
|
||||
> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
|
||||
> **Note** that you can use *Markdown syntax* within a blockquote.
|
||||
|
||||
#### Blockquote with attribution
|
||||
|
||||
> Don't communicate by sharing memory, share memory by communicating.<br>
|
||||
> — <cite>Rob Pike[^1]</cite>
|
||||
|
||||
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
|
||||
|
||||
## Tables
|
||||
|
||||
Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
|
||||
|
||||
Name | Age
|
||||
--------|------
|
||||
Bob | 27
|
||||
Alice | 23
|
||||
|
||||
#### Inline Markdown within tables
|
||||
|
||||
| Italics | Bold | Code |
|
||||
| -------- | -------- | ------ |
|
||||
| *italics* | **bold** | `code` |
|
||||
|
||||
## Code Blocks
|
||||
|
||||
#### Code block with backticks
|
||||
|
||||
```html
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
#### Code block indented with four spaces
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
#### Code block with Hugo's internal highlight shortcode
|
||||
{{< highlight html >}}
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
{{< /highlight >}}
|
||||
|
||||
## List Types
|
||||
|
||||
#### Ordered List
|
||||
|
||||
1. First item
|
||||
2. Second item
|
||||
3. Third item
|
||||
|
||||
#### Unordered List
|
||||
|
||||
* List item
|
||||
* Another item
|
||||
* And another item
|
||||
|
||||
#### Nested list
|
||||
|
||||
* Fruit
|
||||
* Apple
|
||||
* Orange
|
||||
* Banana
|
||||
* Dairy
|
||||
* Milk
|
||||
* Cheese
|
||||
|
||||
## Other Elements — abbr, sub, sup, kbd, mark
|
||||
|
||||
<abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
|
||||
|
||||
H<sub>2</sub>O
|
||||
|
||||
X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
|
||||
|
||||
Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
|
||||
|
||||
Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.
|
|
@ -1,49 +0,0 @@
|
|||
---
|
||||
author: Hugo Authors
|
||||
title: Math Typesetting
|
||||
date: 2019-03-08
|
||||
description: A brief guide to setup KaTeX
|
||||
math: true
|
||||
---
|
||||
|
||||
Mathematical notation in a Hugo project can be enabled by using third party JavaScript libraries.
|
||||
<!--more-->
|
||||
|
||||
In this example we will be using [KaTeX](https://katex.org/)
|
||||
|
||||
- Create a partial under `/layouts/partials/math.html`
|
||||
- Within this partial reference the [Auto-render Extension](https://katex.org/docs/autorender.html) or host these scripts locally.
|
||||
- Include the partial in your templates like so:
|
||||
|
||||
```bash
|
||||
{{ if or .Params.math .Site.Params.math }}
|
||||
{{ partial "math.html" . }}
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
- To enable KaTex globally set the parameter `math` to `true` in a project's configuration
|
||||
- To enable KaTex on a per page basis include the parameter `math: true` in content files
|
||||
|
||||
**Note:** Use the online reference of [Supported TeX Functions](https://katex.org/docs/supported.html)
|
||||
|
||||
{{< math.inline >}}
|
||||
{{ if or .Page.Params.math .Site.Params.math }}
|
||||
<!-- KaTeX -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
|
||||
{{ end }}
|
||||
{{</ math.inline >}}
|
||||
|
||||
### Examples
|
||||
|
||||
{{< math.inline >}}
|
||||
<p>
|
||||
Inline math: \(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\)
|
||||
</p>
|
||||
{{</ math.inline >}}
|
||||
|
||||
Block math:
|
||||
$$
|
||||
\varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } }
|
||||
$$
|
|
@ -1,45 +0,0 @@
|
|||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Placeholder Text"
|
||||
date = "2019-03-09"
|
||||
description = "Lorem Ipsum Dolor Si Amet"
|
||||
tags = [
|
||||
"markdown",
|
||||
"text",
|
||||
]
|
||||
+++
|
||||
|
||||
Lorem est tota propiore conpellat pectoribus de pectora summo. <!--more-->Redit teque digerit hominumque toris verebor lumina non cervice subde tollit usus habet Arctonque, furores quas nec ferunt. Quoque montibus nunc caluere tempus inhospita parcite confusaque translucet patri vestro qui optatis lumine cognoscere flos nubis! Fronde ipsamque patulos Dryopen deorum.
|
||||
|
||||
1. Exierant elisi ambit vivere dedere
|
||||
2. Duce pollice
|
||||
3. Eris modo
|
||||
4. Spargitque ferrea quos palude
|
||||
|
||||
Rursus nulli murmur; hastile inridet ut ab gravi sententia! Nomine potitus silentia flumen, sustinet placuit petis in dilapsa erat sunt. Atria tractus malis.
|
||||
|
||||
1. Comas hunc haec pietate fetum procerum dixit
|
||||
2. Post torum vates letum Tiresia
|
||||
3. Flumen querellas
|
||||
4. Arcanaque montibus omnes
|
||||
5. Quidem et
|
||||
|
||||
# Vagus elidunt
|
||||
|
||||
<svg class="canon" xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0 0 496 373" height="373" width="496"><g fill="none"><path stroke="#000" stroke-width=".75" d="M.599 372.348L495.263 1.206M.312.633l494.95 370.853M.312 372.633L247.643.92M248.502.92l246.76 370.566M330.828 123.869V1.134M330.396 1.134L165.104 124.515"></path><path stroke="#ED1C24" stroke-width=".75" d="M275.73 41.616h166.224v249.05H275.73zM54.478 41.616h166.225v249.052H54.478z"></path><path stroke="#000" stroke-width=".75" d="M.479.375h495v372h-495zM247.979.875v372"></path><ellipse cx="498.729" cy="177.625" rx=".75" ry="1.25"></ellipse><ellipse cx="247.229" cy="377.375" rx=".75" ry="1.25"></ellipse></g></svg>
|
||||
|
||||
[The Van de Graaf Canon](https://en.wikipedia.org/wiki/Canons_of_page_construction#Van_de_Graaf_canon)
|
||||
|
||||
## Mane refeci capiebant unda mulcebat
|
||||
|
||||
Victa caducifer, malo vulnere contra dicere aurato, ludit regale, voca! Retorsit colit est profanae esse virescere furit nec; iaculi matertera et visa est, viribus. Divesque creatis, tecta novat collumque vulnus est, parvas. **Faces illo pepulere** tempus adest. Tendit flamma, ab opes virum sustinet, sidus sequendo urbis.
|
||||
|
||||
Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae vulnus haerentia iuste et exercebat, sui et.
|
||||
|
||||
Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, *oculos nomen* non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem Propoetides **parte**.
|
||||
|
||||
{{< css.inline >}}
|
||||
<style>
|
||||
.canon { background: white; width: 100%; height: auto; }
|
||||
</style>
|
||||
{{< /css.inline >}}
|
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
|
@ -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`
|
|
@ -12,6 +12,15 @@ of the community.
|
|||
We're also currently in the process of writing brand new documentation, which will be listed here
|
||||
once available.
|
||||
|
||||
## A note of caution
|
||||
|
||||
Nix has a long history. Some things that seemed like good ideas once are no longer common practice. In particular:
|
||||
|
||||
- It's probably a good idea to ignore `nix-env` and mutable environments in favor of declarative configuration
|
||||
- If you don't already use channels, it's probably a good idea to learn about flakes or some other pinning mechanism instead
|
||||
|
||||
If you're learning about those topics because you want to understand the ideas that are currently in favor in the historical contexts they are responses to, or because you think you see a benefit to them that others don't, that's totally fine; this warning is only here to help beginners have a fruitful experience.
|
||||
|
||||
## Understanding Nix
|
||||
|
||||
- [The official Nix ecosystem documentation](https://nix.dev), maintained by the **NixOS Foundation**.
|
||||
|
@ -28,7 +37,7 @@ once available.
|
|||
## Understanding Flakes
|
||||
|
||||
- [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: 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/)
|
||||
|
|
|
@ -20,16 +20,16 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1713995372,
|
||||
"narHash": "sha256-fFE3M0vCoiSwCX02z8VF58jXFRj9enYUSTqjyHAjrds=",
|
||||
"lastModified": 1722987190,
|
||||
"narHash": "sha256-68hmex5efCiM2aZlAAEcQgmFI4ZwWt8a80vOeB/5w3A=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "dd37924974b9202f8226ed5d74a252a9785aedf8",
|
||||
"rev": "21cc704b5e918c5fbf4f9fff22b4ac2681706d90",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.11",
|
||||
"ref": "nixos-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# The sources we depend on.
|
||||
#
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
|
|
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 69 KiB |
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
|
@ -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
|
@ -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 "utilities";
|
||||
|
||||
@import "type";
|
||||
@import "blockquote";
|
||||
@import "code";
|
||||
@import "header";
|
||||
@import "footer";
|
||||
@import "buttons";
|
||||
|
|
Before Width: | Height: | Size: 130 B After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 67 KiB |
|
@ -21,8 +21,8 @@
|
|||
{{ end }}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="card-title fw-semibold">{{ .Title }}</h5>
|
||||
<p class="card-text text-black-61">{{ .Summary | plainify }}</p>
|
||||
<h5 class="card-title fw-semibold">{{ .Title | safeHTML }}</h5>
|
||||
<p class="card-text text-black-61">{{ .Summary }}</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
<div class="container">
|
||||
<div class="row justify-content-center pb-5">
|
||||
<div class="col-12">
|
||||
{{ with .Title }}
|
||||
<h2 class="display-1 fw-bold text-center text-primary pb-3">{{ . }}</h2>
|
||||
{{ 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>
|
||||
|
@ -13,7 +13,7 @@
|
|||
</div>
|
||||
<div class="row pb-5">
|
||||
<div class="col-12 d-flex justify-content-center">
|
||||
<div class="blog-content fs-5">
|
||||
<div class="blog-content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
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 }}
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="92pt" height="92pt" viewBox="0 0 92 92"><defs><clipPath id="a"><path d="M0 .113h91.887V92H0Zm0 0"/></clipPath></defs><g clip-path="url(#a)"><path style="stroke:none;fill-rule:nonzero;fill:#f03c2e;fill-opacity:1" d="M90.156 41.965 50.036 1.848a5.918 5.918 0 0 0-8.372 0l-8.328 8.332 10.566 10.566a7.03 7.03 0 0 1 7.23 1.684 7.034 7.034 0 0 1 1.669 7.277l10.187 10.184a7.028 7.028 0 0 1 7.278 1.672 7.04 7.04 0 0 1 0 9.957 7.05 7.05 0 0 1-9.965 0 7.044 7.044 0 0 1-1.528-7.66l-9.5-9.497V59.36a7.04 7.04 0 0 1 1.86 11.29 7.04 7.04 0 0 1-9.957 0 7.04 7.04 0 0 1 0-9.958 7.06 7.06 0 0 1 2.304-1.539V33.926a7.049 7.049 0 0 1-3.82-9.234L29.242 14.272 1.73 41.777a5.925 5.925 0 0 0 0 8.371L41.852 90.27a5.925 5.925 0 0 0 8.37 0l39.934-39.934a5.925 5.925 0 0 0 0-8.371"/></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 92 92"><defs><clipPath id="a"><path d="M0 .113h91.887V92H0Zm0 0"/></clipPath></defs><g clip-path="url(#a)"><path style="stroke:none;fill-rule:nonzero;fill:#f03c2e;fill-opacity:1" d="M90.156 41.965 50.036 1.848a5.918 5.918 0 0 0-8.372 0l-8.328 8.332 10.566 10.566a7.03 7.03 0 0 1 7.23 1.684 7.034 7.034 0 0 1 1.669 7.277l10.187 10.184a7.028 7.028 0 0 1 7.278 1.672 7.04 7.04 0 0 1 0 9.957 7.05 7.05 0 0 1-9.965 0 7.044 7.044 0 0 1-1.528-7.66l-9.5-9.497V59.36a7.04 7.04 0 0 1 1.86 11.29 7.04 7.04 0 0 1-9.957 0 7.04 7.04 0 0 1 0-9.958 7.06 7.06 0 0 1 2.304-1.539V33.926a7.049 7.049 0 0 1-3.82-9.234L29.242 14.272 1.73 41.777a5.925 5.925 0 0 0 0 8.371L41.852 90.27a5.925 5.925 0 0 0 8.37 0l39.934-39.934a5.925 5.925 0 0 0 0-8.371"/></g></svg>
|
||||
|
|
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 820 B |
|
@ -1,4 +1,4 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="61.076954mm" height="65.47831mm" viewBox="0 0 216.4144 232.00976">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="17.15px" viewBox="0 0 216.4144 232.00976">
|
||||
<path fill="#2b90d9" d="M211.80734 139.0875c-3.18125 16.36625-28.4925 34.2775-57.5625 37.74875-15.15875 1.80875-30.08375 3.47125-45.99875 2.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125 0 2.53375.15625 4.94625.46875 7.2025 3.38375 25.68625 25.47 27.225 46.39125 27.9425 21.11625.7225 39.91875-5.20625 39.91875-5.20625l.8675 19.09s-14.77 7.93125-41.08125 9.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234 213.82 1.40609 165.31125.20859 116.09125c-.365-14.61375-.14-28.39375-.14-39.91875 0-50.33 32.97625-65.0825 32.97625-65.0825C49.67234 3.45375 78.20359.2425 107.86484 0h.72875c29.66125.2425 58.21125 3.45375 74.8375 11.09 0 0 32.975 14.7525 32.975 65.0825 0 0 .41375 37.13375-4.59875 62.915"/>
|
||||
<path fill="#fff" d="M177.50984 80.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025 0-17.4175 7.5075-17.4175 22.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375 0-15.74 6.32875-15.74 18.7975v59.15H38.90484V80.077c0-12.455 3.17125-22.3525 9.54125-29.675 6.56875-7.3225 15.17125-11.07625 25.85-11.07625 12.355 0 21.71125 4.74875 27.8975 14.2475l6.01375 10.08125 6.015-10.08125c6.185-9.49875 15.54125-14.2475 27.8975-14.2475 10.6775 0 19.28 3.75375 25.85 11.07625 6.36875 7.3225 9.54 17.22 9.54 29.675"/>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
@ -1,4 +1,4 @@
|
|||
<svg version="1.1" viewBox="0 0 27.9 32" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<svg version="1.1" viewBox="0 0 27.9 32" width="16px" height="18px" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<title>Matrix (protocol) logo</title>
|
||||
<g transform="translate(-.095 .005)" fill="#040404">
|
||||
<path d="m27.1 31.2v-30.5h-2.19v-0.732h3.04v32h-3.04v-0.732z"/>
|
||||
|
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
@ -10,7 +10,7 @@
|
|||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-5">
|
||||
<div class="row g-4 g-md-5">
|
||||
{{ range .content.cards }}
|
||||
<div class="col-12 col-xl-4">
|
||||
<div class="card bg-blue-16 border-0 border-radius-34 p-4">
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<p class="small text-black-61">{{ .Site.Params.description }}</p>
|
||||
{{ with .Site.Params.social }}
|
||||
<ul class="d-flex justify-content-center justify-content-xl-start list-unstyled">
|
||||
{{ with .mastodon }}<li class="rounded-circle bg-blue-63 me-2 p-2"><a class="d-flex align-items-center justify-content-center size-16 svglogo" href="{{ . }}">{{ partial "icons/mastodon.html" }}</a></li>{{ end }}
|
||||
{{ with .mastodon }}<li class="rounded-circle bg-blue-63 me-2 p-2"><a rel="me" class="d-flex align-items-center justify-content-center size-16 svglogo" href="{{ . }}">{{ partial "icons/mastodon.html" }}</a></li>{{ end }}
|
||||
{{ with .matrix }}<li class="rounded-circle bg-blue-63 me-2 p-2"><a class="d-flex align-items-center justify-content-center size-16 svglogo" href="{{ . }}">{{ partial "icons/matrix.html" }}</a></li>{{ end }}
|
||||
{{ with .github }}<li class="rounded-circle bg-blue-63 me-2 p-2"><a class="d-flex align-items-center justify-content-center size-16 svglogo" href="{{ . }}">{{ partial "icons/github.html" }}</a></li>{{ end }}
|
||||
{{ with .git }}<li class="rounded-circle bg-blue-63 me-2 p-2"><a class="d-flex align-items-center justify-content-center size-16 svglogo" href="{{ . }}">{{ partial "icons/git.html" }}</a></li>{{ 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">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</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">
|
||||
{{ range .Site.Menus.main }}
|
||||
<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>
|
||||
{{ end }}
|
||||
</ul>
|
||||
<ul class="navbar-nav ms-xl-3 mb-2 mb-xl-0">
|
||||
{{ range .Site.Menus.buttons }}
|
||||
<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>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</nav>
|
||||
|
|
55
update_version.py
Normal file
|
@ -0,0 +1,55 @@
|
|||
import subprocess
|
||||
from pathlib import Path
|
||||
import json
|
||||
|
||||
|
||||
def get_archive_hash(url):
|
||||
output = subprocess.check_output(['nix', 'store', 'prefetch-file', '--name', 'source', '--json', '--unpack', url])
|
||||
|
||||
data = json.loads(output)
|
||||
return data['hash']
|
||||
|
||||
|
||||
def substitute_all(content: str, substitutions: dict[str, str]) -> str:
|
||||
for sub, value in substitutions.items():
|
||||
content = content.replace(sub, value)
|
||||
return content
|
||||
|
||||
|
||||
def substitute_file(path: Path, substitutions: dict[str, str]):
|
||||
content = path.with_name(path.name + '.in').read_text()
|
||||
subbed = substitute_all(content, substitutions)
|
||||
path.write_text(subbed)
|
||||
|
||||
|
||||
def go(version: str):
|
||||
BASE_URL = 'https://git.lix.systems'
|
||||
files = [
|
||||
Path('./content/add-to-config.md'),
|
||||
Path('./content/install.md')
|
||||
]
|
||||
|
||||
version_notrail = version.partition('-')[0]
|
||||
|
||||
substitutions = {
|
||||
'@VERSION_NOTRAIL@': version_notrail,
|
||||
'@VERSION@': version,
|
||||
'@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'),
|
||||
}
|
||||
|
||||
for file in files:
|
||||
substitute_file(file, substitutions)
|
||||
|
||||
|
||||
def main():
|
||||
import argparse
|
||||
ap = argparse.ArgumentParser(description='Update versions of Lix in the website')
|
||||
|
||||
ap.add_argument('version', help='Version to make the files at')
|
||||
args = ap.parse_args()
|
||||
|
||||
go(args.version)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|