Skip to content
jlipworthPublic

About

My dotfiles and spacemacs build

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

383 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

devenv

CI Platform Emacs License

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.

Features

  • Emacs 30.2 compiled from source with native compilation, tree-sitter, and Cairo
  • Spacemacs configuration with Evil mode
  • Neovim support included in make full-setup and available independently via make 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

Quick Start

One-liner install:

curl -fsSL https://raw.githubusercontent.com/jlipworth/devenv/master/bootstrap.sh | bash

Or 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.

No-admin / work-WSL2 mode

For locked-down Linux or WSL2 machines, the scripts support a repo-specific flag:

NO_ADMIN=true make spacemacs
NO_ADMIN=true make system-prereq

This 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 ~/.local on 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, or dnf
  • WSL config changes under /etc/wsl.conf
  • system-wide installs under /usr/local
  • Terraform apt-repo/key setup under /etc and /usr/share
  • any fallback path that still depends on root-owned system packages being present

Practical recommendation:

  • use NO_ADMIN=true for work WSL2 or no-sudo environments
  • prefer make spacemacs first
  • expect make full-setup and make system-prereq to remain only partially successful unless Linuxbrew and other prerequisites are already available

Individual Language Layers

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/nvim

Requirements

macOS:

  • 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 / Validation

CI is split across Woodpecker pipeline files under .woodpecker/.

  • build.yml validates the Emacs build flow and the default Neovim source build
  • layers.yml validates language/editor layers, including the legacy Neovim package path
  • noadmin.yml covers non-sudo smoke tests, including Neovim via the package path
  • lint.yml runs 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.

Documentation

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

License

MIT

About

My dotfiles and spacemacs build

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages