- Nix 79.6%
- Emacs Lisp 18.6%
- Shell 0.8%
- CSS 0.6%
- YASnippet 0.4%
| assets | ||
| BullshitMachine | ||
| lib | ||
| modules | ||
| secrets | ||
| .envrc | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
| treefmt.nix | ||
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-darwinand 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 developon the repository. - Rekey all Agenix secrets via
agenix -rafter updatingsecrets/secrets.nixto 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.
- 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
- 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.