Homelab

This is the companion configuration that goes with the video from Dreams of Autonomy.

This project is split into different directories depending on each service used.

Requirements

To use this, you'll need the following installed on your sysetm

  • nix
  • kubectl
  • helmfile
  • helm
  • git

Additionally, you'll also want to make changes to the user information found in the nixos/configuration.nix

nixos

This directory contains the nixos configuration for setting up each node with k3s.

The configuration makes use of nix flakes under the hood, with each node configuration being:

homelab-0
homelab-1
homelab-2

To set up a node from fresh, you can use nixos-anywhere. This requires loading the nixos installer and then booting the node into it. You can then install remotely once you've set the nodes password using the passwd command.

The command I use is as follows:

nix run github:nix-community/nixos-anywhere \
--extra-experimental-features "nix-command flakes" \
-- --flake '.#homelab-0' nixos@192.168.1.100

make sure to replace with your own ip.

helm

This directory is used to store the helm configuration of the node and is managed using helmfile, which is a declarative spec for defining helm charts.

To install this on your cluster, you can simply use the following command.

helmfile apply

kustomize

Kustomize allows you to manage multiple manifest files in a Kustomize.yaml, which also allows you to override values if you need to.

I don't use Kustomize that much in the video, but it's a tool I do often use and is available in kubectl.