Skip to content

Conversation

@designbyajay
Copy link
Member

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

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>
Copy link

Copilot AI left a 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.nix for 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>
@designbyajay designbyajay deleted the setup-monorepo branch January 1, 2026 21:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants