# austindloar/dev-env architecture

> Architecture diagram of the GitHub repository austindloar/dev-env, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/austindloar/dev-env
- Repository: https://github.com/austindloar/dev-env

## Overview

#### Purpose and Scope
This is a personal Unix desktop/developer-environment configuration repository. It centralizes shell, terminal, editor, multiplexer, SSH, Git, and Sway window-manager settings, plus launcher-style files for running selected applications.

#### Primary Entry Points
- `dev-env` appears to be the top-level environment bootstrap or development entry point.
- `run` is the likely general execution wrapper.
- Application-specific launch surfaces are under `runs/`, including `runs/firefox`, `runs/ghostty`, `runs/neovim`, `runs/sway`, `runs/tmux`, and `runs/zsh`.
- Shell startup is rooted at `.zshrc`, with prompt behavior in `.p10k.zsh`.

#### Shell and Session Layer
The interactive environment is Zsh-based:
- `.zshrc` defines the shell session configuration.
- `.p10k.zsh` supplies Powerlevel10k prompt configuration.
- `.local/scripts/ready-tmux` and `.ready-tmux` indicate a readiness/session handoff mechanism around tmux.
This layer is the likely common initialization boundary before editor, terminal, and multiplexer workflows begin.

#### Terminal and Multiplexer Workflow
Terminal and terminal-session behavior is configured separately:
- Ghostty: `.config/ghostty/config.ghostty`
- tmux: `.config/tmux/tmux.conf`
- Session selection/creation helper: `.local/scripts/tmux-sessionizer`
- Runtime launch target: `runs/ghostty` and `runs/tmux`
The intended flow is likely terminal → Zsh → tmux, with sessionizer tooling selecting project or working-directory sessions.

#### Neovim Configuration Architecture
Neovim is organized as a Lua configuration module rather than a monolithic init file:
- Root entry: `.config/nvim/init.lua`
- Local module root: `.config/nvim/lua/austin/init.lua`
- Base settings: `.config/nvim/lua/austin/set.lua`
- Plugin/bootstrap initialization: `.config/nvim/lua/austin/lazy_init.lua`
- Feature modules: `.config/nvim/lua/austin/lazy/lsp.lua`, `.config/nvim/lua/austin/lazy/conform.lua`, `.config/nvim/lua/austin/lazy/telescope.lua`
This separates editor startup, core options, plugin loading, language-server integration, formatting, and search/navigation capabilities.

#### Desktop and System Boundaries
The graphical desktop boundary is Sway:
- `.config/sway/config`
- Runtime launcher: `runs/sway`
Terminal GUI behavior is Ghostty-specific, while Sway owns window-management concerns. The repository also includes authentication/remote-access and source-control client configuration:
- `.ssh/config`
- `.gitconfig`

#### Runtime Packaging/Launch Boundary
The `runs/` directory is the repository’s runtime abstraction layer. It contains executable or wrapper targets for user-facing programs and a shared library area:
- `runs/libs`
- `runs/ly`
- `runs/firefox`
- `runs/neovim`
This boundary likely decouples machine setup and application invocation from the underlying dotfile locations, allowing a consistent way to start desktop and development tools.

