generic/rust: init
This commit is contained in:
48
flake.lock
generated
Normal file
48
flake.lock
generated
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1733212471,
|
||||
"narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "55d15ad12a74eb7d4646254e13638ad0c4128776",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"rust-overlay": "rust-overlay"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733366051,
|
||||
"narHash": "sha256-Zlas3LFqrW8bVVrZYgkzS4VNkZgtZ/hsbYhO0GtKLys=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "ba5ed0362eaae83fe8925a2d5cfcf356ff22f70f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
35
flake.nix
Normal file
35
flake.nix
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
|
||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, rust-overlay }: let
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-linux"
|
||||
"aarch64-darwin"
|
||||
"armv7l-linux"
|
||||
];
|
||||
|
||||
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [
|
||||
(import rust-overlay)
|
||||
];
|
||||
};
|
||||
|
||||
in f system pkgs);
|
||||
|
||||
inherit (nixpkgs) lib;
|
||||
in {
|
||||
devShells = forAllSystems (system: pkgs: {
|
||||
rust = pkgs.callPackage ./generic/rust/shell.nix { };
|
||||
rust-nightly = pkgs.callPackage ./generic/rust/shell.nix { rust-channel = "nightly"; };
|
||||
});
|
||||
};
|
||||
}
|
||||
69
generic/rust/shell.nix
Normal file
69
generic/rust/shell.nix
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
lib
|
||||
, stdenv
|
||||
, mkShell
|
||||
|
||||
, rust-channel ? "stable"
|
||||
, rust-bin
|
||||
, rust-toolchain ? rust-bin.${rust-channel}.latest.default.override {
|
||||
extensions = [ "rust-src" "rust-analyzer" "rust-std" ];
|
||||
}
|
||||
|
||||
, enableSccache ? true
|
||||
, pkgsBuildBuild
|
||||
|
||||
# Rust tools
|
||||
, cargo-deny
|
||||
, cargo-insta
|
||||
, cargo-nextest
|
||||
|
||||
# Commonly used libraries
|
||||
, pkg-config
|
||||
, openssl
|
||||
, zstd
|
||||
, systemdLibs
|
||||
}:
|
||||
mkShell {
|
||||
packages = [
|
||||
rust-toolchain
|
||||
|
||||
cargo-deny
|
||||
cargo-insta
|
||||
cargo-nextest
|
||||
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
zstd
|
||||
systemdLibs
|
||||
];
|
||||
|
||||
env = {
|
||||
RUST_SRC_PATH = "${rust-toolchain}/lib/rustlib/src/rust/library";
|
||||
} // (lib.optionalAttrs (enableSccache) {
|
||||
RUSTC_WRAPPER = "${pkgsBuildBuild.sccache}/bin/sccache";
|
||||
});
|
||||
|
||||
# https://hoverbear.org/blog/rust-bindgen-in-nix/
|
||||
shellHook = let
|
||||
clangArgs = lib.concatStringsSep " " [
|
||||
"-idirafter ${stdenv.cc.cc}/lib/clang/${lib.getVersion stdenv.cc.cc}/include"
|
||||
];
|
||||
gccArgs = lib.concatStringsSep " " [
|
||||
"-isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}"
|
||||
"-isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/${stdenv.hostPlatform.config}"
|
||||
"-idirafter ${stdenv.cc.cc}/lib/gcc/${stdenv.hostPlatform.config}/${lib.getVersion stdenv.cc.cc}/include"
|
||||
];
|
||||
in ''
|
||||
export BINDGEN_EXTRA_CLANG_ARGS="${lib.concatStringsSep " " [
|
||||
"$(< ${stdenv.cc}/nix-support/libc-crt1-cflags)"
|
||||
"$(< ${stdenv.cc}/nix-support/libc-cflags)"
|
||||
"$(< ${stdenv.cc}/nix-support/cc-cflags)"
|
||||
"$(< ${stdenv.cc}/nix-support/libcxx-cxxflags)"
|
||||
"${lib.optionalString stdenv.cc.isClang clangArgs}"
|
||||
"${lib.optionalString stdenv.cc.isGNU gccArgs}"
|
||||
]}"
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user