77 lines
1.4 KiB
Nix
77 lines
1.4 KiB
Nix
# 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;
|
|
};
|
|
}
|
|
|