An open API service indexing awesome lists of open source software.

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.

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/)