These are my dotfiles, i.e., the configurations for my systems and tools, structured as a Nix flake, which makes them easy to install and reproduce.
There are many like it, but these ones are mine.
Documentation | Getting Started | Showcase | Notable Features | FAQ | Contributing
NixOS Desktops with
- Hyprland with a bunch of plugins
- Almost a full DE based on AGS
- My own system for modal keymaps
- A powerful theming system
- Full Disk Encryption on ZFS
- Easy Deployment
NixOS Servers with
- Remote unlocking during boot
- Impermanence
- Full Disk Encryption on ZFS
- Easy Deployment
macOS with
- Yabai tiling window manager
- SketchyBar
- skhd for model keymaps
- My own theming system
My powerful Fish-based shell environment.
Chroma is my powerful theming system for Home-Manager. It supports coordinating theme switches across many applications, without rebuilding or switching your Home configuration and is highly extensible.
Mage is my abstraction on top of Agenix to make secret management easier and require less configuration.
Plate is my own simple provisioning framework. It supports installing configurations on remote systems using nixos-anywhere or building your very own installation image that comes with the system configuration of yourself. To this end, it comes with a custom text-based installer.
My framework for structuring my (and possibly your!) Flake based on the structure of Nix files in the file tree. It removes the need to manually import every file and loads them automatically instead. Additionally, it adds useful functionality in the form of flake-parts modules.
This repository can be seperated into two primary components:
- My own personal configurations set up to my liking
- A framework for building your own Flake that mine is built on as well
However, my own configuration is also built to be highly modular, so you can easily re-use any parts that you like. While the Flake framework is designed to be generic, my own configurations are not. That means that if you have similar requirements as I, you may find them useful, but if yours are wildly different you may not. Supporting every possible use case is not a goal for my own configuration. Or, you might just want to peruse the flake to get some inpiration for your own.
To get started on using my configuration, please see the Getting Started page.
At this time, some of the features in my Flake are still under development, even though speed of development has slowed.
I am intentionally not versioning it and make no promises about the stability of any particular API.
That said, I'll try to make changes to the master
in a backwards-compitable fashion where possible and not to break things too much.
Active development happens on branches where changes might be more common.
Additionally, breaking changes should be documented in the Changelog.
Still, if you rely on my Flake, be sure to use a particular version and be prepared to occasionally make some changes when upgrading to a new commit.
See LICENSE.md.
See CONTRIBUTING.md.
These dotfiles reuse parts of various others' configurations and are inspired by many more.
In particular, configuration from the following repositories was used:
- FelixKratz' dotfiles from which I initially copied the skhd, yabai and SketchyBar config, available under the terms of GPLv3
- ghostx31's dotfiles whose Wezterm config I am using
- hunterliao29's Apple Music plugin for sketchybar
- khaneliman's dotfiles from where I took some sketchybar configuration
- yuanw's nix-home which is the origin of my icalBuddy derivation
- EphraimSiegfried's Calendar plugin for Sketchybar
- Prasanthrangan's Hyprdots which is the origin for many of my Hyprland-related configurations licensed under the terms of GPLv3
Additionally, I learned a lot from these repositories, listed in no particular order:
Special thanks also go to the creators of the various tools and programs that I use in my configuration.
If you believe you were missed in the list above, please let me know.