Main entry points: [`.config/nvim/lua/austin/lazy_init.lua`](https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/lazy_init.lua) (Plugin bootstrap), [`.zshrc`](https://github.com/austindloar/dev-env/blob/main/.zshrc) (.zshrc), [`.config/nvim/lua/austin/init.lua`](https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/init.lua) (Austin module root), [`.config/tmux/tmux.conf`](https://github.com/austindloar/dev-env/blob/main/.config/tmux/tmux.conf) (tmux config)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launch["Launch &amp; Bootstrap"]
  node_dev_env["dev-env<br/>bootstrap entry"]
  node_run["run<br/>execution wrapper"]
  node_runs["runs<br/>runtime launch layer"]
  node_runs_libs["runs/libs<br/>shared runtime library"]
end

subgraph group_session["Shell &amp; Terminal Session"]
  node_zshrc[".zshrc<br/>shell startup<br/>[.zshrc]"]
  node_p10k["Powerlevel10k prompt<br/>prompt config<br/>[.p10k.zsh]"]
  node_ghostty["Ghostty config<br/>terminal config<br/>[config.ghostty]"]
  node_tmux["tmux config<br/>multiplexer config<br/>[tmux.conf]"]
  node_ready_tmux["ready-tmux<br/>session handoff<br/>[ready-tmux]"]
  node_tmux_sessionizer["tmux-sessionizer<br/>session selector<br/>[tmux-sessionizer]"]
end

subgraph group_editor["Neovim"]
  node_nvim_init["Neovim entry<br/>editor startup<br/>[init.lua]"]
  node_nvim_module["Austin module root<br/>Lua module<br/>[init.lua]"]
  node_nvim_settings["Core settings<br/>Neovim options<br/>[set.lua]"]
  node_lazy_init["Plugin bootstrap<br/>plugin initialization<br/>[lazy_init.lua]"]
  node_lsp["LSP features<br/>Neovim feature<br/>[lsp.lua]"]
  node_conform["Formatting features<br/>Neovim feature<br/>[conform.lua]"]
  node_telescope["Search features<br/>Neovim feature<br/>[telescope.lua]"]
end

subgraph group_desktop["Desktop &amp; Clients"]
  node_sway["Sway config<br/>window manager config<br/>[config]"]
  node_ssh["SSH config<br/>remote access config<br/>[config]"]
  node_git["Git config<br/>source control config<br/>[.gitconfig]"]
end

node_dev_env -->|"bootstraps"| node_run
node_run -->|"dispatches"| node_runs
node_runs -->|"uses"| node_runs_libs
node_runs -->|"launches terminal"| node_ghostty
node_runs -->|"launches multiplexer"| node_tmux
node_runs -->|"launches editor"| node_nvim_init
node_runs -->|"launches desktop"| node_sway
node_ghostty -->|"starts shell"| node_zshrc
node_zshrc -->|"configures prompt"| node_p10k
node_zshrc -->|"hands off session"| node_ready_tmux
node_ready_tmux -->|"readies"| node_tmux
node_tmux_sessionizer -->|"selects sessions"| node_tmux
node_nvim_init -->|"loads"| node_nvim_module
node_nvim_module -->|"loads settings"| node_nvim_settings
node_nvim_module -->|"bootstraps plugins"| node_lazy_init
node_lazy_init -->|"enables"| node_lsp
node_lazy_init -->|"enables"| node_conform
node_lazy_init -->|"enables"| node_telescope

click node_dev_env "https://github.com/austindloar/dev-env/blob/main/dev-env"
click node_run "https://github.com/austindloar/dev-env/blob/main/run"
click node_runs_libs "https://github.com/austindloar/dev-env/blob/main/runs/libs"
click node_zshrc "https://github.com/austindloar/dev-env/blob/main/.zshrc"
click node_p10k "https://github.com/austindloar/dev-env/blob/main/.p10k.zsh"
click node_ghostty "https://github.com/austindloar/dev-env/blob/main/.config/ghostty/config.ghostty"
click node_tmux "https://github.com/austindloar/dev-env/blob/main/.config/tmux/tmux.conf"
click node_ready_tmux "https://github.com/austindloar/dev-env/blob/main/.local/scripts/ready-tmux"
click node_tmux_sessionizer "https://github.com/austindloar/dev-env/blob/main/.local/scripts/tmux-sessionizer"
click node_nvim_init "https://github.com/austindloar/dev-env/blob/main/.config/nvim/init.lua"
click node_nvim_module "https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/init.lua"
click node_nvim_settings "https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/set.lua"
click node_lazy_init "https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/lazy_init.lua"
click node_lsp "https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/lazy/lsp.lua"
click node_conform "https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/lazy/conform.lua"
click node_telescope "https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/lazy/telescope.lua"
click node_sway "https://github.com/austindloar/dev-env/blob/main/.config/sway/config"
click node_ssh "https://github.com/austindloar/dev-env/blob/main/.ssh/config"
click node_git "https://github.com/austindloar/dev-env/blob/main/.gitconfig"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dev_env,node_run,node_runs,node_runs_libs toneBlue
class node_zshrc,node_p10k,node_ghostty,node_tmux,node_ready_tmux,node_tmux_sessionizer toneAmber
class node_nvim_init,node_nvim_module,node_nvim_settings,node_lazy_init,node_lsp,node_conform,node_telescope toneMint
class node_sway,node_ssh,node_git toneRose
```

## Components

### Launch & Bootstrap

Executable entry points and shared runtime wrappers.

- [dev-env](https://github.com/austindloar/dev-env/blob/main/dev-env): bootstrap entry · Top-level environment bootstrap or development entry point. · `dev-env`
- [run](https://github.com/austindloar/dev-env/blob/main/run): execution wrapper · General command execution wrapper. · `run`
- **runs**: runtime launch layer · Application launch targets and shared runtime support.
- [runs/libs](https://github.com/austindloar/dev-env/blob/main/runs/libs): shared runtime library · `runs/libs`

### Shell & Terminal Session

Interactive shell, terminal, and tmux workflow.

- [.zshrc](https://github.com/austindloar/dev-env/blob/main/.zshrc): shell startup · Defines the interactive Zsh environment. · `.zshrc`
- [Powerlevel10k prompt](https://github.com/austindloar/dev-env/blob/main/.p10k.zsh): prompt config · `.p10k.zsh`
- [Ghostty config](https://github.com/austindloar/dev-env/blob/main/.config/ghostty/config.ghostty): terminal config · `.config/ghostty/config.ghostty`
- [tmux config](https://github.com/austindloar/dev-env/blob/main/.config/tmux/tmux.conf): multiplexer config · `.config/tmux/tmux.conf`
- [ready-tmux](https://github.com/austindloar/dev-env/blob/main/.local/scripts/ready-tmux): session handoff · Coordinates shell readiness with tmux. · `.local/scripts/ready-tmux`
- [tmux-sessionizer](https://github.com/austindloar/dev-env/blob/main/.local/scripts/tmux-sessionizer): session selector · Selects or creates project tmux sessions. · `.local/scripts/tmux-sessionizer`

### Neovim

Lua-based editor configuration and feature modules.

- [Neovim entry](https://github.com/austindloar/dev-env/blob/main/.config/nvim/init.lua): editor startup · `.config/nvim/init.lua`
- [Austin module root](https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/init.lua): Lua module · `.config/nvim/lua/austin/init.lua`
- [Core settings](https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/set.lua): Neovim options · `.config/nvim/lua/austin/set.lua`
- [Plugin bootstrap](https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/lazy_init.lua): plugin initialization · `.config/nvim/lua/austin/lazy_init.lua`
- [LSP features](https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/lazy/lsp.lua): Neovim feature · `.config/nvim/lua/austin/lazy/lsp.lua`
- [Formatting features](https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/lazy/conform.lua): Neovim feature · `.config/nvim/lua/austin/lazy/conform.lua`
- [Search features](https://github.com/austindloar/dev-env/blob/main/.config/nvim/lua/austin/lazy/telescope.lua): Neovim feature · `.config/nvim/lua/austin/lazy/telescope.lua`

### Desktop & Clients

Window management and user client settings.

- [Sway config](https://github.com/austindloar/dev-env/blob/main/.config/sway/config): window manager config · Owns graphical window-management behavior. · `.config/sway/config`
- [SSH config](https://github.com/austindloar/dev-env/blob/main/.ssh/config): remote access config · `.ssh/config`
- [Git config](https://github.com/austindloar/dev-env/blob/main/.gitconfig): source control config · `.gitconfig`

## Connections

- dev-env → run: bootstraps
- run → runs: dispatches
- runs → runs/libs: uses
- runs → Ghostty config: launches terminal
- runs → tmux config: launches multiplexer
- runs → Neovim entry: launches editor
- runs → Sway config: launches desktop
- Ghostty config → .zshrc: starts shell
- .zshrc → Powerlevel10k prompt: configures prompt
- .zshrc → ready-tmux: hands off session
- ready-tmux → tmux config: readies
- tmux-sessionizer → tmux config: selects sessions
- Neovim entry → Austin module root: loads
- Austin module root → Core settings: loads settings
- Austin module root → Plugin bootstrap: bootstraps plugins
- Plugin bootstrap → LSP features: enables
- Plugin bootstrap → Formatting features: enables
- Plugin bootstrap → Search features: enables
