feat: rewrite to more nixy flakes
This commit is contained in:
+90
-77
@@ -1,91 +1,104 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib ? pkgs.lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
concat = strings: builtins.concatStringsSep " " strings;
|
||||
wacom.src =
|
||||
|
||||
displays =
|
||||
let
|
||||
xsetwacom = "${pkgs.xf86_input_wacom}/bin/xsetwacom";
|
||||
awk = lib.getExe pkgs.gawk;
|
||||
primary = "DP-2";
|
||||
secondary = "HDMI-0";
|
||||
|
||||
in
|
||||
''
|
||||
#!/bin/sh
|
||||
|
||||
# Wait for X socket
|
||||
for i in $(seq 30); do
|
||||
[ -S /tmp/.X11-unix/X0 ] && break
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
# Just to be sure that the displays are ready...
|
||||
sleep 5
|
||||
|
||||
export DISPLAY=:0
|
||||
export XAUTHORITY="$HOME/.Xauthority"
|
||||
|
||||
for i in $(seq 10); do
|
||||
if ${xsetwacom} list devices | grep -q Wacom; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
stylus=$(${xsetwacom} list devices | ${awk} -F' \t' '/stylus/{print $1}')
|
||||
|
||||
if [ -z "$${stylus}" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
${xsetwacom} set "$stylus" MapToOutput HEAD-0
|
||||
'';
|
||||
{
|
||||
inherit primary secondary;
|
||||
xrandr = concat [
|
||||
"--output ${primary}"
|
||||
"--mode 1920x1080"
|
||||
"--pos 0x0"
|
||||
"--rate 144"
|
||||
"--primary"
|
||||
""
|
||||
"--output ${secondary}"
|
||||
"--mode 1920x1080"
|
||||
"--pos 1920x0"
|
||||
"--rate 144"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
services.xserver.wacom.enable = true;
|
||||
inherit displays;
|
||||
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
nixosModule =
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib ? pkgs.lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
wacom.src =
|
||||
let
|
||||
xsetwacom = "${pkgs.xf86_input_wacom}/bin/xsetwacom";
|
||||
awk = lib.getExe pkgs.gawk;
|
||||
in
|
||||
''
|
||||
#!/bin/sh
|
||||
|
||||
open = true;
|
||||
# Wait for X socket
|
||||
for i in $(seq 30); do
|
||||
[ -S /tmp/.X11-unix/X0 ] && break
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
nvidiaSettings = true;
|
||||
# Just to be sure that the displays are ready...
|
||||
sleep 5
|
||||
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
export DISPLAY=:0
|
||||
export XAUTHORITY="$HOME/.Xauthority"
|
||||
|
||||
home-manager.users.anton.xsession.profileExtra = concat [
|
||||
"${lib.getExe pkgs.xrandr}"
|
||||
"${concat [
|
||||
"--output DP-2"
|
||||
"--mode 1920x1080"
|
||||
"--pos 0x0"
|
||||
"--rate 144"
|
||||
"--primary"
|
||||
]}"
|
||||
"${concat [
|
||||
"--output HDMI-0"
|
||||
"--mode 1920x1080"
|
||||
"--pos 1920x0"
|
||||
"--rate 144"
|
||||
]}"
|
||||
];
|
||||
for i in $(seq 10); do
|
||||
if ${xsetwacom} list devices | grep -q Wacom; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
systemd.user.services.wacom = {
|
||||
enable = true;
|
||||
description = "Configure my Wacom (One) tablet";
|
||||
wantedBy = [ "default.target" ];
|
||||
after = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = pkgs.writeShellScript "wacom.sh" wacom.src;
|
||||
stylus=$(${xsetwacom} list devices | ${awk} -F' \t' '/stylus/{print $1}')
|
||||
|
||||
if [ -z "$${stylus}" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
${xsetwacom} set "$stylus" MapToOutput HEAD-0
|
||||
'';
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
services.xserver.wacom.enable = true;
|
||||
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
|
||||
open = true;
|
||||
|
||||
nvidiaSettings = true;
|
||||
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
|
||||
systemd.user.services.wacom = {
|
||||
enable = true;
|
||||
description = "Configure my Wacom (One) tablet";
|
||||
wantedBy = [ "default.target" ];
|
||||
after = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = pkgs.writeShellScript "wacom.sh" wacom.src;
|
||||
};
|
||||
};
|
||||
|
||||
services.udev.extraRules = ''
|
||||
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}+="wacom.service"
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
services.udev.extraRules = ''
|
||||
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}+="wacom.service"
|
||||
'';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user