diff options
Diffstat (limited to 'etc')
-rw-r--r-- | etc/afew/config | 6 | ||||
-rw-r--r-- | etc/bash/inputrc | 2 | ||||
-rw-r--r-- | etc/git/config | 25 | ||||
-rw-r--r-- | etc/git/ignore | 3 | ||||
-rw-r--r-- | etc/gnupg/gpg-agent.conf.tmpl | 6 | ||||
-rw-r--r-- | etc/gnupg/gpg.conf | 1 | ||||
-rw-r--r-- | etc/gnupg/sshcontrol | 1 | ||||
-rw-r--r-- | etc/guile/init.scm | 6 | ||||
-rw-r--r-- | etc/guix/channels.scm | 20 | ||||
-rw-r--r-- | etc/guix/home.scm | 625 | ||||
-rw-r--r-- | etc/guix/system.scm | 209 | ||||
-rw-r--r-- | etc/hg/hgrc | 2 | ||||
-rw-r--r-- | etc/i3/config | 185 | ||||
-rw-r--r-- | etc/i3status/config | 31 | ||||
-rw-r--r-- | etc/info/infokey | 7 | ||||
-rw-r--r-- | etc/khal/config | 16 | ||||
-rw-r--r-- | etc/khard/khard.conf | 13 | ||||
-rw-r--r-- | etc/lisp-cli/init.lisp | 33 | ||||
-rw-r--r-- | etc/mailcaps/config | 1 | ||||
-rw-r--r-- | etc/newsboat/config | 1 | ||||
l--------- | etc/newsboat/urls | 1 | ||||
-rw-r--r-- | etc/python/pythonrc.py | 15 | ||||
-rw-r--r-- | etc/ranger/rc.conf | 4 | ||||
-rw-r--r-- | etc/remhind/config.tmpl | 4 | ||||
-rwxr-xr-x | etc/sh/cronjob.sh | 74 | ||||
l--------- | etc/sh/privrc.sh | 1 | ||||
-rw-r--r-- | etc/sh/rc | 364 | ||||
-rw-r--r-- | etc/sh/root-rc | 87 | ||||
-rw-r--r-- | etc/ssh/config.tmpl | 6 | ||||
-rw-r--r-- | etc/ssh/known_hosts | 84 | ||||
-rw-r--r-- | etc/tmux/tmux.conf | 96 | ||||
l--------- | etc/weechat/irc.conf | 1 |
32 files changed, 1930 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/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/git/config b/etc/git/config new file mode 100644 index 0000000..0ff1257 --- /dev/null +++ b/etc/git/config @@ -0,0 +1,25 @@ +[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 +[remote "origin"] + fetch = +refs/notes/*:refs/notes/* +[format] + useAutoBase = whenAble +[include] + path = config-extra diff --git a/etc/git/ignore b/etc/git/ignore new file mode 100644 index 0000000..9103c3d --- /dev/null +++ b/etc/git/ignore @@ -0,0 +1,3 @@ +/tmp/ +/FIXME +/vendor/ diff --git a/etc/gnupg/gpg-agent.conf.tmpl b/etc/gnupg/gpg-agent.conf.tmpl new file mode 100644 index 0000000..e772820 --- /dev/null +++ b/etc/gnupg/gpg-agent.conf.tmpl @@ -0,0 +1,6 @@ +# 2592000 = 60 * 60 * 24 * 30 +default-cache-ttl 172800 +default-cache-ttl-ssh 172800 +max-cache-ttl 2592000 +max-cache-ttl-ssh 2592000 +enable-ssh-support 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/guile/init.scm b/etc/guile/init.scm new file mode 100644 index 0000000..9e962e8 --- /dev/null +++ b/etc/guile/init.scm @@ -0,0 +1,6 @@ +(use-modules + (ice-9 colorized) + (ice-9 readline)) + +(activate-colorized) +(activate-readline) diff --git a/etc/guix/channels.scm b/etc/guix/channels.scm new file mode 100644 index 0000000..f2da084 --- /dev/null +++ b/etc/guix/channels.scm @@ -0,0 +1,20 @@ +(append + (list + (channel + (name 'xyz-euandreh) + (url "git://euandreh.xyz/package-repository") + (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..fc9f2b5 --- /dev/null +++ b/etc/guix/home.scm @@ -0,0 +1,625 @@ +(use-modules + ((ice-9 textual-ports) #:prefix textual-ports:) + ((guix licenses) #:prefix licenses:) + ((xyz euandreh heredoc) #:prefix heredoc:) + (gnu home) + (gnu home services) + (gnu home services mcron) + (gnu home services shells) + (gnu home services shepherd) + (gnu home services xdg) + (gnu packages) + (gnu packages base) + (gnu packages dunst) + (gnu packages freedesktop) + (gnu packages gnupg) + (gnu packages gpodder) + (gnu packages libreoffice) + (gnu packages mail) + (gnu packages music) + (gnu packages wget) + (gnu packages lisp) + (gnu packages ssh) + (gnu packages texinfo) + (gnu packages tmux) + (gnu packages version-control) + (gnu packages video) + (gnu packages xdisorg) + (gnu services) + (guix build-system trivial) + (guix download) + (guix gexp) + (guix git-download) + (guix modules) + (guix packages) + (guix utils)) +(heredoc:enable-syntax) + +(define-public hunspell-iconv + (package + (inherit hunspell) + (name "hunspell-iconv") + (inputs + `(("libiconv" ,libiconv) + ,@(package-inputs hunspell))))) + +(define (hunspell-dictionary-utf8 dict-name) + (package + (name (string-append "hunspell-dict-" dict-name "-utf8")) + (version "630b34e6f8f3cbe7aa7b27b6d8ab118e27252fd1") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/wooorm/dictionaries") + (commit version))) + (file-name + (git-file-name "hunspell-dictionary-utf8" version)) + (sha256 + (base32 "1iknwzh5h04m067ddw9hlzc1qqj4mr9mdkcfapsnay304laaiyn5")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((source-prefix (string-append (assoc-ref %build-inputs "source") + "/dictionaries/" + ,dict-name + "/index")) + (install-prefix (string-append %output "/share/hunspell/"))) + (mkdir-p install-prefix) + (copy-file (string-append source-prefix ".aff") + (string-append install-prefix ,dict-name ".aff")) + (copy-file (string-append source-prefix ".dic") + (string-append install-prefix ,dict-name ".dic")))))) + (synopsis (string-append "Hunspell " dict-name " dictionary in UTF-8")) + (description (string-append "Hunspell " dict-name " dictionary in UTF-8")) + (license licenses:expat) + (home-page "https://github.com/wooorm/dictionaries"))) + +(define cmucl + (package + (name "cmucl-binary") + (version "21b") + (source + (origin + (method url-fetch) + (uri (string-append "https://common-lisp.net/project/cmucl/downloads/release/" + version + "/cmucl-" + version + "-x86-linux.tar.bz2")) + (sha256 + (base32 "13k3b5ygnbsq6n2i3r5i4ljw3r1qlskn2p5f4x9hrx6vfvbb3k7a")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((source (assoc-ref %build-inputs "source")) + (bin (string-append %output "/bin"))) + (mkdir-p bin) + (copy-file (string-append source "/bin/lisp") + (string-append bin "/lisp")))))) + (home-page "https://www.cons.org/cmucl/") + (synopsis "The CMU implementation of Common Lisp") + (description #"- + CMUCL is a free implementation of the Common Lisp programming language + which runs on most major Unix platforms. It mainly conforms to the + ANSI Common Lisp standard."#) + (license licenses:public-domain))) + +(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\"/msmtpq.log\n") + (("^Q=.*$") "Q=\"$XDG_DATA_HOME\"/msmtp/queue\n") + (("^MSMTPQ_Q=.*$") "MSMTPQ_Q=\"$Q\"\n") + (("mkdir -m 0700 \"\\$Q\"") "mkdir -p -m 0700 \"$Q\""))))))))))) + +(define gpodder-xdg + (package + (inherit gpodder) + (name "gpodder-xdg") + (arguments + (substitute-keyword-arguments (package-arguments gpodder) + ((#:phases phases '%standard-phases) + #~(modify-phases #$phases + (add-after 'install 'wrap-with-environment-variables + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each + (lambda (bin) + (wrap-program (string-append out "/bin/" bin) + '("GPODDER_HOME" = ("${XDG_DATA_HOME:-$HOME/.local/share}/gPodder")) + '("GPODDER_DOWNLOAD_DIR" = ("${XDG_DOWNLOAD_DIR:-$HOME/Downloads}/gPodder")))) + '("gpo" "gpodder"))))))))))) + +(define (with-options pkg bin opts) + (package + (inherit pkg) + (arguments + (substitute-keyword-arguments (package-arguments pkg) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'install 'wrap-with-flags + (lambda* (#:key outputs #:allow-other-keys) + (define (wrap-options prog options) + (let ((wrapped-file (string-append (dirname prog) "/." (basename prog) "-orig"))) + (rename-file prog wrapped-file) + (call-with-output-file prog + (lambda (port) + (format port + "#!/bin/sh~%~%exec \"~a\" ~a \"$@\"~%" + (canonicalize-path wrapped-file) + options))) + (chmod prog #o755))) + (wrap-options (string-append (assoc-ref outputs "out") + "/bin/" + ,bin) + ,opts))))))))) + +(define isync-with-options + (with-options isync "mbsync" "--config=\"$XDG_CONFIG_HOME\"/mbsync/config")) + +(define wget-with-options + (with-options wget "wget" "--hsts-file=\"$XDG_STATE_HOME\"/wget-hsts")) + +(define tmux-with-options + (with-options tmux "tmux" "-f \"$XDG_CONFIG_HOME\"/tmux/tmux.conf")) + +(define texinfo-with-options + (with-options texinfo "info" "--init-file \"$XDG_CONFIG_HOME\"/info/infokey")) + +(define mpv-with-options + (with-options mpv "mpv" (string-append "--script=" + (getenv "HOME") + "/.guix-home/profile/lib/mpris.so"))) + +(define openssh-with-options + (with-options openssh "ssh" "-F \"$XDG_CONFIG_HOME\"/ssh/config")) + +(define (xdg-config-home s) + (string-append (getenv "XDG_CONFIG_HOME") "/" s)) + + +(define (slurp name) + (string-trim-both + (call-with-input-file + name + textual-ports:get-string-all))) + +(define (script name content) + (package + (name name) + (version "latest") + (source #f) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((bin (string-append %output "/bin")) + (prog (string-append bin "/" ,name))) + (mkdir-p bin) + (call-with-output-file prog + (lambda (port) + (format port "~a" ,content))) + (chmod prog #o755))))) + (home-page "") + (synopsis "") + (description "") + (license #f))) + +(define cronjobs + (list + #~(job "0 0 * * *" "cronjob msmtp-queue -r") + #~(job "0 0 * * *" "cronjob check") + #~(job "5 */6 * * *" "cronjob m") + #~(job "30 0 * * *" "cronjob x update AND upgrade") + #~(job "30 0 * * *" "cronjob backup -q cron"))) + +(define (home-service name package bin) + (service-type + (name name) + (extensions + (list + (service-extension home-shepherd-service-type + (lambda _ + (list + (shepherd-service + (provision (list name)) + (documentation + (format #f "Shepherd service that manages ~a." name)) + (start + #~(make-forkexec-constructor + (list #$(file-append package bin)))) + (stop #~(make-kill-destructor)))))) + (service-extension home-profile-service-type + (lambda _ (list package))))) + (default-value '()) + (description + (format #f + #"- + Service that runs ~a as a daemon under Shepherd. + + It has no configuration."# + name)))) + +(define xdg-prefix "$HOME/.usr") +(define (xdg path) + (string-append xdg-prefix "/" path)) + +(home-environment + (packages + (append + (map (compose list specification->package+output symbol->string) + '(nss-certs + bash + coreutils + findutils + diffutils + grep + sed + tar + gawk + bc + nvi + patchelf + + man-pages + man-pages-posix + + bash-completion + + git + git:send-email + git:gui + git-open + git-remote-gcrypt + git-lfs + mercurial + fossil + darcs + subversion + cvs + rcs + cssc + quilt + + gnupg + rsync + tree + diffoscope + mailutils + entr + pulseaudio + password-store + playerctl + pinentry-gtk2 + bmake + make + tup + autoconf + automake + libtool + pcre:out + pcre:bin + pcre:doc + pcre:static + pcre2 + avahi + libgcrypt + qbe + cproc + doxygen + gperf + readline + gmp + help2man + libtomcrypt + libtommath + lz4 + lokke + meson + ninja + sparse + ant + mpc + maven + pkg-config + fzf + ranger + blueman + pavucontrol + ledger + bind:utils + stunnel + netcat + siege + curl + curl:doc + xclip + cloc + strace + file@5.39 + urlscan + rlwrap + direnv + borg + khal + khard + libfaketime + qrencode + feh + sox + xset + graphviz + moreutils + shellcheck + gettext + lilypond + groff + groff:doc + grap + ghostscript + texlive + jq + recutils + units + ncurses + trash-cli + lsof + autojump + unzip + powertop + md4c + timidity++ + cmark + cmake + makefile2graph + po4a + mdpo + universal-ctags + gron + reptyr + xpdf + perf-tools + scdoc + rpm + cpio + + ;; for compiling ECL + libatomic-ops + libgc + libffi + ;; for compiling CLISP + libffcall + libsigsegv + + cryptsetup + btrfs-progs + + flatpak + xdg-desktop-portal + + sqlite + clojure + clojure-tools + leiningen + openjdk + perl + perl-dbi + perl-dbd-sqlite + perl-critic + perl-json + perl-mojolicious + perl-regexp-grammars + perl-commonmark + perl-aliased + perl-uri-escape + ruby + python + python-sphinx + python-slixmpp + python-unidecode + python-yubikey-manager + python-coverage + python-pytest + python-requests + python-beautifulsoup4 + python-docx + python-telegram-bot + ; python-docutils ; broken: conflicts with python-sphinx + python-mkdocs + valgrind + flex + bison + gcc-toolchain + clang + tcc + fuse + ; node ; broken: conflicts with archivebox + quickjs + m4 + go + xrandr + arandr + openssl + fswatch + ;; rust ; broken + ;; rust:cargo ; broken + ;; rust:rustfmt ; broken + vala + tcl + + sbcl + gcl + ecl + clisp + ccl + abcl + janet + kawa + chez-scheme + racket + chibi-scheme + ; chicken ; broken: conflicts with gcc-toolchain + gambit-c + gauche + + dash + fish + rc + es + tcsh + zsh + oksh + loksh + mksh + oil + gash + nushell + + gtk + gtk:bin + gtk:doc + glade + ; libglade ; broken: conflicts with zathura + cambalache + tk + qtbase + qtbase:debug + qtdeclarative + + st + i3status + xmessage + dmenu + httpd ;; for htpasswd + + weechat + alot + notmuch + w3m + afew + qtox + telescope + imagemagick + ffmpeg + pandoc + mktorrent + jekyll + flac + mediainfo + libnotify + espeak-ng + procps + htop + zenity + util-linux + lightning + lmdb + guile + guile-heredoc-latest + gzip + xz + bzip2 + lzip + lzop + which + libxml2 + psmisc + less + nano + patch + youtube-dl + tmux-plugin-resurrect + tmux-plugin-continuum + + ;; ArchiveBox and some of its optional dependencies + archivebox + ripgrep + + poezio + freetalk + mcabber + profanity + newsboat + mpv-mpris + vlc + hicolor-icon-theme + + keepassxc + + xbacklight + + gnote + telegram-desktop + zathura + zathura-djvu + zathura-pdf-poppler + zathura-ps + dino + poedit + transmission + transmission:gui + audacity + inkscape + libreoffice + quodlibet + ungoogled-chromium + icedove + firefox)) + (list msmtp-non-hardcoded + ;; cmucl + isync-with-options + wget-with-options + tmux-with-options + texinfo-with-options + mpv-with-options + openssh-with-options + hunspell-iconv + gpodder-xdg + (hunspell-dictionary-utf8 "en") + (hunspell-dictionary-utf8 "pt") + (hunspell-dictionary-utf8 "fr") + (hunspell-dictionary-utf8 "eo") + (script "cronjob" (slurp (string-append (getenv "XDG_CONFIG_HOME") + "/sh/cronjob.sh")))))) + (services + (list + (service (home-service 'clipmenu clipmenu "/bin/clipmenud")) + (service (home-service 'dunst dunst "/bin/dunst")) + (service (home-service 'poweralertd poweralertd "/bin/poweralertd")) + (service home-xdg-base-directories-service-type + (home-xdg-base-directories-configuration + (cache-home (xdg "var/cache")) + (config-home (xdg "etc")) + (data-home (xdg "share")) + (log-home (xdg "var/log")) + (state-home (xdg "var/state")))) + (simple-service 'my-shell-profile home-shell-profile-service-type + (list (plain-file + "my-profile" + (format #f + #"- + export XDG_PREFIX="~a" + . "$XDG_CONFIG_HOME"/sh/rc"# + xdg-prefix)))) + (service home-mcron-service-type + (home-mcron-configuration + (jobs cronjobs)))))) diff --git a/etc/guix/system.scm b/etc/guix/system.scm new file mode 100644 index 0000000..fddadca --- /dev/null +++ b/etc/guix/system.scm @@ -0,0 +1,209 @@ +(use-modules + ((xyz euandreh heredoc) #:prefix heredoc:) + (gnu bootloader) + (gnu bootloader grub) + (gnu packages) + (gnu services base) + (gnu services cups) + (gnu services desktop) + (gnu services docker) + (gnu services pm) + (gnu services security-token) + (gnu services sound) + (gnu services ssh) + (gnu services virtualization) + (gnu services vpn) + (gnu services xorg) + (gnu system keyboard) + (gnu system file-systems) + (gnu system locale) + (gnu system mapped-devices) + (guix gexp) + (guix packages) + (nongnu packages linux) + (nongnu system linux-initrd) + (srfi srfi-1) + (xyz euandreh queue)) +(heredoc:enable-syntax) + +(operating-system + (kernel linux) + (initrd microcode-initrd) + (firmware (list linux-firmware)) + (locale "fr_FR.UTF-8") + (locale-definitions + (append + (list + (locale-definition + (name "pt_BR.UTF-8") + (source "pt_BR"))) + %default-locale-definitions)) + (timezone "America/Sao_Paulo") + (keyboard-layout + (keyboard-layout "br" #:options '("caps:swapescape" "esperanto:qwerty"))) + (host-name "velhinho") + (hosts-file + (plain-file + "hosts" + (format #f + #"- + 127.0.0.1 localhost ~a + ::1 localhost ~a + + 10.0.2.1 kuvira.wg + 10.0.2.2 velhinho.wg + "# + host-name + host-name))) + (users + (append + (list + (user-account + (name "andreh") + (comment "EuAndreh") + (group "users") + (supplementary-groups '("netdev" "audio" "video" "wheel" "kvm" "docker")))) + %base-user-accounts)) + (packages + (append + (map (compose list specification->package+output symbol->string) + '(nss-certs + i3-wm + guile + guile-heredoc-latest)) + (list) + (remove (lambda (package) + (equal? "wget" (package-name package))) + %base-packages))) + (services + (append + (list + (service bluetooth-service-type) + (service tlp-service-type) + (service thermald-service-type) + (service pcscd-service-type) + (service docker-service-type) + (service libvirt-service-type) + (service virtlog-service-type) + (service xfce-desktop-service-type) + (service mate-desktop-service-type) + (service lxqt-desktop-service-type) + (service enlightenment-desktop-service-type) + (service gnome-desktop-service-type) + (service gnome-keyring-service-type) + (service wireguard-service-type + (wireguard-configuration + (addresses '("10.0.2.2/24")) + (peers + (list + (wireguard-peer + (name "kuvira") + (endpoint "euandreh.xyz:51820") + (public-key "FwXqY9wXO8jK/D7lyprI+cslVeb9AqOQBAbxKG6S5lE=") + (allowed-ips '("10.0.2.1/32")) + (keep-alive 25)))))) + (service qemu-binfmt-service-type + (qemu-binfmt-configuration + (platforms + (lookup-qemu-platforms "arm" "aarch64")))) + (service cups-service-type + (cups-configuration + (web-interface? #t) + (extensions + (list epson-L365)))) + (service openssh-service-type + (openssh-configuration + (password-authentication? #f) + (authorized-keys + `(("andreh" ,(local-file + (string-append (or (getenv "XDG_CONFIG_HOME") + (string-append (getenv "HOME") "/.ssh")) + "/ssh/id_rsa.pub"))))) + (extra-content #"- + ClientAliveInterval 30 + ClientAliveCountMax 20 + MaxSessions 20 + "#))) + #; + (udev-rules-service + 'backlight + (udev-rule + "backlight.rule" + (string-replace + #"- + ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="@DEVICE@", GROUP="video", MODE="0664" + "# + "@DEVICE@" + (getenv "BACKLIGHT_DEVICE")))) + (set-xorg-configuration + (xorg-configuration + (keyboard-layout keyboard-layout) + (extra-config + (list + #"- + Section "InputClass" + Identifier "touchpad" + Driver "libinput" + MatchIsTouchpad "on" + Option "Tapping" "on" + EndSection + Section "Device" + Identifier "Intel Graphics" + Driver "intel" + Option "Backlight" "intel_backlight" + EndSection + "#))))) + (modify-services %desktop-services + (pulseaudio-service-type config => + (pulseaudio-configuration + (inherit config) + (extra-script-files + (list + (plain-file + "noise-cancelling.pa" + #"- + load-module module-echo-cancel + "#))))) + (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 '("/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..94648b2 --- /dev/null +++ b/etc/i3/config @@ -0,0 +1,185 @@ +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 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 nm-applet +exec blueman-applet + +# Use pactl to adjust volume in PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym F1 exec volume toggle && $refresh_i3status +bindsym F2 exec volume down && $refresh_i3status +bindsym F3 exec volume up && $refresh_i3status +bindsym $mod+Shift+s exec volume rotate && $refresh_i3status + +bindsym F4 exec player backward +bindsym Shift+F4 exec player previous +bindsym F5 exec player play-pause +Bindsym Shift+F5 exec player rotate +bindsym F6 exec player forward +bindsym Shift+F6 exec player next + +bindsym F7 exec brightness -1 +bindsym F8 exec brightness +1 + + + + + +# 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+u exec wms uuid +bindsym $mod+t exec wms date +bindsym $mod+m exec wms clear-notification +bindsym $mod+p exec menu bin +bindsym $mod+o exec menu emoji +bindsym $mod+v exec menu clipboard +bindsym $mod+i exec menu password +bindsym $mod+Control+i exec menu username +bindsym $mod+Control+Shift+i exec menu yubikey + + + + +# 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 +bindsym $mod+Shift+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 | status-bar +} + +default_border pixel +default_floating_border pixel diff --git a/etc/i3status/config b/etc/i3status/config new file mode 100644 index 0000000..8099a2f --- /dev/null +++ b/etc/i3status/config @@ -0,0 +1,31 @@ +general { + output_format = "i3bar" + colors = true +} + +order += "wireless _first_" +order += "battery all" +order += "disk /" +order += "memory" +order += "tztime local" + +wireless _first_ { + format_up = "%essid ~%quality" +} + +battery all { + format = "bat: %status %percentage %remaining" +} + +disk "/" { + format = "disk: %avail" +} + +memory { + format = "mem: %used/%total" + threshold_degraded = "1G" +} + +tztime local { + format = "%A, %Y-%m-%d %H:%M:%S" +} 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 100644 index 0000000..f42a87b --- /dev/null +++ b/etc/khal/config @@ -0,0 +1,16 @@ +[calendars] + +[[private]] +path = $XDG_DATA_HOME/khal/calendars/private/ +type = calendar + +[locale] +timeformat = %H:%M +dateformat = %d/%m/%Y +longdateformat = %d/%m/%Y +datetimeformat = %d/%m/%Y %H:%M +longdatetimeformat = %d/%m/%Y %H:%M +default_timezone = America/Sao_Paulo + +[default] +default_calendar = private diff --git a/etc/khard/khard.conf b/etc/khard/khard.conf new file mode 100644 index 0000000..e6ef986 --- /dev/null +++ b/etc/khard/khard.conf @@ -0,0 +1,13 @@ +[addressbooks] + +[[private]] +path = $XDG_DATA_HOME/khard/contacts/private/ + +[general] +default_action = list + +[contact table] +show_nicknames = yes + +[vcard] +preferred_version = 4.0 diff --git a/etc/lisp-cli/init.lisp b/etc/lisp-cli/init.lisp new file mode 100644 index 0000000..69cb054 --- /dev/null +++ b/etc/lisp-cli/init.lisp @@ -0,0 +1,33 @@ +#-quicklisp +(let ((quicklisp-init (merge-pathnames "dev/quicklisp/setup.lisp" + (user-homedir-pathname)))) + (when (probe-file quicklisp-init) + (load quicklisp-init))) + +(setf ql:*quickload-verbose* t) + +(defun load-once (p) + (let ((k (intern + (concatenate 'string + (string :ql/) + (string p)) + "KEYWORD"))) + (unless (member k *features*) + (ql:quickload p :verbose t) + (pushnew k *features*)) + k)) + +(mapcar #'load-once + (list + :cl-ppcre + :cffi + :trivial-dump-core + :named-readtables + :rstring)) + +(mapcar (lambda (p) + (pushnew (concatenate 'string p "/") cffi:*foreign-library-directories* + :test #'equal)) + (cl-ppcre:split ":" (uiop:getenv "LIBRARY_PATH"))) + +(load-once :cl-fswatch) diff --git a/etc/mailcaps/config b/etc/mailcaps/config new file mode 100644 index 0000000..60f7286 --- /dev/null +++ b/etc/mailcaps/config @@ -0,0 +1 @@ +text/html; env HOME=$XDG_DATA_HOME/w3m w3m -dump -o document_charset=%{charset} '%s'; nametemplate=%s.html; copiousoutput diff --git a/etc/newsboat/config b/etc/newsboat/config new file mode 100644 index 0000000..b138e1d --- /dev/null +++ b/etc/newsboat/config @@ -0,0 +1 @@ +text-width 80 diff --git a/etc/newsboat/urls b/etc/newsboat/urls new file mode 120000 index 0000000..c7c1b2d --- /dev/null +++ b/etc/newsboat/urls @@ -0,0 +1 @@ +../../var/lib/private/tilde/newsboat/urls
\ 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..2f1d9c9 --- /dev/null +++ b/etc/ranger/rc.conf @@ -0,0 +1,4 @@ +map DD shell trash %s +map XX shell rm -rf %s +map <C-e> scroll_preview 1 +map <C-y> scroll_preview -1 diff --git a/etc/remhind/config.tmpl b/etc/remhind/config.tmpl new file mode 100644 index 0000000..4d74b20 --- /dev/null +++ b/etc/remhind/config.tmpl @@ -0,0 +1,4 @@ +[calendars] + [calendars.private_cal] + name = "private_cal" + path = "${XDG_DATA_HOME}/khal/calendars/private/" diff --git a/etc/sh/cronjob.sh b/etc/sh/cronjob.sh new file mode 100755 index 0000000..0569b44 --- /dev/null +++ b/etc/sh/cronjob.sh @@ -0,0 +1,74 @@ +#!/bin/sh +set -eu + +usage() { + cat <<-'EOF' + Usage: + cronjob COMMAND... + cronjob -h + EOF +} + +help() { + cat <<-'EOF' + + Options: + -h, --help show this message + + COMMAND the command to be executed + + + Execute the given command, and send the output to email, with + special treatment to the status code. + + It loads the appropriate files, so that the actual cron + declaration is smaller. + + + Examples: + + Run a backup: + + $ cronjob backup -q cron + 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)) + + +set +e +# shellcheck disable=1090 +. ~/.profile +set -e + +CMD="$*" +with-email -s "$CMD" -- "$@" 1>>"$XDG_LOG_HOME"/euandreh/mcron.log 2>&1 diff --git a/etc/sh/privrc.sh b/etc/sh/privrc.sh new file mode 120000 index 0000000..f946f34 --- /dev/null +++ b/etc/sh/privrc.sh @@ -0,0 +1 @@ +../../var/lib/private/tilde/privrc.sh
\ No newline at end of file diff --git a/etc/sh/rc b/etc/sh/rc new file mode 100644 index 0000000..ae552a6 --- /dev/null +++ b/etc/sh/rc @@ -0,0 +1,364 @@ +#!/bin/sh +# shellcheck disable=1090,1091 + +export ENV=~/.profile + +export XDG_DATA_DIRS="$XDG_DATA_HOME/flatpak/exports/share:/var/lib/flatpak/exports/share${XDG_DATA_DIRS:+:}${XDG_DATA_DIRS:-}" + + +mkdir -p \ + "$XDG_CONFIG_HOME" \ + "$XDG_CACHE_HOME/euandreh" \ + "$XDG_DATA_HOME/euandreh" \ + "$XDG_STATE_HOME/euandreh" \ + "$XDG_LOG_HOME/euandreh" + +GUIX_PROFILE="$XDG_CONFIG_HOME"/guix/current +if [ -r "$GUIX_PROFILE"/etc/profile ]; then + . "$GUIX_PROFILE"/etc/profile +fi + +idempotent_path_add() { + case "$(eval "echo \$$1")" in + *"$2"*) + ;; + *) + eval "export $1=$2\${$1:+:}\${$1:-}" + ;; + esac +} +export A="$HOME${A:+:}${A:-}" +# idempotent_path_add B "$HOME" +export XDG_DATA_DIRS="$XDG_DATA_HOME/flatpak/exports/share:/var/lib/flatpak/exports/share${XDG_DATA_DIRS:+:}${XDG_DATA_DIRS:-}" +# idempotent_path_add XDG_DATA_DIRS "$XDG_DATA_HOME/flatpak/exports/share" + + + +# +# +# + +export HISTSIZE=-1 +export HISTFILE="$XDG_STATE_HOME/sh-history" +export SRC=~/dev +export PRIV_CONFIG="$XDG_PREFIX"/var/lib/private/tilde +export EDITOR='e' +export VISUAL="$EDITOR" +export PAGER='less -R' +export BROWSER='firefox' +export MAILDIR=~/Maildir +export BACKLIGHT_DEVICE='acpi_video0' + +export GUILE_HISTORY="$XDG_STATE_HOME/guile-history" +export GNUPGHOME="$XDG_CONFIG_HOME/gnupg" +export RLWRAP_HOME="$XDG_CACHE_HOME/rlwrap" +export LESSHISTFILE="$XDG_STATE_HOME/lesshst" +export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch/default/config" +export PASSWORD_STORE_DIR="$SRC/private/password-store" +export MAILCAPS="$XDG_CONFIG_HOME/mailcaps/config" +export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc.py" +export EXINIT=' + " set number + " set autoindent + set ruler + set showmode + set showmatch +' + +HOSTNAME="$(hostname)" +export BORG_PASSCOMMAND="pass show $HOSTNAME/borg/passphrase" +export BORG_REPO="suyin:borg/$HOSTNAME" +export BORG_REMOTE_PATH='borg1' + +N_PROCS=$(($(nproc) * 2 + 1)) +GUILE_EFFECTIVE_VERSION="$(guile -c '(display (effective-version))')" +export MAKEFLAGS="-j $N_PROCS" +export GOPATH="$SRC/go" +export CFLAGS='-std=c99 -Wall -Wextra -Wpedantic -g -flto -Werror' +export CC=gcc +export AR=gcc-ar +export LEX=flex +export LDFLAGS='-flto' +export LISP='sbcl --eval' +export N_PROCS GUILE_EFFECTIVE_VERSION +export LISP_CLI_IMPL=clisp + +add_prefix() { + export GUILE_LOAD_PATH="$1/share/guile/site/$GUILE_EFFECTIVE_VERSION${GUILE_LOAD_PATH:+:}${GUILE_LOAD_PATH:-:}" + export GUILE_LOAD_COMPILED_PATH="$1/lib/guile/$GUILE_EFFECTIVE_VERSION/site-ccache${GUILE_LOAD_COMPILED_PATH:+:}${GUILE_LOAD_COMPILED_PATH:-}" + export C_INCLUDE_PATH="$1/include${C_INCLUDE_PATH:+:}${C_INCLUDE_PATH:-}" + export LIBRARY_PATH="$1/lib${LIBRARY_PATH:+:}${LIBRARY_PATH:-}" + export INFOPATH="$1/share/info${INFOPATH:+:}${INFOPATH:-}" + export MANPATH="$1/share/man${MANPATH:+:}${MANPATH:-}" + export DICPATH="$1/share/hunspell${DICPATH:+:}${DICPATH:-}" + export PATH="$1/bin${PATH:+:}${PATH:-}" +} +export PREFIX="$XDG_PREFIX/var/mkg" +add_prefix "$PREFIX" +add_prefix "$XDG_PREFIX" + +for d in "$XDG_PREFIX"/opt/bin-dirs/*; do + PATH="$d:$PATH" +done + + + +# +# Aliases +# + +unalias -a + +alias p='ping euandre.org -c 3' +alias c='tmux send-keys -R \; clear-history' +alias o='open' +alias mm='msmtp-queue -r' +alias s='vcs status' +alias d='vcs diff' +alias ds='vcs diff -- --staged' +alias tpd='cd "$(mkdtemp)"' + +alias l='ls -lahF --color' +alias grep='grep --color=auto' +alias diff='diff --color=auto' +alias watch='watch --color ' +alias man='MANWIDTH=$((COLUMNS > 80 ? 80 : COLUMNS)) man' +alias less='less -R' +alias tree='tree -aC' +alias make='make -e' +alias mv='mv -i' +alias vi='echo "Use \"e\" instead."; false' +alias bc='bc -l' + +alias sqlite='rlwrap sqlite3' +alias guile='guile -l "$XDG_CONFIG_HOME"/guile/init.scm' + +alias flush='sync && echo 3 | sudo tee /proc/sys/vm/drop_caches > /dev/null' +alias kal='khal calendar today `LANG=en.UTF-8 date +%A`' + + + +# +# PS1 +# + +error_marker() { + STATUS=$? + if [ "$STATUS" != 0 ]; then + color -c redb " (!! $STATUS !!) " + fi +} + +shell_status_level() { + if [ -z "${SHLVL:-}" ]; then + return + fi + + if [ -n "${TMUX:-}" ]; then + LVL=$((SHLVL - 1)) + else + LVL="$SHLVL" + fi + + if [ "$LVL" = 1 ]; then + return + fi + + color -c white "$LVL" + if [ -n "${RANGER_LEVEL:-}" ]; then + color -c white '|' + color -c bluei 'r' + fi +} + +shell_status_jobs() { + JOBS="$(jobs | grep -cv autojump)" + if [ "$JOBS" != 0 ]; then + color -c red "$JOBS" + fi +} + +shell_status() { + LEVEL="$(shell_status_level)" + JOBS="$(shell_status_jobs)" + + if [ -z "$LEVEL" ] && [ -z "$JOBS" ]; then + return + fi + + color -c white '[' + printf '%s' "$LEVEL" + if [ -n "$LEVEL" ] && [ -n "$JOBS" ]; then + color -c white '|' + fi + printf '%s' "$JOBS" + color -c white ']' + printf ' ' +} + +timestamp() { + color -c blacki '\T' +} + +path() { + color -c yellowb '\w/' +} + +guix_env() { + if [ -z "${GUIX_ENVIRONMENT:-}" ]; then + return + fi + + printf '\n' + color -c blacki '~> ' + color -c purple 'guix environment ' + printf '(' + color -c blueb "$GUIX_ENVIRONMENT" + printf ')' +} + +in_nix_shell() { + if [ -z "${IN_NIX_SHELL:-}" ]; then + return + fi + + printf '\n' + color -c blacki '~> ' + color -c purpleb "$IN_NIX_SHELL " + color -c purple 'nix-shell ' + printf '(' + color -c blueb "${name:-}" + printf ')' +} + +PS1='`error_marker`'$(timestamp)' '$(path)' `shell_status``vcs ps1``guix_env``in_nix_shell` +$ ' + + + +# g '^\w.*json_destroy(' +g() { + # shellcheck disable=2086 + fn=$(git grep -n -- "$1" ${2:-} | \ + cut -d: -f -2 | \ + fzf --select-1 \ + --exit-0 \ + --preview "echo {} | \ + cut -d: -f1 | \ + xargs -I% awk -v bounds=25 -v pat=\"$1\" -v n=\$(echo {} | cut -d: -f2) ' + (n - bounds < NR) && (NR < n + bounds) && (NR != n) { print } + NR==n { gsub(pat, \"\033[1;33m&\033[1;000m\"); print } + ' %") + if [ -n "$fn" ]; then + f="$(echo "$fn" | cut -d: -f1)" + n="$(echo "$fn" | cut -d: -f2)" + # shellcheck disable=2068 + # history -s g "$@" + # history -s vi "+$n" "$f" + # vi "+$n" "$f" + history -s g "$@" + history -s e "+$n" "$f" + e "+$n" "$f" + fi +} + +f() { + # profile="f-shell-function$(pwd | sed -e 's_/_-_g')" + # file="$(git ls-files | grep ${2:-.} | remembering -p "$profile" -c "fzf --select-1 --exit-0 --preview 'cat {}'")" + # shellcheck disable=2086 + file="$(git ls-files | grep ${2:-.} | fzf --select-1 --exit-0 --preview 'cat {}')" + if [ -n "$file" ]; then + # shellcheck disable=2068 + history -s f "$@" + history -s "$1" "$file" + "$1" "$file" + fi +} + + + +r() { + . ~/.profile + xset r rate 225 100 +} + +_edit_without_executing() { + F="$(mkstemp)" + printf '%s\n' "$READLINE_LINE" > "$F" + e "$F" + READLINE_LINE="$(cat "$F")" + READLINE_POINT="${#READLINE_LINE}" + rm -f "$F" +} +if set -o | grep 'on' | grep -Eq '^(vi|emacs)'; then + bind -x '"\C-x\C-e":_edit_without_executing' +fi + + + + +# +# GPG and SSH agents configuration +# + +SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) +GPG_TTY=$(tty ||:) +export GPG_TTY SSH_AUTH_SOCK +gpgconf --launch gpg-agent + + + +case $- in + *i*) + stty -ixon # Disable C-s/C-q mode + ;; + *) + ;; +esac + +F="$PRIV_CONFIG"/privrc.sh +if [ -r "$F" ]; then + # Extra rc code to be loaded, stored in private repository + . "$F" +fi + + + +# +# From here on, bash-specific things. +# + +if [ -z "$BASH_VERSION" ]; then + return +fi + +ln -fs .profile ~/.bashrc + +export INPUTRC="$XDG_CONFIG_HOME/bash/inputrc" +export HISTCONTROL=ignorespace:ignoredups + +eval "$(direnv hook bash)" + + +# +# From here on, interactive-only bash-specific things. +# + +case $- in + *i*) + ;; + *) + return + ;; +esac + +# IIRC, the Guix profile should do this +for f in "$HOME_ENVIRONMENT"/profile/etc/bash_completion.d/*; do + . "$f" +done + +# IIRC, the Guix package should do this +F="$HOME_ENVIRONMENT"/profile/share/autojump/autojump.bash +if [ -r "$F" ]; then + . "$F" +fi diff --git a/etc/sh/root-rc b/etc/sh/root-rc new file mode 100644 index 0000000..f78f293 --- /dev/null +++ b/etc/sh/root-rc @@ -0,0 +1,87 @@ +#!/bin/sh +# shellcheck disable=1090,1091 +export ENV=~/.profile + +XDG_PREFIX=~/.usr +export XDG_CACHE_HOME="$XDG_PREFIX/var/cache" +export XDG_CONFIG_HOME="$XDG_PREFIX/etc" +export XDG_DATA_HOME="$XDG_PREFIX/share" +export XDG_STATE_HOME="$XDG_PREFIX/state" +export XDG_LOG_HOME="$XDG_PREFIX/var/log" + +mkdir -p \ + "$XDG_CACHE_HOME" \ + "$XDG_CONFIG_HOME" \ + "$XDG_DATA_HOME" \ + "$XDG_STATE_HOME" \ + "$XDG_LOG_HOME" + +GUIX_PROFILE="$XDG_CONFIG_HOME"/guix/current +if [ -e "$GUIX_PROFILE"/etc/profile ]; then + . "$GUIX_PROFILE"/etc/profile +fi + +HISTSIZE=-1 +HISTFILE="$XDG_STATE_HOME"/bash-history +HISTCONTROL=ignorespace:ignoredups + +export EDITOR='vi' +export VISUAL="$EDITOR" +export PAGER='less -R' +export GUILE_HISTORY="$XDG_STATE_HOME"/guile-history +export RLWRAP_HOME="$XDG_CACHE_HOME"/rlwrap +export LESSHISTFILE="$XDG_STATE_HOME"/lesshst +export EXINIT=' + " set number + set autoindent + set ruler + set showmode + set showmatch +' + +alias l='ls -lahF --color=auto' +alias grep='grep --color=auto' +alias diff='diff --color' +alias less='less -R' +alias mv='mv -i' +alias rm='rm -i' +alias r='reload' + +reload() { + . ~/.profile +} + + + +# +# PS1 +# + +error_marker() { + STATUS=$? + if [ "$STATUS" != 0 ]; then + printf ' (!! %s !!) ' "$STATUS" + fi +} + +shell_level() { + # shellcheck disable=3028 + L="${SHLVL:-1}" + if [ -n "${TMUX:-}" ]; then + LVL=$((L - 1)) + else + LVL="$L" + fi + if [ "$LVL" != 1 ]; then + printf '[%s] ' "$LVL" + fi +} + +guix_env() { + if [ -n "${GUIX_ENVIRONMENT:-}" ]; then + printf '\n~> guix environment (%s)' "$GUIX_ENVIRONMENT" + fi +} + +PS1='`error_marker`\T \w/ `shell_level``guix_env` +# ' diff --git a/etc/ssh/config.tmpl b/etc/ssh/config.tmpl new file mode 100644 index 0000000..fd4b8a3 --- /dev/null +++ b/etc/ssh/config.tmpl @@ -0,0 +1,6 @@ +Host * + UserKnownHostsFile ${XDG_CONFIG_HOME}/ssh/known_hosts + +Include ~/dev/libre/servers/src/infrastructure/ssh.conf +Include ~/dev/others/lawtech/src/infrastructure/ssh.conf +Include ${XDG_DATA_HOME}/euandreh/vm-ssh.conf diff --git a/etc/ssh/known_hosts b/etc/ssh/known_hosts new file mode 100644 index 0000000..fa1b43a --- /dev/null +++ b/etc/ssh/known_hosts @@ -0,0 +1,84 @@ +|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= +104.238.176.81 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 +anoncvs.netbsd.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA3QiBl8leG9fqIJpKeNov0PKq5YryFFiroMWOPUv4hDFn8R0jC07YVaR/OSBrr37CTmGX5AFceXPzoFnLlwCqWR7rXg4NR75FTlTp9CG9EBAEtU8mee27KDrUFBTZdfVl2+aRYoAI5fTXA+0vpIO68Cq843vRWUZCcwinS4cNLUU= +git.2f30.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJSLZ4G5w4NysBUmAHmr6/V9om42IHSUCtqrNdhWoYQ0 +[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 +[camarada.site]:38123 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILoz1gFl6chY91vQ5SrZXSP5yHqRI3TdYy2ccEDpS7Z4 +149.28.21.56 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK2cITa9TuC3lzEihIfFYb0KhyJJ5Vg2vnGW1SMMwxhc +camarada.site ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILoz1gFl6chY91vQ5SrZXSP5yHqRI3TdYy2ccEDpS7Z4 +[127.0.0.1]:60022 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEuoUWqrJ8WLBDWwWG7zCyYVYz1upMlg1mSXMGMHIVzY +[localhost]:60022 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEuoUWqrJ8WLBDWwWG7zCyYVYz1upMlg1mSXMGMHIVzY +[10.0.2.1]:23841 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/ +[kuvira.wg]:23841 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/ +kuvira.wg ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvhhXQBEY9GhWOtBoLpDJRjqHAu7ci2A9l1xoet1Cz/ +216.238.68.100 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKF5klRzMiaDhfFv7vj6nIT2BdjbcgpsmnNT3y/X9oUu +arrobaponto.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKF5klRzMiaDhfFv7vj6nIT2BdjbcgpsmnNT3y/X9oUu +10.0.2.2 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII9jxIXM2FSYeZmY2uLWkQUJQLNIQQJyJdc7P4eEPhEU +velhinho ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII9jxIXM2FSYeZmY2uLWkQUJQLNIQQJyJdc7P4eEPhEU +velhinho.wg ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII9jxIXM2FSYeZmY2uLWkQUJQLNIQQJyJdc7P4eEPhEU +localhost ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII9jxIXM2FSYeZmY2uLWkQUJQLNIQQJyJdc7P4eEPhEU diff --git a/etc/tmux/tmux.conf b/etc/tmux/tmux.conf new file mode 100644 index 0000000..93efdf9 --- /dev/null +++ b/etc/tmux/tmux.conf @@ -0,0 +1,96 @@ +# 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 windows +bind-key -n M-[ previous-window +bind-key -n M-] next-window + +# 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 "#333333" # Status bar background color +set-option -g status-fg "#ffffff" # 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 $XDG_RUNTIME_DIR/tmux-urlscan-buffer \; new-window -n "urlscan" '$SHELL -c "urlscan < $XDG_RUNTIME_DIR/tmux-urlscan-buffer"' +bind-key - last + + +# $XDG_DATA_HOME variable isn't allowed by tmux-resurrect +set -g @resurrect-dir '~/.usr/share/tmux/resurrect' +set -g @continuum-restore 'on' +set -g @continuum-save-interval '60' +set -g @resurrect-capture-pane-contents 'on' +set -g @resurrect-processes '~make ~ssh ~e "~alot->alot" "~ranger->ranger" "~newsboat->newsboat" "~entr->entr" "~git->git" "~info->info"' +run-shell ~/.guix-home/profile/share/tmux-plugins/resurrect/resurrect.tmux +run-shell ~/.guix-home/profile/share/tmux-plugins/continuum/continuum.tmux diff --git a/etc/weechat/irc.conf b/etc/weechat/irc.conf new file mode 120000 index 0000000..d42fdad --- /dev/null +++ b/etc/weechat/irc.conf @@ -0,0 +1 @@ +../../var/lib/private/tilde/weechat/irc.conf
\ No newline at end of file |