Skip to content

Latest commit

 

History

History
224 lines (140 loc) · 5.86 KB

README.org

File metadata and controls

224 lines (140 loc) · 5.86 KB

README

Cookbook

guix

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.

Document / implement these configure commands in emacs or a more consistent interface

Window Manager: Sway

Keybindings

Keybindings are divided into modes, which are shown

Launchers S-o

KeybindingCommand
S-o elaunch / switch: emacs
S-o blaunch / switch: browser (firefox)
S-o tlaunch / 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

KeybindingCommand
S-b bwindow switcher
S-b oprevious window
S-b dkill window

Note: The window switching commands (called buffers here) use swayr for LRU switching.

Toggles S-t

KeybindingCommand
S-t btoggle bluetooth

Locking: swayidle & swaylock

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.

Copying

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

Screenshots / Recording

You can use grimshot to take screenshots of windows.

You can use wf-recorder to perform a screen recording.

Printing

The CUPS admin web interface is accessible at localhost:631.

Bluetooth: bluetoothctl

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

Networking: NetworkManager CLI

nmcli is the NetworkManager CLI. You can use nmcli to connect to a wifi network using a CLI interface.

File Sync: Syncthing

Syncthing is added as a user service and started by default.

To open the Syncthing web interfaces navigate to localhost:8384.

Emacs

Global Keybindings

  • S o n deft
  • S o h hyperbole

Org

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).

Feeds: elfeed

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

=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.

info-apropos QoL improvements

Is there a package that can handle all of the below?

  • [ ] can I pass a regex?
  • [ ] ivy / helm / vertico integration?
  • [ ] evil help mode keybinding

guix

The best way to interact with guix is via emacs-guix.

Environments

Common Lisp

This configuration uses SBCL for common-lisp’ing.

Coalton

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.

Guile

To start a guile shell with the current path in the module load path:

GUILE_LOAD_PATH="$PWD" guile

Open Questions

  • matrix math interface (something like cl-ffi-blas)

Security

Audits: lynis

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

MacOS

Emacs

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.