Compare commits

...

198 commits

Author SHA1 Message Date
Jörg Thalheim
e60c66bd0b replace tlp with power-profiles-daemon
TLP is often no longer the best choice since firmware provides power
profiles instead. That's why we are removing TLP as the default option.
We may want to bring back TLP to some old hardware if it makes sense
i.e. certain thinkpad modules.
2025-11-06 12:07:59 +01:00
Jörg Thalheim
e4c6ee69e7
Merge pull request #1666 from brianmcgillion/update-imx8
Some checks are pending
Test / nixfmt (push) Waiting to run
Test / tests (push) Blocked by required conditions
imx8-evk: fix cross-compiled builds
2025-11-05 19:41:19 +00:00
Brian McGillion
ae91411396
imx8-evk: fix cross-compiled builds
update just to fix the cross compilation.

Signed-off-by: Brian McGillion <bmg.avoin@gmail.com>
2025-11-05 16:35:23 +04:00
Jörg Thalheim
d48e8f0e16
Merge pull request #1665 from brianmcgillion/fix-system-property
Some checks are pending
Test / nixfmt (push) Waiting to run
Test / tests (push) Blocked by required conditions
system: fix the system setting for nixpkgs
2025-11-05 09:50:57 +00:00
Brian McGillion
eea20ba3b0
system: fix the system setting for nixpkgs
90cb787644

Signed-off-by: Brian McGillion <bmg.avoin@gmail.com>
2025-11-05 13:20:53 +04:00
Jörg Thalheim
2e85ae1b70
Merge pull request #1662 from NixOS/nxp-docs
Some checks are pending
Test / nixfmt (push) Waiting to run
Test / tests (push) Blocked by required conditions
nxp: document flashing better
2025-11-04 14:44:00 +00:00
Jörg Thalheim
8b72f74d80 nxp: add upstream docs 2025-11-04 15:27:28 +01:00
Jörg Thalheim
655a6da8a8 nxp: document flash procedure and expose images in flake 2025-11-04 13:35:34 +01:00
Jörg Thalheim
bffe23e699
Merge pull request #1650 from govindsi/feat/ucm-imx95-platform
Add support for UCM-iMX95 Evaluation Kit platform
2025-11-04 12:19:19 +00:00
Jörg Thalheim
5ad68c5dff tests: add all aarch64 NXP boards to aarch64Systems list 2025-11-04 12:57:21 +01:00
Jörg Thalheim
fad92f5f57 ucm-imx95: expand pkgs in callPackage for overrides 2025-11-04 12:57:21 +01:00
Jörg Thalheim
f2e49f279c optee-builder: use stdenv as opposed to gccStdenv
should be the same in our use case, but stdenv is more standard.
2025-11-04 12:34:11 +01:00
Jörg Thalheim
e598a4ca2f nxp: patch toolchain more consistent between different targets 2025-11-04 12:28:52 +01:00
Jörg Thalheim
2567706185
Merge pull request #1660 from afreakk/patch-1
Some checks are pending
Test / nixfmt (push) Waiting to run
Test / tests (push) Blocked by required conditions
'runCommandNoCC' has been renamed to/replaced by 'runCommand'
2025-11-03 14:13:01 +00:00
Jörg Thalheim
7467f155fc
Merge pull request #1555 from imxade/imxade-patch-1
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
[Inspiron 3442] Removed enableAllFirmware, BT doesn't rely on it
2025-10-31 17:53:41 +00:00
Rituraj
ddb27b7bba
Merge branch 'master' into imxade-patch-1 2025-10-31 21:51:27 +05:30
Hans
13cc234e37
'runCommandNoCC' has been renamed to/replaced by 'runCommand' 2025-10-31 09:54:49 +01:00
Jörg Thalheim
a2bc09823a ucm-imx95: various changes
- Move openssl to nativeBuildInputs in ATF build for proper cross-compilation
- Add explicit SILICON validation with clear error messages in firmware build
- Fix fragile wildcard patterns in firmware DDR file copying
- Replace mutable branch URLs with pinned commit hashes for patch stability
- Add U-Boot config merge step (make olddefconfig) after extra config
- Fix cross-compilation toolchain coherence (cpp in optee-os)
- Standardize license format (single value instead of single-element list)
- Update maintainer references with inline name/email format
- Fix typos and grammar in documentation and comments
2025-10-30 15:17:56 +01:00
Jörg Thalheim
86d9291cc3 ucm-imx95: use --replace-fail for substituteInPlace 2025-10-30 14:52:25 +01:00
Jörg Thalheim
8650454db6 ucm-imx95: fix firmware parameter collision and update imx-mkimage
Fixed parameter name collision in ucm-imx95-firmware.nix where the
'silicon' parameter conflicted with the nixpkgs silicon package, causing
the wrong AHAB container to be selected. Renamed to 'siliconRev'.

Updated imx-mkimage from lf-6.6.36 to lf-6.6.52-2.2.1 to match the
firmware version expectations (v202409 instead of v202311).
2025-10-30 14:48:44 +01:00
Govind Singh
11ea8b8477 ucm-imx95: firmware: fetch firmware files from NXP release
Fetch AHAB container, M7 firmware, and DDR PHY firmware binaries
from the NXP release packages. The derivation extracts the correct
LPDDR5 PHY images and selects the appropriate AHAB container for
A0 or B0 silicon revisions.

Signed-off-by: Govind Singh <govind.singh@tii.ae>
2025-10-30 14:29:53 +01:00
Govind Singh
a3576f0f3c chore: Add README for UCM-iMX95 SOM support
Added README.md for UCM-iMX95 SOM support.
2025-10-30 14:29:53 +01:00
Govind Singh
fe21eda733 Add support for UCM-iMX95 Evaluation Kit platform
The CompuLab UCM-iMX95 Evaluation Kit provides a platform for comprehensive
evaluation of the NXP i.MX95 application processor. This change adds support
in NixOS hardware to provide a template for customized i.MX95-based platforms.

UCM-iMX95: https://www.compulab.com/products/som-evaluation-kits/ucm-imx95-evaluation-kit/

Signed-off-by: Govind Singh <govind.singh@tii.ae>
2025-10-30 14:29:53 +01:00
Jörg Thalheim
43ffe9ac82
Merge pull request #1580 from NixOS/private-flake
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
Refactor tests to load flake inputs with flake-compat
2025-10-30 12:26:15 +00:00
Jörg Thalheim
3beac2438b nix-eval-job: disable eval-cache
in ci, there is no cache, so it's just overhead and prints warnings.
2025-10-30 13:12:15 +01:00
Jörg Thalheim
b09586b101 Remove insecure broadcom-sta driver from hardware profiles
The broadcom-sta driver package is marked as insecure due to CVE-2019-9501
and CVE-2019-9502 (heap buffer overflow vulnerabilities allowing remote code
execution). The driver is also unmaintained and incompatible with modern
Linux kernel security mitigations.

Removed broadcom_sta from extraModulePackages and the corresponding "wl" kernel module.

This resolves test failures where Nixpkgs refuses to evaluate configurations
containing this insecure package.
2025-10-30 13:04:01 +01:00
Jörg Thalheim
e07b1618c3
Merge pull request #1568 from nmouha/patch-1
framework/13-inch/intel-core-ultra-series1: revert #1358 (fix intel_vpu firmware error -2)
2025-10-30 11:46:27 +00:00
Jörg Thalheim
e214e292a6 also enable formatter on macOS 2025-10-30 12:39:05 +01:00
Jörg Thalheim
779c16f604 ci: show github errors nicer formatted 2025-10-30 12:39:05 +01:00
Jörg Thalheim
6ec1e82182 format nix code after nixfmt update 2025-10-30 12:39:05 +01:00
Jörg Thalheim
4bafcc2454 Refactor tests to load flake inputs with flake-compat
This makes `nix fmt` just works and we no longer have to override flake
inputs.
2025-10-30 12:36:49 +01:00
Jörg Thalheim
46ab381a8c
Merge branch 'master' into patch-1 2025-10-30 12:30:42 +01:00
Jörg Thalheim
ec7bf039ca
Merge pull request #1656 from r-vdp/rvdp/framework-kmod
framework/kmod: remove compatibility with Linux version < 6.10
2025-10-30 11:26:58 +00:00
r-vdp
e11482075d
framework/kmod: remove compatibility with Linux version < 6.10
Upstream changes broke the checks that we had.
By now we have 6.12 as the LTS, and 24.05 went out of support, so I
think we don't need to support this anymore.
Anyone still on such old kernel versions, can apply the patch manually
if needed.
2025-10-30 10:54:55 +01:00
Jörg Thalheim
2379bc4099
Merge pull request #1649 from govindsi/feat/imx93-evk-platform
Some checks are pending
Test / nixfmt (push) Waiting to run
Test / tests (push) Blocked by required conditions
Add support for i.MX93-EVK platform
2025-10-29 17:41:40 +00:00
Jörg Thalheim
688ee555de refactor(nxp): parameterize i.MX platform builders to reduce duplication
This refactoring reduces code duplication across i.MX93, i.MX8MP, and
i.MX8MQ platforms by extracting common build logic into parameterized
shared builders. This makes it easier to maintain and add new i.MX
platforms while ensuring consistency across all platforms.
2025-10-29 18:26:21 +01:00
Govind Singh
8b405e9c6d chore(fmt): apply nix formatting
Signed-off-by: Govind Singh <govind.singh@tii.ae>
2025-10-29 18:19:05 +01:00
Govind Singh
34b7229b95 Add support for i.MX93-EVK platform
The i.MX93 EVK provides a platform for comprehensive evaluation
of the i.MX93 application processors. This change adds support
in NixOS hardware to provide a template for customized i.MX93-based
platforms.

Signed-off-by: Govind Singh <govind.singh@tii.ae>
2025-10-29 18:19:05 +01:00
Jörg Thalheim
46f9982c9b
Merge pull request #1652 from MichaelVessia/patch-1
Fix Framework 12th Gen Intel Core link path
2025-10-29 15:19:51 +00:00
Jörg Thalheim
9c0ee5dfa1
Merge pull request #1651 from rti/framework-13-intel-core-enableRedistributableFirmware
Some checks are pending
Test / nixfmt (push) Waiting to run
Test / tests (push) Blocked by required conditions
fix: enableRedistributableFirmware on Framework 13 Intel Core Ultra Series1
2025-10-28 16:33:09 +00:00
Michael Vessia
7667e19678
Fix Framework 12th Gen Intel Core link path 2025-10-23 20:20:44 -04:00
rti
b27995044c fix: enable enableRedistributableFirmware on framework 13 intel core 2025-10-23 15:18:06 +00:00
kirillrdy
d6645c340e
Merge pull request #1629 from trueNAHO/codeowners-remove-truenaho-from-tuxedo-pulse-14-gen3
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
CODEOWNERS: remove trueNAHO from tuxedo-pulse-14-gen3
2025-10-20 11:03:08 +00:00
NAHO
c4fe135227 CODEOWNERS: remove trueNAHO from tuxedo-pulse-14-gen3
Remove trueNAHO from tuxedo-pulse-14-gen3 because I never owned this
hardware.

Fixes: caabc42556 ("feat: Update CODEOWNERS for Tuxedo Pulse Laptops")
2025-10-20 21:47:11 +11:00
Sandro
9ed85f8afe
Merge pull request #1633 from NixOS/pi4-rendering
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
raspberrypi/4: fix many option rendering
2025-10-10 14:30:35 +00:00
Sandro
c816590dca
Merge pull request #1631 from NixOS/pi3-keyboard
raspberry-pi/3: load usbhid and usb_storage
2025-10-10 13:51:30 +00:00
Sandro Jäckel
eb9e8e10ac
raspberrypi/4: fix many option rendering 2025-10-10 15:50:52 +02:00
Sandro
156fbb62a9
Merge pull request #1634 from MrSom3body-contrib/fix/asus-battery-threshold
asus/battery: fix battery threshold not being set after hibernation
2025-10-10 12:47:24 +00:00
Karun Sandhu
c52ea60901
asus/battery: fix battery threshold not being set after hibernation 2025-10-10 10:51:07 +02:00
Sandro
d232c6f9cc
Merge pull request #1549 from MrSom3body-contrib/add-asus-um6702
Some checks are pending
Test / nixfmt (push) Waiting to run
Test / tests (push) Blocked by required conditions
init: Asus Zenbook 17 Pro
2025-10-09 23:46:13 +00:00
Karun Sandhu
a8bbda8911
init: Asus Zenbook 17 Pro 2025-10-09 22:13:19 +02:00
Sandro Jäckel
d0955d227d
raspberry-pi/3: load usbhid and usb_storage 2025-10-07 22:08:20 +02:00
0x4A6F
3441b5242a
Merge pull request #1554 from fidgetingbits/missing-readme-entries
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
Add missing README entries and re-align columns
2025-10-04 12:58:59 +00:00
fidgetingbits
0257a0aa58
Add missing README entries and re-align columns 2025-10-01 17:10:20 +08:00
Jörg Thalheim
e087756cf4
Merge pull request #1615 from borja-rojo-ilvento/lenovo-thinkpad-p14s-intel-gen2
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
Lenovo thinkpad p14s intel gen2
2025-09-30 19:45:27 +00:00
Jörg Thalheim
a74f5ce8c6
Merge pull request #1621 from nukdokplex/msi/b550-tomahawk
msi/b550-tomahawk: init
2025-09-30 19:41:31 +00:00
Jörg Thalheim
dd4227bb1b
Merge pull request #1508 from florianvazelle/asus-rog-gl552vw
Add Asus ROG-GL552VW hardware
2025-09-30 19:40:23 +00:00
Jörg Thalheim
30bf4efeda Merge pull request #1597 from yvan-sraka/cf-lx3
panasonic: add Let's Note CF-LX3 configuration
2025-09-30 19:33:30 +00:00
Jörg Thalheim
081542ae22
Merge pull request #1608 from trueNAHO/tuxedo-pulse-15-gen-2-load-more-modules-and-defer-warning
tuxedo/pulse/15/gen2: load more modules and defer warning
2025-09-30 19:32:30 +00:00
Borja Rojo Ilvento
ba70d20716 Add Lenovo ThinkPad P14s Intel Gen 2 profile
Adds hardware profile for Lenovo ThinkPad P14s Intel Gen 2 with:
- Intel Tiger Lake CPU support
- NVIDIA Turing GPU with PRIME configuration
- Suspend-to-RAM S3 sleep state configuration
2025-09-30 21:28:37 +02:00
nukdokplex
28c41d0a5d
msi/b550-tomahawk: init 2025-10-01 00:25:19 +05:00
Jörg Thalheim
c8b6a49ebf
Merge pull request #1618 from kuwii/linglong-novastudio
linglong/nova-studio: init
2025-09-30 19:22:27 +00:00
Jörg Thalheim
895e314e4b
Merge pull request #1620 from makefu/master
lenovo/t14-intel-gen1(-nvidia): init
2025-09-30 19:21:37 +00:00
Jörg Thalheim
0582a93516
Merge pull request #1622 from panchoh/feat/init-apple-macbook-air-5
apple/macbook-air/5: init
2025-09-30 19:20:40 +00:00
Jörg Thalheim
1243f78ca9
Merge pull request #1623 from leifhelm/mnt-reform-classic-rk3588
mnt/reform: init
2025-09-30 19:20:21 +00:00
Jakob Leifhelm
5e57f28e6a
mnt/reform: init 2025-09-30 00:08:11 +02:00
pancho horrillo
095a445675
apple/macbook-air/5: init 2025-09-27 07:11:36 +02:00
kuwii
0e9dc7cf61 linglong/nova-studio: remove opencl config and move it to readme 2025-09-25 22:42:51 +08:00
Yvan Sraka
27581273c2
panasonic: add Let's Note CF-LX3 configuration 2025-09-24 10:31:39 +02:00
Sandro
170ff93c86
Merge pull request #1614 from codingCoffee/x1-carbon-12
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
feat: kernel params for x1 carbon
2025-09-23 21:45:26 +00:00
makefu
76a314765d
lenovo/t14-intel-gen1(-nvidia): init
init configuration for t14 intel gen1 with and without nvidia dedicated graphics card

