Personal dotfiles for all my machines.
  • Nix 79.6%
  • Emacs Lisp 18.6%
  • Shell 0.8%
  • CSS 0.6%
  • YASnippet 0.4%
Find a file
2026-01-19 23:38:08 -08:00
assets Fix README to look good 2025-12-31 01:20:05 -08:00
BullshitMachine Add yanker for VSCode and open up Minecraft port 2026-01-11 14:49:35 -08:00
lib Initial commit 2025-12-07 22:40:07 -08:00
modules Add kubectl to base programs 2026-01-19 23:38:08 -08:00
secrets Rekey secrets for StormPrism as well 2025-12-31 01:20:05 -08:00
.envrc Add ignore and direnv file 2025-12-11 00:50:06 -08:00
.gitignore Add ignore and direnv file 2025-12-11 00:50:06 -08:00
flake.lock Move AI tools to llm-agents.nix 2026-01-18 21:49:06 -08:00
flake.nix Move AI tools to llm-agents.nix 2026-01-18 21:49:06 -08:00
README.md Fix README to look good 2025-12-31 01:20:05 -08:00
treefmt.nix Add proper formatting framework via treefmt-nix 2026-01-02 20:51:43 -08:00

Fireflake logo

Dotfiles (a.k.a "Fireflake")

This is my personal dotfiles repo, managed entirely via home-manager, nix-darwin and Nix in general. I named it "Fireflake" because I needed some form of unique namespace for certain settings in my configurations.

I currently manage two machines from this repo:

  • "Bullshit Machine", my PC running NixOS on a Hyprland-based setup
  • "Storm Prism", my MacBook Pro running macOS, managed via nix-darwin and Homebrew, running Aerospace as a window manager.

Usage

This repo is not really useful for anyone except me, unless you're looking to draw inspiration from it to make your own (which I heavily encourage)! That being said, the gist is fairly simple:

  • Install Nix with flakes support. Use whatever installer you wish, but generally the Lix and Determinate Nix installer are the only ones that work nicely on macOS (for now, hopefully).
  • Run nix develop on the repository.
  • Rekey all Agenix secrets via agenix -r after updating secrets/secrets.nix to contain the new SSH public keychains for each host you're configuring.
  • Run nh {os/home} switch . at your leisure!

Structure

Fireflake generally splits configuration between the system and user-level via the split between the OS-specific configuration (on a per-host level) and home-manager configurations at the user level. The gist being:

  • Anything that is system-wide should exist in darwinConfigurations/nixosConfigurations.
  • Anything that is user-specific should exist in homeConfigurations.

The repo's Nix modules are split like this:

.
├── flake.nix              # Flake entrypoint
├── modules/
│   ├── home/              # Home-manager modules
│   │   ├── programs/      # Application configs (fish, doom, vscode, etc.)
│   │   ├── hypr/          # Hyprland configuration (for Linux only)
│   │   └── backup/        # Borgmatic setup (for automated backups)
│   └── darwin/            # nix-darwin modules
│       └── hosts/         # Per-machine configs
├── BullshitMachine/       # NixOS machine configuration (legacy, will move)
├── lib/                   # Utility functions (legacy, will move)
└── secrets/               # Age-encrypted secrets

Rice Buzzwords

For a brief overview of the general tools/theming I use, here's a quick list, with links to each relevant program/feature:

  • Catppuccin Mocha is set up across literally everything I use, using the Nix module when relevant.
  • Hyprland environment, with ashell and Hyprshell for a simple enough tiling DE on Linux.
  • Fish shell with custom functions and Starship prompt
  • Doom Emacs, with all its packages installed in the Nix store via nix-doom-emacs-unstraightened
    • While this was a cool experiment to see how declarative you can go with setting up configuration, I don't recommend this approach. You're far better off letting Doom Emacs install all the relevant packages and only managing the dotfiles via home-manager, not the whole installation. It was nice that it worked, though.
  • VS Code replicating my existing Doom Emacs/LazyVim setups using the power of vscode-which-key.
    • I am aware of VSpaceCode's existence. I may switch to it in the near future, for now I've just begun exploring a foray into using VSCode full-time.
  • A collection of CLI tools I love: ripgrep, fzf, bat, delta, yazi, Helix, xh, and more.
  • Jujutsu as my primary VCS tool, with Git installed as an obvious fallback.