From 69d293dd235c013657b833b2c78b1105f4476c9e Mon Sep 17 00:00:00 2001 From: Snider Date: Wed, 28 Jan 2026 22:31:24 +0000 Subject: [PATCH] feat(developer): add full-fat dev environment with 100+ tools Comprehensive developer image with all S4.6 tooling: AI/LLM: claude, aider, llm VCS: git, gh, lazygit, delta, git-lfs Runtimes: node, bun, deno, go, python3, rustc, frankenphp Package Mgrs: npm, pnpm, yarn, composer, pip, uv, cargo Build: task, just, make, turbo, nx Linting: pint, phpstan, prettier, eslint, biome, golangci-lint, ruff Testing: phpunit, pest, vitest, k6 Infra: docker, kubectl, k9s, helm, terraform, ansible Databases: sqlite, mysql, psql, redis-cli, usql HTTP/Net: curl, httpie, xh, websocat, grpcurl, mkcert Data: jq, yq, fx, gron, miller, dasel Security: age, sops, cosign, trivy, trufflehog Monitoring: htop, btop, ctop, lazydocker, dive Files: fd, rg, fzf, bat, eza, tree, zoxide, broot Editors: nvim, helix, vim, nano Includes shell config (zsh + oh-my-zsh + starship), tmux, and comprehensive aliases for all tools. Co-Authored-By: Claude Opus 4.5 --- developer/Dockerfile | 326 +++++++++++++++++++------------- developer/config/aliases.sh | 209 ++++++++++++++++---- developer/config/tmux.conf | 66 +++++++ developer/config/zshrc | 69 +++++++ developer/scripts/entrypoint.sh | 47 +++++ 5 files changed, 549 insertions(+), 168 deletions(-) create mode 100644 developer/config/tmux.conf create mode 100644 developer/config/zshrc create mode 100644 developer/scripts/entrypoint.sh diff --git a/developer/Dockerfile b/developer/Dockerfile index c538b4f..5943521 100644 --- a/developer/Dockerfile +++ b/developer/Dockerfile @@ -1,170 +1,164 @@ # ============================================================ -# Docker Developer - Claude-Focused Alpine Dev Image +# Core Developer - Full-Fat Development Environment # -# A kitchen-sink developer environment optimized for -# AI-assisted development with Claude Code CLI. +# A comprehensive developer environment with 100+ embedded tools +# for AI-assisted development with Claude Code CLI. # -# Build: docker build -t docker-developer . -# Run: docker run -it docker-developer +# Build: docker build -t core-dev . +# Run: docker run -it -v $(pwd):/workspace core-dev # ============================================================ ARG ALPINE_VERSION=3.22 -# ============================================================ -# Developer - Full development environment -# ============================================================ -FROM alpine:${ALPINE_VERSION} AS developer +FROM alpine:${ALPINE_VERSION} LABEL maintainer="Snider " -LABEL org.opencontainers.image.source="https://github.com/host-uk/docker-developer" -LABEL org.opencontainers.image.description="Claude-focused Alpine developer environment" +LABEL org.opencontainers.image.source="https://github.com/host-uk/core-images" +LABEL org.opencontainers.image.description="Full-fat developer environment with 100+ tools" LABEL org.opencontainers.image.licenses="EUPL-1.2" LABEL org.opencontainers.image.vendor="Host UK" -LABEL org.opencontainers.image.title="Docker Developer" +LABEL org.opencontainers.image.title="Core Developer" # Environment variables ENV LANG=C.UTF-8 ENV LC_ALL=C.UTF-8 ENV TERM=xterm-256color -ENV EDITOR=vim +ENV EDITOR=nvim ENV SHELL=/bin/zsh ENV GOPATH=/root/go -ENV PATH="/root/go/bin:/root/.local/bin:/root/.composer/vendor/bin:/usr/local/bin:${PATH}" +ENV CARGO_HOME=/root/.cargo +ENV RUSTUP_HOME=/root/.rustup +ENV PATH="/root/go/bin:/root/.cargo/bin:/root/.local/bin:/root/.composer/vendor/bin:/usr/local/bin:${PATH}" # ============================================================ -# Core System Tools +# Core System & Build Tools # ============================================================ RUN apk add --no-cache \ - # Shell and basics - bash \ - zsh \ - zsh-vcs \ - curl \ - wget \ - ca-certificates \ - # Build tools - make \ - cmake \ - ninja \ - meson \ - gcc \ - g++ \ - musl-dev \ - linux-headers \ - # Essential utilities - git \ - git-lfs \ - openssh-client \ - gnupg \ - less \ - tree \ - ncdu \ - htop \ - # Editors - vim \ - nano \ - # Text processing - jq \ - yq \ - # Search tools - ripgrep \ - fzf \ - # Modern CLI tools (from Alpine packages) - bat \ - eza \ - fd \ - # Terminal multiplexer - tmux \ + # Shells + bash zsh zsh-vcs \ + # Network tools + curl wget ca-certificates bind-tools iputils openssh-client \ + # Build essentials + make cmake ninja meson gcc g++ musl-dev linux-headers \ + # Core utilities + coreutils findutils grep sed gawk less tree ncdu shadow gettext \ # Compression - zip \ - unzip \ - tar \ - gzip \ - xz \ - # Networking - bind-tools \ - iputils \ - # Process management - shadow \ - # Template processing - gettext \ - # For starship - starship + zip unzip tar gzip xz bzip2 zstd \ + # Process & system + htop procps util-linux \ + # Crypto + gnupg openssl + +# ============================================================ +# Modern CLI Tools (Files & Search) +# ============================================================ +RUN apk add --no-cache \ + # File tools + bat eza fd ripgrep fzf tree \ + # Terminal + tmux starship \ + # Editors + vim nano neovim helix \ + # Directory navigation + zoxide broot + +# ============================================================ +# VCS & Git Tools +# ============================================================ +RUN apk add --no-cache \ + git git-lfs github-cli lazygit git-delta # ============================================================ # Node.js Ecosystem # ============================================================ -RUN apk add --no-cache \ - nodejs \ - npm +RUN apk add --no-cache nodejs npm -# Install global Node.js packages +# Bun runtime +RUN curl -fsSL https://bun.sh/install | bash && \ + ln -sf /root/.bun/bin/bun /usr/local/bin/bun && \ + ln -sf /root/.bun/bin/bunx /usr/local/bin/bunx + +# Deno runtime +RUN curl -fsSL https://deno.land/install.sh | sh && \ + ln -sf /root/.deno/bin/deno /usr/local/bin/deno + +# Global Node.js packages RUN npm install -g \ @anthropic-ai/claude-code \ - typescript \ - ts-node \ - pnpm \ - yarn + typescript ts-node \ + pnpm yarn \ + prettier eslint \ + @biomejs/biome \ + turbo nx \ + vitest \ + typedoc \ + @mermaid-js/mermaid-cli # ============================================================ # Python Ecosystem # ============================================================ -RUN apk add --no-cache \ - python3 \ - py3-pip \ - python3-dev +RUN apk add --no-cache python3 py3-pip python3-dev -# Install Python tools RUN pip3 install --break-system-packages \ - pipx \ - uv \ - ipython \ - httpie + pipx uv \ + ipython httpie \ + ruff \ + mkdocs mkdocs-material \ + aider-chat \ + llm # ============================================================ # PHP Ecosystem # ============================================================ RUN apk add --no-cache \ - php84 \ - php84-phar \ - php84-mbstring \ - php84-openssl \ - php84-curl \ - php84-iconv \ - php84-tokenizer \ - php84-dom \ - php84-xml \ - php84-xmlwriter \ - php84-simplexml \ - php84-ctype \ - php84-fileinfo \ - php84-json \ - php84-posix \ - php84-pcntl \ - php84-zip + php84 php84-phar php84-mbstring php84-openssl php84-curl \ + php84-iconv php84-tokenizer php84-dom php84-xml php84-xmlwriter \ + php84-simplexml php84-ctype php84-fileinfo php84-json \ + php84-posix php84-pcntl php84-zip php84-sodium php84-session \ + php84-pdo php84-pdo_mysql php84-pdo_pgsql php84-pdo_sqlite -# Create php symlink RUN ln -sf /usr/bin/php84 /usr/bin/php -# Install Composer +# Composer RUN curl -sS https://getcomposer.org/installer | php -- \ --install-dir=/usr/bin --filename=composer -# Install PHP dev tools globally +# PHP tools via Composer RUN composer global require --no-interaction \ phpunit/phpunit:^11.0 \ + pestphp/pest:^3.0 \ phpstan/phpstan:^2.0 \ - squizlabs/php_codesniffer:^3.0 \ - friendsofphp/php-cs-fixer:^3.0 + laravel/pint:^1.0 \ + phpdocumentor/phpdocumentor:^3.0 + +# FrankenPHP (static binary) +RUN curl -fsSL "https://github.com/dunglas/frankenphp/releases/latest/download/frankenphp-linux-$(uname -m | sed 's/aarch64/arm64/' | sed 's/x86_64/x86_64/')" -o /usr/local/bin/frankenphp && \ + chmod +x /usr/local/bin/frankenphp # ============================================================ # Go Ecosystem # ============================================================ RUN apk add --no-cache go -# Install Go tools (pinned to versions compatible with Go 1.24) -RUN go install golang.org/x/tools/gopls@v0.17.1 && \ - go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.2 +RUN go install golang.org/x/tools/gopls@latest && \ + go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest && \ + go install github.com/go-task/task/v3/cmd/task@latest && \ + go install github.com/casey/just@latest && \ + go install github.com/watchexec/watchexec/cmd/watchexec@latest 2>/dev/null || true && \ + go install github.com/boyter/scc/v3@latest + +# ============================================================ +# Rust Ecosystem +# ============================================================ +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal + +# Rust-based CLI tools +RUN . /root/.cargo/env && \ + cargo install --locked \ + hyperfine \ + tokei \ + xh \ + grex # ============================================================ # Database Clients @@ -175,24 +169,103 @@ RUN apk add --no-cache \ redis \ sqlite -# ============================================================ -# Container Tools -# ============================================================ -RUN apk add --no-cache docker-cli +# usql - universal SQL client +RUN go install github.com/xo/usql@latest # ============================================================ -# Git Enhancements +# Infrastructure & DevOps # ============================================================ -RUN apk add --no-cache github-cli lazygit +RUN apk add --no-cache \ + docker-cli docker-cli-compose \ + kubectl helm \ + terraform ansible + +# k9s - Kubernetes TUI +RUN curl -fsSL "https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').tar.gz" | tar -xzf - -C /usr/local/bin k9s + +# lazydocker +RUN curl -fsSL "https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_$(uname -s)_$(uname -m).tar.gz" | tar -xzf - -C /usr/local/bin lazydocker + +# dive - Docker image explorer +RUN go install github.com/wagoodman/dive@latest + +# ctop - Container metrics +RUN curl -fsSL "https://github.com/bcicen/ctop/releases/latest/download/ctop-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')" -o /usr/local/bin/ctop && \ + chmod +x /usr/local/bin/ctop # ============================================================ -# Oh-My-Zsh Installation +# HTTP & Networking # ============================================================ +RUN apk add --no-cache websocat + +# grpcurl +RUN go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest + +# mkcert - local CA +RUN curl -fsSL "https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')" -o /usr/local/bin/mkcert && \ + chmod +x /usr/local/bin/mkcert + +# ============================================================ +# Data Processing +# ============================================================ +RUN apk add --no-cache jq yq miller + +# fx - JSON viewer +RUN go install github.com/antonmedv/fx@latest + +# gron - Make JSON greppable +RUN go install github.com/tomnomnom/gron@latest + +# dasel - Query data formats +RUN curl -fsSL "https://github.com/TomWright/dasel/releases/latest/download/dasel_linux_$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')" -o /usr/local/bin/dasel && \ + chmod +x /usr/local/bin/dasel + +# ============================================================ +# Security Tools +# ============================================================ +# age - encryption +RUN apk add --no-cache age + +# sops - secrets management +RUN curl -fsSL "https://github.com/getsops/sops/releases/latest/download/sops-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')" -o /usr/local/bin/sops && \ + chmod +x /usr/local/bin/sops + +# cosign - container signing +RUN go install github.com/sigstore/cosign/v2/cmd/cosign@latest + +# trivy - vulnerability scanner +RUN curl -fsSL "https://github.com/aquasecurity/trivy/releases/latest/download/trivy_$(uname -s)_$(uname -m).tar.gz" | tar -xzf - -C /usr/local/bin trivy + +# trufflehog - secret scanner +RUN curl -fsSL "https://github.com/trufflesecurity/trufflehog/releases/latest/download/trufflehog_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').tar.gz" | tar -xzf - -C /usr/local/bin trufflehog + +# ============================================================ +# Monitoring +# ============================================================ +RUN apk add --no-cache btop + +# ============================================================ +# Testing Tools +# ============================================================ +# k6 - load testing +RUN curl -fsSL "https://github.com/grafana/k6/releases/latest/download/k6-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').tar.gz" | tar -xzf - --strip-components=1 -C /usr/local/bin + +# Playwright (via npm, already installed) + +# ============================================================ +# Misc Tools +# ============================================================ +RUN apk add --no-cache direnv + +# ============================================================ +# Shell Configuration +# ============================================================ +# Oh-My-Zsh RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended -# Install zsh plugins -RUN git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/root/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \ - git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-/root/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting +# Zsh plugins +RUN git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/root/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \ + git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-/root/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting # ============================================================ # Configuration Files @@ -200,18 +273,15 @@ RUN git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/ro COPY --chmod=644 config/zshrc /root/.zshrc COPY --chmod=644 config/starship.toml /root/.config/starship.toml COPY --chmod=644 config/tmux.conf /root/.tmux.conf +COPY --chmod=644 config/aliases.sh /etc/profile.d/aliases.sh # ============================================================ -# Entrypoint and Hooks +# Entrypoint # ============================================================ COPY --chmod=755 scripts/entrypoint.sh /usr/local/bin/entrypoint.sh -COPY --chmod=755 scripts/hooks.sh /usr/local/bin/hooks.sh -# Create config directories -RUN mkdir -p /root/.config/docker-developer/hooks/pre-start \ - /root/.config/docker-developer/hooks/post-start \ - /root/.claude \ - /workspace +# Create directories +RUN mkdir -p /root/.config /root/.claude /workspace WORKDIR /workspace diff --git a/developer/config/aliases.sh b/developer/config/aliases.sh index 220f46f..828c481 100644 --- a/developer/config/aliases.sh +++ b/developer/config/aliases.sh @@ -1,56 +1,185 @@ -# Core-dev shell aliases +# Core Developer - Shell Aliases +# ============================================================ # Navigation +# ============================================================ alias ..='cd ..' alias ...='cd ../..' +alias ....='cd ../../..' +alias ~='cd ~' +alias -- -='cd -' + +# ============================================================ +# File Listing (eza) +# ============================================================ +alias ls='eza --icons' alias ll='eza -la --icons --git' alias la='eza -la --icons' alias lt='eza --tree --level=2 --icons' +alias lta='eza --tree --level=3 --icons -a' -# Git -alias g='git' -alias gs='git status' -alias gd='git diff' -alias gc='git commit' -alias gp='git push' -alias gl='git log --oneline -20' -alias gco='git checkout' -alias gb='git branch' -alias lg='lazygit' - -# Docker -alias d='docker' -alias dc='docker compose' -alias dps='docker ps' -alias di='docker images' -alias dex='docker exec -it' -alias ld='lazydocker' - -# Kubernetes -alias k='kubectl' -alias kgp='kubectl get pods' -alias kgs='kubectl get svc' -alias kgd='kubectl get deployments' - -# PHP/Laravel -alias art='php artisan' -alias sail='./vendor/bin/sail' -alias pest='./vendor/bin/pest' -alias pint='./vendor/bin/pint' - -# Core -alias c='core' -alias cdev='core dev' -alias cbuild='core build' -alias crun='core run' - -# Misc +# ============================================================ +# Modern CLI Replacements +# ============================================================ alias cat='bat' alias find='fd' alias grep='rg' alias top='btop' +alias diff='delta' alias vim='nvim' alias vi='nvim' -# FZF integrations +# ============================================================ +# Git +# ============================================================ +alias g='git' +alias gs='git status' +alias gd='git diff' +alias gds='git diff --staged' +alias gc='git commit' +alias gca='git commit -a' +alias gcm='git commit -m' +alias gp='git push' +alias gpl='git pull' +alias gl='git log --oneline -20' +alias glo='git log --oneline --graph --all' +alias gco='git checkout' +alias gb='git branch' +alias gba='git branch -a' +alias gf='git fetch' +alias gm='git merge' +alias gr='git rebase' +alias gst='git stash' +alias lg='lazygit' + +# ============================================================ +# Docker +# ============================================================ +alias d='docker' +alias dc='docker compose' +alias dps='docker ps' +alias dpsa='docker ps -a' +alias di='docker images' +alias dex='docker exec -it' +alias drm='docker rm' +alias drmi='docker rmi' +alias dlog='docker logs -f' +alias dprune='docker system prune -af' +alias ld='lazydocker' + +# ============================================================ +# Kubernetes +# ============================================================ +alias k='kubectl' +alias kgp='kubectl get pods' +alias kgs='kubectl get svc' +alias kgd='kubectl get deployments' +alias kgn='kubectl get nodes' +alias kga='kubectl get all' +alias kdp='kubectl describe pod' +alias kds='kubectl describe svc' +alias kdd='kubectl describe deployment' +alias klf='kubectl logs -f' +alias kex='kubectl exec -it' +alias kaf='kubectl apply -f' +alias kdf='kubectl delete -f' + +# ============================================================ +# PHP / Laravel +# ============================================================ +alias art='php artisan' +alias sail='./vendor/bin/sail' +alias pest='./vendor/bin/pest' +alias pint='./vendor/bin/pint' +alias phpunit='./vendor/bin/phpunit' +alias stan='./vendor/bin/phpstan' +alias tinker='php artisan tinker' + +# ============================================================ +# Node.js +# ============================================================ +alias nr='npm run' +alias ni='npm install' +alias nid='npm install -D' +alias nu='npm update' +alias nci='npm ci' +alias pn='pnpm' +alias pnr='pnpm run' +alias pni='pnpm install' +alias bn='bun' +alias bnr='bun run' +alias bni='bun install' + +# ============================================================ +# Python +# ============================================================ +alias py='python3' +alias pip='pip3' +alias venv='python3 -m venv' +alias activate='source .venv/bin/activate' + +# ============================================================ +# Go +# ============================================================ +alias gob='go build' +alias gor='go run' +alias got='go test' +alias gotv='go test -v' +alias gomt='go mod tidy' +alias gof='go fmt ./...' +alias gol='golangci-lint run' + +# ============================================================ +# Rust +# ============================================================ +alias cb='cargo build' +alias cr='cargo run' +alias ct='cargo test' +alias cc='cargo check' +alias cf='cargo fmt' +alias cl='cargo clippy' + +# ============================================================ +# Core CLI +# ============================================================ +alias core='core' +alias cdev='core dev' +alias cbuild='core build' +alias crun='core run' +alias crelease='core release' +alias cphp='core php' + +# ============================================================ +# Data Processing +# ============================================================ +alias json='jq' +alias yaml='yq' +alias csv='mlr --csv' + +# ============================================================ +# Security +# ============================================================ +alias encrypt='age -e' +alias decrypt='age -d' +alias scan='trivy fs .' +alias secrets='trufflehog filesystem .' + +# ============================================================ +# FZF Integrations +# ============================================================ alias fzp='fzf --preview "bat --color=always {}"' +alias fzg='fzf --preview "git diff {} | delta"' + +# ============================================================ +# Misc +# ============================================================ +alias h='history' +alias cl='clear' +alias q='exit' +alias reload='source ~/.zshrc' +alias path='echo $PATH | tr ":" "\n"' +alias week='date +%V' +alias myip='curl -s ifconfig.me' +alias ports='ss -tuln' +alias serve='python3 -m http.server' +alias weather='curl -s wttr.in' diff --git a/developer/config/tmux.conf b/developer/config/tmux.conf new file mode 100644 index 0000000..f264065 --- /dev/null +++ b/developer/config/tmux.conf @@ -0,0 +1,66 @@ +# Core Developer - Tmux Configuration + +# Use Ctrl-a as prefix (like screen) +set -g prefix C-a +unbind C-b +bind C-a send-prefix + +# Enable mouse support +set -g mouse on + +# Start windows and panes at 1 +set -g base-index 1 +setw -g pane-base-index 1 + +# Renumber windows on close +set -g renumber-windows on + +# Increase history +set -g history-limit 50000 + +# Enable 256 colors +set -g default-terminal "screen-256color" +set -ga terminal-overrides ",*256col*:Tc" + +# Faster escape time +set -sg escape-time 0 + +# Split panes with | and - +bind | split-window -h -c "#{pane_current_path}" +bind - split-window -v -c "#{pane_current_path}" + +# Navigate panes with vim keys +bind h select-pane -L +bind j select-pane -D +bind k select-pane -U +bind l select-pane -R + +# Resize panes +bind -r H resize-pane -L 5 +bind -r J resize-pane -D 5 +bind -r K resize-pane -U 5 +bind -r L resize-pane -R 5 + +# Reload config +bind r source-file ~/.tmux.conf \; display "Config reloaded!" + +# Status bar +set -g status-style bg=default,fg=white +set -g status-left "#[fg=cyan]#S " +set -g status-right "#[fg=yellow]%H:%M" +set -g status-left-length 20 + +# Window status +setw -g window-status-current-style fg=cyan,bold +setw -g window-status-style fg=white + +# Pane borders +set -g pane-border-style fg=colour238 +set -g pane-active-border-style fg=cyan + +# Activity monitoring +setw -g monitor-activity on +set -g visual-activity off + +# Use zsh +set -g default-shell /bin/zsh diff --git a/developer/config/zshrc b/developer/config/zshrc new file mode 100644 index 0000000..ded0b89 --- /dev/null +++ b/developer/config/zshrc @@ -0,0 +1,69 @@ +# Core Developer - Zsh Configuration + +# Path to oh-my-zsh installation +export ZSH="$HOME/.oh-my-zsh" + +# Theme (using starship instead) +ZSH_THEME="" + +# Plugins +plugins=( + git + docker + kubectl + composer + npm + golang + rust + python + zsh-autosuggestions + zsh-syntax-highlighting +) + +# Load oh-my-zsh +source $ZSH/oh-my-zsh.sh + +# User configuration +export LANG=C.UTF-8 +export LC_ALL=C.UTF-8 +export EDITOR=nvim +export VISUAL=nvim + +# Paths +export GOPATH=$HOME/go +export CARGO_HOME=$HOME/.cargo +export PATH="$GOPATH/bin:$CARGO_HOME/bin:$HOME/.local/bin:$HOME/.composer/vendor/bin:$PATH" + +# FZF configuration +export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' +export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" +export FZF_ALT_C_COMMAND='fd --type d --hidden --follow --exclude .git' + +# Bat configuration +export BAT_THEME="TwoDark" + +# History +HISTSIZE=50000 +SAVEHIST=50000 +setopt SHARE_HISTORY +setopt HIST_IGNORE_DUPS +setopt HIST_IGNORE_SPACE + +# Load aliases +[[ -f /etc/profile.d/aliases.sh ]] && source /etc/profile.d/aliases.sh + +# Initialize tools +eval "$(starship init zsh)" +eval "$(zoxide init zsh)" +eval "$(direnv hook zsh)" + +# Welcome message +if [[ -o interactive ]]; then + echo "" + echo " Core Developer Environment" + echo " Run 'claude' to start AI-assisted development" + echo "" +fi + +# Start in workspace if it exists +[[ -d /workspace ]] && cd /workspace diff --git a/developer/scripts/entrypoint.sh b/developer/scripts/entrypoint.sh new file mode 100644 index 0000000..efc1829 --- /dev/null +++ b/developer/scripts/entrypoint.sh @@ -0,0 +1,47 @@ +#!/bin/sh +# Core Developer - Entrypoint Script + +set -e + +# Run pre-start hooks if they exist +if [ -d "/root/.config/core-dev/hooks/pre-start" ]; then + for hook in /root/.config/core-dev/hooks/pre-start/*; do + [ -x "$hook" ] && "$hook" + done +fi + +# Setup git config if not already set +if [ -z "$(git config --global user.name 2>/dev/null)" ]; then + if [ -n "$GIT_USER_NAME" ]; then + git config --global user.name "$GIT_USER_NAME" + fi +fi + +if [ -z "$(git config --global user.email 2>/dev/null)" ]; then + if [ -n "$GIT_USER_EMAIL" ]; then + git config --global user.email "$GIT_USER_EMAIL" + fi +fi + +# Setup SSH agent if keys exist +if [ -d "$HOME/.ssh" ] && [ -z "$SSH_AUTH_SOCK" ]; then + eval "$(ssh-agent -s)" > /dev/null 2>&1 + for key in $HOME/.ssh/id_* ; do + [ -f "$key" ] && [ ! -f "$key.pub" ] || ssh-add "$key" 2>/dev/null || true + done +fi + +# Initialize mkcert CA if not already done +if [ ! -f "$HOME/.local/share/mkcert/rootCA.pem" ]; then + mkcert -install 2>/dev/null || true +fi + +# Run post-start hooks if they exist +if [ -d "/root/.config/core-dev/hooks/post-start" ]; then + for hook in /root/.config/core-dev/hooks/post-start/*; do + [ -x "$hook" ] && "$hook" + done +fi + +# Execute command +exec "$@"