My development setup tools and dotfiles.
| Tool / Environment | Description |
|---|---|
| OS | NixOS |
| Terminal | WezTerm |
| Multiplexer | tmux |
| Text Editor | neovim |
| Shell | zsh |
| Window Manager | Hyprland |
| Display Manager | tuigreet |
To replicate my setup:
- Install NixOS: Follow the official installation guide or manual.
- Add a new user to configuration.nix, add
gitandvimto pkgs. - Clone this repository.
- Change
hardware-configuration.nixfile for your ownhost. - Add the new hostname to flake.nix
- Change version number if necessary
- Run the
nixos-rebuild switch --flake ./command while in the cloned repository directory. - Copy your Pictures folder to your home directory.
git clone https://github.com/sa-akhavani/dotfiles.git && cd dotfiles
Generate new pair of ssh keys `ssh-keygen -t ed25519`
sudo nixos-rebuild switch --flake .#<hostname>
cp -r ./Pictures ~/I was an Ubuntu user for a long time (7+ years) but eventually decided to migrate to Arch Linux. Loved Arch Linux because of the amount of control I had in it. But my os and packages broke multiple times due to updates which was really frustrating. That's why I decided to switch to NixOS and try the declarative approach.
- Fix tmux continuum plugin issues
- Update tmux status bar
- Use walker app manager instead of fuzzel
- Modularize home.nix and move most of it to
modules/programs
While setting up the Spotify client for Linux, I encountered a few quirks. If you're using NetworkManager with iwd together (don't do that:D), you have to stop NetworkManager service to be able to use spotify.
Also, hyprland windows don't have a menu. bar. To toggle offline mode, you can press Ctrl-Shift-o.
I use FiraCode font mainly.
Do not install patched nerdfonts. I install FiraCode alone, then install
Symbols Nerd Font Mono separately from their releases.
check: https://github.com/ryanoasis/nerd-fonts/releases
You need to install ydotool and fusuma and configure them.
If you are using nix-rebuild switch but having issues with path not found for modules that are defined in a relative path and imported in configuration.nix or flake.nix, the issue is that those files are not "commited" or "tracked" in the git repository. Commit or add them and then run the command again!