56 lines
1.3 KiB
Nix
56 lines
1.3 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
makeEnable,
|
|
...
|
|
}: let
|
|
repairXwaylandSocket = pkgs.writeShellApplication {
|
|
name = "repair-xwayland-socket";
|
|
text = ''
|
|
if [ -z "''${DISPLAY:-}" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
display_part="''${DISPLAY#*:}"
|
|
display_number="''${display_part%%.*}"
|
|
case "$display_number" in
|
|
""|*[!0-9]*) exit 0 ;;
|
|
esac
|
|
|
|
socket="/tmp/.X11-unix/X$display_number"
|
|
fallback_socket="''${socket}_"
|
|
|
|
if [ -S "$socket" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [ -L "$socket" ] && [ ! -e "$socket" ]; then
|
|
rm -f "$socket" 2>/dev/null || true
|
|
fi
|
|
|
|
if [ ! -e "$socket" ] && [ -S "$fallback_socket" ]; then
|
|
ln -s "X''${display_number}_" "$socket" 2>/dev/null || true
|
|
fi
|
|
'';
|
|
};
|
|
steamWithXwaylandSocketRepair = pkgs.symlinkJoin {
|
|
name = "steam-with-xwayland-socket-repair";
|
|
paths = [pkgs.steam];
|
|
nativeBuildInputs = [pkgs.makeWrapper];
|
|
postBuild = ''
|
|
rm -f "$out/bin/steam"
|
|
makeWrapper ${pkgs.steam}/bin/steam "$out/bin/steam" \
|
|
--run ${lib.escapeShellArg "${repairXwaylandSocket}/bin/repair-xwayland-socket"}
|
|
'';
|
|
};
|
|
in
|
|
makeEnable config "myModules.games" false {
|
|
environment.systemPackages = with pkgs; [
|
|
repairXwaylandSocket
|
|
steamWithXwaylandSocketRepair
|
|
heroic
|
|
];
|
|
hardware.xone.enable = true;
|
|
}
|