Skip to main content

Lix Private Beta Guide

FIXME:Thank importyou for choosing to help us in our private beta! Please keep quiet that there is a fork and who is involved <3

There is a lot of work-in-progress documentation and a lot of it is work in progress or awaiting move to the wiki. Our apologies for this state, let us know if there is something you need.

If you run into any friction, please let us know. We would like to hear all your complaints, and this private beta is as much about testing our processes as it is about testing the software.

There is a Matrix space where we have a channel for announcements and support. Please join these! (FIXME) Currently these are manually managed, so message @hexchen:colon.at or @jade_:matrix.org for an invite if you need one.

Getting yourself set up

Once you have gotten to this page, you have evidently already logged in successfully. Note that your email will be visible on Gerrit if you use it, so change it on https://pad.identity.lix.systems if necessary.

The guide here expects that you have configured a SSH key on Forgejo.

A brief tour of the Lix systems

See Information Organisation for where information is.

The Lix sources are developed on Gerrit, built with Buildbot, and released on a Forgejo repo.

Contributor documentation for the project is maintained on this wiki. FIXME(jade): a lot of it is awaiting migration onto the wiki from the private pad system, see tracking issue.

Status

We are confident enough to run nightly builds on the machines we care about. We expect Lix to have, generally, fewer bugs than Nix 2.18, which is what you probably already have.

Notable changes:

  • REPL is much better
    • The debugger is no longer missing variables
    • --debugger-on-trace gives you a debugger for builtins.trace
    • The nix repl startup messages have been shortened
  • Many errors now print the value in question
  • Many bugs have been fixed, in general:
    • nix eval nixpkgs#hello now gives the derivation path instead of hanging
    • nix-env -qa lists all attribute paths leading to a package, instead of missing some
  • nix flake check -v prints what is being checked (and now we notice how slow that command is)
  • Stack overflow is now caught properly
  • Performance improvement (8-20% faster than 2.18)
  • Correctness (inherit-from laziness fixed)
  • nix repl will be able to :doc library functions Soon(tm)

Currently we do not have the installer ready. We are also working on a binary cache, but this will be available in the future. When it is done, it will be added to the NixOS module.

Leaks that are ok

We consider it OK to use the overlay and input in public dotfiles, as long as they don't make it more clear than necessary what they are.

For example, adding it to overlays in a NixOS configuration repo is ok, as it is not clear what the overlay actually does. For a concrete example of such an acceptable leak, see jade's dotfiles.

Installation

On NixOS

Use the overlay: https://git.lix.systems/lix-private-beta-guideproject/nixos-module

Please file bugs if this explodes the build of tooling you use, we can fix it in the overlay.

Flakes

Add Lix to your system configuration like so:

{
  inputs = {
    lix = {
      url = "git+ssh://git@git.lix.systems:2022/lix";
      flake = false;
    };

    lix-module = {
      url = "git+ssh://git@lix.systems/lix-project/nixos-module";
      inputs.nixpkgs.follows = "nixpkgs";
      inputs.lix.follows = "lix";
    };
  };
  
  outputs = {nixpkgs, lix-module, lix, ...}: {
    nixosConfigurations.your-box = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        ./machines/your-box
        lix-module.nixosModules.default
      ];
    };
  };
}

Not flakes

Also supported.

Add inputs for git@git.lix.systems:lix-project/lix and git@git.lix.systems:lix-project/nixos-module.

Use in a NixOS module: e.g. imports = [ (import "${your-pinning-thingy.lix-nixos-module}/module.nix" { lix = your-pinning-thingy.lix; }) ];

On other Linux

Currently we are still working on the installer (see tracking project). It is possible to convert an existing Nix install to Lix.

This is experimental. It might work on macOS, but we::jade have not tested it. We have tested it on an Arch Linux system installed a long time ago with the shell-based installer, and it works fine.

You can rollback if it blows up by /nix/var/nix/profiles/default-{HIGHEST-NUMBER}/bin/nix-env --rollback --profile /nix/var/nix/profiles/default. This method works by replacing your system profile with one that is managed by flakey-profile.

Clone git@git.lix.systems:lix-project/lix, then run sudo nix run --extra-experimental-features 'nix-command flakes' .#system-profile.switch.

Finally, run sudo systemctl restart nix-daemon.

Verification

You should now get something like the following:

~ ยป nix --version
nix (Nix) 2.90.0-lixpre20240324-f86b965