LogoCyanPrint
Development

Development Setup

Setting up your development environment for contributing to CyanPrint

Development Setup

This guide will help you set up your development environment for contributing to CyanPrint.

Prerequisites

CyanPrint uses Nix for reproducible development environments. All dependencies are managed through Nix flakes.

ToolPurpose
NixPackage manager and dev environment
DirenvAuto-loads Nix environment
GitVersion control

Quick Start

Fork the repository on GitHub, then clone your fork:

# Replace REPO_NAME with: boron, iridium, zinc, helium, or argon
git clone https://github.com/YOUR_USERNAME/sulfone.REPO_NAME.git
cd sulfone.REPO_NAME

Allow direnv to load the Nix environment:

direnv allow

Nix will automatically install all required dependencies. Note: Some repositories run 'pls setup' automatically via .envrc.

Setup dependencies and start development:

pls setup
pls dev

Common Commands

All repositories use pls (Taskfile) for common operations. Note that available commands vary by repository:

CommandDescription
pls setupInstall dependencies
pls devStart development server (not available in all repos)
pls buildBuild for production
pls testRun tests (only available in some repos)

Check each repository's Taskfile.yaml for the full list of available commands.

Pre-commit Hooks

Pre-commit hooks run automatically on commit and handle:

  • Code formatting (treefmt)
  • Linting (language-specific: golangci-lint, clippy, biome, ruff, mypy, eslint, etc.)
  • Secrets scanning
  • Shellcheck

To run all checks manually:

pre-commit run --all-files

Next Steps