this repo has no description
1# Everything
2
3This monorepo contains many things, including
4- Tilderef setup,
5- The Milky-Way k3s cluster manifests,
6- Pulumi infrastructure declarations,
7- NixOS modules,
8
9and more. Some advantages of using a monorepo is that
10- Dependencies between these projects are easier to manage and update (eg. a single source of truth is easily depended on by everything else),
11- Build systems can be re-used instead of duplicated for each git repository,
12
13etc.
14
15## Overview
16
17- `eight/` defines domain records using octodns.
18 - For example, the `andref.app` domain records are defined here.
19 - This is a single source of truth for all domains.
20- `experimental/` contains new projects that may or may not be abandoned.
21 - This is a safe space to play with ideas quickly as-needed.
22- `exports/` contains "built" artifacts which 1. are not nix-hermetic, or 2. is depended on by code which cannot evaluate Nix IFD.
23 - For example, `jupiter/` is not nix-hermetic (because it uses Pulumi which is not hermetic), so its output is written to `exports/jupiter/generated.json` as a single source of truth.
24 - If `eight/` was written in Jsonnet, it would not be able to evaluate Nix IFD, so `jupiter/` would still need to write to `exports/jupiter/`, even if `jupiter/` was nix-hermetic.
25- `flake-profiles/` contains all Nix flakes.
26 - Every NixOS/Darwin/Home-Manager configuration should have its own dedicated flake, because each configuration should have its own lockfile. Otherwise, updating machine-1 might unexpectedly break the configuration of machine-2.
27 - `flake-profiles/everything-devenv/` contains targets which are ok with rolling updates. This flake is updated frequently, and projects which are unlikely to fail from a new version of a dependency can use this flake.
28- `jupiter/` declares its infrastructure using Pulumi.
29 - The main Python file uses Pulumi to create Cloud resources, and also writes relevant data to `exports/jupiter/generated.json`.
30- `lib/` contains utility Nix functions.
31- `magic/` defines magic values (or "anonymous" values), and serves as a single source of truth.
32 - For example, the absolute path of this repository that's checked out in machine-1 is a magic value.
33- `milky-way/` defines the k3s cluster manifest.
34- `secrets/` contains sensitive values encrypted with sops-nix.
35- `tilderef/` contains miscellaneous files relevant to declaring the tilderef configuration.
36- `venus/` contains all NixOS/Darwin/Home-Manager modules and configurations, as well as config files for apps.
37- `whale/` specifies targets for building container images and scripts for pushing them to registries.