GitOps repository for personal infrastructure management
  • Nix 32.5%
  • Jinja 21.5%
  • Python 17.9%
  • Shell 11.8%
  • Go 8.1%
  • Other 8.2%
Find a file
Erich Blume 6b53cde35c Update UniFi Pulumi plan: switch to ubiquiti-community provider
Corroboration review of the add-unifi-pulumi-stack plan found several
issues. Switch provider from filipowm/unifi (inactive maintainer,
showstopper bug #94 wiping firewall rules) to ubiquiti-community/unifi
(actively maintained, API key auth). Add UX7 config backup prerequisite,
fix safety guard to check default route instead of hostname, update
1Password paths to match actual item, fix ringtail references, and
update doc steps for already-existing files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 20:00:13 -08:00
.claude Add pre-commit hooks for code quality (#19) 2026-01-16 19:33:02 -08:00
.dagger Upgrade Node.js from 20 to 22 LTS (#182) 2026-02-13 11:07:41 -08:00
.forgejo/workflows Add yq to forgejo-runner and replace sed YAML edits (#180) 2026-02-13 10:20:27 -08:00
.github Rename github readme to avoid display issues on github.com 2026-01-29 11:32:55 -08:00
ansible Extend forgejo_actions_secrets role to support multiple repos 2026-02-12 11:15:28 -08:00
argocd Fix 1Password Connect credentials for chart 2.3.0 2026-02-13 17:30:45 -08:00
containers Tier 1 version bumps (#186) 2026-02-13 17:16:37 -08:00
docs Update UniFi Pulumi plan: switch to ubiquiti-community provider 2026-02-13 20:00:13 -08:00
fly Fix cache hit rate on APM and Fly.io dashboards (#177) 2026-02-12 18:40:48 -08:00
mise-tasks Add CV to services-check, update homepage link (#174) 2026-02-12 14:10:03 -08:00
pulumi Expose CV publicly at cv.eblu.me (#173) 2026-02-12 14:05:00 -08:00
.ansible-lint Add pre-commit hooks for code quality (#19) 2026-01-16 19:33:02 -08:00
.gitignore Add pre-commit hooks for code quality (#19) 2026-01-16 19:33:02 -08:00
.pre-commit-config.yaml Adopt Dagger CI for docs build (Phase 2) (#157) 2026-02-11 16:33:16 -08:00
.yamllint.yaml K8s Migration Phase 1: Infrastructure Setup (#29) 2026-01-19 09:49:52 -08:00
Brewfile Add op-backup mise task for encrypted 1Password disaster recovery (#136) 2026-02-09 20:37:39 -08:00
CHANGELOG.md Update docs release to v1.8.2 2026-02-13 10:36:04 -08:00
CLAUDE.md Document op read vs op item get convention (#143) 2026-02-10 13:09:55 -08:00
dagger.json Adopt Dagger CI for container builds (Phase 1) (#156) 2026-02-11 15:38:31 -08:00
LICENSE Adopt Dagger CI for container builds (Phase 1) (#156) 2026-02-11 15:38:31 -08:00
mise.toml Adopt Dagger CI for container builds (Phase 1) (#156) 2026-02-11 15:38:31 -08:00
README.md Add Fly.io public reverse proxy for docs.eblu.me (#120) 2026-02-08 02:36:19 -08:00
towncrier.toml Fix Quartz build to preserve git history for accurate file dates (#105) 2026-02-04 08:25:46 -08:00

blumeops

                    l0K                                k..:k.
                  .:...c.                            ;c....
                    ....'o                          x.....
                      ....k                        x....
                       ... l'                    'c....
                        ....,l                  o'....
                         .....x                k....
                          .....d.             c....
                            ... l            x....
                              .,.d         ;c.c'
                               'c':;      x',c.
                                .:,'o   .x.::.
                                 .;:.k ,:.c'
                                   ,c.c';:.
                                    .,.:;.
                                   ;'.c, l
                                  d',c..:.d.
                                 O.:;.  'c';c
                               ;c.c'     .:;.x
                              o',c.       .;:.k
                             x.::.          'c.l.
                         dOKl.c,             .c,'o
                   0l'...... ..'              .::.ocx.
                 'o ............              o .... :olx;
                x,ox;. ....... .k             ....,dKKo;..x
              'd,OXXXXk:. ...... ;            ;:dXOl;',';l;o;
             x,oXXXXXXXXXkc. ...              .lc,',':dKNNNx;x;
           ;o;0KXXXXXXXXXXXX0l.                .',ckNNNNNNNNNxco0d
          l,d0oOXKOKXXXXKXXXX0.                  kNNNNNNNNNNNNNXxloo::
             .OXxdXKOX0kXXXX0.                   .KNNNNNNNNNNXONX0o.
                ,OdxKldXXXXx.                     ,NNNNNNNNNNNKoc
                   :.OXXkKo                       .kNNNNNNNNXx.
                      ':0c                         .NdNkXkc

Blue Mops — GitOps for Erich Blume's personal computing environment.

What is this?

Infrastructure-as-code for my tailnet (tail8d86e.ts.net). This repo contains ansible playbooks, configuration, and automation for managing my personal infrastructure.

This codebase was heavily co-authored by Claude Code, as an experiment in LLM-assisted development. I want to include a personal note here that I don't know entirely how I feel about LLMs in our current era, but it felt important to learn.

Development

Pre-commit Hooks

This repo uses pre-commit for code quality and consistency. Install hooks with:

uvx pre-commit install

Run all hooks manually:

uvx pre-commit run --all-files

Hooks include:

  • General: trailing whitespace, end-of-file fixer, large files, merge conflicts
  • Secrets: TruffleHog for secret detection
  • YAML: yamllint, ansible-lint
  • Python: ruff (linting + formatting)
  • Shell: shellcheck, shfmt
  • TOML: taplo
  • JSON: prettier

CI/CD

This repo uses Forgejo Actions for CI/CD. Workflows live in .forgejo/workflows/ (not .github/workflows/). The runner executes jobs in host mode within the Kubernetes cluster.

Documentation

Documentation lives in docs/ and follows the Diataxis framework. Published at https://docs.eblu.me.

Docs use Obsidian wiki-link syntax ([[link]]) for cross-references. Edit with any markdown editor, or use obsidian.nvim for enhanced navigation.