ref: https://thinkwiki.de/T14_Gen_1_(Intel)
2025-09-23 16:07:10 +02:00
kuwii
4ba28b48c8 linglong/nova-studio: init 2025-09-21 11:54:04 +08:00
Ameya Shenoy
3caaf86f9d
feat: kernel params for x1 carbon
Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
2025-09-17 01:19:01 +05:30
Jörg Thalheim
67a709cfe5
Merge pull request #1611 from Enzime/push-wroqwyuruzvr
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
MacBookAir6,x: fix wireless
2025-09-15 13:35:27 +00:00
Michael Hoang
0632a5e10f MacBookAir6,x: fix wireless 2025-09-15 15:19:23 +02:00
Sandro
4c38a024fa
Merge pull request #1610 from NixOS/SuperSandro2000-patch-1
Some checks are pending
Test / nixfmt (push) Waiting to run
Test / tests (push) Blocked by required conditions
Fix fydetab duo eval
2025-09-14 23:03:45 +00:00
Sandro
82e5fcb58c
Fix fydetab duo eval 2025-09-15 00:48:02 +02:00
0x4A6F
f89c620d3d
Merge pull request #1609 from NixOS/intel-compute-runtime-legacy
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
common/gpu: add and use option to choose intel-compute-runtime variant
2025-09-13 14:55:51 +00:00
Sandro Jäckel
e049c10c3e
treewide: set intel cpu variant to legacy where newer versions are not supported
According to https://github.com/intel/compute-runtime#legacy-platforms
2025-09-12 00:45:01 +02:00
Sandro Jäckel
4100cffdbe
common/gpu: add option to choose intel-compute-runtime variant 2025-09-12 00:45:00 +02:00
Sandro Jäckel
a98f1a2b75
Drop some unused inputs 2025-09-11 23:59:28 +02:00
Sandro Jäckel
536ac3ab4b
common/cpu/intel/comet-lake: drop gpu option
It is already set for the gpu
2025-09-11 23:59:14 +02:00
NAHO
40dffd02e3
tuxedo/pulse/15/gen2: defer amdgpu secure display warning to Stage 2
Defer the amdgpu secure display warning from Stage 1 to Stage 2, despite
the initial decision [1] of reverting commit dd18dc7714
("fix(tuxedo/pulse/15/gen2): prevent 'Secure display: Generic Failure'
warning") with commit 80d98a7d55 ("feat(tuxedo/pulse/15/gen2): use
default 'hardware.amdgpu.loadInInitrd'").

Since this noisy warning is an inherit property of this hardware,
deferring it is the desired behavior.

[1]: https://github.com/NixOS/nixos-hardware/pull/755#discussion_r1359669448
2025-09-07 21:43:50 +00:00
NAHO
0c55f0f776
tuxedo/pulse/15/gen2: load more internal modules 2025-09-07 18:18:27 +02:00
0x4A6F
11b2a10c7b
Merge pull request #1605 from RossComputerGuy/fix/fyde
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
fydetab/duo: fix hardware.firmware being applied
2025-09-05 20:15:52 +00:00
Tristan Ross
7e40faf569
fydetab/duo: enable hid sensor hub kernel module 2025-09-05 11:49:13 -07:00
Tristan Ross
295e0f92ff
fydetab/duo: clarify graphics support 2025-09-05 11:22:25 -07:00
Tristan Ross
410a17733a
fydetab/duo: fix himax firmware source hash 2025-09-05 11:20:47 -07:00
Tristan Ross
a6cc50d994
fydetab/duo: fix hardware.firmware being applied 2025-09-05 11:16:21 -07:00
0x4A6F
af3dd1cb20
Merge pull request #1604 from RossComputerGuy/fix/fyde
fydetab/duo: fix typo with enable option
2025-09-05 17:54:20 +00:00
Tristan Ross
e9db02252a
fydetab/duo: fix typo with enable option 2025-09-05 08:31:44 -07:00
0x4A6F
7e56e39db4
Merge pull request #1583 from RossComputerGuy/feat/fydetab-duo
Add Fydetab Duo
2025-09-05 14:17:17 +00:00
Tristan Ross
d9b0f10475
Add Fydetab Duo 2025-09-05 06:55:19 -07:00
Jörg Thalheim
ba6fab2976
Merge pull request #1530 from Gigahawk/tc358743-4-lane
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
raspberry-pi/4: support 4lane csi
2025-09-03 18:56:35 +00:00
Jörg Thalheim
da1b459c17
Merge pull request #1541 from cassis163/add-hp-probook-460-g11
Add HP ProBook 460 G11
2025-09-03 18:52:03 +00:00
Jörg Thalheim
003318603f
Merge branch 'master' into tc358743-4-lane 2025-09-03 20:40:56 +02:00
Jörg Thalheim
ad6d270a9a
Merge pull request #1535 from fidgetingbits/dell-precision-5570
Added Dell Precision 5570
2025-09-03 18:40:07 +00:00
Jörg Thalheim
c362a52136
Merge pull request #1592 from FrameworkComputer/framework16-ai300
Add Framework Laptop 16 AMD AI 300 Series
2025-09-03 18:38:21 +00:00
caangeenbrug-fvt
4091b501aa Add HP ProBook 460 G11 to hardware table in /README.md 2025-09-03 20:36:25 +02:00
cassis163
4a39585546 Add HP ProBook 460 G11 2025-09-03 20:36:25 +02:00
Jörg Thalheim
71841ee366
Merge pull request #1599 from gngram/imx8mp_sw_upgrade
bsp update for imx8mp-evk
2025-09-03 18:34:16 +00:00
Jörg Thalheim
7d524775bf
Merge pull request #1601 from RamReso/fix-flake-modules-in-readme
fix missmatch between README.md Flake Module and modules defined in flake.nix
2025-09-03 18:33:51 +00:00
Ganga Ram
2dbfb943a0 bsp update for imx8mp-evk
Signed-off-by: Ganga Ram <Ganga.Ram@tii.ae>
2025-09-03 17:17:14 +04:00
Noah Markert
2f7f1dc6ec
renamed flake modules in README.md to match them in flake.nix; add missing nixos modules to flake.nix; 2025-09-03 11:05:40 +02:00
Jörg Thalheim
47eb4856cf
Merge pull request #1567 from matteobongio/system76/gaze18
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
System76/gaze18: minor fixes
2025-09-01 18:14:48 +00:00
Jörg Thalheim
b403970fdf
Merge pull request #1550 from Ace-h121/master
Adding Power Management on Asus fa507nv
2025-09-01 18:03:55 +00:00
Jörg Thalheim
81129e6f19
Merge pull request #1556 from omeyenburg/fix-typo-macbookpro
apple/macbook-pro: Correct typos in 12-1 and 8-1 READMEs
2025-09-01 18:02:18 +00:00
Jörg Thalheim
72d5560fb7
Merge pull request #1557 from suzana2314/lenovo-legion-15ach6h
Lenovo Legion 5 15ach6h add option for hybrid only or nvidia only modules
2025-09-01 18:01:47 +00:00
Jörg Thalheim
321cb2173b
Merge pull request #1558 from matthiasdotsh/ms-surface/update-kernel-6.15.9
surface: linux 6.15.6 -> 6.15.9
2025-09-01 18:01:30 +00:00
Jörg Thalheim
ea1e368e75
Merge pull request #1559 from moduon/rpi-tmp-crb
fix(raspberry-pi-4): enable building kernel
2025-09-01 18:01:20 +00:00
Jörg Thalheim
6f97793214
Merge pull request #1561 from Flameopathic/14ILL10-fix
lenovo/yoga/7/14ILL10: update kernel version requirement
2025-09-01 18:01:00 +00:00
Jörg Thalheim
6b7941884f
Merge pull request #1562 from hatch01/fix-tc358743
fix: tc358743 dt overlay
2025-09-01 18:00:28 +00:00
Matteo Bongiovanni
f4a07aa370 system76-gaze18: add laptop and ssd imports 2025-09-01 19:59:56 +02:00
Matteo Bongiovanni
7fe67c44d1 system76-gaze18: use xserver.videoDrivers instead of initrd.kernelModules
system76-gaze18: use xserver.videoDrivers instead of initrd.kernelModules
2025-09-01 19:59:56 +02:00
Matteo Bongiovanni
c69cdbed34 system76-gaze18: add CPU module 2025-09-01 19:59:56 +02:00
Jörg Thalheim
31b333f6e7
Merge pull request #1585 from 497a/master
Revert "apple: add hid_apple.iso_layout=0 kernel param"
2025-09-01 17:57:58 +00:00
Jörg Thalheim
7c75c09ab6
Merge pull request #1569 from lynimbus/main
feat: add MECHREVO Yilong15Pro(GM5HG0A)
2025-09-01 17:52:17 +00:00
Jörg Thalheim
c5231106d4
Merge pull request #1570 from panchoh/fix/out-of-sync-flake-lock
Update flake.lock, dropping unused `nixpkgs` input
2025-09-01 17:51:52 +00:00
Jörg Thalheim
bfce4a25eb
Merge pull request #1571 from b-eyselein/master
Add Lenovo Thinkpad P16s AMD Gen 4
2025-09-01 17:51:39 +00:00
Jörg Thalheim
232f44c2d5
Merge pull request #1572 from bashfulrobot/master
Add ThinkPad T14 Intel Gen 6 support
2025-09-01 17:51:17 +00:00
Jörg Thalheim
c38b907bd4
Merge pull request #1576 from Gigahawk/tc358743-media-controller
raspberry-pi/4: support enabling/disabling media-controller api on tc358743
2025-09-01 17:50:43 +00:00
Jörg Thalheim
65b725a43e
Merge pull request #1578 from rumlenordstroem/macbookpro11,4
Added macbook pro 11,4 config
2025-09-01 17:50:29 +00:00
Jörg Thalheim
fe8baa10f9
Merge pull request #1582 from NixOS/dependabot/github_actions/actions/checkout-5
build(deps): bump actions/checkout from 4 to 5
2025-09-01 17:49:55 +00:00
Jörg Thalheim
74dc6125d0
Merge pull request #1584 from ktechmidas/G533Q
Added g533q config
2025-09-01 17:49:32 +00:00
Hannah Izzie Gesser
e903fd796d Revert "apple: add hid_apple.iso_layout=0 kernel param"
This reverts commit e228c7827b.
2025-09-01 19:42:22 +02:00
Jörg Thalheim
682c8615f1
Merge pull request #1593 from janTatesa/master
fix: add missing import of ideapad 16iah8
2025-09-01 17:41:03 +00:00
Jörg Thalheim
f08ec094d3
Merge pull request #1594 from mkorje/master
apple/t2: kernel 6.15 -> 6.16; sync patches
2025-09-01 17:40:42 +00:00
Jörg Thalheim
21030ae98d
Merge pull request #1595 from spacifici/dell_precision_7520_stable_nvidia_driver
dell/precision/7520: use stable nvidia driver (not legacy)
2025-09-01 17:40:31 +00:00
Jörg Thalheim
3e10646c9b
Merge pull request #1598 from KaiStarkk/patch-1
microsoft/surface: update wireplumber docs
2025-09-01 17:32:11 +00:00
KaiStarkk
a57aded40e
Update README.md - wireplumber example issue 2025-09-02 01:19:01 +10:00
mkorje
f3444245a7
apple/t2: sync stable patches (6.12.43 -> 6.12.44) 2025-09-01 21:05:51 +10:00
mkorje
9691e6ee8a
apple/t2: sync stable patches 2025-08-30 00:52:57 +10:00
Stefano Pacifici
bfda6f34d3 dell/precision/7520: use stable nvidia driver (not legacy) 2025-08-29 14:09:23 +02:00
Mads Rumle Nordstrøm
59e2d82cc2 ran formatter for mbp11,4 2025-08-29 11:16:31 +02:00
lantianx
6439a46c7c feat: add MECHREVO Yilong15Pro(GM5HG0A) 2025-08-28 00:44:54 +08:00
Tatesa Uradnik
cfb36e4feb
fix: add missing import of ideapad 16iah8 2025-08-27 13:05:58 +02:00
Jörg Thalheim
a65b650d69
Merge pull request #1590 from FrameworkComputer/fw16-nomicjack
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
framework 16: Remove headset quirk
2025-08-26 21:50:47 +00:00
Jörg Thalheim
048c7bbca5
Merge pull request #1591 from FrameworkComputer/framework-fwupd
framework: Enable fwupd by default
2025-08-26 21:49:20 +00:00
Daniel Schaefer
3a4da5f8c1 framework: Enable fwupd by default
Users should keep their firmware (not just BIOS) up to date.
Framework 13 Intel 11-13th Gen have some components that can't be
updated with fwupd, so some BIOS versions are better to be installed
through the EFI shell or Windows.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2025-08-27 01:11:13 +08:00
Daniel Schaefer
cd3d24b038 Add Framework Laptop 16 AMD AI 300 Series
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2025-08-27 00:50:53 +08:00
Daniel Schaefer
c13241f1c0 framework 16: Remove headset quirk
Framework 16 does not have a built-in headphone jack, this is not
needed.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
2025-08-27 00:30:49 +08:00
Ace Hathaway
cc896f1f7e
Merge branch 'NixOS:master' into master 2025-08-22 16:41:52 -04:00
Aaron Adams
8137ca755e
Merge branch 'master' into dell-precision-5570 2025-08-21 08:55:32 +08:00
fidgetingbits
ebd8f57cd9
Fix probe id and switch from sync to offload 2025-08-21 08:52:27 +08:00
ktechmidas
5e741b56dc added supporting files 2025-08-20 13:50:51 +03:00
ktechmidas
17113fc124 Added g533q 2025-08-20 13:42:37 +03:00
bashfulrobot
0413405b45
feat: add ThinkPad T14 Intel Gen 6 hardware support
Add complete hardware profile for Lenovo ThinkPad T14 Intel Gen 6 with:
- Lunar Lake CPU architecture support with modern kernel requirements
- Intel Arc graphics integration
- Kernel parameters for backlight and touchpad optimization
- Fingerprint reader support with comprehensive PAM configuration guidance
- Disabled throttled service for modern Intel power management
- Updated flake.nix and README.md with new module entries

Includes detailed documentation for fingerprint authentication setup
with warnings about potential login issues and proper PAM configuration
in host systems. Follows CONTRIBUTING.md guidelines for profile structure.
2025-08-19 10:29:33 -07:00
Cassie Cheung
e3e3717d85
apple/t2: kernel 6.15 -> 6.16; sync patches 2025-08-19 20:39:53 +08:00
Mads Rumle Nordstrøm
2d512d0f4e removed s2idle for macbookpro11,4 as default 2025-08-18 13:14:33 +02:00
dependabot[bot]
6287c9e15f
build(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 03:34:00 +00:00
Jörg Thalheim
3dac8a8725
Merge pull request #1579 from mjschwenne/fix-surface-kernel
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
Fix Typo Preventing Microsoft Surface Kernels from Building
2025-08-16 07:44:41 +00:00
Matt Schwennesen
c006c5a59b formatting 2025-08-15 23:00:53 -05:00
Matt Schwennesen
7dd36b62fc fix typo casuing error 2025-08-15 18:22:42 -05:00
Mads Rumle Nordstrøm
292aeb6fd6 added macbook pro 11,4 config 2025-08-15 13:16:50 +02:00
Jasper Chan
c4af46bb6a raspberry-pi/4: support enabling/disabling media-controller api on tc358743 2025-08-13 21:48:22 -07:00
Jairo Llopis
79649965c5
fix(raspberry-pi-4): enable building kernel
Fixes https://github.com/NixOS/nixos-hardware/issues/858
2025-08-11 08:12:40 +02:00
eymeric
680761f019
fix: tc358743 dt overlay 2025-08-08 22:41:18 +02:00
Björn Eyselein
139a6586ed Add Lenovo Thinkpad P16s AMD Gen 4
Signed-off-by: Björn Eyselein <eyselein@infosim.net>
2025-08-08 09:51:11 +02:00
pancho horrillo
aaecdd8d3b
Update flake.lock, dropping unused nixpkgs input
On a7600cef40 all the
inputs on `flake.nix` were moved to `tests/flake.nix`, but `flake.lock`
was not updated correctly, and a reference to `nixpkgs` still remains,
producing this error upon evaluation when used as an input in my flake:

    evaluating file '<nix/derivation-internal.nix>'copying "/nix/store/xjzjf1f6nyg6yqxb6v5awf9hs14606yp-source" to the store...evaluating file '/nix/store/xjzjf1f6nyg6yqxb6v5awf9hs14606yp-source/flake.nix'evaluating file '/nix/store/xjzjf1f6nyg6yqxb6v5awf9hs14606yp-source/flake.nix'warning: updating lock file '"/nix/store/xjzjf1f6nyg6yqxb6v5awf9hs14606yp-source/flake.lock"':• Removed input 'nixpkgs'error:… while updating the lock file of flake 'path:/nix/store/xjzjf1f6nyg6yqxb6v5awf9hs14606yp-source?lastModified=0&narHash=sha256-dz303vGuzWjzOPOaYkS9xSW%2BB93PSAJxvBd6CambXVA%3D'error: opening file '/nix/store/xjzjf1f6nyg6yqxb6v5awf9hs14606yp-source/flake.lock': Read-only file system

I’ve thus updated `flake.lock` with the standard procedure:

```console
❯ nix flake lock --verbose
warning: updating lock file '"/home/pancho/sandbox/NixOS/nixos-hardware/flake.lock"':
• Removed input 'nixpkgs'
```
2025-08-08 07:17:15 +02:00
0x4A6F
26ed7a0d4b
Merge pull request #1552 from FrameworkComputer/framework-desktop
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
framework: Add Framework Desktop
2025-08-07 10:54:08 +00:00
0x4A6F
cd88704818
Merge pull request #1551 from FrameworkComputer/framework12-tabletmode
framework/12-inch: Fix tabletmode
2025-08-07 10:53:29 +00:00
Daniel Schaefer
df02f4f16a framework/12-inch: Fix tabletmode on some kernels
NixOS kernels don't have pinctrl_tigerlake built-in, we need to make
sure it loads before soc_button_array. Adding it to the initrd ensures
that.

Signed-off-by: Daniel Schaefer <git@danielschaefer.me>
2025-08-07 18:09:04 +08:00
Daniel Schaefer
659b41d59c framework/desktop: Add minimum kernel version
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2025-08-07 18:07:43 +08:00
Daniel Schaefer
9157552825 framework: Add Framework Desktop
Signed-off-by: Daniel Schaefer <dhs@frame.work>
2025-08-07 18:07:18 +08:00
Nicky Mouha
8972e6538b
framework/13-inch/intel-core-ultra-series1: revert #1358 (fix intel_vpu firmware error -2) 2025-08-06 13:04:39 -04:00
0x4A6F
9368056b73
Merge pull request #1564 from 0x4A6F/master-framework-13-amd-ai-300-series-kernel-fixup
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
framework-amd-ai-300-series: mkDefault boot.kernelPackages
2025-08-04 14:07:56 +00:00
0x4A6F
547c96d797
framework-amd-ai-300-series: mkDefault boot.kernelPackages 2025-08-04 12:42:15 +02:00
Jörg Thalheim
a872d98539
Merge pull request #1563 from 0x4A6F/master-framework-13-amd-ai-300-series-kernel
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
framework-amd-ai-300-series: bump kernel to latest for suspend support
2025-08-03 14:03:14 +00:00
0x4A6F
d99ca4e5f4
framework-amd-ai-300-series: bump kernel to latest for suspend support 2025-08-03 14:07:00 +02:00
Flameopathic
26c9d90663 lenovo/yoga/7/14ILL10: update kernel version requirement 2025-08-02 22:53:06 -04:00
matthiasdotsh
f30fc54b0e surface: linux 6.15.6 -> 6.15.9 2025-08-01 12:45:10 +02:00
florian
c92f8fc536
style: apply formatter 2025-07-31 15:42:08 +02:00
suzana2314
28fc41508c
lenovo-legion-15ach6h: added hybrid and nvidia configurations 2025-07-28 18:51:21 +01:00
omeyemburg
85070738e9
macbook-pro/8-1: remove redundant line in readme 2025-07-27 11:50:21 +02:00
omeyemburg
1f7ed6211f
macbook-pro/12-1: remove redundant bracket in readme 2025-07-27 11:49:59 +02:00
Rituraj
37d0301b3c
Removed enableAllFirmware, BT doesn't rely on it 2025-07-26 18:13:24 +05:30
Ace-h121
c46bd952e9 Forgot to add lib.mkDefault 2025-07-23 23:13:43 -04:00
Ace-h121
25fdfb36a7 Adding Power Management on Asus fa507nv
I personally own this laptop, I am running gnome and on sleep the
graphics always corrupt without fail, this setting has been the only way
to correct it.
2025-07-23 23:07:00 -04:00
Aaron Adams
19b899ead6
Merge branch 'master' into dell-precision-5570 2025-07-24 10:33:29 +08:00
fidgetingbits
b90855f92a
Added Dell Precision 5570 2025-07-24 10:31:11 +08:00
Jörg Thalheim
cc66fddc6c
Merge pull request #1525 from shinishiho/patch-1
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
asus: fix charge-upto script
2025-07-21 18:32:21 +00:00
Jörg Thalheim
e792f2f4ac
Merge pull request #1526 from pokon548/fix-flip_done-timeout
Add flip_done timeout workaround for 14IMH9
2025-07-21 18:31:26 +00:00
Jörg Thalheim
5efc6e9418
Merge pull request #1537 from LucasFA/init-nuc5i5RYB
init: NUC 5i5RYB
2025-07-21 18:13:43 +00:00
Jörg Thalheim
2b75e96d0d
Merge pull request #1538 from matthiasdotsh/ms-surface/update-kernel-6.15.6
surface: linux 6.15.3 -> 6.15.6
2025-07-21 18:13:16 +00:00
0x4A6F
d1bfa8f6cc
Merge pull request #1527 from anna-oake/patch-1
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
framework-intel-core-ultra-series1: preset device name for audio enhancement
2025-07-16 11:50:37 +00:00
Anna Oake
95ee2804d7 framework-intel-core-ultra-series1: preset device name for audio enhancement 2025-07-15 13:31:45 +02:00
matthiasdotsh
8ea54c025e surface: linux 6.15.3 -> 6.15.6 2025-07-14 17:09:26 +02:00
LucasFA
9410081079 init: NUC 5i5RYB 2025-07-13 12:47:18 +01:00
Jörg Thalheim
7ced9122cf
Merge pull request #1532 from NixOS/add-missing-pr
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
added inspiron 3442 to the flake
2025-07-09 08:16:00 +00:00
Rituraj
323366c51c added inspiron 3442 to the flake 2025-07-09 09:56:25 +02:00
Jasper Chan
6015af43f3 raspberry-pi/4: support 4lane csi 2025-07-08 12:26:38 -07:00
Bu Kun
41f2cad3f9
Add flip_done timeout workaround for 14IMH9 2025-07-06 19:21:15 +08:00
Đỗ Quang Minh
1828627b08
asus: fix charge-upto script 2025-07-04 06:48:03 +07:00
Jörg Thalheim
497ae1357f
Merge pull request #1516 from RossComputerGuy/feat/system76-thelio-mega
Some checks failed
Test / nixfmt (push) Has been cancelled
Test / tests (push) Has been cancelled
Add System76 Thelio Mega module
2025-07-02 05:05:11 +00:00
Jörg Thalheim
d2a1b158ac
Merge pull request #1522 from Rishabh5321/master
xiaomi/redmibook/15-pro-2021: fix declaration of device.
2025-07-02 05:04:43 +00:00
Tristan Ross
3b622ae6e6
Add System76 Thelio Mega module 2025-07-01 21:13:30 -07:00
Rishabh
a724614b86 xiaomi/redmibook/15-pro-2021: fix flake.nix 2025-07-02 07:52:52 +05:30
florianvazelle
66e88bdcaa asus/rog-gl552vw: init 2025-07-01 22:15:31 +02:00
182 changed files with 14941 additions and 1430 deletions

View file

@ -9,13 +9,13 @@ jobs:
nixfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- uses: cachix/install-nix-action@v31
- run: cd tests && nix fmt .. -- --fail-on-change
- run: nix build .#checks.x86_64-linux.formatting
tests:
needs: nixfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- uses: cachix/install-nix-action@v31
- run: nix run ./tests#run .
- run: nix run .#run-tests

View file

@ -11,4 +11,4 @@ purism/librem/13v3 @yegortimoshenko
system76/darp6 @khumba
framework @emiller88
tuxedo/pulse/15/gen2 @trueNAHO
tuxedo/pulse/14/gen3 @gabyx @britter @trueNAHO
tuxedo/pulse/14/gen3 @gabyx @britter

View file

@ -14,8 +14,9 @@ For example:
```nix
{ lib }: {
# Using mkDefault, because the user might want to disable tlp
services.tlp.enable = lib.mkDefault true;
# Using mkDefault, because the user might want to disable power-profiles-daemon
services.power-profiles-daemon.enable = lib.mkDefault true;
# No need to use mkDefault, because the setting will merge with the user's setting
boot.kernelModules = [ "tmp_smapi" ];
}
@ -42,7 +43,7 @@ Link the profile in the table in README.md and in flake.nix.
## 3. Testing
Run `nix run ./tests#run .` to evaluate all hardware profiles.
Run `nix run .#run-tests` to evaluate all hardware profiles.
Because profiles can only be tested with the appropriate hardware, quality
assurance is up to *you*.

View file

@ -85,18 +85,20 @@ All contributors and users are welcome to join!
See code for all available configurations.
| Model | Path | Flake Module |
| --------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------- |
| --------------------------------------------------------------------------------- | ------------------------------------------------------- | -------------------------------------- |
| [Acer Aspire 4810T](acer/aspire/4810t) | `<nixos-hardware/acer/aspire/4810t>` | `acer-aspire-4810t` |
| [Airis N990](airis/n990) | `<nixos-hardware/airis/n990>` | `airis-n990` |
| [Apple iMac 14.2](apple/imac/14-2) | `<nixos-hardware/apple/imac/14-2>` | `apple-imac-14-2` |
| [Apple iMac 18.2](apple/imac/18-2) | `<nixos-hardware/apple/imac/18-2>` | `apple-imac-18-2` |
| [Apple MacBook Air 3,X](apple/macbook-air/3) | `<nixos-hardware/apple/macbook-air/3>` | `apple-macbook-air-3` |
| [Apple MacBook Air 4,X](apple/macbook-air/4) | `<nixos-hardware/apple/macbook-air/4>` | `apple-macbook-air-4` |
| [Apple MacBook Air 5,X](apple/macbook-air/5) | `<nixos-hardware/apple/macbook-air/5>` | `apple-macbook-air-5` |
| [Apple MacBook Air 6,X](apple/macbook-air/6) | `<nixos-hardware/apple/macbook-air/6>` | `apple-macbook-air-6` |
| [Apple MacBook Air 7,X](apple/macbook-air/7) | `<nixos-hardware/apple/macbook-air/7>` | `apple-macbook-air-7` |
| [Apple MacBook Pro 8,1](apple/macbook-pro/8-1) | `<nixos-hardware/apple/macbook-pro/8-1>` | `apple-macbook-pro-8-1` |
| [Apple MacBook Pro 10,1](apple/macbook-pro/10-1) | `<nixos-hardware/apple/macbook-pro/10-1>` | `apple-macbook-pro-10-1` |
| [Apple MacBook Pro 11,1](apple/macbook-pro/11-1) | `<nixos-hardware/apple/macbook-pro/11-1>` | `apple-macbook-pro-11-1` |
| [Apple MacBook Pro 11,4](apple/macbook-pro/11-4) | `<nixos-hardware/apple/macbook-pro/11-4>` | `apple-macbook-pro-11-4` |
| [Apple MacBook Pro 11,5](apple/macbook-pro/11-5) | `<nixos-hardware/apple/macbook-pro/11-5>` | `apple-macbook-pro-11-5` |
| [Apple MacBook Pro 12,1](apple/macbook-pro/12-1) | `<nixos-hardware/apple/macbook-pro/12-1>` | `apple-macbook-pro-12-1` |
| [Apple MacBook Pro 14,1](apple/macbook-pro/14-1) | `<nixos-hardware/apple/macbook-pro/14-1>` | `apple-macbook-pro-14-1` |
@ -107,8 +109,10 @@ See code for all available configurations.
| [Asus ROG Ally RC71L (2023)](asus/ally/rc71l) | `<nixos-hardware/asus/ally/rc71l>` | `asus-ally-rc71l` |
| [Asus ROG Flow X13 GV302X\* (2023)](asus/flow/gv302x/amdgpu) | `<nixos-hardware/asus/flow/gv302x/amdgpu>` | `asus-flow-gv302x-amdgpu` |
| [Asus ROG Flow X13 GV302X\* (2023)](asus/flow/gv302x/nvidia) | `<nixos-hardware/asus/flow/gv302x/nvidia>` | `asus-flow-gv302x-nvidia` |
| [Asus ROG GL552VW](asus/rog-gl552vw) | `<nixos-hardware/asus/rog-gl552vw>` | `asus-rog-gl552vw` |
| [Asus ROG Strix G513IM](asus/rog-strix/g513im) | `<nixos-hardware/asus/rog-strix/g513im>` | `asus-rog-strix-g513im` |
| [Asus ROG Strix G533ZW](asus/rog-strix/g533zw) | `<nixos-hardware/asus/rog-strix/g533zw>` | `asus-rog-strix-g533zw` |
| [Asus ROG Strix G533Q](asus/rog-strix/g533q) | `<nixos-hardware/asus/rog-strix/g533q>` | `asus-rog-strix-g533zw` |
| [Asus ROG Strix G713IE](asus/rog-strix/g713ie) | `<nixos-hardware/asus/rog-strix/g713ie>` | `asus-rog-strix-g713ie` |
| [Asus ROG Strix G733QS](asus/rog-strix/g733qs) | `<nixos-hardware/asus/rog-strix/g733qs>` | `asus-rog-strix-g733qs` |
| [Asus ROG Strix X570-E GAMING](asus/rog-strix/x570e) | `<nixos-hardware/asus/rog-strix/x570e>` | `asus-rog-strix-x570e` |
@ -129,6 +133,7 @@ See code for all available configurations.
| [Asus Zenbook Duo 14 UX481](asus/zenbook/ux481/nvidia/) | `<nixos-hardware/asus/zenbook/ux481/nvidia>` | `asus-zenbook-ux481-nvidia` |
| [Asus Zenbook Flip S13 UX371](asus/zenbook/ux371/) | `<nixos-hardware/asus/zenbook/ux371>` | `asus-zenbook-ux371` |
| [Asus Zenbook Pro 15 UX535](asus/zenbook/ux535/) | `<nixos-hardware/asus/zenbook/ux535>` | `asus-zenbook-ux535` |
| [Asus Zenbook Pro 17 UM6702](asus/zenbook/um6702/) | `<nixos-hardware/asus/zenbook/um6702>` | `asus-zenbook-um6702` |
| [BeagleBoard PocketBeagle](beagleboard/pocketbeagle) | `<nixos-hardware/beagleboard/pocketbeagle>` | `beagleboard-pocketbeagle` |
| [Chuwi MiniBook X](chuwi/minibook-x) | `<nixos-hardware/chuwi/minibook-x>` | `chuwi-minibook-x` |
| [Deciso DEC series](deciso/dec) | `<nixos-hardware/deciso/dec>` | `deciso-dec` |
@ -159,6 +164,8 @@ See code for all available configurations.
| [Dell Precision 3541](dell/precision/3541) | `<nixos-hardware/dell/precision/3541>` | `dell-precision-3541` |
| [Dell Precision 5490](dell/precision/5490) | `<nixos-hardware/dell/precision/5490>` | `dell-precision-5490` |
| [Dell Precision 5530](dell/precision/5530) | `<nixos-hardware/dell/precision/5530>` | `dell-precision-5530` |
| [Dell Precision 5560](dell/precision/5560) | `<nixos-hardware/dell/precision/5560>` | `dell-precision-5560` |
| [Dell Precision 5570](dell/precision/5570) | `<nixos-hardware/dell/precision/5570>` | `dell-precision-5570` |
| [Dell Precision 7520](dell/precision/7520) | `<nixos-hardware/dell/precision/7520>` | `dell-precision-7520` |
| [Dell XPS 13 7390](dell/xps/13-7390) | `<nixos-hardware/dell/xps/13-7390>` | `dell-xps-13-7390` |
| [Dell XPS 13 9300](dell/xps/13-9300) | `<nixos-hardware/dell/xps/13-9300>` | `dell-xps-13-9300` |
@ -192,16 +199,18 @@ See code for all available configurations.
| [Dell XPS 17 9700, nvidia](dell/xps/17-9700/nvidia) | `<nixos-hardware/dell/xps/17-9700/nvidia>` | `dell-xps-17-9700-nvidia` |
| [Dell XPS 17 9710, intel only](dell/xps/17-9710/intel) | `<nixos-hardware/dell/xps/17-9710/intel>` | `dell-xps-17-9710-intel` |
| [Framework 11th Gen Intel Core](framework/13-inch/11th-gen-intel) | `<nixos-hardware/framework/13-inch/11th-gen-intel>` | `framework-11th-gen-intel` |
| [Framework 12th Gen Intel Core](framework/12-inch/13th-gen-intel) | `<nixos-hardware/framework/12-inch/13th-gen-intel>` | `framework-12th-gen-intel` |
| [Framework 12th Gen Intel Core](framework/13-inch/12th-gen-intel) | `<nixos-hardware/framework/13-inch/12th-gen-intel>` | `framework-12th-gen-intel` |
| [Framework 13th Gen Intel Core](framework/13-inch/13th-gen-intel) | `<nixos-hardware/framework/13-inch/13th-gen-intel>` | `framework-13th-gen-intel` |
| [Framework Intel Core Ultra Series 1](framework/13-inch/intel-core-ultra-series1) | `<nixos-hardware/framework/13-inch/intel-core-ultra-series1>` | `framework-intel-core-ultra-series1` |
| [Framework 13 AMD Ryzen 7040 Series](framework/13-inch/7040-amd) | `<nixos-hardware/framework/13-inch/7040-amd>` | `framework-13-7040-amd` |
| [Framework 13 AMD AI 300 Series](framework/13-inch/amd-ai-300-series) | `<nixos-hardware/framework/13-inch/amd-ai-300-series>` | `framework-amd-ai-300-series` |
| [Framework 12 13th Gen Intel Core](framework/12-inch/13th-gen-intel) | `<nixos-hardware/framework/12-inch/13th-gen-intel>` | `framework-12-13th-gen-intel` |
| [Framework 16 AMD Ryzen 7040 Series](framework/16-inch/7040-amd) | `<nixos-hardware/framework/16-inch/7040-amd>` | `framework-16-7040-amd` |
| [Framework 16 AMD Ryzen AI 300 Series](framework/16-inch/amd-ai-300-series) | `<nixos-hardware/framework/16-inch/amd-ai-300-series>` | `framework-16-amd-ai-300-series` |
| [FriendlyARM NanoPC-T4](friendlyarm/nanopc-t4) | `<nixos-hardware/friendlyarm/nanopc-t4>` | `friendlyarm-nanopc-t4` |
| [FriendlyARM NanoPi R5s](friendlyarm/nanopi-r5s) | `<nixos-hardware/friendlyarm/nanopi-r5s>` | `friendlyarm-nanopi-r5s` |
| [Focus M2 Gen 1](focus/m2/gen1) | `<nixos-hardware/focus/m2/gen1>` | `focus-m2-gen1` |
| [Fydetab Duo](fydetab/duo) | `<nixos-hardware/fydetab/duo>` | `fydetab-duo` |
| [Gigabyte B550](gigabyte/b550) | `<nixos-hardware/gigabyte/b550>` | `gigabyte-b550` |
| [Gigabyte B650](gigabyte/b650) | `<nixos-hardware/gigabyte/b650>` | `gigabyte-b650` |
| [GMKtec NucBox G3 Plus](gmktec/nucbox/g3-plus) | `<nixos-hardware/gmktec/nucbox/g3-plus>` | `gmktec-nucbox-g3-plus` |
@ -220,10 +229,14 @@ See code for all available configurations.
| [HP Elitebook 845g9](hp/elitebook/845/g9) | `<nixos-hardware/hp/elitebook/845/g9>` | `hp-elitebook-845g9` |
| [HP Laptop 14s-dq2024nf](hp/laptop/14s-dq2024nf) | `<nixos-hardware/hp/laptop/14s-dq2024nf>` | `hp-laptop-14s-dq2024nf` |
| [HP Notebook 14-df0023](hp/notebook/14-df0023) | `<nixos-hardware/hp/notebook/14-df0023>` | `hp-notebook-14-df0023` |
| [HP Probook 440G5](hp/probook/440g5) | `<nixos-hardware/hp/probook/440g5>` | `hp-probook-440G5` |
| [HP Probook 440G5](hp/probook/440G5) | `<nixos-hardware/hp/probook/440G5>` | `hp-probook-440G5` |
| [HP Laptop 14s-dq2024nf](hp/laptop/14s-dq2024nf) | `<nixos-hardware/hp/laptop/14s-dq2024nf>` | `hp-laptop-14s-dq2024nf` |
| [HP Probook 460G11](hp/probook/460g11) | `<nixos-hardware/hp/probook/460g11>` | `hp-probook-46011` |
| [Huawei Matebook X Pro (2020)](huawei/machc-wa) | `<nixos-hardware/huawei/machc-wa>` | `huawei-machc-wa` |
| [i.MX8QuadMax Multisensory Enablement Kit](nxp/imx8qm-mek/) | `<nixos-hardware/nxp/imx8qm-mek>` | `nxp-imx8qm-mek` |
| [Intel NUC 5i5RYB](intel/nuc/5i5ryb/) | `<nixos-hardware/intel/nuc/5i5ryb>` | `intel-nuc-5i5ryb` |
| [Intel NUC 8i7BEH](intel/nuc/8i7beh/) | `<nixos-hardware/intel/nuc/8i7beh>` | `intel-nuc-8i7beh` |
| [Kobol Helios4](kobol/helios4) | `<nixos-hardware/kobol/helios4>` | `kobol-helios-4` |
| [Lenovo IdeaCentre K330](lenovo/ideacentre/k330) | `<nixos-hardware/lenovo/ideacentre/k330>` | `lenovo-ideacentre-k330` |
| [Lenovo IdeaPad 3 15alc6](lenovo/ideapad/15alc6) | `<nixos-hardware/lenovo/ideapad/15alc6>` | `lenovo-ideapad-15alc6` |
| [Lenovo IdeaPad Gaming 3 15arh05](lenovo/ideapad/15arh05) | `<nixos-hardware/lenovo/ideapad/15arh05>` | `lenovo-ideapad-15arh05` |
@ -236,6 +249,8 @@ See code for all available configurations.
| [Lenovo IdeaPad 2-in-1 16ahp9](lenovo/ideapad/16ahp9) | `<nixos-hardware/lenovo/ideapad/16ahp9>` | `lenovo-ideapad-16ahp9` |
| [Lenovo IdeaPad S145 15api](lenovo/ideapad/s145-15api) | `<nixos-hardware/lenovo/ideapad/s145-15api>` | `lenovo-ideapad-s145-15api` |
| [Lenovo Legion 5 15ach6h](lenovo/legion/15ach6h) | `<nixos-hardware/lenovo/legion/15ach6h>` | `lenovo-legion-15ach6h` |
| [Lenovo Legion 5 15ach6h (Hybrid)](lenovo/legion/15ach6h/hybrid) | `<nixos-hardware/lenovo/legion/15ach6h/hybrid>` | `lenovo-legion-15ach6h-hybrid` |
| [Lenovo Legion 5 15ach6h (Nvidia)](lenovo/legion/15ach6h/hybrid) | `<nixos-hardware/lenovo/legion/15ach6h/nvidia>` | `lenovo-legion-15ach6h-nvidia` |
| [Lenovo Legion 5 15arh05h](lenovo/legion/15arh05h) | `<nixos-hardware/lenovo/legion/15arh05h>` | `lenovo-legion-15arh05h` |
| [Lenovo Legion 7 Slim 15ach6](lenovo/legion/15ach6) | `<nixos-hardware/lenovo/legion/15ach6>` | `lenovo-legion-15ach6` |
| [Lenovo Legion 5 Pro 16ach6h](lenovo/legion/16ach6h) | `<nixos-hardware/lenovo/legion/16ach6h>` | `lenovo-legion-16ach6h` |
@ -248,9 +263,10 @@ See code for all available configurations.
| [Lenovo Legion 7 16achg6 (Nvidia)](lenovo/legion/16achg6/nvidia) | `<nixos-hardware/lenovo/legion/16achg6/nvidia>` | `lenovo-legion-16achg6-nvidia` |
| [Lenovo Legion 7i Pro 16irx8h (Intel)](lenovo/legion/16irx8h) | `<nixos-hardware/lenovo/legion/16irx8h>` | `lenovo-legion-16irx8h` |
| [Lenovo Legion 7 Pro 16irx9h (Intel)](lenovo/legion/16irx9h) | `<nixos-hardware/lenovo/legion/16irx9h>` | `lenovo-legion-16irx9h` |
| [Lenovo Legion Slim 5](lenovo/legion/16aph8/) | `<nixos-hardware/lenovo/legion/16aph8>` | `lenovo-legion-16aph8` |
| [Lenovo Legion Slim 7 Gen 7 (AMD)](lenovo/legion/16arha7/) | `<nixos-hardware/lenovo/legion/16arha7>` | `lenovo-legion-16arha7` |
| [Lenovo Legion T5 AMR5](lenovo/legion/t526amr5) | `<nixos-hardware/lenovo/legion/t526amr5>` | `lenovo-legion-t526amr5` |
| [Lenovo Legion Y530 15ICH](lenovo/legion/15ich) | `<nixos-hardware/lenovo/legion/15ich>` | `lenovo-legion-15ich` |
| [Lenovo Legion Y530 15ICH](lenovo/legion/15ich) | `<nixos-hardware/lenovo/legion/15ich>` | `lenovo-legion-y530-15ich` |
| [Lenovo ThinkPad A475](lenovo/thinkpad/a475) | `<nixos-hardware/lenovo/thinkpad/a475>` | `lenovo-thinkpad-a475` |
| [Lenovo ThinkPad E14 (AMD)](lenovo/thinkpad/e14/amd) | `<nixos-hardware/lenovo/thinkpad/e14/amd>` | `lenovo-thinkpad-e14-amd` |
| [Lenovo ThinkPad E14 (Intel - Gen 1)](lenovo/thinkpad/e14/intel) | `<nixos-hardware/lenovo/thinkpad/e14/intel>` | `lenovo-thinkpad-e14-intel` |
@ -270,10 +286,12 @@ See code for all available configurations.
| [Lenovo ThinkPad P14s AMD Gen 3](lenovo/thinkpad/p14s/amd/gen3) | `<nixos-hardware/lenovo/thinkpad/p14s/amd/gen3>` | `lenovo-thinkpad-p14s-amd-gen3` |
| [Lenovo ThinkPad P14s AMD Gen 4](lenovo/thinkpad/p14s/amd/gen4) | `<nixos-hardware/lenovo/thinkpad/p14s/amd/gen4>` | `lenovo-thinkpad-p14s-amd-gen4` |
| [Lenovo ThinkPad P14s AMD Gen 5](lenovo/thinkpad/p14s/amd/gen5) | `<nixos-hardware/lenovo/thinkpad/p14s/amd/gen5>` | `lenovo-thinkpad-p14s-amd-gen5` |
| [Lenovo ThinkPad P14s Intel Gen 2](lenovo/thinkpad/p14s/intel/gen2) | `<nixos-hardware/lenovo/thinkpad/p14s/intel/gen2>` | `lenovo-thinkpad-p14s-intel-gen2` |
| [Lenovo ThinkPad P14s Intel Gen 3](lenovo/thinkpad/p14s/intel/gen3) | `<nixos-hardware/lenovo/thinkpad/p14s/intel/gen3>` | `lenovo-thinkpad-p14s-intel-gen3` |
| [Lenovo ThinkPad P14s Intel Gen 5](lenovo/thinkpad/p14s/intel/gen5) | `<nixos-hardware/lenovo/thinkpad/p14s/intel/gen5>` | `lenovo-thinkpad-p14s-intel-gen5` |
| [Lenovo ThinkPad P16s AMD Gen 1](lenovo/thinkpad/p16s/amd/gen1) | `<nixos-hardware/lenovo/thinkpad/p16s/amd/gen1>` | `lenovo-thinkpad-p16s-amd-gen1` |
| [Lenovo ThinkPad P16s AMD Gen 2](lenovo/thinkpad/p16s/amd/gen2) | `<nixos-hardware/lenovo/thinkpad/p16s/amd/gen2>` | `lenovo-thinkpad-p16s-amd-gen2` |
| [Lenovo ThinkPad P16s AMD Gen 4](lenovo/thinkpad/p16s/amd/gen4) | `<nixos-hardware/lenovo/thinkpad/p16s/amd/gen4>` | `lenovo-thinkpad-p16s-amd-gen4` |
| [Lenovo ThinkPad P16s Intel Gen 2](lenovo/thinkpad/p16s/intel/gen2) | `<nixos-hardware/lenovo/thinkpad/p16s/intel/gen2>` | `lenovo-thinkpad-p16s-intel-gen2` |
| [Lenovo ThinkPad P1](lenovo/thinkpad/p1) | `<nixos-hardware/lenovo/thinkpad/p1>` | `lenovo-thinkpad-p1` |
| [Lenovo ThinkPad P43s](lenovo/thinkpad/p43s) | `<nixos-hardware/lenovo/thinkpad/p43s>` | `lenovo-thinkpad-p43s` |
@ -287,6 +305,9 @@ See code for all available configurations.
| [Lenovo ThinkPad T14 AMD Gen 4](lenovo/thinkpad/t14/amd/gen4) | `<nixos-hardware/lenovo/thinkpad/t14/amd/gen4>` | `lenovo-thinkpad-t14-amd-gen4` |
| [Lenovo ThinkPad T14 AMD Gen 5](lenovo/thinkpad/t14/amd/gen5) | `<nixos-hardware/lenovo/thinkpad/t14/amd/gen5>` | `lenovo-thinkpad-t14-amd-gen5` |
| [Lenovo ThinkPad T14](lenovo/thinkpad/t14) | `<nixos-hardware/lenovo/thinkpad/t14>` | `lenovo-thinkpad-t14` |
| [Lenovo ThinkPad T14 Intel Gen 1](lenovo/thinkpad/t14/intel/gen1) | `<nixos-hardware/lenovo/thinkpad/t14/intel/gen1>` | `lenovo-thinkpad-t14-intel-gen1` |
| [Lenovo ThinkPad T14 Intel Gen 1 (Nvidia)](lenovo/thinkpad/t14/intel/gen1/nvidia) | `<nixos-hardware/lenovo/thinkpad/t14/intel/gen1/nvidia>`| `lenovo-thinkpad-t14-intel-gen1-nvidia`|
| [Lenovo ThinkPad T14 Intel Gen 6](lenovo/thinkpad/t14/intel/gen6) | `<nixos-hardware/lenovo/thinkpad/t14/intel/gen6>` | `lenovo-thinkpad-t14-intel-gen6` |
| [Lenovo ThinkPad T14s AMD Gen 1](lenovo/thinkpad/t14s/amd/gen1) | `<nixos-hardware/lenovo/thinkpad/t14s/amd/gen1>` | `lenovo-thinkpad-t14s-amd-gen1` |
| [Lenovo ThinkPad T14s AMD Gen 4](lenovo/thinkpad/t14s/amd/gen4) | `<nixos-hardware/lenovo/thinkpad/t14s/amd/gen4>` | `lenovo-thinkpad-t14s-amd-gen4` |
| [Lenovo ThinkPad T14s](lenovo/thinkpad/t14s) | `<nixos-hardware/lenovo/thinkpad/t14s>` | `lenovo-thinkpad-t14s` |
@ -339,8 +360,8 @@ See code for all available configurations.
| [Lenovo ThinkPad X280](lenovo/thinkpad/x280) | `<nixos-hardware/lenovo/thinkpad/x280>` | `lenovo-thinkpad-x280` |
| [Lenovo ThinkPad X390](lenovo/thinkpad/x390) | `<nixos-hardware/lenovo/thinkpad/x390>` | `lenovo-thinkpad-x390` |
| [Lenovo ThinkPad Z Series](lenovo/thinkpad/z) | `<nixos-hardware/lenovo/thinkpad/z>` | `lenovo-thinkpad-z` |
| [Lenovo ThinkPad Z13 Gen 1](lenovo/thinkpad/z/gen1/z13) | `<nixos-hardware/lenovo/thinkpad/z/gen1/z13>` | `lenovo-thinkpad-z-gen1-z13` |
| [Lenovo ThinkPad Z13 Gen 2](lenovo/thinkpad/z/gen2/z13) | `<nixos-hardware/lenovo/thinkpad/z/gen2/z13>` | `lenovo-thinkpad-z-gen2-z13` |
| [Lenovo ThinkPad Z13 Gen 1](lenovo/thinkpad/z/gen1/z13) | `<nixos-hardware/lenovo/thinkpad/z/gen1/z13>` | `lenovo-thinkpad-z13-gen1` |
| [Lenovo ThinkPad Z13 Gen 2](lenovo/thinkpad/z/gen2/z13) | `<nixos-hardware/lenovo/thinkpad/z/gen2/z13>` | `lenovo-thinkpad-z13-gen2` |
| [Lenovo XiaoXin Pro 14imh9 2024](lenovo/ideapad/14imh9) | `<nixos-hardware/lenovo/ideapad/14imh9>` | `lenovo-ideapad-14imh9` |
| [LENOVO Yoga 6 13ALC6 82ND](lenovo/yoga/6/13ALC6) | `<nixos-hardware/lenovo/yoga/6/13ALC6>` | `lenovo-yoga-6-13ALC6` |
| [LENOVO Yoga Slim 7 Pro-X 14ARH7 82ND](lenovo/yoga/7/14ARH7/amdgpu) | `<nixos-hardware/lenovo/yoga/7/14ARH7/amdgpu>` | `lenovo-yoga-7-14ARH7-amdgpu` |
@ -349,25 +370,32 @@ See code for all available configurations.
| [Lenovo Yoga Slim 7i Pro X 14IAH7 (Hybrid)](lenovo/yoga/7/14IAH7/hybrid) | `<nixos-hardware/lenovo/yoga/7/14IAH7/hybrid>` | `lenovo-yoga-7-14IAH7-hybrid` |
| [Lenovo Yoga Slim 7 14ILL10](lenovo/yoga/7/14ILL10) | `<nixos-hardware/lenovo/yoga/7/14ILL10>` | `lenovo-yoga-7-14ILL10` |
| [LENOVO Yoga 7 Slim Gen8](lenovo/yoga/7/slim/gen8) | `<nixos-hardware/lenovo/yoga/7/slim/gen8>` | `lenovo-yoga-7-slim-gen8` |
| [Linglong Nova Studio](linglong/nova-studio) | `<nixos-hardware/linglong/nova-studio>` | `linglong-nova-studio` |
| [MSI B550-A PRO](msi/b550-a-pro) | `<nixos-hardware/msi/b550-a-pro>` | `msi-b550-a-pro` |
| [MSI B350 TOMAHAWK](msi/b350-tomahawk) | `<nixos-hardware/msi/b350-tomahawk>` | `msi-b350-tomahawk` |
| [MSI B550 TOMAHAWK](msi/b550-tomahawk) | `<nixos-hardware/msi/b550-tomahawk>` | `msi-b550-tomahawk` |
| [MSI GS60 2QE](msi/gs60) | `<nixos-hardware/msi/gs60>` | `msi-gs60` |
| [MSI GL62/CX62](msi/gl62) | `<nixos-hardware/msi/gl62>` | `msi-gl62` |
| [MSI GL65 10SDR-492](msi/gl65/10SDR-492) | `<nixos-hardware/msi/gl65/10SDR-492>` | `msi-gl65-10SDR-492` |
| [Malibal Aon S1](malibal/aon/s1) | | `<nixos-hardware/malibal/aon/s1>` | `malibal-aon-s1` |
| [Microchip Icicle Kit](microchip/icicle-kit) | `<nixos-hardware/microchip/icicle-kit>` | `microchip-icicle-kit` |
| [Microsoft Surface Go](microsoft/surface/surface-go) | `<nixos-hardware/microsoft/surface/surface-go>` | `microsoft-surface-surface-go` |
| [Microsoft Surface Pro (Intel)](microsoft/surface/surface-pro-intel) | `<nixos-hardware/microsoft/surface/surface-pro-intel>` | `microsoft-surface-surface-pro-intel` |
| [Microsoft Surface Laptop (AMD)](microsoft/surface/surface-laptop-amd) | `<nixos-hardware/microsoft/surface/surface-laptop-amd>` | `microsoft-surface-surface-laptop-amd` |
| [Microsoft Surface Go](microsoft/surface/surface-go) | `<nixos-hardware/microsoft/surface/surface-go>` | `microsoft-surface-go` |
| [Microsoft Surface Pro (Intel)](microsoft/surface/surface-pro-intel) | `<nixos-hardware/microsoft/surface/surface-pro-intel>` | `microsoft-surface-pro-intel` |
| [Microsoft Surface Laptop (AMD)](microsoft/surface/surface-laptop-amd) | `<nixos-hardware/microsoft/surface/surface-laptop-amd>` | `microsoft-surface-laptop-amd` |
| [Microsoft Surface Range (Common Modules)](microsoft/surface/common) | `<nixos-hardware/microsoft/surface/common>` | `microsoft-surface-common` |
| [Microsoft Surface Pro 3](microsoft/surface-pro/3) | `<nixos-hardware/microsoft/surface-pro/3>` | `microsoft-surface-pro-3` |
| [Microsoft Surface Pro 9](microsoft/surface-pro/9) | `<nixos-hardware/microsoft/surface-pro/9>` | `microsoft-surface-pro-9` |
| [Milk-V Pioneer](milkv/pioneer) | `<nixos-hardware/milkv/pioneer>` | `milkv-pioneer` |
| [Morefine M600](morefine/m600) | `<nixos-hardware/morefine/m600>` | `morefine-m600` |
| [Minisforum V3](minisforum/v3) | `<nixos-hardware/minisforum/v3>` | `minisforum-v3` |
| [MNT Reform with RK3588 module](mnt/reform/rk3588) | `<nixos-hardware/mnt/reform/rk3588` | `mnt-reform-rk3588` |
| [MECHREVO Yilong15Pro](mechrevo/GM5HG0A) | `<nixos-hardware/mechrevo/GM5HG0A>` | `mechrevo-gm5hg0a` |
| [NXP iMX8 MPlus Evaluation Kit](nxp/imx8mp-evk) | `<nixos-hardware/nxp/imx8mp-evk>` | `nxp-imx8mp-evk` |
| [NXP iMX8 MQuad Evaluation Kit](nxp/imx8mq-evk) | `<nixos-hardware/nxp/imx8mq-evk>` | `nxp-imx8mq-evk` |
| [Hardkernel Odroid HC4](hardkernel/odroid-hc4/default.nix) | `<nixos-hardware/hardkernel/odroid-hc4>` | `hardkernel-odroid-hc4` |
| [Hardkernel Odroid H3](hardkernel/odroid-h3/default.nix) | `<nixos-hardware/hardkernel/odroid-h3>` | `hardkernel-odroid-h3` |
| [Hardkernel Odroid H4](hardkernel/odroid-h4/default.nix) | `<nixos-hardware/hardkernel/odroid-h4>` | `hardkernel-odroid-h4` |
| [Olimex TERES-I](olimex/teres_i) | `<nixos-hardware/olimex/teres_i>` | `olimex-teres_i` |
| [Omen 14-fb0798ng](omen/14-fb0798ng) | `<nixos-hardware/omen/14-fb0798ng>` | `omen-14-fb0798ng` |
| [Omen 15-ce002ns](omen/15-ce002ns) | `<nixos-hardware/omen/15-ce002ns>` | `omen-15-ce002ns` |
| [Omen 15-en0010ca](omen/15-en0010ca) | `<nixos-hardware/omen/15-en0010ca>` | `omen-15-en0010ca` |
@ -376,7 +404,8 @@ See code for all available configurations.
| [Omen 15-en1007sa](omen/15-en1007sa) | `<nixos-hardware/omen/15-en1007sa>` | `omen-15-en1007sa` |
| [Omen 15-en0002np](omen/15-en0002np) | `<nixos-hardware/omen/15-en0002np>` | `omen-15-en0002np` |
| [One-Netbook OneNetbook 4](onenetbook/4) | `<nixos-hardware/onenetbook/4>` | `onenetbook-4` |
| [Panasonic Let's Note CF-LX4](panasonic/letsnote/cf-lx4) | `<nixos-hardware/panasonic/letsnote/cf-lx4>` | `panasonic-letsnote-cf-lx4` |
| [Panasonic Let's Note CF-LX3](panasonic/letsnote/cf-lx3) | `<nixos-hardware/panasonic/letsnote/cf-lx3>` | `panasonic-letsnote-cf-lx3` |
| [Panasonic Let's Note CF-LX4](panasonic/letsnote/cf-lx4) | `<nixos-hardware/panasonic/letsnote/cf-lx4>` | `letsnote-cf-lx4` |
| [PC Engines APU](pcengines/apu) | `<nixos-hardware/pcengines/apu>` | `pcengines-apu` |
| [PINE64 Pinebook Pro](pine64/pinebook-pro/) | `<nixos-hardware/pine64/pinebook-pro>` | `pine64-pinebook-pro` |
| [PINE64 RockPro64](pine64/rockpro64/) | `<nixos-hardware/pine64/rockpro64>` | `pine64-rockpro64` |
@ -406,6 +435,7 @@ See code for all available configurations.
| [System76 Darter Pro 6](system76/darp6) | `<nixos-hardware/system76/darp6>` | `system76-darp6` |
| [System76 Gazelle 18](system76/gaze18) | `<nixos-hardware/system76/gaze18>` | `system76-gaze18` |
| [System76 Galago Pro 5](system76/galp5-1650) | `<nixos-hardware/system76/galp5-1650>` | `system76-galp5-1650` |
| [System76 Thelio Mega](system76/thelio-mega) | `<nixos-hardware/system76/thelio-mega>` | `system76-thelio-mega` |
| [Toshiba Chromebook 2 `swanky`](toshiba/swanky) | `<nixos-hardware/toshiba/swanky>` | `toshiba-swanky` |
| [Tuxedo InfinityBook v4](tuxedo/infinitybook/v4) | `<nixos-hardware/tuxedo/infinitybook/v4>` | `tuxedo-infinitybook-v4` |
| [TUXEDO Aura 15 - Gen1](tuxedo/aura/15/gen1) | `<nixos-hardware/tuxedo/aura/15/gen1>` | `tuxedo-aura-15-gen1` |

View file

@ -1,10 +1,6 @@
{ config, lib, ... }:
{
boot.kernelParams = [
"hid_apple.iso_layout=0"
];
hardware.facetimehd.enable = lib.mkDefault (config.nixpkgs.config.allowUnfree or false);
services.mbpfan.enable = lib.mkDefault true;

View file

@ -29,7 +29,6 @@
"bcma"
];
kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.0") pkgs.linuxPackages_latest;
extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
};
hardware = {

View file

@ -0,0 +1,9 @@
{
...
}:
{
imports = [
../.
];
}

View file

@ -1,8 +1,10 @@
{ lib, ... }:
{ config, lib, ... }:
{
imports = [ ../. ];
boot.blacklistedKernelModules = [ "bcma" ];
boot = {
# Divides power consumption by two.
kernelParams = [ "acpi_osi=" ];

View file

@ -6,9 +6,5 @@
../../../common/cpu/intel/haswell
];
# broadcom-wl
hardware.enableRedistributableFirmware = lib.mkDefault true;
# nixos-generate-config doesn't detect this automatically.
boot.extraModulePackages = with config.boot.kernelPackages; [ broadcom_sta ];
boot.kernelModules = [ "wl" ];
}

View file

@ -0,0 +1,42 @@
# Apple MacBookPro11,4
[Product page](https://support.apple.com/en-us/111955)
## Tested Hardware
```console
foo@bar:~$ lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation Crystal Well DRAM Controller [8086:0d04] (rev 08)
00:01.0 PCI bridge [0604]: Intel Corporation Crystal Well PCI Express x16 Controller [8086:0d01] (rev 08)
00:01.1 PCI bridge [0604]: Intel Corporation Crystal Well PCI Express x8 Controller [8086:0d05] (rev 08)
00:02.0 VGA compatible controller [0300]: Intel Corporation Crystal Well Integrated Graphics Controller [8086:0d26] (rev 08)
00:03.0 Audio device [0403]: Intel Corporation Crystal Well HD Audio Controller [8086:0d0c] (rev 08)
00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI [8086:8c31] (rev 05)
00:16.0 Communication controller [0780]: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 [8086:8c3a] (rev 04)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
00:1c.0 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 [8086:8c10] (rev d5)
00:1c.2 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 [8086:8c14] (rev d5)
00:1c.3 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 [8086:8c16] (rev d5)
00:1f.0 ISA bridge [0601]: Intel Corporation HM87 Express LPC Controller [8086:8c4b] (rev 05)
00:1f.3 SMBus [0c05]: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller [8086:8c22] (rev 05)
00:1f.6 Signal processing controller [1180]: Intel Corporation 8 Series Chipset Family Thermal Management Controller [8086:8c24] (rev 05)
01:00.0 SATA controller [0106]: Samsung Electronics Co Ltd S4LN058A01[SSUBX] AHCI SSD Controller (Apple slot) [144d:a801] (rev 01)
03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM43602 802.11ac Wireless LAN SoC [14e4:43ba] (rev 01)
04:00.0 Multimedia controller [0480]: Broadcom Inc. and subsidiaries 720p FaceTime HD Camera [14e4:1570]
05:00.0 PCI bridge [0604]: Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] [8086:156d]
06:00.0 PCI bridge [0604]: Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] [8086:156d]
06:03.0 PCI bridge [0604]: Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] [8086:156d]
06:04.0 PCI bridge [0604]: Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] [8086:156d]
06:05.0 PCI bridge [0604]: Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] [8086:156d]
06:06.0 PCI bridge [0604]: Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] [8086:156d]
07:00.0 System peripheral [0880]: Intel Corporation DSL5520 Thunderbolt 2 NHI [Falcon Ridge 4C 2013] [8086:156c]
```
## Tested Nix Configuration
- system: `"x86_64-linux"`
- host os: `Linux 6.12.36, NixOS, 25.11 (Xantusia), 25.11.20250708.9807714`
- multi-user?: `yes`
- sandbox: `yes`
- version: `nix-env (Nix) 2.28.4`
- channels(root): `"nixos"`
- nixpkgs: `/nix/store/bgl6ldj5ihbwcq8p42z3a0qzgqafgk2b-source`

View file

@ -0,0 +1,17 @@
{
lib,
config,
pkgs,
modulesPath,
...
}:
{
imports = [
../.
../../../common/cpu/intel/haswell
../../../common/pc/ssd
"${modulesPath}/hardware/network/broadcom-43xx.nix"
];
hardware.graphics.enable = lib.mkDefault true;
}

View file

@ -9,7 +9,6 @@ This means it might be required to restart your wifi deamon i.e. wpa_supplicant:
powerManagement.powerUpCommands = ''
${pkgs.systemd}/bin/systemctl restart wpa_supplicant.service
'';
};
```
You can apply this to your network management software of choice.

View file

@ -12,7 +12,6 @@
"b43-firmware"
];
}
```
### For all packages

View file

@ -1,5 +1,5 @@
{
"base_url": "https://raw.githubusercontent.com/t2linux/linux-t2-patches/8ec11f3aaa314d25e18842851a2124c0031e2e3f/",
"base_url": "https://raw.githubusercontent.com/t2linux/linux-t2-patches/6b41c3fd65913e0fa3592ad16ff4a3a5b01efc7a/",
"patches": [
{
"name": "1001-Add-apple-bce-driver.patch",
@ -37,29 +37,9 @@
"name": "1011-HID-multitouch-add-device-ID-for-Apple-Touch-Bar.patch",
"hash": "sha256-dIzEOj89D2rIEc2/mjq3TkIfI3ZHzu0VRDQQOzp+Snc="
},
{
"name": "1013-lib-vsprintf-Add-support-for-generic-FourCCs-by-exte.patch",
"hash": "sha256-g8M3j1ZPND10/LtPD/txaSoJGV9Lp+g5bgn+vQc56p4="
},
{
"name": "1014-printf-add-tests-for-generic-FourCCs.patch",
"hash": "sha256-5Z4cFBMAY695OEU/CxiGQkUz68zmKdxssD+yp1DCYgs="
},
{
"name": "1015-drm-appletbdrm-use-p4cl-instead-of-p4cc.patch",
"hash": "sha256-rZej0ZbpPv+8NROuYnf4Jpu9scCsmbKWyz7yf5A3G3s="
},
{
"name": "1016-vsprintf-Use-p4chR-instead-of-p4cn-for-reading-data-.patch",
"hash": "sha256-/Ork2CmYk6SG213Owk+nGsw7KTEVDLRzQTeWcKrPZGw="
},
{
"name": "1017-checkpatch-remove-p4cn.patch",
"hash": "sha256-lnMnjnMiR9WSNf/XYsiOwFdC9xKv8zSluWiR584xFPU="
},
{
"name": "2008-i915-4-lane-quirk-for-mbp15-1.patch",
"hash": "sha256-Ui9tK4IGSWfEscmD92emX/NfulO0m8zwLc9ivIClCFQ="
"hash": "sha256-PjMVt4u505PXnKFpojov0Uwhj0KxZas1E4NYJGI6lQ4="
},
{
"name": "2009-apple-gmux-allow-switching-to-igpu-at-probe.patch",
@ -103,7 +83,7 @@
},
{
"name": "4001-asahi-trackpad.patch",
"hash": "sha256-QM/FtDft4N4imJBuEHg6cH3e8vEyMPLt0alDhugLPy8="
"hash": "sha256-nOpQ3t+QQXco6p7C03fM5EZ3ZfnzwC6UCFwHQd1EnGE="
},
{
"name": "4002-HID-quirks-remove-T2-devices-from-hid_mouse_ignore_l.patch",
@ -115,7 +95,7 @@
},
{
"name": "4004-HID-magicmouse-Add-support-for-trackpads-found-on-T2.patch",
"hash": "sha256-HcPX7gY3hnlwM/tY06pbtXnch04AqwHgC596E8ZqGY8="
"hash": "sha256-dNrpDlIE9SaQUOntVQHMOyj7T/dsuRemN56yskKWue0="
},
{
"name": "4005-HID-apple-Add-necessary-IDs-and-support-for-replacem.patch",
@ -123,15 +103,15 @@
},
{
"name": "4006-HID-magicmouse-Add-MacBookPro15-1-replacement-trackp.patch",
"hash": "sha256-uAlT/4ADwYyKvbuPQaGwqCjZ2/myruC63etVV6cfFLk="
"hash": "sha256-mMqHhxig+Z9eVPaa1qfcNVCRX16B6/KuEd1KnSZMLLk="
},
{
"name": "7001-drm-i915-fbdev-Discard-BIOS-framebuffers-exceeding-h.patch",
"hash": "sha256-O6RHFxmKZn7aCq1D+r5z2T3jLt0r5+01EABD9rs0E5M="
"hash": "sha256-/EKN7JsAxcpAgfJFtPp2NLYaGqQ0kl8wjJEXifSzJpY="
},
{
"name": "8001-Add-APFS-driver.patch",
"hash": "sha256-io17Kk6FDscDoDshddK9TqSPuXVFTzjvRUwOGTl5cjM="
"hash": "sha256-uR5hg75SFFWzfrKyU5UnzPL4U7LkjqGs44rkxM7ur8o="
},
{
"name": "8002-Necessary-modifications-to-build-APFS-with-the-kerne.patch",

View file

@ -1,6 +1,6 @@
{ callPackage, linux_6_15, ... }@args:
{ callPackage, linux_6_16, ... }@args:
callPackage ./generic.nix args {
kernel = linux_6_15;
kernel = linux_6_16;
patchesFile = ./latest.json;
}

View file

@ -1,5 +1,5 @@
{
"base_url": "https://raw.githubusercontent.com/t2linux/linux-t2-patches/e08a76e1f1234885b9b68be6c843bf91833e8b0a/",
"base_url": "https://raw.githubusercontent.com/t2linux/linux-t2-patches/5eaf1261d069bbc67aba7fe2737a5fe981e05a9e/",
"patches": [
{
"name": "1001-Add-apple-bce-driver.patch",
@ -49,10 +49,6 @@
"name": "1013-lib-vsprintf-Add-support-for-generic-FourCCs-by-exte.patch",
"hash": "sha256-h3gxaKtvdm/GSd+AP1sPC9avWHOsceUxTmoua/3rIf4="
},
{
"name": "1014-drm-format-helper-Add-conversion-from-XRGB8888-to-BG.patch",
"hash": "sha256-Ky19+cCiYDaHBh2o5IhZO8J1ExDT7o8K9cgPz+AL8Cg="
},
{
"name": "1015-drm-tiny-add-driver-for-Apple-Touch-Bars-in-x86-Macs.patch",
"hash": "sha256-tDjK/VipVQbuNOURW38gssqeRLy3s8I+DVq0+4zGnHs="
@ -103,7 +99,7 @@
},
{
"name": "4001-asahi-trackpad.patch",
"hash": "sha256-NOuGgUxDQEfFPlij/EnhWmgqeG3/l+j+r2T1YJG7raY="
"hash": "sha256-kfAYVovukZLD5ocHQxhoHJSa9c5XAJ1GhH1RlzGkS+k="
},
{
"name": "4002-HID-quirks-remove-T2-devices-from-hid_mouse_ignore_l.patch",
@ -131,7 +127,7 @@
},
{
"name": "8001-Add-APFS-driver.patch",
"hash": "sha256-O3RNtpeZQENPEfyYi/0ZTLhAWBAw6pmxMS30NUxOTdk="
"hash": "sha256-QpIPsMjWNPOkw6rSKn7rW0Fmx9HUwJaiGy3pZeT5Fd0="
},
{
"name": "8002-Necessary-modifications-to-build-APFS-with-the-kerne.patch",

View file

@ -6,7 +6,8 @@
}:
let
p = pkgs.writeScriptBin "charge-upto" ''
echo ''${0:-100} > /sys/class/power_supply/BAT?/charge_control_end_threshold
#!${pkgs.bash}/bin/bash
echo ''${1:-100} > /sys/class/power_supply/BAT?/charge_control_end_threshold
'';
cfg = config.hardware.asus.battery;
in
@ -30,10 +31,14 @@ in
wantedBy = [
"local-fs.target"
"suspend.target"
"suspend-then-hibernate.target"
"hibernate.target"
];
after = [
"local-fs.target"
"suspend.target"
"suspend-then-hibernate.target"
"hibernate.target"
];
description = "Set the battery charge threshold to ${toString cfg.chargeUpto}%";
startLimitBurst = 5;

View file

@ -25,10 +25,6 @@
lib.optionals (lib.versionOlder config.boot.kernelPackages.kernel.version "6.8")
[ "rtc_cmos.use_acpi_alarm=1" ];
# AMD has better battery life with PPD over TLP:
# https://community.frame.work/t/responded-amd-7040-sleep-states/38101/13
services.power-profiles-daemon.enable = lib.mkDefault true;
# Adds the missing asus functionality to Linux.
# https://asus-linux.org/manual/asusctl-manual/
services = {
@ -39,6 +35,7 @@
};
hardware.nvidia = {
powerManagement.enable = lib.mkDefault true;
modesetting.enable = lib.mkDefault true;
open = lib.mkDefault false;
nvidiaSettings = lib.mkDefault true;

View file

@ -0,0 +1,16 @@
{ ... }:
{
imports = [
../../common/cpu/intel/skylake
../../common/gpu/nvidia/maxwell
../../common/gpu/nvidia/prime.nix
../../common/pc/laptop
../../common/pc/ssd
];
hardware.nvidia.prime = {
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
}

View file

@ -0,0 +1,18 @@
{ ... }:
{
imports = [
../../../common/cpu/amd
../../../common/cpu/amd/pstate.nix
../../../common/gpu/nvidia/prime.nix
../../../common/gpu/nvidia/ampere
../../../common/pc/laptop
../../../common/pc/ssd
../../battery.nix
];
hardware.nvidia.prime = {
amdgpuBusId = "PCI:6:0:0";
nvidiaBusId = "PCI:1:0:0";
};
}

View file

@ -0,0 +1,36 @@
{ lib, ... }:
let
inherit (lib) mkDefault;
in
{
imports = [
../../../common/cpu/amd
../../../common/cpu/amd/pstate.nix
# iGPU
../../../common/gpu/amd
# dGPU
../../../common/gpu/nvidia/prime.nix
../../../common/gpu/nvidia/ampere
../../../common/pc/laptop
../../../common/pc/ssd
../../battery.nix
];
hardware.nvidia = {
dynamicBoost.enable = mkDefault true;
powerManagement = {
enable = mkDefault true;
finegrained = mkDefault true;
};
prime = {
amdgpuBusId = "PCI:1:0:0";
nvidiaBusId = "PCI:101:0:0";
};
};
}

View file

@ -3,6 +3,4 @@
./cpu-only.nix
../../../gpu/intel/comet-lake
];
hardware.intelgpu.vaapiDriver = "intel-media-driver";
}

View file

@ -1,9 +1,8 @@
{ lib, pkgs, ... }:
{
imports = [ ../. ];
hardware.intelgpu = {
computeRuntime = "legacy";
vaapiDriver = "intel-vaapi-driver";
enableHybridCodec = true;
};

View file

@ -7,5 +7,8 @@
"i915.enable_guc=2"
];
hardware.intelgpu.vaapiDriver = "intel-media-driver";
hardware.intelgpu = {
computeRuntime = "legacy";
vaapiDriver = "intel-media-driver";
};
}

View file

@ -3,5 +3,8 @@
boot.kernelParams = [ "i915.enable_guc=2" ];
hardware.intelgpu.vaapiDriver = "intel-media-driver";
hardware.intelgpu = {
computeRuntime = "legacy";
vaapiDriver = "intel-media-driver";
};
}

View file

@ -23,6 +23,15 @@
default = true;
};
computeRuntime = lib.mkOption {
description = "intel-compute-runtime variant to use";
type = lib.types.enum [
"default"
"legacy"
];
default = "default";
};
vaapiDriver = lib.mkOption {
description = "Intel VAAPI driver to use (use null to use both)";
type = lib.types.nullOr (
@ -59,7 +68,11 @@
useIntelMediaDriver = cfg.vaapiDriver == "intel-media-driver" || cfg.vaapiDriver == null;
intel-media-driver = pkgs.intel-media-driver;
intel-media-driver-32 = pkgs.driversi686Linux.intel-media-driver;
intel-compute-runtime = pkgs.intel-compute-runtime;
intel-compute-runtime =
if cfg.computeRuntime == "legacy" then
pkgs.intel-compute-runtime-legacy1
else
pkgs.intel-compute-runtime;
vpl-gpu-rt = pkgs.vpl-gpu-rt or pkgs.onevpl-intel-gpu;
in
{

View file

@ -3,5 +3,8 @@
boot.kernelParams = [ "i915.enable_guc=2" ];
hardware.intelgpu.vaapiDriver = "intel-media-driver";
hardware.intelgpu = {
computeRuntime = "legacy";
vaapiDriver = "intel-media-driver";
};
}

View file

@ -7,5 +7,8 @@
"i915.enable_psr=2"
];
hardware.intelgpu.vaapiDriver = "intel-media-driver";
hardware.intelgpu = {
computeRuntime = "legacy";
vaapiDriver = "intel-media-driver";
};
}

View file

@ -1,5 +1,3 @@
{ pkgs, ... }:
{
imports = [ ../. ];
@ -12,6 +10,7 @@
# NixOS Wiki recommends using the legacy intel-vaapi-driver with the hybrid codec over that one for Skylake.
# https://wiki.nixos.org/wiki/Accelerated_Video_Playback
hardware.intelgpu = {
computeRuntime = "legacy";
vaapiDriver = "intel-vaapi-driver";
enableHybridCodec = true;
};

View file

@ -1,13 +1,6 @@
{ config, lib, ... }:
{ lib, config, ... }:
{
imports = [ ../. ];
# Gnome 40 introduced a new way of managing power, without tlp.
# However, these 2 services clash when enabled simultaneously.
# https://github.com/NixOS/nixos-hardware/issues/260
services.tlp.enable = lib.mkDefault (
(lib.versionOlder (lib.versions.majorMinor lib.version) "21.05")
|| !config.services.power-profiles-daemon.enable
);
config.services.power-profiles-daemon.enable = lib.mkDefault (!config.services.tlp.enable);
}

57
compulab/README.md Normal file
View file

@ -0,0 +1,57 @@
# UCM-iMX95 SOM support
## Supported devices
- [UCM-iMX95 System-on-Module](https://www.compulab.com/products/som-evaluation-kits/ucm-imx95-evaluation-kit/) (**ucm-imx95**) based on the NXP i.MX95 SoC (A0 silicon), with device-specific boot components(OEI, SM, ATF), U-Boot, and Linux kernel support, including a NixOS configuration example.
## How to use
This overlay provides configuration and hardware support for the **CompuLab UCM-iMX95** platform, based on the **NXP i.MX95 A0 silicon**. It enables generating NixOS images suitable for booting via U-Boot, using the CompuLab UCM-iMX95 Evaluation Kit carrier board.
### Boot flow
The boot flow for the UCM-iMX95 platform follows the standard NXP i.MX95 sequence:
Boot ROM → OEI (initially in TCM, then DDR) → System Manager (SM) → ARM Trusted Firmware (ATF) → U-Boot → Linux kernel → NixOS userspace
Boot ROM initializes the SoC and loads OEI, which runs in TCM to perform early setup, then configures DDR and loads the System Manager (SM). SM completes SoC initialization and passes control to ATF, which handles secure world setup and then transfers execution to U-Boot, eventually booting the Linux kernel and NixOS root filesystem.
### Example NixOS configuration
```nix
{ nixos-hardware, }: {
system = "aarch64-linux";
modules = [
nixos-hardware.nixosModules.ucm-imx95
];
}
```
### Building Boot Images
The boot image for flashing to SD cards can be built directly from the flake:
```bash
# Build boot image for UCM-iMX95
nix build github:NixOS/nixos-hardware#packages.aarch64-linux.ucm-imx95-boot
```
The boot image will be available at `./result/image/flash.bin`.
**Note:** These packages target `aarch64-linux`. If you're on a different architecture (e.g., x86_64-linux), you'll need remote builders configured for aarch64-linux.
### Flashing to SD Card
Once built, you can flash the boot image to an SD card:
```bash
# Write boot image to SD card at 32KB offset (adjust /dev/sdX to your SD card device)
sudo dd if=./result/image/flash.bin of=/dev/sdX bs=1k seek=32 conv=fsync
```
**Warning:** Double-check the device path to avoid overwriting the wrong disk!
### Notes
- The configuration, including device-tree, kernel, and bootloader components, is optimized for the UCM-iMX95 SoM and EVK.
- The generated NixOS image supports booting from SD card or eMMC, depending on the hardware configuration.
- The boot components (OEI in TCM/DDR, SM, ATF, U-Boot) follow the standard NXP release layout for i.MX95 platforms.
### Upstream Documentation
- [NXP i.MX95 EVK U-Boot Documentation](https://docs.u-boot.org/en/latest/board/nxp/imx95_evk.html)
- [CompuLab UCM-iMX95 Product Page](https://www.compulab.com/products/computer-on-modules/ucm-imx95-nxp-i-mx-95-som-system-on-module/)

View file

@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
stdenv,
buildPackages,
pkgsCross,
openssl,
}:
let
target-board = "imx95";
in
stdenv.mkDerivation rec {
pname = "imx95-atf";
version = "2.13.0";
platform = target-board;
enableParallelBuilding = true;
src = fetchFromGitHub {
owner = "nxp-imx";
repo = "imx-atf";
rev = "28affcae957cb8194917b5246276630f9e6343e1";
sha256 = "sha256-a8F+Lf8pwML+tCwawS0N/mrSXWPmFhlUeOg0MCRK3VE=";
};
# Compiler dependencies
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [
pkgsCross.aarch64-embedded.stdenv.cc
openssl
];
makeFlags = [
"HOSTCC=$(CC_FOR_BUILD)"
"CROSS_COMPILE=${pkgsCross.aarch64-embedded.stdenv.cc.targetPrefix}"
"PLAT=${platform}"
"SPD=opteed"
"bl31"
"LDFLAGS=-no-warn-rwx-segments"
];
installPhase = ''
runHook preInstall
mkdir -p $out
cp build/${target-board}/release/bl31.bin $out
runHook postInstall
'';
hardeningDisable = [ "all" ];
dontStrip = true;
meta = with lib; {
homepage = "https://github.com/nxp-imx/imx-atf";
description = "Reference implementation of secure world software for ARMv8-A";
license = licenses.bsd3;
maintainers = [
{
name = "Govind Singh";
email = "govind.singh@tii.ae";
}
];
platforms = [ "aarch64-linux" ];
};
}

View file

@ -0,0 +1,94 @@
{
callPackage,
fetchFromGitHub,
stdenv,
clang,
git,
dtc,
glibc,
zlib,
vim,
}:
let
imx95-atf = callPackage ./ucm-imx95-atf.nix { };
imx95-firmware = callPackage ./ucm-imx95-firmware.nix { };
imx95-uboot = callPackage ./ucm-imx95-uboot.nix { };
imx95-optee-os = callPackage ./ucm-imx95-optee-os.nix { };
imx95-sm-fw = callPackage ./ucm-imx95-sm-fw.nix { };
imx95-oei-ddr = callPackage ./ucm-imx95-oei-ddr.nix { };
imx95-oei-tcm = callPackage ./ucm-imx95-oei-tcm.nix { };
src = fetchFromGitHub {
owner = "nxp-imx";
repo = "imx-mkimage";
#tag: lf-6.6.52-2.2.1
rev = "f620fb8ef7a04c8dbed8119880f5eeffe3e69746";
sha256 = "sha256-JZlX122uZntCIISI1H3Hw+tnk+N/gBJpFFDaZoY8W3c=";
};
shortRev = builtins.substring 0 8 src.rev;
in
{
imx95-boot = stdenv.mkDerivation rec {
inherit src;
name = "imx95-mkimage";
version = "lf-6.6.52-2.2.1";
postPatch = ''
substituteInPlace Makefile \
--replace-fail 'git rev-parse --short=8 HEAD' 'echo ${shortRev}'
substituteInPlace Makefile \
--replace-fail 'CC = gcc' 'CC = clang'
substituteInPlace iMX95/soc.mak \
--replace-fail 'xxd' "${vim.xxd}/bin/xxd"
substituteInPlace scripts/fspi_fcb_gen.sh \
--replace-fail 'xxd' "${vim.xxd}/bin/xxd"
substituteInPlace scripts/fspi_packer.sh \
--replace-fail 'xxd' "${vim.xxd}/bin/xxd"
patchShebangs scripts
'';
nativeBuildInputs = [
clang
git
dtc
];
buildInputs = [
glibc.static
zlib
zlib.static
];
buildPhase = ''
runHook preBuild
if [ -f ${imx95-uboot}/u-boot.bin ]; then
install -m 0644 ${imx95-uboot}/u-boot.bin ./iMX95/u-boot.bin
else
cat ${imx95-uboot}/u-boot-nodtb.bin ${imx95-uboot}/ucm-imx95.dtb > ./iMX95/u-boot.bin
fi
install -m 0644 ${imx95-uboot}/u-boot-spl.bin ./iMX95/u-boot-spl.bin
install -m 0644 ${imx95-uboot}/u-boot-nodtb.bin ./iMX95/u-boot-nodtb.bin
install -m 0644 ${imx95-uboot}/ucm-imx95.dtb ./iMX95/ucm-imx95.dtb
install -m 0644 ${imx95-optee-os}/tee.bin ./iMX95/tee.bin
install -m 0644 ${imx95-atf}/bl31.bin ./iMX95/bl31.bin
install -m 0644 ${imx95-sm-fw}/m33_image.bin ./iMX95/m33_image.bin
install -m 0644 ${imx95-oei-ddr}/oei-m33-ddr.bin ./iMX95/oei-m33-ddr.bin
install -m 0644 ${imx95-oei-tcm}/oei-m33-tcm.bin ./iMX95/oei-m33-tcm.bin
install -m 0644 ${imx95-firmware}/ddr/lpddr5* ./iMX95/
install -m 0644 ${imx95-firmware}/ahab/mx95a0-ahab-container.img ./iMX95/
install -m 0644 ${imx95-firmware}/m7_image.bin ./iMX95/
make SOC=iMX95 REV=A0 OEI=YES LPDDR_TYPE=lpddr5 flash_all
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/image
install -m 0644 ./iMX95/flash.bin $out/image
runHook postInstall
'';
};
}

View file

@ -0,0 +1,74 @@
{
stdenv,
fetchurl,
coreutils,
bash,
siliconRev ? "A0",
...
}:
stdenv.mkDerivation rec {
pname = "nxp-firmware-imx95";
version = "nxp-firmware-8.28-994fa14";
m7Firmware = fetchurl {
url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx95-m7-demo-25.09.00.bin";
sha256 = "sha256-3nA6uka6WPtXH5aZhaaKHKRM0tJ0pxHQdPEupNic1Ks=";
};
ddrFirmware = fetchurl {
url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.28-994fa14.bin";
sha256 = "sha256-VZlvNA6HglaFoAzTCZARiQZuyVRe5gdzT5QsPN5Nadw=";
};
ahabFirmware = fetchurl {
url = "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-ele-imx-2.0.2-89161a8.bin";
sha256 = "sha256-LSnwpN42YroV9qfZBpcC1OrtQV2WoX8p1bEn8sb91jQ=";
};
nativeBuildInputs = [
coreutils
bash
];
dontUnpack = true;
dontStrip = true;
installPhase = ''
mkdir -p $out
export SILICON=${siliconRev}
# M7 firmware
echo "Copying M7 firmware..."
cp ${m7Firmware} $out/m7_image.bin
# DDR firmware
cp ${ddrFirmware} ./firmware-imx-8.28-994fa14.bin
chmod +x firmware-imx-8.28-994fa14.bin
./firmware-imx-8.28-994fa14.bin --auto-accept
mkdir -p $out/ddr
# Resolve wildcard and verify at least one file matches
lpddr5_files=(firmware-imx-8.28-994fa14/firmware/ddr/synopsys/lpddr5*v202409.bin)
if [ ''${#lpddr5_files[@]} -eq 0 ]; then
echo "ERROR: No lpddr5*v202409.bin file found in firmware/ddr/synopsys/" >&2
exit 1
fi
cp "''${lpddr5_files[@]}" $out/ddr/
# AHAB container
cp ${ahabFirmware} ./firmware-ele-imx-2.0.2-89161a8.bin
chmod +x firmware-ele-imx-2.0.2-89161a8.bin
./firmware-ele-imx-2.0.2-89161a8.bin --auto-accept
mkdir -p $out/ahab
if [ "$SILICON" = "A0" ]; then
cp firmware-ele-imx-2.0.2-89161a8/mx95a0-ahab-container.img $out/ahab/
elif [ "$SILICON" = "B0" ]; then
cp firmware-ele-imx-2.0.2-89161a8/mx95b0-ahab-container.img $out/ahab/
else
echo "ERROR: Invalid SILICON value '$SILICON'. Must be 'A0' or 'B0'." >&2
exit 1
fi
'';
}

View file

@ -0,0 +1,71 @@
{
lib,
buildLinux,
fetchFromGitHub,
...
}@args:
buildLinux (
args
// rec {
version = "6.6.36";
name = "imx95-linux";
# modDirVersion needs to be x.y.z, will automatically add .0 if needed
modDirVersion = version;
defconfig = "compulab-mx95_defconfig";
# https://github.com/NixOS/nixpkgs/pull/366004
# introduced a breaking change that if a module is declared but it is not being used it will fail.
ignoreConfigErrors = true;
kernelPatches = [
];
autoModules = false;
extraConfig = ''
CRYPTO_TLS m
TLS y
MD_RAID0 m
MD_RAID1 m
MD_RAID10 m
MD_RAID456 m
DM_VERITY m
LOGO y
FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER n
FB_EFI n
EFI_STUB y
EFI y
VIRTIO y
VIRTIO_PCI y
VIRTIO_BLK y
DRM_VIRTIO_GPU y
EXT4_FS y
USBIP_CORE m
USBIP_VHCI_HCD m
USBIP_HOST m
USBIP_VUDC m
'';
src = fetchFromGitHub {
owner = "compulab-yokneam";
repo = "linux-compulab";
# tag: linux-compulab_6.6.36
rev = "b93daaad0807fb15d4f3f1a6e5be843ac7532ef7";
sha256 = "sha256-wCeuGXBTz3H6OFWBA1M1/t/9WgxBVjQ8FU/wvAUVW2w=";
};
meta = with lib; {
homepage = "https://github.com/compulab-yokneam/linux-compulab";
license = licenses.gpl2Only;
maintainers = [
{
name = "Govind Singh";
email = "govind.singh@tii.ae";
}
];
platforms = [ "aarch64-linux" ];
};
}
// (args.argsOverride or { })
)

View file

@ -0,0 +1,76 @@
{
lib,
stdenv,
buildPackages,
gcc-arm-embedded,
fetchFromGitHub,
fetchpatch,
}:
let
metaBspImx95Rev = "5f4c7b5db846fa3a75055054e32215089d15a7b7"; # scarthgap
in
stdenv.mkDerivation rec {
pname = "imx95-imx-oei";
version = "lf-6.6.36-2.1.0";
nativeBuildInputs = [
buildPackages.python3
gcc-arm-embedded
];
src = fetchFromGitHub {
owner = "nxp-imx";
repo = "imx-oei";
rev = "5fca9f47544d03c52ca371eadfffbfd2454e6925";
sha256 = "sha256-Sb6u1NlhJpDCOKBu3HqUb4BLEy0F8LYVnJE0tRSvzWc=";
};
patches = [
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-oei/imx-oei/0001-Add-CompuLab-lpddr5_timing.c.patch";
sha256 = "sha256-6ZpBOXw2aIhD2i9Wx368xfHq6NvdZghWHU9u8+gRTj8=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-oei/imx-oei/0002-board-mx95lp5-Fix-default-DDR_CONFIG-timing-name.patch";
sha256 = "sha256-WZ/vYaTC2iKIC+jnHtnPriCxK9gjRsOv2Uy13Ye4698=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-oei/imx-oei/0003-Add-CompuLab-lpddr5_timing_4g.c.patch";
sha256 = "sha256-yyierv2USZlM8Cuxf4FDj4+UtILvJQH9BJSj+fmayL8=";
})
];
postPatch = ''
substituteInPlace oei/makefiles/build_info.mak \
--replace-fail "/bin/echo" "echo"
substituteInPlace Makefile \
--replace-fail "/bin/echo" "echo"
'';
makeFlags = [
"board=mx95lp5"
"CROSS_COMPILE=${gcc-arm-embedded}/bin/arm-none-eabi-"
"OEI_CROSS_COMPILE=${gcc-arm-embedded}/bin/arm-none-eabi-"
"ARCH=arm"
"DDR_CONFIG=lpddr5_timing"
"oei=ddr"
];
installPhase = ''
mkdir -p $out
cp build/mx95lp5/ddr/oei-m33-ddr.bin $out/
'';
meta = with lib; {
homepage = "https://github.com/nxp-imx/imx-oei";
description = "Optional Executable Image assembler for i.MX95 processors";
license = licenses.bsd3;
maintainers = [
{
name = "Govind Singh";
email = "govind.singh@tii.ae";
}
];
platforms = [ "aarch64-linux" ];
};
}

View file

@ -0,0 +1,76 @@
{
lib,
stdenv,
buildPackages,
gcc-arm-embedded,
fetchFromGitHub,
fetchpatch,
}:
let
metaBspImx95Rev = "5f4c7b5db846fa3a75055054e32215089d15a7b7"; # scarthgap
in
stdenv.mkDerivation rec {
pname = "imx95-imx-oei-tcm";
version = "lf-6.6.36-2.1.0";
nativeBuildInputs = [
buildPackages.python3
gcc-arm-embedded
];
src = fetchFromGitHub {
owner = "nxp-imx";
repo = "imx-oei";
rev = "5fca9f47544d03c52ca371eadfffbfd2454e6925";
sha256 = "sha256-Sb6u1NlhJpDCOKBu3HqUb4BLEy0F8LYVnJE0tRSvzWc=";
};
patches = [
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-oei/imx-oei/0001-Add-CompuLab-lpddr5_timing.c.patch";
sha256 = "sha256-6ZpBOXw2aIhD2i9Wx368xfHq6NvdZghWHU9u8+gRTj8=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-oei/imx-oei/0002-board-mx95lp5-Fix-default-DDR_CONFIG-timing-name.patch";
sha256 = "sha256-WZ/vYaTC2iKIC+jnHtnPriCxK9gjRsOv2Uy13Ye4698=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-oei/imx-oei/0003-Add-CompuLab-lpddr5_timing_4g.c.patch";
sha256 = "sha256-yyierv2USZlM8Cuxf4FDj4+UtILvJQH9BJSj+fmayL8=";
})
];
postPatch = ''
substituteInPlace oei/makefiles/build_info.mak \
--replace-fail "/bin/echo" "echo"
substituteInPlace Makefile \
--replace-fail "/bin/echo" "echo"
'';
makeFlags = [
"board=mx95lp5"
"CROSS_COMPILE=${gcc-arm-embedded}/bin/arm-none-eabi-"
"OEI_CROSS_COMPILE=${gcc-arm-embedded}/bin/arm-none-eabi-"
"ARCH=arm"
"DDR_CONFIG=lpddr5_timing"
"oei=tcm"
];
installPhase = ''
mkdir -p $out
cp build/mx95lp5/tcm/oei-m33-tcm.bin $out/
'';
meta = with lib; {
homepage = "https://github.com/nxp-imx/imx-oei";
description = "Optional Executable Image assembler for i.MX95 processors";
license = licenses.bsd3;
maintainers = [
{
name = "Govind Singh";
email = "govind.singh@tii.ae";
}
];
platforms = [ "aarch64-linux" ];
};
}

View file

@ -0,0 +1,84 @@
{
lib,
stdenv,
fetchFromGitHub,
buildPackages,
bash,
}:
let
inherit (buildPackages) python3;
toolchain = stdenv.cc;
binutils = stdenv.cc.bintools.bintools_bin;
cpp = stdenv.cc;
in
stdenv.mkDerivation {
pname = "imx95-optee-os";
version = "lf-6.6.36_2.1.0";
nativeBuildInputs = [
python3
];
enableParallelBuilding = true;
propagatedBuildInputs = with python3.pkgs; [
pycryptodomex
pyelftools
cryptography
];
src = fetchFromGitHub {
owner = "nxp-imx";
repo = "imx-optee-os";
rev = "612bc5a642a4608d282abeee2349d86de996d7ee";
sha256 = "sha256-l8GKkrlBs5kgw6jrzGLT9WAeTSDqo8XWZDFT2+Fisv4=";
};
meta = with lib; {
homepage = "https://github.com/nxp-imx/imx-optee-os";
license = licenses.bsd2;
maintainers = [
{
name = "Govind Singh";
email = "govind.singh@tii.ae";
}
];
platforms = [ "aarch64-linux" ];
};
postPatch = ''
substituteInPlace scripts/arm32_sysreg.py \
--replace-fail '/usr/bin/env python3' '${python3}/bin/python'
substituteInPlace scripts/gen_tee_bin.py \
--replace-fail '/usr/bin/env python3' '${python3}/bin/python'
substituteInPlace scripts/pem_to_pub_c.py \
--replace-fail '/usr/bin/env python3' '${python3}/bin/python'
substituteInPlace ta/pkcs11/scripts/verify-helpers.sh \
--replace-fail '/bin/bash' '${bash}/bin/bash'
substituteInPlace mk/gcc.mk \
--replace-fail "\$(CROSS_COMPILE_\$(sm))objcopy" ${binutils}/bin/${toolchain.targetPrefix}objcopy
substituteInPlace mk/gcc.mk \
--replace-fail "\$(CROSS_COMPILE_\$(sm))objdump" ${binutils}/bin/${toolchain.targetPrefix}objdump
substituteInPlace mk/gcc.mk \
--replace-fail "\$(CROSS_COMPILE_\$(sm))nm" ${binutils}/bin/${toolchain.targetPrefix}nm
substituteInPlace mk/gcc.mk \
--replace-fail "\$(CROSS_COMPILE_\$(sm))readelf" ${binutils}/bin/${toolchain.targetPrefix}readelf
substituteInPlace mk/gcc.mk \
--replace-fail "\$(CROSS_COMPILE_\$(sm))ar" ${binutils}/bin/${toolchain.targetPrefix}ar
substituteInPlace mk/gcc.mk \
--replace-fail "\$(CROSS_COMPILE_\$(sm))cpp" ${cpp}/bin/${toolchain.targetPrefix}cpp
'';
makeFlags = [
"PLATFORM=imx-mx95evk"
"CFG_ARM64_core=y"
"CFG_TEE_TA_LOG_LEVEL=0"
"CFG_TEE_CORE_LOG_LEVEL=0"
"CROSS_COMPILE=${toolchain}/bin/${toolchain.targetPrefix}"
"CROSS_COMPILE64=${toolchain}/bin/${toolchain.targetPrefix}"
];
installPhase = ''
mkdir -p $out
cp ./out/arm-plat-imx/core/tee-raw.bin $out/tee.bin
'';
}

View file

@ -0,0 +1,92 @@
{
lib,
stdenv,
buildPackages,
gcc-arm-embedded,
fetchFromGitHub,
fetchpatch,
}:
let
metaBspImx95Rev = "224eed17cddc573061150e9d2ce6f9acb39ea50e"; # scarthgap-6.6.36-EVAL-UCM-iMX95-1.0
in
stdenv.mkDerivation rec {
pname = "imx95-sm-fw";
version = "lf-6.6.36-2.1.0";
nativeBuildInputs = [
buildPackages.python3
gcc-arm-embedded
];
propagatedBuildInputs = with buildPackages.python3.pkgs; [
pycryptodomex
pyelftools
cryptography
];
src = fetchFromGitHub {
owner = "nxp-imx";
repo = "imx-sm";
rev = "709deccd9338399eb39b5cf99a60eab4fa60d539";
sha256 = "sha256-02Cl+XhWGSFswspdBJ/4B/mBm4XTs/qKotx0BXMQpJk=";
};
patches = [
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-system-manager/imx-system-manager/0001-Add-mcimx95cust-board.patch";
sha256 = "sha256-zvZ4bNew+yRPmaZQMrAH087KpCLRqz6zdElfe72Dtuc=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-system-manager/imx-system-manager/0002-Fix-null-pionter-except.patch";
sha256 = "sha256-q72VEvJqm2CmOxdWMqGibgXS5lY08mC4srEcy00QdrE=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-system-manager/imx-system-manager/0001-update-for-yocto-6.6.36-compatibility.patch";
sha256 = "sha256-JzHqDiD/ZOu6VQQI0JxY17RQ3bA2t1aP3O1sjLPguWs=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-system-manager/imx-system-manager/0003-sm-Disable-GPIO1-10-interrupt.patch";
sha256 = "sha256-dhcDv7Uq856+MBonczMPznk+tuqUFxTcHiKLX+myCVA=";
})
(fetchpatch {
url = "https://raw.githubusercontent.com/compulab-yokneam/meta-bsp-imx95/${metaBspImx95Rev}/recipes-bsp/imx-system-manager/imx-system-manager/0004-configs-mx95cust-change-LPTPM1-ownership.patch";
sha256 = "sha256-NcLu6+zXpiSz1bHKW14Zuf6F/4pzKsekb+zaRtKjSTY=";
})
];
postPatch = ''
substituteInPlace sm/makefiles/gcc_cross.mak \
--replace-fail "\$(SM_CROSS_COMPILE)objcopy" ${gcc-arm-embedded}/bin/arm-none-eabi-objcopy
substituteInPlace sm/makefiles/build_info.mak \
--replace-fail "/bin/echo" "echo"
substituteInPlace sm/makefiles/gcc_cross.mak \
--replace-fail 'SM_CROSS_COMPILE ?= $(TOOLS)/arm-gnu-toolchain-*-none-eabi/bin/arm-none-eabi-' \
'SM_CROSS_COMPILE ?= $(CROSS_COMPILE)'
'';
makeFlags = [
"config=mx95cust"
"M=2"
"CROSS_COMPILE=${gcc-arm-embedded}/bin/arm-none-eabi-"
"CROSS_COMPILE64=${gcc-arm-embedded}/bin/arm-none-eabi-"
"ARCH=arm"
];
installPhase = ''
mkdir -p $out
cp build/mx95cust/m33_image.bin $out/
'';
meta = with lib; {
homepage = "https://github.com/nxp-imx/imx-sm";
description = "System Manager firmware for i.MX processors";
license = licenses.bsd3;
maintainers = [
{
name = "Govind Singh";
email = "govind.singh@tii.ae";
}
];
platforms = [ "aarch64-linux" ];
};
}

View file

@ -0,0 +1,95 @@
{
stdenv,
lib,
bison,
dtc,
fetchFromGitHub,
flex,
gnutls,
libuuid,
ncurses,
openssl,
which,
perl,
buildPackages,
efitools,
}:
let
ubsrc = fetchFromGitHub {
owner = "compulab-yokneam";
repo = "u-boot-compulab";
# tag: lf_v2024.04
rev = "824401fe487d7d3cbcf251bd60270bd7fe8d21d0";
sha256 = "sha256-m+YW7+XF/jcNKfyb5533LXGyOWvStqY+MCczAdcNGZI=";
};
in
stdenv.mkDerivation {
pname = "imx95-uboot";
version = "2024.04";
src = ubsrc;
postPatch = ''
patchShebangs tools
patchShebangs scripts
'';
nativeBuildInputs = [
bison
flex
openssl
which
ncurses
libuuid
gnutls
openssl
perl
efitools
];
depsBuildBuild = [ buildPackages.stdenv.cc ];
hardeningDisable = [ "all" ];
enableParallelBuilding = true;
makeFlags = [
"DTC=${lib.getExe buildPackages.dtc}"
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
];
extraConfig = ''
CONFIG_USE_BOOTCOMMAND=y
CONFIG_BOOTCOMMAND="setenv ramdisk_addr_r 0x97000000; setenv fdt_addr_r 0x96000000; run distro_bootcmd; "
CONFIG_CMD_BOOTEFI_SELFTEST=y
CONFIG_CMD_BOOTEFI=y
CONFIG_EFI_LOADER=y
CONFIG_BLK=y
CONFIG_PARTITIONS=y
CONFIG_DM_DEVICE_REMOVE=n
CONFIG_CMD_CACHE=y
'';
passAsFile = [ "extraConfig" ];
configurePhase = ''
runHook preConfigure
make ucm-imx95_defconfig
cat $extraConfigPath >> .config
make olddefconfig
runHook postConfigure
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp ./u-boot-nodtb.bin $out
cp ./spl/u-boot-spl.bin $out
cp ./arch/arm/dts/ucm-imx95.dtb $out
cp .config $out
runHook postInstall
'';
dontStrip = true;
}

View file

@ -0,0 +1,19 @@
{ pkgs, ... }:
{
nixpkgs.overlays = [
(import ./overlay.nix)
];
imports = [
./modules.nix
];
boot.loader.grub.extraFiles = {
"ucm-imx95.dtb" = "${pkgs.callPackage ./bsp/ucm-imx95-linux.nix { }}/dtbs/compulab/ucm-imx95.dtb";
};
hardware.deviceTree = {
filter = "ucm-imx95.dtb";
name = "ucm-imx95.dtb";
};
}

View file

@ -0,0 +1,17 @@
{
pkgs,
lib,
...
}:
{
nixpkgs.hostPlatform.system = "aarch64-linux";
boot = {
kernelPackages = pkgs.linuxPackagesFor (pkgs.callPackage ./bsp/ucm-imx95-linux.nix { });
initrd.includeDefaultModules = lib.mkForce false;
};
disabledModules = [ "profiles/all-hardware.nix" ];
hardware.deviceTree.enable = true;
}

View file

@ -0,0 +1,3 @@
final: _prev: {
inherit (final.callPackage ./bsp/ucm-imx95-boot.nix { }) imx95-boot;
}

View file

@ -8,6 +8,3 @@
`fwupd` is used to receive firmware updates from vendors. This device is in its [supported devices list](https://fwupd.org/lvfs/devices/)
`thermald` is used to achieve better thermal behaviour
##### TLP
TLP is a battery power optimizer for laptops. It is enabled by default, however, since it conflicts with power-profiles-daemon which is GNOME's power management system, TLP will not be installed with if power-profiles-daemon or a recent version of GNOME is present.

View file

@ -6,16 +6,8 @@
../../../common/pc/laptop
];
hardware.enableAllFirmware = lib.mkDefault true;
services = {
fwupd.enable = lib.mkDefault true;
thermald.enable = lib.mkDefault true;
};
boot = {
# needs to be explicitly loaded or else bluetooth/wifi won't work.
kernelModules = [ "wl" ];
extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
};
}

View file

@ -0,0 +1,32 @@
# Dell Precision 5570
## Tested Hardware
```bash
lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation 12th Gen Core Processor Host Bridge/DRAM Registers [8086:4641] (rev 02)
00:01.0 PCI bridge [0604]: Intel Corporation 12th Gen Core Processor PCI Express x16 Controller #1 [8086:460d] (rev 02)
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] [8086:46a6] (rev 0c)
00:04.0 Signal processing controller [1180]: Intel Corporation Alder Lake Innovation Platform Framework Processor Participant [8086:461d] (rev 02)
00:06.0 PCI bridge [0604]: Intel Corporation 12th Gen Core Processor PCI Express x4 Controller #0 [8086:464d] (rev 02)
00:07.0 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #0 [8086:466e] (rev 02)
00:07.1 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #1 [8086:463f] (rev 02)
00:08.0 System peripheral [0880]: Intel Corporation 12th Gen Core Processor Gaussian & Neural Accelerator [8086:464f] (rev 02)
00:0d.0 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 USB Controller [8086:461e] (rev 02)
00:0d.2 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #0 [8086:463e] (rev 02)
00:12.0 Serial controller [0700]: Intel Corporation Alder Lake-P Integrated Sensor Hub [8086:51fc] (rev 01)
00:14.0 USB controller [0c03]: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller [8086:51ed] (rev 01)
00:14.2 RAM memory [0500]: Intel Corporation Alder Lake PCH Shared SRAM [8086:51ef] (rev 01)
00:14.3 Network controller [0280]: Intel Corporation Alder Lake-P PCH CNVi WiFi [8086:51f0] (rev 01)
00:15.0 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #0 [8086:51e8] (rev 01)
00:15.1 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #1 [8086:51e9] (rev 01)
00:16.0 Communication controller [0780]: Intel Corporation Alder Lake PCH HECI Controller [8086:51e0] (rev 01)
00:1c.0 PCI bridge [0604]: Intel Corporation Alder Lake-P PCH PCIe Root Port #4 [8086:51bb] (rev 01)
00:1f.0 ISA bridge [0601]: Intel Corporation Alder Lake PCH eSPI Controller [8086:5182] (rev 01)
00:1f.3 Audio device [0403]: Intel Corporation Alder Lake PCH-P High Definition Audio Controller [8086:51c8] (rev 01)
00:1f.4 SMBus [0c05]: Intel Corporation Alder Lake PCH-P SMBus Host Controller [8086:51a3] (rev 01)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Alder Lake-P PCH SPI Controller [8086:51a4] (rev 01)
01:00.0 3D controller [0302]: NVIDIA Corporation GA107GLM [RTX A1000 Laptop GPU] [10de:25b9] (rev a1)
02:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO [144d:a80a]
a5:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5260 PCI Express Card Reader [10ec:5260] (rev 01)
```

View file

@ -0,0 +1,37 @@
{
config,
lib,
...
}:
{
imports = [
../../../common/cpu/intel/alder-lake
../../../common/pc/laptop
../../../common/pc/ssd
../../../common/gpu/nvidia/prime.nix
];
hardware.intelgpu.driver = lib.mkIf (lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.8") "xe";
boot.kernelParams = lib.mkIf (config.hardware.intelgpu.driver == "xe") [
"i915.force_probe=!46a6"
"xe.force_probe=46a6"
];
hardware.nvidia = {
nvidiaSettings = lib.mkDefault true;
modesetting.enable = lib.mkDefault true;
open = lib.mkDefault false;
prime = {
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
};
# Override the Intel gpu driver setting imported above
environment.variables = {
VDPAU_DRIVER = lib.mkIf config.hardware.opengl.enable (lib.mkOverride 990 "nvidia");
};
services.thermald.enable = lib.mkDefault true;
}

View file

@ -61,7 +61,10 @@ Then use `fwupdmgr` to perform updates
## Nvidia Driver
The choice of the `legacy_390` driver is based on looking for PCI Device ID `10de:1436`. On the [nvidia driver site](https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/) which should indicate the
driver, the exact device isn't listed. However, we can see
[here](https://linux-hardware.org/?id=pci:10de-1436-103c-1909) has nvidia driver "375.82 and newer" listed. Since the
newest nvidia drivers don't support legacy devices, the closest version newer than 375.82 was chosen.
The choice of the `stable` driver is based on looking at the family of the card on [nouveau wiki's code names page](https://nouveau.freedesktop.org/CodeNames.html) obtained with:
```bash
$ lspci -k -d ::03xx
```
Both `Quadro M2200 Mobile (GM206GLM)` and `Quadro M1200 Mobile (GM107GLM)` belong to the **Maxwell** family which is still supported by the stable driver.

View file

@ -32,7 +32,7 @@
enable32Bit = lib.mkDefault true;
};
nvidia = {
package = config.boot.kernelPackages.nvidiaPackages.legacy_390;
package = config.boot.kernelPackages.nvidiaPackages.stable;
nvidiaSettings = lib.mkDefault true;
modesetting.enable = lib.mkDefault true;
open = lib.mkDefault false;

View file

@ -13,11 +13,8 @@
};
boot = {
# needs to be explicitly loaded or else bluetooth/wifi won't work
kernelModules = [
"kvm-intel"
"wl"
];
extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
};
}

22
flake.lock generated
View file

@ -1,26 +1,6 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1751290770,
"narHash": "sha256-u4s8yKAqTzPGY3vTcDyAIet11uXaNCM//93/0O0NlbA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0620a50e9a847851bf802c59a4202552ed79b821",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05-small",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
"root": {}
},
"root": "root",
"version": 7

110
flake.nix
View file

@ -2,7 +2,39 @@
description = "nixos-hardware";
outputs =
{ ... }:
{ self, ... }:
let
# Import private inputs (for development)
privateInputs =
(import ./tests/flake-compat.nix {
src = ./tests;
}).defaultNix;
systems = [
"aarch64-linux"
"riscv64-linux"
"x86_64-linux"
];
formatSystems = [
"aarch64-linux"
"x86_64-linux"
"aarch64-darwin"
];
# Helper to iterate over systems
eachSystem =
f:
privateInputs.nixos-unstable-small.lib.genAttrs systems (
system: f privateInputs.nixos-unstable-small.legacyPackages.${system} system
);
eachSystemFormat =
f:
privateInputs.nixos-unstable-small.lib.genAttrs formatSystems (
system: f privateInputs.nixos-unstable-small.legacyPackages.${system} system
);
in
{
nixosModules =
@ -20,12 +52,14 @@
apple-imac-18-2 = import ./apple/imac/18-2;
apple-macbook-air-3 = import ./apple/macbook-air/3;
apple-macbook-air-4 = import ./apple/macbook-air/4;
apple-macbook-air-5 = import ./apple/macbook-air/5;
apple-macbook-air-6 = import ./apple/macbook-air/6;
apple-macbook-air-7 = import ./apple/macbook-air/7;
apple-macbook-pro = import ./apple/macbook-pro;
apple-macbook-pro-8-1 = import ./apple/macbook-pro/8-1;
apple-macbook-pro-10-1 = import ./apple/macbook-pro/10-1;
apple-macbook-pro-11-1 = import ./apple/macbook-pro/11-1;
apple-macbook-pro-11-4 = import ./apple/macbook-pro/11-4;
apple-macbook-pro-11-5 = import ./apple/macbook-pro/11-5;
apple-macbook-pro-12-1 = import ./apple/macbook-pro/12-1;
apple-macbook-pro-14-1 = import ./apple/macbook-pro/14-1;
@ -41,11 +75,14 @@
asus-flow-gv302x-amdgpu = import ./asus/flow/gv302x/amdgpu;
asus-flow-gv302x-nvidia = import ./asus/flow/gv302x/nvidia;
asus-pro-ws-x570-ace = import ./asus/pro-ws-x570-ace;
asus-rog-gl552vw = import ./asus/rog-gl552vw;
asus-rog-strix-g513im = import ./asus/rog-strix/g513im;
asus-rog-strix-g533zw = import ./asus/rog-strix/g533zw;
asus-rog-strix-g533q = import ./asus/rog-strix/g533q;
asus-rog-strix-g713ie = import ./asus/rog-strix/g713ie;
asus-rog-strix-g733qs = import ./asus/rog-strix/g733qs;
asus-rog-strix-x570e = import ./asus/rog-strix/x570e;
asus-zenbook-um6702 = import ./asus/zenbook/um6702;
asus-zenbook-ux371 = import ./asus/zenbook/ux371;
asus-zenbook-ux535 = import ./asus/zenbook/ux535;
asus-zenbook-ux481-intelgpu = import ./asus/zenbook/ux481/intelgpu;
@ -65,6 +102,7 @@
dell-e7240 = deprecated "1326" "dell-e7240" (import ./dell/e7240);
dell-g3-3779 = import ./dell/g3/3779;
dell-g3-3579 = import ./dell/g3/3579;
dell-inspiron-3442 = import ./dell/inspiron/3442;
dell-inspiron-14-5420 = import ./dell/inspiron/14-5420;
dell-inspiron-5509 = import ./dell/inspiron/5509;
dell-inspiron-5515 = import ./dell/inspiron/5515;
@ -91,6 +129,7 @@
dell-precision-5490 = import ./dell/precision/5490;
dell-precision-5530 = import ./dell/precision/5530;
dell-precision-5560 = import ./dell/precision/5560;
dell-precision-5570 = import ./dell/precision/5570;
dell-precision-7520 = import ./dell/precision/7520;
dell-xps-13-7390 = import ./dell/xps/13-7390;
dell-xps-13-9300 = import ./dell/xps/13-9300;
@ -132,9 +171,12 @@
framework-13-7040-amd = import ./framework/13-inch/7040-amd;
framework-amd-ai-300-series = import ./framework/13-inch/amd-ai-300-series;
framework-16-7040-amd = import ./framework/16-inch/7040-amd;
framework-16-amd-ai-300-series = import ./framework/16-inch/amd-ai-300-series;
framework-desktop-amd-ai-max-300-series = import ./framework/desktop/amd-ai-max-300-series;
friendlyarm-nanopc-t4 = import ./friendlyarm/nanopc-t4;
friendlyarm-nanopi-r5s = import ./friendlyarm/nanopi-r5s;
focus-m2-gen1 = import ./focus/m2/gen1;
fydetab-duo = import ./fydetab/duo;
gigabyte-b550 = import ./gigabyte/b550;
gigabyte-b650 = import ./gigabyte/b650;
gmktec-nucbox-g3-plus = import ./gmktec/nucbox/g3-plus;
@ -152,9 +194,11 @@
hp-elitebook-845g8 = import ./hp/elitebook/845/g8;
hp-elitebook-845g9 = import ./hp/elitebook/845/g9;
hp-probook-440G5 = import ./hp/probook/440G5;
hp-probook-460G11 = import ./hp/probook/460G11;
hp-laptop-14s-dq2024nf = import ./hp/laptop/14s-dq2024nf;
huawei-machc-wa = import ./huawei/machc-wa;
hp-notebook-14-df0023 = import ./hp/notebook/14-df0023;
intel-nuc-5i5ryb = import ./intel/nuc/5i5ryb;
intel-nuc-8i7beh = import ./intel/nuc/8i7beh;
lenovo-ideacentre-k330 = import ./lenovo/ideacentre/k330;
lenovo-ideapad-14imh9 = import ./lenovo/ideapad/14imh9;
@ -163,11 +207,14 @@
lenovo-ideapad-15ach6 = import ./lenovo/ideapad/15ach6;
lenovo-ideapad-16ach6 = import ./lenovo/ideapad/16ach6;
lenovo-ideapad-16ahp9 = import ./lenovo/ideapad/16ahp9;
lenovo-ideapad-s5-16iah8 = import ./lenovo/ideapad/16iah8;
lenovo-ideapad-z510 = import ./lenovo/ideapad/z510;
lenovo-ideapad-slim-5 = import ./lenovo/ideapad/slim-5;
lenovo-ideapad-s145-15api = import ./lenovo/ideapad/s145-15api;
lenovo-legion-15ach6 = import ./lenovo/legion/15ach6;
lenovo-legion-15ach6h = import ./lenovo/legion/15ach6h;
lenovo-legion-15ach6h-hybrid = import ./lenovo/legion/15ach6h/hybrid;
lenovo-legion-15ach6h-nvidia = import ./lenovo/legion/15ach6h/nvidia;
lenovo-legion-15arh05h = import ./lenovo/legion/15arh05h;
lenovo-legion-16ach6h = import ./lenovo/legion/16ach6h;
lenovo-legion-16ach6h-hybrid = import ./lenovo/legion/16ach6h/hybrid;
@ -178,6 +225,7 @@
lenovo-legion-16achg6-nvidia = import ./lenovo/legion/16achg6/nvidia;
lenovo-legion-16aph8 = import ./lenovo/legion/16aph8;
lenovo-legion-16arha7 = import ./lenovo/legion/16arha7;
lenovo-legion-16iah7h = import ./lenovo/legion/16iah7h;
lenovo-legion-16ithg6 = import ./lenovo/legion/16ithg6;
lenovo-legion-16irx8h = import ./lenovo/legion/16irx8h;
lenovo-legion-16irx9h = import ./lenovo/legion/16irx9h;
@ -204,10 +252,12 @@
lenovo-thinkpad-p14s-amd-gen3 = import ./lenovo/thinkpad/p14s/amd/gen3;
lenovo-thinkpad-p14s-amd-gen4 = import ./lenovo/thinkpad/p14s/amd/gen4;
lenovo-thinkpad-p14s-amd-gen5 = import ./lenovo/thinkpad/p14s/amd/gen5;
lenovo-thinkpad-p14s-intel-gen2 = import ./lenovo/thinkpad/p14s/intel/gen2;
lenovo-thinkpad-p14s-intel-gen3 = import ./lenovo/thinkpad/p14s/intel/gen3;
lenovo-thinkpad-p14s-intel-gen5 = import ./lenovo/thinkpad/p14s/intel/gen5;
lenovo-thinkpad-p16s-amd-gen1 = import ./lenovo/thinkpad/p16s/amd/gen1;
lenovo-thinkpad-p16s-amd-gen2 = import ./lenovo/thinkpad/p16s/amd/gen2;
lenovo-thinkpad-p16s-amd-gen4 = import ./lenovo/thinkpad/p16s/amd/gen4;
lenovo-thinkpad-p16s-intel-gen2 = import ./lenovo/thinkpad/p16s/intel/gen2;
lenovo-thinkpad-p43s = import ./lenovo/thinkpad/p43s;
lenovo-thinkpad-p50 = import ./lenovo/thinkpad/p50;
@ -220,6 +270,9 @@
lenovo-thinkpad-t14-amd-gen3 = import ./lenovo/thinkpad/t14/amd/gen3;
lenovo-thinkpad-t14-amd-gen4 = import ./lenovo/thinkpad/t14/amd/gen4;
lenovo-thinkpad-t14-amd-gen5 = import ./lenovo/thinkpad/t14/amd/gen5;
lenovo-thinkpad-t14-intel-gen1 = import ./lenovo/thinkpad/t14/intel/gen1;
lenovo-thinkpad-t14-intel-gen1-nvidia = import ./lenovo/thinkpad/t14/intel/gen1/nvidia;
lenovo-thinkpad-t14-intel-gen6 = import ./lenovo/thinkpad/t14/intel/gen6;
lenovo-thinkpad-t14s = import ./lenovo/thinkpad/t14s;
lenovo-thinkpad-t14s-amd-gen1 = import ./lenovo/thinkpad/t14s/amd/gen1;
lenovo-thinkpad-t14s-amd-gen4 = import ./lenovo/thinkpad/t14s/amd/gen4;
@ -260,8 +313,8 @@
lenovo-thinkpad-x1-extreme-gen4 = import ./lenovo/thinkpad/x1-extreme/gen4;
lenovo-thinkpad-x1-nano = import ./lenovo/thinkpad/x1-nano;
lenovo-thinkpad-x1-nano-gen1 = import ./lenovo/thinkpad/x1-nano/gen1;
lenovo-thinkpad-x13 = import ./lenovo/thinkpad/x13/intel;
lenovo-thinkpad-x13-amd = import ./lenovo/thinkpad/x13/amd;
lenovo-thinkpad-x13-intel = import ./lenovo/thinkpad/x13/intel;
lenovo-thinkpad-x13-yoga = import ./lenovo/thinkpad/x13/yoga;
lenovo-thinkpad-x13-yoga-3th-gen = import ./lenovo/thinkpad/x13/yoga/3th-gen;
lenovo-thinkpad-x13s = import ./lenovo/thinkpad/x13s;
@ -285,8 +338,11 @@
lenovo-yoga-7-14IAH7-hybrid = import ./lenovo/yoga/7/14IAH7/hybrid;
lenovo-yoga-7-14ILL10 = import ./lenovo/yoga/7/14ILL10;
lenovo-yoga-7-slim-gen8 = import ./lenovo/yoga/7/slim/gen8;
letsnote-cf-lx3 = import ./panasonic/letsnote/cf-lx3;
letsnote-cf-lx4 = import ./panasonic/letsnote/cf-lx4;
linglong-nova-studio = import ./linglong/nova-studio;
malibal-aon-s1-intel = import ./malibal/aon/s1;
mechrevo-gm5hg0a = import ./mechrevo/GM5HG0A;
microchip-icicle-kit = import ./microchip/icicle-kit;
microsoft-surface-go = import ./microsoft/surface/surface-go;
microsoft-surface-pro-intel = import ./microsoft/surface/surface-pro-intel;
@ -296,15 +352,19 @@
microsoft-surface-pro-9 = import ./microsoft/surface-pro/9;
milkv-pioneer = import ./milkv/pioneer;
minisforum-v3 = import ./minisforum/v3;
mnt-reform-rk3588 = import ./mnt/reform/rk3588;
morefine-m600 = import ./morefine/m600;
msi-b350-tomahawk = import ./msi/b350-tomahawk;
msi-b550-a-pro = import ./msi/b550-a-pro;
msi-b550-tomahawk = import ./msi/b550-tomahawk;
msi-gs60 = import ./msi/gs60;
msi-gl62 = import ./msi/gl62;
msi-gl65-10SDR-492 = import ./msi/gl65/10SDR-492;
nxp-imx8mp-evk = import ./nxp/imx8mp-evk;
nxp-imx8mq-evk = import ./nxp/imx8mq-evk;
nxp-imx8qm-mek = import ./nxp/imx8qm-mek;
nxp-imx93-evk = import ./nxp/imx93-evk;
ucm-imx95 = import ./compulab/ucm-imx95;
hardkernel-odroid-hc4 = import ./hardkernel/odroid-hc4;
hardkernel-odroid-h3 = import ./hardkernel/odroid-h3;
hardkernel-odroid-h4 = import ./hardkernel/odroid-h4;
@ -348,13 +408,16 @@
system76-gaze18 = import ./system76/gaze18;
system76-galp5-1650 = import ./system76/galp5-1650;
system76-darp6 = import ./system76/darp6;
system76-thelio-mega = import ./system76/thelio-mega;
toshiba-swanky = import ./toshiba/swanky;
tuxedo-aura-15-gen1 = import ./tuxedo/aura/15/gen1;
tuxedo-infinitybook-v4 = import ./tuxedo/infinitybook/v4;
tuxedo-infinitybook-pro14-gen7 = import ./tuxedo/infinitybook/pro14/gen7;
tuxedo-infinitybook-pro14-gen9-amd = import ./tuxedo/infinitybook/pro14/gen9/amd;
tuxedo-infinitybook-pro14-gen9-intel = import ./tuxedo/infinitybook/pro14/gen9/intel;
tuxedo-pulse-14-gen3 = import ./tuxedo/pulse/14/gen3;
tuxedo-pulse-15-gen2 = import ./tuxedo/pulse/15/gen2;
xiaomi-redmibook-15-pro-2021 = import ./xiaomi/redmibook/15-pro-2021;
xiaomi-redmibook-16-pro-2024 = import ./xiaomi/redmibook/16-pro-2024;
common-cpu-amd = import ./common/cpu/amd;
@ -390,5 +453,48 @@
common-pc-laptop-ssd = import ./common/pc/ssd;
common-pc-ssd = import ./common/pc/ssd;
};
# Add formatter for `nix fmt`
formatter = eachSystemFormat (
pkgs: _system:
(privateInputs.treefmt-nix.lib.evalModule pkgs ./tests/treefmt.nix).config.build.wrapper
);
# Add packages
packages = eachSystem (
pkgs: system:
{
run-tests = pkgs.callPackage ./tests/run-tests.nix {
inherit self;
};
}
// pkgs.lib.optionalAttrs (system == "aarch64-linux") {
# Boot images for NXP i.MX boards (aarch64-linux only)
ucm-imx95-boot = (pkgs.callPackage ./compulab/ucm-imx95/bsp/ucm-imx95-boot.nix { }).imx95-boot;
imx93-boot = (pkgs.callPackage ./nxp/imx93-evk/bsp/imx93-boot.nix { }).imx93-boot;
imx8mp-boot = (pkgs.callPackage ./nxp/imx8mp-evk/bsp/imx8mp-boot.nix { }).imx8m-boot;
imx8mq-boot = (pkgs.callPackage ./nxp/imx8mq-evk/bsp/imx8mq-boot.nix { }).imx8m-boot;
}
);
# Add checks for `nix run .#run-tests`
checks = eachSystem (
pkgs: system:
let
treefmtEval = privateInputs.treefmt-nix.lib.evalModule pkgs ./tests/treefmt.nix;
nixosTests = import ./tests/nixos-tests.nix {
inherit
self
privateInputs
system
pkgs
;
};
in
pkgs.lib.optionalAttrs (self.formatter ? ${system}) {
formatting = treefmtEval.config.build.check self;
}
// nixosTests
);
};
}

View file

@ -2,15 +2,12 @@
## Updating Firmware
First put enable `fwupd`
Everything is updateable through fwupd, so it's enabled by default.
```nix
services.fwupd.enable = true;
```
Then run
To get the latest firmware, run:
```sh
$ fwupdmgr refresh
$ fwupdmgr update
```

View file

@ -4,4 +4,10 @@
../common
../../../common/cpu/intel
];
# If this module isn't built into the kernel, we need to make sure it loads
# before soc_button_array. Otherwise the tablet mode gpio doesn't work.
# If correctly loaded, dmesg should show
# input: gpio-keys as /devices/platform/INT33D3:00
boot.initrd.kernelModules = [ "pinctrl_tigerlake" ];
}

