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
🔥 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 firstname.lastname@example.org: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!
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
flake.nix: Entrypoint for hosts and home configurations
global: Configurations that are globally applied to all my machines
optional: Configurations that some of my machines use
hosts: NixOS Configurations, accessible via
framework: Framework 12th gen laptop | Hyprland | eGPU 7900 XTX
home-manager: Most of my dotfiles configuration, user specific
Here is a list of the devices this repo is used to configure.
- OS: NixOS
- WM: Hyprland
- Shell: Fish
- Prompt: Starship
- Terminal: Alacritty
- Editor: Neovim (using LazyVim config)
- Colorscheme: Catppuccin for EVERYTHING!!!
- Fonts: Mono Lisa
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
lswith better syntax highlighting
- ripgrep: A faster
- navi: Interactive cheat sheet
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
- Dot icons created by Roundicons - Flaticon