https://github.com/wjl/dotfiles-project
Manage your configuration "dot" files with Git.
https://github.com/wjl/dotfiles-project
configuration dotfiles git shell
Last synced: 3 months ago
JSON representation
Manage your configuration "dot" files with Git.
- Host: GitHub
- URL: https://github.com/wjl/dotfiles-project
- Owner: wjl
- Created: 2024-10-03T03:44:23.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-18T05:54:09.000Z (over 1 year ago)
- Last Synced: 2025-08-13T19:40:33.780Z (11 months ago)
- Topics: configuration, dotfiles, git, shell
- Language: Shell
- Homepage:
- Size: 15.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Dotfiles
Manage your configuration "dot" files with Git.
## Philosophy
All I want for dotfile management is a thin Git wrapper.
The entire program is a small POSIX shell script that started as:
```bash
#!/bin/sh -eu
git \
--git-dir="~/.local/share/dotfiles/dotfiles.git" \
--work-tree="~" \
"$@"
```
It's bigger now, but only because I've added barely enough extra features to eliminate some manual steps and annoyances.
Almost everything else can and should be done with setup programs checked into your dotfiles repository and automatically called by Git hooks.
## ⚠️ **Caution**
* *Your dotfiles generally contain sensitive and/or personal information.*
Anyone with access to your repository can access this information.
* *Setup programs from your repository are run whenever you clone or pull.*
Anyone with access to your repository can cause you to run arbitrary code.
* Therefore, **do not store your dotfiles in a public or insecure repository!**
If you want to share some of your dotfiles publically in Git repositories, carefully curate what you share, and set them up as submodules.
**This is true for all other dotfile managers as well**, but most don't warn you very strongly about this, or worse, assume by default that you are storing your dotfiles on `github.com`.
(I would highly recommend against this.)
## Quick Start (First System)
Run `dotfiles init`, for example:
```bash
curl -fsL https://github.com/wjl/dotfiles-project/raw/refs/heads/master/dotfiles | sh -s init
```
or
```bash
git clone https://github.com/wjl/dotfiles-project.git
./dotfiles-project/dotfiles init
```
This will install dotfiles and initialize a new repository.
After this, you basically just use `dotfiles` just like `git` to manage things, for example:
```bash
dotfiles add
dotfiles commmit -m "Added some config files."
dotfiles remote add origin
dotfiles push
```
## Quick Start (Additional System)
Run `dotfiles clone `, or:
```bash
curl -fsL https://github.com/wjl/dotfiles-project/raw/refs/heads/master/dotfiles | sh -s clone
```
or
```bash
git clone https://github.com/wjl/dotfiles-project.git
./dotfiles-project/dotfiles clone
```
## General Usage
You basically just do `dotfiles `, so you need to know how to use Git.
```
Dotfiles version 1.0.4
by Wesley J. Landaker
See https://github.com/wjl/dotfiles-project
Usage: dotfiles ...
Manage configuration "dot" files with Git.
Commands:
version -- show version information
help -- show this help message
init -- initialize a dotfiles repository
clone -- clone an existing dotfiles repository
setup -- re-run setup programs explicitly
git -- run a Git command in dotfiles context
* -- anything else is passed through to Git
Your files:
Git Repository: /home/you/.local/share/dotfiles/dotfiles.git
Setup Programs: /home/you/.config/dotfiles/setup
```
## Alternatives
I started with a simple Git wrapper years ago.
It was a little clunky, but who cares, it was just for me.
Then I got exited about and tried other dotfiles managers.
A couple of them are pretty good.
Unfortunately, these are various technical, philosophical, and pragmatic reasons that I don't use these anymore.
But you may like them:
* [YADM](https://yadm.io/)
* [chezmoi](https://www.chezmoi.io/)