View file

@ -16,4 +16,7 @@
# Needed for desktop environments to detect display orientation
hardware.sensor.iio.enable = lib.mkDefault true;
# Everything is updateable through fwupd
services.fwupd.enable = true;
}

View file

@ -2,15 +2,12 @@
## Updating Firmware
First put enable `fwupd`
Everything is updateable through fwupd, so it's enabled by default.
```nix
services.fwupd.enable = true;
```
Then run
To get the latest firmware, run:
```sh
$ fwupdmgr refresh
$ fwupdmgr update
```

View file

@ -14,7 +14,6 @@ in
../common/amd.nix
../../../common/cpu/amd/raphael/igpu.nix
];
options = {
hardware.framework.amd-7040.preventWakeOnAC = lib.mkOption {
type = lib.types.bool;
@ -30,6 +29,8 @@ in
};
config = {
services.fwupd.enable = true;
# Workaround applied upstream in Linux >=6.7 (on BIOS 03.03)
# https://github.com/torvalds/linux/commit/a55bdad5dfd1efd4ed9ffe518897a21ca8e4e193
services.udev.extraRules =

View file

@ -2,14 +2,13 @@
## Updating Firmware
First put enable `fwupd`
Everything is updateable through fwupd, so it's enabled by default.
```nix
services.fwupd.enable = true;
```
Then run
To get the latest firmware, run:
```sh
$ fwupdmgr refresh
$ fwupdmgr update
```
- [Latest Update](https://fwupd.org/lvfs/devices/work.frame.Laptop.RyzenAI300.BIOS.firmware)

View file

@ -10,6 +10,17 @@
../common
../common/amd.nix
];
config.hardware.framework.laptop13.audioEnhancement.rawDeviceName =
config = {
# Everything is updateable through fwupd
services.fwupd.enable = true;
hardware.framework.laptop13.audioEnhancement.rawDeviceName =
lib.mkDefault "alsa_output.pci-0000_c1_00.6.analog-stereo";
# suspend works with 6.15
boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.15") (
lib.mkDefault pkgs.linuxPackages_latest
);
};
}

