This commit is contained in:
2025-10-19 21:24:19 +01:00
commit 7fb0f64beb
7 changed files with 291 additions and 0 deletions

99
flake.nix Normal file
View File

@@ -0,0 +1,99 @@
{
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 rec {
packages = with pkgs; [
rustToolchain
openssl
pkg-config # make sure .pc files can be found
cargo-deny
cargo-edit
cargo-watch
rust-analyzer
gcc
cmake
wayland
libxkbcommon
dbus
fontconfig
xorg.libX11 # X11 headers/libs
pango
glib
cairo
libxcursor
libxfixes
xorg.libXinerama
x11basic
];
# export paths so tools like rust-analyzer and native configure scripts can find things
env = {
# Required by rust-analyzer:
RUST_SRC_PATH = "${pkgs.rustToolchain}/lib/rustlib/src/rust/library";
# Make a combined library path from the packages in this shell
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath packages}";
# Some build systems don't pick up NIX_CFLAGS_COMPILE/NIX_LDFLAGS;
# exporting these helps autoconf-based configure scripts:
# NIX_CFLAGS_COMPILE = "${
# pkgs.stdenv.cc.libcxxFlags or ""
# } ${pkgs.lib.makeString ''-I${pkgs.xorg.libX11}/include''}";
# NIX_LDFLAGS = "${pkgs.lib.makeString ''-L${pkgs.xorg.libX11}/lib''}";
};
};
}
);
};
}