My configuration will not be useful as is for many, and it’s never meant to be. I made all the configurations for my specific needs. You are welcome to have a look to understand how I work, how to configure with Nix, etc. I will check Issues and Pull Requests, but may not take in suggestions and configurations.
Nix is used for both NixOS and macOS for my configuration. You can check out both configurations here. All the configurations are based on Nix Flake.
For NixOS, I use Nix ecosystem extensively. In order to allow working in various environments, I heavily depend on home-manager setup rather than NixOS configuration.
NOTE: I rarely use macOS these days, and thus you may find some stale configuration. For macOS, I use nix-darwin and home-manager to configure.
NOTE: I have not been using this at all, and many of the configurations are broken at this point. For the UTM setup for VM on macOS, you can find more in machine-setup/mbp-utm/README.org. Other VM solutions may also be added as I get to test more.
The idea is to ensure I have all the $HOME setup defined declaratively, while allowing some imperative adjustments when and if necessary. Also, it is designed to work with various machines and environments, so that most of the configurations can be shared among the different environments, but still there would be some additional configurations made possible. (Or simply duplicating some resources.)
Most of the configurations are made so that they can be used for various machines and user setup. You can find modules/ directory, where I define specific functionality in a single file, such as user-config/modules/music/spotify.nix.
You can find the actual configurations in various .nix files in this repository. Here is a list of items that are worth clarifying for anyone keen to understand how I work in general.
I mainly use Emacs for any coding tasks, and many more (note taking, task management, email, etc.). All of my Emacs configurations are NOT in this repository, and I manage them in a separate repository (private as of now, maybe to be open sourced in future). With my Emacs, I use Evil key bindings along with Emacs bindings. I use both Emacs and Vi bindings all the time, and thus NeoVim is also another platform I sometimes fall back to. I do have VSCode and other editors installed and use it occasionally, but quite rare in these days.
I used to use various solutions, but now my main driver is Ghostty. It is performant and does everything I need well and cleanly. Before Ghostty, I used to use Alacritty and tmux, but I do not feel the need anymore. I also have Kitty available, but I do not use it.
Here is the list of other tools I use for the key components of each OS.
| 🐱 | macOS | NixOS |
|---|---|---|
| Window Management | yabai | niri |
| Shortcut | skhd | Xremap |
| Toolbar | macOS default | Waybar |
| App Launcher | Raycast | rofi |
| Browser | Zen Browser | Zen Browser |
