Skip to content
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.

Configuration and automation
  • Updated
  • 2
  • Shell · 100%
  • MIT
Documented components
2Explore modules
Source documents
1Read the instructions
Repository languagesShell 100%1

Shares calculated from GitHub Linguist bytes.

Shell100%
100%31,592 bytes
Language%Bytes
Shell100%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.

Use-case diagram for .dotfiles: Install the vimrc setup; Set up Oh My Zsh and tmux; Install dev toolchains; Update the scripts and vimrc; Remove tools with backups; Show neofetch at login.dotfilesInstall the vimrc setupSet up Oh My Zsh and tmuxInstall dev toolchainsUpdate the scripts and vimrcRemove tools with backupsShow neofetch at loginDeveloper«system»OS package manager«system»Upstream projects
People on the left, external systems on the right; each oval is a use case backed by the files cited below.
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

  1. Clone the repository and run bash install.sh with no option to print the usage() list.
  2. Run bash install.sh install_vimrc to install vim and git and clone amix/vimrc into ~/.vim_runtime.
  3. Run bash install.sh install_oh_my_zsh, then install_tmux, to get zsh and a written ~/.tmux.conf.
  4. Run bash install.sh install_docker; it fetches get.docker.com and Docker Compose 1.29.2.
  5. 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.

README.md · Installation
bash install.sh
source install.sh
install_vimrc

4. 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

To run the installation script, use the following command:
Read the full instructions ↗

4.2. Uninstallation

README.md

To run the uninstallation script, use the following command:
Read the full instructions ↗
Configuration and usage

4.3. cli_tools

README.md

This repository contains my personal dotfiles for vim, tmux, and oh-my-zsh. These configuration files are used to customize the behavior of these tools to my liking.
Read the full instructions ↗
Operations and troubleshooting

4.4. Updating

README.md

To run the update script, use the following command:
Read the full instructions ↗
Source documentation

1 documents read from 1 candidates.

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.

System components Context
Mermaid Interactive diagram

System overview of the components and connections verified in the repository.

Static architecture view for .dotfiles
Static preview. The interactive diagram replaces it after Mermaid loads.
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
Modules and their main layer
ModuleLayerFilesTypesExtensions
(root)Core source30.sh
motdCore source10.sh

7.2. C4 model

From system context to code declarations. Each level reflects the available source evidence.

UML 1 · System context
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
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
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.sh
exec_root, dist_check, install_package, install_vimrc, edit_vimrc, install_oh_my_zsh
uninstall.sh
uninstall_vimrc, uninstall_tmux, uninstall_jdk, uninstall_python, uninstall_rust, uninstall_go
update.sh
update_install_script, update_vimrc
motd/motd.sh
No named functions.

7.4. External integrations

Hosts named in the code

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

  1. antoinebou12. (2026, November 5). .dotfiles. [Software repository] github.com.
  2. antoinebou12. (2026, November 5). .dotfiles: README. [Repository documentation] github.com.
  3. antoinebou12. (2026, November 5). install.sh. [Source file] github.com.
  4. antoinebou12. (2026, November 5). update.sh. [Source file] github.com.
  5. antoinebou12. (2026, November 5). uninstall.sh. [Source file] github.com.
  6. 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.