# WSL2 Development Environment Setup ## 📁 Created Files | File | Lines | Description | |------|-------|-------------| | [wsl-dev-setup.sh](file:///c:/Users/wdd/Documents/IdeaProjects/RMDC-CLOUD/rmdc-continuous-integration/scripts/wsl/wsl-dev-setup.sh) | 1541 | 一键配置脚本(单文件,模块化函数设计) | ## 🏗️ Script Architecture ```mermaid graph TD A["main()"] --> B["detect_system()"] B --> C{"Module Dispatcher"} C --> D["setup_proxy()"] C --> E["setup_apt_mirror()"] C --> F["setup_locale()"] C --> G["install_base_tools()"] C --> H["install_zsh_terminal()"] C --> I["install_nerd_fonts()"] C --> J["install_modern_cli()"] C --> K["install_golang()"] C --> L["install_nodejs()"] C --> M["print_summary()"] H --> H1["_generate_zshrc()"] H --> H2["_generate_p10k()"] J --> J1["bat · eza · fd · rg"] J --> J2["fzf · zoxide · delta · lazygit"] K --> K1["_setup_go_env()"] L --> L1["_setup_fnm_env()"] ``` ## 📦 Module Details ### 1. Proxy (Clash Verge) - 设置 `http_proxy`, `https_proxy`, `all_proxy` 环境变量 - 提供 `proxy_on` / `proxy_off` 快捷函数 - 自动写入 `.bashrc`, `.zshrc`, `.profile` - 配置 Git 代理 ### 2. APT Mirror - **< 24.04**: 传统 `sources.list` 格式 - **≥ 24.04**: DEB822 `.sources` 格式 - 支持: 清华 TUNA / 中科大 USTC / 阿里云 ### 3. Terminal: Zsh + Zinit + Powerlevel10k - **Zinit** Turbo 延迟加载:启动 < 100ms - **Powerlevel10k** Rainbow 风格:Powerline 箭头分隔 + 彩色背景段 - **Instant Prompt**: 终端瞬时响应 - **Transient Prompt**: 历史命令显示简化 - **插件**: fast-syntax-highlighting, autosuggestions, completions, fzf-tab, history-substring-search, OMZ git/sudo/extract snippets ### 4. Go + Node.js - Go: 自动检测最新版,`golang.google.cn` 镜像下载,`goproxy.cn` 模块代理 - Node.js: **fnm** (Rust 编写,比 nvm 快 40x),npm 镜像 `npmmirror.com` - 环境变量写入: `/etc/profile.d/`, `.bashrc`, `.profile`, `.zshrc` ### 5. Modern CLI Tools | Tool | Replaces | Source | |------|----------|--------| | bat | cat | apt (22.04+) / GitHub .deb | | eza | ls | apt (24.04+) / GitHub tar | | fd | find | apt / GitHub .deb | | ripgrep | grep | apt / GitHub .deb | | fzf | — | apt / git clone | | zoxide | cd | apt (24.04+) / GitHub .deb | | delta | diff | GitHub .deb + git config | | lazygit | git TUI | GitHub tar | ## 🚀 Usage ### Full Installation ```bash sudo bash wsl-dev-setup.sh ``` ### Selective Modules ```bash # Only install Go and Node.js sudo bash wsl-dev-setup.sh --only golang,nodejs # Skip fonts and modern CLI sudo bash wsl-dev-setup.sh --skip fonts,modern-cli # Use USTC mirror sudo bash wsl-dev-setup.sh --mirror ustc # Disable proxy sudo bash wsl-dev-setup.sh --no-proxy # Preview (dry run) bash wsl-dev-setup.sh --dry-run ``` ### Custom Configuration ```bash # Environment variables sudo WINDOWS_HOST_IP=10.0.0.1 CLASH_PROXY_PORT=7891 bash wsl-dev-setup.sh sudo GO_VERSION=1.23.0 bash wsl-dev-setup.sh sudo NERD_FONT=FiraCode bash wsl-dev-setup.sh ``` ## ✅ Validation - [x] Bash syntax check (`bash -n`): **PASSED** - [x] 1541 lines, modular function design - [x] Idempotent: safe to run multiple times - [x] Error isolation: module failures don't block other modules - [x] Supports: Ubuntu 20.04 / 22.04 / 24.04 / 26.04 - [x] Supports: amd64 / arm64 architectures ## ⚠️ Post-Install Notes > [!IMPORTANT] > **Windows Terminal 字体设置**: 安装完成后需在 Windows Terminal 中手动设置字体为 `JetBrainsMono Nerd Font`,否则终端图标会显示为方框。 > > Settings → Profiles → Defaults → Appearance → Font face > [!TIP] > 首次进入 Zsh 后,如对预设 Powerlevel10k 主题不满意,可运行 `p10k configure` 重新配置。