A personal Nix flake configuration using Home Manager to provide a consistent development environment with useful tools and settings across different machines.
This configuration provides:
- Neovim configuration including modern plugins
- Shell environment with Zsh, Oh My Zsh, and Powerlevel10k theme
- Development tools including Git, Lazygit, and various Unix utilities
- Nix development tools and language server
- Claude Code integration via Google Vertex AI
-
Install Nix with flakes enabled:
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
-
Ensure you have
gitinstalled to clone this repository.
-
Clone this repository:
git clone https://github.com/Sarguru02/nix-dots ~/.config/home-manager cd ~/.config/home-manager
-
Important: Update the user configuration for your system by editing
configurations/home/sargurunathan.p.nix:me = { username = "your-username"; # Replace with your actual username fullname = "Your Full Name"; # Replace with your full name email = "your@email.com"; # Replace with your email };
-
Activate the configuration:
nix run
If you're not using the hostname sargurunathan.p, you have two options:
Create a new file in configurations/home/ with your username:
cp configurations/home/sargurunathan.p.nix configurations/home/your-username.nixThen edit the new file to update your personal information.
mv configurations/home/sargurunathan.p.nix configurations/home/your-username.nixThen edit the file to update your personal information.
This project uses just for task management. Run just to see all available commands:
just run- Activate the configurationjust update- Update the flake lock filejust check- Check the flake for errorsjust lint- Format Nix filesjust dev- Enter development shell
- Zsh with Oh My Zsh framework
- Powerlevel10k theme for beautiful prompts
- Syntax highlighting and autosuggestions
- Zoxide for smart directory jumping (
zcommand) - Shell aliases:
gfor git,lgfor lazygit
- Git with user configuration and lazygit integration
- Neovim with comprehensive NixVim configuration including:
- Modern colorscheme
- Mini.nvim plugins (pairs, surround, statusline, ai)
- Snacks.nvim plugins (dashboard, picker, lazygit)
- Treesitter for syntax highlighting
- Unix utilities: ripgrep, fd, sd, tree, bat, fzf, jq, btop
- Nix tools: nil language server, nixpkgs-fmt, omnix, cachix
- Terminal sharing: tmate for collaborative sessions
- Tmux for terminal multiplexing
This configuration includes Claude Code setup using Google Vertex AI Platform via the vertex flake.
├── configurations/home/ # Per-user configurations
│ └── sargurunathan.p.nix # Main user configuration
├── modules/
│ ├── flake/ # Flake-level modules
│ │ ├── activate-home.nix # Activation script
│ │ ├── devshell.nix # Development shell
│ │ └── toplevel.nix # Top-level flake configuration
│ └── home/ # Home Manager modules
│ ├── default.nix # Auto-imports all modules
│ ├── direnv.nix # Direnv configuration
│ ├── zellij/ # Zellij config files
│ │ ├── default.nix # Enables zellij
│ │ └── config.kdl # main zellij config
│ ├── gc.nix # Garbage collection settings
│ ├── git.nix # Git and Lazygit setup
│ ├── me.nix # User information module
│ ├── neovim/ # Neovim configuration
│ ├── nix-index.nix # Nix package index
│ ├── nix.nix # Nix settings
│ ├── packages.nix # Package definitions
│ └── shell.nix # Shell configuration
├── flake.nix # Main flake definition
├── flake.lock # Lock file for reproducible builds
└── justfile # Task runner commands
- If activation fails, ensure your username matches the configuration file name
- Check that Nix flakes are enabled in your Nix configuration
- Run
just checkto validate the flake before activation - Use
just devto enter a development shell for debugging
- Make some nice Zellij layouts.
- Vim-zellij navigator ???.
- Stylix for consistent theming.
- install ghostty through nix pkgs home manager.