Skip to content

Latest commit

 

History

History
183 lines (129 loc) · 5.55 KB

README.md

File metadata and controls

183 lines (129 loc) · 5.55 KB

Kyle's dots and infrastructure

This repository holds all the configuration and assets required to setup environments or infrastructure I control.

This repository is always in some form of evolution. I do try to keep main in a working state for people who happen to stumble upon this repo. I make no promises however, even to myself.

Setup

# install nix
git clone https://github.com/kyleondy/dotfiles.git ~/src/dotfiles
cd ~/src/dotfiles
nix-shell -p direnv
direnv allow
make deploy

# post setup
git clone git@github.com:/kyleondy/password-store.git ~/.password-store

Tooling

I use NixOS as my operating system whenever possible. To manage my user environment I use [home-manager]. I use [flakes] to pin my dependencies.

When I am unable to use NixOS, I still try and use home-manager and use nix onto of the OS. On MacOS systems I use nix-darwin to manage as much of the system as I can.

I use terraform to manage any infrastructure within AWS.

Structure

My use cases:

Multiple node types

  • laptop
  • server
  • VM

Multiple architectures

  • x86_64
  • aarch64-darwin
  • ARM

Multiple roles

  • personal
  • work

Trying to not nest configuration files deeply. Ex, flake.nix imports foo.nix which import bar.nix which uses bazz.nix. Try to keep everything two layers deep. flake.nix can reference a file, but that file should not reference any deeper.

Nodes have

  • system configuration irrespective of a user
  • zero or more users, with their own config
  • the same user on node1 and node2 may have different configurations

Users can have "roles".

  • Gaming
  • Dev
  • Document creation

Goals

Complete configuration

To define configuration for everything that plugs into a wall in this single repository.

Learning

I may do things the hard way to help me learn things.

Non-Goals

The following are things they I feel need to be explicitly called out.

Reference architecture for best practices

This repository is my metaphorical tool belt I wear at my day job. Sometimes I need to get things done, and I do it without much concern. I will try to leave a // todo: for the future, but do not assume any confusing code is done for a good reason.

Reusability

To improve how quickly I can iterate, I do not write any of the code in this repository with the goal of having it easy for someone to reuse. I am thrilled if people can be inspired by my code, but I don't there will be much success blindly copying code.

Repository layout

This is a top level layout. Each directory should have a README that provides more detail.

  • bin/: scripts used in the management of this repo
  • docs/: detailed documentation on specific topics
  • keyboard/: QMK config for my keyboards
  • nix/: configuration for Nix and NixOS
  • notes/: less structured documentation
  • tf/: terraform code

Roadmap / Todo

This is a running list things that I would like to do in the future, when I have time. They are in no specific order, nor are they encompassing.

General

ZSH

Infrastructure

These are related to hosts opposed to dot files.

Bootstapping

  • Be able to run make netboot and build a netboot image, and server it via [pixicore]
  • write instructions, and script, on how to install NixOS on hardware
  • Look into Graham Christensen's work with nix-netboot-serve (pxe on demand). Possibly combine with erase your darlings.

Services

  • Move tiger to DMZ. Lets me easily server content to internet, build host, apps, binary cache, etc.
    • IMPLICATION: will need backup ZFS server to PULL from this server since tiget can't reach out to it
  • serve things under apps.ondy.org
  • host under apps.1ella.com
    • setup wildcard *.apps.1ella.com to DDNS address of home
      • sonarr.apps.1ella.com
      • radarr.apps.1ella.com
      • nzbget.apps.1ella.com
      • nzbhydra2.apps.1ella.com
      • jellyfin.apps.1ella.com
      • git.apps.1ella.com
      • concourse.apps.1ella.com
      • hydra.apps.1ella.com
  • setup vanity urls for <foo>.ondy.org as desired in TF
    • git.ondy.org
    • jellyfin.ondy.org
    • nixcache.ondy.org
    • ci.ondy.org

External Resources

These are other people's dotfiles and articles I found useful while setting my environment up. This list is in lexicographical order and not exclusive.