aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.nix1
-rw-r--r--flake.lock17
-rw-r--r--flake.nix9
-rw-r--r--packages/nix/flake-compat.nix9
-rw-r--r--packages/nix/polymc/default.nix24
5 files changed, 50 insertions, 10 deletions
diff --git a/default.nix b/default.nix
new file mode 100644
index 00000000..5abfc1bd
--- /dev/null
+++ b/default.nix
@@ -0,0 +1 @@
+(import packages/nix/flake-compat.nix).defaultNix
diff --git a/flake.lock b/flake.lock
index 131a9112..2248b4a4 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,21 @@
{
"nodes": {
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1641205782,
+ "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
"flake-utils": {
"locked": {
"lastModified": 1638122382,
@@ -65,6 +81,7 @@
},
"root": {
"inputs": {
+ "flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"libnbtplusplus": "libnbtplusplus",
"nixpkgs": "nixpkgs",
diff --git a/flake.nix b/flake.nix
index 825f747e..47a13ac2 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,6 +2,10 @@
description = "PolyMC flake";
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
+ inputs.flake-compat = {
+ url = "github:edolstra/flake-compat";
+ flake = false;
+ };
inputs.libnbtplusplus = {
url = "github:multimc/libnbtplusplus";
flake = false;
@@ -17,7 +21,7 @@
pkgs = import nixpkgs {
inherit system;
};
-
+
packages = {
polymc = pkgs.libsForQt5.callPackage ./packages/nix/polymc {
inherit self;
@@ -25,7 +29,8 @@
submoduleNbt = libnbtplusplus;
};
};
-
+
+ # 'nix flake check' fails
overlay = (final: prev: rec {
polymc = prev.libsForQt5.callPackage ./packages/nix/polymc {
inherit self;
diff --git a/packages/nix/flake-compat.nix b/packages/nix/flake-compat.nix
new file mode 100644
index 00000000..bb7ee13e
--- /dev/null
+++ b/packages/nix/flake-compat.nix
@@ -0,0 +1,9 @@
+let
+ lock = builtins.fromJSON (builtins.readFile ../../flake.lock);
+ inherit (lock.nodes.flake-compat.locked) rev narHash;
+ flake-compat = fetchTarball {
+ url = "https://github.com/edolstra/flake-compat/archive/${rev}.tar.gz";
+ sha256 = narHash;
+ };
+in
+import flake-compat { src = ../..; }
diff --git a/packages/nix/polymc/default.nix b/packages/nix/polymc/default.nix
index 4f80ff34..15677172 100644
--- a/packages/nix/polymc/default.nix
+++ b/packages/nix/polymc/default.nix
@@ -2,8 +2,6 @@
, mkDerivation
, fetchFromGitHub
, makeDesktopItem
-, substituteAll
-, fetchpatch
, cmake
, ninja
, jdk8
@@ -15,14 +13,16 @@
, libpulseaudio
, qtbase
, libGL
-# submodules
+
+# flake
, self
, submoduleNbt
, submoduleQuazip
}:
let
- gameLibraryPath = with xorg; lib.makeLibraryPath [
+ # Libraries required to run Minecraft
+ libpath = with xorg; lib.makeLibraryPath [
libX11
libXext
libXcursor
@@ -30,7 +30,10 @@ let
libXxf86vm
libpulseaudio
libGL
- ];
+ ];
+
+ # This variable will be passed to Minecraft by PolyMC
+ gameLibraryPath = libpath + ":/run/opengl-driver/lib";
in
mkDerivation rec {
@@ -42,7 +45,10 @@ mkDerivation rec {
nativeBuildInputs = [ cmake ninja file makeWrapper ];
buildInputs = [ qtbase jdk8 zlib ];
+ dontWrapQtApps = true;
+
postUnpack = ''
+ # Copy submodules inputs
rm -rf source/libraries/{libnbtplusplus,quazip}
mkdir source/libraries/{libnbtplusplus,quazip}
cp -a ${submoduleNbt}/* source/libraries/libnbtplusplus
@@ -69,11 +75,13 @@ mkDerivation rec {
};
postInstall = ''
- install -Dm644 ../launcher/resources/multimc/scalable/launcher.svg $out/share/pixmaps/multimc.svg
- install -Dm755 ${desktopItem}/share/applications/polymc.desktop -t $out/share/applications
+ install -Dm644 ../launcher/resources/multimc/scalable/launcher.svg $out/share/pixmaps/polymc.svg
+ install -Dm644 ${desktopItem}/share/applications/polymc.desktop $out/share/applications/org.polymc.PolyMC.desktop
+
# xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
wrapProgram $out/bin/polymc \
- --set GAME_LIBRARY_PATH /run/opengl-driver/lib:${gameLibraryPath} \
+ "''${qtWrapperArgs[@]}" \
+ --set GAME_LIBRARY_PATH ${gameLibraryPath} \
--prefix PATH : ${lib.makeBinPath [ xorg.xrandr jdk ]}
'';
}