The setup where you can officially say: "I use Nix and Neovim, btw" 😎
This is an opinionated Nix-based setup and dotfiles to have a hyper-personalised and consistent development environment across every machine. This setup currently runs on Linux, MacOS and even within containers, EC2 machines and VMs.
The configuration of each application has two ideas in mind:
- It needs to aid how quickly I can develop. Where possible, Vim keybinds are used. There are many CLI tools used to speed up my workflow. I primarily work within the terminal, here are some of the tools I use to make things smooth: Neovim, fzf, ripgrep, bat, exa, zoxide and many more.
- It needs to look good. There are too many setups that optimise only for speed, why not have speed and looks?
| Tools | |
|---|---|
| Window Manager | Hyprland |
| Terminal | Ghostty |
| Status Bar / Notifier / Launcher / lockscreens | noctalia-shell |
| Display Manager | tuigreet |
| File Manager | Yazi + Nautilus |
| Shell | Zsh + Starship |
| Media Player | mpv |
| Text Editor | Neovim |
| Image Viewer | imv |
| Screenshot Software | Hyprshot |
This setup also include full disk encryption and user auth via Yubikeys. Secrets are maintained and stored via SOPs in a private repo.
Git clone to the root of your home directory:
cd ~
git clone https://github.com/okwilkins/.dotfilesTo install the setup for a given host run:
sudo nixos-rebuild switch --flake .#<INSERT HOST>├── certs | Collection of certificates to be installed.
├── config | Configuration globals used throughout the setup.
├── generators | Allows NixOS configurations to generate outputs for different target formats (ISOs, VMs, containers).
├── home | Home-manager applications and config files to be installed for the user.
│ ├── base | Config for ALL systems.
│ │ ├── core | Core config like shells and CLI tools.
│ │ ├── gui | Config for GUI-based application shared on all systems.
│ │ └── tui | Config for TUI-based application shared on all systems.
│ ├── darwin | Config for MacOS-based systems.
│ └── linux | Config for Linus-based systems.
├── hosts | Nix and hardware config for individual systems.
│ ├── home-aspen | Container-based setup for personal use.
│ ├── home-birch | NixOS setup for my personal laptop.
│ ├── home-oak | NixOS setup for my high powered desktop.
│ └── work-hamming | Nix Darwin setup for my work laptop.
├── modules | System-wide config for each system types.
├── outputs | Nix Flake outputs for each host.
└── overlays | Allows patching of any packages that maybe broken on a particular system.
A big thank you to the following people for their inspiration and help: