Personal editor environment, dotfiles, and fonts.
Automated setup for Emacs 30.2 with Spacemacs and Neovim, language servers for 13+ languages, and cross-platform support on macOS and Linux.
- Emacs 30.2 compiled from source with native compilation, tree-sitter, and Cairo
- Spacemacs configuration with Evil mode
- Neovim support included in
make full-setupand available independently viamake neovim, grounded in current Spacemacs conventions where practical - Language servers: Python, JavaScript/TypeScript, C/C++, SQL, Terraform, LaTeX, Docker, OCaml, Swift, and more
- Modern CLI tools: eza, bat, ripgrep, fd, fzf, zoxide, lazygit
- Fonts: Nerd Font versions of Meslo, DejaVu Sans Mono, Source Code Pro
One-liner install:
curl -fsSL https://raw.githubusercontent.com/jlipworth/devenv/master/bootstrap.sh | bashOr manually:
git clone https://github.com/jlipworth/devenv.git ~/GNU_files
cd ~/GNU_files
make full-setup
# Or individual components
make spacemacs # Build Emacs 30.2 + Spacemacs
make neovim # Install/configure Neovim independently
make editor-symlinks # Symlinks for .vimrc and .spacemacs
make prereq-layers-all # All layer prerequisites (language servers, tooling, etc.)The examples use ~/GNU_files, but the repo can be cloned anywhere.
For locked-down Linux or WSL2 machines, the scripts support a repo-specific flag:
NO_ADMIN=true make spacemacs
NO_ADMIN=true make system-prereqThis is a best-effort no-admin mode for this repo. It is not a standard system environment variable.
What it does:
- avoids attempting Linux system package installs in helper flows
- prefers existing Linuxbrew/Homebrew where available
- installs Emacs to
~/.localon Linux by default - skips or downgrades some privileged operations to warnings/manual steps
What is still not possible under NO_ADMIN=true unless already preinstalled or otherwise available:
- distro package manager installs via
apt,pacman, ordnf - WSL config changes under
/etc/wsl.conf - system-wide installs under
/usr/local - Terraform apt-repo/key setup under
/etcand/usr/share - any fallback path that still depends on root-owned system packages being present
Practical recommendation:
- use
NO_ADMIN=truefor work WSL2 or no-sudo environments - prefer
make spacemacsfirst - expect
make full-setupandmake system-prereqto remain only partially successful unless Linuxbrew and other prerequisites are already available
make python # pyright, debugpy, linters
make js # typescript-language-server, prettier, eslint
make c_cpp # clangd/LLVM
make sql # sqls
make terraform # terraform-ls
make swift # Swift toolchain + sourcekit-lsp
make latex # texlab
make docker # dockerfile-language-server, hadolint
make ocaml # opam, merlin, utop
make cli_tools # eza, bat, ripgrep, fd, fzf, zoxide, lazygit
make neovim # Install/configure Neovim independently (pinned source build)
make neovim-package # Neovim from the pinned GitHub release (no-admin path)
make neovim-test # Headless Neovim Lua specs in tests/nvimmacOS:
- Xcode Command Line Tools
- Homebrew
Linux:
- Debian/Ubuntu and Arch paths are supported in scripts
- Homebrew on Linux is used for some packages and no-admin flows; Swift falls back to Swiftly when Homebrew is unavailable
CI is split across Woodpecker pipeline files under .woodpecker/.
build.ymlvalidates the Emacs build flow and the default Neovim source buildlayers.ymlvalidates language/editor layers, including the legacy Neovim package pathnoadmin.ymlcovers non-sudo smoke tests, including Neovim via the package pathlint.ymlruns shellcheck, the Codex config guard, and the macOS pipeline policy check (formatting, YAML and Markdown checks run via pre-commit)
Neovim coverage includes a Linux headless smoke script at ci/neovim-smoke.sh.
macOS has a guarded native pipeline that remains manual-only until the labelled runner is enrolled; see docs/MACOS_CI.md.
| File | Description |
|---|---|
| AGENTS.md | AI agent reference (CLAUDE.md links to it) |
| docs/ALIASES.md | Shell aliases for modern CLI tools |
| docs/BASH_TO_ZSH_MIGRATION_RUNBOOK.md | Bash to zsh migration runbook |
| docs/DEPENDENCIES.md | Dependency management and Renovate |
| docs/MACOS_CI.md | Native macOS CI safety and operations |
| docs/NEOVIM_KEYBINDINGS.md | Neovim-specific shortcuts and notes |
| docs/NO_ADMIN_SETUP.md | NO_ADMIN setup guide: target compatibility, prerequisites, troubleshooting |
| docs/SSH_SETUP.md | SSH key setup on a new machine |