Files
imgui-testing/flake.nix
2025-10-23 10:00:11 +00:00

92 lines
2.3 KiB
Nix

{
description = "A Nix-flake-based Rust development environment";
inputs = {
nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; # unstable Nixpkgs
fenix = {
url = "https://flakehub.com/f/nix-community/fenix/0.1";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ self, ... }@inputs:
let
supportedSystems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
forEachSupportedSystem =
f:
inputs.nixpkgs.lib.genAttrs supportedSystems (
system:
f {
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
inputs.self.overlays.default
];
};
}
);
in
{
overlays.default = final: prev: {
rustToolchain =
with inputs.fenix.packages.${prev.stdenv.hostPlatform.system};
combine (
with stable;
[
clippy
rustc
cargo
rustfmt
rust-src
]
);
};
devShells = forEachSupportedSystem (
{ pkgs }:
{
default = pkgs.mkShellNoCC {
packages = with pkgs; [
rustToolchain
openssl
pkg-config
cargo-deny
cargo-edit
cargo-watch
rust-analyzer
gcc
gtk3-x11
atk
mesa # libGL + llvmpipe + lavapipe ICD (user-space GL & Vulkan soft drivers)
vulkan-loader # Vulkan loader
vulkan-tools # vulkaninfo, etc.
xorg.libX11
libxcb
xorg.libXrandr
xorg.libXinerama
xorg.libXcursor
xorg.libXfixes
xorg.libXcomposite
xorg.libXdamage
# xorg.libxkbcommon
# xorg.libdrm
llvm # JIT for llvmpipe (pulled in by mesa often, but safe to include)
];
env = {
# Required by rust-analyzer
RUST_SRC_PATH = "${pkgs.rustToolchain}/lib/rustlib/src/rust/library";
};
};
}
);
};
}