My latest iteration of my dotfiles, where I am now using a Laptop as my main development machine (Framework). I’m also using Hyprland as my window manager. Most importantly using NixOS and home-manager to declaratively define the state of my machine i.e. what packages to install, dotfiles.
CURRENTLY A WIP
š My dotfiles repo, setup using nixos/home-manager
Install
š„ I wouldn’t recommend just blinding using my dotfiles. They are setup for my specific use-case. I think you’re off using this repo as reference to create your own dotfiles.
git clone [email protected]:hmajid2301/dotfiles.git ~/dotfiles/
cd dotfiles
nix develop
# To build system configuration
sudo nixos-rebuild --flake .#framework
# To build user configuration
home-manager --flake .#framework
You can read more about my dotfiles and development workflows on my blog here (#ShamelessPlug).
Note my dotfiles are almost always changing!
Features
Some features of my dotfiles:
- Structured to allow multiple NixOS configurations, including desktop, laptop
- Declarative config including themes, wallpapers and nix-colors
- Opt-in persistance through impermanence + blank snapshot
- Delete files on boot
- Encrypted btrfs partition
- sops-nix for secrets management
- Different environments like hyprland and gnome
- Laptop setup with eGPU and vfio for playing games on windows
Structure
flake.nix
: Entrypoint for hosts and home configurationsnixos
:global
: Configurations that are globally applied to all my machinesoptional
: Configurations that some of my machines use
hosts
: NixOS Configurations, accessible vianixos-rebuild --flake
.framework
: Framework 12th gen laptop | Hyprland | eGPU 7900 XTX
home-manager
: Most of my dotfiles configuration, user specific
Devices
Here is a list of the devices this repo is used to configure.
Framework Laptop
Type | Program |
---|---|
Editor | NeoVim |
Launcher | Rofi |
Shell | Fish |
Status Bar | Waybar |
Terminal | Alacritty |
Window Manager | Hyprland |
- OS: NixOS
- WM: Hyprland
- Shell: Fish
- Prompt: Starship
- Terminal: Alacritty
- Editor: Neovim (using LazyVim config)
- Colorscheme: Catppuccin for EVERYTHING!!!
- Fonts: Mono Lisa
Applications
I basically just installed every package from Modern Unix.
CLI tools that I use often include:
- fzf: Fuzzy search tool
- Especially for reverse search in my terminal with fish shell
- zoxide: Smarter cd tool, integrated well with fzf, nvim and tmux
- exa: A replacement for
ls
with better syntax highlighting - ripgrep: A faster
grep
- navi: Interactive cheat sheet
Tmux
I manage my projects using tmux sessions with the tmux smart session manager.
Where I create a new session for each project I’m working on and then jump between them. Where a project might be:
- My Blog
- My Dotfiles
- Full stack application
- A window for each project i.e. GUI and API
Appendix
Inspired By
- https://github.com/Misterio77/nix-config (Heavily!)
- https://github.dev/yurihikari/garuda-sway-config (mostly scripts)