diff options
| author | Craig Jennings <c@cjennings.net> | 2025-11-04 23:58:20 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-11-04 23:58:20 -0600 |
| commit | 12b511ad81cbd3f1d6a7afdbd9509603c5af2279 (patch) | |
| tree | 4252c41589c5f5a9fbd8f6d45066f9c7833ec9fe | |
| parent | 9b4f7c06d6807a4c316d8ecbbf164c4afc468199 (diff) | |
docs: Add comprehensive external dependencies audit
Created config-dependencies.org documenting all external (non-Emacs)
dependencies required for full configuration functionality.
Analysis covers:
- ~50 external dependencies across all feature areas
- Organized by functionality (media, email, programming, documents, etc.)
- Package names for pacman/yay/pip/npm/go installation
- Required vs optional status for each dependency
- Quick reference commands for minimal/recommended/full installs
Key features documented:
- Audio/video recording (ffmpeg, libpulse)
- Transcription (whisper, languagetool)
- Email (mu, isync, msmtp)
- Programming language support (LSP servers for Go, Python, C, Bash, JS/TS)
- Document generation (pandoc, LaTeX, PDF tools)
- Media handling (yt-dlp, mpv)
- Desktop integration (dunst, xdg-utils)
Next steps:
- Compare with archsetup script to identify gaps
- Create dependency verification script
- Ensure archsetup installs all Emacs requirements
Session notes added documenting the analysis process.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
| -rw-r--r-- | config-dependencies.org | 426 | ||||
| -rw-r--r-- | docs/NOTES.org | 45 |
2 files changed, 471 insertions, 0 deletions
diff --git a/config-dependencies.org b/config-dependencies.org new file mode 100644 index 00000000..faee3e0d --- /dev/null +++ b/config-dependencies.org @@ -0,0 +1,426 @@ +#+TITLE: External Dependencies for Emacs Configuration +#+AUTHOR: Analysis by Claude Code +#+DATE: 2025-11-04 + +* Overview + +This document catalogs ALL external dependencies (non-Emacs, non-Emacs-packages) required +for this Emacs configuration to function fully on Arch Linux. + +Dependencies are organized by functionality area with installation commands for pacman/yay. + +* Quick Reference + +** Minimal Install (Basic Functionality) +#+BEGIN_SRC bash +sudo pacman -S git ripgrep fd +#+END_SRC + +** Recommended Install (Common Workflows) +#+BEGIN_SRC bash +# Core tools +sudo pacman -S git ripgrep fd xdg-utils curl + +# Media (if using) +sudo pacman -S ffmpeg yt-dlp task-spooler mpv libpulse + +# Development +sudo pacman -S clang shellcheck shfmt python-pip +pip install --user python-lsp-server[all] flake8 +npm install -g bash-language-server + +# Documents +sudo pacman -S pandoc texlive-core +#+END_SRC + +** Full Install (All Features) +#+BEGIN_SRC bash +# System tools +sudo pacman -S git ripgrep fd xdg-utils curl dunst + +# Media & transcription +sudo pacman -S ffmpeg yt-dlp task-spooler mpv libpulse +yay -S python-openai-whisper # Or use scripts/install-whisper.sh + +# Email +sudo pacman -S mu isync msmtp + +# Grammar & spelling +sudo pacman -S languagetool aspell aspell-en + +# PDF & documents +sudo pacman -S poppler zathura zathura-pdf-mupdf pandoc + +# LaTeX (if needed) +sudo pacman -S texlive-most + +# Programming tools +sudo pacman -S clang shellcheck shfmt graphviz +pip install --user python-lsp-server[all] flake8 mypy +npm install -g bash-language-server typescript-language-server + +# File managers (choose one) +sudo pacman -S thunar # or nautilus, dolphin, pcmanfm + +# Browsers (choose one) +sudo pacman -S firefox # or chromium +#+END_SRC + +* Core System Tools + +** Git - Version Control +- *Package:* =git= +- *Used by:* magit, forge, vc-config.el, all development workflows +- *Functionality:* Essential for version control, package management +- *Required:* YES +- *Install:* =sudo pacman -S git= + +* Audio/Video Recording & Transcription + +** FFmpeg - Media Processing +- *Package:* =ffmpeg= +- *Used by:* modules/video-audio-recording.el, scripts/install-whisper.sh +- *Functionality:* Desktop video/audio recording, media conversion +- *Required:* YES (if using recording features) +- *Install:* =sudo pacman -S ffmpeg= +- *Note:* Explicitly checked in =cj/recording-check-ffmpeg= + +** PulseAudio/PipeWire Utils - Audio Device Management +- *Package:* =libpulse= (provides =pactl= command) +- *Used by:* modules/video-audio-recording.el +- *Functionality:* Audio device detection and selection for recording +- *Required:* YES (if using recording features) +- *Install:* =sudo pacman -S libpulse= +- *Commands used:* =pactl list sources short= + +** Whisper (OpenAI) - Speech-to-Text +- *Package:* =python-openai-whisper= (AUR) +- *Used by:* scripts/local-whisper, modules/transcription-config.el +- *Functionality:* Local audio transcription (offline) +- *Required:* OPTIONAL (alternative: OpenAI API with curl) +- *Install:* =yay -S python-openai-whisper= OR =~/.emacs.d/scripts/install-whisper.sh= +- *Uninstall:* =~/.emacs.d/scripts/uninstall-whisper.sh= +- *Size:* ~500MB with models + +* Grammar & Spell Checking + +** LanguageTool - Grammar Checker +- *Package:* =languagetool= +- *Used by:* scripts/languagetool-flycheck, modules/flycheck-config.el +- *Functionality:* Comprehensive grammar and style checking +- *Required:* OPTIONAL (only if using grammar checking with =C-; ?=) +- *Install:* =sudo pacman -S languagetool= +- *Size:* ~222MB +- *Dependencies:* Python 3 (for wrapper script at scripts/languagetool-flycheck) +- *Keybinding:* =C-; ?= in org/text/markdown buffers + +** Aspell/Hunspell/Ispell - Spell Checking +- *Packages:* =aspell= (recommended) OR =hunspell= OR =ispell= +- *Used by:* modules/flyspell-and-abbrev.el +- *Functionality:* Real-time spell checking +- *Required:* OPTIONAL (choose one of the three) +- *Install:* =sudo pacman -S aspell aspell-en= (recommended) +- *Note:* Config checks for any of the three spell checkers + +* Email System + +** Mu - Email Indexer +- *Package:* =mu= +- *Used by:* modules/mail-config.el, scripts/setup-email.sh +- *Functionality:* Email indexing and search (provides mu4e) +- *Required:* YES (if using email) +- *Install:* =sudo pacman -S mu= +- *Provides:* =mu= command and mu4e elisp files + +** Isync (mbsync) - Email Sync +- *Package:* =isync= +- *Used by:* modules/mail-config.el, scripts/setup-email.sh +- *Functionality:* IMAP email synchronization +- *Required:* YES (if using email) +- *Install:* =sudo pacman -S isync= +- *Provides:* =mbsync= command + +** msmtp - SMTP Email Sending +- *Package:* =msmtp= +- *Used by:* modules/mail-config.el, scripts/setup-email.sh +- *Functionality:* Sending emails via SMTP +- *Required:* YES (if using email) +- *Install:* =sudo pacman -S msmtp= + +* Media Playback & Downloading + +** yt-dlp - Media Downloader +- *Package:* =yt-dlp= +- *Used by:* modules/media-utils.el, modules/quick-video-capture.el, modules/elfeed-config.el +- *Functionality:* Download videos from YouTube and 1000+ sites +- *Required:* YES (if using video download or media playback from web) +- *Install:* =sudo pacman -S yt-dlp= + +** Task Spooler (tsp) - Queue Management +- *Package:* =task-spooler= +- *Used by:* modules/media-utils.el (=cj/yt-dl-it= function) +- *Functionality:* Queue and background management for downloads +- *Required:* YES (if using video download) +- *Install:* =sudo pacman -S task-spooler= + +** Media Players (Choose One or More) +- *MPV* - =mpv= (recommended - works without stream URL extraction) +- *VLC* - =vlc= +- *MPlayer* - =mplayer= +- *Used by:* modules/media-utils.el (customizable via =cj/media-players=) +- *Functionality:* Playing media URLs +- *Required:* OPTIONAL (choose preferred player) +- *Install:* =sudo pacman -S mpv= (recommended) + +* PDF & Document Viewing + +** PDF Tools Server +- *Package:* Auto-built by pdf-tools package on first Emacs launch +- *Requires:* =poppler= library (usually already installed) +- *Used by:* modules/pdf-config.el +- *Functionality:* Fast PDF rendering in Emacs +- *Required:* OPTIONAL (Emacs can use DocView as fallback) +- *Install:* =sudo pacman -S poppler= +- *Note:* pdf-tools will compile its server component automatically + +** Zathura - External PDF Viewer +- *Package:* =zathura= and =zathura-pdf-mupdf= +- *Used by:* modules/pdf-config.el, modules/latex-config.el +- *Functionality:* External PDF viewing (alternative to pdf-tools) +- *Required:* OPTIONAL (keybinding: 'z' in pdf-view-mode) +- *Install:* =sudo pacman -S zathura zathura-pdf-mupdf= + +* LaTeX & Document Generation + +** LaTeX Distribution +- *Package:* =texlive-core= (basic) or =texlive-most= (comprehensive) +- *Used by:* modules/latex-config.el, modules/org-export-config.el +- *Functionality:* LaTeX document compilation +- *Required:* OPTIONAL (only if using LaTeX) +- *Install:* =sudo pacman -S texlive-core= OR =sudo pacman -S texlive-most= +- *Commands:* =latexmk=, =pdflatex=, =xelatex= + +** Pandoc - Universal Document Converter +- *Package:* =pandoc= +- *Used by:* modules/org-export-config.el, modules/mail-config.el +- *Functionality:* Convert between document formats (DOCX, EPUB, HTML, etc.) +- *Required:* OPTIONAL (enhances org-export capabilities) +- *Install:* =sudo pacman -S pandoc= + +* Programming Language Support + +** Language Servers (LSP) + +*** Go +- *gopls* - =go install golang.org/x/tools/gopls@latest= +- *goimports* - =go install golang.org/x/tools/cmd/goimports@latest= +- *staticcheck* - =go install honnef.co/go/tools/cmd/staticcheck@latest= +- *delve* (debugger) - =go install github.com/go-delve/delve/cmd/dlv@latest= +- *Used by:* modules/prog-go.el +- *Required:* OPTIONAL (only if using Go development) + +*** Python +- *python-lsp-server* - =pip install --user python-lsp-server[all]= +- *flake8* - =pip install --user flake8= +- *mypy* - =pip install --user mypy= (optional type checker) +- *Used by:* modules/prog-python.el +- *Required:* OPTIONAL (only if using Python development) +- *Note:* Install with =--user= flag (no sudo needed) + +*** C/C++ +- *clangd* - Provided by =clang= package +- *clang-format* - Provided by =clang= package +- *Package:* =clang= +- *Used by:* modules/prog-c.el +- *Install:* =sudo pacman -S clang= +- *Required:* OPTIONAL (only if using C/C++ development) + +*** Bash +- *bash-language-server* - =npm install -g bash-language-server= +- *shellcheck* - =shellcheck= package (linter) +- *shfmt* - =shfmt= package (formatter) +- *Used by:* modules/prog-shell.el +- *Install:* + #+BEGIN_SRC bash + sudo pacman -S shellcheck shfmt nodejs npm + npm install -g bash-language-server + #+END_SRC +- *Required:* OPTIONAL (only if using shell script development) + +*** JavaScript/TypeScript +- *typescript-language-server* - =npm install -g typescript-language-server= +- *eslint* - =npm install -g eslint= (optional linter) +- *prettier* - =npm install -g prettier= (optional formatter) +- *Used by:* modules/prog-lsp.el (detected via LSP mode hooks) +- *Required:* OPTIONAL (only if using JS/TS development) + +** Build Tools +- *make* - Usually pre-installed +- *cmake* - For C/C++ projects: =sudo pacman -S cmake= +- *gcc/g++* - C/C++ compiler: =sudo pacman -S gcc= +- *gdb* - Debugger: =sudo pacman -S gdb= +- *Required:* OPTIONAL (per-language basis) + +** Graphviz - Diagram Generation +- *Package:* =graphviz= +- *Used by:* modules/latex-config.el, modules/org-babel-config.el +- *Functionality:* Generate diagrams from dot files +- *Required:* OPTIONAL (only if using graphviz-dot-mode or org-babel dot blocks) +- *Install:* =sudo pacman -S graphviz= + +* Search & File Management + +** Ripgrep - Fast Search +- *Package:* =ripgrep= +- *Used by:* Implicit in many modern Emacs packages (consult, projectile, etc.) +- *Functionality:* Extremely fast code search +- *Required:* HIGHLY RECOMMENDED +- *Install:* =sudo pacman -S ripgrep= +- *Note:* Faster than grep, used by many completion frameworks + +** fd - Fast Find +- *Package:* =fd= +- *Used by:* Implicit in modern completion frameworks +- *Functionality:* Fast file finding (alternative to GNU find) +- *Required:* RECOMMENDED +- *Install:* =sudo pacman -S fd= + +** Deadgrep - Search Interface +- *Package:* Emacs package (uses ripgrep) +- *Used by:* modules/dirvish-config.el (keybinding: 'G') +- *Functionality:* Interactive ripgrep interface +- *Requires:* ripgrep (see above) + +* Desktop Integration + +** Desktop Notifications +- *Package:* =dunst= or =notification-daemon= +- *Used by:* modules/transcription-config.el, potentially others +- *Functionality:* Desktop notifications via =notify-send= +- *Required:* OPTIONAL (notifications will fail silently without it) +- *Install:* =sudo pacman -S dunst= (recommended) +- *Note:* Requires a notification daemon to be running + +** xdg-utils - File Opening +- *Package:* =xdg-utils= +- *Provides:* =xdg-open= command +- *Used by:* modules/external-open.el, modules/dirvish-config.el +- *Functionality:* Open files with default applications +- *Required:* RECOMMENDED (fallback exists) +- *Install:* =sudo pacman -S xdg-utils= + +** File Managers (Choose One - Optional) +- *Thunar* - =thunar= +- *Nautilus* - =nautilus= +- *Dolphin* - =dolphin= +- *PCManFM* - =pcmanfm= +- *Used by:* modules/dwim-shell-config.el +- *Functionality:* Open current directory in GUI file manager +- *Required:* OPTIONAL (choose one) +- *Install:* =sudo pacman -S thunar= (or your preferred file manager) + +* Web Browsers + +** Web Browsers (Choose One or More) +- *Chromium* - =chromium= +- *Google Chrome* - =google-chrome= (AUR) +- *Firefox* - =firefox= +- *Brave* - =brave-bin= (AUR) +- *Qutebrowser* - =qutebrowser= +- *Used by:* modules/browser-config.el +- *Functionality:* Opening web links +- *Required:* OPTIONAL (EWW built-in as fallback) +- *Install:* =sudo pacman -S firefox= (or your preferred browser) + +* Network Utilities + +** Curl - HTTP Client +- *Package:* =curl= +- *Used by:* scripts/oai-transcribe (OpenAI API calls), various other scripts +- *Functionality:* HTTP requests +- *Required:* Usually pre-installed, but verify +- *Install:* =sudo pacman -S curl= + +* Emacs Build Dependencies (For Building from Source) + +If using scripts/build-emacs.sh to build Emacs from source: + +#+BEGIN_SRC bash +sudo pacman -S jansson tree-sitter imagemagick mailutils \ + harfbuzz cairo gnutls libxml2 texinfo gtk3 \ + libgccjit git base-devel +#+END_SRC + +** Required for Native Compilation +- *libgccjit* - Enables native compilation of elisp files +- *Package:* =libgccjit= +- *Note:* Dramatically improves Emacs performance + +* Summary by Feature Area + +| Feature | Required Packages | Optional Packages | +|------------------------+--------------------------------+--------------------------------------| +| *Basic Emacs* | git | ripgrep, fd | +| *Recording* | ffmpeg, libpulse | - | +| *Transcription* | curl (for API) | python-openai-whisper | +| *Grammar* | - | languagetool, aspell | +| *Email* | mu, isync, msmtp | - | +| *Media* | yt-dlp, task-spooler | mpv, vlc | +| *PDF* | poppler | zathura | +| *LaTeX* | - | texlive-core/most | +| *Documents* | - | pandoc | +| *Notifications* | - | dunst | +| *File Opening* | - | xdg-utils | +| *C/C++* | - | clang, gdb | +| *Python* | - | python-lsp-server, flake8 | +| *Go* | - | gopls, goimports, delve | +| *Shell* | - | bash-language-server, shellcheck | +| *Search* | - | ripgrep (highly recommended) | +| *Desktop Integration* | - | xdg-utils, dunst | + +* Installation Notes + +** Package Manager Tips +1. *Python packages* install via =pip install --user= (no sudo needed) +2. *Go tools* install via =go install= (no system package manager) +3. *Node.js tools* install via =npm install -g= (requires =nodejs= package) +4. *AUR packages* require an AUR helper like =yay= or =paru= + +** Special Considerations +- *Tree-sitter grammars* are downloaded automatically by treesit-auto (not in .localrepo) +- *Native compilation* requires libgccjit if building Emacs from source +- *Local package repository* (.localrepo) contains Emacs packages, not system dependencies + +** Testing Installations +After installing dependencies, test key functionality: +#+BEGIN_SRC bash +# Test recording +emacs --eval "(require 'video-audio-recording)" --eval "(cj/recording-check-ffmpeg)" + +# Test grammar checker +~/.emacs.d/scripts/languagetool-flycheck ~/.emacs.d/tests/fixtures/grammar-errors-basic.txt + +# Test transcription wrapper (if using local whisper) +~/.emacs.d/scripts/local-whisper /path/to/audio.m4a + +# Run Emacs test suite +cd ~/.emacs.d && make test +#+END_SRC + +* Next Steps + +** TODO Compare with archsetup script +- [ ] Analyze archsetup script to see which dependencies are already installed +- [ ] Identify gaps where Emacs dependencies are missing +- [ ] Ensure archsetup script installs all required dependencies +- [ ] Document any Emacs-specific configuration needed beyond package installation + +** TODO Create dependency verification script +- [ ] Script to check which dependencies are installed +- [ ] Report missing optional dependencies by feature area +- [ ] Provide installation commands for missing dependencies + +** TODO Add to documentation +- [ ] Link from main README +- [ ] Add to setup instructions +- [ ] Include in archsetup script comments diff --git a/docs/NOTES.org b/docs/NOTES.org index 8662ea9b..55129567 100644 --- a/docs/NOTES.org +++ b/docs/NOTES.org @@ -515,6 +515,51 @@ If Craig or Claude need more context: ** 🚀 Current Session Notes +*** 2025-11-04 Session 4 - External Dependencies Audit +*Time:* ~30 minutes +*Status:* ✅ COMPLETE - Comprehensive dependency analysis documented + +*What We Completed:* + +1. ✅ **Comprehensive External Dependencies Analysis** + - Systematically analyzed entire codebase for external tool dependencies + - Identified ~50 external dependencies across all feature areas + - Organized by functionality: media, email, programming, documents, etc. + - Distinguished required vs optional dependencies + +2. ✅ **Created config-dependencies.org** + - Quick reference commands (minimal, recommended, full install) + - Detailed documentation for each dependency: + - Package names (pacman/yay/pip/npm/go) + - What modules use them + - Functionality enabled + - Required vs optional status + - Installation commands + - Summary table by feature area + - Installation notes for different package managers + +3. ✅ **Next Steps Documented** + - TODO: Compare with archsetup script + - TODO: Create dependency verification script + - TODO: Add to main documentation + +*Key Dependencies Identified:* +- Core: git, ripgrep, fd +- Media: ffmpeg, libpulse, yt-dlp, mpv, python-openai-whisper +- Email: mu, isync, msmtp +- Grammar: languagetool, aspell +- Programming: clang, python-lsp-server, gopls, bash-language-server, shellcheck +- Documents: pandoc, texlive, poppler +- Desktop: dunst, xdg-utils + +*Files Created:* +- config-dependencies.org (comprehensive dependency documentation) + +*Status:* +- Ready for comparison with archsetup script ✅ +- All dependencies documented with install commands ✅ +- Can now ensure archsetup installs all Emacs requirements ✅ + *** 2025-11-04 Session 3 - LanguageTool Grammar Checker Test Suite *Time:* ~1 hour *Status:* ✅ COMPLETE - Comprehensive test suite with 15 passing tests |
