Find a file
Adam Stephens 3a002c5a64
fix: pd-mapper can't read zstd firmware files
nixos unstable and 24.05 switched to zstd compression for firmware
files. Roll back to the previous setup of creating a package of the
qcom firmware uncompressed, and patching pd-mapper.

closes #14
2024-05-27 12:11:12 -04:00
.woodpecker forgejo -> woodpecker 2024-05-14 16:23:18 -04:00
npins jhovold: 6.9.0-rc7 -> 6.9.0 2024-05-14 15:58:28 -04:00
packages fix: pd-mapper can't read zstd firmware files 2024-05-27 12:11:12 -04:00
.envrc init: x13s module and packages 2024-01-22 12:47:25 -05:00
.gitignore - adding an iso package to the flake 2024-05-12 23:24:31 -04:00
flake.lock flake.lock: Update 2024-05-15 09:06:39 -04:00
flake.nix fix iso building 2024-05-14 16:25:22 -04:00
justfile forgejo -> woodpecker 2024-05-14 16:23:18 -04:00
module.nix fix: pd-mapper can't read zstd firmware files 2024-05-27 12:11:12 -04:00
README.md document usb iso 2024-05-01 11:17:21 -04:00

nixos x13s

This repository aims to provide easy, shared, support for Lenovo X13s on Linux.

The support for this machine is constantly improving in mainline kernel and upstream packages. Eventually the goal is that this repository is no longer necessary.

Binary cache

A binary cache is provided through Cachix so you can avoid re-building the kernel.

https://app.cachix.org/cache/nixos-x13s

Ensure you are not overriding the nixpkgs input when consuming this flake, or you may not be able to take advantages of this cache.

NixOS configuration example:

  nix.settings = {
    substituters = [
      "https://nixos-x13s.cachix.org"
    ];
    trusted-public-keys = [
      "nixos-x13s.cachix.org-1:SzroHbidolBD3Sf6UusXp12YZ+a5ynWv0RtYF0btFos="
    ];
  };

Add with a flake

{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    nixos-x13s.url = "git+https://codeberg.org/adamcstephens/nixos-x13s";
  };

  outputs =
    { ... }@inputs:
    {
      nixosConfigurations.example = inputs.nixpkgs.lib.nixosSystem {
        system = "aarch64-linux";
        modules = [
          inputs.nixos-x13s.nixosModules.default
          {
            nixos-x13s.enable = true;
            nixos-x13s.kernel = "jhovold"; # jhovold is default, but mainline supported

            # install multiple kernels! note this increases eval time for each specialization
            specialisation = {
              # note that activation of each specialization is required to copy the dtb to the EFI, and thus boot
              mainline.configuration.nixos-x13s.kernel = "mainline";
            };

            # allow unfree firmware
            nixpkgs.config.allowUnfree = true;

            # define your fileSystems
            fileSystems."/".device = "/dev/notreal";
          }
        ];
      };
    };
}

Add using not a flake

Clone the repository:

git clone https://codeberg.org/adamcstephens/nixos-x13s /etc/nixos/nixos-x13s

Then reference the module in your configuration.nix and use the module as documented in the flake example above:

  imports =
    [
      ./nixos-x13s/module.nix
    ];
  nixos-x13s.enable = true;
  ...

UEFI Update ISO

This repository provides a package which can output the USB UEFI Update ISO. This will be updated as Lenovo releases new versions.

nix build .#uefi-usbiso

dd if=result/usbdisk-*.iso of=/path/to/usb/disk

Reboot, select USB drive from F12 boot menu, follow wizard.