🚀 NixOS Dotfiles - Balraj's Setup
"I use NixOS, btw" - and here's the proof!
Welcome to my NixOS configuration! This is my personal setup running on a Dell Latitude 7490, featuring a sleek Qtile window manager with a Tokyo Night theme aesthetic. Built for coding, gaming, and general tech tinkering.
📚 Documentation
New to this repo? Start here:
- ⚡ Quick Start Guide - Get up and running in minutes
- 🏗️ Architecture Overview - Understand how everything fits together
- 📦 Module Guide - Deep dive into each configuration module
📂 Repository Structure
nixos-dotfiles/
├── flake.nix # Main flake configuration
├── flake.lock # Dependency lock file
│
├── hosts/ # Host-specific configurations
│ └── nixos-btw/ # This machine's config
│ ├── default.nix # Entry point
│ ├── hardware-configuration.nix
│ └── home.nix # Home Manager config
│
├── modules/ # Reusable configuration modules
│ ├── nixos/ # System-level (requires sudo)
│ │ ├── core.nix # Boot, networking, users
│ │ ├── packages.nix # System packages & fonts
│ │ ├── services.nix # System services
│ │ └── wallpapers.nix # Custom wallpapers
│ │
│ └── home-manager/ # User-level (no sudo)
│ ├── apps.nix # User packages
│ ├── git.nix # Git configuration
│ ├── shell.nix # Bash configuration
│ └── devshell-scripts.nix # Dev environment scripts
│
├── config/ # Application dotfiles
│ ├── nvim/ # Neovim configuration
│ ├── qtile/ # Qtile WM configuration
│ ├── rofi/ # Rofi launcher
│ ├── picom/ # Compositor
│ └── kitty/ # Terminal emulator
│
└── docs/ # Documentation
├── ARCHITECTURE.md # System architecture
├── QUICK_START.md # Installation guide
└── MODULE_GUIDE.md # Module documentation
🎨 The Setup
OS: NixOS 25.05 (Stable)
WM: Qtile
Terminal: Kitty with Lilex Nerd Font
Editor: Neovim (heavily customized)
Launcher: Rofi
Compositor: Picom
Theme: Tokyo Night everywhere
✨ Features
- 🎯 Declarative Configuration: Everything is version-controlled and reproducible
- 🌊 Flakes-Based: Modern Nix flakes for dependency management
- 🏠 Home Manager Integration: User-level package and config management
- 🔧 LSP-Powered Neovim: Pre-configured for Lua, PHP, TypeScript, Rust, Zig, C/C++, Nix, Haskell, and more
- 🎨 Consistent Theming: Tokyo Night colors across all applications
- ⚡ Performance Optimized: Lightweight and snappy on a Dell Latitude 7490
- 🐳 Docker Ready: Rootless Docker setup included
📦 Key Applications
Development
- Neovim with LSP, Treesitter, Telescope, and Harpoon
- Kitty terminal with custom Tokyo Night theme
- Git + Lazygit + GitHub CLI
- Language servers for multiple languages (no Mason, pure system packages!)
- Zellij and Tmux for terminal multiplexing
Productivity
- Firefox as default browser
- LibreOffice suite
- Rofi for application launching
- Yazi terminal file manager
- Custom shell aliases for efficiency
System Tools
- Flatpak support for additional apps
- Tailscale for secure networking
- Blueman for Bluetooth management
- Dunst for notifications
- Screenshot tools (Maim + Slop)
🎯 Quick Start
For First-Time Users
-
Read the documentation first:
- Start with Quick Start Guide
- Understand the Architecture
- Review Module Guide for customization
-
Clone and customize:
git clone https://github.com/BalrajSinghGidda/nixos-dotfiles ~/nixos-dotfiles
cd ~/nixos-dotfiles
-
Important: Update for your system:
- Copy your hardware config:
sudo cp /etc/nixos/hardware-configuration.nix hosts/nixos-btw/ - Update username in
hosts/nixos-btw/home.nixandmodules/nixos/core.nix - Update Git info in
modules/home-manager/git.nix
- Copy your hardware config:
-
Apply the configuration:
sudo nixos-rebuild switch --flake ~/nixos-dotfiles/#nixos-btw
See the Quick Start Guide for detailed instructions!
🔥 Custom Aliases
I've set up some handy aliases that make life easier:
nc # Open Neovim in nixos-dotfiles directory
btw # Echo "I use NixOS, btw" (obviously)
nrs # Rebuild NixOS system
edit-config # Edit system configuration
ls # Enhanced ls with eza (icons, git status, etc.)
cd # Smart directory jumping with zoxide
⌨️ Neovim Keybinds
My Neovim setup is highly customized. Here are some key bindings:
Leader key: <Space>
Essential Binds
<leader>cd- Open file explorer<leader>ff- Find files (Telescope)<leader>fg- Live grep<leader>fb- Browse buffers<leader>a- Add file to Harpoon<C-e>- Toggle Harpoon menu<leader>u- Toggle Undotree
LSP
gd- Go to definitiongr- Show referencesK- Hover documentation<F2>- Rename symbol<F3>- Format code<F4>- Code actions
Check config/nvim/README.md for the complete keybind list!
🎨 Theme Customization
The Tokyo Night theme is applied consistently across:
- Qtile status bar and window decorations
- Kitty terminal colors
- Neovim syntax highlighting
- Rofi launcher
Want to change themes? Update the color schemes in:
config/kitty/kitty.confconfig/nvim/lua/plugins/colors.luaconfig/rofi/tokyonight.rasiconfig/qtile/config.py
🛠️ Development Environments
I use direnv for project-specific development environments. Create dev shells easily:
make-py-devshell # Python development shell
make-cpp-devshell # C++ development shell
📱 System Specs
My setup runs on:
- Model: Dell Latitude 7490
- CPU: Intel (with KVM support)
- Storage: NVMe SSD
- Audio: PipeWire + PulseAudio
- Bluetooth: Bluez with experimental features
🔧 Troubleshooting
Rebuilding fails?
sudo nixos-rebuild switch --flake ~/nixos-dotfiles/#nixos-btw --show-trace
LSP not working?
Check if language servers are installed:
# Example for Lua
which lua-language-server
# Example for PHP
which intelephense
Home Manager conflicts?
Home Manager creates backups with .backup extension. Check those files if configs aren't applying.
🛠️ Makefile Commands
This repo includes a Makefile for common tasks:
make switch # Apply configuration
make test # Test without switching
make build # Build without activating
make update # Update dependencies
make clean # Remove old generations
make check # Validate flake
make fmt # Format Nix files
🤝 Contributing
Want to improve this configuration? Check out CONTRIBUTING.md for guidelines!
Quick tips:
- Fork and customize for your own use
- Open issues for bugs or questions
- Submit PRs for improvements
- Keep changes focused and well-documented
📚 Resources
🤝 Contributing
Found something cool? Want to suggest improvements? Feel free to open an issue or PR!
📄 License
This is my personal configuration, but you're free to use, modify, and share it. No formal license - just have fun with it!
🎮 Fun Facts
- This config has been battle-tested through countless coding sessions
- The entire setup can be reproduced on any NixOS machine in minutes
- My terminal startup time shows
nitchstats because why not? 😎 - The 80-column guide in Neovim keeps my code clean and readable
📞 Connect
- GitHub: @AnonoyStar-Coder
- LinkedIn: Balraj Singh
- X (Twitter): @Balraj77306947
- Bluesky: @balraj.link
Made with ❤️ and lots of ☕ by Balraj Singh Gidda
P.S. Yes, I do use NixOS. And yes, I will tell you about it. 😄