# cchristion/lemon architecture

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

- Interactive diagram: https://gitdiagram.com/cchristion/lemon
- Repository: https://github.com/cchristion/lemon

## Overview

Lemon is a personal workspace-configuration repository. Its main workflow is installing or updating shell and application settings in a user’s home directory; a separate documented workflow builds and runs a Docker environment with dependencies. The tree includes configurations for shells, editors, terminal tools, Firefox, Git, and Nix. Source excerpts were unavailable, so relationships below rely only on README statements; individual configuration behavior and installer internals are not inferred.

Main entry points: [`install.sh`](https://github.com/cchristion/lemon/blob/main/install.sh) (Configuration installer), [`Dockerfile`](https://github.com/cchristion/lemon/blob/main/Dockerfile) (Container definition), [`.config`](https://github.com/cchristion/lemon/tree/main/.config) (Configuration tree), [`.zshenv`](https://github.com/cchristion/lemon/blob/main/.zshenv) (Zsh environment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_deployment["Configuration deployment"]
  node_installer["Configuration installer<br/>[install.sh]"]
  node_configtree["Configuration tree<br/>[.config]"]
end

subgraph group_shell["Shell environment"]
  node_zshenv["Zsh environment<br/>[.zshenv]"]
  node_zshrc["Zsh startup<br/>[.zshrc]"]
  node_zshlocal["Zsh extras<br/>[.extras]"]
  node_bashrc["Bash startup<br/>[.bashrc]"]
  node_bashlocal["Bash local settings<br/>[.local]"]
end

subgraph group_apps["Application settings"]
  node_nvim["Neovim settings<br/>[init.lua]"]
  node_firefox["Firefox settings<br/>[user.js]"]
  node_git["Git settings<br/>[config]"]
  node_alacritty["Alacritty settings<br/>[alacritty.toml]"]
  node_tmux["Tmux settings<br/>[tmux.conf]"]
  node_aria2["Aria2 settings<br/>[aria2.conf]"]
  node_nix["Nix settings<br/>[nix.conf]"]
  node_ruff["Ruff settings<br/>[pyproject.toml]"]
end

subgraph group_container["Container environment"]
  node_dockerfile["Container definition"]
  node_containerenv["Docker environment"]
end

node_user(("Workspace user"))

node_user -->|"runs installer"| node_installer
node_installer -->|"installs settings"| node_configtree
node_user -->|"copies on update"| node_configtree
node_user -->|"copies on update"| node_zshenv
node_user -->|"builds image"| node_dockerfile
node_dockerfile -->|"defines image"| node_containerenv
node_user -->|"runs image"| node_containerenv

click node_installer "https://github.com/cchristion/lemon/blob/main/install.sh"
click node_configtree "https://github.com/cchristion/lemon/tree/main/.config"
click node_zshenv "https://github.com/cchristion/lemon/blob/main/.zshenv"
click node_zshrc "https://github.com/cchristion/lemon/blob/main/.config/zsh/.zshrc"
click node_zshlocal "https://github.com/cchristion/lemon/blob/main/.config/zsh/.extras"
click node_bashrc "https://github.com/cchristion/lemon/blob/main/.config/bash/.bashrc"
click node_bashlocal "https://github.com/cchristion/lemon/blob/main/.config/bash/.local"
click node_nvim "https://github.com/cchristion/lemon/blob/main/.config/nvim/init.lua"
click node_firefox "https://github.com/cchristion/lemon/blob/main/.config/firefox/user.js"
click node_git "https://github.com/cchristion/lemon/blob/main/.config/git/config"
click node_alacritty "https://github.com/cchristion/lemon/blob/main/.config/alacritty/alacritty.toml"
click node_tmux "https://github.com/cchristion/lemon/blob/main/.config/tmux/tmux.conf"
click node_aria2 "https://github.com/cchristion/lemon/blob/main/.config/aria2/aria2.conf"
click node_nix "https://github.com/cchristion/lemon/blob/main/.config/nix/nix.conf"
click node_ruff "https://github.com/cchristion/lemon/blob/main/.config/ruff/pyproject.toml"
click node_dockerfile "https://github.com/cchristion/lemon/blob/main/Dockerfile"

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_installer,node_configtree,node_user toneBlue
class node_zshenv,node_zshrc,node_zshlocal,node_bashrc,node_bashlocal toneAmber
class node_nvim,node_firefox,node_git,node_alacritty,node_tmux,node_aria2,node_nix,node_ruff toneMint
class node_dockerfile,node_containerenv toneRose
```

## Components

### Configuration deployment

- [Configuration installer](https://github.com/cchristion/lemon/blob/main/install.sh): `install.sh`
- [Configuration tree](https://github.com/cchristion/lemon/tree/main/.config): `.config`

### Shell environment

- [Zsh environment](https://github.com/cchristion/lemon/blob/main/.zshenv): `.zshenv`
- [Zsh startup](https://github.com/cchristion/lemon/blob/main/.config/zsh/.zshrc): `.config/zsh/.zshrc`
- [Zsh extras](https://github.com/cchristion/lemon/blob/main/.config/zsh/.extras): `.config/zsh/.extras`
- [Bash startup](https://github.com/cchristion/lemon/blob/main/.config/bash/.bashrc): `.config/bash/.bashrc`
- [Bash local settings](https://github.com/cchristion/lemon/blob/main/.config/bash/.local): `.config/bash/.local`

### Application settings

- [Neovim settings](https://github.com/cchristion/lemon/blob/main/.config/nvim/init.lua): `.config/nvim/init.lua`
- [Firefox settings](https://github.com/cchristion/lemon/blob/main/.config/firefox/user.js): `.config/firefox/user.js`
- [Git settings](https://github.com/cchristion/lemon/blob/main/.config/git/config): `.config/git/config`
- [Alacritty settings](https://github.com/cchristion/lemon/blob/main/.config/alacritty/alacritty.toml): `.config/alacritty/alacritty.toml`
- [Tmux settings](https://github.com/cchristion/lemon/blob/main/.config/tmux/tmux.conf): `.config/tmux/tmux.conf`
- [Aria2 settings](https://github.com/cchristion/lemon/blob/main/.config/aria2/aria2.conf): `.config/aria2/aria2.conf`
- [Nix settings](https://github.com/cchristion/lemon/blob/main/.config/nix/nix.conf): `.config/nix/nix.conf`
- [Ruff settings](https://github.com/cchristion/lemon/blob/main/.config/ruff/pyproject.toml): `.config/ruff/pyproject.toml`

### Container environment

- [Container definition](https://github.com/cchristion/lemon/blob/main/Dockerfile): `Dockerfile`
- **Docker environment**

### Other components

- **Workspace user**

## Connections

- Workspace user → Configuration installer: runs installer (evidence: `README.md`)
- Configuration installer → Configuration tree: installs settings (evidence: `README.md`)
- Workspace user → Configuration tree: copies on update (evidence: `README.md`)
- Workspace user → Zsh environment: copies on update (evidence: `README.md`)
- Workspace user → Container definition: builds image (evidence: `README.md`)
- Container definition → Docker environment: defines image (evidence: `README.md`)
- Workspace user → Docker environment: runs image (evidence: `README.md`)