View file

@ -6,8 +6,7 @@
../../../common/gpu/amd
];
boot.kernelParams =
[
boot.kernelParams = [
# There seems to be an issue with panel self-refresh (PSR) that
# causes hangs for users.
#
@ -19,8 +18,4 @@
++ lib.optionals (lib.versionOlder config.boot.kernelPackages.kernel.version "6.8") [
"rtc_cmos.use_acpi_alarm=1"
];
# AMD has better battery life with PPD over TLP:
# https://community.frame.work/t/responded-amd-7040-sleep-states/38101/13
services.power-profiles-daemon.enable = lib.mkDefault true;
}

View file

@ -9,8 +9,7 @@
../../../common/cpu/intel
];
boot.kernelParams =
[
boot.kernelParams = [
# For Power consumption
# https://community.frame.work/t/linux-battery-life-tuning/6665/156
"nvme.noacpi=1"

View file

@ -2,14 +2,13 @@
## Updating Firmware
First put enable `fwupd`
Everything is updateable through fwupd, so it's enabled by default.
```nix
services.fwupd.enable = true;
```
Then run
To get the latest firmware, run:
```sh
$ fwupdmgr refresh
$ fwupdmgr update
```
- [Latest Update](https://fwupd.org/lvfs/devices/work.frame.Laptop.MTL.BIOS.firmware)

View file

@ -11,34 +11,15 @@
../common/intel.nix
];
# Everything is updateable through fwupd
services.fwupd.enable = true;
# Need at least 6.9 to make suspend properly
# Specifically this patch: https://github.com/torvalds/linux/commit/073237281a508ac80ec025872ad7de50cfb5a28a
boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.9") (
lib.mkDefault pkgs.linuxPackages_latest
);
# Intel NPU Driver
# https://discourse.nixos.org/t/new-installation-on-asus-zenbook-ux5406-intel-vpu-firmware-error-2/58732/2
hardware.firmware = lib.optionals (config.hardware.enableRedistributableFirmware) [
(
let
model = "37xx";
version = "0.0";
firmware = pkgs.fetchurl {
url = "https://github.com/intel/linux-npu-driver/raw/v1.13.0/firmware/bin/vpu_${model}_v${version}.bin";
hash = "sha256-Mpoeq8HrwChjtHALsss/7QsFtDYAoFNsnhllU0xp3os=";
};
in
pkgs.runCommand "intel-vpu-firmware-${model}-${version}" { } ''
mkdir -p "$out/lib/firmware/intel/vpu"
cp '${firmware}' "$out/lib/firmware/intel/vpu/vpu_${model}_v${version}.bin"
''
)
];
warnings = lib.mkIf (!config.hardware.enableRedistributableFirmware) [
''For Intel NPU support, set the option: hardware.enableRedistributableFirmware = true;''
];
hardware.framework.laptop13.audioEnhancement.rawDeviceName =
lib.mkDefault "alsa_output.pci-0000_00_1f.3.analog-stereo";
}

