_ _ _ /\_\ /\_\ /\_\ \/_/ \/_/ \/_/ …because $HOME is where the <3 is!
ellipsis is a package manager for dotfiles.
- Creating new packages is trivial (any git repository is already a package).
- Ellipsis packages make it easy to share specific bits of your dotfiles. Say a
friend wants to test out your ZSH setup but doesn't want to adopt the madness
that is your Vim config? No problem, he can just
ellipsis install github-user/dot-zsh
- Quickly see which dotfiles have been modified, and keep them updated and in sync across systems.
- Cross platform, known to work on Mac OS X, Linux, FreeBSD and even Cygwin.
- Completely customizable.
Clone and symlink or use handy-dandy installer:
$ curl -sL ellipsis.sh | sh
You can also specify which packages to install by setting the
PACKAGES variable, i.e.:
$ curl -sL ellipsis.sh | PACKAGES='vim zsh' sh
I recommend adding
~/.ellipsis/bin to your
$PATH, but you can also just
~/.ellipsis/bin/ellipsis somewhere convenient.
Ellipsis comes with no dotfiles out of the box. To add a dotfiles packages, use
ellipsis install. Packages to install can be specified by github-user/repo or
full ssh/git/http(s) urls:
$ ellipsis install ssh://github.com/zeekay/private.git $ ellipsis install zeekay/vim $ ellipsis install zsh
Full usage available via
$ ellipsis -h Usage: ellipsis <command> Options: -h, --help show help -v, --version show version Commands: new create a new package edit edit an installed package install install new package uninstall uninstall package unlink unlink package broken list any broken symlinks clean rm broken symlinks list list installed packages links show symlinks installed by package(s) pull git pull package(s) push git push package(s) status show status of package(s) publish publish package to repository search search package repository
You can customize ellipsis by exporting a few different variables.
Customize whose dotfiles are installed when you
ellipsis install without
specifiying user or a full repo url.
Customize location of ellipsis repo cloned during a curl-based install.
Customizes which url is used to display available packages.
export ELLIPSIS_USER="zeekay" export ELLIPSIS_REPO="https://github.com/zeekay/ellipsis" export ELLIPSIS_PACKAGES_URL="https://raw.githubusercontent.com/zeekay/ellipsis/master/available-packages.txt"
A package is any repo with files you want to symlink into
$HOME. By default a
given repo's non-hidden files (read: not beginning with a
.) will naively be
$HOME. Of course this isn't sufficient for a lot of cases, so you
can customize how ellipsis treats your package by defining hooks in an
ellipsis.sh file at the root of your repository.
Hooks allow you to customize how ellipsis interacts with your package. For
instance if you want to change how your package is installed you can define
pkg.install and specifiy exactly which files are symlinked into
compile any libraries, etc.
The follow hooks/variables are available in your
Customize how package is installed. By default all files are symlinked into
Customize how package is uninstalled. By default all symlinks are removed from
Customize how how changes are pushed
ellipsis push is used.
Customize how how changes are pulled in when
ellipsis pull is used.
Customize output of
Name of your package.
Path to your package.
There are a number of functions ellipsis exposes which can be useful in your package's hooks:
Moves existing file
$1.bak, taking care not to overwrite any existing
Link a single file
$HOME, taking care to backup an existing file.
Links files in
$HOME, taking care to backup any existing files.
Download an installation script from url
curl and execute it.
Platform detection, returns lowercase result of
There are also several wrappers around common git operations which can be used for consistency with the rest of ellipsis: git.clone, git.pull, git.push, and git.status.
Alfred configuration files.
Atom configuration files.
Emacs configuration files.
Default dotfiles for ellipsis.
iTerm2 configuration files.
Vim configuration based on vice framework.
Zsh configuration using zeesh! framework.
Completion file for zsh is included. To use it you need to add
_ellipsis to your
fpath and enable auto-completion:
fpath=($HOME/.ellipsis/comp $fpath) autoload -U compinit; compinit
To suggest a feature or report a bug: http://github.com/zeekay/ellipsis/issues.