Thank you for contributing! This guide covers the development setup and workflow.
- Nix with flakes enabled (recommended) OR manual tool installation
- Git for version control
# Clone the repository
git clone https://github.com/lemorage/bole.git
cd bole
# Enable automatic environment loading
direnv allowThe development environment loads automatically when you enter the directory. Git commit hooks are installed automatically.
# Enter development environment manually
nix develop# Install Rust nightly toolchain (required for formatting and Edition 2024)
rustup toolchain install nightly
rustup component add rustfmt clippy rust-src rust-analyzer --toolchain nightly
rustup override set nightly
# Install additional tools
cargo install typos-cli
# Install git hook manually
mkdir -p .git/hooks
# Copy commit validation script to .git/hooks/commit-msg- Fork and clone the repository
- Set up development environment:
direnv allow(ornix develop) - Create a feature branch:
git checkout -b feat/your-feature - Make changes
- Commit with proper format:
git commit -m "feat: your change" - Push and create pull request
Contributors:
# All checks (same as CI)
nix run .#checks.aarch64-darwin.lint # macOS (Apple Silicon)
nix run .#checks.x86_64-darwin.lint # macOS (Intel)
nix run .#checks.x86_64-linux.lint # Linux
# Individual fixes
cargo fmt
cargo clippy --fix
typos --write-changes
cargo test
# Or use xtask to check (format, lint, test, build)
cargo xtask checkNote: Nix does not support native Windows yet. Use WSL2 and run
nixinside your WSL shell.
Maintainers:
cargo xtask release patch # Patch version bump
cargo xtask release minor # Minor version bump
cargo xtask release major # Major version bumpUse Conventional Commits format:
<type>[optional scope]: <description>
- Types:
feat(new feature),fix(bug fix),docs,chore,test,refactor, etc. - Scope: Optional, in parentheses (e.g.,
feat(parser)) - Description: Brief summary of changes, max 72 characters
Examples:
feat: add user loginfix(api): handle null responsedocs: fix typo in README
Valid scopes: cli, core, pm, config, deps, nix
Details: https://www.conventionalcommits.org/en/v1.0.0/
Ensure your commit message follows the conventional format:
git commit -m "feat: describe your change"
# Not: git commit -m "added stuff"# Fix all issues
cargo fmt
typos --write-changes
cargo clippy --fix# Reload environment
direnv reload
# Update flake dependencies
nix flake update
# Rebuild environment
nix developThank you for contributing to Bole!