You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

111 lines
3.3 KiB

# This is a custom file for a surface.
{ config, lib, pkgs, modulesPath, ... }:
{
environment.systemPackages = with pkgs; [
obs-studio
rnote
xournalpp
];
# Set an usable key configuration: Ctrl at capslock, Win at Alt, Alt at Ctrl
services.xserver.displayManager.sessionCommands =''
${pkgs.xorg.xmodmap}/bin/xmodmap "${pkgs.writeText "xkb-layout" ''
!
! Swap Caps_Lock and Control_L
!
remove Lock = Caps_Lock
remove Control = Control_L
! keysym Control_L = Caps_Lock
keysym Control_L = Mode_switch
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
! map arrows to more ergonomic position
keycode 43 = h H Left
keycode 44 = j J Down
keycode 45 = k K Up
keycode 46 = l L Right
''}"
'';
# 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
# ## 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
# # Restart bluetooth
# if ps cax | grep bluetoothd; then
# bluetoothctl power on
# fi
# '';
# };
# };
## NOTES:
# Susspend issue:
# https://github.com/linux-surface/linux-surface/wiki/Known-Issues-and-FAQ#suspend-aka-sleep-vs-lid-closingopening-events
# run:
# > sudo modprobe -r surface_gpe
# and:
# > sudo bash -c 'echo -e "\n# Blacklisting lid vs. suspend issue module\nblacklist surface_gpe" >> /etc/modprobe.d/blacklist.conf'
#
# Now folding the keyboard to the screen will not suspend and brick the
# session, but you will need to manually suspend the session if saving battery
# is desired.
}