about summary refs log tree commit diff
path: root/pkgs/tools/games/minecraft/optifine/generic.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/games/minecraft/optifine/generic.nix')
-rw-r--r--pkgs/tools/games/minecraft/optifine/generic.nix44
1 files changed, 44 insertions, 0 deletions
diff --git a/pkgs/tools/games/minecraft/optifine/generic.nix b/pkgs/tools/games/minecraft/optifine/generic.nix
new file mode 100644
index 0000000000000..d33e7d75126dc
--- /dev/null
+++ b/pkgs/tools/games/minecraft/optifine/generic.nix
@@ -0,0 +1,44 @@
+{ version
+, sha256
+, lib
+, runCommand
+, fetchurl
+, makeWrapper
+, jre
+}:
+
+let
+  mcVersion = builtins.head (lib.splitString "_" version);
+in
+runCommand "optifine-${mcVersion}" {
+  pname = "optifine";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://optifine.net/download?f=OptiFine_${version}.jar";
+    inherit sha256;
+    name = "OptiFine_${version}.jar";
+  };
+
+  nativeBuildInputs = [ jre makeWrapper ];
+
+  meta = with lib; {
+    homepage = "https://optifine.net/";
+    description = "A Minecraft ${mcVersion} optimization mod";
+    longDescription = ''
+      OptiFine is a Minecraft optimization mod.
+      It allows Minecraft to run faster and look better with full support for HD textures and many configuration options.
+      This is for version ${mcVersion} of Minecraft.
+    '';
+    license = licenses.unfree;
+    maintainers = [ maintainers.ivar ];
+    platforms = platforms.unix;
+    mainProgram = "optifine";
+  };
+} ''
+  mkdir -p $out/{bin,lib/optifine}
+  cp $src $out/lib/optifine/optifine.jar
+
+  makeWrapper ${jre}/bin/java $out/bin/optifine \
+    --add-flags "-jar $out/lib/optifine/optifine.jar"
+''