Commit dfe3220

HPCesia <me@hpcesia.com>
2026-01-19 07:52:39
feat: remove aagl
use lutris instead for proton-ge.
1 parent d5379e0
modules/game/hoyo-games.nix
@@ -1,7 +1,5 @@
-{inputs, ...}: {
-  flake.modules.nixos.game = {pkgs, ...}: {
-    imports = [inputs.aagl-nix.nixosModules.default];
-
+{
+  flake.modules.nixos.game = _: {
     networking.hosts = {
       "0.0.0.0" = [
         "osuspider.yuanshen.com"
@@ -34,97 +32,5 @@
         "pc.crashsight.wetest.net"
       ];
     };
-
-    environment.systemPackages = let
-      aagl-pkgs = inputs.aagl-nix.packages.${pkgs.stdenv.system};
-      override = prev: {
-        extraPkgs = pkgs: [pkgs.bubblewrap]; # Use bubblewrap sandbox to set hostname to `STEAMDECK` to bypass anti-cheat
-      };
-      aagl-override-attrs = final: prev: let
-        # See https://github.com/an-anime-team/an-anime-game-launcher/issues/572#issuecomment-3476345318
-        my_wrapper = pkgs.writeShellScriptBin prev.pname ''
-          # --- Configuration ---
-          ORIGINAL_WRAPPER="${prev.passthru.wrapper}/bin/${prev.passthru.wrapper.name}"
-          STRACE_CMD="${pkgs.strace}/bin/strace -f -e trace=process -o /dev/null $ORIGINAL_WRAPPER "$@""
-          ESCORT_DURATION=120
-          GAME_PROCESS_NAME="YuanShen.exe"
-          LAUNCHER_PROCESS_NAME="${prev.passthru.wrapper.name}"
-          POLLING_INTERVAL=5 # Polling interval in seconds
-
-          # --- Variables ---
-          STRACE_PID=""
-          KILLER_PID=""
-
-          # --- Cleanup Function ---
-          cleanup() {
-              echo "[Fix Script] Exit signal received, cleaning up..."
-              if [ ! -z "$KILLER_PID" ] && ps -p "$KILLER_PID" > /dev/null; then
-                  kill -9 "$KILLER_PID"
-              fi
-              if [ ! -z "$STRACE_PID" ] && ps -p "$STRACE_PID" > /dev/null; then
-                  kill -9 "$STRACE_PID"
-              fi
-              pkill -9 -f "$LAUNCHER_PROCESS_NAME"
-              echo "[Fix Script] Cleanup complete."
-          }
-          trap cleanup EXIT SIGINT SIGTERM
-
-          # 1. Start the escort and the launcher
-          echo "[Fix Script] Escort enabled..."
-          $STRACE_CMD &
-          STRACE_PID=$!
-          echo "[Fix Script] Escort process PID: $STRACE_PID"
-
-          # 2. Main monitoring loop
-          while true; do
-              IS_GAME_RUNNING=false
-              if pgrep -f "$GAME_PROCESS_NAME" > /dev/null; then
-                  IS_GAME_RUNNING=true
-              fi
-
-              IS_STRACE_RUNNING=false
-              if [ ! -z "$STRACE_PID" ] && ps -p "$STRACE_PID" > /dev/null; then
-                  IS_STRACE_RUNNING=true
-              fi
-
-              if [ "$IS_STRACE_RUNNING" = false ] && [ "$IS_GAME_RUNNING" = false ]; then
-                  echo "[Fix Script] Neither Launcher nor Game is running. Exiting wrapper."
-                  break
-              fi
-
-              if [ "$IS_GAME_RUNNING" = true ]; then
-                  if [ -z "$KILLER_PID" ] && [ "$IS_STRACE_RUNNING" = true ]; then
-                      echo "[Fix Script] Game process detected! Starting $ESCORT_DURATION-second countown to kill strace..."
-                      (sleep $ESCORT_DURATION && echo "[Fix Script] Time up! Killing strace..." && kill -9 $STRACE_PID) &
-                      KILLER_PID=$!
-                  fi
-              else
-                  if [ ! -z "$KILLER_PID" ]; then
-                      echo "[Fix Script] Game exited but Launcher is open. Revoking detach program..."
-                      if ps -p $KILLER_PID > /dev/null; then
-                          kill -9 $KILLER_PID
-                      fi
-                      KILLER_PID=""
-                  fi
-              fi
-
-              sleep $POLLING_INTERVAL
-          done
-          echo "[Fix Script] Finished."
-          exit 0
-        '';
-      in {
-        passthru = prev.passthru // {wrapper = my_wrapper;};
-        paths = with prev.passthru; [icon desktopEntry my_wrapper];
-      };
-
-      anime-game-launcher = (aagl-pkgs.anime-game-launcher.override override).overrideAttrs aagl-override-attrs;
-      honkers-railway-launcher = aagl-pkgs.honkers-railway-launcher.override override;
-      sleepy-launcher = aagl-pkgs.sleepy-launcher.override override;
-    in [
-      anime-game-launcher
-      honkers-railway-launcher
-      sleepy-launcher
-    ];
   };
 }
modules/game/lutris.nix
@@ -3,12 +3,24 @@
     pkgs,
     osConfig,
     ...
-  }: {
+  }: let
+    proton-ge-bin_latest = pkgs.proton-ge-bin;
+    proton-ge-bin_10-18 = pkgs.proton-ge-bin.overrideAttrs rec {
+      version = "GE-Proton10-18";
+      src = pkgs.fetchzip {
+        url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${version}/${version}.tar.gz";
+        hash = "sha256-s2xnoyRy4JI1weRJ+9wjZzBRpsH7HMbK9DbhdVDJKww=";
+      };
+    };
+  in {
     programs.lutris = {
       enable = true;
       steamPackage = osConfig.programs.steam.package;
       defaultWinePackage = pkgs.proton-ge-bin;
-      protonPackages = [pkgs.proton-ge-bin];
+      protonPackages = [
+        proton-ge-bin_latest
+        proton-ge-bin_10-18
+      ];
       winePackages = [
         pkgs.wineWow64Packages.full
         pkgs.wineWowPackages.stagingFull
@@ -18,6 +30,7 @@
         gamescope
         gamemode
         mangohud
+        bubblewrap
       ];
     };
   };
flake.lock
@@ -1,27 +1,5 @@
 {
   "nodes": {
-    "aagl-nix": {
-      "inputs": {
-        "flake-compat": "flake-compat",
-        "nixpkgs": [
-          "nixpkgs"
-        ],
-        "rust-overlay": "rust-overlay"
-      },
-      "locked": {
-        "lastModified": 1767520119,
-        "narHash": "sha256-+OmNQLA9Fv5WBaxYHlPghS9XmnYWDaLt+AatCGhG+hc=",
-        "owner": "ezKEa",
-        "repo": "aagl-gtk-on-nix",
-        "rev": "5720d3282844b6b23b26dfac075a5f1f58ea8844",
-        "type": "github"
-      },
-      "original": {
-        "owner": "ezKEa",
-        "repo": "aagl-gtk-on-nix",
-        "type": "github"
-      }
-    },
     "base16": {
       "inputs": {
         "fromYaml": "fromYaml"
@@ -107,8 +85,8 @@
     },
     "deploy-rs": {
       "inputs": {
-        "flake-compat": "flake-compat_2",
-        "nixpkgs": "nixpkgs_2",
+        "flake-compat": "flake-compat",
+        "nixpkgs": "nixpkgs",
         "utils": "utils"
       },
       "locked": {
@@ -127,7 +105,7 @@
     },
     "disko": {
       "inputs": {
-        "nixpkgs": "nixpkgs_3"
+        "nixpkgs": "nixpkgs_2"
       },
       "locked": {
         "lastModified": 1736864502,
@@ -147,7 +125,7 @@
     "distro-grub-themes": {
       "inputs": {
         "flake-utils": "flake-utils",
-        "nixpkgs": "nixpkgs_4"
+        "nixpkgs": "nixpkgs_3"
       },
       "locked": {
         "lastModified": 1734806114,
@@ -180,22 +158,6 @@
       }
     },
     "flake-compat": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1761588595,
-        "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
-    "flake-compat_2": {
       "flake": false,
       "locked": {
         "lastModified": 1733328505,
@@ -211,7 +173,7 @@
         "type": "github"
       }
     },
-    "flake-compat_3": {
+    "flake-compat_2": {
       "locked": {
         "lastModified": 1733328505,
         "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
@@ -225,7 +187,7 @@
         "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
       }
     },
-    "flake-compat_4": {
+    "flake-compat_3": {
       "flake": false,
       "locked": {
         "lastModified": 1747046372,
@@ -491,7 +453,7 @@
       "inputs": {
         "niri-stable": "niri-stable",
         "niri-unstable": "niri-unstable",
-        "nixpkgs": "nixpkgs_5",
+        "nixpkgs": "nixpkgs_4",
         "nixpkgs-stable": "nixpkgs-stable",
         "xwayland-satellite-stable": "xwayland-satellite-stable",
         "xwayland-satellite-unstable": "xwayland-satellite-unstable"
@@ -566,9 +528,9 @@
     },
     "nixcord": {
       "inputs": {
-        "flake-compat": "flake-compat_3",
+        "flake-compat": "flake-compat_2",
         "flake-parts": "flake-parts_3",
-        "nixpkgs": "nixpkgs_6"
+        "nixpkgs": "nixpkgs_5"
       },
       "locked": {
         "lastModified": 1768610265,
@@ -619,11 +581,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1744536153,
-        "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
+        "lastModified": 1743014863,
+        "narHash": "sha256-jAIUqsiN2r3hCuHji80U7NNEafpIMBXiwKlSrjWMlpg=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
+        "rev": "bd3bac8bfb542dbde7ffffb6987a1a1f9d41699f",
         "type": "github"
       },
       "original": {
@@ -710,22 +672,6 @@
       }
     },
     "nixpkgs_10": {
-      "locked": {
-        "lastModified": 1765779637,
-        "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixos-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_11": {
       "locked": {
         "lastModified": 1762111121,
         "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=",
@@ -742,22 +688,6 @@
       }
     },
     "nixpkgs_2": {
-      "locked": {
-        "lastModified": 1743014863,
-        "narHash": "sha256-jAIUqsiN2r3hCuHji80U7NNEafpIMBXiwKlSrjWMlpg=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "bd3bac8bfb542dbde7ffffb6987a1a1f9d41699f",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_3": {
       "locked": {
         "lastModified": 1736241350,
         "narHash": "sha256-CHd7yhaDigUuJyDeX0SADbTM9FXfiWaeNyY34FL1wQU=",
@@ -773,7 +703,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_4": {
+    "nixpkgs_3": {
       "locked": {
         "lastModified": 1731676054,
         "narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=",
@@ -789,7 +719,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_5": {
+    "nixpkgs_4": {
       "locked": {
         "lastModified": 1768564909,
         "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
@@ -805,7 +735,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_6": {
+    "nixpkgs_5": {
       "locked": {
         "lastModified": 1766885793,
         "narHash": "sha256-P6RVkrM9JLCW6xBjSwHfgTOQ1JwBUma5xe5LI8xAPC0=",
@@ -821,7 +751,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_7": {
+    "nixpkgs_6": {
       "locked": {
         "lastModified": 1768564909,
         "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
@@ -837,7 +767,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_8": {
+    "nixpkgs_7": {
       "locked": {
         "lastModified": 1767767207,
         "narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=",
@@ -853,7 +783,7 @@
         "type": "github"
       }
     },
-    "nixpkgs_9": {
+    "nixpkgs_8": {
       "locked": {
         "lastModified": 1768564909,
         "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
@@ -869,9 +799,25 @@
         "type": "github"
       }
     },
+    "nixpkgs_9": {
+      "locked": {
+        "lastModified": 1765779637,
+        "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
     "noctalia": {
       "inputs": {
-        "nixpkgs": "nixpkgs_8"
+        "nixpkgs": "nixpkgs_7"
       },
       "locked": {
         "lastModified": 1768078785,
@@ -891,7 +837,7 @@
     "nur": {
       "inputs": {
         "flake-parts": "flake-parts_4",
-        "nixpkgs": "nixpkgs_9"
+        "nixpkgs": "nixpkgs_8"
       },
       "locked": {
         "lastModified": 1768623276,
@@ -977,7 +923,7 @@
     },
     "pre-commit-hooks": {
       "inputs": {
-        "flake-compat": "flake-compat_4",
+        "flake-compat": "flake-compat_3",
         "gitignore": "gitignore",
         "nixpkgs": [
           "vaultix",
@@ -1021,7 +967,6 @@
     },
     "root": {
       "inputs": {
-        "aagl-nix": "aagl-nix",
         "deploy-rs": "deploy-rs",
         "disko": "disko",
         "distro-grub-themes": "distro-grub-themes",
@@ -1033,7 +978,7 @@
         "nixcord": "nixcord",
         "nixos-hardware": "nixos-hardware",
         "nixos-logo": "nixos-logo",
-        "nixpkgs": "nixpkgs_7",
+        "nixpkgs": "nixpkgs_6",
         "noctalia": "noctalia",
         "nur": "nur",
         "nur-hpcesia": "nur-hpcesia",
@@ -1047,24 +992,6 @@
       }
     },
     "rust-overlay": {
-      "inputs": {
-        "nixpkgs": "nixpkgs"
-      },
-      "locked": {
-        "lastModified": 1764470739,
-        "narHash": "sha256-sa9f81B1dWO16QtgDTWHX8DQbiHKzHndpaunY5EQtwE=",
-        "owner": "oxalica",
-        "repo": "rust-overlay",
-        "rev": "3bfa664055e1a09c6aedab5533c5fc8d6ca5741a",
-        "type": "github"
-      },
-      "original": {
-        "owner": "oxalica",
-        "repo": "rust-overlay",
-        "type": "github"
-      }
-    },
-    "rust-overlay_2": {
       "inputs": {
         "nixpkgs": [
           "vaultix",
@@ -1085,7 +1012,7 @@
         "type": "github"
       }
     },
-    "rust-overlay_3": {
+    "rust-overlay_2": {
       "inputs": {
         "nixpkgs": [
           "wakatime-ls",
@@ -1108,7 +1035,7 @@
     },
     "silentSDDM": {
       "inputs": {
-        "nixpkgs": "nixpkgs_10"
+        "nixpkgs": "nixpkgs_9"
       },
       "locked": {
         "lastModified": 1767456956,
@@ -1339,9 +1266,9 @@
       "inputs": {
         "crane": "crane",
         "flake-parts": "flake-parts_6",
-        "nixpkgs": "nixpkgs_11",
+        "nixpkgs": "nixpkgs_10",
         "pre-commit-hooks": "pre-commit-hooks",
-        "rust-overlay": "rust-overlay_2"
+        "rust-overlay": "rust-overlay"
       },
       "locked": {
         "lastModified": 1765367686,
@@ -1363,7 +1290,7 @@
         "nixpkgs": [
           "nixpkgs"
         ],
-        "rust-overlay": "rust-overlay_3"
+        "rust-overlay": "rust-overlay_2"
       },
       "locked": {
         "lastModified": 1764772399,
flake.nix
@@ -2,9 +2,6 @@
   description = "NixOS configuration of HPCesia.";
 
   inputs = {
-    aagl-nix.url = "github:ezKEa/aagl-gtk-on-nix";
-    aagl-nix.inputs.nixpkgs.follows = "nixpkgs";
-
     deploy-rs.url = "github:serokell/deploy-rs";
 
     disko.url = "github:nix-community/disko/v1.11.0";