diff options
Diffstat (limited to 'default.nix')
| -rw-r--r-- | default.nix | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..fb95f92 --- /dev/null +++ b/default.nix @@ -0,0 +1,63 @@ +# nix-build +# or to build a cross compiled package: nix-build -A <triple>.lwjgl +# i.e., nix-build -A aarch64-unknown-linux-gnu.lwjgl +{ + pkgs ? import <nixpkgs> { + inherit system; + config = { }; + overlays = [ ]; + }, + nixpkgs ? <nixpkgs>, + system ? builtins.currentSystem, +}: + +let + inherit (pkgs) lib; + inherit (pkgs.stdenv.hostPlatform) system; + nativeTarget = pkgs.stdenv.hostPlatform.config; + + # Targets we want to build for + targets = [ + "x86_64-unknown-linux-gnu" + "i686-unknown-linux-gnu" + "aarch64-unknown-linux-gnu" + "armv7l-unknown-linux-gnueabihf" + "riscv64-unknown-linux-gnu" + ]; + + # Loop over each target + forAllTargets = lib.genAttrs targets; + + # Nixpkgs re-instantiated to cross compile from our current system to each target + crossPkgsFor = forAllTargets ( + target: + + import nixpkgs { + inherit system; + inherit (pkgs) config overlays; + crossSystem = { + config = target; + }; + } + ); + + # Our package set for each target + ourPackagesFor = forAllTargets ( + target: + + let + callPackage = lib.callPackageWith (ourPackagesFor.${target} // crossPkgsFor.${target}); + in + + { + fetchAntDeps = callPackage ./pkgs/fetch-ant-deps.nix { }; + lwjgl = callPackage ./pkgs/lwjgl.nix { }; + } + ); + + nativeLwjgl = + ourPackagesFor.${nativeTarget}.lwjgl + or (lib.trace "${nativeTarget} is not a supported target" pkgs.emptyFile); +in + +ourPackagesFor // { lwjgl = nativeLwjgl; } |
