{ description = "Fixing OptiFine, until something better comes"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; outputs = { self, nixpkgs, }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; inherit (pkgs) lib; gradleJdk = pkgs.temurin-bin-26; gameJdk = pkgs.temurin-bin-8; gradle = pkgs.gradle_9.override { javaToolchains = [gradleJdk gameJdk]; }; gradleTasks = [ "runClient" "runServer" "runObfClient" "runObfServer" "runVanillaClient" "runVanillaServer" ]; runCommands = lib.genAttrs gradleTasks ( task: pkgs.writeShellApplication { name = task; runtimeInputs = [gradle pkgs.ov]; text = '' gradle --console=colored ${task} 2>&1 | ov -f -w=f ''; } ); in { devShells.${system}.default = pkgs.mkShell { name = "OptiNotFine"; packages = [ gradleJdk gameJdk gradle pkgs.xrandr ] ++ lib.attrValues runCommands; env = { GRADLE_OPTS = toString [ "-Dorg.gradle.java.installations.auto-detect=false" "-Dorg.gradle.java.installations.auto-download=false" ]; LD_LIBRARY_PATH = lib.makeLibraryPath (with pkgs; [ libXcursor libXrandr libXxf86vm libGL openal libpulseaudio ]); }; }; }; }