Skip to content

Repository files navigation

.dotfiles

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:

  1. 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.
  2. It needs to look good. There are too many setups that optimise only for speed, why not have speed and looks?

Components

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.

Screenshots

Alt Text Alt Text Alt Text

Getting Started

Git clone to the root of your home directory:

cd ~
git clone https://github.com/okwilkins/.dotfiles

To install the setup for a given host run:

sudo nixos-rebuild switch --flake .#<INSERT HOST>

Project Structure

├── 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.

Thanks To

A big thank you to the following people for their inspiration and help:

About

My personal Nix dotfiles for Linux and MacOS.

Topics

Resources

Stars

42 stars

Watchers

3 watching

Forks

Contributors

Languages