View file

@ -1,4 +1,14 @@
# [Framework Laptop 16](https://frame.work/)
## Updating Firmware
The Framework Laptop 16 uses LVFS, so it can be updated via fwupd; see https://wiki.nixos.org/wiki/Fwupd for details
Everything is updateable through fwupd, so it's enabled by default.
To get the latest firmware, run:
```sh
$ fwupdmgr refresh
$ fwupdmgr update
```
- [Latest Update](https://fwupd.org/lvfs/devices/work.frame.Laptop16.Ryzen7040.BIOS.firmware)

View file

@ -12,4 +12,6 @@
../../../common/cpu/amd/raphael/igpu.nix
];
# Everything is updateable through fwupd
services.fwupd.enable = true;
}

View file

@ -0,0 +1,25 @@
# [Framework Laptop 16 AMD AI 300 Series](https://frame.work/)
## nvidia
If you have an nvidia dGPU module, you can enable it via the nvidia open drivers:
```
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia.open = true; # see the note above
```
See also [NVIDIA](https://wiki.nixos.org/wiki/NVIDIA) on the NixOS Wiki.
## Updating Firmware
Everything is updateable through fwupd, so it's enabled by default.
To get the latest firmware, run:
```sh
$ fwupdmgr refresh
$ fwupdmgr update
```
- [Latest Update](https://fwupd.org/lvfs/devices/work.frame.Laptop16.RyzenAI300.BIOS.firmware)

View file

@ -0,0 +1,21 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
../common
../common/amd.nix
];
# 6.14 is the minimum recommended kernel, 6.15 has many useful changes, too
boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.15") (
lib.mkDefault pkgs.linuxPackages_latest
);
# Everything is updateable through fwupd
services.fwupd.enable = true;
}

