aboutsummaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
Diffstat (limited to 'etc')
-rw-r--r--etc/afew/config6
l---------etc/alot/config1
-rwxr-xr-xetc/bash/check.sh57
-rw-r--r--etc/bash/inputrc2
l---------etc/bash/privrc.sh1
-rw-r--r--etc/bash/vcs-ps1.sh158
-rw-r--r--etc/gnupg/gpg.conf1
-rw-r--r--etc/gnupg/sshcontrol1
-rw-r--r--etc/guix/channels.scm20
-rw-r--r--etc/guix/home.scm152
-rw-r--r--etc/guix/system.scm102
-rw-r--r--etc/hg/hgrc2
-rw-r--r--etc/i3/config186
-rw-r--r--etc/info/infokey7
l---------etc/khal/config1
l---------etc/khard/khard.conf1
-rw-r--r--etc/mailcaps/config1
l---------etc/mbsync/config1
l---------etc/msmtp/config1
l---------etc/newsboat/urls1
l---------etc/notmuch/default/config1
l---------etc/notmuch/default/hooks/post-new1
-rw-r--r--etc/python/pythonrc.py15
-rw-r--r--etc/ranger/rc.conf1
-rw-r--r--etc/sbcl/sbclrc.lisp6
-rw-r--r--etc/ssh/known_hosts74
-rw-r--r--etc/tmux/tmux.conf81
l---------etc/weechat/irc.conf1
28 files changed, 882 insertions, 0 deletions
diff --git a/etc/afew/config b/etc/afew/config
new file mode 100644
index 0000000..94341e9
--- /dev/null
+++ b/etc/afew/config
@@ -0,0 +1,6 @@
+[SpamFilter]
+[KillThreadsFilter]
+[ListMailsFilter]
+[ArchiveSentMailsFilter]
+[MeFilter]
+[InboxFilter]
diff --git a/etc/alot/config b/etc/alot/config
new file mode 120000
index 0000000..a92319d
--- /dev/null
+++ b/etc/alot/config
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/alot/config \ No newline at end of file
diff --git a/etc/bash/check.sh b/etc/bash/check.sh
new file mode 100755
index 0000000..7c12dec
--- /dev/null
+++ b/etc/bash/check.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+set -eu
+
+usage() {
+ cat <<-'EOF'
+ Usage:
+ check.sh
+ check.sh -h
+ EOF
+}
+
+help() {
+ cat <<-'EOF'
+
+ Options:
+ -h, --help show this message
+ EOF
+}
+
+for flag in "$@"; do
+ case "$flag" in
+ --)
+ break
+ ;;
+ --help)
+ usage
+ help
+ exit
+ ;;
+ *)
+ ;;
+ esac
+done
+
+while getopts 'h' flag; do
+ case "$flag" in
+ h)
+ usage
+ help
+ exit
+ ;;
+ *)
+ usage >&2
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+
+shellcheck -xe 1090,1091 \
+ "$XDG_CONFIG_HOME"/bash/rc \
+ "$XDG_CONFIG_HOME"/bash/vcs-ps1.sh \
+ "$XDG_CONFIG_HOME"/bash/check.sh \
+ "$XDG_CONFIG_HOME"/bash/privrc.sh
+
+sh -eu ~/.profile
diff --git a/etc/bash/inputrc b/etc/bash/inputrc
new file mode 100644
index 0000000..f5c7095
--- /dev/null
+++ b/etc/bash/inputrc
@@ -0,0 +1,2 @@
+"\e[B": history-search-forward
+"\e[A": history-search-backward
diff --git a/etc/bash/privrc.sh b/etc/bash/privrc.sh
new file mode 120000
index 0000000..243a4bd
--- /dev/null
+++ b/etc/bash/privrc.sh
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/privrc.sh \ No newline at end of file
diff --git a/etc/bash/vcs-ps1.sh b/etc/bash/vcs-ps1.sh
new file mode 100644
index 0000000..f2103da
--- /dev/null
+++ b/etc/bash/vcs-ps1.sh
@@ -0,0 +1,158 @@
+#!/bin/sh
+
+repo_status_git() {
+ BRANCH_NAME="$(git rev-parse --abbrev-ref HEAD)"
+ OUT="$(git status --short --branch --porcelain)"
+ BRANCH_LINE="$(echo "$OUT" | head -n 1)"
+ DIFF_LINES="$(echo "$OUT" | tail -n +2)"
+
+ IS_AHEAD=false
+ IS_BEHIND=false
+ if echo "$BRANCH_LINE" | grep -q 'ahead'; then
+ IS_AHEAD=true
+ fi
+ if echo "$BRANCH_LINE" | grep -q 'behind'; then
+ IS_BEHIND=true
+ fi
+
+ LINE=''
+
+ if [ "$IS_AHEAD" = true ] && [ "$IS_BEHIND" = true ]; then
+ LINE="^^^ $BRANCH_NAME vvv"
+ elif [ "$IS_AHEAD" = true ]; then
+ LINE="^ $BRANCH_NAME ^"
+ elif [ "$IS_BEHIND" = true ]; then
+ LINE="v $BRANCH_NAME v"
+ else
+ LINE="$BRANCH_NAME"
+ fi
+
+ HAS_DIFF=false
+ HAS_UNTRACKED=false
+ if echo "$DIFF_LINES" | grep -q '^[A|D|M| ][M|D| ]'; then
+ HAS_DIFF=true
+ fi
+ if echo "$DIFF_LINES" | grep -q '^[?][?]'; then
+ HAS_UNTRACKED=true
+ fi
+
+ if [ "$HAS_DIFF" = true ]; then
+ COLOR_FN=redb
+ LINE="{$LINE}"
+ elif [ "$IS_AHEAD" = true ] || [ "$IS_BEHIND" = true ]; then
+ COLOR_FN=bluei
+ LINE="[$LINE]"
+ elif [ "$HAS_UNTRACKED" = true ]; then
+ COLOR_FN=lightblue
+ LINE="{$LINE}"
+ else
+ COLOR_FN=green
+ LINE="($LINE)"
+ fi
+
+ color -c "$COLOR_FN" "$LINE"
+
+ BRANCH_COUNT="$(git branch --list | wc -l)"
+ if [ "$BRANCH_COUNT" -gt 1 ]; then
+ color -c lightblue "<$BRANCH_COUNT>"
+ fi
+
+ STASH_COUNT="$(git stash list | wc -l)"
+ if [ "$STASH_COUNT" != 0 ]; then
+ color -c red "*$STASH_COUNT"
+ fi
+
+ color -c blacki " - git/$(git rev-parse HEAD)"
+}
+
+repo_status_fossil() {
+ BRANCH_NAME="$(fossil branch current)"
+
+ if [ -n "$(fossil extras)" ]; then
+ HAS_UNTRACKED=1
+ fi
+
+ BRANCH_MARKER="$BRANCH_NAME"
+
+ if [ -n "${HAS_UNTRACKED:-}" ]; then
+ COLOR_FN=lightblue
+ LINE="($BRANCH_MARKER)"
+ else
+ COLOR_FN=green
+ LINE="($BRANCH_MARKER)"
+ fi
+
+ color -c "$COLOR_FN" "$LINE"
+
+ color -c blacki " - fossil/$(fossil info | awk '/^checkout:/ { print $2 }')"
+}
+
+repo_status_mercurial() {
+ BRANCH_NAME="$(hg branch)"
+}
+
+repo_status() {
+ dir="$(basename "$PWD")"
+ if [ -d .git ]; then
+ repo_status_git
+ elif [ -f "$dir.fossil" ]; then
+ repo_status_fossil
+ elif [ -d .hg ]; then
+ repo_status_mercurial
+ fi
+}
+
+
+error_marker() {
+ STATUS=$?
+ if [ "$STATUS" != 0 ]; then
+ color -c redb " (!! $STATUS !!) "
+ fi
+}
+
+timestamp() {
+ color -c blacki '\T'
+}
+
+path() {
+ color -c yellowb '\w/'
+}
+
+guix_env() {
+ if [ "$GUIX_ENVIRONMENT" != '' ]; then
+ printf '\n'
+ color -c blacki '~> '
+ color -c purple 'guix environment '
+ printf '('
+ color -c blueb "$GUIX_ENVIRONMENT"
+ printf ')'
+ fi
+}
+
+in_nix_shell() {
+ if [ "$IN_NIX_SHELL" != '' ]; then
+ printf '\n'
+ color -c blacki '~> '
+ color -c purpleb "$IN_NIX_SHELL "
+ color -c purple 'nix-shell '
+ printf '('
+ color -c blueb "${name:-}"
+ printf ')'
+ fi
+}
+
+PS1='`error_marker`'$(timestamp)' '$(path)' `repo_status``guix_env``in_nix_shell`
+$ '
+
+
+vcs_status() {
+ git status "$@"
+}
+
+vcs_diff() {
+ git diff "$@"
+}
+
+vcs_diff_staged() {
+ git diff --staged "$@"
+}
diff --git a/etc/gnupg/gpg.conf b/etc/gnupg/gpg.conf
new file mode 100644
index 0000000..d4498fe
--- /dev/null
+++ b/etc/gnupg/gpg.conf
@@ -0,0 +1 @@
+keyserver pool.sks-keyservers.net
diff --git a/etc/gnupg/sshcontrol b/etc/gnupg/sshcontrol
new file mode 100644
index 0000000..1ae03ed
--- /dev/null
+++ b/etc/gnupg/sshcontrol
@@ -0,0 +1 @@
+750154E135FD7B11FDDF0107CC0904F92EBD2AE4
diff --git a/etc/guix/channels.scm b/etc/guix/channels.scm
new file mode 100644
index 0000000..304db35
--- /dev/null
+++ b/etc/guix/channels.scm
@@ -0,0 +1,20 @@
+(append
+ (list
+ (channel
+ (name 'xyz-euandreh)
+ (url "git://euandreh.xyz/package-repository.git/")
+ (branch "main")
+ (introduction
+ (make-channel-introduction
+ "d749e053e6db365069cb9b2ef47a78b06f9e7361"
+ (openpgp-fingerprint
+ "5BDA E9B8 B2F6 C6BC BB0D 6CE5 81F9 0EC3 CD35 6060"))))
+ (channel
+ (name 'nonguix)
+ (url "https://gitlab.com/nonguix/nonguix")
+ (introduction
+ (make-channel-introduction
+ "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
+ (openpgp-fingerprint
+ "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))))
+ %default-channels)
diff --git a/etc/guix/home.scm b/etc/guix/home.scm
new file mode 100644
index 0000000..607a059
--- /dev/null
+++ b/etc/guix/home.scm
@@ -0,0 +1,152 @@
+(use-modules
+ (curth0)
+ (gnu home services)
+ (gnu home services shells)
+ (gnu packages)
+ (gnu packages mail)
+ (gnu packages gnupg)
+ (gnu services)
+ (guix gexp)
+ (guix packages)
+ (guix utils))
+
+(define msmtp-non-hardcoded
+ (package
+ (inherit msmtp)
+ (name "msmtp-non-hardcoded")
+ (arguments
+ (substitute-keyword-arguments (package-arguments msmtp)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'install-additional-files 'patch-hardcoded-paths
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out")))
+ (substitute* (string-append out "/bin/msmtpq")
+ (("^LOG=.*$") "LOG=${XDG_LOG_HOME:-$HOME/.local/var/log}/msmtpq.log\n")
+ (("^Q=.*$") "Q=${XDG_DATA_HOME:-$HOME/.local/share}/msmtp/queue\n")
+ (("mkdir -m 0700 \"\\$Q\"") "mkdir -p -m 0700 \"$Q\"")))))))))))
+
+(define (xdg-config-home s)
+ (string-append (getenv "XDG_CONFIG_HOME") "/" s))
+
+(define gitconfig (mixed-text-file "gitconfig" #"-
+ [user]
+ email = eu@euandre.org
+ name = EuAndreh
+ signingkey = 81F90EC3CD356060
+ [transfer]
+ fsckobjects = true
+ [push]
+ default = current
+ [commit]
+ gpgsign = true
+ verbose = true
+ [init]
+ defaultBranch = main
+ [sendemail]
+ assume8bitEncoding = UTF-8
+ smtpserveroption = -a
+ smtpserveroption = euandreh
+ annotate = yes
+ confirm = never
+ smtpserver = "# msmtp-non-hardcoded "/bin/msmtpq\n"))
+
+(define gpg-agent.conf (mixed-text-file "gpg-agent.conf" #"-
+ default-cache-ttl 172800
+ default-cache-ttl-ssh 172800
+ max-cache-ttl 604800
+ max-cache-ttl-ssh 604800
+ enable-ssh-support
+ pinentry-program "# pinentry-gtk2 "/bin/pinentry-gtk-2\n"))
+
+(define config-files
+ `(("gnupg/gpg-agent.conf" ,gpg-agent.conf)
+ ("git/config" ,gitconfig)))
+
+(define (dot-config)
+ (define (prefix-with-config s)
+ (string-append (substring (getenv "XDG_CONFIG_HOME")
+ (+ 1 (string-length (getenv "HOME"))))
+ "/"
+ s))
+ (map (lambda (t)
+ (list (prefix-with-config (first t))
+ (second t)))
+ config-files))
+
+(home-environment
+ (packages
+ (append
+ (map (compose list specification->package+output symbol->string)
+ '(man-pages
+ posix-man-pages
+
+ tree
+ openssh
+ mailutils
+ entr
+ git
+ git:send-email
+ tmux
+ rsync
+ gnupg
+ pulseaudio
+ password-store
+ playerctl
+ pinentry-gtk2
+ bmake
+ fzf
+ ranger
+ blueman
+ ledger
+ curl
+ xclip
+ cloc
+ strace
+ file
+ urlscan
+ rlwrap
+ direnv
+ borg
+ khal
+ khard
+ libfaketime
+ qrencode
+ feh
+ sox
+ xset
+ graphviz
+ moreutils
+ shellcheck
+ gettext
+ groff
+
+ clojure
+ openjdk
+ sbcl
+ perl
+ perl-mojolicious
+
+ st
+ i3status
+ dmenu
+
+ weechat
+ alot
+ notmuch
+ isync
+ w3m
+ afew
+
+ zathura
+ zathura-djvu
+ zathura-pdf-poppler
+ zathura-ps
+ firefox))
+ (list msmtp-non-hardcoded)))
+ (services
+ (list (service home-bash-service-type
+ (home-bash-configuration
+ (bashrc
+ (list (plain-file "bashrc.sh" ". $XDG_CONFIG_HOME/bash/rc")))))
+ (simple-service 'config-files home-files-service-type (dot-config)))))
diff --git a/etc/guix/system.scm b/etc/guix/system.scm
new file mode 100644
index 0000000..3bd7235
--- /dev/null
+++ b/etc/guix/system.scm
@@ -0,0 +1,102 @@
+(use-modules
+ (curth0)
+ (gnu bootloader)
+ (gnu bootloader grub)
+ (gnu packages)
+ (gnu services base)
+ (gnu services desktop)
+ (gnu services security-token)
+ (gnu services xorg)
+ (gnu system keyboard)
+ (gnu system file-systems)
+ (gnu system mapped-devices)
+ (guix gexp)
+ (nongnu packages linux)
+ (nongnu system linux-initrd))
+
+(operating-system
+ (kernel linux)
+ (initrd microcode-initrd)
+ (firmware (list linux-firmware))
+ (locale "fr_FR.UTF-8")
+ (timezone "America/Sao_Paulo")
+ (keyboard-layout
+ (keyboard-layout "br" #:options '("caps:swapescape" "esperanto:qwerty")))
+ (host-name "velhinho")
+ (users
+ (append
+ (let ((user-groups '("wheel" "netdev" "audio" "video")))
+ (list
+ (user-account
+ (name "andreh")
+ (comment "EuAndreh")
+ (group "users")
+ (supplementary-groups user-groups))
+ (user-account
+ (name "other")
+ (comment "Other Self")
+ (group "users")
+ (supplementary-groups user-groups))))
+ %base-user-accounts))
+ (packages
+ (append
+ (map (compose list specification->package+output symbol->string)
+ '(nss-certs
+ i3-wm))
+ %base-packages))
+ (services
+ (append
+ (list
+ (service bluetooth-service-type)
+ (service pcscd-service-type)
+ (service gnome-desktop-service-type)
+ (set-xorg-configuration
+ (xorg-configuration
+ (keyboard-layout keyboard-layout)
+ (extra-config (list #"-
+ Section "InputClass"
+ Identifier "touchpad"
+ Driver "libinput"
+ MatchIsTouchpad "on"
+ Option "Tapping" "on"
+ EndSection
+ "#)))))
+ (modify-services %desktop-services
+ (guix-service-type config =>
+ (guix-configuration
+ (inherit config)
+ (substitute-urls
+ (append '("https://substitutes.nonguix.org")
+ %default-substitute-urls))
+ (authorized-keys
+ (append (list (plain-file "non-guix.pub" #"-
+ (public-key
+ (ecc
+ (curve Ed25519)
+ (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)))
+ "#))
+ %default-authorized-guix-keys)))))))
+ (bootloader
+ (bootloader-configuration
+ (bootloader grub-efi-bootloader)
+ (targets (list "/boot/efi"))
+ (keyboard-layout keyboard-layout)))
+ (mapped-devices
+ (list
+ (mapped-device
+ (source (uuid "6b0d38a6-d93e-4f8e-a59a-7729f5adf892"))
+ (target "cryptroot")
+ (type luks-device-mapping))))
+ (file-systems
+ (append
+ (list
+ (file-system
+ (mount-point "/boot/efi")
+ (device (uuid "1B26-9F4E" 'fat32))
+ (type "vfat"))
+ (file-system
+ (mount-point "/")
+ (device "/dev/mapper/cryptroot")
+ (type "ext4")
+ (dependencies mapped-devices)))
+ %base-file-systems)))
diff --git a/etc/hg/hgrc b/etc/hg/hgrc
new file mode 100644
index 0000000..656f40b
--- /dev/null
+++ b/etc/hg/hgrc
@@ -0,0 +1,2 @@
+[ui]
+username = EuAndreh <eu@euandre.org>
diff --git a/etc/i3/config b/etc/i3/config
new file mode 100644
index 0000000..0b41311
--- /dev/null
+++ b/etc/i3/config
@@ -0,0 +1,186 @@
+set $mod Mod4
+
+
+# font pango:monospace 8
+
+# This font is widely installed, provides lots of unicode glyphs, right-to-left
+# text rendering and scalability on retina/hidpi displays (thanks to pango).
+font pango:DejaVu Sans Mono 8
+
+# Start XDG autostart .desktop files using dex. See also
+# https://wiki.archlinux.org/index.php/XDG_Autostart
+exec --no-startup-id dex --autostart --environment i3
+
+# The combination of xss-lock, nm-applet and pactl is a popular choice, so
+# they are included here as an example. Modify as you see fit.
+
+# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
+# screen before suspend. Use loginctl lock-session to lock your screen.
+exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
+
+# NetworkManager is the most popular way to manage wireless networks on Linux,
+# and nm-applet is a desktop environment-independent system tray GUI for it.
+exec --no-startup-id nm-applet
+exec --no-startup-id blueman-applet
+exec --no-startup-id poweralertd
+exec dunst
+
+# Use pactl to adjust volume in PulseAudio.
+set $refresh_i3status killall -SIGUSR1 i3status
+bindsym F1 exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
+bindsym F2 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
+bindsym F3 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
+
+bindsym F4 exec --no-startup-id playerctl --player=`cat ~/.cache/euandreh-mpris-player.txt` position 5-
+bindsym Shift+F4 exec --no-startup-id playerctl --player=`cat ~/.cache/euandreh-mpris-player.txt` previous
+bindsym F5 exec --no-startup-id playerctl --player=`cat ~/.cache/euandreh-mpris-player.txt` play-pause
+Bindsym Shift+F5 exec --no-startup-id ~/dev/libre/dotfiles/xmonad/scripts/rotate-mpris-player.sh
+bindsym F6 exec --no-startup-id playerctl --player=`cat ~/.cache/euandreh-mpris-player.txt` position 5+
+bindsym Shift+F6 exec --no-startup-id playerctl --player=`cat ~/.cache/euandreh-mpris-player.txt` next
+
+# FIXME bad path
+bindsym F7 exec --no-startup-id ~/.local/bin/brightness -1
+bindsym F8 exec --no-startup-id ~/.local/bin/brightness +1
+
+
+
+bindsym $mod+Shift+s exec --no-startup-id ~/dev/libre/dotfiles/xmonad/scripts/toggle-pulseaudio-sink.sh && $refresh_i3status
+
+
+# Use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+bindsym $mod+Return exec st
+bindsym $mod+Shift+q kill
+bindsym $mod+p exec --no-startup-id dmenu_run
+
+
+
+
+# FIXME: better placement of these files
+bindsym $mod+o exec --no-startup-id ~/dev/libre/dotfiles/xmonad/scripts/dmenu-emoji.sh
+bindsym $mod+v exec --no-startup-id ~/dev/libre/dotfiles/xmonad/scripts/dmenu-clipmenu.sh
+bindsym $mod+i exec --no-startup-id ~/dev/libre/dotfiles/xmonad/scripts/dmenu-pass.sh
+bindsym $mod+Control+i exec --no-startup-id ~/dev/libre/dotfiles/xmonad/scripts/dmenu-pass-login.sh
+
+
+
+
+# change focus
+bindsym $mod+h focus left
+bindsym $mod+j focus down
+bindsym $mod+k focus up
+bindsym $mod+l focus right
+
+# move focused window
+bindsym $mod+Shift+h move left
+bindsym $mod+Shift+j move down
+bindsym $mod+Shift+k move up
+bindsym $mod+Shift+l move right
+
+# bindsym $mod+h split h # what is this?
+
+# split in vertical orientation
+# FIXME: what is this? It was in conflict with dmenu-clipmenu
+# bindsym $mod+v split v
+
+# enter fullscreen mode for the focused container
+bindsym $mod+f fullscreen toggle
+
+# change container layout (stacked, tabbed, toggle split)
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+
+# toggle tiling / floating
+bindsym $mod+Shift+space floating toggle
+
+# change focus between tiling / floating windows
+bindsym $mod+space focus mode_toggle
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# focus the child container
+bindsym $mod+d focus child
+
+# Define names for default workspaces for which we configure key bindings later on.
+# We use variables to avoid repeating the names in multiple places.
+set $ws1 "1"
+set $ws2 "2"
+set $ws3 "3"
+set $ws4 "4"
+set $ws5 "5"
+set $ws6 "6"
+set $ws7 "7"
+set $ws8 "8"
+set $ws9 "9"
+set $ws10 "10"
+
+# switch to workspace
+bindsym $mod+1 workspace number $ws1
+bindsym $mod+2 workspace number $ws2
+bindsym $mod+3 workspace number $ws3
+bindsym $mod+4 workspace number $ws4
+bindsym $mod+5 workspace number $ws5
+bindsym $mod+6 workspace number $ws6
+bindsym $mod+7 workspace number $ws7
+bindsym $mod+8 workspace number $ws8
+bindsym $mod+9 workspace number $ws9
+bindsym $mod+0 workspace number $ws10
+
+# move focused container to workspace
+bindsym $mod+Shift+1 move container to workspace number $ws1
+bindsym $mod+Shift+2 move container to workspace number $ws2
+bindsym $mod+Shift+3 move container to workspace number $ws3
+bindsym $mod+Shift+4 move container to workspace number $ws4
+bindsym $mod+Shift+5 move container to workspace number $ws5
+bindsym $mod+Shift+6 move container to workspace number $ws6
+bindsym $mod+Shift+7 move container to workspace number $ws7
+bindsym $mod+Shift+8 move container to workspace number $ws8
+bindsym $mod+Shift+9 move container to workspace number $ws9
+bindsym $mod+Shift+0 move container to workspace number $ws10
+
+# reload the configuration file
+bindsym $mod+Shift+c reload
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
+bindsym $mod+Shift+r restart
+# exit i3 (logs you out of your X session)
+bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
+
+# resize window (you can also use the mouse for that)
+mode "resize" {
+ # These bindings trigger as soon as you enter the resize mode
+
+ # Pressing left will shrink the window’s width.
+ # Pressing right will grow the window’s width.
+ # Pressing up will shrink the window’s height.
+ # Pressing down will grow the window’s height.
+ bindsym h resize shrink width 10 px or 10 ppt
+ bindsym j resize grow height 10 px or 10 ppt
+ bindsym k resize shrink height 10 px or 10 ppt
+ bindsym l resize grow width 10 px or 10 ppt
+
+ # same bindings, but for the arrow keys
+ # bindsym Left resize shrink width 10 px or 10 ppt
+ # bindsym Down resize grow height 10 px or 10 ppt
+ # bindsym Up resize shrink height 10 px or 10 ppt
+ # bindsym Right resize grow width 10 px or 10 ppt
+
+ # back to normal: Enter or Escape or $mod+r
+ bindsym Return mode "default"
+ bindsym Caps_Lock mode "default"
+ bindsym $mod+r mode "default"
+}
+
+bindsym $mod+r mode "resize"
+
+# Start i3bar to display a workspace bar (plus the system information i3status
+# finds out, if available)
+bar {
+ position top
+ status_command i3status
+}
+
+default_border pixel
+default_floating_border pixel
diff --git a/etc/info/infokey b/etc/info/infokey
new file mode 100644
index 0000000..90edc50
--- /dev/null
+++ b/etc/info/infokey
@@ -0,0 +1,7 @@
+^e down-line
+^y up-line
+
+#var
+link-style=cyan
+active-link-style=blue,bold
+match-style=underline,bold,bggreen
diff --git a/etc/khal/config b/etc/khal/config
new file mode 120000
index 0000000..dfae173
--- /dev/null
+++ b/etc/khal/config
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/khal/config \ No newline at end of file
diff --git a/etc/khard/khard.conf b/etc/khard/khard.conf
new file mode 120000
index 0000000..f015b29
--- /dev/null
+++ b/etc/khard/khard.conf
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/khard/khard.conf \ No newline at end of file
diff --git a/etc/mailcaps/config b/etc/mailcaps/config
new file mode 100644
index 0000000..aeea68d
--- /dev/null
+++ b/etc/mailcaps/config
@@ -0,0 +1 @@
+text/html; w3m -dump -o document_charset=%{charset} '%s'; nametemplate=%s.html; copiousoutput
diff --git a/etc/mbsync/config b/etc/mbsync/config
new file mode 120000
index 0000000..68a3234
--- /dev/null
+++ b/etc/mbsync/config
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/mbsync/config \ No newline at end of file
diff --git a/etc/msmtp/config b/etc/msmtp/config
new file mode 120000
index 0000000..45cd0ac
--- /dev/null
+++ b/etc/msmtp/config
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/msmtp/config \ No newline at end of file
diff --git a/etc/newsboat/urls b/etc/newsboat/urls
new file mode 120000
index 0000000..3c453f5
--- /dev/null
+++ b/etc/newsboat/urls
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/newsboat/urls \ No newline at end of file
diff --git a/etc/notmuch/default/config b/etc/notmuch/default/config
new file mode 120000
index 0000000..3b9d2f4
--- /dev/null
+++ b/etc/notmuch/default/config
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/notmuch/default/config \ No newline at end of file
diff --git a/etc/notmuch/default/hooks/post-new b/etc/notmuch/default/hooks/post-new
new file mode 120000
index 0000000..7992789
--- /dev/null
+++ b/etc/notmuch/default/hooks/post-new
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/notmuch/post-new \ No newline at end of file
diff --git a/etc/python/pythonrc.py b/etc/python/pythonrc.py
new file mode 100644
index 0000000..1fc3bfe
--- /dev/null
+++ b/etc/python/pythonrc.py
@@ -0,0 +1,15 @@
+import os
+import atexit
+import readline
+
+history = os.path.join(os.environ["XDG_STATE_HOME"], "python-history")
+
+try:
+ readline.read_history_file(history)
+except OSError:
+ pass
+
+def write_history():
+ readline.write_history_file(history)
+
+atexit.register(write_history)
diff --git a/etc/ranger/rc.conf b/etc/ranger/rc.conf
new file mode 100644
index 0000000..ed2b538
--- /dev/null
+++ b/etc/ranger/rc.conf
@@ -0,0 +1 @@
+map DD shell trash %s
diff --git a/etc/sbcl/sbclrc.lisp b/etc/sbcl/sbclrc.lisp
new file mode 100644
index 0000000..df7f57a
--- /dev/null
+++ b/etc/sbcl/sbclrc.lisp
@@ -0,0 +1,6 @@
+;;; The following lines added by ql:add-to-init-file:
+#-quicklisp
+(let ((quicklisp-init (merge-pathnames "dev/quicklisp/setup.lisp"
+ (user-homedir-pathname))))
+ (when (probe-file quicklisp-init)
+ (load quicklisp-init)))
diff --git a/etc/ssh/known_hosts b/etc/ssh/known_hosts
new file mode 100644
index 0000000..ad6b0b2
--- /dev/null
+++ b/etc/ssh/known_hosts
@@ -0,0 +1,74 @@
+|1|G2vfdmQ84glwobYXZZ0d+cCMVRE=|DZJYmWjbeP52J4K7+Bsz2e0dgBA= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=
+|1|yosAhKlbZt51FfD2VvQJiVijSBA=|BFEig1gqq4EwCHEHagEASQZQmNI= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=
+|1|5yKbUaAB5AFz4MINtTVhVAPwMtU=|LwcI5Z8hXwwKxtkk4KDpeZduyPQ= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+|1|sfEM3JnFec93XEzMf9A6TkthgdI=|oZX7oe9eBKYMrXLcoFydh70my5A= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+|1|F/E3nafzrpMZEzyN8iA++okJ7Q4=|T00Gk7F90YmbaTMSOGjP8yhls94= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMylg2eib0byVT2R7dVFkxdhXO5pvgllnszKhlHiEP15ee8IjMYNPvz2A605hUdIxXtsBgjf+u7jlubh6mbx/YA=
+|1|jSpDKjDomux2z3O/ok/UPGGQ8xs=|ZP60naGKQnpK6yHGD+B/+ykB05c= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMylg2eib0byVT2R7dVFkxdhXO5pvgllnszKhlHiEP15ee8IjMYNPvz2A605hUdIxXtsBgjf+u7jlubh6mbx/YA=
+|1|PJybLcZRkpN9IyDsqaNjGO6lE5Y=|K0nchvCA7XV91J2X6l0h2DwOmyI= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+|1|zzdSJf8JIMfi5sKbc/mNcBy/RB8=|0GxC/CesxJHcRdt8MuPVjfab06k= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKBxDZv64oRMzRkywjmRRrml2pr0XFSZhlL46nUSmM60
+|1|X5OmtKdXZh2kC//XCXEEOim7tgE=|Rh5ro2oEB4MN8MP6PRbG3QBR0Kk= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKBxDZv64oRMzRkywjmRRrml2pr0XFSZhlL46nUSmM60
+46.101.43.82 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLIGIc5X12Y61eVcKJnNzCvrPeSKgyKgElqGl7QDeGeynE33sRVoNAg9aqkgXdc2MkN+nFhEWELkjPuBKYsyp2I=
+hinarioespirita.org,167.99.34.30 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEnGFkXNEF6RHihT3szgVEBAhRKXlI6YKSUOQFzhuNVkMOBgEfr+OaXpFV3zQ3/Dp875skdTOZaA9DjQ0EeUS+M=
+pt.hinarioespirita.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEnGFkXNEF6RHihT3szgVEBAhRKXlI6YKSUOQFzhuNVkMOBgEfr+OaXpFV3zQ3/Dp875skdTOZaA9DjQ0EeUS+M=
+mtm.hinarioespirita.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEnGFkXNEF6RHihT3szgVEBAhRKXlI6YKSUOQFzhuNVkMOBgEfr+OaXpFV3zQ3/Dp875skdTOZaA9DjQ0EeUS+M=
+77.109.148.18 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKBxDZv64oRMzRkywjmRRrml2pr0XFSZhlL46nUSmM60
+35.231.145.151 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=
+git.sr.ht,173.195.146.142 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCj6y+cJlqK3BHZRLZuM+KP2zGPrh4H66DacfliU1E2DHAd1GGwF4g1jwu3L8gOZUTIvUptqWTkmglpYhFp4Iy4=
+192.168.33.10 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCL+hEiW/Va2L6y5Y4MyxRBXHJw/9bIC02M3wGVe1zaD3DT8wsAUcJ2QO1lJILudvMInx+SaPyJmwBvUn58YR2c=
+173.195.146.152 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCj6y+cJlqK3BHZRLZuM+KP2zGPrh4H66DacfliU1E2DHAd1GGwF4g1jwu3L8gOZUTIvUptqWTkmglpYhFp4Iy4=
+2001:1620:2019::218 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKBxDZv64oRMzRkywjmRRrml2pr0XFSZhlL46nUSmM60
+140.82.114.3 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+140.82.113.3 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+140.82.113.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+140.82.114.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+2604:bf00:710:0:5054:ff:fe7d:8fa8 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCj6y+cJlqK3BHZRLZuM+KP2zGPrh4H66DacfliU1E2DHAd1GGwF4g1jwu3L8gOZUTIvUptqWTkmglpYhFp4Iy4=
+azusa.runners.sr.ht,2604:bf00:710:0:ae1f:6bff:fead:55a ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPzxK5AM1FdMI9gZVDpw2O5iiS/49QokWpzANFntVt0Qig4qdBt4K7B0O6MrwggLh3A+zBlsXCMoWtvFtPQgLxA=
+18.228.52.138 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+18.231.5.6 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+2604:bf00:710:0:5054:ff:fe36:ebc6 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCj6y+cJlqK3BHZRLZuM+KP2zGPrh4H66DacfliU1E2DHAd1GGwF4g1jwu3L8gOZUTIvUptqWTkmglpYhFp4Iy4=
+18.228.67.229 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+hg.sr.ht,2604:bf00:710:0:5054:ff:fe25:1aa6 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL4aNGa+KnvMA0QoWrIVuI2QBU0Q/xX48sMBl3VtP/zPOGMvS50zGVMaA00RSzfcI2X0v/aUTsVm2vBNo/V1gTg=
+euandre.org,2a03:b0c0:3:d0::387:b001 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBF6wlJqwd7KWLzLovwnwbTmNfO4E4yVDyqxAAlUkn9eDsTtzV1RYNDsaLPWv4mweJqP4crZPFxg40sFVeMDbkC0=
+2606:4700:90:0:f22e:fbec:5bed:a9b9 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=
+46.101.160.115 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBF6wlJqwd7KWLzLovwnwbTmNfO4E4yVDyqxAAlUkn9eDsTtzV1RYNDsaLPWv4mweJqP4crZPFxg40sFVeMDbkC0=
+173.195.146.249 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPzxK5AM1FdMI9gZVDpw2O5iiS/49QokWpzANFntVt0Qig4qdBt4K7B0O6MrwggLh3A+zBlsXCMoWtvFtPQgLxA=
+2604:a880:800:14::32:4000 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK8YTumqLFAL5MJ0AcDtFG9dWfbkJKU7FUDlH0xEgAZvHGU57TBr9DIQy2OHrxCxuhk9bZEUX8+vJiRXE05+Rzs=
+2001:19f0:7001:5cec:5400:2ff:feec:9940 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPYRWlGutc+bRJ+N0sXHxhgnDsRvRoauQ92yM1U7N+8a
+2001:19f0:6c01:2cf0:5400:2ff:feec:99c5 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMGiiEXB+koPS1vgGkwdExk2Q5fGv3Yc5rf8jVHB2FB7
+45.32.155.96 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKfPxSXxvq3MHuMvthg+q69ooniSeqXbit1UiW0gbLZN
+45.77.65.204 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKfPxSXxvq3MHuMvthg+q69ooniSeqXbit1UiW0gbLZN
+136.244.85.68 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKfPxSXxvq3MHuMvthg+q69ooniSeqXbit1UiW0gbLZN
+199.247.0.136 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+euandreh.xyz ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+136.244.80.130 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+209.250.232.122 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+git.euandreh.xyz ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+80.240.24.148 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+95.179.246.150 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+45.77.52.185 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+199.247.2.245 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+140.82.112.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+104.238.176.223 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+172.65.251.78 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=
+140.82.112.3 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+45.32.158.17 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+95.179.253.243 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+95.179.163.103 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+217.69.2.177 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNhpYZqFXy4CkOrSg5naR5Any47jqgZUIwbiTvsl2Yhm5EiUtCZTIVHui7q262M5qlDY6syQ5lVMtSsLJuTce+I=
+arrobaponto.org,104.238.167.189 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNhpYZqFXy4CkOrSg5naR5Any47jqgZUIwbiTvsl2Yhm5EiUtCZTIVHui7q262M5qlDY6syQ5lVMtSsLJuTce+I=
+104.238.176.81 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNhpYZqFXy4CkOrSg5naR5Any47jqgZUIwbiTvsl2Yhm5EiUtCZTIVHui7q262M5qlDY6syQ5lVMtSsLJuTce+I=
+git.arrobaponto.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNhpYZqFXy4CkOrSg5naR5Any47jqgZUIwbiTvsl2Yhm5EiUtCZTIVHui7q262M5qlDY6syQ5lVMtSsLJuTce+I=
+173.199.70.52 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNhpYZqFXy4CkOrSg5naR5Any47jqgZUIwbiTvsl2Yhm5EiUtCZTIVHui7q262M5qlDY6syQ5lVMtSsLJuTce+I=
+[remembering.euandreh.xyz]:23841 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/
+167.71.86.194 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCXg/l/grol/OAY95VphKbVn4yXUStSWpxQjnka7PWXzWyForfX+fpmY+p72r1Uimx5oXIFISt8uSZW/tvD61iQ=
+[localhost]:10022 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLHACdQJXUj5e4Znyh7KdTjB1RLznSfStRw6cuHZlu8rhANVfkjt300Fum9Jv6yLra6W4v2FLALWfcYpOlUzt9c=
+107.191.63.70 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMONpsqwH79f/MsjtsOPitT5C+3hPPJqVh42oHMKOen6
+217.69.11.49 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKbzWSlFwmlrC+k6XU9eUJaejREGxTF03OX/mT7KhSr
+[arrobaponto.org]:23213 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKbzWSlFwmlrC+k6XU9eUJaejREGxTF03OX/mT7KhSr
+anoncvs.netbsd.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA3QiBl8leG9fqIJpKeNov0PKq5YryFFiroMWOPUv4hDFn8R0jC07YVaR/OSBrr37CTmGX5AFceXPzoFnLlwCqWR7rXg4NR75FTlTp9CG9EBAEtU8mee27KDrUFBTZdfVl2+aRYoAI5fTXA+0vpIO68Cq843vRWUZCcwinS4cNLUU=
+git.2f30.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJSLZ4G5w4NysBUmAHmr6/V9om42IHSUCtqrNdhWoYQ0
+[arrobaponto.org]:38123 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILoz1gFl6chY91vQ5SrZXSP5yHqRI3TdYy2ccEDpS7Z4
+[199.247.13.53]:38123 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILoz1gFl6chY91vQ5SrZXSP5yHqRI3TdYy2ccEDpS7Z4
+[2001:19f0:6801:988:5400:3ff:fea1:b566]:38123 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILoz1gFl6chY91vQ5SrZXSP5yHqRI3TdYy2ccEDpS7Z4
+[gerrit.wikimedia.org]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCF8pwFLehzCXhbF1jfHWtd9d1LFq2NirplEBQYs7AOrGwQ/6ZZI0gvZFYiEiaw1o+F1CMfoHdny1VfWOJF3mJ1y9QMKAacc8/Z3tG39jBKRQCuxmYLO1SWymv7/Uvx9WQlkNRoTdTTa9OJFy6UqvLQEXKYaokfMIUHZ+oVFf1CgQ==
+2001:19f0:5:1d65:5400:3ff:fee3:7463 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF2EgU3IgCwv1ynnWfxFm0SHTSoE0AYG3MJT/TpN3pBz
diff --git a/etc/tmux/tmux.conf b/etc/tmux/tmux.conf
new file mode 100644
index 0000000..dd718ca
--- /dev/null
+++ b/etc/tmux/tmux.conf
@@ -0,0 +1,81 @@
+# Use personal prefix over "C-b"
+unbind C-b
+set -g prefix C-v
+
+# Turn on mouse mode
+# https://groups.google.com/forum/#!msg/tmux-users/TRwPgEOVqho/Ck_oth_SDgAJ
+# https://github.com/tmux/tmux/blob/310f0a960ca64fa3809545badc629c0c166c6cd2/CHANGES#L12
+set -g mouse on
+
+# Bind "C-x r" to reload the configuration file
+bind-key r source-file $XDG_CONFIG_HOME/tmux/tmux.conf \; display-message "$XDG_CONFIG_HOME/tmux.conf reloaded"
+
+# Holy answer that properly implements copying from tmux!
+# https://unix.stackexchange.com/a/349020/276661
+bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe "xclip -selection clipboard -i" \;
+bind-key y send-keys -X copy-pipe "xclip -selection clipboard -i" \; display-message "Copied system clipboard! Hooray! Long-live tmux!"
+
+# Moving around panes
+bind-key -n M-h select-pane -L
+bind-key -n M-j select-pane -D
+bind-key -n M-k select-pane -U
+bind-key -n M-l select-pane -R
+
+# Resizing panes
+bind-key -n M-H resize-pane -L 5
+bind-key -n M-J resize-pane -D 5
+bind-key -n M-K resize-pane -U 5
+bind-key -n M-L resize-pane -R 5
+
+# Reorder windows
+bind-key -n C-S-Left swap-window -t -1\; select-window -t -1
+bind-key -n C-S-Right swap-window -t +1\; select-window -t +1
+#
+# To change the number of a window, use: PREFIX-., and pick a new unused number
+#
+
+# Join windows
+bind-key -n C-S-M-Left join-pane -s :-0 -t :-1
+bind-key -n C-S-M-Right join-pane -s :-0 -t :+1
+
+# "M m" to actually clear the pane history
+bind -n M-m send-keys -R \; clear-history
+
+# Keybinding to activate pane typing sync
+# https://stackoverflow.com/questions/25909964/tmux-how-to-toggle-on-and-off-options-with-the-same-key
+bind-key b setw synchronize-panes \; display-message "synchronize-panes toggle"
+
+setw -g mode-keys vi # Move around with vi keys
+set-option -g status-key "vi" # Use vi mode for status bar command (like after typing "C-x [" one can search with "/")
+set-option -g status-bg "#666666" # Status bar background color
+set-option -g status-fg "#aaaaaa" # Status bar foreground color
+set-option -g status-left-length 50 # session name in status bar length =[annex]= part
+set-option -g history-limit 150000 # How many lines of history to keep
+set-option -g status-right ""
+
+# Set the panes initial index value to 1 instead of 0
+# 0 is too far from ` ;)
+set -g base-index 1
+set-window-option -g pane-base-index 1
+
+# Automatically set window title
+set-window-option -g automatic-rename on
+set-option -g set-titles on
+
+# Set "correct term"
+# https://wiki.archlinux.org/index.php/Tmux
+set -g default-terminal screen-256color
+
+# No delay for escape key press
+# https://mutelight.org/practical-tmux#faster-command-sequences
+set -sg escape-time 0
+
+# Display pane numbers for longer
+# https://unix.stackexchange.com/questions/307696/how-to-increase-tmux-pane-numbers-display-time-ctrl-b-q
+set -g display-panes-time 2500
+
+bind-key t resize-pane -x 80
+
+bind -n M-r attach-session -t . -c '#{pane_current_path}' \; display-message "CWD for session updated to #{pane_current_path}!"
+
+bind-key u capture-pane \; save-buffer /tmp/tmux-urlscan-buffer \; new-window -n "urlscan" '$SHELL -c "urlscan < /tmp/tmux-urlscan-buffer"'
diff --git a/etc/weechat/irc.conf b/etc/weechat/irc.conf
new file mode 120000
index 0000000..7dff360
--- /dev/null
+++ b/etc/weechat/irc.conf
@@ -0,0 +1 @@
+/home/andreh/dev/private/dotfiles/weechat/irc.conf \ No newline at end of file