ttt-ce/flake.nix
2024-03-17 04:57:39 +01:00

86 lines
2.2 KiB
Nix

{
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
rust-overlay.url = "github:oxalica/rust-overlay";
naersk-src.url = "github:nix-community/naersk";
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
outputs = inputs @ { nixpkgs, flake-parts, rust-overlay, naersk-src, ... }: flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" "aarch64-linux" ];
perSystem = { pkgs, system, ... }:
with pkgs;
let
overlays = [ (import rust-overlay) ];
pkgs = (import nixpkgs) {
inherit system overlays;
};
rustStable = pkgs.rust-bin.stable.latest.default;
naersk = pkgs.callPackage naersk-src {
cargo = rustStable;
rustc = rustStable;
};
buildDeps = [
pkg-config
makeWrapper
clang
mold
];
runtimeDeps = [
libxkbcommon
alsa-lib
udev
vulkan-loader
wayland
] ++ (with xorg; [
libXcursor
libXrandr
libXi
libX11
]);
sharedAttrs = rec {
pname = "bevy-flake-template";
src = ./.;
nativeBuildInputs = buildDeps;
buildInputs = runtimeDeps;
overrideMain = attrs: {
fixupPhase = ''
wrapProgram $out/bin/${pname} \
--prefix LD_LIBRARY_PATH : ${pkgs.lib.makeLibraryPath runtimeDeps} \
--prefix XCURSOR_THEME : "Adwaita"
mkdir -p $out/bin/assets
cp -a assets $out/bin
'';
};
};
devAttrs = { release = false; };
in
rec {
packages = {
dev = naersk.buildPackage sharedAttrs // devAttrs;
release = naersk.buildPackage sharedAttrs;
default = packages.release;
};
devShells.default = pkgs.mkShell {
# Fix for rust-analyzer in vscode
RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}";
nativeBuildInputs = buildDeps ++ [ rustStable ];
buildInputs = runtimeDeps;
LD_LIBRARY_PATH = "${lib.makeLibraryPath runtimeDeps}";
XCURSOR_THEME = "Adwaita";
};
};
};
}