2024-03-13 06:55:17 -05:00
# Truxnell's homelab
2024-03-25 04:05:18 -05:00
[![NixOS ](https://img.shields.io/badge/NIXOS-5277C3.svg?style=for-the-badge&logo=NixOS&logoColor=white )](https://nixos.org)
2024-03-26 06:21:39 -05:00
[![NixOS ](https://img.shields.io/badge/NixOS-23.11-blue?style=for-the-badge&logo=nixos&logoColor=white )](https://nixos.org)
[![MIT License ](https://img.shields.io/github/license/truxnell/nix-config?style=for-the-badge )](https://github.com/truxnell/nix-config/blob/ci/LICENSE)
2024-03-25 03:54:22 -05:00
[![built with garnix ](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgarnix.io%2Fapi%2Fbadges%2Ftruxnell%2Fnix-config%3Fbranch%3Dmain )](https://garnix.io)
2024-03-13 06:55:17 -05:00
Leveraging nix, nix-os to apply machine and home configurations
## Background
Having used a variety of infracture as code solutions - and having found them lacking in some areas, it is time to give nix a go.
Frustrations with other methods tend to be bitrot and config drift - very annoying to want to do a quick disaster recovery and find your have different versions of modules/utilities, breaking changes in code you didnt catch, etc.
## Getting started
2024-03-15 04:11:01 -05:00
To Install
```
# nixos-rebuild switch --flake github:truxnell/nix-config#HOST
```
2024-03-13 06:55:17 -05:00
## Goals
- [ ] Learn nix
- [ ] Mostly reproduce features from my existing homelab
- [ ] Replace existing ubuntu-based 'NAS'
- [ ] Expand usage to other shell environments such as WSL, etc
- [ ] handle secrets - decide between sweet and simple SOPS or re-use my doppler setup.
## TODO
- [ ] Github Actions update fly.io instances (Bitwarden)
- [ ] Bring over hosts
2024-03-30 23:21:02 -05:00
- [x] DNS01 Raspi4
- [x] DNS02 Raspi4
2024-03-13 06:55:17 -05:00
- [ ] NAS
2024-03-30 23:21:02 -05:00
- [x] Latop
2024-03-31 05:40:11 -05:00
- [x] Gaming desktop
2024-03-13 06:55:17 -05:00
- [ ] WSL
- [ ] JJY emulator Raspi4
- [ ] Documentation!
2024-03-22 19:44:50 -05:00
- [ ] ssh_config build from computers?
2024-03-24 02:34:14 -05:00
- [ ] Modularise host to allow vm builds and hw builds
2024-03-13 06:55:17 -05:00
- [ ] Add license
- [ ] Add taskfiles
## Network map
TBC
## Hardware
TBC
2024-03-27 01:39:44 -05:00
## Checklist
### Adding new node
- Ensure secrets are grabbed from note and all sops re-encrypte with task sops:re-encrypt
- Add to relevant github action workflows
2024-03-30 01:58:53 -05:00
- Add to .github/settings.yaml for PR checks
2024-03-27 01:39:44 -05:00
2024-03-13 06:55:17 -05:00
## Applying configuration changes on a local machine can be done as follows:
```sh
cd ~/dotfiles
sudo nixos-rebuild switch --flake .
# This will automatically pick the configuration name based on the hostname
```
Applying configuration changes to a remote machine can be done as follows:
```sh
cd ~/dotfiles
nixos-rebuild switch --flake .#nameOfMachine --target-host machineToSshInto --use-remote-sudo
```
2024-03-24 02:50:38 -05:00
## Hacking at nix files
Eval config to see what keys are being set.
```bash
nix eval .#nixosConfigurations.rickenbacker.config.security.sudo.WheelNeedsPassword
nix eval .#nixosConfigurations.rickenbacker.config.mySystem.security.wheelNeedsPassword
```
2024-03-31 05:40:11 -05:00
And browsing whats at a certain level in options.
```bash
nix eval .#nixosConfigurations.rickenbacker.config.home-manager.users.truxnell --apply builtins.attrNames --json
```
2024-03-24 02:50:38 -05:00
Quickly run a flake to see what the next error message is as you hack.
```bash
nixos-rebuild dry-run --flake . --fast --impure
```
2024-03-13 06:55:17 -05:00
## Links & References
- [Misterio77/nix-starter-config ](https://github.com/Misterio77/nix-starter-configs )
- [billimek/dotfiles ](https://github.com/billimek/dotfiles/ )
- [Erase your Darlings ](https://grahamc.com/blog/erase-your-darlings/ )
- [NixOS Flakes ](https://www.tweag.io/blog/2020-07-31-nixos-flakes/ )