summaryrefslogtreecommitdiff
path: root/flake.nix
blob: 3812ff2e4301a3448299e93719d18fd639209a81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
  description = "a dumb minecraft in c++ and opengl.";

  inputs = {
    nixpkgs.url = "nixpkgs/nixos-25.11";
  };

  outputs = { self, nixpkgs }:
  let
    allSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];

    pkgsForSystem = system: nixpkgs.legacyPackages.${system};

    forAllSystems = f: nixpkgs.lib.genAttrs allSystems
      (system: f { inherit system; pkgs = pkgsForSystem system; });

  in {
    packages = forAllSystems ({ system, pkgs }: {
      default = pkgs.callPackage ./. {
        glfw = self.packages.${system}.glfw-static;
        glew = self.packages.${system}.glew-static;
      };

      glfw-static = pkgs.glfw.overrideAttrs (oldAttrs: {
        pname = "glfw-static";
        cmakeFlags = oldAttrs.cmakeFlags ++ [
          "-DBUILD_SHARED_LIBS=OFF"
        ];
      });

      glew-static =  pkgs.glew.overrideAttrs {
        pname = "glew-static";
        cmakeFlags = [ "-DBUILD_SHARED_LIBS=OFF" ];
      };
    });

    devShells = forAllSystems ({ system, pkgs }:
    let
      inherit (pkgs) lib stdenv;
    in
    {
      default = pkgs.mkShell {
        buildInputs = (with pkgs; [
          pkg-config ninja cmake meson lldb
        ]) ++ (with self.packages.${system}; [
          glfw-static glew-static
        ]) ++ lib.optionals stdenv.isLinux (with pkgs; [
          wayland wayland-protocols libffi
        ]);
      };
    });
  };
}