forked from nikkuss/x1e-nixos
init
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# x1e-nixos
|
||||
|
||||
NixOS flake providing kernel and hardware support for the **Microsoft Surface Laptop 7** (Snapdragon X Elite / x1e80100).
|
||||
|
||||
## Usage
|
||||
|
||||
```nix
|
||||
# flake.nix
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
x1e-nixos.url = "git+https://git.scug.io/nikkuss/x1e-nixos.git";
|
||||
|
||||
# Required: provides pkgs.slbounce, pkgs.tcblaunch,
|
||||
# pkgs.x1e80100-firmware, pkgs.x1e80100-linux-firmware
|
||||
custom-pkgs = {
|
||||
url = "git+https://git.scug.io/nikkuss/pkgs.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { nixpkgs, x1e-nixos, custom-pkgs, ... }: {
|
||||
nixosConfigurations.my-surface = nixpkgs.lib.nixosSystem {
|
||||
system = "aarch64-linux";
|
||||
modules = [
|
||||
{ nixpkgs.overlays = [ custom-pkgs.overlays.default ]; }
|
||||
x1e-nixos.nixosModules.default
|
||||
./configuration.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
The `default` module imports everything (kernel, modules, boot, hardware). To pick individual pieces:
|
||||
|
||||
```nix
|
||||
x1e-nixos.nixosModules.kernel # boot.kernelPackages + initrd config
|
||||
x1e-nixos.nixosModules.kernel-modules # out-of-tree .ko modules
|
||||
x1e-nixos.nixosModules.boot # systemd-boot + slbounce + firmware paths
|
||||
x1e-nixos.nixosModules.hardware # DTB + firmware packages
|
||||
```
|
||||
|
||||
## Optional modules
|
||||
|
||||
Some modules don't auto-load via device tree / PCI and are behind config flags:
|
||||
|
||||
```nix
|
||||
{
|
||||
x1e.model = "15"; # "13" (default) or "15" — selects the correct DTB
|
||||
x1e.cpuParking = true; # loads cpu_parking at boot
|
||||
x1e.ecReboot = true; # loads ec_reboot at boot, exposes /sys/kernel/ec_reboot/reboot
|
||||
}
|
||||
```
|
||||
|
||||
## Touchpad not working
|
||||
|
||||
After a lid close or certain sleep/wake cycles, the EC may cut power to the touchpad sensor in a way that Linux cannot recover from on its own. If the touchpad stops responding:
|
||||
|
||||
**Option A — sysfs (no reboot required on its own, but the EC reset will reboot the machine):**
|
||||
|
||||
```sh
|
||||
modprobe ec_reboot
|
||||
echo 1 > /sys/kernel/ec_reboot/reboot
|
||||
```
|
||||
|
||||
**Option B — hard power off:**
|
||||
|
||||
Hold the power button for **10 seconds** until the machine fully shuts off, then power it back on.
|
||||
|
||||
Both methods force a full EC power cycle, which resets the touchpad sensor state.
|
||||
|
||||
## EL2
|
||||
|
||||
The EL2 boot specialisation (slbounce) is currently broken. The default boot entry runs in EL1.
|
||||
Reference in New Issue
Block a user