mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 12:29:19 -08:00
No description
https://gensokyo.zone
| .github/workflows | ||
| ci | ||
| config | ||
| nix | ||
| overlays | ||
| .envrc | ||
| .gitignore | ||
| .gitmodules | ||
| CODE_OF_CONDUCT.md | ||
| default.nix | ||
| README.md | ||
| shell.nix | ||
nixfiles
These are the NixOS configurations for my systems. I run nothing other than NixOS on my hardware, aside from virtual machines.
Contents
Nodes
| Node | Purpose |
|---|---|
| athame | Currently the main server. Ad-hoc hetzner cloud box. |
| rinnosuke | Intended to be a nameserver. Provisioned OCI EPYC box. |
| beltane | Home server. NAS + HTPC, does DVB stuff. |
| samhain | Beloved workstation. Does VFIO. |
| yule | Main laptop. |
| ostara | CCTV netbook. |
Profiles
| Profile | Purpose |
|---|---|
| base | Base profile, always used. Root access, base16, home-manager, locale, network module, nix, packages, profiles, secrets, shell and sysctl configuration. |
| gui | GUI profile. Provides window managers, DNSCrypt/dnscrypt-proxy, filesystem packages, font, NixOS-side GPG, mingetty, NFS, QT, sound (pipewire) and XDG portal configuration. |
| vfio | Provides host-unspecific VFIO. Fancy patched QEMU from arcnmx/nixexprs, arcnmx/screenstub (however, patched in-repo for Q35), AMDGPU vendor-reset and ACS override. |
| hardware | Sub-profiles for my hardware are provided here. Some are reusable. |
User Profiles
| Profile | Purpose |
|---|---|
| base | base16, git, inputrc, packages, pass, rink, secrets, SSH, tmux, weechat, vim, xdg and zsh configuration. |
| dev | cookiecutters, doom-emacs (although unused, forced to use PgtkGcc all fancily :3c), packages, rustfmt and (heavier on the node) vim configuration. |
| gui | firefox+userChrome+tst, font, dnkl/foot terminal, GTK, packages, QT, ranger and xdg configuration. |
| media | mpv, obs, packages and syncplay configuration. |
| personal | email (notmuch), home-manager-side GPG, weechat and zsh configuration. |
| services | User services. weechat and mpd are provided. |
| sway | sway, i3gopher, swayidle, swaylock-effects, screenshot tool, kittywitch/konawall-rs, mako, wofi, waybar and xkb (custom layout o:) configuration. |
CI
CI for this repository uses arcnmx/ci and aims to achieve two goals:
| Action | Purpose |
|---|---|
| nodes | Build and cache host closures, show state of host evaluability/buildability. |
| niv-cron | Automatically update the dependencies used by the repository, cache them and host closure build results with them. |
Dependencies
| Dependency | Reasoning |
|---|---|
| nmattia/niv | Dependency management. Will move to flakes when stable. |
| nix-community/home-manager | home-manager. Self-explanatory. |
| nix-community/NUR | Firefox extensions and such. |
| arcnmx/tf-nix | The deploy system used, also provides DNS, secrets and node provisioning. (Anything terraform can do.) |
| arcnmx/ci | The CI integration system used. |
| arcnmx/nixexprs | Packages and modules I heavily make use of. |
| nix-community/impermanence | Impermanence! Erase your darlings. |
| kittywitch/anicca | A helper for moving to impermanence. |
| kittywitch/nixexprs | Packages and modules I have made. |
| nixos-mailserver | The mail server module I use. |
| hexchen/nixfiles | Yggdrasil module. Yggdrasil nodes. |
| nix-community/emacs-overlay | An overlay for emacs versions. Currently unused. |
| vlaci/nix-doom-emacs | Nixified DOOM emacs. Currently unused. |
Commands
The commands here aside from the nix build command are provided through the shell. The <target> and <host> commands are runners provided through arcnmx/tf-nix.
Please use nix-shell or direnv/direnv. The shell is not compatible with nix-community/nix-direnv.
| Command | Purpose |
|---|---|
nf-update |
Fancier niv update. |
nf-actions |
Updates CI integrations. |
nf-test |
Tests CI actions. |
<target>-apply |
Deploys to the provided target. |
<target>-tf |
Provides you a terraform shell for the provided target. |
<host>-ssh |
SSH into the provided host. |
nix build -f . network.nodes.<host>.deploy.system |
Build a system closure for the provided host. |