# dboyd42/dotfiles architecture

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

- Interactive diagram: https://gitdiagram.com/dboyd42/dotfiles
- Repository: https://github.com/dboyd42/dotfiles

## Overview

This repository is a personal, multi-platform dotfiles collection. Its documented setup workflow is to install prerequisites, link selected configuration into the user’s environment, then install and configure Neovim plugins. The sampled linker explicitly handles Linux system configuration and Neovim/tmux configuration, with Karabiner added on macOS. The tree also contains desktop, shell, editor, browser, and server configurations; their runtime wiring was not sampled, so the graph shows them as configuration components without guessed relationships.

Main entry points: [`scripts/linking/link-dotfiles.py`](https://github.com/dboyd42/dotfiles/blob/master/scripts/linking/link-dotfiles.py) (Dotfile linker), [`home/.config/nvim`](https://github.com/dboyd42/dotfiles/tree/master/home/.config/nvim) (Neovim setup), [`home/.config/tmux`](https://github.com/dboyd42/dotfiles/tree/master/home/.config/tmux) (Tmux setup), [`home/.config/karabiner`](https://github.com/dboyd42/dotfiles/tree/master/home/.config/karabiner) (Karabiner config)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Setup and linking"]
  node_linker["Dotfile linker<br/>[link-dotfiles.py]"]
end

subgraph group_desktop["Desktop configuration"]
  node_hyprland["Hyprland config<br/>[hypr]"]
  node_waybar["Waybar config<br/>[waybar]"]
  node_qutebrowser["Qutebrowser config<br/>[qutebrowser]"]
end

subgraph group_editor["Editor configuration"]
  node_nvim["Neovim setup<br/>[nvim]"]
end

subgraph group_terminal["Shell and terminal"]
  node_tmux["Tmux setup<br/>[tmux]"]
  node_shell["Shell configuration<br/>[.zshrc]"]
  node_gitconfig["Git configuration<br/>[.gitconfig]"]
end

subgraph group_platform["Platform configuration"]
  node_karabiner["Karabiner config<br/>[karabiner]"]
  node_linuxetc["Linux system config"]
  node_server["Proxmox networking"]
  node_vm["Virtual-machine settings"]
  node_windows["Windows settings<br/>[settings.json]"]
end

node_user(("Dotfiles user"))

node_user -->|"runs setup"| node_linker
node_linker -->|"links Linux files"| node_linuxetc
node_linker -->|"links configuration"| node_nvim
node_linker -->|"links configuration"| node_tmux
node_linker -->|"links on macOS"| node_karabiner

click node_linker "https://github.com/dboyd42/dotfiles/blob/master/scripts/linking/link-dotfiles.py"
click node_nvim "https://github.com/dboyd42/dotfiles/tree/master/home/.config/nvim"
click node_tmux "https://github.com/dboyd42/dotfiles/tree/master/home/.config/tmux"
click node_karabiner "https://github.com/dboyd42/dotfiles/tree/master/home/.config/karabiner"
click node_linuxetc "https://github.com/dboyd42/dotfiles/tree/master/etc"
click node_hyprland "https://github.com/dboyd42/dotfiles/tree/master/home/.config/hypr"
click node_waybar "https://github.com/dboyd42/dotfiles/tree/master/home/.config/waybar"
click node_qutebrowser "https://github.com/dboyd42/dotfiles/tree/master/home/.config/qutebrowser"
click node_shell "https://github.com/dboyd42/dotfiles/blob/master/home/.zshrc"
click node_gitconfig "https://github.com/dboyd42/dotfiles/blob/master/home/.gitconfig"
click node_server "https://github.com/dboyd42/dotfiles/blob/master/servers/proxmox/etc/network/interfaces"
click node_vm "https://github.com/dboyd42/dotfiles/tree/master/VIRTUAL-MACHINES"
click node_windows "https://github.com/dboyd42/dotfiles/blob/master/windows/settings.json"

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_linker,node_user toneBlue
class node_hyprland,node_waybar,node_qutebrowser toneAmber
class node_nvim toneMint
class node_tmux,node_shell,node_gitconfig toneRose
class node_karabiner,node_linuxetc,node_server,node_vm,node_windows toneIndigo
```

## Components

### Setup and linking

- [Dotfile linker](https://github.com/dboyd42/dotfiles/blob/master/scripts/linking/link-dotfiles.py): `scripts/linking/link-dotfiles.py`

### Desktop configuration

- [Hyprland config](https://github.com/dboyd42/dotfiles/tree/master/home/.config/hypr): `home/.config/hypr`
- [Waybar config](https://github.com/dboyd42/dotfiles/tree/master/home/.config/waybar): `home/.config/waybar`
- [Qutebrowser config](https://github.com/dboyd42/dotfiles/tree/master/home/.config/qutebrowser): `home/.config/qutebrowser`

### Editor configuration

- [Neovim setup](https://github.com/dboyd42/dotfiles/tree/master/home/.config/nvim): `home/.config/nvim`

### Shell and terminal

- [Tmux setup](https://github.com/dboyd42/dotfiles/tree/master/home/.config/tmux): `home/.config/tmux`
- [Shell configuration](https://github.com/dboyd42/dotfiles/blob/master/home/.zshrc): `home/.zshrc`
- [Git configuration](https://github.com/dboyd42/dotfiles/blob/master/home/.gitconfig): `home/.gitconfig`

### Platform configuration

- [Karabiner config](https://github.com/dboyd42/dotfiles/tree/master/home/.config/karabiner): `home/.config/karabiner`
- [Linux system config](https://github.com/dboyd42/dotfiles/tree/master/etc): `etc`
- [Proxmox networking](https://github.com/dboyd42/dotfiles/blob/master/servers/proxmox/etc/network/interfaces): `servers/proxmox/etc/network/interfaces`
- [Virtual-machine settings](https://github.com/dboyd42/dotfiles/tree/master/VIRTUAL-MACHINES): `VIRTUAL-MACHINES`
- [Windows settings](https://github.com/dboyd42/dotfiles/blob/master/windows/settings.json): `windows/settings.json`

### Other components

- **Dotfiles user**

## Connections

- Dotfiles user → Dotfile linker: runs setup (evidence: `scripts/linking/link-dotfiles.py`)
- Dotfile linker → Linux system config: links Linux files (evidence: `scripts/linking/link-dotfiles.py`)
- Dotfile linker → Neovim setup: links configuration (evidence: `scripts/linking/link-dotfiles.py`)
- Dotfile linker → Tmux setup: links configuration (evidence: `scripts/linking/link-dotfiles.py`)
- Dotfile linker → Karabiner config: links on macOS (evidence: `scripts/linking/link-dotfiles.py`)
