No description
Find a file
William Carroll 788edf5e2f Begin supporting Emacs client for clipmenu
After a few weeks of having this idea in the back of my mind, I began supporting
an ivy interface to clipmenu. I tried clipmon.el for awhile, but it wasn't as
good as clipmenu in my experience. To get the best of both worlds, I'm
attempting to write an Emacs client for clipmenu! Stay tuned for more updates.

If I open source this, which I'd like to, I'll need to answer a few questions:
- How should I handle libraries like my prelude.el?
- How can I eject this from my mono-repo and dotfiles?

See the TODOs scattered throughout the module for an idea of the remaining
work. I'd estimate that there's about one to three more hours of work.
2020-01-17 10:56:21 +00:00
configs Begin supporting Emacs client for clipmenu 2020-01-17 10:56:21 +00:00
fish Nixify fish configuration 2020-01-17 10:56:21 +00:00
.envrc Support direnv 2020-01-17 10:56:21 +00:00
.gitignore Ignore .gnupg/random_seed 2020-01-06 15:25:23 +00:00
bookmarks.txt Massive configuration overhaul 2019-12-24 15:21:34 +00:00
common.txt Support common.txt 2019-03-07 15:08:29 +00:00
elisp-conventions.md Massive configuration overhaul 2019-12-24 15:21:34 +00:00
emacs.nix WIP: Nixify Emacs setup 2020-01-17 10:56:21 +00:00
keybindings.md Massive configuration overhaul 2019-12-24 15:21:34 +00:00
Makefile Massive configuration overhaul 2019-12-24 15:21:34 +00:00
README.md Drop support for i3 2020-01-06 15:25:25 +00:00
snippets.md Massive configuration overhaul 2019-12-24 15:21:34 +00:00

dotfiles

I'm documenting this primarily for personal use. This repository contains shell configs, vim configs, emacs configs, a list of commonly used applications, and other items.

Configuration is everything.

Installation

wpgtk and gvcci

$ apti python-pip3
$ gclone deviantfero/wpgtk
$ cd ..
$ gclone FabriceCastel/gvcci
  • TODO: Integrate Emacs themes into wpgtk.
  • TODO: Integrate Vim themes into wpgtk.
  • TODO: add these to the install script
$ ln -s ~/Dropbox/.password-store ~/.password-store
$ ln -s ~/Dropbox/bin ~/bin
$ import_gpg $DOTFILES/configs/shared/gpg/.gnupg/exported
  1. Clipmenu

Clipmenu is a service to store a history of copied strings.

Install it as:

$ cd ~/programming && g clone cdown/clipmenu
  • TODO: Include ~/.config/systemd/user in configs/shared.
  • TODO: Obviate installation.

Ensure that it runs on startup:

$ cd ~/programming/clipmenu
$ cp clipmenu clipmenud clipdel ~/bin # You may not need to do this step.
$ vim init/clipmenud.service
# Change the ExecStart line to point to ~/bin/clipmenud
$ cp init/clipmenud.service ~/.config/systemd/user/clipmenud.service
$ systemctl --user start clipmenud
$ systemctl --user enable clipmenud # This step may be optional.
$ reboot
$ systemctl --user status clipmenud # Verify installation worked.
  1. Install Dropbox
$ cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
$ crontab -e # add the following line...
@reboot ~/.dropbox-dist/dropboxd 2>&1 >/tmp/dropbox.log
$ reboot            # 1/3 verify installation
$ pgrep dropbox     # 2/3 verify installation
$ dropbox.py status # 3/3 verify installation
  1. Authorize computer to access GitHub
$ ssh-keygen -t rsa -b 4096 -C 'wpcarro@gmail.com'
$ eval $(ssh-agent -s)
$ ssh-add ~/.ssh/id_rsa
$ xclip -sel clip <~/.ssh/id_rsa.pub
$ browse github.com # paste ssh public key in settings
  1. Install Antigen, Vundle, nix-env
$ ln -s ~/Dropbox/antigen.zsh ~/antigen.zsh
$ ln -s ~/Dropbox/Vundle.vim ~/.config/nvim/bundle/Vundle.vim
$ cat ~/Dropbox/install_nix.sh | sh
$ for p in $(cat nix-env.txt); do
>   nix-env -i "$p"
> done
  1. Install dotfiles
  • TODO: include steps 2-4 in the make install command.

Missing the following dependencies:

  • stow
  • neovim
  • bat
  • exa
  • fasd
  • opam
  • ghcup
  • ripgrep
  • fzf
  • fd
  • hub
  • pass
$ cd ~/Dropbox/dotfiles
$ DOTFILES="$(pwd)" make install
  1. Install Node dependencies

For now, this deserves its own section since it isn't automated.

gclone tj/n       # clone repo
sudo make install # build from source
n stable          # install the stable version of node
  • TODO: support dependencies like terminal themes

SSHFS

TODO: add explanation about unison, rsync, etc.

SSHFS enables seamless file transfers from your local machine to a remote machine.

Usage

Assuming your remote machine is configured in your ~/.ssh/config (see above), you can mount your remote machine's home directory on your local machine like so:

$ mkdir ~/ec2
$ sshfs ec2:/home/ubuntu ~/ec2 -o reconnect,follow_symlinks

Now your remote machine's home directory can be accessed using the ~/ec2 directory. This directory can be treated as if it were an ordinary local directory. To illustrate how easy it is to use, let's install Vundle onto our remote machine.

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/ec2/.vim/bundle/Vundle.vim

Voila! We now have Vundle installed on our ec2 instance without needing to manually SSH into that machine.

GnuPG

To install GPG run the following:

$ import_gpg

TODO: create a job that runs this periodically.

$ export_gpg

Reference

- sec: secret key
- pub: public key
- ssb: secret sub-key
- sub: public sub-key

Terminals and Fonts

Any terminal or font I choose should pass the following checks:

$ test_true_color
$ test_16_colors
$ test_text_formatting
$ test_unicode
$ test_emojis

Ligatures

If using a font with ligature (e.g. Hasklig) assert that your terminal also support ligatures.