changelog shortlog graph tags branches files raw help

Mercurial > infra > home / changeset: import

changeset 3: f82cb9ded8cf
parent 2: 2cd49f7c09bb
child 4: 7d168ca20370
author: Richard Westhaver <ellis@rwest.io>
date: Wed, 01 May 2024 19:00:03 -0400
files: .Xresources .config/containers/containers.conf .config/containers/registries.conf .config/containers/storage.conf .config/gitconfig .config/kbd/moonlander/50-zsa.rules .config/kbd/moonlander/config.h .config/kbd/moonlander/keymap.c .config/kbd/moonlander/rules.mk .config/mpd/client.conf .config/mpd/mpd.conf .config/nyxt/init.lisp .config/systemd/emacs.service .emacs.d/ellis.el .hgignore .hgsub ellis.el
description: import
     1.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2+++ b/.Xresources	Wed May 01 19:00:03 2024 -0400
     1.3@@ -0,0 +1,33 @@
     1.4+URxvt.background:	#141c21
     1.5+URxvt.foreground:	#93a1a1
     1.6+*.cursorColor: #afbfbf
     1.7+*.color0: #263640
     1.8+*.color8: #4a697d
     1.9+*.color1: #d12f2c
    1.10+*.color9: #fa3935
    1.11+*.color2: #819400
    1.12+*.color10: #a4bd00
    1.13+*.color3: #b08500
    1.14+*.color11: #d9a400
    1.15+*.color4: #2587cc
    1.16+*.color12: #2ca2f5
    1.17+*.color5: #696ebf
    1.18+*.color13: #8086e8
    1.19+*.color6: #289c93
    1.20+*.color14: #33c5ba
    1.21+*.color7: #bfbaac
    1.22+*.color15: #fdf6e3
    1.23+URxvt.cursorBlink: true
    1.24+!URxvt.font:			xft:IBM 3270:pixelsize=16
    1.25+!URxvt.boldFont:		xft:IBM 3270:bold:pixelsize=16
    1.26+URxvt.scrollBar:	false
    1.27+URxvt.saveLines:	65535
    1.28+URxvtperl-ext-common: keyboard-select,url-select,clipboard,resize-font
    1.29+URxvt.keysym.M-Escape: perl:keyboard-select:activate
    1.30+URxvt.keysym.M-s: perl:keyboard-select:search
    1.31+URxvt.keysym.M-u: perl:url-select:select_next
    1.32+URxvt.keysym.M-c:   perl:clipboard:copy
    1.33+URxvt.keysym.M-v:   perl:clipboard:paste
    1.34+URxvt.keysym.M-C-v: perl:clipboard:paste_escaped
    1.35+URxvt.iso14755: false
    1.36+URxvt.iso14755_52: false
    1.37\ No newline at end of file
     2.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2+++ b/.config/containers/containers.conf	Wed May 01 19:00:03 2024 -0400
     2.3@@ -0,0 +1,17 @@
     2.4+[containers]
     2.5+
     2.6+[engine]
     2.7+compression_format = "zstd"
     2.8+
     2.9+[machine]
    2.10+cpus = 4
    2.11+memory = 8192
    2.12+
    2.13+[network]
    2.14+network_backend = "netavark"
    2.15+
    2.16+[secrets]
    2.17+
    2.18+[configmaps]
    2.19+
    2.20+[farms]
     3.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2+++ b/.config/containers/registries.conf	Wed May 01 19:00:03 2024 -0400
     3.3@@ -0,0 +1,1 @@
     3.4+unqualified-search-registries = ["registry.compiler.company","docker.io","quay.io"]
     4.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2+++ b/.config/containers/storage.conf	Wed May 01 19:00:03 2024 -0400
     4.3@@ -0,0 +1,5 @@
     4.4+[storage]
     4.5+driver = "btrfs"
     4.6+graphroot = "/mnt/y/data/containers/storage"
     4.7+[storage.options]
     4.8+pull_options = {enable_partial_images = "true", use_hard_links = "false", ostree_repos=""}
     4.9\ No newline at end of file
     5.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2+++ b/.config/gitconfig	Wed May 01 19:00:03 2024 -0400
     5.3@@ -0,0 +1,7 @@
     5.4+[user]
     5.5+	name = ellis
     5.6+	email = ellis@rwest.io
     5.7+[init]
     5.8+	defaultBranch = default
     5.9+[commit]
    5.10+	gpgsign = true
    5.11\ No newline at end of file
     6.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2+++ b/.config/kbd/moonlander/50-zsa.rules	Wed May 01 19:00:03 2024 -0400
     6.3@@ -0,0 +1,2 @@
     6.4+# Keymapp / Wally Flashing rules for the Moonlander and Planck EZ
     6.5+SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666", SYMLINK+="stm32_dfu"
     6.6\ No newline at end of file
     7.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2+++ b/.config/kbd/moonlander/config.h	Wed May 01 19:00:03 2024 -0400
     7.3@@ -0,0 +1,13 @@
     7.4+/*
     7.5+  Set any config.h overrides for your specific keymap here.
     7.6+  See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file
     7.7+*/
     7.8+#pragma once
     7.9+#define ORYX_CONFIGURATOR
    7.10+#define USB_SUSPEND_WAKEUP_DELAY 0
    7.11+#define FIRMWARE_VERSION u8"xbJpL/AaEdK"
    7.12+#define RAW_USAGE_PAGE 0xFF60
    7.13+#define RAW_USAGE_ID 0x61
    7.14+#define LAYER_STATE_8BIT
    7.15+#define RGB_MATRIX_STARTUP_SPD 60
    7.16+
     8.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2+++ b/.config/kbd/moonlander/keymap.c	Wed May 01 19:00:03 2024 -0400
     8.3@@ -0,0 +1,98 @@
     8.4+#include QMK_KEYBOARD_H
     8.5+#include "version.h"
     8.6+#include "keymap_french.h"
     8.7+#include "keymap_spanish.h"
     8.8+#include "keymap_hungarian.h"
     8.9+#include "keymap_swedish.h"
    8.10+// #include "keymap_br_abnt2.h"
    8.11+#include "keymap_canadian_multilingual.h"
    8.12+//#include "keymap_german_ch.h"
    8.13+//#include "keymap_jp.h"
    8.14+#include "keymap_korean.h"
    8.15+#include "keymap_bepo.h"
    8.16+#include "keymap_italian.h"
    8.17+#include "keymap_slovenian.h"
    8.18+#include "keymap_lithuanian_azerty.h"
    8.19+#include "keymap_danish.h"
    8.20+#include "keymap_norwegian.h"
    8.21+#include "keymap_portuguese.h"
    8.22+// #include "keymap_contributions.h"
    8.23+#include "keymap_czech.h"
    8.24+#include "keymap_romanian.h"
    8.25+#include "keymap_russian.h"
    8.26+#include "keymap_uk.h"
    8.27+//#include "keymap_estonian.h"
    8.28+//#include "keymap_belgian.h"
    8.29+#include "keymap_us_international.h"
    8.30+//#include "keymap_croatian.h"
    8.31+//#include "keymap_turkish_q.h"
    8.32+//#include "keymap_slovak.h"
    8.33+
    8.34+#define KC_MAC_UNDO LGUI(KC_Z)
    8.35+#define KC_MAC_CUT LGUI(KC_X)
    8.36+#define KC_MAC_COPY LGUI(KC_C)
    8.37+#define KC_MAC_PASTE LGUI(KC_V)
    8.38+#define KC_PC_UNDO LCTL(KC_Z)
    8.39+#define KC_PC_CUT LCTL(KC_X)
    8.40+#define KC_PC_COPY LCTL(KC_C)
    8.41+#define KC_PC_PASTE LCTL(KC_V)
    8.42+#define ES_LESS_MAC KC_GRAVE
    8.43+#define ES_GRTR_MAC LSFT(KC_GRAVE)
    8.44+#define ES_BSLS_MAC ALGR(KC_6)
    8.45+#define NO_PIPE_ALT KC_GRAVE
    8.46+#define NO_BSLS_ALT KC_EQUAL
    8.47+#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc)
    8.48+#define BP_NDSH_MAC ALGR(KC_8)
    8.49+#define SE_SECT_MAC ALGR(KC_6)
    8.50+#define MOON_LED_LEVEL LED_LEVEL
    8.51+
    8.52+enum layers {
    8.53+  MAIN,
    8.54+};
    8.55+
    8.56+enum custom_keycodes {
    8.57+  VRSN = SAFE_RANGE,
    8.58+  HSV_0_245_245,
    8.59+  HSV_74_255_206,
    8.60+  HSV_152_255_255,
    8.61+};
    8.62+
    8.63+
    8.64+
    8.65+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    8.66+  [MAIN] = LAYOUT_moonlander(
    8.67+    // 1			  
    8.68+    KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL,
    8.69+    KC_GRAVE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
    8.70+    // 2
    8.71+    KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1),   
    8.72+    TG(2), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
    8.73+    // 3
    8.74+    KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LALT,
    8.75+    KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE,
    8.76+    // 4
    8.77+    KC_LSFT, KC_Z ,KC_X, KC_C, KC_V, KC_B,  
    8.78+    KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_BSPC,
    8.79+    // 5
    8.80+    KC_UP, KC_DOWN, KC_LBRC, KC_LPRN, KC_SPC, LCTL,
    8.81+    LALT, KC_SPC, KC_RPRN, KC_RBRC, KC_LEFT, KC_RIGHT,
    8.82+    // 6
    8.83+    A(KC_X), C(KC_C), KC_LGUI,
    8.84+    ALT_T(KC_PASTE), RGB_MODE_FORWARD, QK_LOCK
    8.85+  ),
    8.86+  // [MACRO]
    8.87+  // [LISP]
    8.88+  // [CTL]
    8.89+  // [CMD]
    8.90+};
    8.91+
    8.92+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    8.93+    if (record->event.pressed) {
    8.94+        switch (keycode) {
    8.95+        case VRSN:
    8.96+            SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
    8.97+            return false;
    8.98+        }
    8.99+    }
   8.100+    return true;
   8.101+}
     9.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2+++ b/.config/kbd/moonlander/rules.mk	Wed May 01 19:00:03 2024 -0400
     9.3@@ -0,0 +1,9 @@
     9.4+# Set any rules.mk overrides for your specific keymap here.
     9.5+# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
     9.6+CONSOLE_ENABLE = no
     9.7+COMMAND_ENABLE = no
     9.8+ORYX_ENABLE = yes
     9.9+RAW_ENABLE = yes
    9.10+SPACE_CADET_ENABLE = no
    9.11+CAPS_WORD_ENABLE = yes
    9.12+SRC = matrix.c
    10.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2+++ b/.config/mpd/client.conf	Wed May 01 19:00:03 2024 -0400
    10.3@@ -0,0 +1,20 @@
    10.4+pid_file            "/run/mpd/mpd.pid"
    10.5+playlist_directory  "/var/lib/mpd/playlists"
    10.6+
    10.7+# WebDAV setup
    10.8+music_directory     "https://media.compiler.company/music"
    10.9+
   10.10+# NFS setup
   10.11+#music_directory     "nfs://example.com/path/to/your/music/"
   10.12+
   10.13+# Note the proxy here
   10.14+database {
   10.15+    plugin  "proxy"
   10.16+    host    "media.compiler.company"
   10.17+    port    "6600"
   10.18+}
   10.19+
   10.20+audio_output {
   10.21+    type  "pipewire"
   10.22+    name  "pipewire-server"
   10.23+}
   10.24\ No newline at end of file
    11.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2+++ b/.config/mpd/mpd.conf	Wed May 01 19:00:03 2024 -0400
    11.3@@ -0,0 +1,409 @@
    11.4+# Files and directories #######################################################
    11.5+#
    11.6+# This setting controls the top directory which MPD will search to discover the
    11.7+# available audio files and add them to the daemon's online database. This
    11.8+# setting defaults to the XDG directory, otherwise the music directory will be
    11.9+# be disabled and audio files will only be accepted over ipc socket (using
   11.10+# file:// protocol) or streaming files over an accepted protocol.
   11.11+#
   11.12+music_directory		"/mnt/m/music"
   11.13+#
   11.14+# This setting sets the MPD internal playlist directory. The purpose of this
   11.15+# directory is storage for playlists created by MPD. The server will use
   11.16+# playlist files not created by the server but only if they are in the MPD
   11.17+# format. This setting defaults to playlist saving being disabled.
   11.18+#
   11.19+playlist_directory		"/mnt/m/.mpd/playlists"
   11.20+#
   11.21+# This setting sets the location of the MPD database. This file is used to
   11.22+# load the database at server start up and store the database while the
   11.23+# server is not up. This setting defaults to disabled which will allow
   11.24+# MPD to accept files over ipc socket (using file:// protocol) or streaming
   11.25+# files over an accepted protocol.
   11.26+#
   11.27+db_file			"/mnt/m/.mpd/database"
   11.28+
   11.29+# These settings are the locations for the daemon log files for the daemon.
   11.30+#
   11.31+# The special value "syslog" makes MPD use the local syslog daemon. This
   11.32+# setting defaults to logging to syslog.
   11.33+#
   11.34+# If you use systemd, do not configure a log_file.  With systemd, MPD
   11.35+# defaults to the systemd journal, which is fine.
   11.36+#
   11.37+log_file			"/mnt/m/.mpd/log"
   11.38+
   11.39+# This setting sets the location of the file which stores the process ID
   11.40+# for use of mpd --kill and some init scripts. This setting is disabled by
   11.41+# default and the pid file will not be stored.
   11.42+#
   11.43+# If you use systemd, do not configure a pid_file.
   11.44+#
   11.45+#pid_file			"~/.mpd/pid"
   11.46+
   11.47+# This setting sets the location of the file which contains information about
   11.48+# most variables to get MPD back into the same general shape it was in before
   11.49+# it was brought down. This setting is disabled by default and the server
   11.50+# state will be reset on server start up.
   11.51+#
   11.52+state_file			"/mnt/m/.mpd/state"
   11.53+#
   11.54+# The location of the sticker database.  This is a database which
   11.55+# manages dynamic information attached to songs.
   11.56+#
   11.57+sticker_file			"/mnt/m/.mpd/sticker.sql"
   11.58+#
   11.59+###############################################################################
   11.60+
   11.61+
   11.62+# General music daemon options ################################################
   11.63+#
   11.64+# This setting specifies the user that MPD will run as. MPD should never run as
   11.65+# root and you may use this setting to make MPD change its user ID after
   11.66+# initialization. This setting is disabled by default and MPD is run as the
   11.67+# current user.
   11.68+#
   11.69+user				"ellis"
   11.70+#
   11.71+# This setting specifies the group that MPD will run as. If not specified
   11.72+# primary group of user specified with "user" setting will be used (if set).
   11.73+# This is useful if MPD needs to be a member of group such as "audio" to
   11.74+# have permission to use sound card.
   11.75+#
   11.76+group				"ellis"
   11.77+#
   11.78+# This setting sets the address for the daemon to listen on. Careful attention
   11.79+# should be paid if this is assigned to anything other than the default, any.
   11.80+# This setting can deny access to control of the daemon. Not effective if
   11.81+# systemd socket activation is in use.
   11.82+#
   11.83+# For network
   11.84+bind_to_address		"any"
   11.85+#
   11.86+# And for Unix Socket
   11.87+# bind_to_address		"~/.mpd/socket"
   11.88+#
   11.89+# This setting is the TCP port that is desired for the daemon to get assigned
   11.90+# to.
   11.91+#
   11.92+port				"6600"
   11.93+#
   11.94+# Suppress all messages below the given threshold.  Use "verbose" for
   11.95+# troubleshooting. Available setting arguments are "notice", "info", "verbose",
   11.96+# "warning" and "error".
   11.97+#
   11.98+log_level			"info"
   11.99+#
  11.100+# Setting "restore_paused" to "yes" puts MPD into pause mode instead
  11.101+# of starting playback after startup.
  11.102+#
  11.103+restore_paused "yes"
  11.104+#
  11.105+# This setting enables MPD to create playlists in a format usable by other
  11.106+# music players.
  11.107+#
  11.108+save_absolute_paths_in_playlists	"yes"
  11.109+#
  11.110+# This setting defines a list of tag types that will be extracted during the
  11.111+# audio file discovery process. The complete list of possible values can be
  11.112+# found in the user manual.
  11.113+metadata_to_use	"artist,album,title,track,name,genre,date,composer,performer,disc"
  11.114+#
  11.115+# This example just enables the "comment" tag without disabling all
  11.116+# the other supported tags:
  11.117+#metadata_to_use "+comment"
  11.118+#
  11.119+# This setting enables automatic update of MPD's database when files in
  11.120+# music_directory are changed.
  11.121+#
  11.122+auto_update	"yes"
  11.123+#
  11.124+# Limit the depth of the directories being watched, 0 means only watch
  11.125+# the music directory itself.  There is no limit by default.
  11.126+#
  11.127+#auto_update_depth "3"
  11.128+#
  11.129+###############################################################################
  11.130+
  11.131+
  11.132+# Symbolic link behavior ######################################################
  11.133+#
  11.134+# If this setting is set to "yes", MPD will discover audio files by following
  11.135+# symbolic links outside of the configured music_directory.
  11.136+#
  11.137+follow_outside_symlinks	"yes"
  11.138+#
  11.139+# If this setting is set to "yes", MPD will discover audio files by following
  11.140+# symbolic links inside of the configured music_directory.
  11.141+#
  11.142+follow_inside_symlinks		"yes"
  11.143+#
  11.144+###############################################################################
  11.145+
  11.146+
  11.147+# Zeroconf / Avahi Service Discovery ##########################################
  11.148+#
  11.149+# If this setting is set to "yes", service information will be published with
  11.150+# Zeroconf / Avahi.
  11.151+#
  11.152+zeroconf_enabled		"yes"
  11.153+#
  11.154+# The argument to this setting will be the Zeroconf / Avahi unique name for
  11.155+# this MPD server on the network. %h will be replaced with the hostname.
  11.156+#
  11.157+zeroconf_name			"mpd @ %h"
  11.158+#
  11.159+###############################################################################
  11.160+
  11.161+
  11.162+# Permissions #################################################################
  11.163+#
  11.164+# If this setting is set, MPD will require password authorization. The password
  11.165+# setting can be specified multiple times for different password profiles.
  11.166+#
  11.167+#password                        "password@read,add,control,admin"
  11.168+#
  11.169+# This setting specifies the permissions a user has who has not yet logged in.
  11.170+#
  11.171+#default_permissions             "read,add,control,admin"
  11.172+#
  11.173+###############################################################################
  11.174+
  11.175+
  11.176+# Database #######################################################################
  11.177+#
  11.178+# An example of a database section instead of the old 'db_file' setting.
  11.179+# It enables mounting other storages into the music directory.
  11.180+#
  11.181+#database {
  11.182+#       plugin "simple"
  11.183+#       path "~/.local/share/mpd/db"
  11.184+#       cache_directory "~/.local/share/mpd/cache"
  11.185+#}
  11.186+#
  11.187+# An example of database config for a satellite setup
  11.188+#
  11.189+#music_directory "nfs://fileserver.local/srv/mp3"
  11.190+#database {
  11.191+#       plugin "proxy"
  11.192+#       host "other.mpd.host"
  11.193+#       port "6600"
  11.194+#}
  11.195+
  11.196+# Input #######################################################################
  11.197+#
  11.198+input {
  11.199+        plugin "curl"
  11.200+#       proxy "proxy.isp.com:8080"
  11.201+#       proxy_user "user"
  11.202+#       proxy_password "password"
  11.203+}
  11.204+
  11.205+#
  11.206+###############################################################################
  11.207+
  11.208+# Audio Output ################################################################
  11.209+#
  11.210+# MPD supports various audio output types, as well as playing through multiple
  11.211+# audio outputs at the same time, through multiple audio_output settings
  11.212+# blocks. Setting this block is optional, though the server will only attempt
  11.213+# autodetection for one sound card.
  11.214+#
  11.215+# An example of an ALSA output:
  11.216+#
  11.217+audio_output {
  11.218+        type            "pipewire"
  11.219+        name            "pipewire-server"
  11.220+}
  11.221+#
  11.222+# An example of an OSS output:
  11.223+#
  11.224+#audio_output {
  11.225+#	type		"oss"
  11.226+#	name		"My OSS Device"
  11.227+##	device		"/dev/dsp"	# optional
  11.228+##	mixer_type      "hardware"	# optional
  11.229+##	mixer_device	"/dev/mixer"	# optional
  11.230+##	mixer_control	"PCM"		# optional
  11.231+#}
  11.232+#
  11.233+# An example of a shout output (for streaming to Icecast):
  11.234+#
  11.235+#audio_output {
  11.236+#	type		"shout"
  11.237+#	encoder		"vorbis"		# optional
  11.238+#	name		"My Shout Stream"
  11.239+#	host		"localhost"
  11.240+#	port		"8000"
  11.241+#	mount		"/mpd.ogg"
  11.242+#	password	"hackme"
  11.243+#	quality		"5.0"
  11.244+#	bitrate		"128"
  11.245+#	format		"44100:16:1"
  11.246+##	protocol	"icecast2"		# optional
  11.247+##	user		"source"		# optional
  11.248+##	description	"My Stream Description"	# optional
  11.249+##	url		"http://example.com"	# optional
  11.250+##	genre		"jazz"			# optional
  11.251+##	public		"no"			# optional
  11.252+##	timeout		"2"			# optional
  11.253+##	mixer_type      "software"		# optional
  11.254+#}
  11.255+#
  11.256+# An example of a recorder output:
  11.257+#
  11.258+#audio_output {
  11.259+#	type		"recorder"
  11.260+#	name		"My recorder"
  11.261+#	encoder		"vorbis"		# optional, vorbis or lame
  11.262+#	path		"/var/lib/mpd/recorder/mpd.ogg"
  11.263+##	quality		"5.0"			# do not define if bitrate is defined
  11.264+#	bitrate		"128"			# do not define if quality is defined
  11.265+#	format		"44100:16:1"
  11.266+#}
  11.267+#
  11.268+# An example of a httpd output (built-in HTTP streaming server):
  11.269+#
  11.270+# audio_output {
  11.271+# 	type		"httpd"
  11.272+# 	name		"ellis/mpd"
  11.273+# 	encoder		"vorbis"		# optional, vorbis or lame
  11.274+# 	port		"6660"
  11.275+# 	bind_to_address	"0.0.0.0"		# optional, IPv4 or IPv6
  11.276+# 	quality		"5.0"			# do not define if bitrate is defined
  11.277+# #	bitrate		"128"			# do not define if quality is defined
  11.278+# 	format		"44100:16:1"
  11.279+# 	max_clients	"0"			# optional 0=no limit
  11.280+# }
  11.281+#
  11.282+# An example of a pulseaudio output (streaming to a remote pulseaudio server)
  11.283+#
  11.284+#audio_output {
  11.285+#	type		"pulse"
  11.286+#	name		"My Pulse Output"
  11.287+##	server		"remote_server"		# optional
  11.288+##	sink		"remote_server_sink"	# optional
  11.289+##	media_role	"media_role"		#optional
  11.290+#}
  11.291+#
  11.292+# An example of a winmm output (Windows multimedia API).
  11.293+#
  11.294+#audio_output {
  11.295+#	type		"winmm"
  11.296+#	name		"My WinMM output"
  11.297+##	device		"Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
  11.298+#		or
  11.299+##	device		"0"		# optional
  11.300+##	mixer_type	"hardware"	# optional
  11.301+#}
  11.302+#
  11.303+# An example of a wasapi output (Windows multimedia API).
  11.304+#
  11.305+#audio_output {
  11.306+#	type		"wasapi"
  11.307+#	name		"My WASAPI output"
  11.308+##	device		"Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
  11.309+#		or
  11.310+##	device		"0"		# optional
  11.311+## Exclusive mode blocks all other audio source, and get best audio quality without resampling.
  11.312+##	exclusive	"no"		# optional
  11.313+## Enumerate all devices in log.
  11.314+##	enumerate	"no"		# optional
  11.315+#}
  11.316+#
  11.317+# An example of an openal output.
  11.318+#
  11.319+#audio_output {
  11.320+#	type		"openal"
  11.321+#	name		"My OpenAL output"
  11.322+##	device		"Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
  11.323+#}
  11.324+#
  11.325+# An example of an sndio output.
  11.326+#
  11.327+#audio_output {
  11.328+#	type		"sndio"
  11.329+#	name		"sndio output"
  11.330+#	mixer_type	"hardware"
  11.331+#}
  11.332+#
  11.333+# An example of an OS X output:
  11.334+#
  11.335+#audio_output {
  11.336+#	type		"osx"
  11.337+#	name		"My OS X Device"
  11.338+##	device		"Built-in Output"	# optional
  11.339+##	channel_map      "-1,-1,0,1"	# optional
  11.340+#}
  11.341+#
  11.342+## Example "pipe" output:
  11.343+#
  11.344+#audio_output {
  11.345+#	type		"pipe"
  11.346+#	name		"my pipe"
  11.347+#	command		"aplay -f cd 2>/dev/null"
  11.348+## Or if you're want to use AudioCompress
  11.349+#	command		"AudioCompress -m | aplay -f cd 2>/dev/null"
  11.350+## Or to send raw PCM stream through PCM:
  11.351+#	command		"nc example.org 8765"
  11.352+#	format		"44100:16:2"
  11.353+#}
  11.354+#
  11.355+## An example of a null output (for no audio output):
  11.356+#
  11.357+#audio_output {
  11.358+#	type		"null"
  11.359+#	name		"My Null Output"
  11.360+#	mixer_type      "none"			# optional
  11.361+#}
  11.362+#
  11.363+###############################################################################
  11.364+
  11.365+
  11.366+# Normalization automatic volume adjustments ##################################
  11.367+#
  11.368+# This setting specifies the type of ReplayGain to use. This setting can have
  11.369+# the argument "off", "album", "track" or "auto". "auto" is a special mode that
  11.370+# chooses between "track" and "album" depending on the current state of
  11.371+# random playback. If random playback is enabled then "track" mode is used.
  11.372+# See <https://wiki.hydrogenaud.io/index.php?title=Replaygain> for
  11.373+# more details about ReplayGain.
  11.374+# This setting is off by default.
  11.375+#
  11.376+replaygain			"auto"
  11.377+#
  11.378+# This setting sets the pre-amp used for files that have ReplayGain tags. By
  11.379+# default this setting is disabled.
  11.380+#
  11.381+#replaygain_preamp		"0"
  11.382+#
  11.383+# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
  11.384+# By default this setting is disabled.
  11.385+#
  11.386+#replaygain_missing_preamp	"0"
  11.387+#
  11.388+# This setting enables or disables ReplayGain limiting.
  11.389+# MPD calculates actual amplification based on the ReplayGain tags
  11.390+# and replaygain_preamp / replaygain_missing_preamp setting.
  11.391+# If replaygain_limit is enabled MPD will never amplify audio signal
  11.392+# above its original level. If replaygain_limit is disabled such amplification
  11.393+# might occur. By default this setting is enabled.
  11.394+#
  11.395+replaygain_limit		"yes"
  11.396+#
  11.397+# This setting enables on-the-fly normalization volume adjustment. This will
  11.398+# result in the volume of all playing audio to be adjusted so the output has
  11.399+# equal "loudness". This setting is disabled by default.
  11.400+#
  11.401+#volume_normalization		"no"
  11.402+#
  11.403+###############################################################################
  11.404+
  11.405+# Character Encoding ##########################################################
  11.406+#
  11.407+# If file or directory names do not display correctly for your locale then you
  11.408+# may need to modify this setting.
  11.409+#
  11.410+filesystem_charset		"UTF-8"
  11.411+#
  11.412+###############################################################################
  11.413\ No newline at end of file
    12.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2+++ b/.config/nyxt/init.lisp	Wed May 01 19:00:03 2024 -0400
    12.3@@ -0,0 +1,73 @@
    12.4+(require :swank)
    12.5+(in-package :nyxt-user) ;; let slime know which package we're in
    12.6+
    12.7+;; by default, JS is not enabled.
    12.8+(define-configuration web-buffer
    12.9+  ((default-modes
   12.10+    (pushnew 'nyxt/mode/no-script:no-script-mode %slot-value%))))
   12.11+
   12.12+(define-configuration buffer
   12.13+  ((default-modes
   12.14+    (pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))))
   12.15+
   12.16+(define-configuration input-buffer
   12.17+  ((override-map
   12.18+    (let ((map (make-keymap "override-map")))
   12.19+      (define-key map "M-x" 'execute-command)))))
   12.20+
   12.21+(defun eval-in-emacs (&rest s-exps)
   12.22+  "Evaluate S-exps with `emacsclient'."
   12.23+  (let ((s-exps-string (cl-ppcre:regex-replace-all
   12.24+                        ;; Discard the package prefix.
   12.25+                        "next-user::?"
   12.26+                        (write-to-string
   12.27+                         `(progn ,@s-exps) :case :downcase)
   12.28+                        "")))
   12.29+    (log:debug "Sending to Emacs: ~s" s-exps-string)
   12.30+    (ignore-errors (uiop:run-program
   12.31+                    (list "emacsclient" "--eval" s-exps-string)))))
   12.32+
   12.33+(defvar *kz-keymap* (make-keymap "kz-map")
   12.34+  "Keymap for `kz-mode'.")
   12.35+
   12.36+(define-command org-capture (&optional (buffer (current-buffer)))
   12.37+  "Org-capture current page."
   12.38+  (eval-in-emacs
   12.39+   `(org-link-set-parameters
   12.40+     "next"
   12.41+     :store (lambda ()
   12.42+              (org-store-link-props
   12.43+               :type "next"
   12.44+               :link ,(url buffer)
   12.45+               :description ,(title buffer))))
   12.46+   `(org-capture)))
   12.47+(define-key *kz-keymap* "C-M-o" 'org-capture)
   12.48+
   12.49+(define-command play-video-in-current-page (&optional (buffer (current-buffer)))
   12.50+  "Play video in the currently open buffer."
   12.51+  (uiop:run-program (list "mpv" (url buffer))))
   12.52+(define-key *kz-keymap* "C-M-c v" 'play-video-in-current-page)
   12.53+
   12.54+(define-mode kz-mode ()
   12.55+  "Dummy mode for the custom key bindings in `*kz-keymap*'."
   12.56+  ((keymap-scheme (keymap:make-scheme
   12.57+                   scheme:emacs *kz-keymap*
   12.58+                   scheme:vi-normal *kz-keymap*))))
   12.59+
   12.60+(defvar youtube-dl-command "youtube-dl"
   12.61+  "Path to the 'youtube-dl' program.")
   12.62+
   12.63+(define-configuration browser
   12.64+  ((session-restore-prompt :always-restore)))
   12.65+
   12.66+(setf nyxt/vcs:*vcs-projects-roots* '("~/dev"
   12.67+                                      "~/lisp"
   12.68+                                      "~/stash"))
   12.69+
   12.70+(define-command start-swank (&optional (swank-port 4006))
   12.71+  (swank:create-server :port swank-port :dont-close t)
   12.72+  (echo "Swank server started at port ~a" swank-port))
   12.73+
   12.74+;; Start swank by default.
   12.75+(unless nyxt::*keep-alive*
   12.76+  (start-swank))
    13.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2+++ b/.config/systemd/emacs.service	Wed May 01 19:00:03 2024 -0400
    13.3@@ -0,0 +1,20 @@
    13.4+# very important to run systemd-user-env.sh before this
    13.5+[Unit]
    13.6+Description=Emacs text editor
    13.7+Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/
    13.8+
    13.9+[Service]
   13.10+Type=notify
   13.11+ExecStart=emacs --fg-daemon
   13.12+
   13.13+# Emacs will exit with status 15 after having received SIGTERM, which
   13.14+# is the default "KillSignal" value systemd uses to stop services.
   13.15+SuccessExitStatus=15
   13.16+
   13.17+# The location of the SSH auth socket varies by distribution, and some
   13.18+# set it from PAM, so don't override by default.
   13.19+# Environment=SSH_AUTH_SOCK=%t/keyring/ssh
   13.20+Restart=on-failure
   13.21+
   13.22+[Install]
   13.23+WantedBy=default.target
    14.1--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2+++ b/.emacs.d/ellis.el	Wed May 01 19:00:03 2024 -0400
    14.3@@ -0,0 +1,286 @@
    14.4+;;; ellis.el --- Richard's custom-file -*- lexical-binding: t; -*-
    14.5+
    14.6+;; Copyright (C) 2023  
    14.7+
    14.8+;; Author: Richard Westhaver <ellis@rwest.io>
    14.9+
   14.10+;; This program is free software; you can redistribute it and/or modify
   14.11+;; it under the terms of the GNU General Public License as published by
   14.12+;; the Free Software Foundation, either version 3 of the License, or
   14.13+;; (at your option) any later version.
   14.14+
   14.15+;; This program is distributed in the hope that it will be useful,
   14.16+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
   14.17+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14.18+;; GNU General Public License for more details.
   14.19+
   14.20+;; You should have received a copy of the GNU General Public License
   14.21+;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
   14.22+
   14.23+;;; Commentary:
   14.24+
   14.25+;; This is an example of what you may want to add to your custom
   14.26+;; config file. Feel free to rip.
   14.27+
   14.28+;;; Code:
   14.29+(require 'inbox)
   14.30+(require 'sk)
   14.31+(require 'slime-cape)
   14.32+(require 'sxp)
   14.33+(require 'ulang)
   14.34+
   14.35+(defalias 'make #'compile)
   14.36+
   14.37+(setopt default-theme 'modus-vivendi-tritanopia
   14.38+        user-lab-directory (join-paths user-home-directory "dev")
   14.39+        company-source-directory (join-paths user-lab-directory "comp"))
   14.40+
   14.41+(unless (display-graphic-p) (setq default-theme 'wheatgrass))
   14.42+
   14.43+(when (linux-p) (setq dired-listing-switches "-alsh"))
   14.44+
   14.45+(defvar emacs-config-source (join-paths company-source-directory "core/emacs"))
   14.46+
   14.47+;;;###autoload
   14.48+(defun edit-emacs-config (&optional src)
   14.49+  (interactive (list current-prefix-arg))
   14.50+  (let ((file (if src 
   14.51+                  (expand-file-name "default.el" emacs-config-source) 
   14.52+                user-custom-file)))
   14.53+    (find-file file)))
   14.54+
   14.55+(keymap-set user-map "e c" #'edit-emacs-config)
   14.56+(keymap-set emacs-lisp-mode-map "C-c C-l" #'load-file)
   14.57+(keymap-set emacs-lisp-mode-map "C-c M-k" #'elisp-byte-compile-file)
   14.58+
   14.59+;; (add-hook 'common-lisp-mode-hook #'enable-paredit-mode)
   14.60+;; (add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode)
   14.61+
   14.62+(repeat-mode)
   14.63+
   14.64+(defun remember-project ()
   14.65+  (interactive)
   14.66+  (project-remember-project (project-current))
   14.67+  project--list)
   14.68+
   14.69+(defun remember-lab-projects ()
   14.70+  (interactive)
   14.71+  (project-remember-projects-under user-lab-directory t))
   14.72+
   14.73+(keymap-global-set "C-<tab>" #'hippie-expand)
   14.74+(keymap-set minibuffer-local-map "C-<tab>" #'hippie-expand)
   14.75+(keymap-set ctl-x-x-map "p p" #'remember-project)
   14.76+(keymap-set ctl-x-x-map "p l" #'remember-lab-projects)
   14.77+
   14.78+(add-hook 'prog-mode-hook #'skt-mode)
   14.79+(add-hook 'org-mode-hook #'skt-mode)
   14.80+(add-hook 'prog-mode-hook #'company-mode)
   14.81+
   14.82+(add-hook 'notmuch-message-mode-hook #'turn-on-orgtbl)
   14.83+
   14.84+(setopt skt-enable-tempo-elements t
   14.85+        skt-completing-read t
   14.86+        skt-delete-duplicate-marks t)
   14.87+
   14.88+(keymap-set skt-mode-map "C-c M-b" #'tempo-backward-mark)
   14.89+(keymap-set skt-mode-map "C-c M-f" #'tempo-forward-mark)
   14.90+(keymap-set skt-mode-map "C-c M-a" #'tempo-complete-tag)
   14.91+
   14.92+(use-package markdown-mode :ensure t)
   14.93+
   14.94+(use-package ol-notmuch :ensure t)
   14.95+
   14.96+(use-package notmuch 
   14.97+  :ensure t
   14.98+  :init
   14.99+  (setopt
  14.100+   mail-user-agent 'message-user-agent
  14.101+   smtpmail-smtp-server "smtp.gmail.com"
  14.102+   message-send-mail-function 'message-smtpmail-send-it
  14.103+   smtpmail-debug-info t
  14.104+   message-default-mail-headers "Cc: \nBcc: \n"
  14.105+   message-kill-buffer-on-exit t
  14.106+   user-mail-address "ellis@rwest.io"
  14.107+   user-full-name "Richard Westhaver"
  14.108+   notmuch-hello-sections '(notmuch-hello-insert-saved-searches 
  14.109+                            notmuch-hello-insert-search 
  14.110+                            notmuch-hello-insert-recent-searches 
  14.111+                            notmuch-hello-insert-alltags)
  14.112+   notmuch-show-logo nil
  14.113+   notmuch-search-oldest-first nil
  14.114+   notmuch-hello-hide-tags '("kill")
  14.115+   notmuch-saved-searches '((:name "inbox" :query "tag:inbox" :key "i")
  14.116+                            (:name "unread" :query "tag:unread" :key "u")
  14.117+                            (:name "new" :query "tag:new" :key "n")
  14.118+                            (:name "sent" :query "tag:sent" :key "e")
  14.119+                            (:name "drafts" :query "tag:draft" :key "d")
  14.120+                            (:name "all mail" :query "*" :key "a")
  14.121+                            (:name "todo" :query "tag:todo" :key "t")))
  14.122+  :config
  14.123+  ;;;###autoload
  14.124+  (defun notmuch-exec-offlineimap ()
  14.125+    "execute offlineimap command and tag new mail with notmuch"
  14.126+    (interactive)
  14.127+    (start-process-shell-command "offlineimap"
  14.128+                                 "*offlineimap*"
  14.129+                                 "offlineimap -o")
  14.130+    (notmuch-refresh-all-buffers))
  14.131+
  14.132+  (defun offlineimap-get-password (host port)
  14.133+    (let* ((netrc (netrc-parse (expand-file-name "~/.netrc.gpg")))
  14.134+           (hostentry (netrc-machine netrc host port port)))
  14.135+      (when hostentry (netrc-get hostentry "password"))))
  14.136+
  14.137+  (defun mark-as-read ()
  14.138+    "mark message as read."
  14.139+    (interactive)
  14.140+    (notmuch-search-tag '("-new" "-unread" "-inbox")))
  14.141+
  14.142+  (defun mark-as-todo ()
  14.143+    "mark message as todo."
  14.144+    (interactive)
  14.145+    (mark-as-read)
  14.146+    (notmuch-search-tag '("-new" "-unread" "-inbox" "+todo")))
  14.147+
  14.148+  (defun mark-as-spam ()
  14.149+    "mark message as spam."
  14.150+    (interactive)
  14.151+    (mark-as-read)
  14.152+    (notmuch-search-tag (list "+spam")))
  14.153+
  14.154+  (keymap-set user-map "e m" #'notmuch)
  14.155+  (keymap-set user-map "e M" #'notmuch-exec-offlineimap)
  14.156+  (keymap-set notmuch-search-mode-map "S" #'mark-as-spam)
  14.157+  (keymap-set notmuch-search-mode-map "R" #'mark-as-read)
  14.158+  (keymap-set notmuch-search-mode-map "T" #'mark-as-todo))
  14.159+
  14.160+(use-package elfeed 
  14.161+  :ensure t
  14.162+  :custom
  14.163+  elfeed-feeds 
  14.164+  '(("http://threesixty360.wordpress.com/feed/" blog math)
  14.165+    ("http://www.50ply.com/atom.xml" blog dev)
  14.166+    ("http://blog.cryptographyengineering.com/feeds/posts/default" blog)
  14.167+    ("http://abstrusegoose.com/feed.xml" comic)
  14.168+    ("http://accidental-art.tumblr.com/rss" image math)
  14.169+    ("http://researchcenter.paloaltonetworks.com/unit42/feed/" security)
  14.170+    ("http://curiousprogrammer.wordpress.com/feed/" blog dev)
  14.171+    ("http://feeds.feedburner.com/amazingsuperpowers" comic)
  14.172+    ("http://amitp.blogspot.com/feeds/posts/default" blog dev)
  14.173+    ("http://pages.cs.wisc.edu/~psilord/blog/rssfeed.rss" blog)
  14.174+    ("http://www.anticscomic.com/?feed=rss2" comic)
  14.175+    ("http://feeds.feedburner.com/blogspot/TPQSS" blog dev)
  14.176+    ("http://techchrunch.com/feeds" tech news)
  14.177+    ("https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml" tech news)
  14.178+    ("https://static.fsf.org/fsforg/rss/news.xml" tech news)
  14.179+    ("https://feeds.npr.org/1001/rss.xml" news)
  14.180+    ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=10000664" fin news)
  14.181+    ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=19854910" tech news)
  14.182+    ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=100003114" us news)
  14.183+    ("http://arxiv.org/rss/cs" cs rnd)
  14.184+    ("http://arxiv.org/rss/math" math rnd)
  14.185+    ("http://arxiv.org/rss/q-fin" q-fin rnd)
  14.186+    ("http://arxiv.org/rss/stat" stat rnd)
  14.187+    ("http://arxiv.org/rss/econ" econ rnd)
  14.188+    ;; John Wiegley
  14.189+    ("http://newartisans.com/rss.xml" dev blog)
  14.190+    ;; comp
  14.191+    ;; ("https://lab.rwest.io/comp.atom?feed_token=pHu9qwLkjy4CWJHx9rrJ" comp vc)
  14.192+    ("https://www.reddit.com/r/listentothis/.rss" music reddit)
  14.193+    ("https://www.ftc.gov/feeds/press-release-consumer-protection.xml" gov ftc)
  14.194+    ("https://api2.fcc.gov/edocs/public/api/v1/rss/" gov fcc)
  14.195+    )
  14.196+  :init
  14.197+  (defun yt-dl-it (url)
  14.198+    "Downloads the URL in an async shell"
  14.199+    (let ((default-directory "~/media/yt"))
  14.200+      (async-shell-command (format "youtube-dl %s" url))))
  14.201+
  14.202+  (defun elfeed-youtube-dl (&optional use-generic-p)
  14.203+    "Youtube-DL link"
  14.204+    (interactive "P")
  14.205+    (let ((entries (elfeed-search-selected)))
  14.206+      (cl-loop for entry in entries
  14.207+               do (elfeed-untag entry 'unread)
  14.208+               when (elfeed-entry-link entry)
  14.209+               do (yt-dl-it it))
  14.210+      (mapc #'elfeed-search-update-entry entries)
  14.211+      (unless (use-region-p) (forward-line))))
  14.212+  :config
  14.213+  (keymap-set elfeed-search-mode-map "d" 'elfeed-youtube-dl)
  14.214+  (keymap-set user-map "e f" #'elfeed)
  14.215+  (keymap-set user-map "e F" #'elfeed-update))
  14.216+
  14.217+(use-package org-mime :ensure t)
  14.218+
  14.219+(use-package sh-script
  14.220+  :hook (sh-mode . flymake-mode))
  14.221+
  14.222+(use-package tempo
  14.223+  :custom
  14.224+  tempo-interactive t
  14.225+  :config
  14.226+  (tempo-define-template 
  14.227+   "org:readme"
  14.228+   '("#+TITLE: " p n>
  14.229+     "#+AUTHOR: " user-full-name " <" user-mail-address ">" n>)
  14.230+   "org:readme"
  14.231+   "Insert a readme.org file template.")
  14.232+  (tempo-define-template "org:src"
  14.233+                         '("#+begin_src " p n>
  14.234+                           "#+end_src" n>)
  14.235+                         "org:src"))
  14.236+;;; Org Config
  14.237+(keymap-set user-map "t" #'org-todo)
  14.238+
  14.239+;; populate org-babel
  14.240+(org-babel-do-load-languages
  14.241+ ;; TODO 2021-10-24: bqn, apl, k
  14.242+ 'org-babel-load-languages '((shell . t)
  14.243+			     (emacs-lisp . t)
  14.244+			     (lisp . t)
  14.245+			     (org . t)
  14.246+			     (eshell . t)
  14.247+			     (sed . t)
  14.248+			     (awk . t)
  14.249+			     (dot . t)
  14.250+			     (js . t)
  14.251+			     (C . t)
  14.252+			     (python . t)
  14.253+			     (lua . t)
  14.254+			     (lilypond . t)))
  14.255+;;; IRC
  14.256+(setq erc-format-nick-function 'erc-format-@nick)
  14.257+
  14.258+(defun start-erc ()
  14.259+  "Connect to IRC."
  14.260+  (interactive)
  14.261+  (erc-tls :server "irc.libera.chat" :port 6697
  14.262+           :client-certificate '("/mnt/y/data/private/krypt/libera.pem"))
  14.263+  (setq erc-autojoin-channels-alist '(("irc.libera.chat" "#emacs")
  14.264+                                      ("irc.libera.chat" "#linux")
  14.265+                                      ("irc.libera.chat" "#rust")
  14.266+                                      ("irc.libera.chat" "#btrfs")
  14.267+                                      ("irc.libera.chat" "#lisp")
  14.268+                                      ("irc.libera.chat" "#sbcl")
  14.269+                                      ("irc.oftc.net" "#llvm"))))
  14.270+;;; Tags
  14.271+;;;###autoload
  14.272+(defun refresh-tags ()
  14.273+  "Refresh TAGS database in `user-emacs-directory'."
  14.274+  (interactive)
  14.275+  (let ((default-directory user-emacs-directory))
  14.276+    (async-shell-command 
  14.277+     "etags ./*.el \\
  14.278+./lib/*.el \\
  14.279+~/dev/comp/org/*.el \\
  14.280+~/dev/comp/core/emacs/*.el \\
  14.281+~/dev/comp/core/emacs/lib/*.el \\
  14.282+-o TAGS")))
  14.283+
  14.284+(unless (string-equal "hyde"  system-name)
  14.285+  (add-hook 'dired-mode-hook #'all-the-icons-dired-mode)
  14.286+  (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode))
  14.287+
  14.288+(provide 'ellis)
  14.289+;;; ellis.el ends here
    17.1--- a/ellis.el	Wed May 01 18:04:18 2024 -0400
    17.2+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3@@ -1,286 +0,0 @@
    17.4-;;; ellis.el --- Richard's custom-file -*- lexical-binding: t; -*-
    17.5-
    17.6-;; Copyright (C) 2023  
    17.7-
    17.8-;; Author: Richard Westhaver <ellis@rwest.io>
    17.9-
   17.10-;; This program is free software; you can redistribute it and/or modify
   17.11-;; it under the terms of the GNU General Public License as published by
   17.12-;; the Free Software Foundation, either version 3 of the License, or
   17.13-;; (at your option) any later version.
   17.14-
   17.15-;; This program is distributed in the hope that it will be useful,
   17.16-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
   17.17-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   17.18-;; GNU General Public License for more details.
   17.19-
   17.20-;; You should have received a copy of the GNU General Public License
   17.21-;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
   17.22-
   17.23-;;; Commentary:
   17.24-
   17.25-;; This is an example of what you may want to add to your custom
   17.26-;; config file. Feel free to rip.
   17.27-
   17.28-;;; Code:
   17.29-(require 'inbox)
   17.30-(require 'sk)
   17.31-(require 'slime-cape)
   17.32-(require 'sxp)
   17.33-(require 'ulang)
   17.34-
   17.35-(defalias 'make #'compile)
   17.36-
   17.37-(setopt default-theme 'modus-vivendi-tritanopia
   17.38-        user-lab-directory (join-paths user-home-directory "dev")
   17.39-        company-source-directory (join-paths user-lab-directory "comp"))
   17.40-
   17.41-(unless (display-graphic-p) (setq default-theme 'wheatgrass))
   17.42-
   17.43-(when (linux-p) (setq dired-listing-switches "-alsh"))
   17.44-
   17.45-(defvar emacs-config-source (join-paths company-source-directory "core/emacs"))
   17.46-
   17.47-;;;###autoload
   17.48-(defun edit-emacs-config (&optional src)
   17.49-  (interactive (list current-prefix-arg))
   17.50-  (let ((file (if src 
   17.51-                  (expand-file-name "default.el" emacs-config-source) 
   17.52-                user-custom-file)))
   17.53-    (find-file file)))
   17.54-
   17.55-(keymap-set user-map "e c" #'edit-emacs-config)
   17.56-(keymap-set emacs-lisp-mode-map "C-c C-l" #'load-file)
   17.57-(keymap-set emacs-lisp-mode-map "C-c M-k" #'elisp-byte-compile-file)
   17.58-
   17.59-;; (add-hook 'common-lisp-mode-hook #'enable-paredit-mode)
   17.60-;; (add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode)
   17.61-
   17.62-(repeat-mode)
   17.63-
   17.64-(defun remember-project ()
   17.65-  (interactive)
   17.66-  (project-remember-project (project-current))
   17.67-  project--list)
   17.68-
   17.69-(defun remember-lab-projects ()
   17.70-  (interactive)
   17.71-  (project-remember-projects-under user-lab-directory t))
   17.72-
   17.73-(keymap-global-set "C-<tab>" #'hippie-expand)
   17.74-(keymap-set minibuffer-local-map "C-<tab>" #'hippie-expand)
   17.75-(keymap-set ctl-x-x-map "p p" #'remember-project)
   17.76-(keymap-set ctl-x-x-map "p l" #'remember-lab-projects)
   17.77-
   17.78-(add-hook 'prog-mode-hook #'skt-mode)
   17.79-(add-hook 'org-mode-hook #'skt-mode)
   17.80-(add-hook 'prog-mode-hook #'company-mode)
   17.81-
   17.82-(add-hook 'notmuch-message-mode-hook #'turn-on-orgtbl)
   17.83-
   17.84-(setopt skt-enable-tempo-elements t
   17.85-        skt-completing-read t
   17.86-        skt-delete-duplicate-marks t)
   17.87-
   17.88-(keymap-set skt-mode-map "C-c M-b" #'tempo-backward-mark)
   17.89-(keymap-set skt-mode-map "C-c M-f" #'tempo-forward-mark)
   17.90-(keymap-set skt-mode-map "C-c M-a" #'tempo-complete-tag)
   17.91-
   17.92-(use-package markdown-mode :ensure t)
   17.93-
   17.94-(use-package ol-notmuch :ensure t)
   17.95-
   17.96-(use-package notmuch 
   17.97-  :ensure t
   17.98-  :init
   17.99-  (setopt
  17.100-   mail-user-agent 'message-user-agent
  17.101-   smtpmail-smtp-server "smtp.gmail.com"
  17.102-   message-send-mail-function 'message-smtpmail-send-it
  17.103-   smtpmail-debug-info t
  17.104-   message-default-mail-headers "Cc: \nBcc: \n"
  17.105-   message-kill-buffer-on-exit t
  17.106-   user-mail-address "ellis@rwest.io"
  17.107-   user-full-name "Richard Westhaver"
  17.108-   notmuch-hello-sections '(notmuch-hello-insert-saved-searches 
  17.109-                            notmuch-hello-insert-search 
  17.110-                            notmuch-hello-insert-recent-searches 
  17.111-                            notmuch-hello-insert-alltags)
  17.112-   notmuch-show-logo nil
  17.113-   notmuch-search-oldest-first nil
  17.114-   notmuch-hello-hide-tags '("kill")
  17.115-   notmuch-saved-searches '((:name "inbox" :query "tag:inbox" :key "i")
  17.116-                            (:name "unread" :query "tag:unread" :key "u")
  17.117-                            (:name "new" :query "tag:new" :key "n")
  17.118-                            (:name "sent" :query "tag:sent" :key "e")
  17.119-                            (:name "drafts" :query "tag:draft" :key "d")
  17.120-                            (:name "all mail" :query "*" :key "a")
  17.121-                            (:name "todo" :query "tag:todo" :key "t")))
  17.122-  :config
  17.123-  ;;;###autoload
  17.124-  (defun notmuch-exec-offlineimap ()
  17.125-    "execute offlineimap command and tag new mail with notmuch"
  17.126-    (interactive)
  17.127-    (start-process-shell-command "offlineimap"
  17.128-                                 "*offlineimap*"
  17.129-                                 "offlineimap -o")
  17.130-    (notmuch-refresh-all-buffers))
  17.131-
  17.132-  (defun offlineimap-get-password (host port)
  17.133-    (let* ((netrc (netrc-parse (expand-file-name "~/.netrc.gpg")))
  17.134-           (hostentry (netrc-machine netrc host port port)))
  17.135-      (when hostentry (netrc-get hostentry "password"))))
  17.136-
  17.137-  (defun mark-as-read ()
  17.138-    "mark message as read."
  17.139-    (interactive)
  17.140-    (notmuch-search-tag '("-new" "-unread" "-inbox")))
  17.141-
  17.142-  (defun mark-as-todo ()
  17.143-    "mark message as todo."
  17.144-    (interactive)
  17.145-    (mark-as-read)
  17.146-    (notmuch-search-tag '("-new" "-unread" "-inbox" "+todo")))
  17.147-
  17.148-  (defun mark-as-spam ()
  17.149-    "mark message as spam."
  17.150-    (interactive)
  17.151-    (mark-as-read)
  17.152-    (notmuch-search-tag (list "+spam")))
  17.153-
  17.154-  (keymap-set user-map "e m" #'notmuch)
  17.155-  (keymap-set user-map "e M" #'notmuch-exec-offlineimap)
  17.156-  (keymap-set notmuch-search-mode-map "S" #'mark-as-spam)
  17.157-  (keymap-set notmuch-search-mode-map "R" #'mark-as-read)
  17.158-  (keymap-set notmuch-search-mode-map "T" #'mark-as-todo))
  17.159-
  17.160-(use-package elfeed 
  17.161-  :ensure t
  17.162-  :custom
  17.163-  elfeed-feeds 
  17.164-  '(("http://threesixty360.wordpress.com/feed/" blog math)
  17.165-    ("http://www.50ply.com/atom.xml" blog dev)
  17.166-    ("http://blog.cryptographyengineering.com/feeds/posts/default" blog)
  17.167-    ("http://abstrusegoose.com/feed.xml" comic)
  17.168-    ("http://accidental-art.tumblr.com/rss" image math)
  17.169-    ("http://researchcenter.paloaltonetworks.com/unit42/feed/" security)
  17.170-    ("http://curiousprogrammer.wordpress.com/feed/" blog dev)
  17.171-    ("http://feeds.feedburner.com/amazingsuperpowers" comic)
  17.172-    ("http://amitp.blogspot.com/feeds/posts/default" blog dev)
  17.173-    ("http://pages.cs.wisc.edu/~psilord/blog/rssfeed.rss" blog)
  17.174-    ("http://www.anticscomic.com/?feed=rss2" comic)
  17.175-    ("http://feeds.feedburner.com/blogspot/TPQSS" blog dev)
  17.176-    ("http://techchrunch.com/feeds" tech news)
  17.177-    ("https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml" tech news)
  17.178-    ("https://static.fsf.org/fsforg/rss/news.xml" tech news)
  17.179-    ("https://feeds.npr.org/1001/rss.xml" news)
  17.180-    ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=10000664" fin news)
  17.181-    ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=19854910" tech news)
  17.182-    ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=100003114" us news)
  17.183-    ("http://arxiv.org/rss/cs" cs rnd)
  17.184-    ("http://arxiv.org/rss/math" math rnd)
  17.185-    ("http://arxiv.org/rss/q-fin" q-fin rnd)
  17.186-    ("http://arxiv.org/rss/stat" stat rnd)
  17.187-    ("http://arxiv.org/rss/econ" econ rnd)
  17.188-    ;; John Wiegley
  17.189-    ("http://newartisans.com/rss.xml" dev blog)
  17.190-    ;; comp
  17.191-    ;; ("https://lab.rwest.io/comp.atom?feed_token=pHu9qwLkjy4CWJHx9rrJ" comp vc)
  17.192-    ("https://www.reddit.com/r/listentothis/.rss" music reddit)
  17.193-    ("https://www.ftc.gov/feeds/press-release-consumer-protection.xml" gov ftc)
  17.194-    ("https://api2.fcc.gov/edocs/public/api/v1/rss/" gov fcc)
  17.195-    )
  17.196-  :init
  17.197-  (defun yt-dl-it (url)
  17.198-    "Downloads the URL in an async shell"
  17.199-    (let ((default-directory "~/media/yt"))
  17.200-      (async-shell-command (format "youtube-dl %s" url))))
  17.201-
  17.202-  (defun elfeed-youtube-dl (&optional use-generic-p)
  17.203-    "Youtube-DL link"
  17.204-    (interactive "P")
  17.205-    (let ((entries (elfeed-search-selected)))
  17.206-      (cl-loop for entry in entries
  17.207-               do (elfeed-untag entry 'unread)
  17.208-               when (elfeed-entry-link entry)
  17.209-               do (yt-dl-it it))
  17.210-      (mapc #'elfeed-search-update-entry entries)
  17.211-      (unless (use-region-p) (forward-line))))
  17.212-  :config
  17.213-  (keymap-set elfeed-search-mode-map "d" 'elfeed-youtube-dl)
  17.214-  (keymap-set user-map "e f" #'elfeed)
  17.215-  (keymap-set user-map "e F" #'elfeed-update))
  17.216-
  17.217-(use-package org-mime :ensure t)
  17.218-
  17.219-(use-package sh-script
  17.220-  :hook (sh-mode . flymake-mode))
  17.221-
  17.222-(use-package tempo
  17.223-  :custom
  17.224-  tempo-interactive t
  17.225-  :config
  17.226-  (tempo-define-template 
  17.227-   "org:readme"
  17.228-   '("#+TITLE: " p n>
  17.229-     "#+AUTHOR: " user-full-name " <" user-mail-address ">" n>)
  17.230-   "org:readme"
  17.231-   "Insert a readme.org file template.")
  17.232-  (tempo-define-template "org:src"
  17.233-                         '("#+begin_src " p n>
  17.234-                           "#+end_src" n>)
  17.235-                         "org:src"))
  17.236-;;; Org Config
  17.237-(keymap-set user-map "t" #'org-todo)
  17.238-
  17.239-;; populate org-babel
  17.240-(org-babel-do-load-languages
  17.241- ;; TODO 2021-10-24: bqn, apl, k
  17.242- 'org-babel-load-languages '((shell . t)
  17.243-			     (emacs-lisp . t)
  17.244-			     (lisp . t)
  17.245-			     (org . t)
  17.246-			     (eshell . t)
  17.247-			     (sed . t)
  17.248-			     (awk . t)
  17.249-			     (dot . t)
  17.250-			     (js . t)
  17.251-			     (C . t)
  17.252-			     (python . t)
  17.253-			     (lua . t)
  17.254-			     (lilypond . t)))
  17.255-;;; IRC
  17.256-(setq erc-format-nick-function 'erc-format-@nick)
  17.257-
  17.258-(defun start-erc ()
  17.259-  "Connect to IRC."
  17.260-  (interactive)
  17.261-  (erc-tls :server "irc.libera.chat" :port 6697
  17.262-           :client-certificate '("/mnt/y/data/private/krypt/libera.pem"))
  17.263-  (setq erc-autojoin-channels-alist '(("irc.libera.chat" "#emacs")
  17.264-                                      ("irc.libera.chat" "#linux")
  17.265-                                      ("irc.libera.chat" "#rust")
  17.266-                                      ("irc.libera.chat" "#btrfs")
  17.267-                                      ("irc.libera.chat" "#lisp")
  17.268-                                      ("irc.libera.chat" "#sbcl")
  17.269-                                      ("irc.oftc.net" "#llvm"))))
  17.270-;;; Tags
  17.271-;;;###autoload
  17.272-(defun refresh-tags ()
  17.273-  "Refresh TAGS database in `user-emacs-directory'."
  17.274-  (interactive)
  17.275-  (let ((default-directory user-emacs-directory))
  17.276-    (async-shell-command 
  17.277-     "etags ./*.el \\
  17.278-./lib/*.el \\
  17.279-~/dev/comp/org/*.el \\
  17.280-~/dev/comp/core/emacs/*.el \\
  17.281-~/dev/comp/core/emacs/lib/*.el \\
  17.282--o TAGS")))
  17.283-
  17.284-(unless (string-equal "hyde"  system-name)
  17.285-  (add-hook 'dired-mode-hook #'all-the-icons-dired-mode)
  17.286-  (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode))
  17.287-
  17.288-(provide 'ellis)
  17.289-;;; ellis.el ends here