Skip to content

Rick Cogley's dotfiles, managed by gnu stow, spit and gum.

License

Notifications You must be signed in to change notification settings

RickCogley/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rick Cogley's dotfiles

I've been trying various methods to manage my dotfiles and get them onto systems, but, it turns out that the easiest thing is to just use Gnu stow, with some shell scripts for non-dotfile system setup. There is a good reason to use something like Homemaker, written in Go, because it has no dependencies so you don't need elevated privileges to install it on any given system, and it can handle configuration, not just your dotfile linking. That said, for me it is not such a challenge so far, to install git and stow on any server I'm managing. If those are not present and I really need my dotfiles on a system, there's always rsync. Once they are linked in, just run a couple of scripts to install what you need.

Here's what I do on a new system assuming git and stow are installed:

% cd $HOME
% git clone https://github.com/RickCogley/dotfiles.git .dotfiles
% cd .dotfiles
% stow zsh
% stow vim
% cd
% ls -la #confirm .zshrc, .vimrc etc

The stow zsh for instance, just finds the folder zsh, and creates symbolic links to its contents in the parent folder, even respecting subfolders. Because your dotfiles repo has been cloned into $HOME/.dotfiles, the symbolic links get created in your user folder, so everything just works as expected. Then you just edit and do your git operations on the files in ~/.dotfiles, and the links will of course just reference those.

Some files might contain secrets, so you can symmetrically encrypt those before committing, then decrypt after using stow. For example these files:

.dotfiles/twty/.config/twty/settings.json.gpg
.dotfiles/git/.gh.json.gpg
.dotfiles/git/.gist-vim.gpg

Encrypted and decrypted like this:

% cd .dotfiles
% gpg --symmetric --cipher-algo TWOFISH twty/.config/twty/settings.json
% gpg —output twty/.config/twty/settings.json —decrypt twty/.config/twty/settings.json.gpg

IMPORTANT: Do not commit the unencrypted files. If you commit a "dummy" version of the files, you can run git update-index --assume-unchanged thefile to prevent accidentally committing changes. However, in this case, since the plain-text version is never wanted, add them to .gitignore:

...
git/.gh.json
git/.gist-vim.json
twty/.config/twty/settings.json
brew/.homebrew_github_api_token
...

Additionally, I'm now using the excellent «zsh for humans» mainly for its ability to copy zsh and other config files (a v3 feature) up to a remote server just by doing z4h ssh me@theserver.com. Smart! Especially if you're mostly only ssh-ing to the server anyway. It also has "sane defaults" so, it's easy to get started with for beginners, though I've been using zsh for quite some time.

Regarding the ~/.ssh folder, its permissions and those of the remote host need to be set up as such:

  • directory - 700
  • private keys - 600
  • public keys - 644
  • remote auth file - 644

About

Rick Cogley's dotfiles, managed by gnu stow, spit and gum.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published