{
description = "A Nix-flake-based Rust development environment (multi-system, flake-utils)";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
naersk.url = "github:nix-community/naersk";
};
outputs =
{ nixpkgs, naersk, ... }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
naerskLib = pkgs.callPackage naersk { };
runtimedeps = [
pkgs.libxkbcommon
# GPU backend
pkgs.vulkan-loader
pkgs.libGL
# Window system
pkgs.wayland
pkgs.xorg.libX11
pkgs.xorg.libXcursor
pkgs.xorg.libXi
];
in
{
packages.${system}.default = naerskLib.buildPackage {
src = ./.;
buildInputs = [ pkgs.openssl ];
nativeBuildInputs = [ pkgs.pkg-config ];
};
devShells.${system}.default = pkgs.mkShell {
packages = [
pkgs.rustc
pkgs.cargo
pkgs.clippy
pkgs.rustfmt
pkgs.openssl
pkgs.cargo-watch
pkgs.rust-analyzer
];
nativeBuildInputs = [ pkgs.pkg-config ];
env.RUSTFLAGS = "-C link-arg=-Wl,-rpath,${nixpkgs.lib.makeLibraryPath runtimedeps}";
};
formatter = pkgs.rustfmt;
};
}