This dotfile config uses guix to reproducibly build and manage packages.
The system can be configured using the command
reconfigure-system
Guix Home is used to configure the user profile. The home profile can be updated using:
reconfigure-home
Read more documentation in the info pages.
Keybindings are divided into modes, which are shown
Launchers S-o
Keybinding | Command |
---|---|
S-o e | launch / switch: emacs |
S-o b | launch / switch: browser (firefox) |
S-o t | launch / switch: terminal (foot) |
Note: “launch / switch” means the application will be launched if it’s not already opened, otherwise switch to that window.
Buffers S-b
Keybinding | Command |
---|---|
S-b b | window switcher |
S-b o | previous window |
S-b d | kill window |
Note: The window switching commands (called buffers here) use swayr for LRU switching.
Toggles S-t
Keybinding | Command |
---|---|
S-t b | toggle bluetooth |
Screen locking is handled by the =swayidle= and =swaylock= commands respectively. The screen is locked after 10 mins and blanked out after 20mins. The user password must be entered to unlock the screen.
clipman is used to record the clipboard’s history. The history recording daemon is started by sway upon startup.
Use a wofi
picker via the keybinding S-y
The clipboard history can be accessed from the shell as JSON by calling:
clipman show-history | jq
You can use grimshot
to take screenshots of windows.
You can use wf-recorder
to perform a screen recording.
The CUPS admin web interface is accessible at localhost:631.
Bluetooth can be enabled by using bluetoothctl
, for example: bluetoothctl
power on
Or, you can use the toggle script:
bash ~/.config/sway/bluetooth-toggle.sh
TODO: Add notifications to the toggle script
nmcli
is the NetworkManager CLI. You can use nmcli to connect to a wifi
network using a CLI interface.
Syncthing is added as a user service and started by default.
To open the Syncthing web interfaces navigate to localhost:8384.
S o n
deftS o h
hyperbole
By default much of my emacs configuration depends on an org directory populated with data files. I sync this directory across machines using syncthing (Note: version-control isn’t used for org data to decrease the friction to make changes).
Use elfeed
to read RSS/Atom feeds.
The list of feeds is stored in $org-directory/elfeed.org
The database is similarly stored in the org directory.
Youtube channels are best consumed as an RSS [el]feed, however it’s tricky to find
the URL. Use elfeed-tube-add-feeds to find the URL and then manually plug that
into the elfeed.org
file. Future work: create helper function / org capture to
directly populate the elfeed.org
file.
=info-apropos= makes it easy to do a text search of info documents.
For guile / guix that’s where the critical information is, making a good search tool critical.
Is there a package that can handle all of the below?
- [ ] can I pass a regex?
- [ ] ivy / helm / vertico integration?
- [ ] evil help mode keybinding
The best way to interact with guix is via emacs-guix.
This configuration uses SBCL for common-lisp’ing.
See coalton for ML meets CL.
;; Require the asdf system loader -- is this required?
(require "asdf")
(asdf:load-package :coalton)
;; Enter the Coalton user package to get hacking on the REPL
(in-package :coalton-user)
NOTE: There’s probably a simpler approach, but the above worked for me.
To start a guile shell with the current path in the module load path:
GUILE_LOAD_PATH="$PWD" guile
- matrix math interface (something like cl-ffi-blas)
Lynis is a CLI tool which performs a security audit of the local system. It can be used to highlight gaps in the current config.
To generate the full report it can be run as su:
[sudo] lynis
Install Emacs 29 using the d12frosted lib with imagemagick support and native compilation:
brew install emacs-plus@29 --with-imagemagick --with-native-comp
WARNING: This will compile emacs 29 from scratch as well as natively compiling el – expect this command to take several hours.