Table of contents
.dotfiles: A shell environment in scripts
These dotfiles collect the shell and editor setup I used across machines. The installer manages packages, configuration files and upstream projects.
- Languages
- 1Code breakdown
- Documented components
- 2Explore modules
- Source documents
- 1Read the instructions
Repository languagesShell 100%1
Shares calculated from GitHub Linguist bytes.
| Language | % | Bytes |
|---|---|---|
| Shell | 31,592 |
1. Overview
1.1. Why it exists
Idempotent multi-distribution installer supporting apt, dnf, pacman with modular Zsh and Vim configurations.
1.2. Best fit
Reproducible shell and developer environment across macOS and Linux servers.
2. Use cases
Bash scripts that install, update and remove a Linux shell setup: vimrc, Oh My Zsh, tmux and dev tools.
- Install the vimrc setup
- DeveloperUpstream projects
install_vimrc in install.sh installs vim and git, clones amix/vimrc into ~/.vim_runtime and runs its installer; edit_vimrc moves NERDTree to the left and turns on line numbers.
- Set up Oh My Zsh and tmux
- DeveloperUpstream projects
install_oh_my_zsh downloads the official Oh My Zsh installer with wget; edit_oh_my_zsh switches the theme and writes a minimal prompt theme; install_tmux writes a full ~/.tmux.conf.
- Install dev toolchains
- DeveloperOS package manager
bash install.sh <option> runs one installer (Python, JDK, nvm, .NET, Go, Rust, Docker, kubectl, AWS CLI, Azure CLI, JupyterLab, network tools); install_package reads /etc/os-release to pick apt-get, pacman, dnf, yum or brew.
- Update the scripts and vimrc
- DeveloperUpstream projects
update.sh defines update_install_script (git pull, then bash install.sh) and update_vimrc (git pull --rebase in ~/.vim_runtime, then update_plugins.py); the file only defines them, so it is meant to be sourced.
- Remove tools with backups
- DeveloperOS package manager
uninstall.sh copies ~/.vimrc and ~/.tmux.conf to .backup files before deleting them, and purges JDK, Python, Rust, Go, Jupyter, AWS CLI, Azure CLI and nvm; run with bash, it calls every uninstall function in turn.
- Show neofetch at login
- DeveloperOS package manager
motd/motd.sh installs neofetch with apt-get when missing and writes /etc/update-motd.d/10-neofetch so the system summary appears in the login banner.
2.1. Scenario: Set up a fresh Ubuntu machine
- Clone the repository and run bash install.sh with no option to print the usage() list.
- Run bash install.sh install_vimrc to install vim and git and clone amix/vimrc into ~/.vim_runtime.
- Run bash install.sh install_oh_my_zsh, then install_tmux, to get zsh and a written ~/.tmux.conf.
- Run bash install.sh install_docker; it fetches get.docker.com and Docker Compose 1.29.2.
- On a server, run motd/motd.sh as root so neofetch shows at each SSH login.
Files readREADME.mdinstall.shupdate.shuninstall.shmotd/motd.sh
3. Getting started
These commands come from the repository documentation. They were not run during this review.
bash install.sh
source install.sh
install_vimrc4. Repository references
Excerpts from the repository’s guides, in their original language. Links open the inspected source revision.
Prerequisites and first run
4.1. Installation
README.md
4.2. Uninstallation
README.md
Configuration and usage
4.3. cli_tools
README.md
Operations and troubleshooting
4.4. Updating
README.md
5. Features and components 2
- Package installation
- install.sh reads the distribution from /etc/os-release, then selects apt, pacman, dnf or yum. exec_root wraps commands that need elevated privileges. Package installation and configuration changes therefore share one script.
- Editor and shell setup
- The Vim path installs amix/vimrc and applies local changes, including line numbers and the file-tree position. Other functions install Oh My Zsh. update.sh and uninstall.sh are separate maintenance entry points.
6. Architecture
Expand a component to follow its connections, or explore the full diagram.
install.sh
Distribution detection
- From install.sh
- To System packages
System packages
Vim and Zsh configuration
- From System packages
Mermaid Interactive diagram
System overview of the components and connections verified in the repository.

