Skip to content

Latest commit

 

History

History
68 lines (57 loc) · 3.23 KB

README.md

File metadata and controls

68 lines (57 loc) · 3.23 KB

I Fucking Hate Dotfiles

Link standing on the Great Plateau, from Breath of the Wild, looking out over Hyrule

TL;DR

A mix of system- & user-level configurations for the machines that I administer; shared here for convenience and in case anyone else finds them useful.

Structure

  • flake/ - "flake modules" to be used with flake-parts
  • config/
    • shared/ - settings shared between system & user configs
    • system/ - system-level configuration options (Nix itself, dev tools, services)
      • macos/ - macOS system-level configs (homebrew, app store, dock, inputs)
    • user/ - user-level configuration (i.e. dotfile management)
  • disks/ - declarative disk partition configuration, courtesy of disko
  • profiles/ - collections of configuration options from which high-level system "profiles" are comprised
    • e.g. profiles/user/base.nix is a user-level profile for all systems
  • hosts/ - system & user configs for the different hosts administered here
  • modules/ - custom modules used in system- or user-level configuration
  • overlays/ - just what it says: any overlays that should be applied to the package sets used herein
  • scripts/ - shell scripts & other utilities

NOTES

TODO
  • init with colmena
  • test out remote builds
    • a macOS host should be able to deploy a config to a NixOS/Linux target
  • test out binfmt emulation
    • a x86_64-linux host should be able to build an aarch64-linux deployment locally (i.e. cross-arch) and then deploy it to a target
    • try this out with some native images for a Raspberry Pi built on an x86_64-linux machine
  • minimize plaintext keys stored on device with secrets
    • plaintext keys should only decrypt system partitions
    • all data partitions (and associated services) await some corresponding systemd unit, which indicates that the secret has been supplied
    • MVP is just reading from some plaintext files on the host
    • later iteration
    • be very careful to always permit SSH access (leave allowed public keys in the config file) so as to avoid having to manually connect up to the machine and debug