_ _ _ /\_\ /\_\ /\_\ \/_/ \/_/ \/_/ …because $HOME is where the <3 is!
Ellipsis is a package manager for dotfiles.
$HOMEdoesn't get ravaged.
Requirements: bash, curl, git
Clone and symlink or use handy-dandy installer:
$ curl ellipsis.sh | sh
...no you didn't read that wrong, the ellipsis.sh website also doubles as the installer
You can also specify which packages to install by setting the
PACKAGES variable, i.e.:
$ curl ellipsis.sh | PACKAGES='vim zsh' sh
~/.ellipsis/bin to your
$PATH (or symlink somewhere convenient) and
start managing your dotfiles in style :)
As of version
1.7.3 you can also use the init system to automatically setup
you environment. As a bonus it will allow you to use the powerful
hook to do the same for your packages.
Ellipsis comes with no dotfiles out of the box. To install packages, use
ellipsis install. Packages can be specified by github-user/repo or full
$ ellipsis install ssh://github.com/zeekay/private.git $ ellipsis install zeekay/vim $ ellipsis install zsh
...all work. By convention
package are aliases for
For full usage information you can read the docs or ask help from
the command line with the
You can customize ellipsis by exporting a few different variables:
||Customizes whose dotfiles are installed when you
||Customize location of ellipsis repo cloned during a curl-based install. Defaults to
||Customizes which protocol new packages are cloned with, you can specify
||Customize which folder files are symlinked into, defaults to
||Customize where ellipsis lives on your filesystem, defaults to
||Customize where ellipsis installs packages on your filesystem, defaults to
||Customize location of the logfile, defaults to
export ELLIPSIS_USER="zeekay" export ELLIPSIS_PROTO="ssh" export ELLIPSIS_PATH="~/.el"
A package is any repo with files you want to symlink into
$HOME). By default all of a repository's non-hidden files (read:
not beginning with a
.) will naively be linked into place, with the exception
of a few common text files (
You can customize how ellipsis interacts with your package by adding an
ellipsis.sh file to the root of your project. Here's an example of a complete
Yep, that's it :) If all you want to do is symlink some files into
ellipsis.sh to your package is completely optional. But what if you
need more? That's where hooks come in...
Please consult the docs for more information.
Specific parts that could be off interest:
Pull requests welcome! New code should follow the existing style (and ideally include tests).
Suggest a feature or report a bug? Create an issue!
Ellipsis is open-source software licensed under the MIT license.