-
Notifications
You must be signed in to change notification settings - Fork 0
set up CI, project templates, monorepo management #69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
- use nix build .#<package> to build a package - use nix and direnv to load dev shells Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
chore: set up dev shell Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
create a blank folder with a - README.md - CONTRIBUTE.md - .envrc - .gitignore - flake.nix Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
recurse through all projects, running - project-lint - project-build - project-test Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
every time a branch is pushed - project-lint - project-build - project-test Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
do not allow a branch to be merged if it is not already up to date with the branch it is merging into Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
- @designbyajay owns the entire repo Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
tag main iterates through commits merged to main, and tags every commit that contains a project with a semver bump Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
Signed-off-by: Ajay Ganapathy <ajay@incremental.design>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR establishes a comprehensive CI/CD and monorepo management infrastructure using Nix, including:
- GitHub Actions workflows for commit validation, building, testing, and automatic tagging
- Nix-based development environments with cross-platform support (Linux ARM64/x86_64, macOS ARM64)
- Git hooks for commit message linting and pre-push validation
- Project templating system for creating new projects with consistent tooling
Key Changes
- Complete CI/CD pipeline with per-commit validation across multiple platforms
- Monorepo tooling with
recurse.nixfor running commands across all projects - Nix flake configuration with extensive inline documentation (1357 lines of tutorial content)
Reviewed changes
Copilot reviewed 27 out of 29 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
flake.nix |
Main Nix flake with extensive tutorial comments explaining Nix concepts, cross-platform dev shell definitions |
flake.lock |
Dependency lockfile pinning nixpkgs and flake-schemas versions |
.github/workflows/push.yml |
Multi-stage CI pipeline validating commit messages, linting, building, and testing on each commit across platforms |
.github/workflows/merge.yml |
Enforces rebase-only merge strategy by checking that PRs are fast-forward mergeable |
.github/workflows/tagMain.yml |
Automated tagging workflow that creates version tags when semantic versions are bumped |
.github/CODEOWNERS |
Sets repository ownership for PR approvals |
.config/devShell.nix |
Core dev shell builder wrapping project-lint/build/test commands with changed-file detection |
.config/recurse.nix |
Monorepo traversal script executing commands on projects with .envrc files |
.config/lintCommit.nix |
Commit message linter using conventionalcommit/commitlint Go binary |
.config/commitlintConfig.nix |
Conventional commits configuration limiting types to feat/fix/chore |
.config/stubProject.nix |
Project scaffolding system creating new projects from language templates |
.config/installGitHooks.nix |
Git hook installer for commit-msg and pre-push validation |
.config/language-nix/* |
Nix language support: dev shell, VSCode/Zed configs, project template |
.config/importFromLanguageFolder.nix |
Dynamic importer discovering and loading language-* folder configurations |
.config/configVscode.nix |
VSCode workspace configuration merger for language-specific settings |
.config/configZed.nix |
Zed editor configuration merger with direnv shell_hook integration |
README.md |
Project overview with ASCII art branding |
CONTRIBUTE.md |
Comprehensive contribution guide explaining monorepo philosophy, Nix usage, and workflow |
.gitignore |
Whitelist-based gitignore denying all except explicitly allowed files |
.envrc |
Direnv integration loading the default Nix dev shell |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Ajay Ganapathy <lets.talk@designbyajay.com>
set up a .config folder with nix scripts that make commands for creating projects, linting, building, testing and publishing them. Set up githooks for pre-push and commit msg. Set up .github actions folder for post-push, pre-merge, post-merge actions