This is a Monorepo to manage my personal environment. A combination of Talos, NixOS, Terraform, and Flux allow this repo to provide most of the configuration required to manage this environment across regions/clouds.
Yaml is old school, KCL is a DSL that provides the power of full type safety while rendering yaml at the end of the day.
My homelab is Kubernetes based, meaning that I have a cluster of nodes running OCI (AKA. Docker) containers. Since my lab is mostly Kubernetes, I can use tools that focus on text manipulation and formatting, then use Flux to actually feed these configs into my cluster.
The result is that the text files here turn into actual running applications.
I use a toolset called Talos Linux
to help abstract the hardware management of Kubernetes.
Terraform does one-shot api calls. Things I wont want managed by a controller but should be gitops.
Crossplane is the platform behind my operator focused management.
Nix is used for hosts that do not run Kubernetes directly. This is a declarative configuration management system that allows me to manage my hosts in a gitops fashion.
Talos is a kubernetes focused OS that is configured by a YAML manifest. You can see this in :/infra/talos
I use talhelper
to further abstract Talos's config for easy config file expandability
NixOS is used in hosts that are not meant to run Kubernetes directly.
:/infra/nix
is where I store this but the entry point is :/flake.nix
KYZ acts as the management and as a workload site.
Tool | Use | Active |
---|---|---|
NixOS | Operating System | ☑️ |
SOPS | inline secrets-manager | |
KCL | DSL | |
Talos | Operating System | |
Flux | Gitops Operator | |
Crossplane | API platform |
Thank you to the below for inspiration
- onedr0p
- anthr76
- danmanners
- Github Issues
See commit history
See LICENSE