diff --git a/flake.lock b/flake.lock index 753f8d6b7..365837657 100644 --- a/flake.lock +++ b/flake.lock @@ -1,12 +1,54 @@ { "nodes": { + "4jlibs": { + "flake": false, + "locked": { + "lastModified": 1774012501, + "narHash": "sha256-NoM5LtKcU+3LFPVZUtep1L+hfZS6YSQ4P/xkJU/2NY4=", + "owner": "4jcraft", + "repo": "4jlibs", + "rev": "df5f4a1fc3288fdc021b3d8ee2abaed3083de460", + "type": "github" + }, + "original": { + "owner": "4jcraft", + "ref": "main", + "repo": "4jlibs", + "type": "github" + } + }, + "miniaudio": { + "flake": false, + "locked": { + "lastModified": 1740378702, + "narHash": "sha256-o/7sfBcrhyXEakccOAogQqm8dO4Szj1QSpaIHg6OSt4=", + "type": "tarball", + "url": "https://github.com/mackron/miniaudio/archive/refs/tags/0.11.22.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/mackron/miniaudio/archive/refs/tags/0.11.22.tar.gz" + } + }, + "miniaudio-patch": { + "flake": false, + "locked": { + "narHash": "sha256-txCgaQ2r4134YVNJjw0oVG9yGGLxGvdLfXnB1j+DI/4=", + "type": "file", + "url": "https://wrapdb.mesonbuild.com/v2/miniaudio_0.11.22-2/get_patch" + }, + "original": { + "type": "file", + "url": "https://wrapdb.mesonbuild.com/v2/miniaudio_0.11.22-2/get_patch" + } + }, "nixpkgs": { "locked": { - "lastModified": 1773734432, - "narHash": "sha256-IF5ppUWh6gHGHYDbtVUyhwy/i7D261P7fWD1bPefOsw=", + "lastModified": 1774106199, + "narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=", "owner": "nixos", "repo": "nixpkgs", - "rev": "cda48547b432e8d3b18b4180ba07473762ec8558", + "rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655", "type": "github" }, "original": { @@ -18,8 +60,12 @@ }, "root": { "inputs": { + "4jlibs": "4jlibs", + "miniaudio": "miniaudio", + "miniaudio-patch": "miniaudio-patch", "nixpkgs": "nixpkgs", - "shiggy": "shiggy" + "shiggy": "shiggy", + "stb": "stb" } }, "shiggy": { @@ -38,6 +84,23 @@ "repo": "shiggy", "type": "github" } + }, + "stb": { + "flake": false, + "locked": { + "lastModified": 1773836560, + "narHash": "sha256-bRXN5YdVuSi9gzWn7UbCY+v6OSQdfWaUwrP1WWKrbks=", + "owner": "nothings", + "repo": "stb", + "rev": "28d546d5eb77d4585506a20480f4de2e706dff4c", + "type": "github" + }, + "original": { + "owner": "nothings", + "ref": "master", + "repo": "stb", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index e980435a6..543ce24d6 100644 --- a/flake.nix +++ b/flake.nix @@ -3,13 +3,30 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + shiggy = { url = "github:4jcraft/shiggy/main"; flake = false; }; + miniaudio = { + url = "https://github.com/mackron/miniaudio/archive/refs/tags/0.11.22.tar.gz"; + flake = false; + }; + miniaudio-patch = { + url = "https://wrapdb.mesonbuild.com/v2/miniaudio_0.11.22-2/get_patch"; + flake = false; + }; + "4jlibs" = { + url = "github:4jcraft/4jlibs/main"; + flake = false; + }; + stb = { + url = "github:nothings/stb/master"; + flake = false; + }; }; - outputs = { self, nixpkgs, shiggy, ... }: + outputs = { self, nixpkgs, ... } @ inputs: let allSystems = [ "x86_64-linux" @@ -22,50 +39,66 @@ }); in { - packages = forAllSystems ({ pkgs }: - { - default = pkgs.clangStdenv.mkDerivation { - pname = "4jcraft"; - version = "0.1.0"; - src = ./.; + packages = forAllSystems ({ pkgs }: { + default = pkgs.clangStdenv.mkDerivation { + pname = "4jcraft"; + version = "0.1.0"; + src = ./.; - preConfigure = '' - mkdir -p subprojects/shiggy - cp -r ${shiggy}/. subprojects/shiggy/ - ''; + dontUseCmakeConfigure = true; - buildInputs = with pkgs; [ - openssl.dev - libGL - libGLU - SDL2 - zlib - ]; + preConfigure = '' + cp -r ${inputs.shiggy} subprojects/shiggy + cp -r ${inputs.miniaudio} subprojects/miniaudio + chmod -R u+w subprojects/miniaudio + unzip ${inputs."miniaudio-patch"} -d /tmp/miniaudio-patch/ + cp -r /tmp/miniaudio-patch/*/. subprojects/miniaudio/ + cat > subprojects/miniaudio.wrap <<'EOF' + [wrap-file] + directory = miniaudio - nativeBuildInputs = with pkgs; [ - lld - meson - ninja - pkg-config - python3 - makeWrapper - ]; + [provide] + dependency_names = miniaudio + EOF + cp -r ${inputs."4jlibs"} subprojects/4jlibs + cp -r ${inputs.stb} subprojects/stb + chmod -R u+w subprojects/ + cp subprojects/packagefiles/stb/meson.build subprojects/stb/meson.build + ''; - installPhase = '' - mkdir -p $out/share/4jcraft - cp -r Minecraft.Client/. $out/share/4jcraft/ - mkdir -p $out/bin - makeWrapper $out/share/4jcraft/Minecraft.Client \ - $out/bin/4jcraft \ - --run "cd $out/share/4jcraft" - ''; + buildInputs = with pkgs; [ + openssl.dev + libGL + libGLU + SDL2 + zlib + ]; - meta = { - description = "4JCraft"; - platforms = pkgs.lib.platforms.linux; - }; + nativeBuildInputs = with pkgs; [ + cmake + lld + meson + ninja + pkg-config + python3 + makeWrapper + unzip + ]; + + installPhase = '' + mkdir -p $out/share/4jcraft + cp -r Minecraft.Client/. $out/share/4jcraft/ + mkdir -p $out/bin + makeWrapper $out/share/4jcraft/Minecraft.Client \ + $out/bin/4jcraft \ + --run "cd $out/share/4jcraft" + ''; + + meta = { + description = "4JCraft"; + platforms = pkgs.lib.platforms.linux; }; - } - ); + }; + }); }; }