Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,100 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Description

Welcome to my overengineerd configuration for my computer systems. A concoction of my better hallucinations (to clarify it's my own hallucinations), very carefully bashed together to (hopefully) do something that is partially useful. I've made this public primarily so that it can be used as a referance. Credits are always nice, but not at all a requirement I've based large parts of it on the work of others (see the Inspiration section bellow) So it feels like the only right thing to do. (and also so that I can install it faster on my friends computers when they happen to looking the other way)

Caution

This config is not a finished product, and will change as a continue to learn about nix. Things will be modified, updated, added, removed and restructured without warning.

I'm not gonna tell you not to just run it, but I'll warn you that there's a good chance that it will break. This config is made for my machines, that have their own quirks. So make sure you backup your data before trying.

If there's anything you take from this, (either figuratively or literally) I'm particularly proud of my homelab setup and especially the media server part modules/nixos/homelab. it is fully declarative. In theory, this means you should be able to just copy the configuration and end up with the exact same setup on your machine. This is mostly made possible by declarr, a little side project of mine. It acts as a lightweight syncing engine, for managing the *arr suite, sonarr, radarr, (lidarr), seerr. Technically also jellyfin but that is only to fill in the cracks of declarative-jellyfin a truly amazing project, but its limited in its approach. (Ik about jellarr, but it's also limited in its approach)

document

Features

A list of some of the more notable features

  • homelab, fully declarative
    • media server + full *arr suite
    • configured using declarr, a (relatively) simple syncing script.
  • home-manager, used to configure users
  • impermanence, everything is wiped in reboot, only /persist actually persists
  • modular, each thing is it's own module that you can enable
    • nixos modules are in modules/nixos
    • home-manager modules are in modules/home
  • disko, for declarative disks
  • file hierarchy based hosts and users
    • logic in hosts/default.nix
    • machines defined in hosts/${host name}
    • users defined in hosts/${host name}/users/${user name}
  • ags, to create my top bar
  • stylix, for system styling
    • although I'm moving away from this, I've noticed that I like the defaults
  • custom neovim config using mnw, a simple wrapper around neovim
  • nix-portable, for when you don't have nix nor root
    • probably doesn't work atm, been some time since i used it
  • sops-nix, used for declarative secrets
    • stored (encrypted) in /secrets

Install

Create install iso

# see /parts/isos for more info
cd $NIXOS_CONFIG_PATH # where this repo is located

# build image
sudo nix build .#images.minimal-installer

# move to usb formatted with ventoy
sudo mkdir /ventoy

usb_drive=/dev/sdb1
sudo mount $usb_drive /ventoy

# move iso to usb
cp -rl $(eza --sort changed result/iso/*.iso | tail -n1) /ventoy

Inspiration

Some of the people that I've stolen from been inspired by. There's probably a lot more but I tend to forget to add them. Check out all "REF" and "FROM" tags throughout the code along with trusted_repos.py and my github stars for repos i typically check for examples in.

fufexan - mitchellh - workflow - notohh - hlissner - gvolpe

About

my nix config

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages