This is my personal dotfiles and dotfiles installer project on github.
The first section is about the dot files themselves. See "Getting Started" to read about the install script.
This describes the configuration dotfiles and the environments supported.
Some of the following may not be fully supported at any time as I change tools.
- Neovim with LazyVim
- Zsh, Oh-My-Zsh
- Tmux, Ghostty
- npm, yarn, node
- i3, sway
fzf,rg,fd,bat,eza- Podman
- Pandoc
- Fedora
Environments I've successfully used with these dot files.
- Linux distros. Fedora, Ubuntu, Alpine, Arch.
- Docker containers: alpine, ubuntu, fedora, debian
- Termux Android app
- Remote RHEL servers over ssh (w/o git installed)
- WSL 1, WSL 2
- Cygwin, Msys2, Git for Windows
- Auto-install of plugin managers on first use, for Neovim, Tmux, Zsh
- Dracula theme for Tmux, Gnome/Gtk, Slack, but with darker background
- True color support across Ghostty, Tmux, Neovim
.zshrcalso serves as a.bashrc- Powerline fonts across alacritty, tmux, neovim
- Mouseless usage as a goal, with vi keybindings when possible
- Similar keybindings for tmux, i3, neovim
- Global git pre-commit hook to run editorconfig checker
- Integration between Jetbrains IDEs and Neovim
- Supplies files for
/etc
- .config/dotfiles location for support files for this dotfiles project.
- [.config/dotfiles/etc] - source location of some system
/etcfiles
- Folder, files, and repos
- Git submodules for OMZ, tmux tpm, qt, my neovim.
- Some kind of google sync/UI for drive and photos
- Separate repo for Neovim configuration
- Private encrypted github repo for /etc and home secrets
- netlify, stripe
.config/git/config,.ssh,.pgpass,.pki,.npmrc,.gnupg,.gptshrc.config/keepassxc/keepassxc.ini- dconf as a text file
- Keep
passwords.kdbxin Google drive. - Move personal scripts from
~/.local/binto~/bin
- Other data integrations
- GSConnect
- Configure firefox with sync
- Mappings and configuration
- Better integrate i3/sway, Neovim, tmux, firefox, zathura, tuir, vifm, jetbrains.
- Switch to Neovim native LSP. Fallback to ALE
- Reintroduce a
.vimrc
- Installs and scripts
- Install script for packages, including Google Drive and Keepass
- Gnome CPU usage
This describes how to install the dotfiles from this project. The script will backup your existing files to a branch.
sh -c "$(curl https://git.io/msdot -L)"or, if you don't have curl, and don't want a prompt
sh -c "$(wget https://git.io/msdot -O -)" -- ior, if you don't want to use the install script, you can install manually: (This will overwrite existing files, without backup.)
cd ~
curl -sO https://raw.githubusercontent.com/mikeslattery/dotfiles/master/.zshrc
bash .zshrc install
source .zshrc
git clone --bare https://github.com/mikeslattery/dotfiles .dotfiles
config config --local status.showUntrackedFiles no
config config --local core.excludesFile ~/.config/dotfiles/gitignore
config config --local submodule.recurse true
config reset --hard
config pull- for install:
gitorunzip,curlorwget - for pushes:
git,openssh, and keys registered with github - In .zshrc:
alias config="git -C $HOME --git-dir=$HOME/.dotfiles --work-tree=$HOME" - In .zshrc:
export "PATH=$PATH:$HOME/.local/bin:$HOME/bin"
- Create a bare git repo at
~/.dotfiles - Checkout files to
$HOME. - Git is configured to not show untracked files
- Backup original files to a branch,
backup-master-$HOSTNAME. (requiresgitbe installed beforehand) - if git user.email isn't set, download
.gitconfigor input interactively. - if git+ssh isn't set up or installed, fall back to https
- if
gitisn't installed, fall back to download files - if
curlisn't installed, fall back towget
So, basically $HOME is a Git repo, but .git is renamed .dotfiles to avoid conflicts with other tools.
The script handles a lot of use cases to ensure success in all environments.
For more information see the .local/bin/dotfiles script.
After installation, the config alias will act like git
but only for your dot files in $HOME.
- Never run:
config add <directory>,config add -A, orconfig commit -a -m <message>. Instead use:config add -uorconfig add <file> - Dot files will not be backed up if you don't have
gitinstalled at time of install. - If you installed without
gitand then decide to installgitlater, you can then rundotfiles installto create the~/.dotfilesbare repo. configworks best if run from home directory.uninstallmay remove some git submodule directories which may break original functionality (e.g. OMZ, tpm, .themes)
This is additional information about the install script. It is located at .local/bin/dotfiles.
config ... - git subcommand. Requires alias in .zshrc
CONFIG git ... - alias sets GIT_DIR, GIT_WORK_TREE
dotfiles help - Usage.
dotfiles etc - Copy ~/.config/dotfiles/etc to /etc
dotfiles ssh <host> - Install to ssh host
dotfiles tar <host> - Copy to ssh host w/o github access
dotfiles docker <id>- Install into a running docker container
dotfiles uninstall - Revert to config as before install.
dotfiles docker <id>- Install into a running docker container
dotfiles curl|wget - Print out install command, for copy-paste purposes.
dotfiles ... - git subcommand. (in case `config` alias not set)
To incorporate a customized copy of the dotfiles script into your dotfiles repo:
- Match the requirements section.
- Create an empty dotfiles repo on https://github.com
- Run:
DOTFILES_NAME=<github-username>/dotfiles sh -c "$(curl https://git.io/msdot -L)"
The only file from this repo you'll inherit is dotfiles,
but it will be modified with your defaults.
DOTFILES_NAME - github owner/project.
DOTFILES_BRANCH - default is master
DOTFILES_DIR - default is ~/.dotfiles
- https://www.atlassian.com/git/tutorials/dotfiles
- Read the .local/bin/dotfiles script
- Other files in .config/dotfiles
Q: Why not use one of the other dotfiles managers or stow?
A: I wanted something as simple as plain git, but no simpler.
Q: But isn't your script also complicated?
A: The script is optional and only for initial install. The core of what it does is simple, but it handles several special cases.
Q: Why not use symlinks to all the files, instead of a bare repo?
A: I used to, but they don't track with file deletions or moves, adding a file required more steps, and uninstalling or moving the repo was a mess.
Q: How did you create the shortened vanity URL? Is it safe?
A: git.io is run by github.
This command allocated the URL:
url="https://raw.githubusercontent.com/mikeslattery/dotfiles/master/.local/bin/dotfiles"
curl https://git.io/ -i -F "url=$url" -F "code=msdot"