it's my old nix dotfiles! (that i decided to share because i don't use it anymore and there's no secrets in hrre)

Files
README.md

haha funny dotfiles #

introduction #

welcome to this absolute hell of a repo! this is what happens when someone who doesn't know terribly much about nix decides to cobble something half-working together from a bunch of other dotfiles, turn their humble little home-manager config into a big sprawling multi-machine, multi-system and multi-user mess... and then completely jump off the deep end and switch what is arguably their main system at this point to using said mess.

that said, these dotfiles have helped me at least once already; i had to reset my system recently and apart from the pain that was bootstrapping nix for some reason, i was back up and running with a full system in a bit less then half an hour? (of which a solid 15 minutes were just nix downloading and building things)

there are still quite a few more things i want to do or things that i still have to set up manually as well (such as for example in that case, mac app store apps or restoring certain config files outside of xdg directories, i.e. native mac apps using /Library/ etc.), see future goals for more on that

structure #

this flake (more or less) follows a dendritic pattern, which means that every nix file in this project may be imported as a standalone top-level module as well. every .nix file is imported automatically from modules using import-tree.

in addition, we make use of the den framework, which lumps together different parts of system setup across nixos, darwin and home-manager configuration as aspects. at their core, aspects are like collections of features that can be applied across multiple different contexts; a simple example might be a laptop device class that automatically installs fluor on macos or enables upower and poweralertd services on nixos.

for this flake, the most important aspect is ky.unit, which applies all of my user-level default settings for me, such as configuring my default shell, including important programs, setting up all of my home-manager options, etc. at the same time, certain aspects are only meant to be included manually / on individual systems and thus deliberately left out of the ky.unit scope, like notetaking apps for example.

additionally, the defaults.nix module automatically includes certain "core" programs as well as basic nix setup in all contexts by default, and also automatically passes inputs' and self' to config domains where need.

all hosts and home-manager configs are configured in hosts and homes respectively, which den automatically wires up to be outputs of this flake, as well. each host has an aspect associated with it (such as stargazer for my mac mini or kynet for my arch + home-manager install) that can be used to further configure the individual system.

inspiration #

this entire repo essentially started off as me wanting to go system-wide with my home-manager config, which turned out to be quite difficult initially because i didn't really understand the nix module system (i'm not confident i do even now), so i definitely wouldn't be writing this from a usable system right now if it weren't for some of these projects and resources that have tremendously helped me bootstrap my nix journey.

resources #

  • zero to nix, which has helped me especially with the initial nix install
  • the NixOS wiki, which continues to be useful in deciphering the runes that are some packages on nixpkgs...
  • nix pills, which i'm pretty sure that at this point, i either have forgotten the majority of or simply internalised it without noticing
  • nixing homebrew, the blog post that got me into using home-manager to manage my dotfiles
  • davis haupt's blog post, which got me interested in configuring my systems using nix-darwin
  • the brew-nix library, which is honestly STILL one of the most underrated nix libs out there imo, even if i still just use plain old homebrew.casks in... too many places
  • vimjoyer's video on dendritic nix, which has put me on this current path of buzzwordmaxxing (/j)

other people's flakes #

  • misterio's nix starter configs, which served as a bit of a kickstart for me
  • clo4's dotfiles, especially back when i was still using blueprint
  • isabelroses' flake whose config i plagiarised took inspiration from quite frequently
  • the example flakes mentioned in den's readme, of which i mostly referred back to vic's own flake vix because it clicked the most with me
  • a lot of other repos that i checked out while looking for inspiration on flake structure, custom modules, etc.

future goals #

for this flake, i have way more things i want to do

tl;dr moar dendritix!! (specifically moving more stuff to their own dedicated aspects and including configuration files which are currently still done outside of this flake)