init repo
This commit is contained in:
104
flake.nix
Normal file
104
flake.nix
Normal file
@@ -0,0 +1,104 @@
|
||||
{
|
||||
description = "Bevy + local AI game dev template for macOS with Nix";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, rust-overlay }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [ (import rust-overlay) ];
|
||||
};
|
||||
|
||||
lib = pkgs.lib;
|
||||
|
||||
rustToolchain = pkgs.rust-bin.stable."1.95.0".default.override {
|
||||
extensions = [
|
||||
"rust-src"
|
||||
"rustfmt"
|
||||
"clippy"
|
||||
"rust-analyzer"
|
||||
];
|
||||
targets = [
|
||||
"wasm32-unknown-unknown"
|
||||
];
|
||||
};
|
||||
|
||||
linuxLibs = lib.optionals pkgs.stdenv.isLinux (with pkgs; [
|
||||
alsa-lib
|
||||
libudev-zero
|
||||
vulkan-loader
|
||||
wayland
|
||||
libxkbcommon
|
||||
xorg.libX11
|
||||
xorg.libXcursor
|
||||
xorg.libXi
|
||||
xorg.libXrandr
|
||||
]);
|
||||
in {
|
||||
devShells.default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
rustToolchain
|
||||
pkg-config
|
||||
clang
|
||||
cmake
|
||||
git
|
||||
just
|
||||
bacon
|
||||
cargo-edit
|
||||
cargo-watch
|
||||
cargo-nextest
|
||||
nil
|
||||
nixd
|
||||
taplo
|
||||
imagemagick
|
||||
pngquant
|
||||
ffmpeg
|
||||
jq
|
||||
fd
|
||||
ripgrep
|
||||
tree
|
||||
python3
|
||||
nodejs_22
|
||||
libiconv
|
||||
] ++ linuxLibs;
|
||||
|
||||
shellHook = ''
|
||||
export RUST_SRC_PATH="${rustToolchain}/lib/rustlib/src/rust/library"
|
||||
export LIBCLANG_PATH="${pkgs.llvmPackages.libclang.lib}/lib"
|
||||
export CARGO_INCREMENTAL=1
|
||||
export RUST_BACKTRACE=1
|
||||
export BEVY_ASSET_ROOT="$PWD/assets"
|
||||
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
if ! xcode-select -p >/dev/null 2>&1; then
|
||||
echo 'error: Xcode Command Line Tools missing. Run: xcode-select --install'
|
||||
else
|
||||
export SDKROOT="$(xcrun --sdk macosx --show-sdk-path 2>/dev/null || true)"
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p assets ai/context
|
||||
|
||||
echo "Bevy + AI shell ready"
|
||||
echo "rustc: $(rustc --version)"
|
||||
echo "cargo: $(cargo --version)"
|
||||
echo "node: $(node --version)"
|
||||
|
||||
# Keep user prompt/plugins by switching interactive sessions to system zsh.
|
||||
# This does not affect `nix develop -c ...` non-interactive commands.
|
||||
if [ -n "''${PS1:-}" ] && [ -z "''${ZSH_VERSION:-}" ] && [ -z "''${IN_NIX_DEVELOP_SYSTEM_ZSH:-}" ] && [ -x /bin/zsh ]; then
|
||||
export IN_NIX_DEVELOP_SYSTEM_ZSH=1
|
||||
export SHELL=/bin/zsh
|
||||
exec /bin/zsh -i
|
||||
fi
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user