Initial commit

This commit is contained in:
Skylar Hill 2024-04-04 02:35:23 -05:00
commit 59391c6456
13 changed files with 1183 additions and 0 deletions

341
Emacs.org Normal file
View File

@ -0,0 +1,341 @@
* Emacs config
** Packages
#+begin_src scheme :tangle home/emacs-packages.scm
(define-public emacs-parinfer-rust-mode
(package
(name "emacs-parinfer-rust-mode")
(version "0.8.4")
(source
(origin
(method url-fetch)
(uri (string-append
"https://stable.melpa.org/packages/parinfer-rust-mode-" version
".tar"))
(sha256
(base32 "1ivpw22043rag2wx7agfck330cdy5acg4djfsdh01v33d95547c1"))))
(build-system emacs-build-system)
(home-page "https://github.com/justinbarclay/parinfer-rust-mode")
(synopsis "An interface for the parinfer-rust library")
(propagated-inputs (list parinfer-rust))
(description
"An intuitive editor mode to make paren management fun and easy without
sacrificing power. How it works: Parinfer users the state of the buffer
combined with the current mode (paren, indent, or smart) to either balance an
s-expression's indentation, paren, or to do both. Let's go over some light
examples to get a sense of how parinfer works. I am going to use `|` to
indicate the cursor and `_` to indicate the a space that's been added either by
the user or parinfer. Paren Mode gives you full control of parens, while
Parinfer corrects indentation. For example, if we start off with the cursor
before `(foo` ``` |(foo bar) ``` and the user inserts a space ``` _|(foo bar)
``` then parinfer will maintain, infer, that a space is needed in front of
`bar)` to maintain indentation ``` |(foo _bar) ``` Indent Mode gives you full
control of indentation, while Parinfer corrects or inserts close-parens where
appropriate. Now the cursor is before `4` ``` (foo [1 2 3] |4 5 6) ``` and the
user inserts a space ``` (foo [1 2 3] _|4 5 6) ``` then parinfer will adjust the
`]` and move it down to the follow line to enclose the 4 5 6 ``` (foo [1 2 3 |4
5 6]) ``` Smart Mode is like Indent Mode, but it tries to preserve the structure
too. This roughly translates to it treating everything before the cursor as
indent-mode and every after the cursor as paren-mode. The cursor is before `(+`
``` (let [x (fn [])] |(+ 1 2) x) ``` and the user add several spaces to the sexp
``` (let [x (fn [])] ________|(+ 1 2) x) ``` Smart-Mode will move a ) and a ] to
enclose the addition function call and move the 2 to maintain structure ``` (let
[x (fn [] |(+ 1 _________2))] x) ``` To find out more about how parinfer works
go to: https://shaunlebron.github.io/parinfer/ `parinfer-rust-mode` provides an
interface between the `parinfer-rust` library and Emacs. As such it's primary
role is to capture meta information about the buffer and transfer it to the
parinfer-rust API. As such parinfer-rust-mode requires that your version of
Emacs supports modules.")
(license #f)))
(define emacs-packages (list
emacs-all-the-icons
emacs-all-the-icons-dired
emacs-company
emacs-company-box
emacs-company-quickhelp
emacs-counsel
emacs-crux
emacs-dracula-theme
emacs-geiser
emacs-geiser-guile
emacs-gerbil-mode
emacs-guix
emacs-ivy
emacs-ivy-rich
emacs-kbd
emacs-ligature
emacs-magit
emacs-meow
emacs-org-roam
emacs-org-superstar
emacs-parinfer-rust-mode
emacs-polymode
emacs-polymode-org
emacs-swiper
emacs-telephone-line
emacs-which-key
emacs-yasnippet))
#+end_src
** Config
#+begin_src emacs-lisp :tangle home/init.el
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(use-package parinfer-rust
:custom ((parinfer-rust-library-directory "/home/skylar/.guix-home/profile/lib/")
(parinfer-rust-library "/home/skylar/.guix-home/profile/lib/libparinfer_rust.so"))
:hook (emacs-lisp-mode scheme-mode lisp-mode geiser-mode))
(use-package ivy
:config (ivy-mode t))
(use-package counsel
:config (counsel-mode t))
(use-package swiper
:bind ("C-x /" . swiper))
(use-package company
:config (global-company-mode t))
(use-package company-quickhelp
:config (company-quickhelp-mode 1))
(use-package mu4e
:config (setq
mu4e-sent-folder "/posteo/Sent"
mu4e-drafts-folder "/posteo/Drafts"
mu4e-trash-folder "/posteo/Trash"
mu4e-get-mail-command "offlineimap"
mu4e-update-interval 3000))
(use-package dracula-theme
:config (load-theme 'dracula :no-confirm))
(use-package org
:hook (org-superstar-mode))
(use-package poly-org
:config
(pm-around-advice #'org-babel-tangle #'polymode-with-current-base-buffer)
(pm-around-advice #'org-babel-demarcate-block #'polymode-with-current-base-buffer)
:bind (:map poly-org-mode-map
("C-c C-v C-t" . org-babel-tangle)
("C-c C-v t" . org-babel-tangle)
("C-c C-v C-d" . org-babel-demarcate-block)
("C-c C-v d" . org-babel-demarcate-block))
:hook ((poly-org-mode . (lambda () (setq-local org-src-fontify-natively t)))
(org-mode . poly-org-mode)))
(use-package geiser-guile
:config (add-to-list 'geiser-guile-load-path "~/software/guix"))
(use-package yasnippet
:config (add-to-list 'yas-snippet-dirs "~/software/guix/etc/snippets/yas/"))
(setq user-full-name "Skylar Hill"
user-mail-address "stellarskylark@posteo.net")
(load-file "~/software/guix/etc/copyright.el")
(use-package smtpmail
:config (setq message-send-mail-function 'smtpmail-send-it
smtpmail-stream-type 'ssl
smtpmail-smtp-server "posteo.de"
smtpmail-smtp-service 465))
(use-package ligature
:config
;; Enable the "www" ligature in every possible major mode
(ligature-set-ligatures 't '("www"))
;; Enable traditional ligature support in eww-mode, if the
;; `variable-pitch' face supports it
(ligature-set-ligatures 'eww-mode '("ff" "fi" "ffi"))
;; Enable all Cascadia and Fira Code ligatures in programming modes
(ligature-set-ligatures 'prog-mode
'(;; == === ==== => =| =>>=>=|=>==>> ==< =/=//=// =~
;; =:= =!=
("=" (rx (+ (or ">" "<" "|" "/" "~" ":" "!" "="))))
;; ;; ;;;
(";" (rx (+ ";")))
;; && &&&
("&" (rx (+ "&")))
;; !! !!! !. !: !!. != !== !~
("!" (rx (+ (or "=" "!" "\." ":" "~"))))
;; ?? ??? ?: ?= ?.
("?" (rx (or ":" "=" "\." (+ "?"))))
;; %% %%%
("%" (rx (+ "%")))
;; |> ||> |||> ||||> |] |} || ||| |-> ||-||
;; |->>-||-<<-| |- |== ||=||
;; |==>>==<<==<=>==//==/=!==:===>
("|" (rx (+ (or ">" "<" "|" "/" ":" "!" "}" "\]"
"-" "="))))
;; \\ \\\ \/
("\\" (rx (or "/" (+ "\\"))))
;; ++ +++ ++++ +>
("+" (rx (or ">" (+ "+"))))
;; :: ::: :::: :> :< := :// ::=
(":" (rx (or ">" "<" "=" "//" ":=" (+ ":"))))
;; // /// //// /\ /* /> /===:===!=//===>>==>==/
("/" (rx (+ (or ">" "<" "|" "/" "\\" "\*" ":" "!"
"="))))
;; .. ... .... .= .- .? ..= ..<
("\." (rx (or "=" "-" "\?" "\.=" "\.<" (+ "\."))))
;; -- --- ---- -~ -> ->> -| -|->-->>->--<<-|
("-" (rx (+ (or ">" "<" "|" "~" "-"))))
;; *> */ *) ** *** ****
("*" (rx (or ">" "/" ")" (+ "*"))))
;; www wwww
("w" (rx (+ "w")))
;; <> <!-- <|> <: <~ <~> <~~ <+ <* <$ </ <+> <*>
;; <$> </> <| <|| <||| <|||| <- <-| <-<<-|-> <->>
;; <<-> <= <=> <<==<<==>=|=>==/==//=!==:=>
;; << <<< <<<<
("<" (rx (+ (or "\+" "\*" "\$" "<" ">" ":" "~" "!"
"-" "/" "|" "="))))
;; >: >- >>- >--|-> >>-|-> >= >== >>== >=|=:=>>
;; >> >>> >>>>
(">" (rx (+ (or ">" "<" "|" "/" ":" "=" "-"))))
;; #: #= #! #( #? #[ #{ #_ #_( ## ### #####
("#" (rx (or ":" "=" "!" "(" "\?" "\[" "{" "_(" "_"
(+ "#"))))
;; ~~ ~~~ ~= ~- ~@ ~> ~~>
("~" (rx (or ">" "=" "-" "@" "~>" (+ "~"))))
;; __ ___ ____ _|_ __|____|_
("_" (rx (+ (or "_" "|"))))
;; Fira code: 0xFF 0x12
("0" (rx (and "x" (+ (in "A-F" "a-f" "0-9")))))
;; Fira code:
"Fl" "Tl" "fi" "fj" "fl" "ft"
;; The few not covered by the regexps.
"{|" "[|" "]#" "(*" "}#" "$>" "^="))
;; Enables ligature checks globally in all buffers. You can also do it
;; per mode with `ligature-mode'.
(global-ligature-mode t))
(use-package all-the-icons-dired
:hook (dired-mode . all-the-icons-dired-mode))
(require 'telephone-line)
(defface skylark-accent '((t (:background "#50fa7b" :foreground "#282a36"))) "")
(setq telephone-line-faces
'((skylark-accent . (skylark-accent . skylark-accent))
(accent . (telephone-line-accent-active . telephone-line-accent-inactive))
(nil . (mode-line . mode-line-inactive))))
(setq telephone-line-lhs
'((skylark-accent . (telephone-line-meow-tag-segment))
(accent . (telephone-line-vc-segment
telephone-line-erc-modified-channels-segment
telephone-line-process-segment))
(nil . (telephone-line-minor-mode-segment
telephone-line-buffer-segment))))
(setq telephone-line-rhs
'((nil . (telephone-line-misc-info-segment))
(accent . (telephone-line-major-mode-segment))
(skylark-accent . (telephone-line-airline-position-segment))))
(telephone-line-mode 1)
(setq frame-resize-pixelwise t)
(setq window-resize-pixelwise t)
(setq-default indent-tabs-mode nil)
(add-to-list 'default-frame-alist
'(font . "Fira Code"))
(add-to-list 'default-frame-alist
'(alpha-background . 80))
(require 'meow)
(defun meow-setup ()
(setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty)
(meow-motion-overwrite-define-key
'("j" . meow-next)
'("k" . meow-prev)
'("<escape>" . ignore))
(meow-leader-define-key
;; SPC j/k will run the original command in MOTION state.
'("j" . "H-j")
'("k" . "H-k")
;; Use SPC (0-9) for digit arguments.
'("1" . meow-digit-argument)
'("2" . meow-digit-argument)
'("3" . meow-digit-argument)
'("4" . meow-digit-argument)
'("5" . meow-digit-argument)
'("6" . meow-digit-argument)
'("7" . meow-digit-argument)
'("8" . meow-digit-argument)
'("9" . meow-digit-argument)
'("0" . meow-digit-argument)
'("/" . meow-keypad-describe-key)
'("?" . meow-cheatsheet))
(meow-normal-define-key
'("0" . meow-expand-0)
'("9" . meow-expand-9)
'("8" . meow-expand-8)
'("7" . meow-expand-7)
'("6" . meow-expand-6)
'("5" . meow-expand-5)
'("4" . meow-expand-4)
'("3" . meow-expand-3)
'("2" . meow-expand-2)
'("1" . meow-expand-1)
'("-" . negative-argument)
'(";" . meow-reverse)
'("," . meow-inner-of-thing)
'("." . meow-bounds-of-thing)
'("[" . meow-beginning-of-thing)
'("]" . meow-end-of-thing)
'("a" . meow-append)
'("A" . meow-open-below)
'("b" . meow-back-word)
'("B" . meow-back-symbol)
'("c" . meow-change)
'("d" . meow-delete)
'("D" . meow-backward-delete)
'("e" . meow-next-word)
'("E" . meow-next-symbol)
'("f" . meow-find)
'("g" . meow-cancel-selection)
'("G" . meow-grab)
'("h" . meow-left)
'("H" . meow-left-expand)
'("i" . meow-insert)
'("I" . meow-open-above)
'("j" . meow-next)
'("J" . meow-next-expand)
'("k" . meow-prev)
'("K" . meow-prev-expand)
'("l" . meow-right)
'("L" . meow-right-expand)
'("m" . meow-join)
'("n" . meow-search)
'("o" . meow-block)
'("O" . meow-to-block)
'("p" . meow-yank)
'("q" . meow-quit)
'("Q" . meow-goto-line)
'("r" . meow-replace)
'("R" . meow-swap-grab)
'("s" . meow-kill)
'("t" . meow-till)
'("u" . meow-undo)
'("U" . meow-undo-in-selection)
'("v" . meow-visit)
'("w" . meow-mark-word)
'("W" . meow-mark-symbol)
'("x" . meow-line)
'("X" . meow-goto-line)
'("y" . meow-save)
'("Y" . meow-sync-grab)
'("z" . meow-pop-selection)
'("'" . repeat)
'("<escape>" . ignore)))
(meow-setup)
(meow-global-mode 1)
(customize-set-variable 'meow-use-clipboard t)
#+end_src

166
Sanderson.org Normal file
View File

@ -0,0 +1,166 @@
* Sanderson config
** Main system
#+begin_src scheme :tangle sanderson.scm
(use-modules (gnu)
(nongnu packages linux)
(nongnu system linux-initrd))
(use-service-modules cups desktop networking ssh syncthing xorg)
(operating-system
(kernel linux)
(initrd microcode-initrd)
(firmware (list linux-firmware))
(locale "en_US.utf8")
(timezone "America/Chicago")
(keyboard-layout (keyboard-layout "us"))
(host-name "sanderson")
;; The list of user accounts ('root' is implicit).
(users (cons* (user-account
(name "skylar")
(comment "Skylar")
(group "users")
(home-directory "/home/skylar")
(supplementary-groups '("wheel" "netdev" "audio" "video")))
%base-user-accounts))
;; Packages installed system-wide. Users can also install packages
;; under their own account: use 'guix search KEYWORD' to search
;; for packages and 'guix install PACKAGE' to install a package.
(packages (append (specifications->packages (list "nss-certs"
"stumpwm"))
%base-packages))
;; Below is the list of system services. To search for available
;; services, run 'guix system search KEYWORD' in a terminal.
(services
(append (list (service plasma-desktop-service-type)
;; To configure OpenSSH, pass an 'openssh-configuration'
;; record as a second argument to 'service' below.
(service openssh-service-type)
(service cups-service-type)
(set-xorg-configuration
(xorg-configuration (keyboard-layout keyboard-layout)))
(service syncthing-service-type
(syncthing-configuration
(user "skylar")
(home "/home/skylar"))))
;; This is the default list of services we
;; are appending to.
(modify-services %desktop-services
(guix-service-type config => (guix-configuration
(inherit config)
(substitute-urls
(append (list "https://substitutes.nonguix.org")
%default-substitute-urls))
(authorized-keys
(append (list (local-file "./signing-key.pub"))
%default-authorized-guix-keys)))))))
(bootloader (bootloader-configuration
(bootloader grub-bootloader)
(targets (list "/dev/sda"))
(keyboard-layout keyboard-layout)))
(swap-devices (list (swap-space
(target (uuid
"646006cb-84a4-46ea-a03c-78a343b2fd07")))))
;; The list of file systems that get "mounted". The unique
;; file system identifiers there ("UUIDs") can be obtained
;; by running 'blkid' in a terminal.
(file-systems (cons* (file-system
(mount-point "/")
(device (uuid
"38be76dc-b7d8-4433-bab6-04c6c7f62733"
'ext4))
(type "ext4")) %base-file-systems)))
#+end_src
** Home configuration
#+begin_src scheme :tangle home/sanderson.scm
(use-modules (gnu home)
(gnu home services)
(gnu packages)
(gnu packages emacs-xyz)
(gnu packages gnupg)
(gnu packages scheme)
(gnu packages text-editors)
(gnu services)
(guix build-system emacs)
(guix build-system font)
(guix download)
(guix gexp)
(guix packages)
(gnu home services shells)
(gnu home services gnupg))
(load "./emacs-packages.scm")
(home-environment
;; Below is the list of packages that will show up in your
;; Home profile, under ~/.guix-home/profile.
(packages (append
(specifications->packages
(list "bat"
"calibre"
"emacs"
"firefox"
"font-fira-code"
"font-google-noto"
"font-google-noto-emoji"
"gerbil"
"git"
"gnupg"
"gnutls"
"hicolor-icon-theme"
"kitty"
"kmonad"
"kwallet"
"nheko"
"offlineimap3"
"okular"
"mu"
"pamixer"
"password-store"
"pavucontrol"
"python"
"rofi"
"rofi-pass"
"sbcl-stumpwm-pamixer"
"smtpmail"
"steam"
"stumpwm"
"swi-prolog"
"xclip"
"zoom"))
emacs-packages))
;; Below is the list of Home services. To search for available
;; services, run 'guix home search KEYWORD' in a terminal.
(services
(list (service home-bash-service-type
(home-bash-configuration
(aliases '(("grep" . "grep --color=auto")
("ip" . "ip -color=auto")
("ll" . "ls -l")
("ls" . "ls -p --color=auto")))
(bashrc (list (local-file
"/home/skylar/.config/guix/home/.bashrc"
"bashrc")))
(bash-profile (list (local-file
"/home/skylar/.config/guix/home/.bash_profile"
"bash_profile")))))
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(pinentry-program
(file-append pinentry "/bin/pinentry"))
(default-cache-ttl 86400)
(max-cache-ttl 86400)
(ssh-support? #t)))
(service home-files-service-type
`((".emacs.d/init.el" ,(local-file "init.el"))
(".offlineimaprc" ,(local-file "offlineimaprc")))))))
#+end_src

9
channels.scm Normal file
View File

@ -0,0 +1,9 @@
(cons* (channel
(name 'nonguix)
(url "https://gitlab.com/nonguix/nonguix")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
%default-channels)

11
home/.bash_profile Normal file
View File

@ -0,0 +1,11 @@
# Set up the system, user profile, and related variables.
# /etc/profile will be sourced by bash automatically
# Set up the home environment profile.
if [ -f ~/.profile ]; then source ~/.profile; fi
# Honor per-interactive-shell startup file
if [ -f ~/.bashrc ]; then source ~/.bashrc; fi
PS1='\u@\h \w${GUIX_ENVIRONMENT:+ [env]}\$ '
# Honor per-interactive-shell startup file
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

60
home/.bashrc Normal file
View File

@ -0,0 +1,60 @@
alias grep="grep --color=auto"
alias ll="ls -l"
alias ls="ls -p --color=auto"
# Bash initialization for interactive non-login shells and
# for remote shells (info "(bash) Bash Startup Files").
# Export 'SHELL' to child processes. Programs such as 'screen'
# honor it and otherwise use /bin/sh.
export SHELL
if [[ $- != *i* ]]
then
# We are being invoked from a non-interactive shell. If this
# is an SSH session (as in "ssh host command"), source
# /etc/profile so we get PATH and other essential variables.
[[ -n "$SSH_CLIENT" ]] && source /etc/profile
# Don't do anything else.
return
fi
# Source the system-wide file.
[ -f /etc/bashrc ] && source /etc/bashrc
alias ls='ls -p --color=auto'
alias ll='ls -l'
alias grep='grep --color=auto'
alias ip='ip -color=auto'
# Bash initialization for interactive non-login shells and
# for remote shells (info "(bash) Bash Startup Files").
# Export 'SHELL' to child processes. Programs such as 'screen'
# honor it and otherwise use /bin/sh.
export SHELL
if [[ $- != *i* ]]
then
# We are being invoked from a non-interactive shell. If this
# is an SSH session (as in "ssh host command"), source
# /etc/profile so we get PATH and other essential variables.
[[ -n "$SSH_CLIENT" ]] && source /etc/profile
# Don't do anything else.
return
fi
# Source the system-wide file.
source /etc/bashrc
# Adjust the prompt depending on whether we're in 'guix environment'.
if [ -n "$GUIX_ENVIRONMENT" ]
then
PS1='\u@\h \w [env]\$ '
else
PS1='\u@\h \w\$ '
fi
alias ls='ls -p --color=auto'
alias ll='ls -l'
alias grep='grep --color=auto'

74
home/emacs-packages.scm Normal file
View File

@ -0,0 +1,74 @@
(define-public emacs-parinfer-rust-mode
(package
(name "emacs-parinfer-rust-mode")
(version "0.8.4")
(source
(origin
(method url-fetch)
(uri (string-append
"https://stable.melpa.org/packages/parinfer-rust-mode-" version
".tar"))
(sha256
(base32 "1ivpw22043rag2wx7agfck330cdy5acg4djfsdh01v33d95547c1"))))
(build-system emacs-build-system)
(home-page "https://github.com/justinbarclay/parinfer-rust-mode")
(synopsis "An interface for the parinfer-rust library")
(propagated-inputs (list parinfer-rust))
(description
"An intuitive editor mode to make paren management fun and easy without
sacrificing power. How it works: Parinfer users the state of the buffer
combined with the current mode (paren, indent, or smart) to either balance an
s-expression's indentation, paren, or to do both. Let's go over some light
examples to get a sense of how parinfer works. I am going to use `|` to
indicate the cursor and `_` to indicate the a space that's been added either by
the user or parinfer. Paren Mode gives you full control of parens, while
Parinfer corrects indentation. For example, if we start off with the cursor
before `(foo` ``` |(foo bar) ``` and the user inserts a space ``` _|(foo bar)
``` then parinfer will maintain, infer, that a space is needed in front of
`bar)` to maintain indentation ``` |(foo _bar) ``` Indent Mode gives you full
control of indentation, while Parinfer corrects or inserts close-parens where
appropriate. Now the cursor is before `4` ``` (foo [1 2 3] |4 5 6) ``` and the
user inserts a space ``` (foo [1 2 3] _|4 5 6) ``` then parinfer will adjust the
`]` and move it down to the follow line to enclose the 4 5 6 ``` (foo [1 2 3 |4
5 6]) ``` Smart Mode is like Indent Mode, but it tries to preserve the structure
too. This roughly translates to it treating everything before the cursor as
indent-mode and every after the cursor as paren-mode. The cursor is before `(+`
``` (let [x (fn [])] |(+ 1 2) x) ``` and the user add several spaces to the sexp
``` (let [x (fn [])] ________|(+ 1 2) x) ``` Smart-Mode will move a ) and a ] to
enclose the addition function call and move the 2 to maintain structure ``` (let
[x (fn [] |(+ 1 _________2))] x) ``` To find out more about how parinfer works
go to: https://shaunlebron.github.io/parinfer/ `parinfer-rust-mode` provides an
interface between the `parinfer-rust` library and Emacs. As such it's primary
role is to capture meta information about the buffer and transfer it to the
parinfer-rust API. As such parinfer-rust-mode requires that your version of
Emacs supports modules.")
(license #f)))
(define emacs-packages (list
emacs-all-the-icons
emacs-all-the-icons-dired
emacs-company
emacs-company-box
emacs-company-quickhelp
emacs-counsel
emacs-crux
emacs-dracula-theme
emacs-geiser
emacs-geiser-guile
emacs-gerbil-mode
emacs-guix
emacs-ivy
emacs-ivy-rich
emacs-kbd
emacs-ligature
emacs-magit
emacs-meow
emacs-org-roam
emacs-org-superstar
emacs-parinfer-rust-mode
emacs-polymode
emacs-polymode-org
emacs-swiper
emacs-telephone-line
emacs-which-key
emacs-yasnippet))

257
home/init.el Normal file
View File

@ -0,0 +1,257 @@
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(use-package parinfer-rust
:custom ((parinfer-rust-library-directory "/home/skylar/.guix-home/profile/lib/")
(parinfer-rust-library "/home/skylar/.guix-home/profile/lib/libparinfer_rust.so"))
:hook (emacs-lisp-mode scheme-mode lisp-mode geiser-mode))
(use-package ivy
:config (ivy-mode t))
(use-package counsel
:config (counsel-mode t))
(use-package swiper
:bind ("C-x /" . swiper))
(use-package company
:config (global-company-mode t))
(use-package company-quickhelp
:config (company-quickhelp-mode 1))
(use-package mu4e
:config (setq
mu4e-sent-folder "/posteo/Sent"
mu4e-drafts-folder "/posteo/Drafts"
mu4e-trash-folder "/posteo/Trash"
mu4e-get-mail-command "offlineimap"
mu4e-update-interval 3000))
(use-package dracula-theme
:config (load-theme 'dracula :no-confirm))
(use-package org
:hook (org-superstar-mode))
(use-package poly-org
:config
(pm-around-advice #'org-babel-tangle #'polymode-with-current-base-buffer)
(pm-around-advice #'org-babel-demarcate-block #'polymode-with-current-base-buffer)
:bind (:map poly-org-mode-map
("C-c C-v C-t" . org-babel-tangle)
("C-c C-v t" . org-babel-tangle)
("C-c C-v C-d" . org-babel-demarcate-block)
("C-c C-v d" . org-babel-demarcate-block))
:hook ((poly-org-mode . (lambda () (setq-local org-src-fontify-natively t)))
(org-mode . poly-org-mode)))
(use-package geiser-guile
:config (add-to-list 'geiser-guile-load-path "~/software/guix"))
(use-package yasnippet
:config (add-to-list 'yas-snippet-dirs "~/software/guix/etc/snippets/yas/"))
(setq user-full-name "Skylar Hill"
user-mail-address "stellarskylark@posteo.net")
(load-file "~/software/guix/etc/copyright.el")
(use-package smtpmail
:config (setq message-send-mail-function 'smtpmail-send-it
smtpmail-stream-type 'ssl
smtpmail-smtp-server "posteo.de"
smtpmail-smtp-service 465))
(use-package ligature
:config
;; Enable the "www" ligature in every possible major mode
(ligature-set-ligatures 't '("www"))
;; Enable traditional ligature support in eww-mode, if the
;; `variable-pitch' face supports it
(ligature-set-ligatures 'eww-mode '("ff" "fi" "ffi"))
;; Enable all Cascadia and Fira Code ligatures in programming modes
(ligature-set-ligatures 'prog-mode
'(;; == === ==== => =| =>>=>=|=>==>> ==< =/=//=// =~
;; =:= =!=
("=" (rx (+ (or ">" "<" "|" "/" "~" ":" "!" "="))))
;; ;; ;;;
(";" (rx (+ ";")))
;; && &&&
("&" (rx (+ "&")))
;; !! !!! !. !: !!. != !== !~
("!" (rx (+ (or "=" "!" "\." ":" "~"))))
;; ?? ??? ?: ?= ?.
("?" (rx (or ":" "=" "\." (+ "?"))))
;; %% %%%
("%" (rx (+ "%")))
;; |> ||> |||> ||||> |] |} || ||| |-> ||-||
;; |->>-||-<<-| |- |== ||=||
;; |==>>==<<==<=>==//==/=!==:===>
("|" (rx (+ (or ">" "<" "|" "/" ":" "!" "}" "\]"
"-" "="))))
;; \\ \\\ \/
("\\" (rx (or "/" (+ "\\"))))
;; ++ +++ ++++ +>
("+" (rx (or ">" (+ "+"))))
;; :: ::: :::: :> :< := :// ::=
(":" (rx (or ">" "<" "=" "//" ":=" (+ ":"))))
;; // /// //// /\ /* /> /===:===!=//===>>==>==/
("/" (rx (+ (or ">" "<" "|" "/" "\\" "\*" ":" "!"
"="))))
;; .. ... .... .= .- .? ..= ..<
("\." (rx (or "=" "-" "\?" "\.=" "\.<" (+ "\."))))
;; -- --- ---- -~ -> ->> -| -|->-->>->--<<-|
("-" (rx (+ (or ">" "<" "|" "~" "-"))))
;; *> */ *) ** *** ****
("*" (rx (or ">" "/" ")" (+ "*"))))
;; www wwww
("w" (rx (+ "w")))
;; <> <!-- <|> <: <~ <~> <~~ <+ <* <$ </ <+> <*>
;; <$> </> <| <|| <||| <|||| <- <-| <-<<-|-> <->>
;; <<-> <= <=> <<==<<==>=|=>==/==//=!==:=>
;; << <<< <<<<
("<" (rx (+ (or "\+" "\*" "\$" "<" ">" ":" "~" "!"
"-" "/" "|" "="))))
;; >: >- >>- >--|-> >>-|-> >= >== >>== >=|=:=>>
;; >> >>> >>>>
(">" (rx (+ (or ">" "<" "|" "/" ":" "=" "-"))))
;; #: #= #! #( #? #[ #{ #_ #_( ## ### #####
("#" (rx (or ":" "=" "!" "(" "\?" "\[" "{" "_(" "_"
(+ "#"))))
;; ~~ ~~~ ~= ~- ~@ ~> ~~>
("~" (rx (or ">" "=" "-" "@" "~>" (+ "~"))))
;; __ ___ ____ _|_ __|____|_
("_" (rx (+ (or "_" "|"))))
;; Fira code: 0xFF 0x12
("0" (rx (and "x" (+ (in "A-F" "a-f" "0-9")))))
;; Fira code:
"Fl" "Tl" "fi" "fj" "fl" "ft"
;; The few not covered by the regexps.
"{|" "[|" "]#" "(*" "}#" "$>" "^="))
;; Enables ligature checks globally in all buffers. You can also do it
;; per mode with `ligature-mode'.
(global-ligature-mode t))
(use-package all-the-icons-dired
:hook (dired-mode . all-the-icons-dired-mode))
(require 'telephone-line)
(defface skylark-accent '((t (:background "#50fa7b" :foreground "#282a36"))) "")
(setq telephone-line-faces
'((skylark-accent . (skylark-accent . skylark-accent))
(accent . (telephone-line-accent-active . telephone-line-accent-inactive))
(nil . (mode-line . mode-line-inactive))))
(setq telephone-line-lhs
'((skylark-accent . (telephone-line-meow-tag-segment))
(accent . (telephone-line-vc-segment
telephone-line-erc-modified-channels-segment
telephone-line-process-segment))
(nil . (telephone-line-minor-mode-segment
telephone-line-buffer-segment))))
(setq telephone-line-rhs
'((nil . (telephone-line-misc-info-segment))
(accent . (telephone-line-major-mode-segment))
(skylark-accent . (telephone-line-airline-position-segment))))
(telephone-line-mode 1)
(setq frame-resize-pixelwise t)
(setq window-resize-pixelwise t)
(setq-default indent-tabs-mode nil)
(add-to-list 'default-frame-alist
'(font . "Fira Code"))
(add-to-list 'default-frame-alist
'(alpha-background . 80))
(require 'meow)
(defun meow-setup ()
(setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty)
(meow-motion-overwrite-define-key
'("j" . meow-next)
'("k" . meow-prev)
'("<escape>" . ignore))
(meow-leader-define-key
;; SPC j/k will run the original command in MOTION state.
'("j" . "H-j")
'("k" . "H-k")
;; Use SPC (0-9) for digit arguments.
'("1" . meow-digit-argument)
'("2" . meow-digit-argument)
'("3" . meow-digit-argument)
'("4" . meow-digit-argument)
'("5" . meow-digit-argument)
'("6" . meow-digit-argument)
'("7" . meow-digit-argument)
'("8" . meow-digit-argument)
'("9" . meow-digit-argument)
'("0" . meow-digit-argument)
'("/" . meow-keypad-describe-key)
'("?" . meow-cheatsheet))
(meow-normal-define-key
'("0" . meow-expand-0)
'("9" . meow-expand-9)
'("8" . meow-expand-8)
'("7" . meow-expand-7)
'("6" . meow-expand-6)
'("5" . meow-expand-5)
'("4" . meow-expand-4)
'("3" . meow-expand-3)
'("2" . meow-expand-2)
'("1" . meow-expand-1)
'("-" . negative-argument)
'(";" . meow-reverse)
'("," . meow-inner-of-thing)
'("." . meow-bounds-of-thing)
'("[" . meow-beginning-of-thing)
'("]" . meow-end-of-thing)
'("a" . meow-append)
'("A" . meow-open-below)
'("b" . meow-back-word)
'("B" . meow-back-symbol)
'("c" . meow-change)
'("d" . meow-delete)
'("D" . meow-backward-delete)
'("e" . meow-next-word)
'("E" . meow-next-symbol)
'("f" . meow-find)
'("g" . meow-cancel-selection)
'("G" . meow-grab)
'("h" . meow-left)
'("H" . meow-left-expand)
'("i" . meow-insert)
'("I" . meow-open-above)
'("j" . meow-next)
'("J" . meow-next-expand)
'("k" . meow-prev)
'("K" . meow-prev-expand)
'("l" . meow-right)
'("L" . meow-right-expand)
'("m" . meow-join)
'("n" . meow-search)
'("o" . meow-block)
'("O" . meow-to-block)
'("p" . meow-yank)
'("q" . meow-quit)
'("Q" . meow-goto-line)
'("r" . meow-replace)
'("R" . meow-swap-grab)
'("s" . meow-kill)
'("t" . meow-till)
'("u" . meow-undo)
'("U" . meow-undo-in-selection)
'("v" . meow-visit)
'("w" . meow-mark-word)
'("W" . meow-mark-symbol)
'("x" . meow-line)
'("X" . meow-goto-line)
'("y" . meow-save)
'("Y" . meow-sync-grab)
'("z" . meow-pop-selection)
'("'" . repeat)
'("<escape>" . ignore)))
(meow-setup)
(meow-global-mode 1)
(customize-set-variable 'meow-use-clipboard t)

18
home/offlineimaprc Normal file
View File

@ -0,0 +1,18 @@
[general]
pythonfile = ~/.local/bin/offlineimap-pass.py
accounts = posteo
[Account posteo]
localrepository = posteo-local
remoterepository = posteo-remote
[Repository posteo-local]
type = Maildir
localfolders = ~/.local/share/mail/posteo/
[Repository posteo-remote]
type = IMAP
remotehost = posteo.de
remoteuser = stellarskylark@posteo.net
remotepasseval = get_pass("posteo")
sslcacertfile = /etc/ssl/certs/ca-certificates.crt

1
home/offlineimaprc~ Normal file
View File

@ -0,0 +1 @@
[general]

82
home/sanderson.scm Normal file
View File

@ -0,0 +1,82 @@
(use-modules (gnu home)
(gnu home services)
(gnu packages)
(gnu packages emacs-xyz)
(gnu packages gnupg)
(gnu packages scheme)
(gnu packages text-editors)
(gnu services)
(guix build-system emacs)
(guix build-system font)
(guix download)
(guix gexp)
(guix packages)
(gnu home services shells)
(gnu home services gnupg))
(load "./emacs-packages.scm")
(home-environment
;; Below is the list of packages that will show up in your
;; Home profile, under ~/.guix-home/profile.
(packages (append
(specifications->packages
(list "bat"
"calibre"
"emacs"
"firefox"
"font-fira-code"
"font-google-noto"
"font-google-noto-emoji"
"gerbil"
"git"
"gnupg"
"gnutls"
"hicolor-icon-theme"
"kitty"
"kmonad"
"kwallet"
"nheko"
"offlineimap3"
"okular"
"mu"
"pamixer"
"password-store"
"pavucontrol"
"python"
"rofi"
"rofi-pass"
"sbcl-stumpwm-pamixer"
"smtpmail"
"steam"
"stumpwm"
"swi-prolog"
"xclip"
"zoom"))
emacs-packages))
;; Below is the list of Home services. To search for available
;; services, run 'guix home search KEYWORD' in a terminal.
(services
(list (service home-bash-service-type
(home-bash-configuration
(aliases '(("grep" . "grep --color=auto")
("ip" . "ip -color=auto")
("ll" . "ls -l")
("ls" . "ls -p --color=auto")))
(bashrc (list (local-file
"/home/skylar/.config/guix/home/.bashrc"
"bashrc")))
(bash-profile (list (local-file
"/home/skylar/.config/guix/home/.bash_profile"
"bash_profile")))))
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(pinentry-program
(file-append pinentry "/bin/pinentry"))
(default-cache-ttl 86400)
(max-cache-ttl 86400)
(ssh-support? #t)))
(service home-files-service-type
`((".emacs.d/init.el" ,(local-file "init.el"))
(".offlineimaprc" ,(local-file "offlineimaprc")))))))

85
home/sanderson.scm~ Normal file
View File

@ -0,0 +1,85 @@
(use-modules (gnu home)
(gnu home services)
(gnu packages)
(gnu packages emacs)
(gnu packages emacs-xyz)
(gnu packages fonts)
(gnu packages haskell-apps)
(gnu packages gnupg)
(gnu packages kde)
(gnu packages kde-frameworks)
(gnu packages mail)
(gnu packages messaging)
(gnu packages password-utils)
(gnu packages pulseaudio)
(gnu packages python)
(gnu packages rust-apps)
(gnu packages scheme)
(gnu packages terminals)
(gnu packages text-editors)
(gnu packages tls)
(gnu packages web-browsers)
(gnu packages xdisorg)
(gnu services)
(guix build-system emacs)
(guix build-system font)
(guix download)
(guix gexp)
(guix packages)
(gnu home services shells)
(gnu home services gnupg)
(nongnu packages messaging))
(load "./emacs-packages.scm")
(home-environment
;; Below is the list of packages that will show up in your
;; Home profile, under ~/.guix-home/profile.
(packages (append (list
bat
emacs
font-fira-code
font-google-noto
gerbil
gnupg
gnutls
kitty
kmonad
kwallet
nheko
offlineimap3
okular
mu
password-store
pavucontrol
python
qutebrowser
smtpmail
xclip
zoom)
(specifications->packages (list "steam"))
emacs-packages))
;; Below is the list of Home services. To search for available
;; services, run 'guix home search KEYWORD' in a terminal.
(services
(list (service home-bash-service-type
(home-bash-configuration
(aliases '(("grep" . "grep --color=auto")
("ip" . "ip -color=auto")
("ll" . "ls -l")
("ls" . "ls -p --color=auto")))
(bashrc (list (local-file
"/home/skylar/.config/guix/home/.bashrc"
"bashrc")))
(bash-profile (list (local-file
"/home/skylar/.config/guix/home/.bash_profile"
"bash_profile")))))
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(pinentry-program
(file-append pinentry "/bin/pinentry"))
(ssh-support? #t)))
(service home-files-service-type
`((".emacs.d/init.el" ,(local-file "init.el"))
(".offlineimaprc" ,(local-file "offlineimaprc")))))))

73
sanderson.scm Normal file
View File

@ -0,0 +1,73 @@
(use-modules (gnu)
(nongnu packages linux)
(nongnu system linux-initrd))
(use-service-modules cups desktop networking ssh syncthing xorg)
(operating-system
(kernel linux)
(initrd microcode-initrd)
(firmware (list linux-firmware))
(locale "en_US.utf8")
(timezone "America/Chicago")
(keyboard-layout (keyboard-layout "us"))
(host-name "sanderson")
;; The list of user accounts ('root' is implicit).
(users (cons* (user-account
(name "skylar")
(comment "Skylar")
(group "users")
(home-directory "/home/skylar")
(supplementary-groups '("wheel" "netdev" "audio" "video")))
%base-user-accounts))
;; Packages installed system-wide. Users can also install packages
;; under their own account: use 'guix search KEYWORD' to search
;; for packages and 'guix install PACKAGE' to install a package.
(packages (append (specifications->packages (list "nss-certs"
"stumpwm"))
%base-packages))
;; Below is the list of system services. To search for available
;; services, run 'guix system search KEYWORD' in a terminal.
(services
(append (list (service plasma-desktop-service-type)
;; To configure OpenSSH, pass an 'openssh-configuration'
;; record as a second argument to 'service' below.
(service openssh-service-type)
(service cups-service-type)
(set-xorg-configuration
(xorg-configuration (keyboard-layout keyboard-layout)))
(service syncthing-service-type
(syncthing-configuration
(user "skylar")
(home "/home/skylar"))))
;; This is the default list of services we
;; are appending to.
(modify-services %desktop-services
(guix-service-type config => (guix-configuration
(inherit config)
(substitute-urls
(append (list "https://substitutes.nonguix.org")
%default-substitute-urls))
(authorized-keys
(append (list (local-file "./signing-key.pub"))
%default-authorized-guix-keys)))))))
(bootloader (bootloader-configuration
(bootloader grub-bootloader)
(targets (list "/dev/sda"))
(keyboard-layout keyboard-layout)))
(swap-devices (list (swap-space
(target (uuid
"646006cb-84a4-46ea-a03c-78a343b2fd07")))))
;; The list of file systems that get "mounted". The unique
;; file system identifiers there ("UUIDs") can be obtained
;; by running 'blkid' in a terminal.
(file-systems (cons* (file-system
(mount-point "/")
(device (uuid
"38be76dc-b7d8-4433-bab6-04c6c7f62733"
'ext4))
(type "ext4")) %base-file-systems)))

6
signing-key.pub Normal file
View File

@ -0,0 +1,6 @@
(public-key
(ecc
(curve Ed25519)
(q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)
)
)