diff options
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..4e03888 --- /dev/null +++ b/flake.nix @@ -0,0 +1,62 @@ +{ + inputs = { + nixpkgs = { + type = "github"; + owner = "NixOS"; + repo = "nixpkgs"; + ref = "nixos-26.05"; + }; + + crane = { + url = "github:ipetkov/crane"; + }; + }; + + outputs = { self, nixpkgs, crane }: + let supportedSystems = [ "aarch64-linux" "x86_64-linux" ]; + forAllSystems = nixpkgs.lib.genAttrs supportedSystems; + nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); + buildInputsFor = pkgs: with pkgs; [ + # The list of packages needed feels more than a little bit random; + # it's because winit relies on packages that differ vastly in how and + # when they find the C libraries. + pkg-config + libgcc + libxcursor + libxi + libxkbcommon + # mesa + # wayland + # vulkan-loader + ]; + in { + packages = forAllSystems (system: let pkgs = nixpkgsFor.${system}; in { + default = ((crane.mkLib pkgs).buildPackage { + src = ./.; + + buildInputs = buildInputsFor pkgs; + + nativeBuildInputs = with pkgs; [ autoPatchelfHook ]; + }).overrideAttrs { + preFixup = '' + patchelf --add-needed libxkbcommon-x11.so $out/bin/surreality + ''; + }; + }); + + devShells = forAllSystems (system: let pkgs = nixpkgsFor.${system}; in { + default = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + cargo + rustc + vulkan-tools + ] ++ buildInputsFor pkgs; + + # This makes cargo run work; mind that you don't let it mask a + # problem with the nix build. + LD_LIBRARY_PATH = "${pkgs.libxkbcommon}/lib"; + }; + }); + }; +} + |