1
0
Fork 0
mirror of https://github.com/NixOS/nixos-hardware synced 2024-11-22 19:09:42 +01:00

minisforum/v3: init

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
This commit is contained in:
eum3l 2024-10-30 22:00:08 +01:00 committed by mergify[bot]
parent be00f01542
commit d3986e7885
8 changed files with 166 additions and 3 deletions

View file

@ -301,6 +301,7 @@ See code for all available configurations.
| [Microsoft Surface Pro 3](microsoft/surface-pro/3) | `<nixos-hardware/microsoft/surface-pro/3>` |
| [Microsoft Surface Pro 9](microsoft/surface-pro/9) | `<nixos-hardware/microsoft/surface-pro/9>` |
| [Morefine M600](morefine/m600) | `<nixos-hardware/morefine/m600>` |
| [Minisforum V3](minisforum/v3) | `<nixos-hardware/minisforum/v3>` |
| [NXP iMX8 MPlus Evaluation Kit](nxp/imx8mp-evk) | `<nixos-hardware/nxp/imx8mp-evk>` |
| [NXP iMX8 MQuad Evaluation Kit](nxp/imx8mq-evk) | `<nixos-hardware/nxp/imx8mq-evk>` |
| [Hardkernel Odroid HC4](hardkernel/odroid-hc4/default.nix) | `<nixos-hardware/hardkernel/odroid-hc4>` |
@ -328,14 +329,14 @@ See code for all available configurations.
| [Samsung Series 9 NP900X3C](samsung/np900x3c) | `<nixos-hardware/samsung/np900x3c>` |
| [StarFive VisionFive v1](starfive/visionfive/v1) | `<nixos-hardware/starfive/visionfive/v1>` |
| [StarFive VisionFive 2](starfive/visionfive/v2) | `<nixos-hardware/starfive/visionfive/v2>` |
| [StarLabs StarLite 5 (I5)](starlabs/starlite/i5) | `<nixos-hardware/starlabs/starlite/i5>` |
| [StarLabs StarLite 5 (I5)](starlabs/starlite/i5) | `<nixos-hardware/starlabs/starlite/i5>` |
| [Supermicro A1SRi-2758F](supermicro/a1sri-2758f) | `<nixos-hardware/supermicro/a1sri-2758f>` |
| [Supermicro M11SDV-8C-LN4F](supermicro/m11sdv-8c-ln4f) | `<nixos-hardware/supermicro/m11sdv-8c-ln4f>` |
| [Supermicro X10SLL-F](supermicro/x10sll-f) | `<nixos-hardware/supermicro/x10sll-f>` |
| [Supermicro X12SCZ-TLN4F](supermicro/x12scz-tln4f) | `<nixos-hardware/supermicro/x12scz-tln4f>` |
| [System76 (generic)](system76) | `<nixos-hardware/system76>` |
| [System76 Darter Pro 6](system76/darp6) | `<nixos-hardware/system76/darp6>` |
| [System76 Gazelle 18](system76/gaze18) | `<nixos-hardware/system76/gaze18>` |
| [System76 Gazelle 18](system76/gaze18) | `<nixos-hardware/system76/gaze18>` |
| [System76 Galago Pro 5](system76/galp5-1650) | `<nixos-hardware/system76/galp5-1650>` |
| [Toshiba Chromebook 2 `swanky`](toshiba/swanky) | `<nixos-hardware/toshiba/swanky>` |
| [Tuxedo InfinityBook v4](tuxedo/infinitybook/v4) | `<nixos-hardware/tuxedo/infinitybook/v4>` |

View file

@ -245,6 +245,7 @@
microsoft-surface-pro-3 = import ./microsoft/surface-pro/3;
microsoft-surface-pro-9 = import ./microsoft/surface-pro/9;
milkv-pioneer = import ./milkv/pioneer;
minisforum-v3 = import ./minisforum/v3;
morefine-m600 = import ./morefine/m600;
msi-b350-tomahawk = import ./msi/b350-tomahawk;
msi-b550-a-pro = import ./msi/b550-a-pro;

47
minisforum/v3/audio.nix Normal file
View file

@ -0,0 +1,47 @@
{ ... }:
{
# Fix microphone.
# Based on https://github.com/mudkipme/awesome-minisforum-v3/issues/10#issuecomment-2317474057 (Volume control workaround doesn't work on Arch)
boot.extraModprobeConfig = ''
options snd-hda-intel model=alc256-asus-aio
'';
# Based on https://github.com/mudkipme/awesome-minisforum-v3/issues/9#issue-2407782714 (volume control fixes for arch)
services.pipewire.wireplumber.extraConfig."alsa-soft-mixer"."monitor.alsa.rules" = [
{
# Enable soft-mixer.
# Fix global volume control.
actions.update-props."api.alsa.soft-mixer" = true;
matches = [
{
"device.name" = "~alsa_card.*";
}
];
}
{
# Disable soft-mixer for input devices.
actions.update-props."api.alsa.soft-mixer" = false;
matches = [
{
"device.name" = "~alsa_card.*";
"node.name" = "~alsa_input.*";
}
];
}
{
# Disable audio session suspension.
# Fix bug with plugged in headphones.
# Based on https://github.com/mudkipme/awesome-minisforum-v3?tab=readme-ov-file#disable-audio-session-suspension (Disable audio session suspension)
actions.update-props."session.suspend-timeout-seconds" = "0";
matches = [
{
"node.name" = "~alsa_input.*";
}
{
"node.name" = "~alsa_output.*";
}
];
}
];
}

