summaryrefslogtreecommitdiff
path: root/templates/rust
diff options
context:
space:
mode:
authorMike Vink <ivi@vinkies.net>2023-10-30 13:21:42 +0100
committerMike Vink <ivi@vinkies.net>2023-10-30 13:21:42 +0100
commit5ecb6fe32ca57c30b5507c63fe62c32581b2ddea (patch)
tree2ef915b0af277c3ab8c55c8314d667a808eb77bd /templates/rust
parentbd6e95a80848e504c6cfdc389a9fe45404632a23 (diff)
add rust template
Diffstat (limited to 'templates/rust')
-rw-r--r--templates/rust/.envrc4
-rw-r--r--templates/rust/flake.nix56
2 files changed, 60 insertions, 0 deletions
diff --git a/templates/rust/.envrc b/templates/rust/.envrc
new file mode 100644
index 0000000..1305de8
--- /dev/null
+++ b/templates/rust/.envrc
@@ -0,0 +1,4 @@
+if ! has nix_direnv_version || ! nix_direnv_version 2.2.0; then
+ source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.0/direnvrc" "sha256-5EwyKnkJNQeXrRkYbwwRBcXbibosCJqyIUuz9Xq+LRc="
+fi
+use flake
diff --git a/templates/rust/flake.nix b/templates/rust/flake.nix
new file mode 100644
index 0000000..8a75f83
--- /dev/null
+++ b/templates/rust/flake.nix
@@ -0,0 +1,56 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ flake-parts.url = "github:hercules-ci/flake-parts";
+ systems.url = "github:nix-systems/default";
+ treefmt-nix.url = "github:numtide/treefmt-nix";
+ };
+
+ outputs = inputs:
+ inputs.flake-parts.lib.mkFlake { inherit inputs; } {
+ systems = import inputs.systems;
+ imports = [
+ inputs.treefmt-nix.flakeModule
+ ];
+ perSystem = { config, self', pkgs, lib, system, ... }:
+ let
+ nonRustDeps = [
+ pkgs.libiconv
+ ];
+ in
+ {
+ # Rust dev environment
+ devShells.default = pkgs.mkShell {
+ inputsFrom = [
+ config.treefmt.build.devShell
+ ];
+ shellHook = ''
+ # For rust-analyzer 'hover' tooltips to work.
+ export RUST_SRC_PATH=${pkgs.rustPlatform.rustLibSrc}
+
+ echo
+ echo "🍎🍎 Run 'just <recipe>' to get started"
+ just
+ '';
+ buildInputs = nonRustDeps;
+ nativeBuildInputs = with pkgs; [
+ just
+ rustc
+ cargo
+ cargo-watch
+ rust-analyzer
+ ];
+ };
+
+ # Add your auto-formatters here.
+ # cf. https://numtide.github.io/treefmt/
+ treefmt.config = {
+ projectRootFile = "flake.nix";
+ programs = {
+ nixpkgs-fmt.enable = true;
+ rustfmt.enable = true;
+ };
+ };
+ };
+ };
+}