From e483187f362daaa1a970cfba19828fc98de58132 Mon Sep 17 00:00:00 2001 From: Daniel Lundin Date: Tue, 22 Oct 2024 10:00:58 +0200 Subject: [PATCH] README: Document features of the template --- README.md | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 68e5487..84c36e9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,36 @@ -# My Project +# My Rust Project -This is a template for generic new projects. +This is an opinionated template for rust projects using Nix. + +## Template features + +- CI template for Woodpecker. +- Forgejo commit message templates. +- Linting and formatting. +- Nix-centered development environment. +- Include language servers and all tooling in Nix dev shell. + +### Rust Opinions + +- [rust-overlay](https://github.com/oxalica/rust-overlay) to manage rust version. +- [nextest](https://nexte.st) for running tests. +- [mold](https://github.com/rui314/mold) for faster linking. +- [rustfmt](https://github.com/rust-lang/rustfmt) for code formatting. +- [clippy](https://github.com/rust-lang/rust-clippy) for linting. + +## Dev tools by default + +- [direnv](https://direnv.net) for automatic dev shell activation. +- [Bacon](https://dystroy.org/bacon/) - automatic and minimal interaction code checker. +- [cargo-machete](https://github.com/bnjbvr/cargo-machete) for removing unused dependencies. +- [hyperfine](https://github.com/sharkdp/hyperfine) for simple benchmarking. +- [just](https://just.systems/man/en/) for running things and discovery. +- [watchexec](https://github.com/watchexec/watchexec) (and [cargo-watch](https://github.com/watchexec/cargo-watch)) for watching files and running commands. + +### Nix opinions + +- [Crane](https://github.com/ipetkov/crane) for incremental artifact builds and nice set of checks. +- [Advisory-db](https://github.com/rustsec/advisory-db) + for automatic checking of vulnerabilities of dependencies. +- [nix-filter](https://github.com/numtide/nix-filter) allows filtering out files from the source input for a project. +- [treefmt](https://github.com/numtide/treefmt-nix) supports automatic code formatting of all kinds of source code.