View file

@ -6,8 +6,7 @@
../../../common/gpu/amd
];
boot.kernelParams =
[
boot.kernelParams = [
# There seems to be an issue with panel self-refresh (PSR) that
# causes hangs for users.
#
@ -19,8 +18,4 @@
++ lib.optionals (lib.versionOlder config.boot.kernelPackages.kernel.version "6.8") [
"rtc_cmos.use_acpi_alarm=1"
];
# AMD has better battery life with PPD over TLP:
# https://community.frame.work/t/responded-amd-7040-sleep-states/38101/13
services.power-profiles-daemon.enable = lib.mkDefault true;
}

View file

@ -8,12 +8,6 @@
../../framework-tool.nix
];
# Fix TRRS headphones missing a mic
# https://community.frame.work/t/headset-microphone-on-linux/12387/3
boot.extraModprobeConfig = lib.mkIf (lib.versionOlder config.boot.kernelPackages.kernel.version "6.6.8") ''
options snd-hda-intel model=dell-headset-multi
'';
# For fingerprint support
services.fprintd.enable = lib.mkDefault true;
@ -50,4 +44,7 @@
MatchDMIModalias=dmi:*svnFramework:pnLaptop16*
AttrKeyboardIntegration=internal
'';
# Everything is updateable through fwupd
services.fwupd.enable = true;
}

