Skip to content

rezarajan/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

124 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏠 Dotfiles

My personal configuration files for Arch Linux with Wayland, managed through Home Manager and traditional symlinks.

Tools & Apps

Neovim Hyprland Alacritty Home Manager


πŸ“¦ What's Inside

Core Applications

  • nvim/ - Neovim config based on kickstart.nvim with custom plugins (Oil, Yazi)
  • alacritty/ - Terminal emulator configuration
  • home-manager/ - Nix-based declarative configuration management

Wayland Environment

  • hypr/ - Hyprland compositor configuration
  • waybar/ - Wayland status bar
  • rofi/ - Application launcher
  • wlogout/ - Logout menu
  • dunst/ - Notification daemon
  • sddm/ - Display manager theme

Desktop Environment

Other Tools


πŸš€ Quick Start

Method 1: Home Manager (Recommended)

Home Manager provides declarative configuration management with Nix.

Initial Setup

# Install Nix (if not already installed)
curl -L https://nixos.org/nix/install | sh

# Bootstrap Home Manager
nix run home-manager/master -- init --switch

# Clone this repo
git clone https://github.com/yourusername/dotfiles.git ~/git/dotfiles
cd ~/git/dotfiles

# Link your home-manager config
ln -s ~/git/dotfiles/home-manager ~/.config/home-manager

# Apply configuration
home-manager switch

Update Configuration

cd ~/git/dotfiles
git pull
home-manager switch

Method 2: Traditional Symlinks

For configs not yet managed by Home Manager, use symlinks:

# Clone the repo
git clone https://github.com/yourusername/dotfiles.git ~/git/dotfiles

# Link individual configs
ln -sf ~/git/dotfiles/nvim ~/.config/nvim
ln -sf ~/git/dotfiles/alacritty ~/.config/alacritty
ln -sf ~/git/dotfiles/hypr ~/.config/hypr
ln -sf ~/git/dotfiles/waybar ~/.config/waybar
# ... and so on

πŸ“ Neovim Configuration

Features

  • ✨ Based on kickstart.nvim
  • 🎨 Catppuccin Latte colorscheme
  • πŸ“ Oil.nvim file manager
  • πŸ–ΌοΈ Yazi.nvim integration
  • ⚑ Custom keybindings and options

Structure

nvim/
β”œβ”€β”€ init.lua              # Base kickstart.nvim config
β”œβ”€β”€ lua/
β”‚   β”œβ”€β”€ custom/           # Your customizations
β”‚   β”‚   β”œβ”€β”€ options.lua   # Custom vim options
β”‚   β”‚   β”œβ”€β”€ keymaps.lua   # Custom keybindings
β”‚   β”‚   └── plugins/      # Custom plugins
β”‚   └── kickstart/        # Optional kickstart plugins
└── README-CUSTOM.md      # Detailed nvim documentation

Setup

# Link config
ln -sf ~/git/dotfiles/nvim ~/.config/nvim

# Open Neovim (plugins will auto-install)
nvim

Update from Upstream

Pull latest kickstart.nvim changes automatically:

cd ~/git/dotfiles
git subtree pull --prefix nvim https://github.com/nvim-lua/kickstart.nvim.git master --squash

Or use the provided script:

cd ~/git/dotfiles
./scripts/update-nvim-subtree.sh
``

Your customizations in `lua/custom/` are preserved automatically!

See [nvim/CUSTOMIZING.md](nvim/CUSTOMIZING.md) for detailed information.

---

## πŸ—οΈ Home Manager Integration

### Current Status

Home Manager manages:
- Core utilities and packages
- Shell configuration
- Environment variables
- Session paths

### File Structure

home-manager/ β”œβ”€β”€ home.nix # Main configuration β”œβ”€β”€ pkgs.nix # Package definitions (if exists) β”œβ”€β”€ nixgl.nix # Graphics-based packages (required for non nix-os installs) └── dotfiles/ # Customizations to installed packages


### Configuration Example

Edit `home-manager/home.nix`:

```nix
{
  home.packages = with pkgs; [
    neovim
    alacritty
    # ... your packages
  ];

  programs.git = {
    enable = true;
    userName = "Your Name";
    userEmail = "your.email@example.com";
  };
}

Adding Neovim to Home Manager

Add to home-manager/home.nix:

xdg.configFile."nvim".source = config.lib.file.mkOutOfStoreSymlink 
  "${config.home.homeDirectory}/git/dotfiles/nvim";

This creates a symlink from ~/.config/nvim to ~/git/dotfiles/nvim.


πŸ”§ Configuration Tips

Linking Configs to ~/.config

# Single config
ln -sf ~/git/dotfiles/<config-name> ~/.config/<config-name>

# Multiple configs
for dir in nvim alacritty hypr waybar rofi; do
  ln -sf ~/git/dotfiles/$dir ~/.config/$dir
done

Managing Secrets

Never commit secrets! Use:

  • Environment variables
  • ~/.config/<app>/local.conf (add to .gitignore)
  • sops-nix for Home Manager

πŸ“‹ TODO

  • Move all pre-existing modules to home-manager
  • Move nixGL configuration to its own module
  • Restructure Neovim config for upstream tracking
  • Refactor packages code to include common modules and further customizations
    • Useful when deploying to different machines for personal or development use
  • Document Hyprland setup fully
  • Add screenshots and demos

πŸ“„ License

See LICENSE file.


πŸ™ Credits

  • kickstart.nvim - Neovim configuration base
  • Nix & Home Manager - Configuration management
  • All the amazing open-source projects that make this possible

About

dotfiles with a home-manager focus

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors