130 lines
3.3 KiB
Nix
130 lines
3.3 KiB
Nix
# { pkgs ? import <nixpkgs> {} }:
|
|
|
|
# let
|
|
|
|
# fenix = import "${
|
|
# fetchTarball "https://github.com/nix-community/fenix/archive/main.tar.gz"
|
|
# }/packages.nix";
|
|
|
|
# in
|
|
|
|
# pkgs.mkShell {
|
|
# shellHook = ''export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.lib.makeLibraryPath [
|
|
# pkgs.alsaLib
|
|
# pkgs.udev
|
|
# pkgs.vulkan-loader
|
|
# ]}"'';
|
|
|
|
# buildInputs = with pkgs; [
|
|
# (
|
|
# with fenix;
|
|
# combine (
|
|
# with default; [
|
|
# cargo
|
|
# clippy-preview
|
|
# latest.rust-src
|
|
# rust-analyzer
|
|
# rust-std
|
|
# rustc
|
|
# rustfmt-preview
|
|
# ]
|
|
# )
|
|
# )
|
|
# cargo-edit
|
|
# cargo-watch
|
|
|
|
# lld
|
|
# clang
|
|
|
|
# # # bevy-specific deps (from https://github.com/bevyengine/bevy/blob/main/docs/linux_dependencies.md)
|
|
# pkgconfig
|
|
# udev
|
|
# alsaLib
|
|
# lutris
|
|
# x11
|
|
# xorg.libXcursor
|
|
# xorg.libXrandr
|
|
# xorg.libXi
|
|
# vulkan-tools
|
|
# vulkan-headers
|
|
# vulkan-loader
|
|
# vulkan-validation-layers
|
|
# ];
|
|
|
|
# }
|
|
{
|
|
description = "Minimal Rust development environment for Bevy project";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, rust-overlay, flake-utils, ... }:
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
overlays = [ (import rust-overlay) ];
|
|
pkgs = import nixpkgs { inherit system overlays; };
|
|
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
|
|
extensions = [ "rust-src" "rust-analyzer" "clippy" ];
|
|
};
|
|
in {
|
|
devShells.default = pkgs.mkShell {
|
|
nativeBuildInputs = with pkgs; [
|
|
pkg-config
|
|
gobject-introspection
|
|
cargo
|
|
cargo-tauri
|
|
nodejs
|
|
];
|
|
buildInputs = with pkgs; [
|
|
rustToolchain
|
|
clang
|
|
llvmPackages_latest.bintools
|
|
udev
|
|
alsa-lib
|
|
vulkan-loader
|
|
xorg.libX11
|
|
xorg.libXcursor
|
|
xorg.libXi
|
|
xorg.libXrandr
|
|
libxkbcommon
|
|
wayland
|
|
glibc.dev
|
|
glib.dev
|
|
dioxus-cli
|
|
at-spi2-atk
|
|
atkmm
|
|
cairo
|
|
gdk-pixbuf
|
|
glib
|
|
gtk3
|
|
harfbuzz
|
|
librsvg
|
|
libsoup_3
|
|
pango
|
|
webkitgtk_4_1
|
|
openssl
|
|
xdotool
|
|
];
|
|
|
|
shellHook = ''
|
|
export PATH=$PATH:''${CARGO_HOME:-~/.cargo}/bin
|
|
export LD_LIBRARY_PATH=${
|
|
pkgs.lib.makeLibraryPath [
|
|
pkgs.vulkan-loader
|
|
pkgs.libxkbcommon
|
|
pkgs.wayland
|
|
pkgs.alsa-lib
|
|
pkgs.udev
|
|
]
|
|
}:$LD_LIBRARY_PATH
|
|
export LIBCLANG_PATH="${pkgs.llvmPackages_latest.libclang.lib}/lib"
|
|
export BINDGEN_EXTRA_CLANG_ARGS="-I${pkgs.glibc.dev}/include -I${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include -I${pkgs.glib.dev}/include/glib-2.0 -I${pkgs.glib.out}/lib/glib-2.0/include/"
|
|
export RUSTFLAGS="-C link-arg=-fuse-ld=lld"
|
|
echo "Bevy development environment loaded!"
|
|
'';
|
|
};
|
|
});
|
|
}
|