# Development tools and environment { inputs, lib, config, pkgs, ... }: { home.packages = with pkgs; [ # Version control git gh # GitHub CLI lazygit # Terminal UI for git # Languages and runtimes (add what you need) # python311 # nodejs_20 # go # rustc # cargo # Build tools gnumake cmake # Text editors / IDEs # neovim # vscode # Docker and containers (Linux only, macOS uses Docker Desktop) ] ++ lib.optionals pkgs.stdenv.isLinux [ # docker # docker-compose ]; # Git configuration for development programs.git = { enable = true; # TODO: Configure your git identity # userName = "Your Name"; # userEmail = "your.email@example.com"; extraConfig = { core.editor = "vim"; merge.conflictstyle = "diff3"; diff.algorithm = "histogram"; }; # Git aliases aliases = { st = "status"; co = "checkout"; br = "branch"; ci = "commit"; unstage = "reset HEAD --"; last = "log -1 HEAD"; lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; }; }; # GitHub CLI programs.gh = { enable = true; settings = { git_protocol = "ssh"; prompt = "enabled"; }; }; # Direnv for per-directory environments programs.direnv = { enable = true; nix-direnv.enable = true; }; }