View file

@ -0,0 +1,23 @@
# [Framework Desktop](https://frame.work/desktop)
## Kernel version
The recommended version is 6.15 or newer, it has good GPU and also EC firmware support (for sensors and ARGB).
The lowest recommended version is 6.14. It has good GPU support already.
The absolute lowest that runs okay on headless systems is 6.11, but the GPU is not fully supported yet.
## Updating Firmware
First put enable `fwupd`
```nix
services.fwupd.enable = true;
```
Then run
```sh
$ fwupdmgr update
```
- [Latest Update](https://fwupd.org/lvfs/devices/work.frame.Desktop.RyzenAIMax300.BIOS.firmware)

View file

@ -0,0 +1,20 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
../../../common/cpu/amd
../../../common/cpu/amd/pstate.nix
../../../common/gpu/amd
../../../common/pc/ssd
../../framework-tool.nix
];
# 6.14 and above have good GPU support
boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.14") (
lib.mkDefault pkgs.linuxPackages_latest
);
}

View file

@ -1,22 +1,26 @@
{
config,
lib,
pkgs,
...
}:
let
kernel_version_compatible = lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.10";
in
{
options.hardware.framework.enableKmod =
(lib.mkEnableOption "Enable the community created Framework kernel module that allows interacting with the embedded controller from sysfs.")
(lib.mkEnableOption "the community-created Framework kernel module that allows interacting with the embedded controller from sysfs.")
// {
# enable by default on NixOS >= 24.05 and kernel >= 6.10
default = lib.and (lib.versionAtLeast (lib.versions.majorMinor lib.version) "24.05") kernel_version_compatible;
defaultText = "enabled by default on NixOS >= 24.05 and kernel >= 6.10";
default = lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.10";
defaultText = "enabled by default if kernel >= 6.10";
};
config.boot = lib.mkIf config.hardware.framework.enableKmod {
config = lib.mkIf config.hardware.framework.enableKmod {
assertions = [
{
assertion = lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.10";
message = "The framework laptop kernel module requires Linux 6.10 or above";
}
];
boot = {
extraModulePackages = with config.boot.kernelPackages; [
framework-laptop-kmod
];
@ -26,31 +30,6 @@ in
"cros_ec"
"cros_ec_lpcs"
];
# add required patch if enabled on kernel <6.10
kernelPatches = lib.mkIf (!kernel_version_compatible) [
rec {
name = "platform/chrome: cros_ec_lpc: add support for AMD Framework Laptops";
msgid = "20240403004713.130365-1-dustin@howett.net";
version = "3";
hash = "sha256-aQSyys8CMzlj9EdNhg8vtp76fg1qEwUVeJL0E+8w5HU=";
patch =
pkgs.runCommandLocal "patch-${msgid}"
{
nativeBuildInputs = with pkgs; [
b4
git
cacert
];
SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
outputHash = hash;
}
''
export HOME="$TMP"
PYTHONHASHSEED=0 ${pkgs.b4}/bin/b4 -n am -C -T -v ${version} -o- "${msgid}" > "$out"
'';
}
];
};
};
}

19
fydetab/duo/README.md Normal file
View file

@ -0,0 +1,19 @@
# Fydetab Duo
The Fydetab Duo is an open source and hackable tablet by FydeOS.
## Features
- Display: **works**
- X11: **untested**
- Wayland: **not working** (niri, sway, COSMIC)
- GPU driver: **not working**
- WiFi: **working**
- Cellular: **untested**
- SD card: **untested**
- Sound: **untested**
- Fingerprint: **untested**
## Flashing
Flashing requires `rkdeveloptool` and using it to write the new bootloader and eMMC image. To flash, press and hold the mask rom button on the board. Ensure a USB C cable is already plugged into the host computer. Run `nix build .#nixosConfigurations.<hostname>.config.hardware.rockchip.platformFirmware` and then use `rkdeveloptool ul result/rk3588_spl_loader_v1.18.113.bin`. The NixOS image can then be downloaded using `rkdeveloptool wl 0`, it is recommended to use the disko image configuration which is provided.

