From c0e4269e6a6518b6a648d250c437b59460caa6e9 Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 27 Aug 2019 16:56:19 +0200 Subject: l xerxes.r: support most of the hardware --- lass/1systems/xerxes/config.nix | 70 ++++++++++++++++++++++++++++++++++++--- lass/1systems/xerxes/physical.nix | 24 +++++++------- 2 files changed, 78 insertions(+), 16 deletions(-) diff --git a/lass/1systems/xerxes/config.nix b/lass/1systems/xerxes/config.nix index b577b31b3..2d25bc88a 100644 --- a/lass/1systems/xerxes/config.nix +++ b/lass/1systems/xerxes/config.nix @@ -35,10 +35,6 @@ displayManager.lightdm.autoLogin.user = "lass"; }; - boot.blacklistedKernelModules = [ - "xpad" - ]; - krebs.syncthing = { folders = { the_playlist = { @@ -54,4 +50,70 @@ umask = "0007"; }; }; + + boot.blacklistedKernelModules = [ "xpad" ]; + systemd.services.xboxdrv = { + wantedBy = [ "multi-user.target" ]; + script = '' + ${pkgs.xboxdrv.overrideAttrs(o: { + patches = [ (pkgs.fetchurl { + url = "https://patch-diff.githubusercontent.com/raw/xboxdrv/xboxdrv/pull/251.patch"; + sha256 = "17784y20mxqrlhgvwvszh8lprxrvgmb7ah9dknmbhj5jhkjl8wq5"; + }) ]; + })}/bin/xboxdrv --type xbox360 --dbus disabled -D + ''; + }; + + programs.adb.enable = true; + + services.logind.lidSwitch = "ignore"; + services.acpid = { + enable = true; + lidEventCommands = '' + export DISPLAY=:${toString config.services.xserver.display} + case "$1" in + "button/lid LID close") + ${pkgs.xorg.xinput}/bin/xinput disable 'pointer: Mouse for Windows' + ${pkgs.xorg.xinput}/bin/xinput disable 'keyboard: Mouse for Windows' + ${pkgs.acpilight}/bin/xbacklight -get > /tmp/pre_lid_brightness + ${pkgs.acpilight}/bin/xbacklight -set 0 + ;; + "button/lid LID open") + ${pkgs.xorg.xinput}/bin/xinput enable 'pointer: Mouse for Windows' + ${pkgs.xorg.xinput}/bin/xinput enable 'keyboard: Mouse for Windows' + ${pkgs.acpilight}/bin/xbacklight -set $(cat /tmp/pre_lid_brightness) + ;; + esac + ''; + }; + + systemd.services.suspend-again = { + after = [ "suspend.target" ]; + requiredBy = [ "suspend.target" ]; + # environment = { + # DISPLAY = ":${toString config.services.xserver.display}"; + # }; + serviceConfig = { + ExecStart = pkgs.writeDash "suspend-again" '' + ${pkgs.gnugrep}/bin/grep -q closed /proc/acpi/button/lid/LID0/state + if [ "$?" -eq 0 ]; then + echo 'wakeup with closed lid' + ${pkgs.systemd}/bin/systemctl suspend + fi + ''; + Type = "simple"; + }; + }; + + hardware.bluetooth.enable = true; + hardware.pulseaudio.package = pkgs.pulseaudioFull; + # hardware.pulseaudio.configFile = pkgs.writeText "default.pa" '' + # load-module module-bluetooth-policy + # load-module module-bluetooth-discover + # ## module fails to load with + # ## module-bluez5-device.c: Failed to get device path from module arguments + # ## module.c: Failed to load module "module-bluez5-device" (argument: ""): initialization failed. + # # load-module module-bluez5-device + # # load-module module-bluez5-discover + # ''; } diff --git a/lass/1systems/xerxes/physical.nix b/lass/1systems/xerxes/physical.nix index f88578e19..5d60dfc45 100644 --- a/lass/1systems/xerxes/physical.nix +++ b/lass/1systems/xerxes/physical.nix @@ -17,6 +17,7 @@ boot.blacklistedKernelModules = [ "goodix" ]; + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" ]; boot.initrd.kernelModules = [ ]; boot.initrd.luks.devices.crypted.device = "/dev/sda3"; @@ -27,11 +28,6 @@ "boot.shell_on_fail" ]; - services.xserver.displayManager.sessionCommands = '' - (sleep 2 && ${pkgs.xorg.xrandr}/bin/xrandr --output eDP-1 --rotate right) - (sleep 2 && ${pkgs.xorg.xinput}/bin/xinput set-prop 'Goodix Capacitive TouchScreen' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1) - ''; - fileSystems."/" = { device = "rpool/root"; fsType = "zfs"; @@ -76,11 +72,15 @@ IdleActionSec=300 ''; - services.xserver.extraConfig = '' - Section "Device" - Identifier "Intel Graphics" - Driver "Intel" - Option "TearFree" "true" - EndSection - ''; + services.xserver = { + videoDrivers = [ "intel" ]; + deviceSection = '' + Option "TearFree" "true" + ''; + displayManager.sessionCommands = '' + echo nonono > /tmp/xxyy + (sleep 2 && ${pkgs.xorg.xrandr}/bin/xrandr --output eDP1 --rotate right) + (sleep 2 && ${pkgs.xorg.xinput}/bin/xinput set-prop 'Goodix Capacitive TouchScreen' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1) + ''; + }; } -- cgit v1.2.3