12
minisforum/v3/default.nix Normal file
View file

@ -0,0 +1,12 @@
{ ... }:
{
imports = [
./sensors.nix
./audio.nix
./power.nix
../../common/gpu/amd/default.nix
../../common/cpu/amd/default.nix
../../common/pc/laptop/default.nix
];
}

31
minisforum/v3/dsdt.patch Normal file
View file

@ -0,0 +1,31 @@
--- dsdt.dsl 2024-08-10 06:24:09.143777067 +0200
+++ patched/dsdt.dsl 2024-08-10 04:58:50.191036154 +0200
@@ -18,7 +18,7 @@
* Compiler ID "INTL"
* Compiler Version 0x20220331 (539099953)
*/
-DefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I ", 0x01072009)
+DefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I ", 0x01072019)
{
External (_SB_.APTS, MethodObj) // 1 Arguments
External (_SB_.AWAK, MethodObj) // 1 Arguments
@@ -7341,7 +7341,7 @@
Device (CIND)
{
- Name (_HID, "ID9001") // _HID: Hardware ID
+ Name (_HID, "INT33D3") // _HID: Hardware ID
Name (_CID, "PNP0C60" /* Display Sensor Device */) // _CID: Compatible ID
Method (_STA, 0, Serialized) // _STA: Status
{
@@ -7364,8 +7364,8 @@
{
Device (STS)
{
- Name (_HID, EisaId ("SMOCF05")) // _HID: Hardware ID
- Name (_CID, EisaId ("SMOCF05")) // _CID: Compatible ID
+ Name (_HID, EisaId ("SMO8B30")) // _HID: Hardware ID
+ Name (_CID, EisaId ("SMO8B30")) // _CID: Compatible ID
Name (_UID, Zero) // _UID: Unique ID
Method (_STA, 0, NotSerialized) // _STA: Status
{

19
minisforum/v3/power.nix Normal file
View file

@ -0,0 +1,19 @@
{ pkgs, ... }:
{
# From "Optimizing power draw (under Linux)": https://github.com/mudkipme/awesome-minisforum-v3/issues/5#issue-2391536450
boot.kernelParams = [ "pcie_aspm.policy=powersupersave" ];
systemd.services.enable-aspm = {
wantedBy = [ "default.target" ];
serviceConfig = {
ExecStart = "${pkgs.bash}/bin/bash ${pkgs.callPackage ./src.nix { }}/aspm_v3.sh";
Restart = "no";
};
path = with pkgs; [
bc
pciutils
];
};
}

44
minisforum/v3/sensors.nix Normal file
View file

@ -0,0 +1,44 @@
{ pkgs, lib, ... }:
{
# Enable IIO for brightness and accelerometer sensors
hardware.sensor.iio.enable = lib.mkDefault true;
services.fprintd.enable = lib.mkDefault true;
# Override ACPI DSDT to fix the accelerometer.
# A driver already exists for a similar sensor.
# This overrides the IDs to make the existing driver work.
# From Accelerometer on Linux https://github.com/mudkipme/awesome-minisforum-v3/issues/2#issuecomment-2279282784
boot.initrd.prepend =
let
minisforum-acpi-override = pkgs.stdenv.mkDerivation {
name = "minisforum-acpi-override";
CPIO_PATH = "kernel/firmware/acpi";
src = pkgs.callPackage ./src.nix {};
patches = [ ./dsdt.patch ];
nativeBuildInputs = with pkgs; [
acpica-tools
cpio
];
installPhase = ''
mkdir -p $CPIO_PATH
iasl -tc ./dsdt.dsl
cp ./dsdt.aml $CPIO_PATH
find kernel | cpio -H newc --create > acpi_override
cp acpi_override $out
'';
};
in
[ (toString minisforum-acpi-override) ];
# Fix inverted accelerometer rotation.
services.udev.extraHwdb = ''
sensor:modalias:acpi:SMO8B30*:dmi:*svnMicroComputer*:pnV3:*
ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1
'';
}

8
minisforum/v3/src.nix Normal file
View file

@ -0,0 +1,8 @@
# Outsource (MIT License) for aspm_v3.sh and dsdt.dsl
{ fetchFromGitHub, ... }:
fetchFromGitHub {
owner = "eum3l";
repo = "minisforum-v3-nixos-hardware";
rev = "7a94dbac701640cef91ec5b1873868a512718f09";
hash = "sha256-V23Vuw/DV0l2c0m2hBnjZ2uey0KMeAdymnlLqXbFFUM=";
}