dotfiles

A steaming hot pile of sh...ell scripts and configuration files.
git clone https://kaka.farm/~git/dotfiles
Log | Files | Refs

commit 20ead6dc1a30ad04ec7c2c20d440e45a4113be33
parent 09fd50bd1101049e10f0e30b3881dd6ae62bd7e9
Author: Yuval Langer <yuval.langer@gmail.com>
Date:   Sun, 22 Dec 2024 02:04:51 +0200

Add a guix-home-config.

Diffstat:
D.config/emacs/elfeed-feeds.el | 150-------------------------------------------------------------------------------
D.config/emacs/init.el | 578------------------------------------------------------------------------------
D.config/i3/config | 193-------------------------------------------------------------------------------
Mbin/0x0.st | 76++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
R.config/youtube-dl/config -> boydem/youtube-dl/config | 0
Afiles/.bash_profile | 48++++++++++++++++++++++++++++++++++++++++++++++++
Afiles/.bashrc | 129+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Afiles/.profile | 27+++++++++++++++++++++++++++
Aguix-home-config.scm | 315+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
R.config/emacs/copy-files-here.sh -> guix-home-files/.config/emacs/copy-files-here.sh | 0
R.config/emacs/custom-variables.el -> guix-home-files/.config/emacs/custom-variables.el | 0
Aguix-home-files/.config/emacs/elfeed-feeds.el | 155+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aguix-home-files/.config/emacs/init.el | 605+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
R.config/emacs/local-packages/emacs-kakafarm/kakafarm.el -> guix-home-files/.config/emacs/local-packages/emacs-kakafarm/kakafarm.el | 0
Aguix-home-files/.config/i3/config | 202+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
R.config/redshift.conf -> guix-home-files/.config/redshift.conf | 0
16 files changed, 1529 insertions(+), 949 deletions(-)