flowchart LR
n0["install.sh"]
n1["Distribution detection"]
n2["System packages"]
n3["Vim and Zsh configuration"]
n0 --> n1
n1 --> n2
n2 --> n3
Text version of the diagram
- install.sh → Distribution detection
- Distribution detection → System packages
- System packages → Vim and Zsh configuration
Follow one path through the code
Follow install_vimrc from its package request to the upstream clone, then to the edits in ~/.vim_runtime. This shows which files the installer owns and which belong to another project.
7. Technical dossier
Built from the source at commit 52ff3c1 (5 files). Each item comes from a pattern match in the code, so open the linked file before relying on it.
7.1. Layers and modules
Folders are sorted into layers by name, from the user interface down to data access. Because the sorting uses names only, the diagram says nothing about calls between layers.
Mermaid Layered view
flowchart TB
subgraph L_core["Core source"]
direction TB
core_0["(root)<br/>3 files"]
core_1["motd<br/>1 file"]
end
7.2. C4 model
From system context to code declarations. Each level reflects the available source evidence.
UML 1 · System context
The widest C4 view: who uses the project and which outside systems and data stores it relies on. Rendered with uml-mcp.
PlantUML source
@startuml
!include <C4/C4_Context>
LAYOUT_LEFT_RIGHT()
System(SYS, ".dotfiles", "These dotfiles collect the shell and editor setup I used across machi…")
@enduml
Level 2: the available sources do not support this view.
UML 3 · Components and layers
Modules grouped by source-layer classification. Boundaries show organization, not runtime isolation or call relationships. Rendered with uml-mcp.
PlantUML source
@startuml
!include <C4/C4_Component>
LAYOUT_TOP_DOWN()
System_Boundary(SYS, ".dotfiles") {
Boundary(L0, "Core source", "layer") {
Component(M0_0, "(root)", ".sh", "3 files")
Component(M0_1, "motd", ".sh", "1 files")
}
}
@enduml
UML 4 · Code
Selected declarations, fields and methods grouped by source file. No inheritance or call edges are inferred. Rendered with uml-mcp.
PlantUML source
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
top to bottom direction
hide empty members
package ".dotfiles" {
object "install.sh" as FN0 {
exec_root()
dist_check()
install_package()
install_vimrc()
edit_vimrc()
install_oh_my_zsh()
}
object "uninstall.sh" as FN1 {
uninstall_vimrc()
uninstall_tmux()
uninstall_jdk()
uninstall_python()
uninstall_rust()
uninstall_go()
}
object "update.sh" as FN2 {
update_install_script()
update_vimrc()
}
}
@enduml
7.3. Business logic
No classes were extracted, so these are the largest source files and their functions.
install.shexec_root, dist_check, install_package, install_vimrc, edit_vimrc, install_oh_my_zshuninstall.shuninstall_vimrc, uninstall_tmux, uninstall_jdk, uninstall_python, uninstall_rust, uninstall_goupdate.shupdate_install_script, update_vimrcmotd/motd.sh- No named functions.
7.4. External integrations
Hosts named in the code
d1vvhvl2y92vvt.cloudfront.net1 filesinstall.sh:678dl.k8s.io1 filesinstall.sh:709
7.5. CI/CD pipeline
No CI/CD pipeline in the repository. The code is built and run by hand, as described above.
7.6. Deployment
Mermaid Deployment diagram
flowchart LR
repo[("GitHub repository")]
local["Local machine"]
repo -->|"clone and run"| local
The repository has no Dockerfile, Compose file or hosting configuration, so the code runs on the machine that clones it.
The available sources do not document the remaining sections.
8. Reference
5 / 5 eligible files read (6 in the tree); 0 oversized, 0 failed reads and 0 syntax diagnostics.
What the scan covers
Known dependency/build folders, credential files and binaries are excluded. The scan covers READMEs, recognized manifests and parser-supported source files.
Linguist statistics cover the whole repository and may include other languages.
10. Files to read 3
11. Glossary
Repository
The versioned source files, configuration, and history of a project.
README
The repository’s entry document, usually covering its purpose and initial setup.
Dependency
A library, tool, or service that another component needs to build or run.
CLI
A text interface in which commands and arguments select operations. Exit codes let scripts detect success or failure.
Fork
A separate repository derived from another project. A change in a fork is not automatically a change in the upstream project.
12. References
- antoinebou12. (2026, November 5). .dotfiles. [Software repository] github.com.
- antoinebou12. (2026, November 5). .dotfiles: README. [Repository documentation] github.com.
- antoinebou12. (2026, November 5). install.sh. [Source file] github.com.
- antoinebou12. (2026, November 5). update.sh. [Source file] github.com.
- antoinebou12. (2026, November 5). uninstall.sh. [Source file] github.com.
- Boucher, A. (2026, October 23). .dotfiles: A shell environment in scripts. [Project article] antoineboucher.info.
Sources without a publication date show the date they were last checked, November 5, 2026. File links retain the inspected revision where available.