No description
Find a file Use this template
Sridhar Ratnakumar f3b4c3fd4f Port to dream2nix
2023-06-26 12:45:21 -04:00
.github/workflows Remove 'nix run' 2022-05-04 12:03:45 -04:00
.vscode .vscode: remove tasks 2023-06-26 12:32:26 -04:00
src Prepare to make a template 2021-04-10 12:10:57 -04:00
.envrc Add .envrc (for direnv) 2022-05-04 11:45:44 -04:00
.gitattributes git: Mark flake.lock as generated 2022-05-08 17:04:18 -04:00
.gitignore Add .envrc (for direnv) 2022-05-04 11:45:44 -04:00
Cargo.lock Change name 2021-04-10 12:12:49 -04:00
Cargo.toml Switch over to nix-cargo-integration (dream2nix) 2022-05-08 17:02:53 -04:00
flake.lock Port to dream2nix 2023-06-26 12:45:21 -04:00
flake.nix Port to dream2nix 2023-06-26 12:45:21 -04:00
README.md readme: typos 2022-10-02 11:24:04 -04:00
shell.nix fmt 2021-04-06 23:42:49 -04:00

A template Rust project with fully functional and no-frills Nix support, as well as builtin VSCode configuration to get IDE experience without any manual setup (just open in VSCode and accept the suggestions). Based on dream2nix and nix-cargo-integration.

Note: If you are looking for the original template based on this blog post's use of crate2nix, browse from this tag.

Adapting this template

  • Run nix develop to have a working shell ready before name change (Workaround for an issue
  • Change name in Cargo.toml and flake.nix. Also change description in flake.nix.
  • Run cargo generate-lockfile in the nix shell
  • There are two CI workflows, and one of them uses Nix which is slower (unless you configure a cache) than the other that is based on rustup. Pick one or the other depending on your trade-offs.

Development (Flakes)

This repo uses Flakes from the get-go, but compat is provided for traditional nix-shell/nix-build as well (see the section below).

# Dev shell
nix develop

# or run via cargo
nix develop -c cargo run

# build
nix build

Development (Legacy Nix)

# Dev shell
nix-shell

# run via cargo
nix-shell --run 'cargo run'

# build
nix-build

There is also a bin/run script which starts 'cargo watch'; it is used by VSCode as well (Ctrl+Shift+B).