Skip to content

Commit

Permalink
minisforum/v3: init
Browse files Browse the repository at this point in the history
  • Loading branch information
eum3l committed Oct 30, 2024
1 parent 07d15e8 commit ca8613a
Show file tree
Hide file tree
Showing 8 changed files with 161 additions and 3 deletions.
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,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>` |
Expand Down Expand Up @@ -327,15 +328,15 @@ 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 Galago Pro 5](system76/galp5-1650) | `<nixos-hardware/system76/galp5-1650>` |
| [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>` |
| [TUXEDO Aura 15 - Gen1](tuxedo/aura/15/gen1) | `<nixos-hardware/tuxedo/aura/15/gen1>` |
Expand Down
1 change: 1 addition & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,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;
Expand Down
39 changes: 39 additions & 0 deletions minisforum/v3/accelerometer.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{ pkgs, ... }:
{

# Override the DSDT ACPI table 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
'';

}
47 changes: 47 additions & 0 deletions minisforum/v3/audio.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{ ... }:
{
# Fix microphone.
# From [Volume control workaround doesn't work on Arch](https://github.com/mudkipme/awesome-minisforum-v3/issues/10#issuecomment-2317474057)
boot.extraModprobeConfig = ''
options snd-hda-intel model=alc256-asus-aio
'';

# From [volume control fixes for arch](https://github.com/mudkipme/awesome-minisforum-v3/issues/9#issue-2407782714)
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.
# From [Disable audio session suspension](https://github.com/mudkipme/awesome-minisforum-v3?tab=readme-ov-file#disable-audio-session-suspension)
actions.update-props."session.suspend-timeout-seconds" = "0";
matches = [
{
"node.name" = "~alsa_input.*";
}
{
"node.name" = "~alsa_output.*";
}
];
}
];

}
12 changes: 12 additions & 0 deletions minisforum/v3/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{ ... }:
{
imports = [
./accelerometer.nix
./audio.nix
./power.nix

../../common/gpu/amd/default.nix
../../common/cpu/amd/default.nix
../../common/pc/laptop/default.nix
];
}
31 changes: 31 additions & 0 deletions minisforum/v3/dsdt.patch
Original file line number Diff line number Diff line change
@@ -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 changes: 19 additions & 0 deletions minisforum/v3/power.nix
Original file line number Diff line number Diff line change
@@ -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
];
};

}
8 changes: 8 additions & 0 deletions minisforum/v3/src.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Outsource for aspm_v3.sh and dsdt.dsl
{ fetchFromGitHub, ... }:
fetchFromGitHub {
owner = "eum3l";
repo = "minisforum-v3-nixos-hardware";
rev = "4b1d99b3379d046142c1094018072acc22b40c70";
hash = "sha256-UBPTLbSjDdL6NPUrAdsWcL28QSyiY/5oA+iqxl9dEGY=";
}

0 comments on commit ca8613a

Please sign in to comment.