mirror of
https://codeberg.org/mart-w/nixos-x13s.git
synced 2024-11-23 15:34:49 +01:00
Compare commits
No commits in common. "f6a0df91fbf88115ad102a22b891c7ef3929aa86" and "757ba49d65585efbcfe0c0da8abf545c9a6d0cdd" have entirely different histories.
f6a0df91fb
...
757ba49d65
|
@ -1,8 +1,5 @@
|
|||
# nixos x13s
|
||||
|
||||
> [!CAUTION]
|
||||
> This project is unmaintained.
|
||||
|
||||
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.
|
||||
|
|
20
flake.lock
20
flake.lock
|
@ -5,11 +5,11 @@
|
|||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719994518,
|
||||
"narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
|
||||
"lastModified": 1717285511,
|
||||
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
|
||||
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -20,11 +20,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1722062969,
|
||||
"narHash": "sha256-QOS0ykELUmPbrrUGmegAUlpmUFznDQeR4q7rFhl8eQg=",
|
||||
"lastModified": 1719254875,
|
||||
"narHash": "sha256-ECni+IkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b73c2221a46c13557b1b3be9c2070cc42cf01eb3",
|
||||
"rev": "2893f56de08021cffd9b6b6dfc70fd9ccd51eb60",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -36,14 +36,14 @@
|
|||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1719876945,
|
||||
"narHash": "sha256-Fm2rDDs86sHy0/1jxTOKB1118Q0O3Uc7EC0iXvXKpbI=",
|
||||
"lastModified": 1717284937,
|
||||
"narHash": "sha256-lIbdfCsf8LMFloheeE6N31+BMIeixqyQWbSr2vk79EQ=",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz"
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz"
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
|
|
87
flake.nix
87
flake.nix
|
@ -36,6 +36,10 @@
|
|||
];
|
||||
};
|
||||
};
|
||||
|
||||
packages = {
|
||||
iso = self.nixosConfigurations.iso.config.system.build.isoImage;
|
||||
};
|
||||
};
|
||||
|
||||
flake.nixosModules.default = import ./module.nix { inherit dtbName; };
|
||||
|
@ -45,19 +49,21 @@
|
|||
system = "aarch64-linux";
|
||||
modules = [
|
||||
self.nixosModules.default
|
||||
(
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
nixos-x13s.enable = true;
|
||||
nixos-x13s.kernel = "jhovold"; # jhovold is default, but mainline supported
|
||||
{
|
||||
nixos-x13s.enable = true;
|
||||
nixos-x13s.kernel = "jhovold"; # jhovold is default, but mainline supported
|
||||
|
||||
# allow unfree firmware
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
# install multiple kernels! note this increases eval time for each specialization
|
||||
# specialisation = {
|
||||
# mainline.configuration.nixos-x13s.kernel = "mainline";
|
||||
# };
|
||||
|
||||
# define your fileSystems
|
||||
fileSystems."/".device = "/dev/notreal";
|
||||
}
|
||||
)
|
||||
# allow unfree firmware
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# define your fileSystems
|
||||
fileSystems."/".device = "/dev/notreal";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -67,45 +73,12 @@
|
|||
|
||||
self.nixosModules.default
|
||||
(
|
||||
{
|
||||
modulesPath,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{ modulesPath, config, ... }:
|
||||
let
|
||||
image = import "${inputs.nixpkgs}/nixos/lib/make-disk-image.nix" {
|
||||
inherit config lib pkgs;
|
||||
|
||||
name = "nixos-x13s-bootstrap";
|
||||
diskSize = "auto";
|
||||
format = "raw";
|
||||
partitionTableType = "efi";
|
||||
copyChannel = false;
|
||||
};
|
||||
|
||||
dtb = "${config.boot.kernelPackages.kernel}/dtbs/qcom/${dtbName}";
|
||||
in
|
||||
{
|
||||
hardware.deviceTree = {
|
||||
enable = true;
|
||||
name = "qcom/${dtbName}";
|
||||
};
|
||||
|
||||
system.build.bootstrap-image = image;
|
||||
|
||||
boot = {
|
||||
initrd = {
|
||||
systemd.enable = true;
|
||||
systemd.emergencyAccess = true;
|
||||
};
|
||||
|
||||
loader = {
|
||||
grub.enable = false;
|
||||
systemd-boot.enable = true;
|
||||
systemd-boot.graceful = true;
|
||||
};
|
||||
};
|
||||
imports = [ "${toString modulesPath}/installer/cd-dvd/iso-image.nix" ];
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
|
@ -114,16 +87,16 @@
|
|||
bluetoothMac = "02:68:b3:29:da:98";
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/boot" = {
|
||||
fsType = "vfat";
|
||||
device = "/dev/disk/by-label/ESP";
|
||||
};
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/nixos";
|
||||
fsType = "ext4";
|
||||
autoResize = true;
|
||||
};
|
||||
isoImage = {
|
||||
makeEfiBootable = true;
|
||||
makeUsbBootable = true;
|
||||
|
||||
contents = [
|
||||
{
|
||||
source = dtb;
|
||||
target = "/x13s.dtb";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
)
|
||||
|
|
50
module.nix
50
module.nix
|
@ -20,21 +20,6 @@ let
|
|||
);
|
||||
dtb = "${linuxPackages_x13s.kernel}/dtbs/qcom/${dtbName}";
|
||||
dtbEfiPath = "dtbs/x13s.dtb";
|
||||
|
||||
modulesClosure = pkgs.makeModulesClosure {
|
||||
rootModules = config.boot.initrd.availableKernelModules ++ config.boot.initrd.kernelModules;
|
||||
kernel = config.system.modulesTree;
|
||||
firmware = config.hardware.firmware;
|
||||
allowMissing = false;
|
||||
};
|
||||
|
||||
modulesWithExtra = pkgs.symlinkJoin {
|
||||
name = "modules-closure";
|
||||
paths = [
|
||||
modulesClosure
|
||||
x13sPackages.graphics-firmware
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
options.nixos-x13s = {
|
||||
|
@ -56,24 +41,28 @@ in
|
|||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = false;
|
||||
message = "adamcstephens/nixos-x13s is no longer maintained";
|
||||
}
|
||||
environment.systemPackages = [
|
||||
pkgs.efibootmgr
|
||||
(x13sPackages.uncompressed-firmware.override {
|
||||
firmwareFilesList = lib.flatten options.hardware.firmware.definitions;
|
||||
})
|
||||
];
|
||||
|
||||
environment.systemPackages = [ pkgs.efibootmgr ];
|
||||
environment.pathsToLink = [ "/share/uncompressed-firmware" ];
|
||||
|
||||
hardware.enableAllFirmware = true;
|
||||
hardware.firmware = lib.mkBefore [ x13sPackages.graphics-firmware ];
|
||||
hardware.firmware = [ x13sPackages."x13s/extra-firmware" ];
|
||||
|
||||
systemd.services.pd-mapper = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${lib.getExe x13sPackages.pd-mapper}";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
|
||||
boot = {
|
||||
initrd.systemd.enable = true;
|
||||
initrd.systemd.contents = {
|
||||
"/lib".source = lib.mkForce "${modulesWithExtra}/lib";
|
||||
};
|
||||
|
||||
loader.efi.canTouchEfiVariables = true;
|
||||
loader.systemd-boot.enable = lib.mkDefault true;
|
||||
loader.systemd-boot.extraFiles = {
|
||||
|
@ -90,8 +79,11 @@ in
|
|||
"efi=noruntime"
|
||||
"clk_ignore_unused"
|
||||
"pd_ignore_unused"
|
||||
"regulator_ignore_unused"
|
||||
"arm64.nopauth"
|
||||
# "regulator_ignore_unused" # allows for > 30 sec to load msm, at the potential cost of power
|
||||
|
||||
# blacklist graphics in initrd so the firmware can load from disk
|
||||
"rd.driver.blacklist=msm"
|
||||
];
|
||||
|
||||
initrd = {
|
||||
|
@ -115,7 +107,7 @@ in
|
|||
"dispcc_sc8280xp"
|
||||
"phy_qcom_edp"
|
||||
"panel-edp"
|
||||
"msm"
|
||||
# "msm"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
"owner": "jhovold",
|
||||
"repo": "linux"
|
||||
},
|
||||
"branch": "wip/sc8280xp-6.11-rc1",
|
||||
"revision": "9c6b81022b9c277d65c68e25f4cfd52f33ef8f28",
|
||||
"url": "https://github.com/jhovold/linux/archive/9c6b81022b9c277d65c68e25f4cfd52f33ef8f28.tar.gz",
|
||||
"hash": "13c6r67iy8y750f8zpals4l941lshxx3w3ar1ss9dizsqjsghdsr"
|
||||
"branch": "wip/sc8280xp-6.10-rc5",
|
||||
"revision": "fb34a1d838d061d9e2199656b832bb2ebc2dc5e3",
|
||||
"url": "https://github.com/jhovold/linux/archive/fb34a1d838d061d9e2199656b832bb2ebc2dc5e3.tar.gz",
|
||||
"hash": "07gsf26954qi9lspbzlc4xsan4vbiyzbfnpwbwyaxcqfibzfg6vg"
|
||||
}
|
||||
},
|
||||
"version": 3
|
||||
|
|
|
@ -14,23 +14,17 @@ let
|
|||
}
|
||||
);
|
||||
in
|
||||
{
|
||||
rec {
|
||||
linux_jhovold = pkgs.callPackage linux_x13s_pkg {
|
||||
src = sources.linux-jhovold;
|
||||
version = "6.11.0-rc1";
|
||||
version = "6.10.0-rc5";
|
||||
defconfig = "johan_defconfig";
|
||||
};
|
||||
|
||||
graphics-firmware =
|
||||
let
|
||||
gpu-src = pkgs.fetchurl {
|
||||
url = "https://download.lenovo.com/pccbbs/mobiles/n3hdr20w.exe";
|
||||
hash = "sha256-Jwyl9uKOnjpwfHd+VaGHjYs9x8cUuRdFCERuXqaJwEY=";
|
||||
};
|
||||
in
|
||||
pkgs.runCommand "graphics-firmware" { } ''
|
||||
mkdir -vp "$out/lib/firmware/qcom/sc8280xp/LENOVO/21BX"
|
||||
${lib.getExe pkgs.innoextract} ${gpu-src}
|
||||
cp -v code\$GetExtractPath\$/*/*.mbn "$out/lib/firmware/qcom/sc8280xp/LENOVO/21BX/"
|
||||
'';
|
||||
pd-mapper = pkgs.callPackage ./pd-mapper { inherit qrtr; };
|
||||
qrtr = pkgs.callPackage ./qrtr { };
|
||||
|
||||
"x13s/extra-firmware" = pkgs.callPackage ./extra-firmware.nix { };
|
||||
|
||||
uncompressed-firmware = pkgs.callPackage ./uncompressed-firmware.nix { };
|
||||
}
|
||||
|
|
21
packages/extra-firmware.nix
Normal file
21
packages/extra-firmware.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ stdenvNoCC, fetchFromGitHub }:
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "x13s-extra-firmware";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ironrobin";
|
||||
repo = "x13s-alarm";
|
||||
rev = "efa51c3b519f75b3983aef67855b1561d9828771";
|
||||
sha256 = "sha256-weETbWXz9aL2pDQDKk7fkb1ecQH0qrhUYDs2E5EiJcI=";
|
||||
};
|
||||
|
||||
dontFixup = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib/firmware/qcom/sc8280xp/LENOVO/21BX
|
||||
cp x13s-firmware/qcvss8280.mbn $out/lib/firmware/qcom/sc8280xp/LENOVO/21BX/
|
||||
'';
|
||||
}
|
36
packages/pd-mapper/default.nix
Normal file
36
packages/pd-mapper/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
qrtr,
|
||||
xz,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "pd-mapper";
|
||||
version = "unstable-2023-09-01";
|
||||
|
||||
buildInputs = [
|
||||
qrtr
|
||||
xz
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "andersson";
|
||||
repo = "pd-mapper";
|
||||
rev = "10997ba7c43a3787a40b6b1b161408033e716374";
|
||||
hash = "sha256-qGrYNoPCxtdpTdbkSmB39+6/pSXml96Aul8b9opF9Lc=";
|
||||
};
|
||||
|
||||
patches = [ ./pd-mapper-firmware-path.diff ];
|
||||
|
||||
installFlags = [ "prefix=$(out)" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Qualcomm PD mapper";
|
||||
homepage = "https://github.com/andersson/pd-mapper";
|
||||
license = licenses.bsd3;
|
||||
mainProgram = "pd-mapper";
|
||||
platforms = platforms.aarch64;
|
||||
};
|
||||
}
|
13
packages/pd-mapper/pd-mapper-firmware-path.diff
Normal file
13
packages/pd-mapper/pd-mapper-firmware-path.diff
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/pd-mapper.c b/pd-mapper.c
|
||||
index 65c4b80..669d9a0 100644
|
||||
--- a/pd-mapper.c
|
||||
+++ b/pd-mapper.c
|
||||
@@ -194,7 +194,7 @@ static int pd_load_map(const char *file)
|
||||
}
|
||||
|
||||
#ifndef ANDROID
|
||||
-#define FIRMWARE_BASE "/lib/firmware/"
|
||||
+#define FIRMWARE_BASE "/run/current-system/sw/share/uncompressed-firmware/"
|
||||
#else
|
||||
#define FIRMWARE_BASE "/vendor/firmware/"
|
||||
#endif
|
26
packages/qrtr/default.nix
Normal file
26
packages/qrtr/default.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "qrtr";
|
||||
version = "unstable-2023-01-17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "andersson";
|
||||
repo = "qrtr";
|
||||
rev = "d0d471c96e7d112fac6f48bd11f9e8ce209c04d2";
|
||||
hash = "sha256-KF0gCBRw3BDJdK1s+dYhHkokVTHwRFO58ho0IwHPehc=";
|
||||
};
|
||||
|
||||
installFlags = [ "prefix=$(out)" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "QMI IDL compiler";
|
||||
homepage = "https://github.com/andersson/qrtr";
|
||||
license = licenses.bsd3;
|
||||
platforms = platforms.aarch64;
|
||||
};
|
||||
}
|
24
packages/uncompressed-firmware.nix
Normal file
24
packages/uncompressed-firmware.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
runCommand,
|
||||
buildEnv,
|
||||
firmwareFilesList ? [ ],
|
||||
}:
|
||||
runCommand "qcom-modem-uncompressed-firmware-share"
|
||||
{
|
||||
firmwareFiles = buildEnv {
|
||||
name = "qcom-modem-uncompressed-firmware";
|
||||
paths = firmwareFilesList;
|
||||
pathsToLink = [
|
||||
"/lib/firmware/rmtfs"
|
||||
"/lib/firmware/qcom"
|
||||
];
|
||||
};
|
||||
}
|
||||
''
|
||||
PS4=" $ "
|
||||
(
|
||||
set -x
|
||||
mkdir -p $out/share/
|
||||
ln -s $firmwareFiles/lib/firmware/ $out/share/uncompressed-firmware
|
||||
)
|
||||
''
|
Loading…
Reference in a new issue