infrastructure/README.md
2021-08-28 22:24:22 +01:00

5.5 KiB

nixfiles

nodes

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.