{"id":21567897,"url":"https://github.com/mikeslattery/dotfiles","last_synced_at":"2025-06-18T06:34:26.403Z","repository":{"id":80678194,"uuid":"58510805","full_name":"mikeslattery/dotfiles","owner":"mikeslattery","description":"My personal dotfiles and dotfiles installer project","archived":false,"fork":false,"pushed_at":"2025-02-18T15:16:41.000Z","size":38653,"stargazers_count":24,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T14:13:21.779Z","etag":null,"topics":["dotfiles","linux","neovim","tmux","vim","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mikeslattery.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-11T03:15:41.000Z","updated_at":"2025-03-27T13:06:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"3d86437f-570e-4f0a-958c-e70a78c2e772","html_url":"https://github.com/mikeslattery/dotfiles","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mikeslattery/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeslattery%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeslattery%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeslattery%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeslattery%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikeslattery","download_url":"https://codeload.github.com/mikeslattery/dotfiles/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeslattery%2Fdotfiles/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260506556,"owners_count":23019416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotfiles","linux","neovim","tmux","vim","zsh"],"created_at":"2024-11-24T11:00:37.944Z","updated_at":"2025-06-18T06:34:21.392Z","avatar_url":"https://github.com/mikeslattery.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotfiles project\n\n[This](https://github.com/mikeslattery/dotfiles) is my personal dotfiles\nand dotfiles installer project on github.\n\n![](https://i.imgur.com/1FlkC12.png)\n\nThe first section is about the dot files themselves.\nSee [\"Getting Started\"](#getting-started) to read about the install script.\n\n## Supported Environment\n\nThis describes the configuration dotfiles and the environments supported.\n\nSome of the following may not be fully supported at any time as I change tools.\n\n### Software\n\n* Neovim, Vim, IDEAVim\n* Zsh, Oh-My-Zsh\n* Tmux, Alacritty\n* npm, yarn, node\n* i3, sway\n* `fzf`, `rg`, `fd`, `bat`, `exa`\n* Podman\n\n### Operating Environments\n\nEnvironments I've successfully used with these dot files.\n\n* Linux distros.  Fedora, Ubuntu, Alpine, Arch.\n* Docker containers: alpine, ubuntu, fedora, debian\n* Termux Android app\n* Remote RHEL servers over ssh (w/o git installed)\n* WSL 1  (WSL 2 not tested)\n* Cygwin, Msys2\n* Git for Windows (stripped down Msys2)\n\n### Notable Features of my configuration\n\n* Auto-install of plugin managers for Neovim, Tmux, Zsh, on first use\n* Dracula theme for Neovim, Tmux, Alacritty, i3/sway, Gtk, Slack, but with darker background\n* [True color](https://gist.github.com/andersevenrud/015e61af2fd264371032763d4ed965b6) support across alacritty, tmux, Neovim \n* `.zshrc` also serves as a `.bashrc`\n* `init.vim` also serves as a `.vimrc`\n* Powerline fonts across alacritty, tmux, neovim\n* Mouseless usage as a goal, with vi keybindings when possible\n* Similar keybindings for tmux, i3, neovim\n* Global git pre-commit hook to run editorconfig checker\n* Integration between Jetbrains IDEs and Neovim\n* Supplies files for `/etc`\n\n### Notable individual files and directories\n\n* [.vimrc](.vimrc) implements Neovim defaults and then sources [.config/nvim/init.vim](.config/nvim/init.vim)\n* [.config/dotfiles](.config/dotfiles) location for support files for this dotfiles project.\n\n### Various high level To-Dos\n\n* Folder, files, and repos\n  * Git submodules for OMZ, tmux tpm, qt, my neovim.\n  * Some kind of google sync/UI for drive and photos\n  * Separate repo for Neovim configuration\n  * Private encrypted github repo for /etc and home secrets\n    * netlify, stripe\n    * `.config/git/config`, `.ssh`, `.pgpass`, `.pki`, `.npmrc`, `.gnupg`, `.gptshrc`\n    * `.config/keepassxc/keepassxc.ini`\n    * dconf as a text file\n  * Keep `passwords.kdbx` in Google drive.\n  * Move personal scripts from `~/.local/bin` to `~/bin`\n* Other data integrations\n  * GSConnect\n  * Configure firefox with sync\n* Mappings and configuration\n  * Better integrate i3/sway, Neovim, tmux, firefox, zathura, tuir, vifm, jetbrains.\n  * Switch to Neovim native LSP.  Fallback to ALE\n* Installs and scripts\n  * Install script for packages, including Google Drive and Keepass\n  * [Gnome CPU usage](https://github.com/corecoding/Vitals)\n\n## Getting started\n\nThis describes how to install the dotfiles from this project.\nThe script will backup your existing files to a branch.\n\n### To install\n\n```sh\nsh -c \"$(curl https://git.io/msdot -L)\"\n```\n\nor, if you don't have `curl`, and don't want a prompt\n\n```sh\nsh -c \"$(wget https://git.io/msdot -O -)\" -- i\n```\n\nor, if you don't want to use the install script, you can install manually:\n(This will overwrite existing files, without backup.)\n\n```sh\ncd ~\ncurl -sO https://raw.githubusercontent.com/mikeslattery/dotfiles/master/.zshrc\nbash .zshrc install\nsource .zshrc\ngit clone --bare https://github.com/mikeslattery/dotfiles .dotfiles\nconfig config --local status.showUntrackedFiles no\nconfig config --local core.excludesFile ~/.config/dotfiles/gitignore\nconfig config --local submodule.recurse true\nconfig reset --hard\nconfig pull\n```\n\n### Requirements\n\n- for install:  `git` or `unzip`, `curl` or `wget`\n- for pushes:   `git`, `openssh`, and keys registered with github\n- In [.zshrc](.zshrc):    `alias config=\"git -C $HOME --git-dir=$HOME/.dotfiles --work-tree=$HOME\"`\n- In .zshrc:    `export \"PATH=$PATH:$HOME/.local/bin:$HOME/bin\"`\n\n### What install does\n\n- Create a bare git repo at `~/.dotfiles`\n- Checkout files to `$HOME`.\n- Git is configured to not show untracked files\n- Backup original files to a branch, `backup-master-$HOSTNAME`. (requires `git` be installed beforehand)\n- if git user.email isn't set, download `.gitconfig` or input interactively.\n- if git+ssh isn't set up or installed, fall back to https\n- if `git` isn't installed, fall back to download files\n- if `curl` isn't installed, fall back to `wget`\n\nSo, basically `$HOME` is a Git repo, but `.git` is renamed `.dotfiles` to avoid conflicts with other tools.\nThe script handles a lot of use cases to ensure success in all environments.\n\nFor more information see the [.local/bin/dotfiles](.local/bin/dotfiles) script.\n\n### Managing the dot files\n\nAfter installation, the `config` alias will act like `git`\nbut only for your dot files in `$HOME`.\n\n### Advice and pitfalls\n\n- Never run: `config add \u003cdirectory\u003e`, `config add -A`, or `config commit -a -m \u003cmessage\u003e`.\n  Instead use: `config add -u` or `config add \u003cfile\u003e`\n- Dot files will not be backed up if you don't have `git` installed at time of install.\n- If you installed without `git` and then decide to install `git` later,\n  you can then run `dotfiles install` to create the `~/.dotfiles` bare repo.\n- `config` works best if run from home directory.\n- `uninstall` may remove some git submodule directories\n  which may break original functionality (e.g. OMZ, tpm, .themes)\n\n## Install Script Details\n\nThis is additional information about the install script.\nIt is located at [.local/bin/dotfiles](.local/bin/dotfiles).\n\n### Usage:  (after install)\n\n```\nconfig   ...        - git subcommand.  Requires alias in .zshrc\ndotfiles help       - Usage.\ndotfiles etc        - Copy ~/.config/dotfiles/etc to /etc\ndotfiles ssh \u003chost\u003e - Install to ssh host\ndotfiles tar \u003chost\u003e - Copy to ssh host w/o github access\ndotfiles docker \u003cid\u003e- Install into a running docker container\ndotfiles uninstall  - Revert to config as before install.\ndotfiles docker \u003cid\u003e- Install into a running docker container\ndotfiles curl|wget  - Print out install command, for copy-paste purposes.\ndotfiles ...        - git subcommand. (in case `config` alias not set)\n```\n\n### To make your own\n\nTo incorporate a customized copy of the `dotfiles` script into your dotfiles repo:\n\n1. Match the requirements section.\n2. Create an empty dotfiles repo on \u003chttps://github.com\u003e\n3. Run: `DOTFILES_NAME=\u003cgithub-username\u003e/dotfiles sh -c \"$(curl https://git.io/msdot -L)\"`\n\nThe only file from this repo you'll inherit is `dotfiles`,\nbut it will be modified with your defaults.\n\n### Environmental override variables\n\n```\nDOTFILES_NAME   - github owner/project.\nDOTFILES_BRANCH - default is master\nDOTFILES_DIR    - default is ~/.dotfiles\n```\n\n### More Information\n\n* \u003chttps://www.atlassian.com/git/tutorials/dotfiles\u003e\n* Read the [.local/bin/dotfiles](.local/bin/dotfiles) script\n* Other files in [.config/dotfiles](.config/dotfiles)\n\n## FAQ\n\nQ: Why not use one of the other dotfiles managers or `stow`?\n\nA: I wanted something as simple as plain `git`, but no simpler.\n\nQ: But isn't your script also complicated?\n\nA: The script is optional and only for initial install.\nThe core of what it does is simple,\nbut it handles several special cases.\n\nQ: Why not use symlinks to all the files, instead of a bare repo?\n\nA: I used to, but they don't track with file deletions or moves, \nadding a file required more steps,\nand uninstalling or moving the repo was a mess.\n\nQ: How did you create the shortened vanity URL?  Is it safe?\n\nA: [git.io](https://git.io) is [run by github](https://github.blog/2011-11-10-git-io-github-url-shortener/).\n\nThis command allocated the URL:\n\n```sh\nurl=\"https://raw.githubusercontent.com/mikeslattery/dotfiles/master/.local/bin/dotfiles\"\ncurl https://git.io/ -i -F \"url=$url\" -F \"code=msdot\"\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikeslattery%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikeslattery%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikeslattery%2Fdotfiles/lists"}