diff --git a/content/add-to-config.md b/content/add-to-config.md index c3cb6cd1..ba1de718 100644 --- a/content/add-to-config.md +++ b/content/add-to-config.md @@ -5,9 +5,54 @@ 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. +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.90.0-rc1 +``` + +# 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 @@ -20,15 +65,10 @@ Adding Lix to a flake-based configuration is relatively simple. First, add the L # 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, + # 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.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.90.0-rc1.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -78,7 +118,12 @@ Add the Lix _NixOS Module_ to your configuration: } ``` -Finally, if you'd prefer not to build Lix yourself, you can add our binary cache. + + 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.1 +nix (Lix, like Nix) 2.90.0-rc1 ``` As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a @@ -111,13 +158,7 @@ If you're not using flakes, you can set up your configuration to automatically p 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 - - -This section is currently pending on a quick update. - -
-
+section, and add the line provided in the configuration ```nix { config, lib, pkgs, ... }: @@ -126,20 +167,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. + # + # 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.90.0-rc1.tar.gz # # Note that the tag (e.g. v2.90) 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.90.0-rc1.tar.gz"; + sha256 = "sha256-64lB/NO6AQ6z6EDCemPSYZWX/Qc6Rt04cPia5T5v01g="; + }; + lixSrc = fetchTarball { + name = "source"; + url = "https://git.lix.systems/lix-project/lix/archive/2.90.0-rc1.tar.gz"; + sha256 = "sha256-WY7BGnu5PnbK4O8cKKv9kvxwzZIGbIQUQLGPHFXitI0="; + }; + # 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,7 +198,10 @@ section, and add the line provided in the configuration } ``` -Finally, if you'd prefer not to build Lix yourself, you can add our binary cache. + 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.1 +nix (Lix, like Nix) 2.90.0-rc1-lixpre20240615-253546d ``` As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a @@ -175,8 +230,8 @@ 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 -- +**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 diff --git a/content/install.md b/content/install.md index c41f6622..bc6b3d28 100644 --- a/content/install.md +++ b/content/install.md @@ -8,7 +8,7 @@ author: "Lix Team" 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 +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. @@ -18,9 +18,9 @@ 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 +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: - [flake-based configurations](/add-to-config#flake-based-configurations); or @@ -43,7 +43,7 @@ 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 +You can either perform a **new install**, or choose to **upgrade an existing install** to Lix. ### New Installs @@ -55,7 +55,7 @@ Open a terminal, and run the following command: curl -sSf -L https://install.lix.systems/lix | sh -s -- install ``` -The installer will guide you through installing Lix -- and once it's finished, +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). @@ -72,7 +72,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@git.lix.systems/lix-project/lix?ref=refs/tags/2.90.0-rc1' -- \ upgrade-nix \ --extra-substituters https://cache.lix.systems --extra-trusted-public-keys "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" ``` @@ -82,7 +82,7 @@ to report its version: ```sh $ nix --version -nix (Lix, like Nix) 2.90.0-beta.1 +nix (Lix, like Nix) 2.90.0-rc1-lixpre20240615-253546d ``` As long as you see `Lix` in the output, you're good! If you're not sure what to do now, it's a