Skip to content
View kolohelios's full-sized avatar

Highlights

  • Pro

Block or report kolohelios

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
kolohelios/README.md

kolohelios

Personal monorepo for infrastructure, tooling, and projects. Public so the shared tooling can be referenced freely; not actively soliciting external contributions.

Layout

Top-level directories are slots; each slot contains one directory per project. Every project has its own flake.nix — there is no root flake.

Slot Purpose
apps/ End-user applications
packages/ Shared libraries
projects/ Standalone projects that don't fit another slot
services/ Long-running services (reserved; not yet populated)
tools/ Developer tooling (for example, tools/shaka)
infra/ Infrastructure as code (for example, infra/devbox)
nix/ Shared nix infrastructure (for example, nix/kolohelios-nix)

Getting started

Prerequisites: Nix with flakes enabled, and direnv for automatic environment loading.

# Each project has its own dev shell. cd into it; direnv loads the flake.
cd tools/shaka
just <recipe>      # build, test, lint, validate, ...

To run validation across the whole repo (the same command CI runs):

shaka preflight
# or, scoped to changes since a ref:
shaka preflight --since main@origin

shaka is on $PATH inside any project's devshell (via a shim in kolohelios-nix.lib.workflowPackages); from outside a devshell, the wrapper at tools/shaka/bin/shaka is the cold-start escape hatch.

Build system

  • Per-project flakes, with nix/kolohelios-nix as a shared lib. Consumers reference it via FlakeHub so they can be evaluated outside this working tree.
  • just as the per-project task runner. Per-project justfiles are generated from project.cue by shaka project generate-justfiles — don't hand-edit them; CI fails on drift.
  • shaka (tools/shaka) is the build/repo command-line tool:
    • shaka preflight — runs every CI check locally; CI runs the same command, so local and CI cannot drift.
    • shaka project schema-check|lint|generate-justfiles — project metadata tooling.
    • shaka commit lint — conventional-commit and atomicity enforcement.
    • shaka whitespace check|fix — cross-language hygiene.
    • shaka repo sync|send|statusjj/PR workflow helpers.
    • shaka workspace — sibling jj working copies for parallel sessions.

Tenets

  • Devboxes are ephemeral. Local devboxes (baremetal Mac, cloud VM) are disposable workspaces, not durable infrastructure. The durable artifacts are the code repo, the FlakeHub-published flakes, and the deployed services. Configuration changes live in version control.
  • Secrets live in 1Password. Canonical for local development (op command-line tool), CI (GitHub Actions integration), and infrastructure. Never committed to the repo.
  • Version control via Jujutsu (jj) on a colocated git repo. Conventional commits (<type>(<scope>): <subject>, max 70 chars), enforced by shaka commit lint. Atomic, vertical commits — one logical change per commit.

License

Licensed under either of:

at your option.

Popular repositories Loading

  1. xstate-cartographer xstate-cartographer Public

    (Alternative) Visualizer for XState

    TypeScript 12

  2. react-native-recoil-flipper-client react-native-recoil-flipper-client Public

    TypeScript 2

  3. kolohelios_old kolohelios_old Public

    HTML 1 1

  4. recruitr-angular recruitr-angular Public

    Forked from coding-house-apr2015/recruitr-angular

    JavaScript 1 6

  5. techlogos techlogos Public

    1

  6. local-npm-launch-agent local-npm-launch-agent Public

    Forked from local-npm/local-npm-launch-agent

    Script to set up local-npm as a LaunchAgent on OS X

    Python 1