# nazmussayad/.dotfiles architecture

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

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

## Overview

This repository is an opinionated Windows/macOS developer-workstation automation system, exposed through command-line utilities and startup tasks. The main user workflow is to run setup or a focused command, which reads workstation configuration, provisions packages or links, and optionally schedules recurring tasks. Separate capabilities cover Git workflows, Slack scheduling, OpenCode configuration, and platform setup. The tree and excerpts support the named utilities and shared helpers; configuration files and several documented setup subsystems are not present in the supplied tree, so their internal wiring is left unspecified.

Main entry points: [`src/scripts`](https://github.com/nazmussayad/.dotfiles/tree/main/src/scripts) (Setup commands), [`src/scripts/packages-sync/main.go`](https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/packages-sync/main.go) (Package sync), [`src/install-windows-tasks/main.go`](https://github.com/nazmussayad/.dotfiles/blob/main/src/install-windows-tasks/main.go) (Scheduled tasks), [`src/scripts/symlink-init/main.go`](https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/symlink-init/main.go) (Symlink management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Workstation Setup"]
  node_setupcmd["Setup commands"]
  node_symlinks["Symlink management<br/>[main.go]"]
  node_winstartup["Windows startup<br/>[main.go]"]
  node_taskinstall["Scheduled tasks<br/>[main.go]"]
  node_taskxml["Task XML helper<br/>[windows-tasks.go]"]
  node_shellcode["Shell and editor setup"]
end

subgraph group_packages["Package Management"]
  node_appsconfig["App configuration<br/>[apps.go]"]
  node_pkgssync["Package sync<br/>[main.go]"]
  node_winget["Winget tools"]
  node_scoop["Scoop tools"]
  node_brew["Homebrew setup<br/>[brew.go]"]
end

subgraph group_daily["Daily Utilities"]
  node_gittools["Git commands"]
  node_slackstatus["Slack schedule<br/>[main.go]"]
  node_slackstartup["Slack startup<br/>[main.go]"]
end

subgraph group_integrations["Integrations"]
  node_opencode["OpenCode setup<br/>[main.go]"]
  node_modelresolve["Model resolution<br/>[resolve.go]"]
end

node_user(("Workstation user"))
node_externalapps{{"Package managers"}}
node_windows{{"Windows scheduler"}}
node_workstation[("Workstation")]
node_modelsources{{"Model sources"}}

node_user -->|"runs setup"| node_setupcmd
node_user -->|"runs command"| node_symlinks
node_user -->|"runs sync"| node_pkgssync
node_user -->|"runs command"| node_gittools
node_user -->|"sets mode"| node_slackstatus
node_user -->|"configures"| node_opencode
node_setupcmd -.->|"invokes"| node_symlinks
node_setupcmd -.->|"invokes"| node_taskinstall
node_setupcmd -.->|"sets up"| node_shellcode
node_symlinks -->|"writes links"| node_workstation
node_pkgssync -->|"loads settings"| node_appsconfig
node_appsconfig -->|"supplies packages"| node_externalapps
node_pkgssync -.->|"uses"| node_winget
node_pkgssync -.->|"uses"| node_scoop
node_brew -.->|"provisions packages"| node_externalapps
node_gittools -->|"operates on repos"| node_workstation
node_slackstatus -->|"sets startup mode"| node_workstation
node_slackstartup -->|"starts or stops Slack"| node_workstation
node_taskinstall -->|"generates task XML"| node_taskxml
node_taskinstall -->|"registers tasks"| node_windows
node_windows -.->|"dispatches task"| node_slackstartup
node_windows -.->|"dispatches task"| node_winstartup
node_opencode -.->|"resolves providers"| node_modelresolve
node_modelresolve -->|"uses model data"| node_modelsources

click node_setupcmd "https://github.com/nazmussayad/.dotfiles/tree/main/src/scripts"
click node_symlinks "https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/symlink-init/main.go"
click node_winstartup "https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/windows-startup.win/main.go"
click node_taskinstall "https://github.com/nazmussayad/.dotfiles/blob/main/src/install-windows-tasks/main.go"
click node_taskxml "https://github.com/nazmussayad/.dotfiles/blob/main/src/helpers/windows-tasks.go"
click node_appsconfig "https://github.com/nazmussayad/.dotfiles/blob/main/src/helpers/apps.go"
click node_pkgssync "https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/packages-sync/main.go"
click node_winget "https://github.com/nazmussayad/.dotfiles/tree/main/src/helpers/winget"
click node_scoop "https://github.com/nazmussayad/.dotfiles/tree/main/src/helpers/scoop"
click node_brew "https://github.com/nazmussayad/.dotfiles/blob/main/src/helpers/brew.go"
click node_gittools "https://github.com/nazmussayad/.dotfiles/tree/main/src/scripts"
click node_slackstatus "https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/slack-status.win/main.go"
click node_slackstartup "https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/slack-startup.win/main.go"
click node_opencode "https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/opencode-configure/main.go"
click node_modelresolve "https://github.com/nazmussayad/.dotfiles/blob/main/src/helpers/opencode/resolve.go"

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_setupcmd,node_symlinks,node_winstartup,node_taskinstall,node_taskxml,node_shellcode,node_user toneBlue
class node_appsconfig,node_pkgssync,node_winget,node_scoop,node_brew,node_workstation toneAmber
class node_gittools,node_slackstatus,node_slackstartup toneMint
class node_opencode,node_modelresolve,node_windows toneRose
class node_externalapps,node_modelsources toneIndigo
```

## Components

### Workstation Setup

- [Setup commands](https://github.com/nazmussayad/.dotfiles/tree/main/src/scripts): `src/scripts`
- [Symlink management](https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/symlink-init/main.go): `src/scripts/symlink-init/main.go`
- [Windows startup](https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/windows-startup.win/main.go): `src/scripts/windows-startup.win/main.go`
- [Scheduled tasks](https://github.com/nazmussayad/.dotfiles/blob/main/src/install-windows-tasks/main.go): `src/install-windows-tasks/main.go`
- [Task XML helper](https://github.com/nazmussayad/.dotfiles/blob/main/src/helpers/windows-tasks.go): `src/helpers/windows-tasks.go`
- **Shell and editor setup**

### Package Management

- [App configuration](https://github.com/nazmussayad/.dotfiles/blob/main/src/helpers/apps.go): `src/helpers/apps.go`
- [Package sync](https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/packages-sync/main.go): `src/scripts/packages-sync/main.go`
- [Winget tools](https://github.com/nazmussayad/.dotfiles/tree/main/src/helpers/winget): `src/helpers/winget`
- [Scoop tools](https://github.com/nazmussayad/.dotfiles/tree/main/src/helpers/scoop): `src/helpers/scoop`
- [Homebrew setup](https://github.com/nazmussayad/.dotfiles/blob/main/src/helpers/brew.go): `src/helpers/brew.go`

### Daily Utilities

- [Git commands](https://github.com/nazmussayad/.dotfiles/tree/main/src/scripts): `src/scripts`
- [Slack schedule](https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/slack-status.win/main.go): `src/scripts/slack-status.win/main.go`
- [Slack startup](https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/slack-startup.win/main.go): `src/scripts/slack-startup.win/main.go`

### Integrations

- [OpenCode setup](https://github.com/nazmussayad/.dotfiles/blob/main/src/scripts/opencode-configure/main.go): `src/scripts/opencode-configure/main.go`
- [Model resolution](https://github.com/nazmussayad/.dotfiles/blob/main/src/helpers/opencode/resolve.go): `src/helpers/opencode/resolve.go`

### Other components

- **Workstation user**
- **Package managers**
- **Windows scheduler**
- **Workstation**
- **Model sources**

## Connections

- Workstation user → Setup commands: runs setup
- Workstation user → Symlink management: runs command
- Workstation user → Package sync: runs sync
- Workstation user → Git commands: runs command
- Workstation user → Slack schedule: sets mode
- Workstation user → OpenCode setup: configures
- Setup commands → Symlink management: invokes
- Setup commands → Scheduled tasks: invokes
- Setup commands → Shell and editor setup: sets up
- Symlink management → Workstation: writes links
- Package sync → App configuration: loads settings
- App configuration → Package managers: supplies packages
- Package sync → Winget tools: uses
- Package sync → Scoop tools: uses
- Homebrew setup → Package managers: provisions packages
- Git commands → Workstation: operates on repos
- Slack schedule → Workstation: sets startup mode
- Slack startup → Workstation: starts or stops Slack
- Scheduled tasks → Task XML helper: generates task XML
- Scheduled tasks → Windows scheduler: registers tasks
- Windows scheduler → Slack startup: dispatches task
- Windows scheduler → Windows startup: dispatches task
- OpenCode setup → Model resolution: resolves providers
- Model resolution → Model sources: uses model data
