├── home ├── .lesskey ├── .ttytterrc ├── .tmate.conf ├── .ackrc ├── .nvim │ ├── site │ │ └── autoload │ │ │ └── plug.vim │ └── init.vim ├── .gitconfig-tarides ├── .gnupg │ ├── dirmngr.conf │ ├── sks-keyservers.netCA.pem │ └── gpg.conf ├── .less ├── .fonts │ └── PowerlineSymbols.otf ├── .hgrc ├── .lein │ └── profiles.clj ├── .msmtprc ├── .mutt │ ├── tag.sh │ ├── muttrc │ ├── offlineimap.py │ └── mutt-gnome-keyring-password.py ├── .cacheme ├── .tmux.conf ├── .offlineimaprc ├── .gitconfig ├── .caffrc ├── .config │ └── nvim │ │ ├── init.vim │ │ └── lua │ │ └── plugins.lua ├── .zshrc └── .spacemacs ├── .gitignore ├── README.md ├── .gitmodules └── COPYING /home/.lesskey: -------------------------------------------------------------------------------- 1 | #env 2 | LESS = -r 3 | -------------------------------------------------------------------------------- /home/.ttytterrc: -------------------------------------------------------------------------------- 1 | ansi=1 2 | readline=1 3 | -------------------------------------------------------------------------------- /home/.tmate.conf: -------------------------------------------------------------------------------- 1 | source-file ~/.tmux.conf 2 | -------------------------------------------------------------------------------- /home/.ackrc: -------------------------------------------------------------------------------- 1 | --color 2 | --type-add=ocaml:ext:mll,mly 3 | -------------------------------------------------------------------------------- /home/.nvim/site/autoload/plug.vim: -------------------------------------------------------------------------------- 1 | ../../vim-plug/plug.vim -------------------------------------------------------------------------------- /home/.gitconfig-tarides: -------------------------------------------------------------------------------- 1 | [user] 2 | email = marek@tarides.com 3 | -------------------------------------------------------------------------------- /home/.gnupg/dirmngr.conf: -------------------------------------------------------------------------------- 1 | hkp-cacert /home/marek/.gnupg/sks-keyservers.netCA.pem 2 | -------------------------------------------------------------------------------- /home/.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Leonidas-from-XIV/dotfiles/master/home/.less -------------------------------------------------------------------------------- /home/.fonts/PowerlineSymbols.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Leonidas-from-XIV/dotfiles/master/home/.fonts/PowerlineSymbols.otf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .netrwhist 2 | tags 3 | *.swp 4 | *.gpg 5 | *.gpg~ 6 | *.gpg.lock 7 | *.kbx 8 | *.pyc 9 | random_seed 10 | home/.gnupg/* 11 | home/.vim/bundle/* 12 | -------------------------------------------------------------------------------- /home/.hgrc: -------------------------------------------------------------------------------- 1 | [ui] 2 | username = Marek Kubica 3 | 4 | [diff] 5 | git = True 6 | 7 | [extensions] 8 | mq = 9 | rebase = 10 | color = 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | dotfiles 2 | ======== 3 | 4 | Configuration for my Linux system. Can be managed with homesick (Ruby) or 5 | homeshick (Shell). Or even with plain old symlinks. Use whatever snippets you 6 | like, it's WTFPL licensed. 7 | -------------------------------------------------------------------------------- /home/.lein/profiles.clj: -------------------------------------------------------------------------------- 1 | {:user {:plugins [[cider/cider-nrepl "0.25.6"] 2 | [lein-kibit "0.1.8" :exclusions [org.clojure/clojure]]] 3 | :dependencies [[hashp "0.2.0"]] 4 | :injections [(require 'hashp.core)]}} 5 | -------------------------------------------------------------------------------- /home/.msmtprc: -------------------------------------------------------------------------------- 1 | defaults 2 | tls on 3 | 4 | account xivilization 5 | host mx.xivilization.net 6 | auth on 7 | tls_fingerprint D3:51:6E:D0:D4:05:12:76:A2:77:75:1C:4F:4E:B9:43:31:5B:28:26 8 | user marek 9 | maildomain xivilization.net 10 | auto_from on 11 | passwordeval gpg -d ~/.mailpass.gpg 12 | 13 | account default : xivilization 14 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "home/.rbenv"] 2 | path = home/.rbenv 3 | url = https://github.com/sstephenson/rbenv.git 4 | branch = master 5 | [submodule "home/.zsh-git-prompt"] 6 | path = home/.zsh-git-prompt 7 | url = https://github.com/olivierverdier/zsh-git-prompt.git 8 | [submodule "home/.nvim/vim-plug"] 9 | path = home/.nvim/vim-plug 10 | url = https://github.com/junegunn/vim-plug.git 11 | -------------------------------------------------------------------------------- /home/.mutt/tag.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | IFS=$'\n\t' 5 | 6 | TAGLIST="" 7 | TAGLIST+="-inbox +calendar -- tag:inbox and from:wiki@stylefruits.de and subject:calendar" 8 | TAGLIST+=$'\n' 9 | TAGLIST+="-inbox +clojure -- tag:inbox and to:clojure@googlegroups.com" 10 | TAGLIST+=$'\n' 11 | TAGLIST+=$(notmuch search --sort=oldest-first --format=text --format-version=2 --output:threads subject:'accepted merge request' | awk '{if (NR%2) {print "+inbox --", $0} else {print "-inbox --", $0}}') 12 | echo "${TAGLIST}" | notmuch tag --batch 13 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2010, 2011, 2012, 2013 Marek Kubica 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. 14 | 15 | -------------------------------------------------------------------------------- /home/.cacheme: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # save as e.g. $HOME/.local/bin/cacheme 3 | # and then chmod u+x $HOME/.local/bin/cacheme 4 | VERBOSE=false 5 | PROG="$(basename $1)" 6 | DIR="${HOME}/.cache/cacheme/${PROG}" 7 | mkdir -p "${DIR}" 8 | EXPIRY=600 # default to 10 minutes 9 | # check if first argument is a number, if so use it as expiration (seconds) 10 | [ "$1" -eq "$1" ] 2>/dev/null && EXPIRY=$1 && shift 11 | [ "$VERBOSE" = true ] && echo "Using expiration $EXPIRY seconds" 12 | CMD="$@" 13 | HASH=$(echo "$CMD" | md5sum | awk '{print $1}') 14 | CACHE="$DIR/$HASH" 15 | test -f "${CACHE}" && [ $(expr $(date +%s) - $(date -r "$CACHE" +%s)) -le $EXPIRY ] || eval "$CMD" > "${CACHE}" 16 | cat "${CACHE}" 17 | -------------------------------------------------------------------------------- /home/.tmux.conf: -------------------------------------------------------------------------------- 1 | # use screen-like keybindings 2 | set -g prefix C-a 3 | 4 | bind-key C-a last-window 5 | bind " " next-window 6 | bind BSpace previous-window 7 | 8 | # status bar 9 | set -g status-bg black 10 | set -g status-fg white 11 | set -g status-left ‘#[fg=green]#H’ 12 | #set-window-option -g window-status-current-bg red 13 | # but turn it off nonetheless 14 | set -g status off 15 | 16 | # use | and - for splitting panes 17 | unbind % 18 | bind | split-window -h 19 | bind - split-window -v 20 | 21 | # first window is 1 22 | set -g base-index 1 23 | 24 | # C-a r reloads the configuration 25 | bind r source-file ~/.tmux.conf 26 | 27 | set -g bell-action any 28 | 29 | # reduce the 500ms-ish delay for escape, making neovim use terrible 30 | set -sg escape-time 10 31 | -------------------------------------------------------------------------------- /home/.mutt/muttrc: -------------------------------------------------------------------------------- 1 | source "~/.mutt/mutt-gnome-keyring-password.py smtp.1.exchange.1and1.eu |" 2 | 3 | set sort=threads 4 | set timeout=10 5 | set alias_file=~/.mutt/aliases 6 | set sort_alias=alias 7 | set reverse_alias=yes 8 | source $alias_file 9 | 10 | # IMAP: offlineimap 11 | set folder = "~/Maildir" 12 | source ~/.mutt/mailboxes 13 | set spoolfile = "+INBOX" 14 | set record = "+Sent\ Items" 15 | set postponed = "+Drafts" 16 | 17 | # https://wiki.archlinux.org/index.php/Mutt#Native_SMTP_support 18 | 19 | set realname = 'Marek Kubica' 20 | set from = marek.kubica@stylefruits.de 21 | set use_from = yes 22 | 23 | set smtp_url=smtp://marek.kubica@stylefruits.de:$imap_pass@smtp.1.exchange.1and1.eu:587 24 | set ssl_starttls = yes 25 | set smtp_authenticators = 'login' 26 | 27 | set sidebar_visible = no 28 | set sidebar_short_path 29 | set sidebar_delim_chars = "/" 30 | bind index,pager B sidebar-toggle-visible 31 | 32 | # HTML mail 33 | auto_view text/html 34 | alternative_order text/plain text/enriched text/html 35 | 36 | # flowed 37 | set text_flowed = yes 38 | 39 | # notmuch 40 | set nm_default_uri = "notmuch:///home/marek/Maildir" 41 | virtual-mailboxes "INBOX" "notmuch://?query=tag:inbox" \ 42 | "Clojure" "notmuch://?query=tag:clojure" 43 | set virtual_spoolfile = yes 44 | -------------------------------------------------------------------------------- /home/.offlineimaprc: -------------------------------------------------------------------------------- 1 | [general] 2 | accounts = sf 3 | pythonfile = ~/.mutt/offlineimap.py 4 | 5 | [Account sf] 6 | # Identifier for the local repository; e.g. the maildir to be synced via IMAP. 7 | localrepository = sf-local 8 | # Identifier for the remote repository; i.e. the actual IMAP, usually non-local. 9 | remoterepository = sf-remote 10 | # Status cache. Default is plain, which eventually becomes huge and slow. 11 | status_backend = sqlite 12 | postsynchook = ionice -c 3 chrt --idle 0 /bin/sh -c "notmuch new && ~/.mutt/tag.sh" 13 | 14 | [Repository sf-local] 15 | # Currently, offlineimap only supports maildir and IMAP for local repositories. 16 | type = Maildir 17 | # Where should the mail be placed? 18 | localfolders = ~/Maildir 19 | 20 | [Repository sf-remote] 21 | # Remote repos can be IMAP or Gmail, the latter being a preconfigured IMAP. 22 | type = IMAP 23 | remotehost = mail.1.exchange.1and1.eu 24 | remoteusereval = get_username("sf-remote") 25 | remotepasseval = get_password("sf-remote") 26 | auth_mechanisms = PLAIN, LOGIN 27 | ssl = yes 28 | cert_fingerprint = a70de63f02df2fc7970e810d7e306af1fa154a14 29 | folderfilter = lambda name: name not in ["Calendar", "Deleted Items"] 30 | 31 | [mbnames] 32 | enabled = yes 33 | filename = ~/.mutt/mailboxes 34 | header = "mailboxes " 35 | peritem = "+%(accountname)s/%(foldername)s" 36 | sep = " " 37 | footer = "\n" 38 | -------------------------------------------------------------------------------- /home/.mutt/offlineimap.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python2 2 | 3 | import gnomekeyring as gkey 4 | 5 | def set_credentials(repo, user, pw): 6 | KEYRING_NAME = "offlineimap" 7 | attrs = { "repo": repo, "user": user } 8 | keyring = gkey.get_default_keyring_sync() 9 | gkey.item_create_sync(keyring, gkey.ITEM_NETWORK_PASSWORD, 10 | KEYRING_NAME, attrs, pw, True) 11 | 12 | def get_credentials(repo): 13 | keyring = gkey.get_default_keyring_sync() 14 | attrs = {"repo": repo} 15 | items = gkey.find_items_sync(gkey.ITEM_NETWORK_PASSWORD, attrs) 16 | return (items[0].attributes["user"], items[0].secret) 17 | 18 | def get_username(repo): 19 | return get_credentials(repo)[0] 20 | def get_password(repo): 21 | return get_credentials(repo)[1] 22 | 23 | if __name__ == "__main__": 24 | import sys 25 | import os 26 | import getpass 27 | if len(sys.argv) != 3: 28 | print "Usage: %s " \ 29 | % (os.path.basename(sys.argv[0])) 30 | sys.exit(0) 31 | repo, username = sys.argv[1:] 32 | password = getpass.getpass("Enter password for user '%s': " % username) 33 | password_confirmation = getpass.getpass("Confirm password: ") 34 | if password != password_confirmation: 35 | print "Error: password confirmation does not match" 36 | sys.exit(1) 37 | set_credentials(repo, username, password) 38 | -------------------------------------------------------------------------------- /home/.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | name = Marek Kubica 3 | email = marek@xivilization.net 4 | signingkey = 575982D187A6E2C5 5 | [color] 6 | branch = auto 7 | diff = auto 8 | interactive = auto 9 | status = auto 10 | [giggle] 11 | main-window-maximized = false 12 | main-window-geometry = 861x732+0+57 13 | history-view-vpane-position = 392 14 | main-window-view = HistoryView 15 | file-view-vpane-position = 577 16 | [alias] 17 | lol = log --graph --decorate --oneline 18 | lola = log --graph --decorate --oneline --all 19 | cat = -p cat-file -p 20 | assume = update-index --assume-unchanged 21 | unassume = update-index --no-assume-unchanged 22 | assumed = "!git ls-files -v | grep ^h | cut -c 3-" 23 | lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset' --abbrev-commit 24 | lgtm = -c core.editor=true merge --no-ff 25 | squash = rebase --autosquash -i 26 | fixup = commit -a --fixup HEAD 27 | patdiff = difftool -y -x patdiff 28 | remaster = fetch origin master:master 29 | remain = fetch origin main:main 30 | [url "git@github.com:Leonidas-from-XIV/"] 31 | insteadOf = github: 32 | [push] 33 | default = current 34 | followTags = true 35 | [github] 36 | user = Leonidas-from-XIV 37 | [rebase] 38 | autoSquash = true 39 | [diff] 40 | compactionHeuristic = true 41 | [fetch] 42 | prune = true 43 | [includeIf "gitdir:~/tarides/"] 44 | path = .gitconfig-tarides 45 | [pull] 46 | ff = only 47 | [mergetool "vimdiff"] 48 | cmd = nvim -d $LOCAL $REMOTE $MERGED -c 'wincmd w' -c 'wincmd J' 49 | [init] 50 | defaultBranch = main 51 | -------------------------------------------------------------------------------- /home/.mutt/mutt-gnome-keyring-password.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | 3 | from __future__ import print_function 4 | import gnomekeyring as gkey 5 | 6 | def set_credentials(server, user, pw): 7 | KEYRING_NAME = "mutt" 8 | attrs = {"server": server, "user": user} 9 | keyring = gkey.get_default_keyring_sync() 10 | gkey.item_create_sync(keyring, gkey.ITEM_NETWORK_PASSWORD, 11 | KEYRING_NAME, attrs, pw, True) 12 | 13 | def get_credentials(server): 14 | keyring = gkey.get_default_keyring_sync() 15 | attrs = {"server": server} 16 | items = gkey.find_items_sync(gkey.ITEM_NETWORK_PASSWORD, attrs) 17 | return (items[0].attributes["user"], items[0].secret) 18 | 19 | def get_username(server): 20 | return get_credentials(server)[0] 21 | def get_password(server): 22 | return get_credentials(server)[1] 23 | 24 | if __name__ == "__main__": 25 | import sys 26 | import os 27 | import getpass 28 | if len(sys.argv) not in (2, 3): 29 | print("Usage: %s []" \ 30 | % (os.path.basename(sys.argv[0]))) 31 | sys.exit(0) 32 | if len(sys.argv) == 3: 33 | server, username = sys.argv[1:] 34 | password = getpass.getpass("Enter password for user '%s': " % username) 35 | password_confirmation = getpass.getpass("Confirm password: ") 36 | if password != password_confirmation: 37 | print("Error: password confirmation does not match") 38 | sys.exit(1) 39 | set_credentials(server, username, password) 40 | else: 41 | server = sys.argv[1] 42 | print('set imap_pass = "%s"' % get_password(server)) 43 | -------------------------------------------------------------------------------- /home/.caffrc: -------------------------------------------------------------------------------- 1 | # .caffrc -- vim:ft=perl: 2 | # This file is in perl(1) format - see caff(1) for details. 3 | 4 | $CONFIG{'owner'} = 'Marek Kubica'; 5 | $CONFIG{'email'} = 'marek@xivilization.net'; 6 | #$CONFIG{'reply-to'} = 'foo@bla.org'; 7 | 8 | # You can get your long keyid from 9 | # gpg --with-colons --list-key 10 | # 11 | # If you have a v4 key, it will simply be the last 16 digits of 12 | # your fingerprint. 13 | # 14 | # Example: 15 | # $CONFIG{'keyid'} = [ qw{FEDCBA9876543210} ]; 16 | # or, if you have more than one key: 17 | # $CONFIG{'keyid'} = [ qw{0123456789ABCDEF 89ABCDEF76543210} ]; 18 | $CONFIG{'keyid'} = [ qw{575982D187A6E2C5} ]; 19 | 20 | # Select this/these keys to sign with 21 | #$CONFIG{'local-user'} = [ qw{575982D187A6E2C5} ]; 22 | 23 | # Additionally encrypt messages for these keyids 24 | #$CONFIG{'also-encrypt-to'} = [ qw{575982D187A6E2C5} ]; 25 | 26 | # Mail template to use for the encrypted part 27 | #$CONFIG{'mail-template'} = << 'EOM'; 28 | #Hi, 29 | # 30 | #please find attached the user id{(scalar @uids >= 2 ? 's' : '')} 31 | #{foreach $uid (@uids) { 32 | # $OUT .= "\t".$uid."\n"; 33 | #};}of your key {$key} signed by me. 34 | # 35 | #If you have multiple user ids, I sent the signature for each user id 36 | #separately to that user id's associated email address. You can import 37 | #the signatures by running each through `gpg --import`. 38 | # 39 | #Note that I did not upload your key to any keyservers. If you want this 40 | #new signature to be available to others, please upload it yourself. 41 | #With GnuPG this can be done using 42 | # gpg --keyserver pool.sks-keyservers.net --send-key {$key} 43 | # 44 | #If you have any questions, don't hesitate to ask. 45 | # 46 | #Regards, 47 | #{$owner} 48 | #EOM 49 | -------------------------------------------------------------------------------- /home/.gnupg/sks-keyservers.netCA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIFizCCA3OgAwIBAgIJAK9zyLTPn4CPMA0GCSqGSIb3DQEBBQUAMFwxCzAJBgNV 3 | BAYTAk5PMQ0wCwYDVQQIDARPc2xvMR4wHAYDVQQKDBVza3Mta2V5c2VydmVycy5u 4 | ZXQgQ0ExHjAcBgNVBAMMFXNrcy1rZXlzZXJ2ZXJzLm5ldCBDQTAeFw0xMjEwMDkw 5 | MDMzMzdaFw0yMjEwMDcwMDMzMzdaMFwxCzAJBgNVBAYTAk5PMQ0wCwYDVQQIDARP 6 | c2xvMR4wHAYDVQQKDBVza3Mta2V5c2VydmVycy5uZXQgQ0ExHjAcBgNVBAMMFXNr 7 | cy1rZXlzZXJ2ZXJzLm5ldCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC 8 | ggIBANdsWy4PXWNUCkS3L//nrd0GqN3dVwoBGZ6w94Tw2jPDPifegwxQozFXkG6I 9 | 6A4TK1CJLXPvfz0UP0aBYyPmTNadDinaB9T4jIwd4rnxl+59GiEmqkN3IfPsv5Jj 10 | MkKUmJnvOT0DEVlEaO1UZIwx5WpfprB3mR81/qm4XkAgmYrmgnLXd/pJDAMk7y1F 11 | 45b5zWofiD5l677lplcIPRbFhpJ6kDTODXh/XEdtF71EAeaOdEGOvyGDmCO0GWqS 12 | FDkMMPTlieLA/0rgFTcz4xwUYj/cD5e0ZBuSkYsYFAU3hd1cGfBue0cPZaQH2HYx 13 | Qk4zXD8S3F4690fRhr+tki5gyG6JDR67aKp3BIGLqm7f45WkX1hYp+YXywmEziM4 14 | aSbGYhx8hoFGfq9UcfPEvp2aoc8u5sdqjDslhyUzM1v3m3ZGbhwEOnVjljY6JJLx 15 | MxagxnZZSAY424ZZ3t71E/Mn27dm2w+xFRuoy8JEjv1d+BT3eChM5KaNwrj0IO/y 16 | u8kFIgWYA1vZ/15qMT+tyJTfyrNVV/7Df7TNeWyNqjJ5rBmt0M6NpHG7CrUSkBy9 17 | p8JhimgjP5r0FlEkgg+lyD+V79H98gQfVgP3pbJICz0SpBQf2F/2tyS4rLm+49rP 18 | fcOajiXEuyhpcmzgusAj/1FjrtlynH1r9mnNaX4e+rLWzvU5AgMBAAGjUDBOMB0G 19 | A1UdDgQWBBTkwyoJFGfYTVISTpM8E+igjdq28zAfBgNVHSMEGDAWgBTkwyoJFGfY 20 | TVISTpM8E+igjdq28zAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQAR 21 | OXnYwu3g1ZjHyley3fZI5aLPsaE17cOImVTehC8DcIphm2HOMR/hYTTL+V0G4P+u 22 | gH+6xeRLKSHMHZTtSBIa6GDL03434y9CBuwGvAFCMU2GV8w92/Z7apkAhdLToZA/ 23 | X/iWP2jeaVJhxgEcH8uPrnSlqoPBcKC9PrgUzQYfSZJkLmB+3jEa3HKruy1abJP5 24 | gAdQvwvcPpvYRnIzUc9fZODsVmlHVFBCl2dlu/iHh2h4GmL4Da2rRkUMlbVTdioB 25 | UYIvMycdOkpH5wJftzw7cpjsudGas0PARDXCFfGyKhwBRFY7Xp7lbjtU5Rz0Gc04 26 | lPrhDf0pFE98Aw4jJRpFeWMjpXUEaG1cq7D641RpgcMfPFvOHY47rvDTS7XJOaUT 27 | BwRjmDt896s6vMDcaG/uXJbQjuzmmx3W2Idyh3s5SI0GTHb0IwMKYb4eBUIpQOnB 28 | cE77VnCYqKvN1NVYAqhWjXbY7XasZvszCRcOG+W3FqNaHOK/n/0ueb0uijdLan+U 29 | f4p1bjbAox8eAOQS/8a3bzkJzdyBNUKGx1BIK2IBL9bn/HravSDOiNRSnZ/R3l9G 30 | ZauX0tu7IIDlRCILXSyeazu0aj/vdT3YFQXPcvt5Fkf5wiNTo53f72/jYEJd6qph 31 | WrpoKqrwGwTpRUCMhYIUt65hsTxCiJJ5nKe39h46sg== 32 | -----END CERTIFICATE----- 33 | -------------------------------------------------------------------------------- /home/.config/nvim/init.vim: -------------------------------------------------------------------------------- 1 | " init.vim by Marek Kubica 2 | 3 | lua require('plugins') 4 | 5 | " colourscheme 6 | set t_Co=256 7 | set background=dark 8 | colorscheme wombat256mod 9 | 10 | "set background=light 11 | "let g:seoul256_background = 256 12 | "colo seoul256 13 | 14 | " don't exit visual mode after indenting/outdenting; inspired by 15 | " http://vimcasts.org/episodes/indentation-commands/ 16 | vmap < >gv 18 | 19 | " sexp editing uses local leader and why not space since its default mapping 20 | " is not all that useful anyway 21 | "nnoremap 22 | "let maplocalleader=" " 23 | let maplocalleader="," 24 | 25 | " automatically exit insert mode after inactivity 26 | au CursorHoldI * stopinsert 27 | au InsertEnter * let updaterestore=&updatetime | set updatetime=4000 28 | au InsertLeave * let &updatetime=updaterestore 29 | 30 | " http://vimcasts.org/episodes/bubbling-text/ 31 | " Bubble single lines 32 | nmap [e 33 | nmap ]e 34 | " Bubble multiple lines 35 | vmap [egv 36 | vmap ]egv 37 | 38 | " copy to clipboard 39 | "set clipboard=unnamedplus 40 | 41 | " hop 42 | nmap w :HopWord 43 | 44 | " Filetype customizations 45 | 46 | " gc* does comments courtesy of vim-commentary, but does not support OCaml 47 | " OOTB, define this stuff 48 | autocmd FileType ocaml setlocal commentstring=(*%s*) shiftwidth=2 49 | " autocmd FileType ocaml map t :MerlinTypeOf 50 | autocmd FileType ocaml vmap t :MerlinTypeOfSel 51 | 52 | " more useful general settings when working with Clojure 53 | autocmd FileType clojure set number nowrap sidescrolloff=7 54 | 55 | " check when file changes externally 56 | set autoread 57 | autocmd FocusGained,BufEnter * :checktime 58 | 59 | " Telescope 60 | nnoremap :Telescope git_files 61 | 62 | " LSP 63 | lua require'lspconfig'.ocamllsp.setup{} 64 | autocmd FileType ocaml map s Lspsaga signature_help 65 | autocmd FileType ocaml map t Lspsaga hover_doc 66 | autocmd FileType ocaml map d lua vim.lsp.buf.definition() 67 | autocmd FileType ocaml map r lua require'lspactions'.rename() 68 | 69 | " my GitHub username is long so whenever I need to refer to it I'll be lazy 70 | iabbrev Leon Leonidas-from-XIV 71 | -------------------------------------------------------------------------------- /home/.config/nvim/lua/plugins.lua: -------------------------------------------------------------------------------- 1 | vim.cmd [[packadd packer.nvim]] 2 | 3 | return require('packer').startup(function() 4 | use 'wbthomason/packer.nvim' 5 | 6 | -- tpope 7 | use 'tpope/vim-commentary' 8 | use 'tpope/vim-repeat' 9 | use 'tpope/vim-surround' 10 | 11 | -- editing 12 | use 'ervandew/supertab' 13 | 14 | -- undo tree 15 | use 'sjl/gundo.vim' 16 | 17 | -- search for files and things 18 | use { 19 | 'nvim-telescope/telescope.nvim', 20 | requires = { {'nvim-lua/plenary.nvim'} } 21 | } 22 | 23 | -- motion 24 | use { 25 | 'phaazon/hop.nvim', 26 | branch = 'v1', -- optional but strongly recommended 27 | config = function() 28 | require'hop'.setup() 29 | end 30 | } 31 | 32 | -- make 33 | use 'neomake/neomake' 34 | 35 | -- multiple cursors 36 | -- use 'terryma/vim-multiple-cursors' 37 | use 'mg979/vim-visual-multi' 38 | 39 | -- formatting 40 | use 'sbdchd/neoformat' 41 | 42 | -- git 43 | use 'duk3luk3/gitignore' 44 | use 'lambdalisue/gina.vim' 45 | use 'rhysd/git-messenger.vim' 46 | 47 | -- looks 48 | -- maybe switch to wallaby theme 49 | use 'vim-scripts/wombat256.vim' 50 | use 'rhysd/wallaby.vim' 51 | use 'junegunn/seoul256.vim' 52 | 53 | use { 54 | 'nvim-lualine/lualine.nvim', 55 | requires = {'kyazdani42/nvim-web-devicons', opt = true} 56 | } 57 | 58 | -- ocaml 59 | use { 60 | 'ocaml/vim-ocaml', 61 | ft = {'ocaml'} 62 | } 63 | 64 | use 'tpope/vim-markdown' 65 | 66 | -- memento mori 67 | use { 68 | 'Leonidas-from-XIV/memento-mori.nvim', 69 | config = function () 70 | vim.g.memento_mori_birthdate = '1988-08-07' 71 | end 72 | } 73 | 74 | -- TODO: fix to make this work, somehow 75 | use { 76 | "folke/which-key.nvim", 77 | config = function() 78 | require("which-key").setup {} 79 | end 80 | } 81 | 82 | -- LSP stuff 83 | use 'neovim/nvim-lspconfig' 84 | use { 85 | 'tami5/lspsaga.nvim', 86 | branch = 'nvim51' 87 | } 88 | use { 89 | 'RishabhRD/lspactions', 90 | requires = { {'nvim-lua/plenary.nvim'}, {'nvim-lua/popup.nvim'}, {'tjdevries/astronauta.nvim'} } 91 | } 92 | use 'ray-x/lsp_signature.nvim' 93 | 94 | -- completion 95 | use 'hrsh7th/nvim-cmp' 96 | 97 | require('lualine').setup({ 98 | options = { 99 | theme = 'powerline' 100 | }, 101 | sections = { 102 | lualine_y = {require('memento-mori').memento_mori} 103 | } 104 | }) 105 | end) 106 | -------------------------------------------------------------------------------- /home/.nvim/init.vim: -------------------------------------------------------------------------------- 1 | " init.vim by Marek Kubica 2 | " You need to call :PlugInstall to get the required bundles 3 | 4 | call plug#begin('~/.local/share/nvim/plugged') 5 | 6 | " tpope 7 | Plug 'tpope/vim-commentary' 8 | Plug 'tpope/vim-repeat' 9 | Plug 'tpope/vim-surround' 10 | 11 | " editing 12 | Plug 'ervandew/supertab' 13 | 14 | " undo tree 15 | Plug 'sjl/gundo.vim' 16 | 17 | " search for files and things 18 | Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' } 19 | Plug 'junegunn/fzf.vim' 20 | 21 | " motion 22 | Plug 'easymotion/vim-easymotion' 23 | 24 | " linting 25 | Plug 'w0rp/ale' 26 | 27 | " git 28 | Plug 'duk3luk3/gitignore' 29 | Plug 'lambdalisue/gina.vim' 30 | 31 | " looks 32 | " maybe switch to wallaby theme 33 | Plug 'vim-scripts/wombat256.vim' 34 | Plug 'vim-airline/vim-airline' 35 | call plug#end() 36 | 37 | " colourscheme 38 | set t_Co=256 39 | set background=dark 40 | colorscheme wombat256mod 41 | 42 | " don't exit visual mode after indenting/outdenting; inspired by 43 | " http://vimcasts.org/episodes/indentation-commands/ 44 | vmap < >gv 46 | 47 | " http://vimcasts.org/episodes/bubbling-text/ 48 | " Bubble single lines 49 | nmap [e 50 | nmap ]e 51 | " Bubble multiple lines 52 | vmap [egv 53 | vmap ]egv 54 | 55 | " fzf 56 | " don't open files multiple times 57 | let g:fzf_buffers_jump = 1 58 | 59 | " always display airline 60 | set laststatus=2 61 | let g:airline_powerline_fonts = 1 62 | 63 | " load Merlin & ocp-indent if installed 64 | if executable("opam") 65 | let s:opamshare = substitute(system('opam config var share'),'\n$','','''') 66 | let s:merlinpath = s:opamshare . "/merlin/vim" 67 | if isdirectory(s:merlinpath) 68 | execute "set rtp+=" . s:merlinpath 69 | endif 70 | let s:ocpindentpath = s:opamshare . "/ocp-indent/vim" 71 | if isdirectory(s:ocpindentpath) 72 | execute "set rtp+=" . s:ocpindentpath 73 | " set rtp^=s:ocpindentpath 74 | endif 75 | endif 76 | 77 | " ALE 78 | " function! LinterStatus() abort 79 | " let l:counts = ale#statusline#Count(bufnr('')) 80 | 81 | " let l:all_errors = l:counts.error + l:counts.style_error 82 | " let l:all_non_errors = l:counts.total - l:all_errors 83 | 84 | " return l:counts.total == 0 ? 'OK' : printf( 85 | " \ '%dW %dE', 86 | " \ all_non_errors, 87 | " \ all_errors 88 | " \) 89 | " endfunction 90 | 91 | " set statusline=%{LinterStatus()} 92 | 93 | " Filetype customizations 94 | 95 | " gc* does comments courtesy of vim-commentary, but does not support OCaml 96 | " OOTB, define this stuff 97 | autocmd FileType ocaml setlocal commentstring=(*%s*) shiftwidth=2 98 | autocmd FileType ocaml map t :MerlinTypeOf 99 | autocmd FileType ocaml vmap t :MerlinTypeOfSel 100 | -------------------------------------------------------------------------------- /home/.zshrc: -------------------------------------------------------------------------------- 1 | # Set up the prompt 2 | 3 | autoload -Uz promptinit 4 | promptinit 5 | prompt walters 6 | 7 | export EDITOR=vim 8 | 9 | # make words to be shell words (argv entries), ^W deletes whole arguments 10 | autoload -U select-word-style 11 | select-word-style shell 12 | 13 | # Fedora might have vimx, fix the mess 14 | if (( $+commands[vimx] )) 15 | then 16 | alias vim=vimx 17 | export EDITOR=vimx 18 | fi 19 | 20 | # make PATH entries unique by forcing path array to be unique 21 | typeset -U path 22 | 23 | # macOS 24 | if [[ -d /usr/local/bin ]] 25 | then 26 | path[1,0]=/usr/local/bin 27 | fi 28 | 29 | if (( $+commands[brew] && $+commands[jq] )) 30 | then 31 | path[1,0]=/usr/local/opt/coreutils/libexec/gnubin 32 | 33 | # script to cache the output of a command for a certain duration 34 | # brew is slow, so cache its output 35 | cacheme="" 36 | if [[ -e "${HOME}/.cacheme" ]] 37 | then 38 | cacheme="${HOME}/.cacheme" 39 | fi 40 | 41 | kegs=("${(@f)$(${cacheme} brew info --json=v1 --installed | jq -r 'map(select(.keg_only == true) | .name) | .[]')}") 42 | for keg in $kegs; do 43 | kegpath=/usr/local/opt/$keg/bin 44 | path[1,0]=($kegpath) 45 | done 46 | fi 47 | 48 | # check for local OPAM installation 49 | OPAM_LOCATION=~/ocaml/bin 50 | if [ -d $OPAM_LOCATION ] 51 | then 52 | PATH=$OPAM_LOCATION:$PATH 53 | fi 54 | # if OPAM is installed, load it. 55 | . $HOME/.opam/opam-init/init.zsh > /dev/null 2> /dev/null || true 56 | 57 | CABAL_LOCATION=~/.cabal/bin 58 | if [ -d $CABAL_LOCATION ] 59 | then 60 | PATH=$CABAL_LOCATION:$PATH 61 | fi 62 | 63 | # Fedora, https://bugzilla.redhat.com/show_bug.cgi?id=678934 64 | command_not_found_handler () { 65 | local runcnf=1 66 | local retval=127 67 | [ ! -S /var/run/dbus/system_bus_socket ] && local runcnf=0 68 | [ ! -x /usr/libexec/packagekitd ] && local runcnf=0 69 | if [ $runcnf -eq 1 ] 70 | then 71 | /usr/libexec/pk-command-not-found $@ 72 | local retval=$? 73 | fi 74 | return $retval 75 | } 76 | 77 | # Use emacs keybindings even if our EDITOR is set to vi 78 | bindkey -e 79 | 80 | # change directories using directory names only 81 | setopt auto_cd 82 | # push directory onto stack automatically on "cd" 83 | setopt auto_pushd 84 | # extended globbing 85 | setopt extended_glob 86 | # correct misspelled commands 87 | setopt correct 88 | # don't truncate files with redirection > 89 | setopt noclobber 90 | # report background jobs status immediatly 91 | setopt notify 92 | # always hash $PATH before doing completion 93 | setopt hash_list_all 94 | # don't just complete at word end 95 | setopt complete_in_word 96 | # don't kill background jobs at shell exit 97 | setopt nohup 98 | 99 | # Keep 1000 lines of history within the shell and save it to ~/.zsh_history: 100 | HISTSIZE=1000 101 | SAVEHIST=1000 102 | HISTFILE=~/.zsh_history 103 | 104 | # write history immediatly after commands 105 | setopt inc_append_history 106 | # share history between shells 107 | setopt share_history 108 | # write timestamps and duration of commands to history 109 | setopt extended_history 110 | # ignore duplicates 111 | setopt hist_ignore_all_dups hist_save_no_dups hist_find_no_dups 112 | # ignore all commands in history if they start with a space 113 | setopt hist_ignore_space 114 | # strip meaningless blanks from history entries 115 | setopt hist_reduce_blanks 116 | # don't store history commands 117 | setopt hist_no_store 118 | 119 | autoload -U is-at-least 120 | if is-at-least 5.0.5; then 121 | # disable ^ in EXTENDED_GLOB 122 | disable -p '^' 123 | fi 124 | 125 | # magically quote urls when pasting 126 | autoload -U url-quote-magic 127 | zle -N self-insert url-quote-magic 128 | 129 | # no spelling correction 130 | alias cp='nocorrect cp' 131 | alias mkdir='nocorrect mkdir' 132 | alias mv='nocorrect mv' 133 | alias rm='nocorrect rm' 134 | # prefix with space to exclude from history (hist_ignore_space) 135 | alias cd=' cd' 136 | 137 | # colors 138 | alias ls=' ls --color=auto' 139 | alias grep='grep --color=auto' 140 | alias egrep='egrep --color=auto' 141 | 142 | # use ack for ack or ack-grep 143 | (( $+commands[ack-grep] )) && alias ack='ack-grep' 144 | 145 | # internet radio 146 | alias somafm='read "?Which station: " && mplayer -quiet -playlist http://somafm.com/startstream=${REPLY}.pls' 147 | alias di='read "?Which station: " && mplayer -quiet -playlist http://listen.di.fm/public3/${REPLY}.pls' 148 | 149 | # Clojure standalone nREPL on port 33033 (see related .vimrc) 150 | alias nrepl='lein repl :start :port 33033' 151 | 152 | # https://wiki.archlinux.org/index.php/Home_and_End_keys_not_working#Zsh 153 | # gnome-terminal doing strange stuff 154 | bindkey "^[OH" beginning-of-line 155 | bindkey "^[OF" end-of-line 156 | # omg, gnome-terminal, why do you change these? 157 | # thanks to Ctrl-V special key to figure out what the BOL/EOL code du jour is. 158 | bindkey "^[[H" beginning-of-line 159 | bindkey "^[[F" end-of-line 160 | # the normal bindings, just for reference 161 | bindkey "^[[1~" beginning-of-line 162 | bindkey "^[[4~" end-of-line 163 | # also, unbreak the delete key: 164 | # http://pilif.github.com/2004/10/delete-key-in-zsh/ 165 | bindkey "^[[3~" delete-char 166 | bindkey "^[3;5~" delete-char 167 | 168 | # enable searching history with globs: 169 | bindkey "^R" history-incremental-pattern-search-backward 170 | bindkey "^S" history-incremental-pattern-search-forward 171 | 172 | # jump between words with ctrl-arrow 173 | bindkey "^[[1;5D" backward-word 174 | bindkey "^[[1;5C" forward-word 175 | 176 | # search in history prefix with PgUp/PgDown 177 | [[ -n "${terminfo[kpp]}" ]] && bindkey "${terminfo[kpp]}" history-beginning-search-backward 178 | [[ -n "${terminfo[knp]}" ]] && bindkey "${terminfo[knp]}" history-beginning-search-forward 179 | 180 | # make ^Z in shell resume last suspended process 181 | #foreground-last() { 182 | # fg % 183 | #} 184 | #zle -N foreground-last 185 | #bindkey "^Z" foreground-last 186 | 187 | fancy-ctrl-z () { 188 | emulate -LR zsh 189 | if [[ $#BUFFER -eq 0 ]]; then 190 | fg 191 | zle redisplay 192 | else 193 | zle push-input 194 | fi 195 | } 196 | zle -N fancy-ctrl-z 197 | bindkey "^Z" fancy-ctrl-z 198 | 199 | 200 | # easy way to look up ZSH documentation 201 | zman() { 202 | PAGER="less -g -s '+/^ "$1"'" man zshall 203 | } 204 | 205 | # more stuff? check this: 206 | # http://chneukirchen.org/blog/archive/2008/02/10-zsh-tricks-you-may-not-know.html 207 | 208 | # Use modern completion system 209 | autoload -Uz compinit 210 | compinit 211 | 212 | # enable colors 213 | autoload -U colors && colors 214 | 215 | # complete mosh exactly like SSH 216 | compdef mosh=ssh 217 | 218 | zstyle ':completion:*' auto-description 'specify: %d' 219 | zstyle ':completion:*' completer _expand _complete _correct _approximate 220 | zstyle ':completion:*' format 'Completing %d' 221 | zstyle ':completion:*' group-name '' 222 | zstyle ':completion:*' menu select=2 223 | eval "$(dircolors -b)" 224 | zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} 225 | zstyle ':completion:*' list-colors '' 226 | zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s 227 | zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*' 228 | zstyle ':completion:*' menu select=long 229 | zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s 230 | zstyle ':completion:*' use-compctl false 231 | zstyle ':completion:*' verbose true 232 | 233 | zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' 234 | zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd' 235 | 236 | # gentoo prompt theme 237 | 238 | source ~/.zsh-git-prompt/zshrc.sh 239 | 240 | prompt_gentoo_help () { 241 | cat <<'EOF' 242 | This prompt is color-scheme-able. You can invoke it thus: 243 | 244 | prompt gentoo [ [ []]] 245 | 246 | EOF 247 | } 248 | 249 | prompt_gentoo_setup () { 250 | local prompt_gentoo_prompt=${1:-'blue'} 251 | local prompt_gentoo_user=${2:-'green'} 252 | local prompt_gentoo_root=${3:-'red'} 253 | 254 | if [ "$USER" = 'root' ] 255 | then 256 | local base_prompt="%B%F{$prompt_gentoo_root}%m%k " 257 | else 258 | local base_prompt="%B%F{$prompt_gentoo_user}%n@%m%k " 259 | fi 260 | local post_prompt="%b%f%k" 261 | 262 | #setopt noxtrace localoptions 263 | 264 | local path_prompt="%B%F{$prompt_gentoo_prompt}%1~%f" 265 | typeset -g PS1="$base_prompt$path_prompt %# $post_prompt" 266 | typeset -g PS2="$base_prompt$path_prompt %_> $post_prompt" 267 | typeset -g PS3="$base_prompt$path_prompt ?# $post_prompt" 268 | PROMPT=$base_prompt$path_prompt"%b"'$(git_super_status)'"%B%F{$prompt_gentoo_prompt} %# "$post_prompt 269 | } 270 | 271 | prompt_gentoo_setup "$@" 272 | -------------------------------------------------------------------------------- /home/.gnupg/gpg.conf: -------------------------------------------------------------------------------- 1 | # Options for GnuPG 2 | # Copyright 1998, 1999, 2000, 2001, 2002, 2003, 3 | # 2010 Free Software Foundation, Inc. 4 | # 5 | # This file is free software; as a special exception the author gives 6 | # unlimited permission to copy and/or distribute it, with or without 7 | # modifications, as long as this notice is preserved. 8 | # 9 | # This file is distributed in the hope that it will be useful, but 10 | # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the 11 | # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | # 13 | # Unless you specify which option file to use (with the command line 14 | # option "--options filename"), GnuPG uses the file ~/.gnupg/gpg.conf 15 | # by default. 16 | # 17 | # An options file can contain any long options which are available in 18 | # GnuPG. If the first non white space character of a line is a '#', 19 | # this line is ignored. Empty lines are also ignored. 20 | # 21 | # See the man page for a list of options. 22 | 23 | # Uncomment the following option to get rid of the copyright notice 24 | 25 | #no-greeting 26 | 27 | # If you have more than 1 secret key in your keyring, you may want to 28 | # uncomment the following option and set your preferred keyid. 29 | 30 | default-key 575982D187A6E2C5 31 | 32 | # If you do not pass a recipient to gpg, it will ask for one. Using 33 | # this option you can encrypt to a default key. Key validation will 34 | # not be done in this case. The second form uses the default key as 35 | # default recipient. 36 | 37 | #default-recipient some-user-id 38 | #default-recipient-self 39 | 40 | # Use --encrypt-to to add the specified key as a recipient to all 41 | # messages. This is useful, for example, when sending mail through a 42 | # mail client that does not automatically encrypt mail to your key. 43 | # In the example, this option allows you to read your local copy of 44 | # encrypted mail that you've sent to others. 45 | 46 | #encrypt-to some-key-id 47 | 48 | # By default GnuPG creates version 4 signatures for data files as 49 | # specified by OpenPGP. Some earlier (PGP 6, PGP 7) versions of PGP 50 | # require the older version 3 signatures. Setting this option forces 51 | # GnuPG to create version 3 signatures. 52 | 53 | #force-v3-sigs 54 | 55 | # Because some mailers change lines starting with "From " to ">From " 56 | # it is good to handle such lines in a special way when creating 57 | # cleartext signatures; all other PGP versions do it this way too. 58 | 59 | #no-escape-from-lines 60 | 61 | # If you do not use the Latin-1 (ISO-8859-1) charset, you should tell 62 | # GnuPG which is the native character set. Please check the man page 63 | # for supported character sets. This character set is only used for 64 | # metadata and not for the actual message which does not undergo any 65 | # translation. Note that future version of GnuPG will change to UTF-8 66 | # as default character set. In most cases this option is not required 67 | # as GnuPG is able to figure out the correct charset at runtime. 68 | 69 | #charset utf-8 70 | 71 | # Group names may be defined like this: 72 | # group mynames = paige 0x12345678 joe patti 73 | # 74 | # Any time "mynames" is a recipient (-r or --recipient), it will be 75 | # expanded to the names "paige", "joe", and "patti", and the key ID 76 | # "0x12345678". Note there is only one level of expansion - you 77 | # cannot make an group that points to another group. Note also that 78 | # if there are spaces in the recipient name, this will appear as two 79 | # recipients. In these cases it is better to use the key ID. 80 | 81 | #group mynames = paige 0x12345678 joe patti 82 | 83 | # Lock the file only once for the lifetime of a process. If you do 84 | # not define this, the lock will be obtained and released every time 85 | # it is needed, which is usually preferable. 86 | 87 | #lock-once 88 | 89 | # GnuPG can send and receive keys to and from a keyserver. These 90 | # servers can be HKP, email, or LDAP (if GnuPG is built with LDAP 91 | # support). 92 | # 93 | # Example HKP keyserver: 94 | # hkp://keys.gnupg.net 95 | # hkp://subkeys.pgp.net 96 | # 97 | # Example email keyserver: 98 | # mailto:pgp-public-keys@keys.pgp.net 99 | # 100 | # Example LDAP keyservers: 101 | # ldap://keyserver.pgp.com 102 | # 103 | # Regular URL syntax applies, and you can set an alternate port 104 | # through the usual method: 105 | # hkp://keyserver.example.net:22742 106 | # 107 | # Most users just set the name and type of their preferred keyserver. 108 | # Note that most servers (with the notable exception of 109 | # ldap://keyserver.pgp.com) synchronize changes with each other. Note 110 | # also that a single server name may actually point to multiple 111 | # servers via DNS round-robin. hkp://keys.gnupg.net is an example of 112 | # such a "server", which spreads the load over a number of physical 113 | # servers. To see the IP address of the server actually used, you may use 114 | # the "--keyserver-options debug". 115 | 116 | #keyserver hkp://keys.gnupg.net 117 | #keyserver mailto:pgp-public-keys@keys.nl.pgp.net 118 | #keyserver ldap://keyserver.pgp.com 119 | 120 | # Common options for keyserver functions: 121 | # 122 | # include-disabled : when searching, include keys marked as "disabled" 123 | # on the keyserver (not all keyservers support this). 124 | # 125 | # no-include-revoked : when searching, do not include keys marked as 126 | # "revoked" on the keyserver. 127 | # 128 | # verbose : show more information as the keys are fetched. 129 | # Can be used more than once to increase the amount 130 | # of information shown. 131 | # 132 | # use-temp-files : use temporary files instead of a pipe to talk to the 133 | # keyserver. Some platforms (Win32 for one) always 134 | # have this on. 135 | # 136 | # keep-temp-files : do not delete temporary files after using them 137 | # (really only useful for debugging) 138 | # 139 | # http-proxy="proxy" : set the proxy to use for HTTP and HKP keyservers. 140 | # This overrides the "http_proxy" environment variable, 141 | # if any. 142 | # 143 | # auto-key-retrieve : automatically fetch keys as needed from the keyserver 144 | # when verifying signatures or when importing keys that 145 | # have been revoked by a revocation key that is not 146 | # present on the keyring. 147 | # 148 | # no-include-attributes : do not include attribute IDs (aka "photo IDs") 149 | # when sending keys to the keyserver. 150 | 151 | #keyserver-options auto-key-retrieve 152 | 153 | # Display photo user IDs in key listings 154 | 155 | # list-options show-photos 156 | 157 | # Display photo user IDs when a signature from a key with a photo is 158 | # verified 159 | 160 | # verify-options show-photos 161 | 162 | # Use this program to display photo user IDs 163 | # 164 | # %i is expanded to a temporary file that contains the photo. 165 | # %I is the same as %i, but the file isn't deleted afterwards by GnuPG. 166 | # %k is expanded to the key ID of the key. 167 | # %K is expanded to the long OpenPGP key ID of the key. 168 | # %t is expanded to the extension of the image (e.g. "jpg"). 169 | # %T is expanded to the MIME type of the image (e.g. "image/jpeg"). 170 | # %f is expanded to the fingerprint of the key. 171 | # %% is %, of course. 172 | # 173 | # If %i or %I are not present, then the photo is supplied to the 174 | # viewer on standard input. If your platform supports it, standard 175 | # input is the best way to do this as it avoids the time and effort in 176 | # generating and then cleaning up a secure temp file. 177 | # 178 | # If no photo-viewer is provided, GnuPG will look for xloadimage, eog, 179 | # or display (ImageMagick). On Mac OS X and Windows, the default is 180 | # to use your regular JPEG image viewer. 181 | # 182 | # Some other viewers: 183 | # photo-viewer "qiv %i" 184 | # photo-viewer "ee %i" 185 | # 186 | # This one saves a copy of the photo ID in your home directory: 187 | # photo-viewer "cat > ~/photoid-for-key-%k.%t" 188 | # 189 | # Use your MIME handler to view photos: 190 | # photo-viewer "metamail -q -d -b -c %T -s 'KeyID 0x%k' -f GnuPG" 191 | 192 | # Passphrase agent 193 | # 194 | # We support the old experimental passphrase agent protocol as well as 195 | # the new Assuan based one (currently available in the "newpg" package 196 | # at ftp.gnupg.org/gcrypt/alpha/aegypten/). To make use of the agent, 197 | # you have to run an agent as daemon and use the option 198 | # 199 | use-agent 200 | # 201 | # which tries to use the agent but will fallback to the regular mode 202 | # if there is a problem connecting to the agent. The normal way to 203 | # locate the agent is by looking at the environment variable 204 | # GPG_AGENT_INFO which should have been set during gpg-agent startup. 205 | # In certain situations the use of this variable is not possible, thus 206 | # the option 207 | # 208 | # --gpg-agent-info=::1 209 | # 210 | # may be used to override it. 211 | 212 | # Automatic key location 213 | # 214 | # GnuPG can automatically locate and retrieve keys as needed using the 215 | # auto-key-locate option. This happens when encrypting to an email 216 | # address (in the "user@example.com" form), and there are no 217 | # user@example.com keys on the local keyring. This option takes the 218 | # following arguments, in the order they are to be tried: 219 | # 220 | # cert = locate a key using DNS CERT, as specified in RFC-4398. 221 | # GnuPG can handle both the PGP (key) and IPGP (URL + fingerprint) 222 | # CERT methods. 223 | # 224 | # pka = locate a key using DNS PKA. 225 | # 226 | # ldap = locate a key using the PGP Universal method of checking 227 | # "ldap://keys.(thedomain)". For example, encrypting to 228 | # user@example.com will check ldap://keys.example.com. 229 | # 230 | # keyserver = locate a key using whatever keyserver is defined using 231 | # the keyserver option. 232 | # 233 | # You may also list arbitrary keyservers here by URL. 234 | # 235 | # Try CERT, then PKA, then LDAP, then hkp://subkeys.net: 236 | #auto-key-locate cert pka ldap hkp://subkeys.pgp.net 237 | 238 | keyserver hkps.pool.sks-keyservers.net 239 | keyserver-options no-honor-keyserver-url 240 | fixed-list-mode 241 | keyid-format long 242 | cert-digest-algo SHA512 243 | personal-digest-preferences SHA512 SHA384 SHA256 SHA224 244 | default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed 245 | verify-options show-uid-validity 246 | list-options show-uid-validity 247 | -------------------------------------------------------------------------------- /home/.spacemacs: -------------------------------------------------------------------------------- 1 | ;; -*- mode: emacs-lisp -*- 2 | ;; This file is loaded by Spacemacs at startup. 3 | ;; It must be stored in your home directory. 4 | 5 | (defun dotspacemacs/layers () 6 | "Configuration Layers declaration." 7 | (setq-default 8 | ;; List of additional paths where to look for configuration layers. 9 | ;; Paths must have a trailing slash (ie. `~/.mycontribs/') 10 | dotspacemacs-configuration-layer-path '() 11 | ;; List of configuration layers to load. If it is the symbol `all' instead 12 | ;; of a list then all discovered layers will be installed. 13 | dotspacemacs-configuration-layers 14 | '( 15 | html 16 | sql 17 | ;; ---------------------------------------------------------------- 18 | ;; Example of useful layers you may want to use right away. 19 | ;; Uncomment some layer names and press (Vim style) or 20 | ;; (Emacs style) to install them. 21 | ;; ---------------------------------------------------------------- 22 | ;; auto-completion 23 | ;; better-defaults 24 | emacs-lisp 25 | git 26 | github 27 | version-control 28 | markdown 29 | ;; org 30 | ;; shell 31 | ;; syntax-checking 32 | clojure 33 | erlang 34 | ) 35 | ;; List of additional packages that will be installed wihout being 36 | ;; wrapped in a layer. If you need some configuration for these 37 | ;; packages then consider to create a layer, you can also put the 38 | ;; configuration in `dotspacemacs/config'. 39 | dotspacemacs-additional-packages '() 40 | ;; A list of packages and/or extensions that will not be install and loaded. 41 | dotspacemacs-excluded-packages '() 42 | ;; If non-nil spacemacs will delete any orphan packages, i.e. packages that 43 | ;; are declared in a layer which is not a member of 44 | ;; the list `dotspacemacs-configuration-layers' 45 | dotspacemacs-delete-orphan-packages t)) 46 | 47 | (defun dotspacemacs/init () 48 | "Initialization function. 49 | This function is called at the very startup of Spacemacs initialization 50 | before layers configuration." 51 | ;; This setq-default sexp is an exhaustive list of all the supported 52 | ;; spacemacs settings. 53 | (setq-default 54 | ;; Either `vim' or `emacs'. Evil is always enabled but if the variable 55 | ;; is `emacs' then the `holy-mode' is enabled at startup. 56 | dotspacemacs-editing-style 'vim 57 | ;; If non nil output loading progress in `*Messages*' buffer. 58 | dotspacemacs-verbose-loading nil 59 | ;; Specify the startup banner. Default value is `official', it displays 60 | ;; the official spacemacs logo. An integer value is the index of text 61 | ;; banner, `random' chooses a random text banner in `core/banners' 62 | ;; directory. A string value must be a path to an image format supported 63 | ;; by your Emacs build. 64 | ;; If the value is nil then no banner is displayed. 65 | dotspacemacs-startup-banner 'official 66 | ;; List of items to show in the startup buffer. If nil it is disabled. 67 | ;; Possible values are: `recents' `bookmarks' `projects'." 68 | dotspacemacs-startup-lists '(recents projects) 69 | ;; List of themes, the first of the list is loaded when spacemacs starts. 70 | ;; Press T n to cycle to the next theme in the list (works great 71 | ;; with 2 themes variants, one dark and one light) 72 | dotspacemacs-themes '(wombat 73 | monokai) 74 | ;; If non nil the cursor color matches the state color. 75 | dotspacemacs-colorize-cursor-according-to-state t 76 | ;; Default font. `powerline-scale' allows to quickly tweak the mode-line 77 | ;; size to make separators look not too crappy. 78 | dotspacemacs-default-font '("Droid Sans Mono Dotted" 79 | :size 15 80 | :weight normal 81 | :width normal 82 | :powerline-scale 1.1) 83 | ;; The leader key 84 | dotspacemacs-leader-key "SPC" 85 | ;; The leader key accessible in `emacs state' and `insert state' 86 | dotspacemacs-emacs-leader-key "M-m" 87 | ;; Major mode leader key is a shortcut key which is the equivalent of 88 | ;; pressing ` m`. Set it to `nil` to disable it. 89 | dotspacemacs-major-mode-leader-key "," 90 | ;; Major mode leader key accessible in `emacs state' and `insert state' 91 | dotspacemacs-major-mode-emacs-leader-key "C-M-m" 92 | ;; The command key used for Evil commands (ex-commands) and 93 | ;; Emacs commands (M-x). 94 | ;; By default the command key is `:' so ex-commands are executed like in Vim 95 | ;; with `:' and Emacs commands are executed with ` :'. 96 | dotspacemacs-command-key ":" 97 | ;; If non nil then `ido' replaces `helm' for some commands. For now only 98 | ;; `find-files' (SPC f f) is replaced. 99 | dotspacemacs-use-ido nil 100 | ;; If non nil the paste micro-state is enabled. When enabled pressing `p` 101 | ;; several times cycle between the kill ring content. 102 | dotspacemacs-enable-paste-micro-state nil 103 | ;; Guide-key delay in seconds. The Guide-key is the popup buffer listing 104 | ;; the commands bound to the current keystrokes. 105 | dotspacemacs-guide-key-delay 0.4 106 | ;; If non nil a progress bar is displayed when spacemacs is loading. This 107 | ;; may increase the boot time on some systems and emacs builds, set it to 108 | ;; nil ;; to boost the loading time. 109 | dotspacemacs-loading-progress-bar t 110 | ;; If non nil the frame is fullscreen when Emacs starts up. 111 | ;; (Emacs 24.4+ only) 112 | dotspacemacs-fullscreen-at-startup nil 113 | ;; If non nil `spacemacs/toggle-fullscreen' will not use native fullscreen. 114 | ;; Use to disable fullscreen animations in OSX." 115 | dotspacemacs-fullscreen-use-non-native nil 116 | ;; If non nil the frame is maximized when Emacs starts up. 117 | ;; Takes effect only if `dotspacemacs-fullscreen-at-startup' is nil. 118 | ;; (Emacs 24.4+ only) 119 | dotspacemacs-maximized-at-startup nil 120 | ;; A value from the range (0..100), in increasing opacity, which describes 121 | ;; the transparency level of a frame when it's active or selected. 122 | ;; Transparency can be toggled through `toggle-transparency'. 123 | dotspacemacs-active-transparency 90 124 | ;; A value from the range (0..100), in increasing opacity, which describes 125 | ;; the transparency level of a frame when it's inactive or deselected. 126 | ;; Transparency can be toggled through `toggle-transparency'. 127 | dotspacemacs-inactive-transparency 90 128 | ;; If non nil unicode symbols are displayed in the mode line. 129 | dotspacemacs-mode-line-unicode-symbols t 130 | ;; If non nil smooth scrolling (native-scrolling) is enabled. Smooth 131 | ;; scrolling overrides the default behavior of Emacs which recenters the 132 | ;; point when it reaches the top or bottom of the screen. 133 | dotspacemacs-smooth-scrolling t 134 | ;; If non-nil smartparens-strict-mode will be enabled in programming modes. 135 | dotspacemacs-smartparens-strict-mode nil 136 | ;; Select a scope to highlight delimiters. Possible value is `all', 137 | ;; `current' or `nil'. Default is `all' 138 | dotspacemacs-highlight-delimiters 'all 139 | ;; If non nil advises quit functions to keep server open when quitting. 140 | dotspacemacs-persistent-server nil 141 | ;; List of search tool executable names. Spacemacs uses the first installed 142 | ;; tool of the list. Supported tools are `ag', `pt', `ack' and `grep'. 143 | dotspacemacs-search-tools '("ag" "pt" "ack" "grep") 144 | ;; The default package repository used if no explicit repository has been 145 | ;; specified with an installed package. 146 | ;; Not used for now. 147 | dotspacemacs-default-package-repository nil 148 | ) 149 | ;; User initialization goes here 150 | ) 151 | 152 | (defun dotspacemacs/config () 153 | "Configuration function. 154 | This function is called at the very end of Spacemacs initialization after 155 | layers configuration." 156 | ;; do not highlight the current line. I don't want underlining, EVER. 157 | (global-hl-line-mode -1) 158 | 159 | ;; arrows are consistent with my vim airline 160 | (setq powerline-default-separator 'arrow) 161 | 162 | (defun silence () 163 | (interactive)) 164 | 165 | ;; I hate when the cursor jumps when I click on the window, plz stahp 166 | (define-key evil-motion-state-map [down-mouse-1] 'silence) 167 | ;; also avoid any ' is undefined' when setting to 'undefined 168 | ;; I know, it is deliberate 169 | (define-key evil-motion-state-map [mouse-1] 'silence) 170 | 171 | (evil-leader/set-key "o+" 'evil-numbers/inc-at-pt) 172 | (evil-leader/set-key "o-" 'evil-numbers/dec-at-pt) 173 | 174 | ;; exclude some useless files in helm 175 | (setq helm-ff-skip-boring-files t) 176 | ;; helm does not let you exclude . and .. so just exclude stuff that begins 177 | ;; with a dot and continues with at least one non-dot 178 | ;; first matches .*/ - there might be some path in front 179 | ;; then \\. - the initial dot 180 | ;; then [^\\.]+ - something that is not a dot, at least one time 181 | (setq helm-boring-file-regexp-list '(".*/\\.[^\\.]+")) 182 | 183 | ;; beloved window navigation shortcuts (they seem quite emacs-like) 184 | (define-key evil-normal-state-map (kbd "C-w ") 'evil-window-left) 185 | (define-key evil-normal-state-map (kbd "C-w ") 'evil-window-down) 186 | (define-key evil-normal-state-map (kbd "C-w ") 'evil-window-up) 187 | (define-key evil-normal-state-map (kbd "C-w ") 'evil-window-right) 188 | 189 | ;; default filters for CIDER stacktraces 190 | (setq cider-stacktrace-default-filters '(java tooling dup)) 191 | (add-hook 'clojure-mode-hook #'spacemacs/toggle-aggressive-indent-on) 192 | ;; indentation adjustments 193 | (add-hook 'clojure-mode-hook (lambda () 194 | (define-clojure-indent 195 | (import-loaders 0) 196 | (import-sources 0) 197 | (try+ 0) 198 | (catching-404 0) 199 | (unique-for 0)))) 200 | ) 201 | 202 | ;; Do not write anything past this comment. This is where Emacs will 203 | ;; auto-generate custom variable definitions. 204 | (custom-set-variables 205 | ;; custom-set-variables was added by Custom. 206 | ;; If you edit it by hand, you could mess it up, so be careful. 207 | ;; Your init file should contain only one such instance. 208 | ;; If there is more than one, they won't work right. 209 | '(package-selected-packages 210 | (quote 211 | (web-mode tagedit slim-mode scss-mode sass-mode pug-mode less-css-mode helm-css-scss haml-mode emmet-mode sql-indent uuidgen toc-org org-plus-contrib org-bullets link-hint hide-comnt github-search evil-visual-mark-mode evil-unimpaired evil-ediff dumb-jump f column-enforce-mode marshal ht request gitignore-mode fringe-helper git-gutter+ flx git-commit with-editor peg eval-sexp-fu spinner epl packed bind-map spacemacs-theme spaceline powerline persp-mode page-break-lines neotree magit-gitflow leuven-theme info+ highlight-numbers helm-swoop helm-projectile helm-ag github-clone gitconfig-mode eyebrowse evil-mc evil-matchit evil-magit erlang diff-hl clj-refactor multiple-cursors paredit yasnippet cider clojure-mode buffer-move avy anzu iedit smartparens highlight git-gutter projectile helm popup helm-core gh pcache markdown-mode s magit magit-popup async dash hydra package-build use-package which-key evil ws-butler window-numbering volatile-highlights vi-tilde-fringe undo-tree smooth-scrolling smeargle restart-emacs rainbow-delimiters queue quelpa popwin pkg-info pcre2el parent-mode paradox orgit open-junk-file move-text mmm-mode markdown-toc magit-gh-pulls macrostep lorem-ipsum logito linum-relative inflections indent-guide ido-vertical-mode hungry-delete hl-todo highlight-parentheses highlight-indentation help-fns+ helm-themes helm-mode-manager helm-make helm-gitignore helm-flx helm-descbinds goto-chg google-translate golden-ratio github-browse-file gitattributes-mode git-timemachine git-messenger git-link git-gutter-fringe git-gutter-fringe+ gist gh-md flx-ido fill-column-indicator fancy-battery expand-region exec-path-from-shell evil-visualstar evil-tutor evil-surround evil-search-highlight-persist evil-numbers evil-nerd-commenter evil-lisp-state evil-indent-plus evil-iedit-state evil-exchange evil-escape evil-args evil-anzu elisp-slime-nav edn diminish define-word clean-aindent-mode cider-eval-sexp-fu bracketed-paste bind-key auto-highlight-symbol auto-compile aggressive-indent adaptive-wrap ace-window ace-link ace-jump-helm-line)))) 212 | (custom-set-faces 213 | ;; custom-set-faces was added by Custom. 214 | ;; If you edit it by hand, you could mess it up, so be careful. 215 | ;; Your init file should contain only one such instance. 216 | ;; If there is more than one, they won't work right. 217 | ) 218 | --------------------------------------------------------------------------------