43
fydetab/duo/ap6275p.nix Normal file
View file

@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation (_finalAttrs: {
pname = "ap6275p-firmware";
version = "2023-11-05";
src = fetchFromGitHub {
owner = "Joshua-Riek";
repo = "firmware";
rev = "621ac45f5d931522bc08b51b995b938778973d2a";
hash = "sha256-ksAOxZTnEka9SirHYxroLMbKi+99FY72X2z1pJhgYnY=";
};
compressFirmware = false;
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/lib/firmware/ap6275p
install -m644 ap6275p/BCM4362A2.hcd $out/lib/firmware/ap6275p/
install -m644 ap6275p/clm_bcm43752a2_pcie_ag.blob $out/lib/firmware/ap6275p/
install -m644 ap6275p/fw_bcm43752a2_pcie_ag.bin $out/lib/firmware/ap6275p/
install -m644 ap6275p/nvram_AP6275P.txt $out/lib/firmware/ap6275p/
install -m644 ap6275p/config.txt $out/lib/firmware/ap6275p/
mv $out/lib/firmware/ap6275p/nvram_AP6275P.txt $out/lib/firmware/ap6275p/nvram_ap6275p.txt
mv $out/lib/firmware/ap6275p/config.txt $out/lib/firmware/ap6275p/config_bcm43752a2_pcie_ag.txt
runHook postInstall
'';
meta = {
description = "Firmware for the AP6275P WiFi/Bluetooth module";
homepage = "https://github.com/Joshua-Riek/firmware";
license = lib.licenses.unfree;
};
})

View file

@ -0,0 +1,44 @@
{
lib,
stdenv,
fetchurl,
autoPatchelfHook,
}:
stdenv.mkDerivation (_finalAttrs: {
pname = "brcm-patchram-plus";
version = "2024-08-23";
src = fetchurl {
url = "https://github.com/Linux-for-Fydetab-Duo/pkgbuilds/raw/fd5ebe4914f32c5a1c4fc15b4fb5a62bad2da1ea/fydetabduo-post-install/brcm_patchram_plus";
hash = "sha256-fZ1ximZcosZDYbveEkyMnasLWpcifaZ5CKz7QKtqKZQ=";
};
nativeBuildInputs = [
autoPatchelfHook
];
unpackPhase = ''
runHook preUnpack
cp --no-preserve=ownership,mode $src brcm_patchram_plus
chmod +x brcm_patchram_plus
runHook postUnpack
'';
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp brcm_patchram_plus $out/bin
autoPatchelf $out/bin/brcm_patchram_plus
runHook postInstall
'';
meta = {
license = lib.licenses.unfree;
mainProgram = "brcm_patchram_plus";
};
})

9549
fydetab/duo/config Normal file

File diff suppressed because it is too large Load diff

28
fydetab/duo/config.nix Normal file
View file

@ -0,0 +1,28 @@
{
CONFIG_DEVTMPFS = "y";
CONFIG_CGROUPS = "y";
CONFIG_INOTIFY_USER = "y";
CONFIG_SIGNALFD = "y";
CONFIG_TIMERFD = "y";
CONFIG_EPOLL = "y";
CONFIG_SYSFS = "y";
CONFIG_PROC_FS = "y";
CONFIG_FHANDLE = "y";
CONFIG_CRYPTO_USER_API_HASH = "y";
CONFIG_CRYPTO_HMAC = "y";
CONFIG_CRYPTO_SHA256 = "y";
CONFIG_DMIID = "y";
CONFIG_AUTOFS_FS = "y";
CONFIG_TMPFS_POSIX_ACL = "y";
CONFIG_TMPFS_XATTR = "y";
CONFIG_SECCOMP = "y";
CONFIG_TMPFS = "y";
CONFIG_BLK_DEV_INITRD = "y";
CONFIG_EFI_STUB = "y";
CONFIG_MODULES = "y";
CONFIG_BINFMT_ELF = "y";
CONFIG_UNIX = "y";
CONFIG_NET = "y";
CONFIG_IP_NF_MATCH_RPFILTER = "m";
CONFIG_ATA_PIIX = "m";
}

141
fydetab/duo/default.nix Normal file
View file

@ -0,0 +1,141 @@
{
config,
pkgs,
lib,
...
}:
let
ap6275pFirmware = pkgs.callPackage ./ap6275p.nix { };
in
{
imports = [
../../rockchip
];
options.hardware.fydetab.duo = {
enablePanthor = lib.mkEnableOption "Panthor GPU driver";
};
config = {
boot = lib.mkMerge [
{
initrd.includeDefaultModules = false;
kernelPackages = pkgs.callPackage ./kernel.nix { };
extraModprobeConfig = ''
options bcmdhd firmware_path=${ap6275pFirmware}/lib/firmware/ap6275p/fw_bcm43752a2_pcie_ag.bin nvram_path=${ap6275pFirmware}/lib/firmware/ap6275p/nvram_AP6275P.txt conf_path=${ap6275pFirmware}/lib/firmware/ap6275p/config.txt
'';
kernelParams = [
"console=ttyFIQ0"
"console=tty1"
"console=both"
"earlycon=uart8250,mmio32,0xfeb50000"
];
kernelModules = [
"himax_tp"
"mh248-fyde"
"hci_uart"
];
}
(lib.mkIf config.hardware.bluetooth.enable {
kernelModules = [
"bluetooth"
];
})
];
hardware = lib.mkMerge [
{
deviceTree = lib.mkMerge [
{
name = "rockchip/rk3588s-fydetab-duo.dtb";
}
(lib.mkIf config.hardware.fydetab.duo.enablePanthor {
overlays = [
{
name = "fydetab-panthor-gpu";
dtsText = ''
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/rk3588-cru.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/rk3588-power.h>
/ {
compatible = "rockchip,rk3588s-tablet-12c-linux";
fragment@0 {
target = <&gpu>;
__overlay__ {
status = "disabled";
};
};
fragment@1 {
target = <&gpu_panthor>;
__overlay__ {
status = "okay";
mali-supply = <&vdd_gpu_s0>;
};
};
};
'';
}
];
})
];
rockchip = {
rk3588.enable = true;
platformFirmware = pkgs.callPackage ./u-boot.nix { };
};
}
(lib.mkIf config.networking.wireless.iwd.enable {
firmware = [
# Only iwd is supported by the interface
ap6275pFirmware
];
})
(lib.mkIf config.hardware.graphics.enable {
firmware = [
(pkgs.callPackage ./mali-g610.nix { })
];
})
(lib.mkIf config.hardware.sensor.iio.enable {
firmware = [
(pkgs.callPackage ./himax.nix { })
];
})
];
systemd.services.bluetooth-fydetab = lib.mkIf config.hardware.bluetooth.enable {
description = "FydeTab Duo Bluetooth fix";
wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "simple";
script = ''
${lib.getExe' pkgs.util-linux "rfkill"} block 0
${lib.getExe' pkgs.util-linux "rfkill"} block bluetooth
sleep 2
${lib.getExe' pkgs.util-linux "rfkill"} unblock 0
${lib.getExe' pkgs.util-linux "rfkill"} unblock bluetooth
sleep 1
${
lib.getExe (pkgs.callPackage ./brcm-patchram.nix { })
} --enable_hci --no2bytes --use_baudrate_for_download --tosleep 200000 --baudrate 1500000 --patchram ${ap6275pFirmware}/lib/firmware/ap6275p/BCM4362A2.hcd /dev/ttyS9
'';
};
services.udev = {
extraHwdb = ''
# Fydetab
evdev:input:b0018v0000p0000e0000*
EVDEV_ABS_00=::265
EVDEV_ABS_01=::166
'';
extraRules = ''
SUBSYSTEM=="iio" ATTR{name}=="lis2dw12" ENV{ACCEL_MOUNT_MATRIX}="1,0,0;0,-1,0;0,0,1"
SUBSYSTEM=="input", ENV{ID_INPUT_TABLET}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1 0 0 1"
'';
};
};
}

35
fydetab/duo/himax.nix Normal file
View file

@ -0,0 +1,35 @@
{
stdenv,
fetchurl,
lib,
}:
stdenv.mkDerivation (_finalAttrs: {
pname = "himax-firmware";
version = "2024-11-09";
src = fetchurl {
url = "https://github.com/Linux-for-Fydetab-Duo/pkgbuilds/raw/f4c012bd42d87f677370f987f703982d53cd233d/fydetabduo-post-install/Himax_firmware.bin";
hash = "sha256-z0p/zXcNTBdhKCV6GmM2C8C02lu4Wkb2HP+Ir/nQJTc=";
};
compressFirmware = false;
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/lib/firmware
cp --no-preserve=ownership,mode $src $out/lib/firmware/Himax_firmware.bin
ls -ahl $out/lib/firmware
runHook postInstall
'';
meta = {
description = "Himax sensor firmware";
license = lib.licenses.unfree;
};
})

18
fydetab/duo/kernel.nix Normal file
View file

@ -0,0 +1,18 @@
{
linuxPackagesFor,
linuxManualConfig,
fetchFromGitHub,
}:
linuxPackagesFor (linuxManualConfig rec {
version = "6.1.75";
modDirVersion = version;
src = fetchFromGitHub {
owner = "Linux-for-Fydetab-Duo";
repo = "linux-rockchip";
rev = "74a1657bc526e336ff66add2fa83a0522957c4cb";
hash = "sha256-Q0uCxebYw3c5Z/ZxCmTNyEfuYQQcPaw5qpvRTSWdtVo=";
};
configfile = ./config;
config = import ./config.nix;
features.netfilterRPFilter = true;
})

35
fydetab/duo/mali-g610.nix Normal file
View file

@ -0,0 +1,35 @@
{
stdenv,
fetchurl,
lib,
}:
stdenv.mkDerivation (_finalAttrs: {
pname = "mali-g610-firmware";
version = "2024-08-23";
src = fetchurl {
url = "https://github.com/Linux-for-Fydetab-Duo/pkgbuilds/raw/f4c012bd42d87f677370f987f703982d53cd233d/mali-G610-firmware-rkr4/mali_csffw.bin";
hash = "sha256-Ei8ezBTS3g/pP8Al+Md+RTGr0AT6Fy/+aeQM19FdXGY=";
};
compressFirmware = false;
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/lib/firmware
cp --no-preserve=ownership,mode $src $out/lib/firmware/mali_csffw.bin
ls -ahl $out/lib/firmware
runHook postInstall
'';
meta = {
description = "Mali G610 firmware for Rockchip RK3588(S) using the rkr4 kernel or later";
license = lib.licenses.unfree;
};
})

99
fydetab/duo/u-boot.nix Normal file
View file

@ -0,0 +1,99 @@
{
lib,
stdenv,
buildUBoot,
armTrustedFirmwareRK3588,
rkbin,
fetchpatch,
fetchurl,
fetchFromGitHub,
}:
buildUBoot {
defconfig = "rk3588s_fydetab_duo_defconfig";
extraMeta.platforms = [ "aarch64-linux" ];
BL31 = "${armTrustedFirmwareRK3588}/bl31.elf";
ROCKCHIP_TPL = rkbin.TPL_RK3588;
CROSS_COMPILE_ARM64 = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}";
INI_LOADER = fetchurl {
url = "https://github.com/rockchip-linux/rkbin/raw/${rkbin.src.rev}/RKBOOT/RK3588MINIALL.ini";
hash = "sha256-87Vt6nXVt+jRrRatOlwGJXYqSj9nJz1LUfQnviIVb7I=";
};
version = "5.10.0";
filesToInstall = [
"idbloader.img"
"u-boot.itb"
"rk3588_spl_loader_v1.18.113.bin"
"tools/resource_tool"
];
NIX_CFLAGS_COMPILE = "-Wno-error=enum-int-mismatch -Wno-error=maybe-uninitialized";
extraMakeFlags = [
"CROSS_COMPILE_ARM64=${stdenv.cc.targetPrefix}"
];
extraPatches =
lib.attrValues (
lib.mapAttrs
(
name: hash:
fetchpatch {
url = "https://github.com/openFyde/overlay-fydetab_duo-openfyde/raw/fd84c5302908dea6a819c2dcd025a2bf93b5d4e8/sys-boot/rk-uboot/files/rk8/${name}";
inherit hash;
}
)
{
"001-add-avdd-avee-in-rockchip_panel.patch" = "sha256-qmBdmSejcDn4ulvOTLjfBsNh6nl12sbobtX4mhTMMKY=";
"002-add-fydetab-support.patch" = "sha256-QlnhdkoOQcGxRiIOx1jNqDLb/abB/+l+hAQ8vKCpwOw=";
"003-match-display-config-with-kernel.patch" =
"sha256-hmICiAgYjjBryJIuNXOffiYTssKSaV1cDeSgRTdq51k=";
"004-enable-sdcard-for-fydetab.patch" = "sha256-xrZ1kuije6X+huvarDIGFhMy2Puq0XvlKa1ZfgGcwlQ=";
"005-display-logo-on-loader-mode.patch" = "sha256-NMQHJMl8s1NUrDSnUX8gAmSNaurBU+m0xKd4TtEPmz4=";
"006-update-deconfig.patch" = "sha256-ZukJEZjEFaN6F4+3VnHfkfdaOTQmkw3fdClk8OeOYRw=";
"007-add-deinit-after-show-bmp-add-ums-mode.patch" =
"sha256-4pHV+qiXMNHcIlC1ciFQsejVZvdnEhfs7QBbge9kHoM=";
"008-add-charging-mode.patch" = "sha256-AToALdx5mwyQ875ZnrpqbuUE9oGonH76RaUq6757U1E=";
"009-set-lowpower-to-3.patch" = "sha256-CYYmY8vQcOIiA3QPvZt+AgI/BbkykoKGqLECim7kAyw=";
"010-fix-compiling-issue.patch" = "sha256-hmiFFe0JuxXMPgeQFWI8qZop+VPmldxgs0Wowchswbs=";
"011-fix-battery-temp.patch" = "sha256-MXe5FGzGETZ3wpW7ur5rBLysdNlDMwiq7/LNxdDpA0E=";
"012-fix-make.patch" = "sha256-/8ZfhB04R4zIddOXJEx8GcnYoljYsGolbt/oQYsm/Xk=";
"013-change-exit-charge-level.patch" = "sha256-84zy5yzoHyAutVmbCvvB5t4uJFQGsMt3jTUgVs5SIog=";
"014-fix-spl-sdcard-issue.patch" = "sha256-jIHybAm9XKDbWF3xG4E9K8x2j5nfpHOp6/2gWDlQ6aU=";
}
)
++ [
./uboot-remove-sig-req.patch
];
src = fetchFromGitHub {
owner = "rockchip-linux";
repo = "u-boot";
rev = "63c55618fbdc36333db4cf12f7d6a28f0a178017";
hash = "sha256-OZmR6BLwCMK6lq9qmetIdrjSJJWcx7Po1OE9dBWL+Ew=";
};
extraConfig = ''
CONFIG_FIT_SIGNATURE=n
CONFIG_TPL_BUILD=y
CONFIG_SPL_FIT_SIGNATURE=n
CONFIG_SPL_FIT_ROLLBACK_PROTECT=n
CONFIG_CMD_FDT=y
CONFIG_DEFAULT_FDT_FILE="rk3588s-fydetab-duo.dtb"
CONFIG_CMD_PXE=y
'';
preBuild = ''
patchShebangs arch/arm/mach-rockchip/make_fit_atf.sh
patchShebangs arch/arm/mach-rockchip/decode_bl31.py
# Needs write access to generate the spl
cp -r ${rkbin.src} rkbin
chmod -R u+rw rkbin
export RKBIN_TOOLS=$(readlink -e rkbin/tools)
ln -s ${rkbin}/bin bin
cp ${rkbin.src}/tools/boot_merger tools/
cp ${rkbin.src}/tools/mkimage tools/
'';
postBuild = ''
sh ./make.sh --spl
sh ./make.sh --idblock
sh ./make.sh itb
mv idblock.bin idbloader.img
'';
}

View file

@ -0,0 +1,11 @@
--- a/tools/Makefile 2025-08-17 22:31:27.653078358 -0700
+++ b/tools/Makefile 2025-08-17 22:30:09.551827481 -0700
@@ -54,7 +54,7 @@
hostprogs-y += mkenvimage
mkenvimage-objs := mkenvimage.o os_support.o lib/crc32.o
-hostprogs-y += dumpimage mkimage
+hostprogs-$(CONFIG_FIT_SIGNATURE) += dumpimage mkimage
hostprogs-$(CONFIG_FIT_SIGNATURE) += fit_info fit_check_sign
# Rockchip pack tools

View file

@ -10,11 +10,6 @@
"video=eDP-1:panel_orientation=right_side_up"
];
services.tlp.enable = lib.mkDefault (
(lib.versionOlder (lib.versions.majorMinor lib.version) "21.05")
|| !config.services.power-profiles-daemon.enable
);
# Required for grub to properly display the boot menu.
boot.loader.grub.gfxmodeEfi = lib.mkDefault "720x1280x32";

View file

@ -0,0 +1,14 @@
{ config, lib, ... }:
{
imports = [
../../../common/cpu/intel/meteor-lake
../../../common/pc
../../../common/pc/laptop
../../../common/pc/ssd
];
config = {
services.thermald.enable = lib.mkDefault true;
};
}

View file

@ -0,0 +1,11 @@
{ lib, ... }:
{
imports = [
../../../common/cpu/intel/broadwell
../../../common/pc
../../../common/pc/ssd
];
services.thermald.enable = lib.mkDefault true;
}

View file

@ -36,7 +36,7 @@ in
nixpkgs.overlays = [ (import ./overlay.nix) ];
nixpkgs.hostPlatform = "armv7l-linux";
nixpkgs.hostPlatform.system = "armv7l-linux";
boot.initrd.availableKernelModules = [ "ahci_mvebu" ];

View file

@ -26,6 +26,10 @@
# See https://wiki.archlinux.org/title/Dell_XPS_16_(9640)#Random_freezes
"iommu.strict=1"
"iommu.passthrough=1"
# Workaround: i915 0000:00:02.0: [drm] *ERROR* [CRTC:82:pipe A] flip_done timed out
# See https://github.com/pop-os/pop/issues/3130
"i915.dmc_firmware_path=\"\""
];
};

View file

@ -17,9 +17,4 @@
# Cooling management
services.thermald.enable = lib.mkDefault true;
# tlp defaults to "powersave", which doesn't exist on this laptop
services.tlp.settings = {
CPU_SCALING_GOVERNOR_ON_BAT = "schedutil";
};
}

View file

@ -10,8 +10,7 @@
# remove all packages for amd igpu. I only removed amdgpu from
# services.xserver.videoDrivers by overriding. This is because the specialization
# of nix cannot implement such an operation as canceling an import.
hardware =
{
hardware = {
nvidia.prime.offload.enable = false;
}
// lib.optionalAttrs (options ? amdgpu.opencl.enable) {

View file

@ -7,7 +7,7 @@
let
# This file was obtained from the display while "DDG" mode was enabled.
chip_edid = pkgs.runCommandNoCC "chip_edid" { } ''
chip_edid = pkgs.runCommand "chip_edid" { } ''
mkdir -p $out/lib/firmware/edid
cp ${./16ach6h.bin} $out/lib/firmware/edid/16ach6h.bin
'';

View file

@ -10,8 +10,7 @@
# remove all packages for amd igpu. I only removed amdgpu from
# services.xserver.videoDrivers by overriding. This is because the specialization
# of nix cannot implement such an operation as canceling an import.
hardware =
{
hardware = {
nvidia.prime.offload.enable = false;
}
// lib.optionalAttrs (options ? amdgpu.opencl.enable) {

View file

@ -3,8 +3,7 @@
{
imports = [ ../hybrid ];
services.xserver.videoDrivers = [ "nvidia" ];
hardware =
{
hardware = {
nvidia.prime.offload.enable = false;
}
// lib.optionalAttrs (options ? amdgpu.opencl.enable) {

View file

@ -32,8 +32,4 @@
# Avoid issues with modesetting causing blank screen
services.xserver.videoDrivers = [ "nvidia" ];
# AMD has better battery life with PPD over TLP:
# https://community.frame.work/t/responded-amd-7040-sleep-states/38101/13
services.power-profiles-daemon.enable = lib.mkDefault true;
}

View file

@ -14,8 +14,9 @@
# amdgpu.backlight=0 makes the backlight work
# acpi_backlight=none allows the backlight save/load systemd service to work on older kernel versions
boot.kernelParams =
[ "amdgpu.backlight=0" ]
boot.kernelParams = [
"amdgpu.backlight=0"
]
++ lib.optional (lib.versionOlder config.boot.kernelPackages.kernel.version "6.1.6") "acpi_backlight=none";
# For mainline support of rtw89 wireless networking

View file

@ -0,0 +1,7 @@
# Lenovo ThinkPad P14s Intel Gen 2
Much of the extraneous settings are filled out using the [wiki](https://wiki.nixos.org/wiki/NVIDIA#Hybrid_graphics_with_PRIME), which gives guidance on how to determine the correct PCI bus IDs to assign, aswell as the note to include the `modesetting` driver in `services.xserver.videoDrivers`.
## BIOS Settings to adjust
For suspending to RAM to work, set Config -> Power -> Sleep State to "Linux S3" in EFI.

View file

@ -0,0 +1,18 @@
{
imports = [
../../../../../common/gpu/nvidia/prime.nix
../../../../../common/gpu/nvidia/turing
../../../../../common/cpu/intel/tiger-lake
../../../../../common/pc/laptop
../../../../../common/pc/ssd
../../../../../common/pc
../.
];
hardware.nvidia.prime = {
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
services.xserver.videoDrivers = [ "modesetting" ];
}

View file

@ -0,0 +1,5 @@
{
imports = [
../.
];
}

View file

@ -0,0 +1,9 @@
{ lib, pkgs, ... }:
{
imports = [
../.
../../../../common/cpu/intel
../../../../common/gpu/intel
];
}

View file

@ -0,0 +1,8 @@
{ lib, config, ... }:
{
imports = [
../../../../../common/cpu/intel/comet-lake
../.
];
}

Some files were not shown because too many files have changed in this diff Show more