diff --git a/.config/emacs/elfeed-feeds.el b/.config/emacs/elfeed-feeds.el @@ -1,150 +0,0 @@ -(require 'cl-lib) - -(customize-set-value 'elfeed-feeds - '( - ("https://acdw.casa/feed.xml" acdw activitypub blog craftering) - ("https://analognowhere.com/feed/rss.xml" comics unixsurrealism) - ("https://api.substack.com/feed/podcast/462466.rss" blog foss freesoftware linux lunduke news opensource unix) - ("https://baty.net/index.xml" blog emacs personal) - ("https://bbs.kawa-kun.com/users/gondola/feed.atom" activitypub bbs.kawa-kun.com gondola) - ("https://beej.us/blog/rss.xml" blog programming) - ("https://blog.archive.org/feed/" archive blog internetarchive official) - ("https://blog.benoitj.ca/posts/index.xml" blog craftering) - ("https://blog.cleancoder.com/atom.xml" blog programming unclebob) - ("https://blog.codeberg.org/feeds/all.atom.xml" codeberg) - ("https://blog.minetest.net/feed.rss" computergames games launti minetest official) - ("https://blog.mwmbl.org/index.xml" mwmbl news official searchengine) - ("https://blog.vaxry.net/feed" blog linux) - ("https://botsin.space/@mechilim/with_replies.rss" activitypub covid hebrew israel) - ("https://bsky.app/profile/did:plc:vwmtku4tfkezcuzutimyg352/rss" atproto bsky emacs microblog) - ("https://c.im/@NWengrov.rss" activitypub blog novartza) - ("https://cdn.jwz.org/blog/feed/" blog jwz) - ("https://chris-hughes.dev/rss" blog craftering) - ("https://christerpher.com/feed.xml" blog craftering) - ("https://chromefetus.thecomicseries.com/rss/" chromefetus comics) - ("https://crys.site/index.xml" crys blog personal) - ("https://davidson.weizmann.ac.il/rss.xml" davidson news science weizmann) - ("https://deidetected.com/index.php/comments/feed/" csj withreplies) - ("https://deidetected.com/index.php/feed/" csj) - ("https://digital-archive.org.il/feed/" culture hanancohen hebrew internet israel) - ("https://drewdevault.com/blog/index.xml" blog drewdevault linux programming) - ("https://dthompson.us/feed.xml" blog dthompson programming scheme) - ("https://elpa.gnu.org/packages/greader.xml" elpa emacs greader package) - ("https://erictopol.substack.com/feed" covid erictopol science) - ("https://fandompulse.substack.com/feed" csj news) - ("https://feeds.transistor.fm/collection-of-jhourneys" jhourney meditation podcast) - ("https://forum.systemcrafters.net/latest.rss" forum freesoftware guix linux lisp scheme systemcrafters) - ("https://forum.systemcrafters.net/posts.rss" forum freesoftware guix linux lisp scheme systemcrafters) - ("https://fosstodon.org/@daviwil.rss" activitypub craftering daviwil systemcrafters) - ("https://fosstodon.org/@daviwil/with_replies.rss" activitypub craftering daviwil replies systemcrafters with_replies) - ("https://galperel.wordpress.com/feed/" books hebrew israel) - ("https://gitlab.com/michelangelo-rodriguez/greader.atom" commits emacs git greader repository) - ("https://glenneth.srht.site/feed.xml" blog craftering glenneth) - ("https://glenneth.org/feed.xml" blog craftering glenneth) - ("https://guix.gnu.org/feeds/blog.atom" guix news official) - ("https://hostux.social/@fsfstatus.rss" gnu official status) - ("https://hyperboleandahalf.blogspot.com/feeds/posts/default" blog comics) - ("https://idlip.github.io/rss.xml" blog craftering) - ("https://internet-israel.com/feed/" internet hebrew israel) - ("https://irrelevant.org.il/feed" culture hanancohen hebrew internet israel) - ("https://jabbo.webdings.de/blog/atom.xml" blog craftering emacs) - ("https://kaka.farm/feed.xml" blog craftering self) - ("https://kaka.farm/~brownjenkin/feeds/all.atom.xml" blog self) - ("https://kakafarm.codeberg.page/feed.xml" blog craftering self) - ("https://killsixbilliondemons.com/feed/" comics killsixbilliondemons) - ("https://lemmy.sdf.org/feeds/c/unix_surrealism.xml" comics lemmy sdf unixsurrealism) - ("https://lemmy.sdf.org/u/beejjorgensen" beej lemmy sdf) - ("https://libera.chat/atom.xml" blog irc liberachat news) - ("https://ludic.mataroa.blog/rss/" blog horror it ludic programming) - ("https://luis-felipe.gitlab.io/en/feed.atom" blog emacs guile guix luisfilipe personal) - ("https://luminousnine.com/feed.xml" blog craftering) - ("https://luvstarkei.com/feed/" art blog luvstarkei) - ("https://masto.ai/@johnsnowproject/with_replies.rss" activitypub corona covid) - ("https://mastodon.sdf.org/@beejjorgensen.rss" activitypub beej sdf) - ("https://matklad.github.io/feed.xml" blog programming) - ("https://me.literatelisp.eu/feed.xml" lisp literatelisp programming scheme) - ("https://megananda.org/feed/" blog meditation) - ("https://merveilles.town/@prahou.rss" activitypub comics mastodonironcurtain prahou unixsurrealism) - ("https://merveilles.town/tags/unix_surrealism.rss" activitypubtags comics unixsurrealism) - ("https://michal.sapka.me/bsd/rss.xml" blog bsd michalsapka unix) - ("https://michal.sapka.me/emacs/rss.xml" blog emacs michalsapka unix) - ("https://michal.sapka.me/index.xml" blog bsd emacs linux michalsapka unix) - ("https://mstdn.social/@erictopol.rss" activitypub covid erictopol science) - ("https://mstdn.social/@erictopol/with_replies.rss" activitypub covid erictopol science) - ("https://my.gnusolidario.org/feed/" fsf gnu gnuhealth health medicine news official) - ("https://nedroid.com/feed" comics nerdroid webcomic) - ("https://neocities.org/site/shermysforest.rss" blog comics) - ("https://netdinos.wordpress.com/" blog hebrew israel podcast) - ("https://newdiscourses.com/feed/" csj) - ("https://odysee.com/$/rss/@ArkhamReporter:5" arkhamreporter lovecraft video) - ("https://olddeuteronomy.github.io/index.xml" blog emacs) - ("https://planet.debian.org/rss20.xml" blog debian linux planet) - ("https://planet.emacslife.com/atom.xml" emacs emacslife planet) - ("https://planet.gnu.org/rss20.xml" blog gnu linux planet) - ("https://planet.scheme.org/atom.xml" lisp planet scheme) - ("https://puri.sm/feed/" linux news official purism) - ("https://purplg.dev/index.xml" blog craftering) - ("https://rednosehacker.com/feed/" blog emacs guile lisp programming scheme) - ("https://reiddragon.neocities.org/blog/feed.rss" blog nickname_reid personal reid unixsurrealism) - ("https://retropikzel.kapsi.fi/feed.xml" blog craftering) - ("https://richarddavis.xyz/en/blog/rss.xml" blog craftering) - ("https://rotter.net/rss/rotternews.xml" hebrew israel news rotter) - ("https://rss.art19.com/ten-percent-happier" meditation podcast) - ("https://samharris.substack.com/feed" blog samharris) - ("https://sciencewtg.substack.com/feed" blog popsci sabine sabinehossenfelder science) - ("https://sfba.social/@danielmingram/with_replies.rss" activitypub danielmingram) - ("https://shakuf.co.il/feed" hebrew israel news shakuf) - ("https://shom.dev/index.xml" blog craftering linux) - ("https://spritely.institute/feed.xml" linux lisp official scheme) - ("https://sr.ht/~abcdw/rde-monthly/feed.rss" guix lisp newsletter rde scheme) - ("https://stallmansupport.org/feed.xml" csj richardmathewstallman rms stallman) - ("https://status.mangadex.org/history.atom" comics) - ("https://summeremacs.github.io/index.xml" blog craftering emacs lisp programming scheme summeremacs unix) - ("https://systemcrafters.net/rss/news.xml" blog craftering emacs guile guix linux lisp news official scheme) - ("https://tdback.net/index.xml" blog craftering) - ("https://thanosapollo.org/index.xml" blog craftering) - ("https://tilde.town/~ramin_hal9001/atom.xml" blog lisp programming raminhonary scheme) - ("https://tomerpersico.com/feed/" blog hebrew personal religion) - ("https://tooot.im/@NWengrov.rss" activitypub blog novartza) - ("https://tooot.im/@admin.rss" activitypub admin) - ("https://torrentfreak.com/feed/" filesharing internet news pirating torrents) - ("https://trevarj.github.io/rss.xml" blog craftering) - ("https://triapul.cz/feed/cesky.xml" blog cesky computing czech unix unixsurrealism) - ("https://triapul.cz/feed/english.xml" blog computing unix unixsurrealism) - ("https://triapul.cz/feed/gopher.xml" blog computing gopher unix unixsurrealism) - ("https://tusharhero.codeberg.page/rss.xml" blog craftering) - ("https://tylerdback.com/index.xml" blog craftering) - ("https://unixdigest.com/feed.rss" blog linux news unix unix) - ("https://vimeo.com/user13532867/videos/rss" danielmingram meditation) - ("https://whatsup.org.il/backend-forums.php?utf8=1" hebrew israel linux whatsup) - ("https://whatsup.org.il/backend.php?utf8=1" hebrew israel linux whatsup) - ("https://whhone.com/index.xml" blog emacs freesoftware linux programming waihon) - ("https://write.as/jeko/feed/" blog guile lisp personal programming scheme) - ("https://www.accursedfarms.com/rss/3-accursed-farms.xml/" accursedfarms blog) - ("https://www.andrewgoldheretics.com/feed" andrewgold blog csj) - ("https://www.astralcodexten.com/feed" astralcodexten blog csj) - ("https://www.blipanika.co.il/?feed=rss2" hebrew israel scifi) - ("https://www.debian.org/News/news" debian linux news) - ("https://www.goominet.com/unspeakable-vault/?type=103" comics) - ("https://www.ha-makom.co.il/feed/" hamakom hebrew israel news) - ("https://www.hayadan.org.il/feed" hayadan hebrew news science) - ("https://www.jhourney.io/blog?format=rss" blog jhana jhourney meditation) - ("https://www.kukuruyo.com/feed/" comics kukuruyo webcomic) - ("https://www.linux.com/feed/" linux) - ("https://www.livejournal.com/allpics.bml?user=oglafcomics" comics) - ("https://www.midaat.org.il/feed/" conspiracy medicine midaat science) - ("https://www.more-magic.net/feed.atom" blog computing lisp programming scheme unix) - ("https://www.rahuljuliato.com/rss.xml" blog craftering) - ("https://www.realityslaststand.com/feed" csj popsci) - ("https://www.rifters.com/crawl/?feed=rss2" blog peterwatts scifi) - ("https://www.schneier.com/feed/atom/" blog news personal schneier security) - ("https://www.sexylosers.com/feed/" comics sexylosers) - ("https://www.snamellit.com/rss.xml" blog craftering) - ("https://www.the7eye.org.il/feed" hebrew israel news the7eye) - ("https://www.webster.co.il/feed/" blog hanancohen hebrew israel) - ("https://www.wheresyoured.at/rss/" blog news tech) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC4fQ-Cy8UpLPMwehPg-8ltQ" andrewgold csj podcast video youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UC4kLp84DGlsPz-a85gK-zng" csj gadyair hebrew video youtube) - ("https://www.youtube.com/feeds/videos.xml?channel_id=UCzREuchzOqiawpEpvEM0Tyg" atheism islam video youtube) - ("https://xonotic.org/index.xml" computergames games official xonotic) - )) diff --git a/.config/emacs/init.el b/.config/emacs/init.el @@ -1,578 +0,0 @@ -;;; -*- lexical-binding: t; -*- - -(setq gc-cons-threshold (* 1024 1024 1024)) - -(setq read-process-output-max (string-to-number - (with-temp-buffer - (insert-file-contents "/proc/sys/fs/pipe-max-size") - (buffer-string)))) - -(require 'server) -(unless (server-running-p) - (server-start)) - -(require 'benchmark-init) - -(add-to-list 'load-path (concat user-emacs-directory - "local-packages/emacs-kakafarm/")) - -(load (locate-user-emacs-file "local-stuff.el")) - -(setq package-archives '()) -(require 'use-package) - -(setq major-mode-remap-alist '((emacs-lisp-mode . fundamental-mode))) - -(autoload 'skribilo-mode "skribilo.el" "Skribilo mode." t) - -'(progn -;;; Weird https://www.youtube.com/watch?v=TjMTNSdhUvk stuff. - (setq inhibit-startup-message t) - (menu-bar-mode 1) - (fido-vertical-mode 1) - ;; (icomplete-vertical-mode 1) - (push 'flex completion-styles) - '(eldoc-mode 1) - (flymake-mode 1) - ;; (load-theme 'modus-vivendi-tinted t) - (setopt mode-line-end-spaces nil) - (set-display-table-slot standard-display-table 'vertical-border (make-glyph-code ?|)) - (xterm-mouse-mode 1)) - -(use-package browse-url - :demand t - :custom - (browse-url-browser-function 'eww-browse-url) - (browse-url-new-window-flag t) - ) - -(use-package casual-calc - :ensure nil - :bind (:map calc-mode-map ("C-o" . casual-calc-tmenu))) - -(use-package casual-dired - :ensure nil - :bind (:map dired-mode-map ("C-o" . casual-dired-tmenu))) - -(use-package casual-info - :ensure nil - :bind (:map Info-mode-map ("C-o" . casual-info-tmenu))) - -'(use-package company - :defer t - :init - (add-hook 'after-init-hook 'global-company-mode)) - -(use-package compilation - :demand t - :requires (ansi-color) - ) - -;; FIXME: Why can't I use it in the (use-package compilation :hook or :init)? -(add-hook 'compilation-filter-hook #'kakafarm/colorize-compilation) - - -(use-package corfu - :defer t - :config - (global-corfu-mode) - :custom - (corfu-auto t)) - -(use-package cus-edit - :config - ;; Use another file for the ``customize'' customisations. - (setq custom-file (locate-user-emacs-file "custom-variables.el")) - (load custom-file 'noerror 'nomessage)) - -(use-package detubifier - :defer t - ) - -(use-package dictionary - :defer t - :custom - (dictionary-server "localhost")) - -(use-package elfeed - :defer t - :config - ;; XXX: Not sure if I want it to be a `kakafarm/elfeed-feeds' - ;; variable that is then set to `elfeed-feeds' in the `:custom' - ;; section, or loaded inside the `elfeed-feeds.el' file using the - ;; `customize-set-value' function. - (load (locate-user-emacs-file "elfeed-feeds.el")) - (customize-set-value 'elfeed-curl-program-name - (expand-file-name "~/.guix-profile/bin/curl")) - :custom - ;; (elfeed-curl-max-connections 10) - (elfeed-search-filter "@1-week-ago +unread") - (elfeed-curl-program-name (expand-file-name "~/.guix-profile/bin/curl")) - ) - -'(use-package elfeed-goodies - :config - (elfeed-goodies/setup)) - -(use-package emacs - :ensure nil - :bind - ( - :map global-map - ("C-c p p" . kakafarm/percent-read) - ("C-c C-s" . (lambda (beg end) - (interactive (list (region-beginning) (region-end))) - - (sort-lines '() - beg - end))) - - ;; (";" . #'kakafarm/easy-underscore) - ) - :config - (set-register ?i `(file . ,(locate-user-emacs-file "init.el"))) - '(ido-mode t) - ;; (tab-bar-mode) - :custom - (inhibit-startup-screen t) - ) - -(use-package ement - :custom - (ement-auto-sync nil) - (ement-save-sessions t) - ) - -(use-package erc - :defer t - :custom - (erc-server "irc.libera.chat") - (erc-nick "kakafarm") - (erc-track-shorten-start 8) - (erc-kill-buffer-on-part t) - (erc-auto-query 'bury) - (erc-autojoin-channels-alist '((libera-kakafarm "#systemcrafters"))) - :bind - (("C-c i r c" . (lambda () - (interactive) - (erc-tls :id 'libera-kakafarm)))) - ;; :config - ;; (erc-tls :id 'libera-kakafarm) - ) - -(use-package ffap - :defer t - :bind - ( - ("C-c f a p" . ffap-menu) - ("C-c f f a p" . kakafarm/ffap-browse-urls) - )) - -(use-package fontset - :defer t - :config - (set-fontset-font t 'hebrew "Noto Sans Hebrew")) - -(use-package geiser - :defer t - :after (scheme-mode) - :config - '((define-key 'geiser-mode-map) - (setq geiser-active-implementations '(guile)) - (global-unset-key "C-c C-a") - (unbind-key "C-c C-e" geiser-mode-map) - (unbind-key "C-c C-a" geiser-mode-map)) - :custom - (geiser-default-implementation 'guile) - (geiser-mode-auto-p nil) - (geiser-repl-per-project-p t) - ) - -(use-package greader - :defer t - :commands (greader-mode) - :config - (add-hook 'greader-mode-hook - 'kakafarm/sentence-end-double-nilify-for-read-only-buffers) - :hook ( - Custom-mode - Info-mode - Man-mode - elfeed-show - elfeed-show-mode - elpher - eww-after-render - fundamental-mode - help-mode - helpful-mode - lisp-mode - nov-mode - text-mode - w3m-mode - )) - -(use-package helm - :defer t - :bind - ( - :map global-map - ("M-x" . helm-M-x) - ) - ) - -(use-package helpful - :defer t - :bind - ( - ("C-h f" . helpful-function) - ("C-h k" . helpful-key) - ("C-h m" . helpful-mode) - ("C-h v" . helpful-variable) - ) - ) - -(use-package icomplete - :defer t - :config - ;; Display completions continuously in minibuffer. - (icomplete-mode 1)) - -(use-package info - :defer t - :custom - (Info-additional-directory-list '("~/infopath/"))) - -(use-package kakafarm - :demand t - :bind - ( - :map global-map - ("C-c C-w" . kakafarm/multi-vterm-weechat) - ("C-c w" . kakafarm/multi-vterm-weechat) - ) - ) - -(use-package magit - :custom - (magit-diff-refine-hunk t) - (magit-diff-refine-ignore-whitespace nil) - ) - -(use-package magit-todos - :defer t - :after magit - :config - (magit-todos-mode 1) - :custom - (magit-todos-insert-after '(bottom) nil nil "Changed by setter of obsolete option `magit-todos-insert-at'") - ) - -(use-package mastodon - :defer t - :init - ;; (setq mastodon-active-user "kakafarm" - ;; mastodon-instance-url "https://emacs.ch/") - (setq mastodon-active-user "kakafarm" - mastodon-instance-url "https://shitposter.world/") - ) - -(use-package menu-bar - :custom - (menu-bar-mode nil) - ) - -'(use-package mode-line - :custom - (mode-line-percent-position '(6 "%q")) - ) - -(use-package modus-themes - :defer t - :init - (setq modus-themes-mode-line '(borderless - accented - ;; 3d - padded - ;; moody - ) - modus-themes-region '(;;accented - bg-only - ;;no-extend - ) - modus-themes-paren-match '(bold - intense) - ;;modus-themes-syntax '(alt-syntax) - modus-themes-scale-headings t - modus-themes-org-blocks 'tinted-background) - (load-theme 'modus-vivendi) - ;;(load-theme 'wheatgrass) - ) - -(use-package mule - :defer t - :config -;;; https://emacs.stackexchange.com/questions/34322/set-default-coding-system-utf-8 - (set-language-environment "utf-8")) - -(use-package multi-vterm - ;; :demand t - :bind - ( - :map global-map - ("C-c <RET> <RET>" . multi-vterm) - ("C-c m m" . multi-vterm) - :map vterm-mode-map - ("C-q" . vterm-send-next-key) - ) - :commands - ( - multi-vterm - multi-vterm-buffer-exist-p - ) - ) - -'(use-package nano-tts - :defer t - :hook (eww-after-render nov-mode Info-mode) - :custom - (nano-tts-words-per-minute 225) - ) - -(use-package nov - :defer t - :mode ((rx ".epub" string-end) . nov-mode)) - -(use-package fundamental - :mode ((rx ".el" string-end) . fundamental-mode)) - -'(use-package opml-to-elfeed-feeds - :custom - (opml-to-elfeed-feeds-elfeed-feeds nil t) - ) - -(use-package orderless - :defer t - :custom - (completion-styles - '(orderless - basic)) - (completion-category-overrides - '((file (styles - basic - partial-completion))))) - -(use-package org - :defer t - :config - (org-babel-do-load-languages - 'org-babel-load-languages - '( - (emacs-lisp . t) - (scheme . t) - (shell . t) - )) - :custom - (org-agenda-files (list (expand-file-name "~/mine/org/") - (expand-file-name "~/Documents/notes/"))) - (org-default-notes-file (expand-file-name "~/mine/org/org.org")) - (org-directory (expand-file-name "~/mine/org/")) - (org-export-use-babel nil) - (org-html-postamble t) - (org-html-postamble-format '(("en" "<p class=\"author\">Author: %a</p>\12<p class=\"date\">Date: %d</p>\12<p class=\"creator\">%c</p>\12<p class=\"validation\">%v</p>"))) - (org-structure-template-alist '( - ("a" . "export ascii") - ("c" . "center") - ("C" . "comment") - ("e" . "example") - ("E" . "export") - ("h" . "export html") - ("l" . "export latex") - ("q" . "quote") - ("s" . "src") - ("v" . "verse") - ("g" . "src scheme :session moo :results output :tangle eopl3.scm") - ("z" . "src scheme") - )) - ) - -(use-package org-roam - :defer t - :bind (("C-c n l" . org-roam-buffer-toggle) - ("C-c n f" . org-roam-node-find) - ("C-c n i" . org-roam-node-insert)) - :config - ;;(org-roam-db-autosync-enable) - ;;(org-roam-db-autosync-mode) - :custom - (org-roam-directory "~/mine/roam/") - (org-roam-graph-viewer '(lambda (x) nil)) - ) - -(use-package paredit - :defer t - :hook (emacs-lisp-mode - lisp-mode - scheme-mode)) - -(use-package paren - :defer t - :config - (show-paren-mode)) - -;; XXX: Disabled. -'(use-package parinfer - :defer t - :hook (emacs-lisp-mode - lisp-mode - scheme-mode)) - -(use-package rainbow-delimiters - :defer t - :config - (rainbow-delimiters-mode)) - -(use-package recentf - :defer t - :config - (recentf-mode 1) - :bind (("C-S-t" . recentf-open-files) - ("C-c t" . recentf-open-files) - ("C-c l" . dictionary-lookup-definition)) - :custom - (recentf-max-menu-items 100) - (recentf-max-saved-items 100) - ) - -(use-package scheme-mode - :defer t - :config - ;; TODO: Did it even work?! - (add-hook 'scheme-mode-hook 'hs-minor-mode) - (progn ;; For SRFI-253: - (put 'define-checked 'scheme-indent-function 1) - (put 'lambda-checked 'scheme-indent-function 1)) - :mode (rx "." (| "scm" "sxml" "skb") string-end) - ;; :bind (:map scheme-mode-map - ;; ("C-c C-e" . arei-mode-map) - ;; ("C-c C-a" . arei)) - ) - -(use-package shr - :custom - (shr-width 75) - (shr-use-fonts nil) - (shr-use-colors nil) - (shr-indentation 2) - ) - -(use-package simple - :defer - :init - (advice-add 'kill-ring-save - :before - 'kakafarm/pulse-current-region) - :config - (column-number-mode) - ;; Don't want tabs in any of my source files. - (setq-default indent-tabs-mode - nil) - '(advice-add 'scratch-buffer - :after - (lambda () "Switch to text-mode." - (text-mode))) - :custom - (global-visual-line-mode t) - ) - -(use-package undo-tree - :defer t - :config - (global-undo-tree-mode 1) - (setq undo-tree-auto-save-history nil) - :bind - ("C-x u" . undo-tree-visualize)) - -(use-package vterm - :custom - (vterm-environment '("LC_ALL=en_IL.utf8")) - ) - -'(use-package whitespace-cleanup - :custom - (global-whitespace-cleanup-mode t) - ) - -(use-package window - :defer t - :config - '(advice-add 'recenter-top-bottom - :around - 'kakafarm/recenter-top-bottom)) - -(progn -;;; Emacs From Scratch -;;; https://systemcrafters.net/emacs-from-scratch/ -;;; https://www.youtube.com/playlist?list=PLEoMzSkcN8oPH1au7H6B7bBJ4ZO7BXjSZ - - (setq visible-cursor t - visible-bell t) - -;;; The Basics of Emacs Configuration -;;; https://systemcrafters.net/emacs-from-scratch/basics-of-emacs-configuration/ -;;; https://www.youtube.com/watch?v=OaF-N-FuGtc - - (tool-bar-mode -1) - (scroll-bar-mode -1) - (menu-bar-mode -1) - ;; (global-display-line-numbers-mode 1) - (hl-line-mode 1) - (blink-cursor-mode 1) - -;;; https://systemcrafters.net/emacs-from-scratch/the-best-default-settings/ -;;; https://www.youtube.com/watch?v=51eSeqcaikM - ;;(recentf-mode 1) - (setq history-length 25) - (savehist-mode 1) - (save-place-mode 1)) - -(progn -;;; Load org-roam stuff. - - (defvar kakafarm/org-roam-my-publish-time 0 - ;; TODO: Write docstring. - "TODO" - ) - - (setq org-publish-project-alist - `(("roam" - :base-directory "~/mine/roam/publish/" - :auto-sitemap t - :sitemap-function kakafarm/org-roam-sitemap - :sitemap-title "Roam Notes" - :publishing-function kakafarm/org-roam-publication-wrapper - :publishing-directory "~/mine/roam-export" - :section-number nil - :table-of-contents nil - :include ,(directory-files "~/mine/roam/publish/" t ".*.org$") - :html-head "<link rel=\"stylesheet\" href=\"/index.css\" type=\"text/css\">"))) - - (setq org-roam-graph-link-builder - 'kakafarm/org-roam-custom-link-builder) - - (add-hook 'org-roam-graph-generation-hook - (lambda (dot svg) - (if (< (- (cadr (current-time)) - kakafarm/org-roam-project-publish-time) - 5) - (progn - (copy-file svg - "~/mine/roam-export/sitemap.svg" - 't) - (setq kakafarm/org-roam-project-publish-time - 0)))))) - -(setq gc-cons-threshold (* 200 1024 1024)) -(put 'narrow-to-region 'disabled nil) -(put 'upcase-region 'disabled nil) -(put 'narrow-to-page 'disabled nil) -(put 'scroll-left 'disabled nil) diff --git a/.config/i3/config b/.config/i3/config @@ -1,193 +0,0 @@ -# This file has been auto-generated by i3-config-wizard(1). -# It will not be overwritten, so edit it as you like. -# -# Should you change your keyboard layout some time, delete -# this file and re-run i3-config-wizard(1). -# - -# i3 config file (v4) -# -# Please see https://i3wm.org/docs/userguide.html for a complete reference! - -set $mod Mod4 - -# Font for window titles. Will also be used by the bar unless a different font -# is used in the bar {} block below. -font pango:monospace 14 - -# 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 - -# 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 - -# Use pactl to adjust volume in PulseAudio. -set $refresh_i3status killall -SIGUSR1 i3status -bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status -bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status -bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status -bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status - -bindsym $mod+F12 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status -bindsym $mod+F11 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status -bindsym $mod+F10 exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status -bindsym $mod+F9 exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status - -# Use Mouse+$mod to drag floating windows to their wanted position -floating_modifier $mod - -# start a terminal -bindsym $mod+Return exec i3-sensible-terminal - -# kill focused window -bindsym $mod+Shift+q kill - -# start dmenu (a program launcher) -bindsym $mod+d exec --no-startup-id env LC_ALL=C dmenu_run -# A more modern dmenu replacement is rofi: -# bindcode $mod+40 exec "rofi -modi drun,run -show drun" -# There also is i3-dmenu-desktop which only displays applications shipping a -# .desktop file. It is a wrapper around dmenu, so you need that installed. -# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop - -# change focus -bindsym $mod+j focus left -bindsym $mod+k focus down -bindsym $mod+l focus up -bindsym $mod+semicolon focus right - -# alternatively, you can use the cursor keys: -bindsym $mod+Left focus left -bindsym $mod+Down focus down -bindsym $mod+Up focus up -bindsym $mod+Right focus right - -# move focused window -bindsym $mod+Shift+j move left -bindsym $mod+Shift+k move down -bindsym $mod+Shift+l move up -bindsym $mod+Shift+semicolon move right - -# alternatively, you can use the cursor keys: -bindsym $mod+Shift+Left move left -bindsym $mod+Shift+Down move down -bindsym $mod+Shift+Up move up -bindsym $mod+Shift+Right move right - -# split in horizontal orientation -bindsym $mod+h split h - -# split in vertical orientation -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 -bindsym $mod+Shift+t 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 j resize shrink width 3 px or 3 ppt - bindsym k resize grow height 3 px or 3 ppt - bindsym l resize shrink height 3 px or 3 ppt - bindsym semicolon resize grow width 3 px or 3 ppt - - # same bindings, but for the arrow keys - bindsym Left resize shrink width 3 px or 3 ppt - bindsym Down resize grow height 3 px or 3 ppt - bindsym Up resize shrink height 3 px or 3 ppt - bindsym Right resize grow width 3 px or 3 ppt - - # back to normal: Enter or Escape or $mod+r - bindsym Return mode "default" - bindsym Escape 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 { - status_command i3status -} - -# XXX -bindsym $mod+c exec --no-startup-id /home/yuval/.guix-profile/bin/clipboard-speaker --clipboard-type=b -bindsym $mod+x exec --no-startup-id /home/yuval/.guix-profile/bin/clipboard-speaker --clipboard-type=s -bindsym $mod+z exec --no-startup-id /home/yuval/.guix-profile/bin/clipboard-speaker --kill diff --git a/bin/0x0.st b/bin/0x0.st @@ -52,11 +52,17 @@ print_variables() { printf " URL_FOR_0X0_DOT_ST: '%s'\n" "$URL_FOR_0X0_DOT_ST" 1>&2 } -print_provide_one_and_only_one_flag_message () { +print_provide_one_and_only_one_flag_error_message_and_exit() { printf "Provide only none or one of -p / --primary, -s / --secondary, -b / --clipboard, -u / --url flags.\n" + help_message + if [ -n "$debug_flag" ]; then + print_variables + fi + exit 1 } # https://www.baeldung.com/linux/bash-parse-command-line-arguments +flags_flag="" OUR_ARGUMENTS="$(getopt -o hpsbu:x: --long help,debug,primary,secondary,clipboard,url:,null-dot-st-url: -- "$@" )" eval set -- "$OUR_ARGUMENTS" while [ -n "$*" ]; do @@ -71,39 +77,51 @@ while [ -n "$*" ]; do shift ;; -p | --primary) - xsel_flag_primary="$1" - if [ -n "$xsel_flag_secondary" ] || [ -n "$xsel_flag_clipboard" ] || [ -n "$url_flag" ]; then - print_provide_one_and_only_one_flag_message - help_message - exit 1 + if [ -z "$1" ]; then + continue; + elif [ -n "$flags_flag" ]; then + print_provide_one_and_only_one_flag_error_message_and_exit + else + flags_flag=1 fi + + xsel_flag="$1" shift ;; -s | --secondary) - xsel_flag_secondary="$1" - if [ -n "$xsel_flag_primary" ] || [ -n "$xsel_flag_clipboard" ] || [ -n "$url_flag" ]; then - print_provide_one_and_only_one_flag_message - help_message - exit 1 + if [ -z "$1" ]; then + continue; + elif [ -n "$flags_flag" ]; then + print_provide_one_and_only_one_flag_error_message_and_exit + else + flags_flag=1 fi + + xsel_flag="$1" shift ;; -b | --clipboard) - xsel_flag_clipboard="$1" - if [ -n "$xsel_flag_primary" ] || [ -n "$xsel_flag_secondary" ] || [ -n "$url_flag" ]; then - print_provide_one_and_only_one_flag_message - help_message - exit 1 + if [ -z "$1" ]; then + continue; + elif [ -n "$flags_flag" ]; then + print_provide_one_and_only_one_flag_error_message_and_exit + else + flags_flag=1 fi + + xsel_flag="$1" shift ;; -u | --url) - url_flag="$1" - if [ -n "$xsel_flag_primary" ] || [ -n "$xsel_flag_secondary" ] || [ -n "$xsel_flag_clipboard" ]; then - print_provide_one_and_only_one_flag_message - help_message - exit 1 + if [ -z "$1" ]; then + continue; + elif [ -n "$flags_flag" ]; then + print_provide_one_and_only_one_flag_error_message_and_exit + else + flags_flag=1 fi + + url_flag="$1" target_url="$2" shift 2 ;; @@ -114,13 +132,13 @@ while [ -n "$*" ]; do ;; --) shift - filename="$1" - if [ -z "$filename$xsel_flag_primary$xsel_flag_secondary$xsel_flag_clipboard$url_flag" ]; then - print_provide_one_and_only_one_flag_message - help_message - exit 1 + if [ -z "$1" ]; then + break + elif [ -n "$flags_flag" ]; then + print_provide_one_and_only_one_flag_error_message_and_exit fi - xsel_flag="$xsel_flag_primary$xsel_flag_secondary$xsel_flag_clipboard" + + filename="$1" break ;; *) @@ -131,13 +149,15 @@ while [ -n "$*" ]; do done if [ -z "$null_dot_st_url_flag" ]; then - null_dot_st_url="$URL_FOR_0X0_DOT_ST" + null_dot_st_url="$url_for_0x0_dot_st" fi if [ -n "$debug_flag" ]; then print_variables fi + + remove_temporary_file () { if [ -n "$debug_flag" ]; then printf "\nRemoving \"%s\"\n" "$temp_file" 1>&2 diff --git a/.config/youtube-dl/config b/boydem/youtube-dl/config diff --git a/files/.bash_profile b/files/.bash_profile @@ -0,0 +1,48 @@ +export LANG=en_US.UTF-8 +export LC_ALL=en_IL.UTF-8 + +export INFOPATH="/usr/share/info:$INFOPATH" + +PATH="$HOME/.local/bin:$PATH" + +# shellcheck source=.bash_guix_profile +GUIX_PROFILE="$HOME/.guix-profile" +if [ -f "$GUIX_PROFILE/etc/profile" ]; then + # shellcheck source=.guix-profile/etc/profile + source "$GUIX_PROFILE/etc/profile" +fi + +# Point at the Guix libraries. +#if [ -f "$HOME/.config/guix/current/share/guile/site/3.0" ]; then +# export GUILE_LOAD_PATH="$HOME/.config/guix/current/share/guile/site/3.0:$GUILE_LOAD_PATH" +#fi +#if [ -f "$HOME/.config/guix/current/lib/guile/3.0/site-ccache" ]; then +# export GUILE_LOAD_COMPILED_PATH="$HOME/.config/guix/current/lib/guile/3.0/site-ccache/:$GUILE_LOAD_COMPILED_PATH" +#fi + +GUIX_PROFILE="$HOME/.config/guix/current" +if [ -f "$GUIX_PROFILE/etc/profile" ]; then + # shellcheck source=.config/guix/current/etc/profile + source "$GUIX_PROFILE/etc/profile" +fi +if [ -d "$GUIX_PROFILE/share/info" ]; then + export INFOPATH="$GUIX_PROFILE/share/info:$INFOPATH" +fi + +if [ -d "$HOME/guixstuff/bin" ]; then + export PATH="$HOME/guixstuff/bin:$PATH" +fi + +if [ -d "$HOME/infopath" ]; then + export INFOPATH="$HOME/infopath:$INFOPATH" +fi + +if [ -d "$HOME/bin" ]; then + export PATH="$HOME/bin:$PATH" +fi + +export VISUAL=emacsclient +export EDITOR="$VISUAL" + +# shellcheck source=.bashrc +source "$HOME/.bashrc" diff --git a/files/.bashrc b/files/.bashrc @@ -0,0 +1,129 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=999999999999999 +HISTFILESIZE=999999999999999 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ -n "$GUIX_ENVIRONMENT" ]; then + our_guix_prompt="\[\033[01;33m\][♉]\[\033[00m\] " +fi + +if [ "$color_prompt" = yes ]; then + PS1="$our_guix_prompt"'${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1="$our_guix_prompt"'${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + if [ -r ~/.dircolors ]; then + eval "$(dircolors -b ~/.dircolors)" + else + eval "$(dircolors -b)" + fi + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi +[ -r "$HOME/.byobu/prompt" ] && . "$HOME/.byobu/prompt" #byobu-prompt# + +export CFLAGS="-Wall -Wextra -Werror" + +eval "$(fzf --bash)" + + +#emacs --daemon &> /dev/null & diff --git a/files/.profile b/files/.profile @@ -0,0 +1,27 @@ +# ~/.profile: executed by the command interpreter for login shells. +# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login +# exists. +# see /usr/share/doc/bash/examples/startup-files for examples. +# the files are located in the bash-doc package. + +# the default umask is set in /etc/profile; for setting the umask +# for ssh logins, install and configure the libpam-umask package. +#umask 022 + +# if running bash +if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/.local/bin" ] ; then + PATH="$HOME/.local/bin:$PATH" +fi diff --git a/guix-home-config.scm b/guix-home-config.scm @@ -0,0 +1,315 @@ +(use-modules + (ice-9 textual-ports) + + (gnu home services dotfiles) + (gnu home services shells) + (gnu home) + + (gnu packages autogen) + (gnu packages autotools) + (gnu packages bison) + (gnu packages books) + (gnu packages c) + (gnu packages calendar) + (gnu packages certs) + (gnu packages check) + (gnu packages chez) + (gnu packages ci) + (gnu packages code) + (gnu packages compression) + (gnu packages curl) + (gnu packages databases) + (gnu packages emacs) + (gnu packages emacs-xyz) + (gnu packages entr) + (gnu packages fonts) + (gnu packages fontutils) + (gnu packages fsf) + (gnu packages games) + (gnu packages gcc) + (gnu packages ghostscript) + (gnu packages gnome-xyz) + (gnu packages gnu-doc) + (gnu packages gnupg) + (gnu packages groff) + (gnu packages guile) + (gnu packages guile-xyz) + (gnu packages haskell-xyz) + (gnu packages irc) + (gnu packages libreoffice) + (gnu packages lisp) + (gnu packages mail) + (gnu packages man) + (gnu packages maths) + (gnu packages matrix) + (gnu packages mes) + (gnu packages ncdu) + (gnu packages networking) + (gnu packages pdf) + (gnu packages python-check) + (gnu packages python-xyz) + (gnu packages scheme) + (gnu packages shells) + (gnu packages shellutils) + (gnu packages skribilo) + (gnu packages speech) + (gnu packages sqlite) + (gnu packages tcl) + (gnu packages terminals) + (gnu packages tex) + (gnu packages texinfo) + (gnu packages tls) + (gnu packages tmux) + (gnu packages toys) + (gnu packages version-control) + (gnu packages video) + (gnu packages web) + (gnu packages web-browsers) + (gnu) + + (guix profiles) + (guix) + + (kakafarm packages emacs-xyz) + (kakafarm packages guile-xyz) + ) + +(home-environment + (packages + (list + ;; book-faif + ;; book-sparc + ;; chez-scheme + ;; emacs-geiser-chez + ;; fontconfig + ;; fortunes-jkirchartz + ;; guile-picture-language + ;; guile-websocket-next + ;; scheme48-prescheme + ;; scsh + autogen + automake + bibata-cursor-theme + bison + bsd-games + c-intro-and-ref + cdecl + cowsay + curl + darkhttpd + emacs + emacs-ansi + emacs-arei + emacs-benchmark-init + emacs-buttercup + emacs-casual-avy + emacs-casual-calc + emacs-casual-dired + emacs-casual-info + emacs-cider + emacs-corfu + emacs-corfu-doc + emacs-darkroom + emacs-denote + emacs-dictionary + emacs-diff-hl + emacs-direnv + emacs-djvu + emacs-eat + emacs-ef-themes + emacs-eglot + emacs-elfeed + emacs-elfeed-goodies + emacs-elfeed-org + emacs-elfeed-protocol + emacs-elfeed-score + emacs-elpher + emacs-ement + emacs-eval-in-repl-racket + emacs-flycheck + emacs-flycheck-haskell + emacs-flycheck-package + emacs-fzf + emacs-geiser-guile + emacs-geiser-racket + emacs-ggtags + emacs-gnosis + emacs-greader-mode + emacs-gruvbox-theme + emacs-guix + emacs-helm + emacs-helpful + emacs-htmlize + emacs-hy-mode + emacs-hyperbole + emacs-hyperbole + emacs-iedit + emacs-jabber + emacs-magit + emacs-magit-todos + emacs-markdown-mode + emacs-mastodon + emacs-multi-vterm + emacs-multiple-cursors + emacs-nano-tts-minor-mode + emacs-nginx-mode + emacs-nov-el + emacs-olivetti + emacs-orderless + emacs-org-roam + emacs-package-build + emacs-package-lint + emacs-paredit + emacs-parinfer-mode + emacs-peg + emacs-perspective + emacs-rainbow-blocks + emacs-rainbow-delimiters + emacs-rec-mode + emacs-request + emacs-rust-mode + emacs-sly + emacs-synosaurus + emacs-tco-el + emacs-transmission + emacs-treemacs + emacs-undo-tree + emacs-use-package + emacs-vterm + emacs-w3m + emacs-wgrep + emacs-whitespace-cleanup-mode + emacs-wisp-mode + emacs-writeroom + emacs-yasnippet + emacs-zotxt + entr + espeak-ng + festival + flite + font-dejavu + font-ghostscript + font-gnu-freefont + fzf + fzf-tab + git-lfs + glibc + glibc-locales + gnu-c-manual + gnu-make + gnu-standards + gnupg + gnutls + groff + guile-3.0 + guile-ac-d-bus + guile-clipboard-speaker + guile-colorized + guile-config + guile-fibers + guile-filesystem + guile-git + guile-gnutls + guile-goblins + guile-hall + guile-hoot + guile-json-4 + guile-lib + guile-pipe + guile-png + guile-reader + guile-readline + guile-simple-zmq + guile-srfi-128 + guile-srfi-133 + guile-srfi-145 + guile-srfi-146 + guile-srfi-158 + guile-srfi-159 + guile-srfi-180 + guile-srfi-189 + guile-srfi-197 + guile-srfi-232 + guile-srfi-235 + guile-srfi-253 + guile-srfi-89 + guile-websocket + guile-wisp + guile-zlib + guilescript + harmonist + haunt + hebcal + hello + hut + ii + info-reader + laminar + le-certs + libhdate + links + man-pages + man-pages-posix + mes + mpv + mumi + mythes + ncdu + nethack + nss-certs + pandoc + poppler + python-flake8 + python-hissp + python-pep8 + python-pycodestyle + python-pyflakes + python-pylama + python-pylint + r7rs-small-texinfo + recutils + sbcl + scsh + sicp + skribilo + slib + socat + speech-dispatcher + sqlite + tcl + texinfo + texlive-amsmath + texlive-ebproof + tig + tk + tmux + units + universal-ctags + zstd + emacs-howm + )) + + (services + (list + (service home-bash-service-type + (home-bash-configuration + (environment-variables + '( + #; + ("PS1" . "\\[\\e[1;32m\\]\\u \\[\\e[1;34m\\]\\w \\[\\e[0m\\]λ ") + ("EDITOR" . "emacsclient") + #; + ("LC_ALL" . "en_US.UTF-8") + )) + (aliases + '( + ("gs" . "git status") + )) + (bash-profile (list (local-file "files/.bash_profile" "bash_profile"))) + (bashrc (list (local-file "files/.bashrc" "bashrc"))) + )) + + (service home-dotfiles-service-type + (home-dotfiles-configuration + (directories '("guix-home-files")))) + ))) diff --git a/.config/emacs/copy-files-here.sh b/guix-home-files/.config/emacs/copy-files-here.sh diff --git a/.config/emacs/custom-variables.el b/guix-home-files/.config/emacs/custom-variables.el diff --git a/guix-home-files/.config/emacs/elfeed-feeds.el b/guix-home-files/.config/emacs/elfeed-feeds.el @@ -0,0 +1,155 @@ +(require 'cl-lib) + +(customize-set-value 'elfeed-feeds + '( + ("https://acdw.casa/feed.xml" acdw activitypub blog craftering) + ("https://analognowhere.com/feed/rss.xml" comics unixsurrealism) + ("https://api.substack.com/feed/podcast/462466.rss" blog foss freesoftware linux lunduke news opensource unix) + ("https://baty.net/index.xml" blog emacs personal) + ("https://bbs.kawa-kun.com/users/gondola/feed.atom" activitypub bbs.kawa-kun.com gondola) + ("https://beej.us/blog/rss.xml" blog programming) + ("https://blog.archive.org/feed/" archive blog internetarchive official) + ("https://blog.benoitj.ca/posts/index.xml" blog craftering) + ("https://blog.cleancoder.com/atom.xml" blog programming unclebob) + ("https://blog.codeberg.org/feeds/all.atom.xml" codeberg) + ("https://blog.minetest.net/feed.rss" computergames games launti minetest official) + ("https://blog.mwmbl.org/index.xml" mwmbl news official searchengine) + ("https://blog.vaxry.net/feed" blog linux) + ("https://botsin.space/@mechilim/with_replies.rss" activitypub covid hebrew israel) + ("https://bsky.app/profile/did:plc:vwmtku4tfkezcuzutimyg352/rss" atproto bsky emacs microblog) + ("https://c.im/@NWengrov.rss" activitypub blog novartza) + ("https://cdn.jwz.org/blog/feed/" blog jwz) + ("https://chris-hughes.dev/rss" blog craftering) + ("https://christerpher.com/feed.xml" blog craftering) + ("https://chromefetus.thecomicseries.com/rss/" chromefetus comics) + ("https://crys.site/index.xml" crys blog personal) + ("https://davidson.weizmann.ac.il/rss.xml" davidson news science weizmann) + ("https://deidetected.com/index.php/comments/feed/" csj withreplies) + ("https://deidetected.com/index.php/feed/" csj) + ("https://digital-archive.org.il/feed/" culture hanancohen hebrew internet israel) + ("https://drewdevault.com/blog/index.xml" blog drewdevault linux programming) + ("https://dthompson.us/feed.xml" blog dthompson programming scheme) + ("https://elpa.gnu.org/packages/greader.xml" elpa emacs greader package) + ("https://erictopol.substack.com/feed" covid erictopol science) + ("https://fandompulse.substack.com/feed" csj news) + ("https://feeds.transistor.fm/collection-of-jhourneys" jhourney meditation podcast) + ("https://forum.systemcrafters.net/latest.rss" forum freesoftware guix linux lisp scheme systemcrafters) + ("https://forum.systemcrafters.net/posts.rss" forum freesoftware guix linux lisp scheme systemcrafters) + ("https://fosstodon.org/@daviwil.rss" activitypub craftering daviwil systemcrafters) + ("https://fosstodon.org/@daviwil/with_replies.rss" activitypub craftering daviwil replies systemcrafters with_replies) + ("https://galperel.wordpress.com/feed/" books hebrew israel) + ("https://gitlab.com/michelangelo-rodriguez/greader.atom" commits emacs git greader repository) + ("https://glenneth.org/feed.xml" blog craftering glenneth) + ("https://glenneth.srht.site/feed.xml" blog craftering glenneth) + ("https://guix.gnu.org/feeds/blog.atom" guix news official) + ("https://hostux.social/@fsfstatus.rss" gnu official status) + ("https://hyperboleandahalf.blogspot.com/feeds/posts/default" blog comics) + ("https://idlip.github.io/rss.xml" blog craftering) + ("https://internet-israel.com/feed/" internet hebrew israel) + ("https://irrelevant.org.il/feed" culture hanancohen hebrew internet israel) + ("https://jabbo.webdings.de/blog/atom.xml" blog craftering emacs) + ("https://kaka.farm/feed.xml" blog craftering self) + ("https://kaka.farm/~brownjenkin/feeds/all.atom.xml" blog self) + ("https://kakafarm.codeberg.page/feed.xml" blog craftering self) + ("https://killsixbilliondemons.com/feed/" comics killsixbilliondemons) + ("https://lemmy.sdf.org/feeds/c/unix_surrealism.xml" comics lemmy sdf unixsurrealism) + ("https://lemmy.sdf.org/u/beejjorgensen" beej lemmy sdf) + ("https://libera.chat/atom.xml" blog irc liberachat news) + ("https://ludic.mataroa.blog/rss/" blog horror it ludic programming) + ("https://luis-felipe.gitlab.io/en/feed.atom" blog emacs guile guix luisfilipe personal) + ("https://luminousnine.com/feed.xml" blog craftering) + ("https://luvstarkei.com/feed/" art blog luvstarkei) + ("https://masto.ai/@johnsnowproject/with_replies.rss" activitypub corona covid) + ("https://mastodon.sdf.org/@beejjorgensen.rss" activitypub beej sdf) + ("https://matklad.github.io/feed.xml" blog programming) + ("https://me.literatelisp.eu/feed.xml" lisp literatelisp programming scheme) + ("https://megananda.org/feed/" blog meditation) + ("https://merveilles.town/@prahou.rss" activitypub comics mastodonironcurtain prahou unixsurrealism) + ("https://merveilles.town/tags/unix_surrealism.rss" activitypubtags comics unixsurrealism) + ("https://michal.sapka.me/bsd/rss.xml" blog bsd michalsapka unix) + ("https://michal.sapka.me/emacs/rss.xml" blog emacs michalsapka unix) + ("https://michal.sapka.me/index.xml" blog bsd emacs linux michalsapka unix) + ("https://mstdn.social/@erictopol.rss" activitypub covid erictopol science) + ("https://mstdn.social/@erictopol/with_replies.rss" activitypub covid erictopol science) + ("https://my.gnusolidario.org/feed/" fsf gnu gnuhealth health medicine news official) + ("https://nedroid.com/feed" comics nerdroid webcomic) + ("https://neocities.org/site/shermysforest.rss" blog comics) + ("https://netdinos.wordpress.com/" blog hebrew israel podcast) + ("https://newdiscourses.com/feed/" csj) + ("https://odysee.com/$/rss/@ArkhamReporter:5" arkhamreporter lovecraft video) + ("https://olddeuteronomy.github.io/index.xml" blog emacs) + ("https://planet.debian.org/rss20.xml" blog debian linux planet) + ("https://planet.emacslife.com/atom.xml" emacs emacslife planet) + ("https://planet.gnu.org/rss20.xml" blog gnu linux planet) + ("https://planet.scheme.org/atom.xml" lisp planet scheme) + ("https://puri.sm/feed/" linux news official purism) + ("https://purplg.dev/index.xml" blog craftering) + ("https://rednosehacker.com/feed/" blog emacs guile lisp programming scheme) + ("https://reiddragon.neocities.org/blog/feed.rss" blog nickname_reid personal reid unixsurrealism) + ("https://retropikzel.kapsi.fi/feed.xml" blog craftering) + ("https://richarddavis.xyz/en/blog/rss.xml" blog craftering) + ("https://rotter.net/rss/rotternews.xml" hebrew israel news rotter) + ("https://rss.art19.com/ten-percent-happier" meditation podcast) + ("https://samharris.substack.com/feed" blog samharris) + ("https://sciencewtg.substack.com/feed" blog popsci sabine sabinehossenfelder science) + ("https://scottaaronson.blog/?feed=rss2" blog personal) + ("https://sfba.social/@danielmingram/with_replies.rss" activitypub danielmingram) + ("https://shakuf.co.il/feed" hebrew israel news shakuf) + ("https://shom.dev/index.xml" blog craftering linux) + ("https://speechcode.com/blog/rss" arthuragleckler blog lisp personal scheme srfi) + ("https://spritely.institute/feed.xml" linux lisp official scheme) + ("https://sr.ht/~abcdw/rde-monthly/feed.rss" guix lisp newsletter rde scheme) + ("https://stallmansupport.org/feed.xml" csj richardmathewstallman rms stallman) + ("https://status.mangadex.org/history.atom" comics) + ("https://summeremacs.github.io/index.xml" blog craftering emacs lisp programming scheme summeremacs unix) + ("https://systemcrafters.net/rss/news.xml" blog craftering emacs guile guix linux lisp news official scheme) + ("https://tdback.net/index.xml" blog craftering) + ("https://thanosapollo.org/index.xml" blog craftering) + ("https://tilde.town/~ramin_hal9001/atom.xml" blog lisp programming raminhonary scheme) + ("https://tomerpersico.com/feed/" blog hebrew personal religion) + ("https://tooot.im/@NWengrov.rss" activitypub blog novartza) + ("https://tooot.im/@admin.rss" activitypub admin) + ("https://torrentfreak.com/feed/" filesharing internet news pirating torrents) + ("https://trevarj.github.io/rss.xml" blog craftering) + ("https://triapul.cz/feed/cesky.xml" blog cesky computing czech unix unixsurrealism) + ("https://triapul.cz/feed/english.xml" blog computing unix unixsurrealism) + ("https://triapul.cz/feed/gopher.xml" blog computing gopher unix unixsurrealism) + ("https://tusharhero.codeberg.page/rss.xml" blog craftering) + ("https://tylerdback.com/index.xml" blog craftering) + ("https://unixdigest.com/feed.rss" blog linux news unix unix) + ("https://vimeo.com/user13532867/videos/rss" danielmingram meditation) + ("https://whatsup.org.il/backend-forums.php?utf8=1" hebrew israel linux whatsup) + ("https://whatsup.org.il/backend.php?utf8=1" hebrew israel linux whatsup) + ("https://whhone.com/index.xml" blog emacs freesoftware linux programming waihon) + ("https://write.as/jeko/feed/" blog guile lisp personal programming scheme) + ("https://www.accursedfarms.com/rss/3-accursed-farms.xml/" accursedfarms blog) + ("https://www.andrewgoldheretics.com/feed" andrewgold blog csj) + ("https://www.astralcodexten.com/feed" astralcodexten blog csj) + ("https://www.blipanika.co.il/?feed=rss2" hebrew israel scifi) + ("https://www.debian.org/News/news" debian linux news) + ("https://www.gnu.org/software/shepherd/news/feed.xml" freesoftware gnu official shepherd) + ("https://www.goominet.com/unspeakable-vault/?type=103" comics) + ("https://www.ha-makom.co.il/feed/" hamakom hebrew israel news) + ("https://www.hayadan.org.il/feed" hayadan hebrew news science) + ("https://www.jhourney.io/blog?format=rss" blog jhana jhourney meditation) + ("https://www.kukuruyo.com/feed/" comics kukuruyo webcomic) + ("https://www.linux.com/feed/" linux) + ("https://www.livejournal.com/allpics.bml?user=oglafcomics" comics) + ("https://www.midaat.org.il/feed/" conspiracy medicine midaat science) + ("https://www.more-magic.net/feed.atom" blog computing lisp programming scheme unix) + ("https://www.okmij.org/ftp/atom.xml" blog okmij personal programming scheme) + ("https://www.okmij.org/ftp/rss.xml" blog okmij personal programming scheme) + ("https://www.rahuljuliato.com/rss.xml" blog craftering) + ("https://www.realityslaststand.com/feed" csj popsci) + ("https://www.rifters.com/crawl/?feed=rss2" blog peterwatts scifi) + ("https://www.schneier.com/feed/atom/" blog news personal schneier security) + ("https://www.sexylosers.com/feed/" comics sexylosers) + ("https://www.snamellit.com/rss.xml" blog craftering) + ("https://www.the7eye.org.il/feed" hebrew israel news the7eye) + ("https://www.webster.co.il/feed/" blog hanancohen hebrew israel) + ("https://www.wheresyoured.at/rss/" blog news tech) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC4fQ-Cy8UpLPMwehPg-8ltQ" andrewgold csj podcast video youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UC4kLp84DGlsPz-a85gK-zng" csj gadyair hebrew video youtube) + ("https://www.youtube.com/feeds/videos.xml?channel_id=UCzREuchzOqiawpEpvEM0Tyg" atheism islam video youtube) + ("https://xonotic.org/index.xml" computergames games official xonotic) + )) diff --git a/guix-home-files/.config/emacs/init.el b/guix-home-files/.config/emacs/init.el @@ -0,0 +1,605 @@ +;;; -*- lexical-binding: t; -*- + +(setq gc-cons-threshold (* 1024 1024 1024)) + +(setq read-process-output-max (string-to-number + (with-temp-buffer + (insert-file-contents "/proc/sys/fs/pipe-max-size") + (buffer-string)))) + +(require 'server) +(unless (server-running-p) + (server-start)) + +(require 'benchmark-init) + +(add-to-list 'load-path (concat user-emacs-directory + "local-packages/emacs-kakafarm/")) + +(load (locate-user-emacs-file "local-stuff.el")) + +(setq package-archives '()) +(require 'use-package) + +(setq major-mode-remap-alist '((emacs-lisp-mode . fundamental-mode))) + +(autoload 'skribilo-mode "skribilo.el" "Skribilo mode." t) + +'(progn +;;; Weird https://www.youtube.com/watch?v=TjMTNSdhUvk stuff. + (setq inhibit-startup-message t) + (menu-bar-mode 1) + (fido-vertical-mode 1) + ;; (icomplete-vertical-mode 1) + (push 'flex completion-styles) + '(eldoc-mode 1) + (flymake-mode 1) + ;; (load-theme 'modus-vivendi-tinted t) + (setopt mode-line-end-spaces nil) + (set-display-table-slot standard-display-table 'vertical-border (make-glyph-code ?|)) + (xterm-mouse-mode 1)) + +(use-package browse-url + :demand t + :custom + (browse-url-browser-function 'eww-browse-url) + (browse-url-new-window-flag t) + ) + +(use-package casual-calc + :ensure nil + :bind (:map calc-mode-map ("C-o" . casual-calc-tmenu))) + +(use-package casual-dired + :ensure nil + :bind (:map dired-mode-map ("C-o" . casual-dired-tmenu))) + +(use-package casual-info + :ensure nil + :bind (:map Info-mode-map ("C-o" . casual-info-tmenu))) + +'(use-package company + :defer t + :init + (add-hook 'after-init-hook 'global-company-mode)) + +(use-package compilation + :demand t + :requires (ansi-color) + ) + +;; FIXME: Why can't I use it in the (use-package compilation :hook or :init)? +(add-hook 'compilation-filter-hook #'kakafarm/colorize-compilation) + + +(use-package corfu + :defer t + :config + (global-corfu-mode) + :custom + (corfu-auto t)) + +(use-package cus-edit + :config + ;; Use another file for the ``customize'' customisations. + (setq custom-file (locate-user-emacs-file "custom-variables.el")) + (load custom-file 'noerror 'nomessage)) + +(use-package detubifier + :defer t + ) + +(use-package dictionary + :defer t + :custom + (dictionary-server "localhost")) + +(use-package elfeed + :defer t + :config + ;; XXX: Not sure if I want it to be a `kakafarm/elfeed-feeds' + ;; variable that is then set to `elfeed-feeds' in the `:custom' + ;; section, or loaded inside the `elfeed-feeds.el' file using the + ;; `customize-set-value' function. + (load (locate-user-emacs-file "elfeed-feeds.el")) + (customize-set-value 'elfeed-curl-program-name + (expand-file-name "~/.guix-profile/bin/curl")) + :custom + ;; (elfeed-curl-max-connections 10) + (elfeed-search-filter "@1-week-ago +unread") + (elfeed-curl-program-name (expand-file-name "~/.guix-profile/bin/curl")) + ) + +'(use-package elfeed-goodies + :config + (elfeed-goodies/setup)) + +(use-package emacs + :ensure nil + :bind + ( + :map global-map + ("C-c p p" . kakafarm/percent-read) + ("C-c C-s" . (lambda (beg end) + (interactive (list (region-beginning) (region-end))) + + (sort-lines '() + beg + end))) + + ;; (";" . #'kakafarm/easy-underscore) + ) + :config + (set-register ?i `(file . ,(locate-user-emacs-file "init.el"))) + '(ido-mode t) + ;; (tab-bar-mode) + :custom + (inhibit-startup-screen t) + ) + +(use-package ement + :custom + (ement-auto-sync nil) + (ement-save-sessions t) + ) + +(use-package erc + :defer t + :custom + (erc-server "irc.libera.chat") + (erc-nick "kakafarm") + (erc-track-shorten-start 8) + (erc-kill-buffer-on-part t) + (erc-auto-query 'bury) + (erc-autojoin-channels-alist '((libera-kakafarm "#systemcrafters"))) + :bind + (("C-c i r c" . (lambda () + (interactive) + (erc-tls :id 'libera-kakafarm)))) + ;; :config + ;; (erc-tls :id 'libera-kakafarm) + ) + +(use-package ffap + :defer t + :bind + ( + ("C-c f a p" . ffap-menu) + ("C-c f f a p" . kakafarm/ffap-browse-urls) + )) + +(use-package fontset + :defer t + :config + (set-fontset-font t 'hebrew "Noto Sans Hebrew")) + +(use-package geiser + :defer t + :after (scheme-mode) + :config + '((define-key 'geiser-mode-map) + (setq geiser-active-implementations '(guile)) + (global-unset-key "C-c C-a") + (unbind-key "C-c C-e" geiser-mode-map) + (unbind-key "C-c C-a" geiser-mode-map)) + :custom + (geiser-default-implementation 'guile) + (geiser-mode-auto-p nil) + (geiser-repl-per-project-p t) + ) + +(use-package greader + :defer t + :commands (greader-mode) + :config + (add-hook 'greader-mode-hook + 'kakafarm/sentence-end-double-nilify-for-read-only-buffers) + :bind + ( + :map greader-mode-map + ("C-c g b" . (lambda () (interactive) (kakafarm/greader-estimate-reading-time))) + ("C-c g r" . (lambda () (interactive) (kakafarm/greader-estimate-reading-time (point)))) + ) + :hook ( + Custom-mode + Info-mode + Man-mode + elfeed-show + elfeed-show-mode + elpher + eww-after-render + fundamental-mode + help-mode + helpful-mode + lisp-mode + nov-mode + ;; text-mode ;; It fucks up my magit commit message C-c C-c. + w3m-mode + ) + ) + +(use-package helm + :defer t + :bind + ( + :map global-map + ("M-x" . helm-M-x) + ) + ) + +(use-package helpful + :defer t + :bind + ( + ("C-h f" . helpful-function) + ("C-h k" . helpful-key) + ("C-h m" . helpful-mode) + ("C-h v" . helpful-variable) + ) + ) + +(use-package howm + :init + (setq howm-directory "~/mine/howm/") + (setq howm-home-directory howm-directory) + (setq howm-file-name-format "%Y-%m-%d-%H%M%S.org") + (setq howm-view-title-header "*") + (setq howm-dtime-format "<%Y-%m-%d %a %H:%M>") + (setq howm-prefix (kbd "C-c ;")) + :bind* + ("C-c ; ;" . howm-menu) + ) + +(use-package icomplete + :defer t + :config + ;; Display completions continuously in minibuffer. + (icomplete-mode 1)) + +(use-package info + :defer t + :custom + (Info-additional-directory-list '("~/infopath/"))) + +(use-package kakafarm + :demand t + :bind + ( + :map global-map + ("C-c C-w" . kakafarm/multi-vterm-weechat) + ("C-c w" . kakafarm/multi-vterm-weechat) + ) + ) + +(use-package magit + :custom + (magit-diff-refine-hunk t) + (magit-diff-refine-ignore-whitespace nil) + ) + +(use-package magit-todos + :defer t + :after magit + :config + (magit-todos-mode 1) + :custom + (magit-todos-insert-after '(bottom) nil nil "Changed by setter of obsolete option `magit-todos-insert-at'") + ) + +(use-package mastodon + :defer t + :init + ;; (setq mastodon-active-user "kakafarm" + ;; mastodon-instance-url "https://emacs.ch/") + (setq mastodon-active-user "kakafarm" + mastodon-instance-url "https://shitposter.world/") + ) + +(use-package menu-bar + :custom + (menu-bar-mode nil) + ) + +'(use-package mode-line + :custom + (mode-line-percent-position '(6 "%q")) + ) + +(use-package modus-themes + :defer t + :init + (setq modus-themes-mode-line '(borderless + accented + ;; 3d + padded + ;; moody + ) + modus-themes-region '(;;accented + bg-only + ;;no-extend + ) + modus-themes-paren-match '(bold + intense) + ;;modus-themes-syntax '(alt-syntax) + modus-themes-scale-headings t + modus-themes-org-blocks 'tinted-background) + (load-theme 'modus-vivendi) + ;;(load-theme 'wheatgrass) + ) + +(use-package mule + :defer t + :config +;;; https://emacs.stackexchange.com/questions/34322/set-default-coding-system-utf-8 + (set-language-environment "utf-8")) + +(use-package multi-vterm + ;; :demand t + :bind + ( + :map global-map + ("C-c <RET> <RET>" . multi-vterm) + ("C-c m m" . multi-vterm) + :map vterm-mode-map + ("C-q" . vterm-send-next-key) + ) + :commands + ( + multi-vterm + multi-vterm-buffer-exist-p + ) + ) + +'(use-package nano-tts + :defer t + :hook (eww-after-render nov-mode Info-mode) + :custom + (nano-tts-words-per-minute 225) + ) + +(use-package nov + :defer t + :mode ((rx ".epub" string-end) . nov-mode)) + +(use-package fundamental + :mode ((rx ".el" string-end) . fundamental-mode)) + +'(use-package opml-to-elfeed-feeds + :custom + (opml-to-elfeed-feeds-elfeed-feeds nil t) + ) + +(use-package orderless + :defer t + :custom + (completion-styles + '(orderless + basic)) + (completion-category-overrides + '((file (styles + basic + partial-completion))))) + +(use-package org + :defer t + :config + (org-babel-do-load-languages + 'org-babel-load-languages + '( + (emacs-lisp . t) + (scheme . t) + (shell . t) + )) + :custom + (org-agenda-files (list (expand-file-name "~/mine/org/") + (expand-file-name "~/Documents/notes/"))) + (org-default-notes-file (expand-file-name "~/mine/org/org.org")) + (org-directory (expand-file-name "~/mine/org/")) + (org-export-use-babel nil) + (org-html-postamble t) + (org-html-postamble-format '(("en" "<p class=\"author\">Author: %a</p>\12<p class=\"date\">Date: %d</p>\12<p class=\"creator\">%c</p>\12<p class=\"validation\">%v</p>"))) + (org-structure-template-alist '( + ("a" . "export ascii") + ("c" . "center") + ("C" . "comment") + ("e" . "example") + ("E" . "export") + ("h" . "export html") + ("l" . "export latex") + ("q" . "quote") + ("s" . "src") + ("v" . "verse") + ("g" . "src scheme :session moo :results output :tangle eopl3.scm") + ("z" . "src scheme") + )) + ) + +(use-package org-roam + :defer t + :bind (("C-c n l" . org-roam-buffer-toggle) + ("C-c n f" . org-roam-node-find) + ("C-c n i" . org-roam-node-insert)) + :config + ;;(org-roam-db-autosync-enable) + ;;(org-roam-db-autosync-mode) + :custom + (org-roam-directory "~/mine/roam/") + (org-roam-graph-viewer '(lambda (x) nil)) + ) + +(use-package paredit + :defer t + :hook (emacs-lisp-mode + lisp-mode + scheme-mode)) + +(use-package paren + :defer t + :config + (show-paren-mode)) + +;; XXX: Disabled. +'(use-package parinfer + :defer t + :hook (emacs-lisp-mode + lisp-mode + scheme-mode)) + +'(use-package perspective + :init + (persp-mode) + :bind + ("C-c M-b" . persp-list-buffers) + :custom + (persp-mode-prefix-key (kbd "C-c M-p"))) + +(use-package rainbow-delimiters + :defer t + :config + (rainbow-delimiters-mode)) + +(use-package recentf + :defer t + :config + (recentf-mode 1) + :bind (("C-S-t" . recentf-open-files) + ("C-c t" . recentf-open-files) + ("C-c l" . dictionary-lookup-definition)) + :custom + (recentf-max-menu-items 100) + (recentf-max-saved-items 100) + ) + +(use-package scheme-mode + :defer t + :config + ;; TODO: Did it even work?! + (add-hook 'scheme-mode-hook 'hs-minor-mode) + (progn ;; For SRFI-253: + (put 'define-checked 'scheme-indent-function 1) + (put 'lambda-checked 'scheme-indent-function 1)) + :mode (rx "." (| "scm" "sxml" "skb") string-end) + ;; :bind (:map scheme-mode-map + ;; ("C-c C-e" . arei-mode-map) + ;; ("C-c C-a" . arei)) + ) + +(use-package shr + :custom + (shr-width 75) + (shr-use-fonts nil) + (shr-use-colors nil) + (shr-indentation 2) + ) + +(use-package simple + :defer + :init + (advice-add 'kill-ring-save + :before + 'kakafarm/pulse-current-region) + :config + (column-number-mode) + ;; Don't want tabs in any of my source files. + (setq-default indent-tabs-mode + nil) + '(advice-add 'scratch-buffer + :after + (lambda () "Switch to text-mode." + (text-mode))) + :custom + (global-visual-line-mode t) + ) + +(use-package undo-tree + :defer t + :config + (global-undo-tree-mode 1) + (setq undo-tree-auto-save-history nil) + :bind + ("C-x u" . undo-tree-visualize)) + +(use-package vterm + :custom + (vterm-environment '("LC_ALL=en_IL.utf8")) + ) + +'(use-package whitespace-cleanup + :custom + (global-whitespace-cleanup-mode t) + ) + +(use-package window + :defer t + :config + '(advice-add 'recenter-top-bottom + :around + 'kakafarm/recenter-top-bottom)) + +(progn +;;; Emacs From Scratch +;;; https://systemcrafters.net/emacs-from-scratch/ +;;; https://www.youtube.com/playlist?list=PLEoMzSkcN8oPH1au7H6B7bBJ4ZO7BXjSZ + + (setq visible-cursor t + visible-bell t) + +;;; The Basics of Emacs Configuration +;;; https://systemcrafters.net/emacs-from-scratch/basics-of-emacs-configuration/ +;;; https://www.youtube.com/watch?v=OaF-N-FuGtc + + (tool-bar-mode -1) + (scroll-bar-mode -1) + (menu-bar-mode -1) + ;; (global-display-line-numbers-mode 1) + (hl-line-mode 1) + (blink-cursor-mode 1) + +;;; https://systemcrafters.net/emacs-from-scratch/the-best-default-settings/ +;;; https://www.youtube.com/watch?v=51eSeqcaikM + ;;(recentf-mode 1) + (setq history-length 25) + (savehist-mode 1) + (save-place-mode 1)) + +(progn +;;; Load org-roam stuff. + + (defvar kakafarm/org-roam-my-publish-time 0 + ;; TODO: Write docstring. + "TODO" + ) + + (setq org-publish-project-alist + `(("roam" + :base-directory "~/mine/roam/publish/" + :auto-sitemap t + :sitemap-function kakafarm/org-roam-sitemap + :sitemap-title "Roam Notes" + :publishing-function kakafarm/org-roam-publication-wrapper + :publishing-directory "~/mine/roam-export" + :section-number nil + :table-of-contents nil + :include ,(directory-files "~/mine/roam/publish/" t ".*.org$") + :html-head "<link rel=\"stylesheet\" href=\"/index.css\" type=\"text/css\">"))) + + (setq org-roam-graph-link-builder + 'kakafarm/org-roam-custom-link-builder) + + (add-hook 'org-roam-graph-generation-hook + (lambda (dot svg) + (if (< (- (cadr (current-time)) + kakafarm/org-roam-project-publish-time) + 5) + (progn + (copy-file svg + "~/mine/roam-export/sitemap.svg" + 't) + (setq kakafarm/org-roam-project-publish-time + 0)))))) + +(setq gc-cons-threshold (* 200 1024 1024)) +(put 'narrow-to-region 'disabled nil) +(put 'upcase-region 'disabled nil) +(put 'narrow-to-page 'disabled nil) +(put 'scroll-left 'disabled nil) diff --git a/.config/emacs/local-packages/emacs-kakafarm/kakafarm.el b/guix-home-files/.config/emacs/local-packages/emacs-kakafarm/kakafarm.el diff --git a/guix-home-files/.config/i3/config b/guix-home-files/.config/i3/config @@ -0,0 +1,202 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:monospace 14 + +# 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 + +# 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 + +# mine: Set display for one external monitor: +exec --no-startup-id xrandr --output eDP-1 --off --output DP-1 --off --output HDMI-1 --off --output DP-2 --mode 1920x1080 --pos 0x0 --rotate normal --output DP-3 --off --output HDMI-2 --off + +# mine: Set the keybindings for English and Hebrew: +exec --no-startup-id setxkbmap -model pc105 -layout us,il -variant ,, -option grp:win_space_toggle + +# mine: Let me use the mouse without using the mouse: +exec --no-startup-id keynav + +# Use pactl to adjust volume in PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status + +bindsym $mod+F12 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status +bindsym $mod+F11 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status +bindsym $mod+F10 exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym $mod+F9 exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec i3-sensible-terminal + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +bindsym $mod+d exec --no-startup-id env LC_ALL=C dmenu_run +# A more modern dmenu replacement is rofi: +# bindcode $mod+40 exec "rofi -modi drun,run -show drun" +# There also is i3-dmenu-desktop which only displays applications shipping a +# .desktop file. It is a wrapper around dmenu, so you need that installed. +# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +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 +bindsym $mod+Shift+t 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 j resize shrink width 3 px or 3 ppt + bindsym k resize grow height 3 px or 3 ppt + bindsym l resize shrink height 3 px or 3 ppt + bindsym semicolon resize grow width 3 px or 3 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 3 px or 3 ppt + bindsym Down resize grow height 3 px or 3 ppt + bindsym Up resize shrink height 3 px or 3 ppt + bindsym Right resize grow width 3 px or 3 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape 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 { + status_command i3status +} + +# XXX +bindsym $mod+c exec --no-startup-id /home/yuval/.guix-profile/bin/clipboard-speaker --clipboard-type=b +bindsym $mod+x exec --no-startup-id /home/yuval/.guix-profile/bin/clipboard-speaker --clipboard-type=s +bindsym $mod+z exec --no-startup-id /home/yuval/.guix-profile/bin/clipboard-speaker --kill diff --git a/.config/redshift.conf b/guix-home-files/.config/redshift.conf