{ config, pkgs, ... }: { # Home Manager needs a bit of information about you and the paths it should manage home.username = "tbingmann"; home.homeDirectory = "/home/tbingmann"; # Basic configuration home.stateVersion = "25.05"; # Let Home Manager install and manage itself programs.home-manager.enable = true; # Packages to install home.packages = with pkgs; [ # Basic utilities coreutils curl wget htop ripgrep fd jq tree ]; # Bash configuration programs.bash = { enable = true; enableCompletion = true; # Shell aliases shellAliases = { ll = "ls -la"; ".." = "cd .."; "..." = "cd ../.."; "grep" = "grep --color=auto"; "rm" = "rm -i"; "cp" = "cp -i"; "mv" = "mv -i"; }; # Bash initialization initExtra = '' # Custom prompt PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' # Additional bash customizations export EDITOR=vim export PATH="$HOME/.local/bin:$PATH" # History settings export HISTSIZE=10000 export HISTFILESIZE=10000 export HISTCONTROL=ignoreboth:erasedups # Custom functions function mkcd() { mkdir -p "$1" && cd "$1" } ''; # History configuration historyControl = [ "erasedups" "ignoredups" "ignorespace" ]; historyFileSize = 10000; historySize = 10000; }; # Direnv configuration programs.direnv = { enable = true; nix-direnv.enable = true; # Add hook to .bashrc enableBashIntegration = true; # Configuration config = { whitelist = { prefix = [ "$HOME/projects" "$HOME/work" ]; }; }; }; # Git configuration (useful with direnv) programs.git = { enable = true; userName = "tbingmann"; userEmail = "tbingmann@example.com"; # Replace with actual email # Basic configuration extraConfig = { core.editor = "vim"; init.defaultBranch = "main"; pull.rebase = false; }; }; # Create default .envrc template in home directory home.file.".envrc-template" = { text = '' # This is a template .envrc file for use with direnv # Copy this to your project directory and customize as needed # Load environment variables from .env file if it exists if [ -f .env ]; then dotenv fi # Example: Set project-specific environment variables # export PROJECT_ROOT=$(pwd) # export PATH=$PROJECT_ROOT/bin:$PATH # Example: Use Nix shell # use nix # Example: Use flake # use flake ''; executable = false; }; }