diff --git a/README.md b/README.md index b1cb989..8051085 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,7 @@ See code for all available configurations. | [Framework 12th Gen Intel Core](framework/12th-gen-intel) | `` | | [FriendlyARM NanoPC-T4](friendlyarm/nanopc-t4) | `` | | [GPD MicroPC](gpd/micropc) | `` | +| [GPD Pocket 3](gpd/pocket-3) | `` | | [Google Pixelbook](google/pixelbook) | `` | | [HP Elitebook 2560p](hp/elitebook/2560p) | `` | | [Intel NUC 8i7BEH](intel/nuc/8i7beh/) | `` | diff --git a/flake.nix b/flake.nix index 797da11..6bfd46b 100644 --- a/flake.nix +++ b/flake.nix @@ -51,6 +51,7 @@ friendlyarm-nanopc-t4 = import ./friendlyarm/nanopc-t4; google-pixelbook = import ./google/pixelbook; gpd-micropc = import ./gpd/micropc; + gpd-pocket-3 = import ./gpd/pocket-3; hp-elitebook-2560p = import ./hp/elitebook/2560p; intel-nuc-8i7beh = import ./intel/nuc/8i7beh; lenovo-ideapad-15arh05 = import ./lenovo/ideapad/15arh05; diff --git a/gpd/pocket-3/default.nix b/gpd/pocket-3/default.nix new file mode 100644 index 0000000..59de138 --- /dev/null +++ b/gpd/pocket-3/default.nix @@ -0,0 +1,44 @@ +{ lib, pkgs, ... }: +let inherit (lib) mkDefault mkIf; +in +{ + imports = [ + ../../common/pc/laptop + ../../common/pc/laptop/ssd + ]; + + # Necessary kernel modules + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "thunderbolt" ]; + + # GPU is an Intel Iris Xe, on a “TigerLake” mobile CPU + boot.initrd.kernelModules = [ "i915" ]; # Early loading so the passphrase prompt appears on external displays + services.xserver.videoDrivers = [ "intel" ]; + hardware.opengl.extraPackages = with pkgs; [ intel-media-driver vaapiIntel ]; + + boot.kernelParams = [ + # S3 suspend is broken as of Sept. 2022 (screen does not come back properly), use S2 + "mem_sleep_default=s2idle" + + # The GPD Pocket3 uses a tablet OLED display, that is mounted rotated 90° counter-clockwise + "fbcon=rotate:1" "video=DSI-1:panel_orientation=right_side_up" + ]; + + fonts.fontconfig = { + subpixel.rgba = "vbgr"; # Pixel order for rotated screen + + # The OLED display has √(1920² + 1200²) px / 8in ≃ 283 dpi + # Per the documentation, antialiasing, hinting, etc. have no visible effect at such high pixel densities anyhow. + # Set manually, as the hiDPI module had incorrect settings prior to NixOS 22.11; see nixpkgs#194594. + hinting.enable = mkDefault false; + antialias = mkIf (lib.versionOlder (lib.versions.majorMinor lib.version) "22.11") false; + }; + + # More HiDPI settings + hardware.video.hidpi.enable = true; + services.xserver.dpi = 280; + + # Necessary for audio support on the 1195G7 model + boot.extraModprobeConfig = '' + options snd-intel-dspcfg dsp_driver=1 + ''; +}