How to Automate Dotfiles Installation with a Single-Step OS-Aware Installer
Yes, the issmirnov/dotfiles repository provides a fully automated installer built on the dotbot framework that detects your operating system, initializes submodules, and symlinks all configurations with zero manual file copying.
Managing dotfiles manually involves tedious copying and linking. The issmirnov/dotfiles repository eliminates this friction by providing a single-step automation script that handles the entire installation process across Linux and macOS. By leveraging the dotbot framework, the system parses YAML configurations to create symbolic links, execute shell commands, and apply OS-specific customizations automatically.
How the Automated Installation Works
The install script executes four sequential phases to achieve full automation:
-
Submodule initialization. The script runs
git submodule update --init --recursiveto fetch the dotbot framework (source:install, line 11). -
Base configuration execution. The script invokes
default.conf.yaml, which cleans the home directory (- clean: ['~']), runs shell commands to update caches and create directories, and establishes all core symbolic links (source:default.conf.yaml, lines 1-35). -
OS detection and specific configuration. By checking the
OSTYPEenvironment variable (source:install, lines 16-21), the script selectsubuntu.conf.yamlfor Linux orosx.conf.yamlfor macOS to apply platform-specific dotfiles. -
Post-install hooks. Optional actions such as installing Vim plugins via
vim +PlugInstall +PlugUpdateand rebuilding font caches run automatically.
OS-Aware Configuration Deployment
The installer automatically detects the host environment to apply platform-specific settings without user intervention.
Linux Configuration
When running on Linux, the script loads ubuntu.conf.yaml after the base configuration. This file extends the setup with Linux-specific assets, including X resources, font files, and window manager configurations for i3 and Waybar.
macOS Configuration
On macOS systems (detected via darwin* pattern matching), the installer applies osx.conf.yaml. This configuration includes macOS-specific tooling preferences and window management settings for utilities like Yabai and Skhd.
Minimal Installation for Zsh-Only Environments
For users seeking a lightweight setup, the repository provides the minstall script. This utility reads minimal.conf.yaml and creates only the essential symlinks for the Zsh environment and Git hooks, skipping the full OS-specific configuration. The companion zsh/setup helper script can also set Zsh as the default shell if it is not already configured.
Execute the minimal installer with:
cd ~/.dotfiles
./minstall
Remote One-Liner Installation
The repository supports fully automated remote installation via a single wget pipeline that clones, configures, and links everything:
wget https://smirnov.link/d -O - | sh
This command downloads the repository, executes the full install script, and prints post-installation instructions. Use this method only if you trust the source, as it executes shell code directly from the network.
Verifying the Automated Setup
After execution, confirm successful automation by checking that key files are symbolic links pointing to the repository:
ls -l ~/.zshrc ~/.vimrc ~/.config/htop/htoprc
All entries should show symlink paths referencing your cloned ~/.dotfiles directory, confirming that the automation correctly mapped your environment.
Summary
- The
installscript provides fully automated dotfiles deployment using the dotbot framework. - OS detection automatically selects
ubuntu.conf.yamlfor Linux orosx.conf.yamlfor macOS based on theOSTYPEvariable. - The
minstallscript offers a lightweight alternative for Zsh-only configurations usingminimal.conf.yaml. - A one-liner
wgetcommand enables remote installation without manual repository cloning. - All operations including submodule initialization, directory creation, and symbolic link management require zero manual intervention.
Frequently Asked Questions
How does the dotfiles installer detect which operating system to configure?
The install script checks the OSTYPE environment variable (lines 16-21). If the value matches linux*, it loads ubuntu.conf.yaml; if it matches darwin*, it loads osx.conf.yaml, ensuring the correct platform-specific resources are linked automatically.
What is the difference between ./install and ./minstall?
The ./install script runs the complete automation including all OS-specific configurations and tools, while ./minstall executes a minimal setup using minimal.conf.yaml that only symlinks the Zsh configuration and Git hooks, skipping heavier dependencies.
Is it safe to run the wget one-liner for automated installation?
The command wget https://smirnov.link/d -O - | sh executes code downloaded from the internet. While this provides the fastest way to automate dotfiles installation, you should only run it if you trust the source repository and have verified the shortened URL destination.
Can I customize which files get linked during automated installation?
Yes, the automation is driven by YAML configuration files—default.conf.yaml, ubuntu.conf.yaml, and osx.conf.yaml. You can modify the link: sections in these files to add, remove, or change symlink targets before running the installer.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →