|
|
@ -37,62 +37,65 @@ |
|
|
|
# add pulseaudio support to manage audio |
|
|
|
hardware.pulseaudio.enable = true; |
|
|
|
|
|
|
|
# prevent suspend on folding |
|
|
|
services.logind.lidSwitch = "ignore"; |
|
|
|
|
|
|
|
# next sleep & wake is code from: https://github.com/hpfr/system/blob/2e5b3b967b0436203d7add6adbd6b6f55e87cf3c/hosts/linux-surface.nix |
|
|
|
systemd.services = { |
|
|
|
surface-sleep = { |
|
|
|
enable = lib.versionOlder config.boot.kernelPackages.kernel.version "5.4"; |
|
|
|
before = [ "suspend.target" ]; |
|
|
|
wantedBy = [ "suspend.target" ]; |
|
|
|
serviceConfig.Type = "oneshot"; |
|
|
|
path = with pkgs; [ procps kmod bluez ]; |
|
|
|
script = '' |
|
|
|
# Disable bluetooth if no device is connected |
|
|
|
if ps cax | grep bluetoothd && ! bluetoothctl info; then |
|
|
|
bluetoothctl power off |
|
|
|
fi |
|
|
|
# systemd.services = { |
|
|
|
# surface-sleep = { |
|
|
|
# enable = lib.versionOlder config.boot.kernelPackages.kernel.version "5.4"; |
|
|
|
# before = [ "suspend.target" ]; |
|
|
|
# wantedBy = [ "suspend.target" ]; |
|
|
|
# serviceConfig.Type = "oneshot"; |
|
|
|
# path = with pkgs; [ procps kmod bluez ]; |
|
|
|
# script = '' |
|
|
|
# # Disable bluetooth if no device is connected |
|
|
|
# if ps cax | grep bluetoothd && ! bluetoothctl info; then |
|
|
|
# bluetoothctl power off |
|
|
|
# fi |
|
|
|
|
|
|
|
## Disable bluetooth regardless if devices are connected (see notes below) |
|
|
|
# if ps cax | grep bluetoothd; then |
|
|
|
# bluetoothctl power off |
|
|
|
# fi |
|
|
|
# ## Disable bluetooth regardless if devices are connected (see notes below) |
|
|
|
# # if ps cax | grep bluetoothd; then |
|
|
|
# # bluetoothctl power off |
|
|
|
# # fi |
|
|
|
|
|
|
|
## > Remove IPTS from ME side |
|
|
|
modprobe -r ipts_surface |
|
|
|
modprobe -r intel_ipts |
|
|
|
# modprobe -r mei_hdcp |
|
|
|
modprobe -r mei_me |
|
|
|
modprobe -r mei |
|
|
|
## > Remove IPTS from i915 side |
|
|
|
for i in $(find /sys/kernel/debug/dri -name i915_ipts_cleanup); do |
|
|
|
echo 1 > $i |
|
|
|
done |
|
|
|
''; |
|
|
|
}; |
|
|
|
surface-wake = { |
|
|
|
enable = lib.versionOlder config.boot.kernelPackages.kernel.version "5.4"; |
|
|
|
after = [ "post-resume.target" ]; |
|
|
|
wantedBy = [ "post-resume.target" ]; |
|
|
|
serviceConfig.Type = "oneshot"; |
|
|
|
path = with pkgs; [ procps kmod bluez ]; |
|
|
|
script = '' |
|
|
|
## > Load IPTS from i915 side |
|
|
|
for i in $(find /sys/kernel/debug/dri -name i915_ipts_init); do |
|
|
|
echo 1 > $i |
|
|
|
done |
|
|
|
## > Load IPTS from ME side |
|
|
|
modprobe mei |
|
|
|
modprobe mei_me |
|
|
|
# modprobe mei_hdcp |
|
|
|
modprobe intel_ipts |
|
|
|
modprobe ipts_surface |
|
|
|
# ## > Remove IPTS from ME side |
|
|
|
# modprobe -r ipts_surface |
|
|
|
# modprobe -r intel_ipts |
|
|
|
# # modprobe -r mei_hdcp |
|
|
|
# modprobe -r mei_me |
|
|
|
# modprobe -r mei |
|
|
|
# ## > Remove IPTS from i915 side |
|
|
|
# for i in $(find /sys/kernel/debug/dri -name i915_ipts_cleanup); do |
|
|
|
# echo 1 > $i |
|
|
|
# done |
|
|
|
# ''; |
|
|
|
# }; |
|
|
|
# surface-wake = { |
|
|
|
# enable = lib.versionOlder config.boot.kernelPackages.kernel.version "5.4"; |
|
|
|
# after = [ "post-resume.target" ]; |
|
|
|
# wantedBy = [ "post-resume.target" ]; |
|
|
|
# serviceConfig.Type = "oneshot"; |
|
|
|
# path = with pkgs; [ procps kmod bluez ]; |
|
|
|
# script = '' |
|
|
|
# ## > Load IPTS from i915 side |
|
|
|
# for i in $(find /sys/kernel/debug/dri -name i915_ipts_init); do |
|
|
|
# echo 1 > $i |
|
|
|
# done |
|
|
|
# ## > Load IPTS from ME side |
|
|
|
# modprobe mei |
|
|
|
# modprobe mei_me |
|
|
|
# # modprobe mei_hdcp |
|
|
|
# modprobe intel_ipts |
|
|
|
# modprobe ipts_surface |
|
|
|
|
|
|
|
# Restart bluetooth |
|
|
|
if ps cax | grep bluetoothd; then |
|
|
|
bluetoothctl power on |
|
|
|
fi |
|
|
|
''; |
|
|
|
}; |
|
|
|
}; |
|
|
|
# # Restart bluetooth |
|
|
|
# if ps cax | grep bluetoothd; then |
|
|
|
# bluetoothctl power on |
|
|
|
# fi |
|
|
|
# ''; |
|
|
|
# }; |
|
|
|
# }; |
|
|
|
|
|
|
|
## NOTES: |
|
|
|
# Susspend issue: |
|
|
|