diff options
84 files changed, 1440 insertions, 1056 deletions
diff --git a/.config/guix/garm.scm b/.config/guix/garm.scm deleted file mode 100644 index e4d895c..0000000 --- a/.config/guix/garm.scm +++ /dev/null @@ -1,94 +0,0 @@ -(define-module (garm) - #:use-module (gnu) - #:use-module (gnu home) - #:use-module (gnu home services) - #:use-module (gnu packages) - #:use-module (gnu packages linux) - #:use-module (gnu packages gnome) - #:use-module (gnu packages networking) - #:use-module (gnu services) - #:use-module (gnu services guix) - #:use-module (gnu services pm) - #:use-module (guix gexp) - #:use-module (packages packages) - #:use-module (services base) - #:use-module (services mail) - #:use-module (services xorg) - #:use-module (ymir)) - -;;; Commentary: -;;; -;;; garm is a corebooted and fully-liberated laptop -;;; -;;; Code: - -(define home - (home-environment - (packages - `(,@bd-packages-desktop - ,@bd-packages-fun - ,@bd-packages-extra - ,@bd-packages-development)) - (services - `(,@bd-base-home-services - ,@bd-mail-home-services - ,@bd-desktop-home-services)))) - - -(operating-system - (inherit ymir) - (host-name "garm") - - (packages - `(,@bd-packages-system - ,@bd-packages-laptop)) - - (services - `(,@bd-base-system-services - ,@bd-desktop-system-services - ,(service guix-home-service-type - `((,username ,home))) - ,(service tlp-service-type - (tlp-configuration - (cpu-scaling-governor-on-ac (list "powersave")) - (cpu-scaling-governor-on-bat (list "powersave")) - (energy-perf-policy-on-ac "powersave") - (energy-perf-policy-on-bat "powersave") - (pcie-aspm-on-ac "powersave") - (pcie-aspm-on-bat "powersave") - (sched-powersave-on-bat? #t) - (sched-powersave-on-ac? #t) - (sata-linkpwr-on-ac "min_power") - (sata-linkpwr-on-bat "min_power") - (start-charge-thresh-bat0 60) - (stop-charge-thresh-bat0 80))) - ,(service thermald-service-type) - ,(simple-service 'network-manager-applet - profile-service-type - (list network-manager-applet)))) - - (mapped-devices (list (mapped-device - (source (uuid "671c8094-c8cd-47f9-8332-25513f16917b")) - (target "hidden") - (type luks-device-mapping)))) - - (file-systems (cons* (file-system - (mount-point "/boot/efi") - (device (uuid - "1A7A-026F" - 'fat32)) - (type "vfat")) - (file-system - (mount-point "/home") - (device "/dev/mapper/hidden") - (type "ext4") - (dependencies mapped-devices)) - (file-system - (mount-point "/") - (device (uuid - "0a0b9520-308f-4072-a62b-b91ffacdc5b0" - 'ext4)) - (type "ext4")) %base-file-systems))) - - -;;; garm.scm ends here diff --git a/.config/guix/graveyard/hati.scm b/.config/guix/graveyard/hati.scm deleted file mode 100644 index db1a22f..0000000 --- a/.config/guix/graveyard/hati.scm +++ /dev/null @@ -1,80 +0,0 @@ -(define-module (hati) - #:use-module (gnu) - #:use-module (gnu home) - #:use-module (gnu home services) - #:use-module (gnu home services syncthing) - #:use-module (gnu packages) - #:use-module (gnu packages xorg) - #:use-module (gnu services) - #:use-module (gnu services guix) - #:use-module (guix gexp) - #:use-module (modules base) - #:use-module (modules dwm) - #:use-module (modules utils) - #:use-module (modules xorg) - #:use-module (modules ymir) - #:use-module (modules pdf)) - -;;; Commentary: -;;; -;;; hati is a asus/nvidia 3060 desktop -;;; -;;; Code: - -(define home - (home-environment - (services - `(,@bd-base-home-services - ,@bd-desktop-home-services - ,@bd-pdf-services - ,@bd-dwm-home-services - ,(service home-syncthing-service-type))))) - - -(operating-system - (inherit ymir) - (host-name "hati") - - ;; (all packages are system wide) - (packages - `(,@bd-base-system-packages - ,@bd-desktop-system-packages - ,@bd-dwm-system-packages - ,@bd-mpd-package - - ;; machine-specific packages - ,@(list - xf86-video-nouveau))) - - (services - `(,@bd-base-system-services - ,@bd-desktop-system-services - ,@bd-mpd-service - ,(service guix-home-service-type - `((,username ,home))))) - - (mapped-devices (list (mapped-device - (source (uuid "1e9c3cd7-97c2-411a-975a-40222d185563")) - (target "hidden") - (type luks-device-mapping)))) - - (file-systems (cons* (file-system - (mount-point "/boot/efi") - (device (uuid - "1448-51AE" - 'fat32)) - (type "vfat")) - (file-system - (mount-point "/home") - (device "/dev/mapper/hidden") - (type "ext4") - (dependencies mapped-devices)) - (file-system - (mount-point "/") - (device (uuid - "df334be4-5828-45b4-842a-9a8d97cfa40a" - 'ext4)) - (type "ext4")) %base-file-systems))) - - -;;; hati.scm ends here diff --git a/.config/guix/graveyard/kvasir.scm b/.config/guix/graveyard/kvasir.scm deleted file mode 100644 index b04f3e3..0000000 --- a/.config/guix/graveyard/kvasir.scm +++ /dev/null @@ -1,77 +0,0 @@ -(define-module (kvasir) - #:use-module (gnu) - #:use-module (gnu home) - #:use-module (gnu home services) - #:use-module (gnu home services dotfiles) - #:use-module (gnu image) - #:use-module (gnu packages) - #:use-module (gnu packages linux) - #:use-module (gnu services) - #:use-module (gnu services guix) - #:use-module (gnu system image) - #:use-module (guix gexp) - #:use-module (modules base) - #:use-module (modules dwm) - #:use-module (modules pdf) - #:use-module (modules xorg) - #:use-module (modules ymir)) - -;;; Commentary: -;;; -;;; kvasir is a bootable usb -;;; -;;; Code: - -(define home - (home-environment - (services - `(,@bd-base-home-services - ,@bd-desktop-home-services - ,@bd-pdf-services - ,@bd-dwm-home-services - ,(service home-dotfiles-service-type - (home-dotfiles-configuration - (directories '("/home/bdunahu/.dotfiles")))))))) - - -(define system - (operating-system - (inherit ymir) - (host-name "kvasir") - - - ;; (all packages are system wide) - (packages - `(,@bd-base-system-packages - ,@bd-dwm-system-packages - ,@bd-desktop-system-packages - - ;; machine-specific packages - ,@(list - brightnessctl))) - - (services - `(,@bd-base-system-services - ,@bd-desktop-system-services - ,(service guix-home-service-type - `((,username ,home))))) - - - (file-systems (cons* (file-system - (mount-point "/boot/efi") - (device (uuid - "8A13-7018" - 'fat32)) - (type "vfat")) - (file-system - (mount-point "/") - (device (uuid - "69a3593b-12bd-40ad-a932-007674a8cfe8")) - (type "ext4")) %base-file-systems)))) - -(image - (inherit iso9660-image) - (operating-system system)) - - -;;; kvasir.scm ends here diff --git a/.config/guix/graveyard/vali.scm b/.config/guix/graveyard/vali.scm deleted file mode 100644 index e5cf900..0000000 --- a/.config/guix/graveyard/vali.scm +++ /dev/null @@ -1,84 +0,0 @@ -(define-module (vali) - #:use-module (gnu) - #:use-module (gnu home) - #:use-module (gnu home services) - #:use-module (gnu home services syncthing) - #:use-module (gnu packages) - #:use-module (gnu packages linux) - #:use-module (gnu services) - #:use-module (gnu services guix) - #:use-module (gnu services pm) - #:use-module (guix gexp) - #:use-module (modules base) - #:use-module (modules dwm) - #:use-module (modules utils) - #:use-module (modules xorg) - #:use-module (modules ymir) - #:use-module (modules pdf)) - -;;; Commentary: -;;; -;;; vali is a laptop -;;; -;;; Code: - -(define home - (home-environment - (services - `(,@bd-base-home-services - ,@bd-desktop-home-services - ,@bd-pdf-services - ,@bd-dwm-home-services - ,(service home-syncthing-service-type))))) - - -(operating-system - (inherit ymir) - (host-name "vali") - - ;; (all packages are system wide) - (packages - `(,@bd-base-system-packages - ,@bd-desktop-system-packages - ,@bd-dwm-system-packages - ,@bd-mpd-package - ,@bd-games-packages - - ;; machine-specific packages - ,@(list - brightnessctl - tlp))) - - (services - `(,@bd-base-system-services - ,@bd-desktop-system-services - ,@bd-mpd-service - ,(service guix-home-service-type - `((,username ,home))) - ,(service tlp-service-type))) - - (mapped-devices (list (mapped-device - (source (uuid "8d3ccf19-035a-4956-8ba7-7c00dfa3a02c")) - (target "hidden") - (type luks-device-mapping)))) - - (file-systems (cons* (file-system - (mount-point "/boot/efi") - (device (uuid - "8A13-7018" - 'fat32)) - (type "vfat")) - (file-system - (mount-point "/home") - (device "/dev/mapper/hidden") - (type "ext4") - (dependencies mapped-devices)) - (file-system - (mount-point "/") - (device (uuid - "69a3593b-12bd-40ad-a932-007674a8cfe8" - 'ext4)) - (type "ext4")) %base-file-systems))) - - -;;; vali.scm ends here diff --git a/.config/guix/modules/packages/packages.scm b/.config/guix/modules/packages/packages.scm deleted file mode 100644 index a3ebd3e..0000000 --- a/.config/guix/modules/packages/packages.scm +++ /dev/null @@ -1,190 +0,0 @@ -(define-module (packages packages) - #:use-module (gnu) - #:use-module (gnu system) - #:use-module (guix gexp) - #:use-module (guix packages) - #:use-module (tanelorn packages fonts) - #:use-module (tanelorn packages wm) - #:use-module (tanelorn packages engineering) - #:export (bd-packages-system - bd-packages-laptop - bd-packages-desktop - bd-packages-fun - bd-packages-extra - bd-packages-development - )) - -;;; Commentary: -;;; Code: - -(use-package-modules - admin ;; netcat - algebra ;; bc - assembly ;; nasm - base ;; make - chromium ;; ungoogled-chromium - clojure ;; clojure - commencement ;; gcc-toolchain - compression ;; unzip, zip - compton ;; picom - cryptsetup ;; cryptsetup - curl ;; curl - databases ;; recutils - education ;; anki - emulators ;; mupen64plus*, bsnes, mgba - engineering ;; rizin, cutter - fonts ;; font-terminus, font-openmoji - fontutils ;; fontconfig - freedesktop ;; xdg-utils - games ;; nethack - gdb ;; gdb - gimp ;; gimp-next - gnome ;; brightnessctl - gnupg ;; gnupg - graphviz ;; graphviz - haskell-xyz ;; pandoc - image ;; flameshot - imagemagick ;; imagemagick - image-viewers ;; feh, nsxiv - libreoffice ;; libreoffice - librewolf ;; librewolf - linux ;; sysstat, tlp, alsa-plugins - lisp ;; sbcl - mail ;; offlineimap - man ;; man-pages - networking ;; maccchanger - package-management ;; stow - password-utils ;; pass-otp, password-store - pkg-config ;; pkg-config - pdf ;; xpdf, pdfgrep, zathura, zathura-pdf-mupdf - pulseaudio ;; pavucontrol, pulseaudio, - python ;; python - rsync ;; rsync - rust-apps ;; ripgrep - screen ;; screen - texlive ;; texlive, texlive-biber - tex ;; texlive-dvipng - tor-browsers ;; torbrowser - version-control ;; git - video ;; ffmpeg, mpv, yt-dlp - vim ;; vim - virtualization ;; qemu - web ;; jq - xdisorg ;; xdotool, xrdb - xorg ;; xf86-input-libinput, xf86-video-fbdev, xinit... - ) - - - -(define bd-packages-system - (append! - (list - cryptsetup - curl - git - man-pages - recutils - ripgrep - screen - sysstat - unzip - vim - zip) - %base-packages)) - -(define bd-packages-laptop - (list - brightnessctl - macchanger - tlp)) - -(define bd-packages-desktop - (list - alsa-plugins - eww/x11 - feh - ffmpeg - flameshot - fontconfig - font-iosevka - font-medieval-sharp - font-openmoji - font-runa-mono - font-terminus - gnupg - graphviz - imagemagick - libreoffice - mpv - nsxiv - password-store - pass-otp - pavucontrol - picom - pulseaudio - setxkbmap - texlive - texlive-biber - texlive-dvipng - texlive-pgfgantt - torbrowser - xdg-utils - xf86-input-libinput - xf86-video-fbdev - xinit - xinput - xkbcomp - xorg-server - xrandr - xrdb - xset - xss-lock - yt-dlp - zathura - zathura-pdf-mupdf - )) - -(define bd-packages-fun - (list - bsnes - dolphin-emu - mgba - mupen64plus-ui-console - mupen64plus-video-glide64mk2 - nethack - )) - -(define bd-packages-extra - (list - gimp - librewolf - pdfgrep - qemu - ungoogled-chromium - xpdf ; pdftotext - )) - -(define bd-packages-development - (list - anki - bc - cl-asdf - clojure - clojure-tools - gcc-toolchain - gdb - gnu-make - jq - nasm - netcat - offlineimap3 - pandoc - pkg-config - python - radare2-6.0.7 - rsync - sbcl - stow - )) - -;;; packages.scm ends here diff --git a/.config/guix/modules/services/base.scm b/.config/guix/modules/services/base.scm deleted file mode 100644 index f990846..0000000 --- a/.config/guix/modules/services/base.scm +++ /dev/null @@ -1,204 +0,0 @@ -(define-module (services base) - #:use-module (gnu) - #:use-module (gnu home services) - #:use-module (gnu home services dict) - #:use-module (gnu home services gnupg) - #:use-module (gnu home services mcron) - #:use-module (gnu home services shells) - #:use-module (gnu home services shepherd) - #:use-module (gnu home services ssh) - #:use-module (gnu home services xdg) - #:use-module (gnu packages gnupg) - #:use-module (ice-9 rdelim) - #:use-module (gnu system) - #:use-module (guix gexp) - #:use-module (services emacs) - #:export (bd-base-system-services - bd-base-home-services)) - -(use-service-modules admin avahi base - dbus desktop file-sharing - networking ssh) - -(define (read-hosts filename) - (let ((port (open-input-file filename))) - (let loop ((lines '())) - (let ((line (read-line port))) - (if (eof-object? line) - (begin (close-input-port port) - lines) - (loop (cons line lines))))))) - -(define bd-base-system-services - `( - ;; so that non-root users in the wheel group can - ;; perform administrative tasks (similar to "sudo"). - ,polkit-wheel-service - ;; The global fontconfig cache directory can sometimes contain - ;; stale entries, possibly referencing fonts that have been GC'd, - ;; so mount it read-only. - ,fontconfig-file-system-service - - ,(service network-manager-service-type) - ,(service wpa-supplicant-service-type) ; needed by NetworkManager - ,(service modem-manager-service-type) - ,(service usb-modeswitch-service-type) - - ;; The D-Bus clique. - ,(service avahi-service-type) - ,(service udisks-service-type) - ,(service upower-service-type) - ,(service accountsservice-service-type) - ,(service cups-pk-helper-service-type) - ,(service colord-service-type) - ,(service geoclue-service-type) - ,(service polkit-service-type) - ,(service elogind-service-type - (elogind-configuration - (handle-power-key 'hibernate) - )) - ,(service dbus-root-service-type) - - ,(service ntp-service-type) - - ,(service openssh-service-type - (openssh-configuration - (x11-forwarding? #t) - (permit-root-login 'prohibit-password) - (password-authentication? #f))) - ,(service tor-service-type) - ,(simple-service 'add-extra-hosts - hosts-service-type - (map - (lambda (x) - (host "0.0.0.0" x)) - (read-hosts "/home/bdunahu/.config/guix/assets/blocklist.txt"))) - ,@%base-services)) - -(define bd-base-home-services - (list - (service bd-home-emacs-service-type) - (service home-shepherd-service-type) - - (service home-dicod-service-type) - - (service home-gpg-agent-service-type - (home-gpg-agent-configuration - (pinentry-program - (file-append pinentry-emacs "/bin/pinentry-emacs")) - (ssh-support? #t) - (default-cache-ttl 28800) - (max-cache-ttl 28800) - (default-cache-ttl-ssh 28800) - (max-cache-ttl-ssh 28800))) - - (service home-bash-service-type - (home-bash-configuration - (aliases '(("aardwolf" . "telnet aardmud.org 23") - ("auth" . "echo -e \"$PWD\n\" >> $HOME/.config/guix/shell-authorized-directories") - ("cp" . "cp -i") - ("grep" . "grep --color=auto") - ("guix-rcfg" . "sudo guix system -L ${HOME}/.config/guix/modules/ reconfigure ${HOME}/.config/guix/${HOSTNAME}.scm") - ("ll" . "ls -l") - ("ls" . "ls -p --color=auto") - ("mkd" . "mkdir -pv") - ("mv" . "mv -i") - ("rig-shell" . "screen /dev/ttyUSB0 115200") - ("rm" . "rm -i") - ("suspend" . "sudo loginctl suspend") - ("vi" . "vim") - ("xeb" . "emacsclient -nce '(switch-to-buffer nil)'") - ("xet" . "emacsclient -nce '(shell)'") - ("ytta" . "yt-dlp --extract-audio --format bestaudio/best") - ("yttv" . "yt-dlp -f b"))) - - (bashrc (list (plain-file "bashrc" " -# converts above aliases into eshell aliases automatically -alias | sed -E \"s/^alias ([^=]+)='(.*)'$/alias \\1 \\2 \\$*/g; s/'\\\\\\''/'/g;\" >~/.config/emacs/eshell/alias -"))) - (environment-variables - '( - ("BROWSER" . "librewolf") - - ("VISUAL" . "emacsclient") - ("EDITOR" . "emacsclient") - - ("NETHACKOPTIONS" . "@$XDG_CONFIG_HOME/nethack/config") - - ("PATH" . "$HOME/.local/bin:$PATH") - ("PYTHONPATH" . "$HOME/pt/cs598/nemesis/:$PYTHONPATH") - ("ZATHURA_PLUGINS_PATH" . "$HOME/.guix-home/profile/lib/zathura") - )))) - - (service home-mcron-service-type - (home-mcron-configuration - (jobs - (list - #~(job - ;; twenty minutes - (lambda (current-time) (+ current-time (* 20 60))) - "offlineimap") - #~(job - (lambda (current-time) (+ current-time (* 5 60))) - "~/.local/bin/set-t1"))))) - - (service home-openssh-service-type - (home-openssh-configuration - (hosts - (list (openssh-host (name "garm") - (host-name "localhost") - (user "root")) - ;; (openssh-host (name "vali") - ;; (host-name "192.168.1.136") - ;; (user "bdunahu")) - (openssh-host (name "surt") - (host-name "192.168.1.250") - (user "root")) - (openssh-host (name "heimdallr") - (host-name "operationnull.com") - (user "root")) - (openssh-host (name "nott") - (host-name "localhost") - (user "bdunahu") - (port 2222) - (extra-content " UserKnownHostsFile=/dev/null - StrictHostKeyChecking=no -")))))) - - (service home-xdg-user-directories-service-type - (home-xdg-user-directories-configuration - (desktop "$HOME/dl") - (documents "$HOME/dc") - (download "$HOME/dl") - (music "$HOME/ik") - (pictures "$HOME/md/ig") - (publicshare "$HOME") - (templates "$HOME") - (videos "$HOME/md/vi"))) - - (service home-xdg-configuration-files-service-type - `(("gdbinit" - ,(plain-file - (plain-file-name %default-gdbinit) - (string-append (plain-file-content %default-gdbinit) - "set disassembly-flavor intel -set confirm no -set history filename ~/.cache/gdb/history -set history save on -set history size unlimited"))))) - - (service home-xdg-mime-applications-service-type - (home-xdg-mime-applications-configuration - (default - '((application/x-bittorrent . torrent.desktop) - (x-scheme-handler/magnet . torrent.desktop) - (x-scheme-handler/http . librewolf.desktop) - (x-scheme-handler/https . librewolf.desktop) - )) - (desktop-entries - (list - (xdg-desktop-entry - (file "torrent") - (name "Torrent") - (type 'application) - (config '((exec . "transmission-remote -a %u")))))))))) diff --git a/.config/guix/modules/services/emacs.scm b/.config/guix/modules/services/emacs.scm deleted file mode 100644 index ba3a0a7..0000000 --- a/.config/guix/modules/services/emacs.scm +++ /dev/null @@ -1,82 +0,0 @@ -(define-module (services emacs) - #:use-module (gnu) - #:use-module (gnu home services) - #:use-module (gnu services) - #:use-module (gnu services configuration) - #:use-module (gnu system) - #:use-module (guix gexp) - #:use-module (guix packages) - #:use-module (tanelorn packages emacs-xyz) - #:export (bd-home-emacs-service-type)) - -;;; Commentary: -;;; Code: - -(use-package-modules - emacs - photo - aspell - emacs-build - emacs-xyz - cpp - gnupg - python-xyz - machine-learning - mail - lisp - xdisorg) - -(define (bd-emacs-package-list config) - (list - emacs-next - pinentry-emacs - - emacs-atomic-chrome - emacs-cider - emacs-clojure-mode - emacs-dash - emacs-denote - emacs-denote-journal - emacs-elpher - emacs-emms - emacs-exwm - emacs-f - emacs-gptel - emacs-guix - emacs-hydra - emacs-jeison - emacs-lua-mode - emacs-paredit - emacs-pinentry - emacs-rainbow-delimiters - emacs-rainbow-mode - emacs-s - emacs-slime - emacs-vterm - emacs-yasnippet - - aspell - aspell-dict-en - - wmctrl ;; for exwm - - perl-image-exiftool ;; for emms - - ccls ;; for eglot - python-lsp-server ;; - - llama-cpp ;; for emacs-gptel - )) - - -(define bd-home-emacs-service-type - (service-type (name 'emacs-config) - (description "A service which bundles required -emacs packages.") - (extensions - (list (service-extension - home-profile-service-type - bd-emacs-package-list))) - (default-value #f))) - -;;; emacs.scm ends here diff --git a/.config/guix/modules/services/xorg.scm b/.config/guix/modules/services/xorg.scm deleted file mode 100644 index 065540b..0000000 --- a/.config/guix/modules/services/xorg.scm +++ /dev/null @@ -1,80 +0,0 @@ -(define-module (services xorg) - #:use-module (gnu) - #:use-module (gnu home services) - #:use-module (gnu home services desktop) - #:use-module (guix gexp) - #:use-module (guix packages) - #:use-module (gnu packages suckless) - #:use-module (ymir) - #:export (bd-desktop-system-services - bd-desktop-home-services - )) - -(use-service-modules audio desktop networking - sound xorg) - -(define %keyboard-udev-rule - (udev-rule - "90-keyboard-hotplug.rules" - (string-append "ATTR{idVendor}==\"04b4\", ATTR{idProduct}==\"0510\", ACTION==\"add\", RUN+=\"/run/current-system/profile/bin/touch /tmp/keyboard_plugged\" RUN+=\"/run/current-system/profile/bin/chown " username " /tmp/keyboard_plugged\""))) - -(define bd-desktop-system-services - (list - (service screen-locker-service-type - (screen-locker-configuration - (name "slock") - (program (file-append slock "/bin/slock")))) - - (service x11-socket-directory-service-type) - (udev-rules-service 'keyboard-hotplug %keyboard-udev-rule) - - (service pulseaudio-service-type) - (service alsa-service-type))) - -(define bd-desktop-home-services - (list - (simple-service 'dotfiles - home-files-service-type - `((".Xresources" - ,(plain-file "Xresources" " -Nsxiv.window.background: #000000 -Nsxiv.window.foreground: #FFFFFF -Nsxiv.bar.font: MedievalSharp:size=9 -")) - (".xinitrc" - ,(plain-file "xinitrc" " -#!/bin/sh - -userresources=$HOME/.Xresources -usermodmap=$HOME/.Xmodmap - -# merge in defaults and keymaps - -if [ -f \"$userresources\" ]; then - - xrdb -merge \"$userresources\" - -fi - -if [ -f \"$usermodmap\" ]; then - xmodmap \"$usermodmap\" -fi - -picom --backend=glx & -xss-lock -- slock & -xset r rate 250 70 -xset s 600 -touchpad-defaults -xrandr-toggle -xkeyboard-auto & -eww daemon -eww open bar -exec emacs -mm")) - (".config/gtk-2.0/settings.ini" - ,(plain-file "settings.ini" " -[Settings] -gtk-application-prefer-dark-theme=1\n")) - (".config/gtk-3.0/settings.ini" - ,(plain-file "settings.ini" " -[Settings] -gtk-application-prefer-dark-theme=1\n")))))) diff --git a/.config/guix/modules/ymir.scm b/.config/guix/modules/ymir.scm deleted file mode 100644 index 7327980..0000000 --- a/.config/guix/modules/ymir.scm +++ /dev/null @@ -1,71 +0,0 @@ -(define-module (ymir) - #:use-module (gnu) - #:use-module (gnu services desktop) - #:use-module (gnu system) - #:export (username - user - ymir)) - - -;;; Commentary: -;;; -;;; ymir defines a default system configuration -;;; -;;; Code: - -(define username "bdunahu") -(define user (user-account - (name username) - (comment username) - (group "users") - (home-directory (string-append "/home/" username)) - (supplementary-groups '("audio" - "netdev" - "video" - "wheel" - "dialout" - "kvm")))) - - -(define ymir - (operating-system - (host-name "ymir") - (locale "en_US.utf8") - (timezone - (if #t - "America/New_York" - "America/Denver")) - (keyboard-layout - (keyboard-layout "us" - ;; #:variant '("workman") - #:options '("ctrl:hyper_capscontrol"))) - (kernel-arguments - (delete "quiet" - %default-kernel-arguments)) - - ;; 'root' is implicit - (users (cons* user - %base-user-accounts)) - - ;; grub (uefi) - (bootloader (bootloader-configuration - (bootloader grub-efi-bootloader) - (targets (list "/boot/efi")) - (timeout 1) - (keyboard-layout keyboard-layout))) - - ;; OVERRIDE THESE - (packages - %base-packages) - (services - %base-services) - (file-systems (cons* - (file-system - (mount-point "/") - (device "none") - (type "tmpfs") - (check? #f)) - %base-file-systems)))) - - -;;; ymir.scm ends here diff --git a/.config/guix/nott.scm b/.config/guix/nott.scm deleted file mode 100644 index b9418c6..0000000 --- a/.config/guix/nott.scm +++ /dev/null @@ -1,79 +0,0 @@ -(define-module (nott) - #:use-module (gnu) - #:use-module (guix) - #:use-module (packages packages) - #:use-module (ymir) - #:use-module (srfi srfi-1)) - -(use-service-modules desktop mcron networking spice ssh xorg sddm) -(use-package-modules bootloaders certs fonts nvi package-management wget xorg) - -;;; Commentary: -;;; -;;; nott is a vm -;;; -;;; Code: - - -(operating-system - (inherit ymir) - (host-name "nott") - - (label (string-append "GNU Guix " - (or (getenv "GUIX_DISPLAYED_VERSION") - (package-version guix)))) - - (firmware '()) - - (packages - `(,@bd-packages-system)) - (services - (append (list (service xfce-desktop-service-type) - - (service slim-service-type - (slim-configuration - (auto-login? #t) - (default-user username) - (xorg-configuration - (xorg-configuration - (modules (cons xf86-video-qxl - %default-xorg-modules)))))) - - (service openssh-service-type) - - (service spice-vdagent-service-type) - - (service dhcp-client-service-type)) - - (remove (lambda (service) - (let ((type (service-kind service))) - (or (memq type - (list gdm-service-type - sddm-service-type - wpa-supplicant-service-type - cups-pk-helper-service-type - network-manager-service-type - modem-manager-service-type)) - (eq? 'network-manager-applet - (service-type-name type))))) - (modify-services %desktop-services - (login-service-type config => - (login-configuration - (inherit config))) - - (guix-service-type config => - (guix-configuration - (inherit config) - (guix (current-guix)))))))) - - (bootloader (bootloader-configuration - (bootloader grub-bootloader) - (targets (list "/dev/sda1")) - (terminal-outputs '(console)))) - - (file-systems (cons (file-system - (mount-point "/") - (device "/dev/sda2") - (type "ext4")) %base-file-systems)) - - (name-service-switch %mdns-host-lookup-nss)) @@ -1,10 +1,5 @@ -.config/emacs/bookmarks -.config/offlineimap/ -.config/emacs/*.desktop -.config/emacs/projects -.config/emacs/eshell/ -.config/emacs/gnus-home/ -.local/bin/ -.config/emacs/modules/bd--secret.el -.config/guix/assets/* -.config/guix/modules/services/mail.scm +guix/assets/* +guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--secret.el +guix/kolwynia/home/bdunahu/files/.config/offlineimap/ +guix/kolwynia/home/bdunahu/files/.local/bin/set-t1 +guix/kolwynia/home/bdunahu/mail.scm @@ -0,0 +1,15 @@ +# -*- mode: org; -*- + +Kolwynia contains the system declarations for my systems, such that they will never be lost. + +[[file:screenshots/desktop.png]] + +Namely, these systems are declared using [[https://guix.gnu.org/][GNU Guix]]. The main function of GNU Guix is to effortlessly set up [[https://www.gnu.org/software/emacs/][GNU Emacs]], the everything tool. + +** Inspiration + +For the GNU Guix configuration structure, I took inspiration from: +- https://codeberg.org/look/misako + +For the GNU Emacs configuration, I similarly borrowed organization from: +- https://protesilaos.com/emacs/dotemacs diff --git a/README.org b/README.org new file mode 100644 index 0000000..891d764 --- /dev/null +++ b/README.org @@ -0,0 +1,15 @@ +# -*- mode: org; -*- + +Kolwynia contains the system declarations for my systems, such that they will never be lost. + +[[file:screenshots/desktop.png]] + +Namely, these systems are declared using [[https://guix.gnu.org/][GNU Guix]]. The main function of GNU Guix is to effortlessly set up [[https://www.gnu.org/software/emacs/][GNU Emacs]], the everything tool. All configuration files, including Emacs, are installed with =guix home=, and are thus found in =/guix/kolwynia/home/bdunahu/files/=. + +** Inspiration + +For the GNU Guix configuration structure, I took inspiration from: +- https://codeberg.org/look/misako + +For the GNU Emacs configuration, I similarly borrowed organization from: +- https://protesilaos.com/emacs/dotemacs diff --git a/guix/kolwynia/home/bdunahu.scm b/guix/kolwynia/home/bdunahu.scm new file mode 100644 index 0000000..98105a0 --- /dev/null +++ b/guix/kolwynia/home/bdunahu.scm @@ -0,0 +1,175 @@ +;;; Copyright © 2025-2026 bdunahu <bdunahu@operationnull.com> +(define-module (kolwynia home bdunahu) + #:use-module (gnu) + #:use-module (gnu home services) + #:use-module (gnu home services desktop) + #:use-module (gnu home services dict) + #:use-module (gnu home services dotfiles) + #:use-module (gnu home services gnupg) + #:use-module (gnu home services mail) + #:use-module (gnu home services mcron) + #:use-module (gnu home services shells) + #:use-module (gnu home services shepherd) + #:use-module (gnu home services ssh) + #:use-module (gnu home services xdg) + #:use-module (gnu packages gnupg) ;pinentry-emacs + #:use-module ((kolwynia home bdunahu packages) + #:prefix pkgs:) + #:use-module ((kolwynia home bdunahu app-preferences) + #:prefix app:) + #:use-module ((kolwynia home bdunahu ssh) + #:prefix ssh-host:) + #:use-module ((kolwynia home bdunahu mail) ;gitignored + #:prefix mail:) + #:use-module (gnu home) + #:export (bdunahu)) + +;;; Commentary: +;;; Code: + +(define bdunahu + (home-environment + (packages + `(,@pkgs:emacs + ,@pkgs:browser + ,@pkgs:pass + ,@pkgs:media + ,@pkgs:mail + ,@pkgs:tex + ,@pkgs:desktop + ,@pkgs:pdf + ,@pkgs:fonts + ,@pkgs:development + ,@pkgs:reverse-engineering + ,@pkgs:university + ,@pkgs:emulators + ,@pkgs:games)) + (services + (list (service home-shepherd-service-type) + (service home-dicod-service-type) + ;; TODO: causes EXWM XELB: Authorization required, + ;; but no authorization protocol specified. + ;; ,(service home-startx-command-service-type) + (service home-dotfiles-service-type + (home-dotfiles-configuration + (directories '("./bdunahu/files")))) + (service home-gpg-agent-service-type + (home-gpg-agent-configuration + (pinentry-program + (file-append pinentry-emacs "/bin/pinentry-emacs")) + (ssh-support? #t) + (default-cache-ttl 28800) + (max-cache-ttl 28800) + (default-cache-ttl-ssh 28800) + (max-cache-ttl-ssh 28800))) + (service home-xdg-user-directories-service-type + (home-xdg-user-directories-configuration + (desktop "$HOME/dl") + (documents "$HOME/dc") + (download "$HOME/dl") + (music "$HOME/ik") + (pictures "$HOME/md/ig") + (publicshare "$HOME") + (templates "$HOME") + (videos "$HOME/md/vi"))) + (service home-bash-service-type + (home-bash-configuration + (aliases + '(("aardwolf" . "telnet aardmud.org 23") + ("auth" . "echo -e \"$PWD\n\" >> $HOME/.config/guix/shell-authorized-directories") + ("cp" . "cp -i") + ("grep" . "grep --color=auto") + ("guix-rcfg" . "sudo guix system -L ${HOME}/.dotfiles/guix/ reconfigure ${HOME}/.dotfiles/guix/kolwynia/os/${HOSTNAME}.scm") + ("ll" . "ls -l") + ("ls" . "ls -p --color=auto") + ("mkd" . "mkdir -pv") + ("mv" . "mv -i") + ("rm" . "rm -i") + ("suspend" . "sudo loginctl suspend") + ("usb0-shell" . "screen /dev/ttyUSB0 115200") + ("vi" . "vim") + ("xeb" . "emacsclient -nce '(switch-to-buffer nil)'") + ("xet" . "emacsclient -nce '(shell)'") + ("ytta" . "yt-dlp --extract-audio --format bestaudio/best") + ("yttv" . "yt-dlp -f b"))) + + (bashrc (list (plain-file "bashrc" " +# converts above aliases into eshell aliases automatically +alias | sed -E \"s/^alias ([^=]+)='(.*)'$/alias \\1 \\2 \\$*/g; s/'\\\\\\''/'/g;\" >~/.config/emacs/eshell/alias +"))) + (environment-variables + `(("PATH" . "$HOME/.local/bin:$PATH") + ("BROWSER" . ,(car app:default-browser)) + ("VISUAL" . ,(car app:default-editor)) + ("EDITOR" . ,(car app:default-editor)) + ("NETHACKOPTIONS" . "@$XDG_CONFIG_HOME/nethack/config") + ("ZATHURA_PLUGINS_PATH" . "$HOME/.guix-home/profile/lib/zathura"))))) + (service home-openssh-service-type + (home-openssh-configuration + (hosts + (list ssh-host:garmr + ssh-host:heimdallr + ssh-host:nott + ssh-host:surt + ssh-host:codeberg)))) + (service home-mcron-service-type + (home-mcron-configuration + (jobs + (list + #~(job + ;; twenty minutes + (lambda (current-time) (+ current-time (* 20 60))) + "offlineimap") + #~(job + (lambda (current-time) (+ current-time (* 5 60))) + "~/.local/bin/set-t1"))))) + (service home-xdg-configuration-files-service-type + `(("gdbinit" + ,(plain-file + (plain-file-name %default-gdbinit) + (string-append (plain-file-content %default-gdbinit) + "set disassembly-flavor intel +set confirm no +set history filename ~/.cache/gdb/history +set history save on +set history size unlimited"))))) + (service home-msmtp-service-type + (home-msmtp-configuration + (defaults + (msmtp-configuration + (port 587) + (tls? #t) + (tls-starttls? #t) + (log-file "/home/bdunahu/.local/state/msmtp.log") + (auth? #t))) + (accounts + (list + mail:operationnull + mail:umass)) + (default-account "operationnull"))) + (service home-xdg-mime-applications-service-type + (home-xdg-mime-applications-configuration + (default app:mime-app-alist) + (desktop-entries + (list + (xdg-desktop-entry + (file "torrent") + (name "Torrent") + (type 'application) + (config '((exec . "transmission-remote -a %u")))))))) + (simple-service 'xorg-dot + home-files-service-type + `((".Xresources" + ,(plain-file "Xresources" " +Nsxiv.window.background: #000000 +Nsxiv.window.foreground: #FFFFFF +Nsxiv.bar.font: MedievalSharp:size=9 +")) + (".config/gtk-2.0/settings.ini" + ,(plain-file "settings.ini" "[Settings] +gtk-application-prefer-dark-theme=1\n")) + (".config/gtk-3.0/settings.ini" + ,(plain-file "settings.ini" "[Settings] +gtk-application-prefer-dark-theme=1\n")))))))) + +;;; bdunahu.scm ends here diff --git a/guix/kolwynia/home/bdunahu/app-preferences.scm b/guix/kolwynia/home/bdunahu/app-preferences.scm new file mode 100644 index 0000000..b794f2d --- /dev/null +++ b/guix/kolwynia/home/bdunahu/app-preferences.scm @@ -0,0 +1,219 @@ +;;; Copyright © 2026 bdunahu <bdunahu@operationnull.com> +(define-module (kolwynia home bdunahu app-preferences) + #:export (default-browser + default-editor + default-media + default-image + default-pdf + default-torrent + mime-app-alist)) + +;;; Commentary: +;;; the 'torrent' xdg app is defined in bdunahu.scm +;;; Code: + +(define default-browser '("librewolf" . "librewolf.desktop")) +(define default-editor '("emacsclient" . "emacsclient.desktop")) +(define default-media '("mpv" . "mpv.desktop")) +(define default-image '("nsxiv" . "nsxiv.desktop")) +(define default-pdf '("zathura" . "zathura.desktop")) +(define default-torrent '("torrent" . "torrent.desktop")) + +(define browser-mime + '("application/x-extension-htm" + "application/x-extension-xht" + "application/x-extension-xhtml" + "application/xhtml+xml" + "text/html" + "x-scheme-handler/http" + "x-scheme-handler/https")) + +(define editor-mime + '("application/json" + "application/x-sh" + "text/javascript" + "text/markdown" + "text/plain" + "text/troff" + "text/x-c" + "text/x-c++" + "text/x-diff" + "text/x-lisp" + "text/xml" + "text/x-scheme" + "text/x-shellscript" + "text/x-tex")) + +(define file-manager-mime + '("inode/directory")) + +(define media-mime + '("application/mxf" + "application/ogg" + "application/sdp" + "application/smil" + "application/streamingmedia" + "application/vnd.apple.mpegurl" + "application/vnd.ms-asf" + "application/vnd.rn-realmedia" + "application/vnd.rn-realmedia-vbr" + "application/x-cue" + "application/x-extension-m4a" + "application/x-extension-mp4" + "application/x-matroska" + "application/x-mpegurl" + "application/x-ogg" + "application/x-ogm" + "application/x-ogm-audio" + "application/x-ogm-video" + "application/x-shorten" + "application/x-smil" + "application/x-streamingmedia" + "audio/3gpp" + "audio/3gpp2" + "audio/aac" + "audio/ac3" + "audio/aiff" + "audio/AMR" + "audio/amr-wb" + "audio/dv" + "audio/eac3" + "audio/flac" + "audio/m3u" + "audio/m4a" + "audio/mp1" + "audio/mp2" + "audio/mp3" + "audio/mp4" + "audio/mpeg" + "audio/mpeg2" + "audio/mpeg3" + "audio/mpegurl" + "audio/mpg" + "audio/musepack" + "audio/ogg" + "audio/opus" + "audio/rn-mpeg" + "audio/scpls" + "audio/vnd.dolby.heaac.1" + "audio/vnd.dolby.heaac.2" + "audio/vnd.dts" + "audio/vnd.dts.hd" + "audio/vnd.rn-realaudio" + "audio/vorbis" + "audio/wav" + "audio/webm" + "audio/x-aac" + "audio/x-adpcm" + "audio/x-aiff" + "audio/x-ape" + "audio/x-m4a" + "audio/x-matroska" + "audio/x-mp1" + "audio/x-mp2" + "audio/x-mp3" + "audio/x-mpegurl" + "audio/x-mpg" + "audio/x-ms-asf" + "audio/x-ms-wma" + "audio/x-musepack" + "audio/x-pls" + "audio/x-pn-au" + "audio/x-pn-realaudio" + "audio/x-pn-wav" + "audio/x-pn-windows-pcm" + "audio/x-realaudio" + "audio/x-scpls" + "audio/x-shorten" + "audio/x-tta" + "audio/x-vorbis" + "audio/x-vorbis+ogg" + "audio/x-wav" + "audio/x-wavpack" + "video/3gp" + "video/3gpp" + "video/3gpp2" + "video/avi" + "video/divx" + "video/dv" + "video/fli" + "video/flv" + "video/mkv" + "video/mp2t" + "video/mp4" + "video/mp4v-es" + "video/mpeg" + "video/msvideo" + "video/ogg" + "video/quicktime" + "video/vnd.divx" + "video/vnd.mpegurl" + "video/vnd.rn-realvideo" + "video/webm" + "video/x-avi" + "video/x-flc" + "video/x-flic" + "video/x-flv" + "video/x-m4v" + "video/x-matroska" + "video/x-mpeg2" + "video/x-mpeg3" + "video/x-ms-afs" + "video/x-ms-asf" + "video/x-msvideo" + "video/x-ms-wmv" + "video/x-ms-wmx" + "video/x-ms-wvxvideo" + "video/x-ogm" + "video/x-ogm+ogg" + "video/x-theora" + "video/x-theora+ogg")) + +(define image-mime + '("image/avif" + "image/bmp" + "image/gif" + "image/heif" + "image/jpeg" + "image/jpg" + "image/pjpeg" + "image/png" + "image/tiff" + "image/x-bmp" + "image/x-pcx" + "image/x-png" + "image/x-portable-anymap" + "image/x-portable-bitmap" + "image/x-portable-graymap" + "image/x-portable-pixmap" + "image/x-tga" + "image/x-xbitmap")) + +(define pdf-mime + '("application/pdf" + "application/epub+zip")) + +(define torrent-mime + '("application/x-bittorrent" + "x-scheme-handler/magnet")) + +(define mime-app-alist + (apply append + (map (lambda (app types) + (map (lambda (e) (cons e (cdr app))) types)) + `(,default-browser + ,default-editor + ,default-editor + ,default-media + ,default-image + ,default-pdf + ,default-torrent) + `(,browser-mime + ,editor-mime + ,file-manager-mime + ,media-mime + ,image-mime + ,pdf-mime + ,torrent-mime)))) + +;;; app-preferences.scm ends here diff --git a/.config/emacs/early-init.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/early-init.el index 037dc17..037dc17 100644 --- a/.config/emacs/early-init.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/early-init.el diff --git a/.config/emacs/gnus.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/gnus.el index 8482ec9..8482ec9 100644 --- a/.config/emacs/gnus.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/gnus.el diff --git a/.config/emacs/images/raven.png b/guix/kolwynia/home/bdunahu/files/.config/emacs/images/raven.png Binary files differindex 6f27c08..6f27c08 100644 --- a/.config/emacs/images/raven.png +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/images/raven.png diff --git a/.config/emacs/images/wolf.png b/guix/kolwynia/home/bdunahu/files/.config/emacs/images/wolf.png Binary files differindex fabad74..fabad74 100644 --- a/.config/emacs/images/wolf.png +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/images/wolf.png diff --git a/.config/emacs/init.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/init.el index 23070b5..7243419 100644 --- a/.config/emacs/init.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/init.el @@ -52,11 +52,11 @@ vc-follow-symlinks t completion-ignore-case t save-place-mode t + indent-tabs-mode nil read-buffer-completion-ignore-case t) (setq-default tab-width 8) (add-to-list 'default-frame-alist '(alpha . (92 . 92))) (blink-cursor-mode -1) -(indent-tabs-mode 0) (fringe-mode '(0 . 0)) (global-visual-line-mode t) (menu-bar-mode -1) diff --git a/.config/emacs/libraries/copyright.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/copyright.el index 112512d..112512d 100644 --- a/.config/emacs/libraries/copyright.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/copyright.el diff --git a/.config/emacs/libraries/exwm-outer-gaps.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/exwm-outer-gaps.el index c315e8b..c315e8b 100644 --- a/.config/emacs/libraries/exwm-outer-gaps.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/exwm-outer-gaps.el diff --git a/.config/emacs/libraries/fill-column.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/fill-column.el index 2a70cd6..2a70cd6 100644 --- a/.config/emacs/libraries/fill-column.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/fill-column.el diff --git a/.config/emacs/libraries/powerthesaurus.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/powerthesaurus.el index 2c76df0..2c76df0 100644 --- a/.config/emacs/libraries/powerthesaurus.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/powerthesaurus.el diff --git a/.config/emacs/libraries/selector.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/selector.el index 3b77190..3b77190 100644 --- a/.config/emacs/libraries/selector.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/libraries/selector.el diff --git a/.config/emacs/modules/bd--browse.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--browse.el index 33bc951..a1b185f 100644 --- a/.config/emacs/modules/bd--browse.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--browse.el @@ -64,8 +64,8 @@ (selector-source-create "Browser" :candidates - (list (bd/search-candidate "SearXNG" "https://searx.operationnull.com/searxng/search?q=" 'wolf) - (bd/search-candidate "DuckDuckGo" "https://duckduckgo.com/html/?q=" 'eww) + (list (bd/search-candidate "DuckDuckGo" "https://duckduckgo.com/html/?q=" 'wolf) + (bd/search-candidate "SearXNG" "https://searx.operationnull.com/searxng/search?q=" 'wolf) (bd/search-candidate "SearXNG-E" "https://searx.operationnull.com/searxng/search?q=" 'eww) (bd/search-candidate "Wikipedia" "https://en.wikipedia.org/w/index.php?search=" 'eww) (bd/search-candidate "Invidious" "https://inv.nadeko.net/search?q=" 'eww) diff --git a/.config/emacs/modules/bd--buffer.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--buffer.el index 4a09805..4a09805 100644 --- a/.config/emacs/modules/bd--buffer.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--buffer.el diff --git a/.config/emacs/modules/bd--chat.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--chat.el index 5fa0c2d..5fa0c2d 100644 --- a/.config/emacs/modules/bd--chat.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--chat.el diff --git a/.config/emacs/modules/bd--devel.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--devel.el index 0c17367..dfc9f15 100644 --- a/.config/emacs/modules/bd--devel.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--devel.el @@ -166,7 +166,15 @@ Otherwise, open the repository's main page." (use-package rainbow-mode :hook css-mode) -(use-package lua-mode) +(use-package lua-mode + :config + (setopt lua-indent-level 4 + lua-indent-nested-block-content-align nil) + (defun lua-at-most-one-indent (old-function &rest arguments) + (let ((old-res (apply old-function arguments))) + (if (> old-res lua-indent-level) lua-indent-level old-res))) + (advice-add #'lua-calculate-indentation-block-modifier + :around #'lua-at-most-one-indent)) (use-package clojure-mode) diff --git a/.config/emacs/modules/bd--dictionary.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--dictionary.el index e032837..e032837 100644 --- a/.config/emacs/modules/bd--dictionary.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--dictionary.el diff --git a/.config/emacs/modules/bd--emms.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--emms.el index f4e5064..f4e5064 100644 --- a/.config/emacs/modules/bd--emms.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--emms.el diff --git a/.config/emacs/modules/bd--exwm.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--exwm.el index 1738ebe..1738ebe 100644 --- a/.config/emacs/modules/bd--exwm.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--exwm.el diff --git a/.config/emacs/modules/bd--files.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--files.el index c2f3df8..c2f3df8 100644 --- a/.config/emacs/modules/bd--files.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--files.el diff --git a/.config/emacs/modules/bd--gpg.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--gpg.el index 88d9425..88d9425 100644 --- a/.config/emacs/modules/bd--gpg.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--gpg.el diff --git a/.config/emacs/modules/bd--image.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--image.el index 1d5876c..1d5876c 100644 --- a/.config/emacs/modules/bd--image.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--image.el diff --git a/.config/emacs/modules/bd--minibuffer.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--minibuffer.el index cf5641b..cf5641b 100644 --- a/.config/emacs/modules/bd--minibuffer.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--minibuffer.el diff --git a/.config/emacs/modules/bd--modeline.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--modeline.el index 2ca7ccb..2ca7ccb 100644 --- a/.config/emacs/modules/bd--modeline.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--modeline.el diff --git a/.config/emacs/modules/bd--notes.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--notes.el index 13f80f4..13f80f4 100644 --- a/.config/emacs/modules/bd--notes.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--notes.el diff --git a/.config/emacs/modules/bd--org.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--org.el index b32af41..b88a72b 100644 --- a/.config/emacs/modules/bd--org.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--org.el @@ -154,7 +154,7 @@ agenda views.") (defvar-local bd/device-list - '(("garm" . ?G) + '(("garmr" . ?G) ("heimdallr" . ?H) ("hodr" . ?M) ("surt" . ?I) diff --git a/.config/emacs/modules/bd--project.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--project.el index 243e3cd..243e3cd 100644 --- a/.config/emacs/modules/bd--project.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--project.el diff --git a/.config/emacs/modules/bd--shells.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--shells.el index 1072694..1072694 100644 --- a/.config/emacs/modules/bd--shells.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--shells.el diff --git a/.config/emacs/modules/bd--tabs.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--tabs.el index 6d4f12f..6d4f12f 100644 --- a/.config/emacs/modules/bd--tabs.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--tabs.el diff --git a/.config/emacs/modules/bd--themes.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--themes.el index cd24cab..cd24cab 100644 --- a/.config/emacs/modules/bd--themes.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--themes.el diff --git a/.config/emacs/modules/bd--utility.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--utility.el index ee74f58..ee74f58 100644 --- a/.config/emacs/modules/bd--utility.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--utility.el diff --git a/.config/emacs/modules/bd--window.el b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--window.el index bdc173b..bdc173b 100644 --- a/.config/emacs/modules/bd--window.el +++ b/guix/kolwynia/home/bdunahu/files/.config/emacs/modules/bd--window.el diff --git a/.config/eww/eww.scss b/guix/kolwynia/home/bdunahu/files/.config/eww/eww.scss index 198a00b..198a00b 100644 --- a/.config/eww/eww.scss +++ b/guix/kolwynia/home/bdunahu/files/.config/eww/eww.scss diff --git a/.config/eww/eww.yuck b/guix/kolwynia/home/bdunahu/files/.config/eww/eww.yuck index 335a687..335a687 100644 --- a/.config/eww/eww.yuck +++ b/guix/kolwynia/home/bdunahu/files/.config/eww/eww.yuck diff --git a/.config/eww/pollers.yuck b/guix/kolwynia/home/bdunahu/files/.config/eww/pollers.yuck index c3cdecf..c3cdecf 100644 --- a/.config/eww/pollers.yuck +++ b/guix/kolwynia/home/bdunahu/files/.config/eww/pollers.yuck diff --git a/.config/eww/scripts/getvol b/guix/kolwynia/home/bdunahu/files/.config/eww/scripts/getvol index 9fbe60f..9fbe60f 100755 --- a/.config/eww/scripts/getvol +++ b/guix/kolwynia/home/bdunahu/files/.config/eww/scripts/getvol diff --git a/.config/eww/scripts/update_workspaces b/guix/kolwynia/home/bdunahu/files/.config/eww/scripts/update_workspaces index 4fb1b1c..4fb1b1c 100755 --- a/.config/eww/scripts/update_workspaces +++ b/guix/kolwynia/home/bdunahu/files/.config/eww/scripts/update_workspaces diff --git a/.config/eww/scripts/update_x_names b/guix/kolwynia/home/bdunahu/files/.config/eww/scripts/update_x_names index 63117ef..63117ef 100755 --- a/.config/eww/scripts/update_x_names +++ b/guix/kolwynia/home/bdunahu/files/.config/eww/scripts/update_x_names diff --git a/.config/eww/widgets.yuck b/guix/kolwynia/home/bdunahu/files/.config/eww/widgets.yuck index c7ea4d4..c7ea4d4 100644 --- a/.config/eww/widgets.yuck +++ b/guix/kolwynia/home/bdunahu/files/.config/eww/widgets.yuck diff --git a/.config/guix/channels.scm b/guix/kolwynia/home/bdunahu/files/.config/guix/channels.scm index f0ed659..f0ed659 100644 --- a/.config/guix/channels.scm +++ b/guix/kolwynia/home/bdunahu/files/.config/guix/channels.scm diff --git a/.config/zathura/zathurarc b/guix/kolwynia/home/bdunahu/files/.config/zathura/zathurarc index ecdae54..ecdae54 100644 --- a/.config/zathura/zathurarc +++ b/guix/kolwynia/home/bdunahu/files/.config/zathura/zathurarc diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/bkup-home b/guix/kolwynia/home/bdunahu/files/.local/bin/bkup-home new file mode 100755 index 0000000..b2d31b6 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/bkup-home @@ -0,0 +1,6 @@ +#!/bin/sh + +cryptsetup open /dev/sdb1 bkup +mount /dev/mapper/bkup /mnt + +rsync -aPHAXSu --inplace --delete /home/ /mnt/ diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/fetch-album b/guix/kolwynia/home/bdunahu/files/.local/bin/fetch-album new file mode 100755 index 0000000..3885f88 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/fetch-album @@ -0,0 +1,38 @@ +#!/bin/sh + +err() { echo "Usage: + rename [OPTIONS] +Options: + -d: delimiter + -a: artist/author + -A: album/book title + -y: year of publication +You will be prompted for these fields if not given." && exit 1 ;} + +[ "$PWD" = "${HOME}/ik/tmp" ] || { echo "Unsafe directory!" && exit 1 ;} + +while getopts "d:a:A:y:" o; do case "${o}" in + d) delimiter="${OPTARG}" ;; + a) artist="${OPTARG}" ;; + A) album="${OPTARG}" ;; + y) year="${OPTARG}" ;; + *) printf "Invalid option: -%s\\n" "$OPTARG" && err ;; + esac done +files=(*) +echo "Reference: ${files[0]}" +[ -z "$delimiter" ] && echo "What are the delimiters for these files?" && read -r delimiter +echo "Which index contains the track title? (Starting from 1)" && read -r index + +[ -z "$artist" ] && echo 'Enter an artist.' && read -r artist +[ -z "$album" ] && echo 'Enter an album.' && read -r album +[ -z "$year" ] && echo 'Enter a year.' && read -r year + +for file in *; +do + extension=$(echo $file | awk -F "." '{print $NF}') + title=$(echo $file | awk -F "${delimiter}" "{print \$${index}}" | + sed -re 's/^[[:blank:]]+|[[:blank:]]+$//g' -e 's/[[:blank:]]+/ /g') + new_file="${title}_${artist}_${album}_${year}.${extension}" + mv "./$file" "./$new_file" + tag-media -a "${artist}" -t "${title}" -A "${album}" -d "${year}" "${new_file}" +done diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/guix-gc b/guix/kolwynia/home/bdunahu/files/.local/bin/guix-gc new file mode 100755 index 0000000..23a423b --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/guix-gc @@ -0,0 +1,7 @@ +#!/bin/sh + +sudo guix system delete-generations 2w +guix home delete-generations 2w +guix package --delete-generations=2w +guix pull --delete-generations=2w +guix gc diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/mail-string b/guix/kolwynia/home/bdunahu/files/.local/bin/mail-string new file mode 100755 index 0000000..e4f1d20 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/mail-string @@ -0,0 +1,4 @@ +#!/bin/sh + +mail="$(find /home/bdunahu/.ml/*/[Ii][Nn][Bb][Oo][Xx]/new/* -type f 2>/dev/null | wc -l)" +echo -n "${mail}M" diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/sort-music b/guix/kolwynia/home/bdunahu/files/.local/bin/sort-music new file mode 100755 index 0000000..013f194 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/sort-music @@ -0,0 +1,101 @@ +#!/usr/bin/env -S guix shell python -- python3 + +''' Imports ''' +import argparse +import logging +import sys +import glob +import os + +''' Global variables ''' +logger = logging.getLogger('sort_music.py') + +'''-----------------------------------------''' + +def parse_arguments(): + ''' Parse command line arguments ''' + parser = argparse.ArgumentParser() + parser.add_argument('-a', '--album', help='EXACT album name shared across designated files.', + required=True) + parser.add_argument('-f', '--format', help='ncmpcpp format of files. Default is %t_%a_%b_%y. Read the documentation for that program for more information. It MUST include an artist name (%a) and year (%y).', + default="%t_%a_%b_%y") + parser.add_argument('-v', '--verbose', help='Enable full debug output.', + action='store_true') + return parser.parse_args() + + + +def configure_logs(verbose): + ''' Configure program logging level ''' + level = logging.DEBUG if verbose else logging.INFO + + ''' Configure stream handler ''' + stream_handler = logging.StreamHandler(sys.stdout) + stream_handler.setFormatter(logging.Formatter('%(name)s - %(levelname)s - %(message)s')) + + ''' For main logger ''' + logger.addHandler(stream_handler) + logger.setLevel(level) + +'''-----------------------------------------''' + +class SortMusic(): + def __init__(self, logger, args): + self.logger = logger + self.album = args.album + self.delimiter = args.format[2] + self.artist_index = args.format.split(self.delimiter).index('%a') + self.year_index = args.format.split(self.delimiter).index('%y') + + logger.info(f'Starting rename with file extension {self.album} and artist_index {self.artist_index}') + + self.files = None # list of relevant files in specified directory + self.artist = None + self.year = None + + + def run(self): + self._find_files() + self._prompt() + self._organize() + + + def _find_files(self): + self.files = list(glob.glob(f"*{self.album}*")) + if len(self.files) == 0: + self.logger.error(f'Files in this album NOT found!') + exit(1) + + self.artist = self.files[0].split(self.delimiter).pop(self.artist_index).rsplit(".",1)[0] # remove file extension (sometimes occurs) + self.year = self.files[0].split(self.delimiter).pop(self.year_index).rsplit(".",1)[0] + + def _prompt(self): + self.logger.info(f'Found {len(self.files)} files written by {self.artist} in {self.year}.') + quit = input(f'Files will now be organized (y/n)\t').lower() + + if not quit.startswith('y'): + exit(1) + + def _organize(self): + path = f'./{self.artist}/({self.year}) {self.album}' + if not os.path.exists(path): + logger.info(f'Creating previously missing path {path}') + os.makedirs(path) + for file in self.files: + os.rename(f'./{file}', f'{path}/{file}') + +'''-----------------------------------------''' + +def main(): + ''' This is the main function ''' + args = parse_arguments() + configure_logs(args.verbose) + + ''' Initialize and run ''' + sorter = SortMusic(logger, args) + sorter.run() + + + +if __name__ == '__main__': + main() diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/string-weather b/guix/kolwynia/home/bdunahu/files/.local/bin/string-weather new file mode 100755 index 0000000..01ece24 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/string-weather @@ -0,0 +1,3 @@ +#!/bin/sh + +curl wttr.in/Amherst?format="%x+%t+%m\n" diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/t1-string b/guix/kolwynia/home/bdunahu/files/.local/bin/t1-string new file mode 100755 index 0000000..ffdd61a --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/t1-string @@ -0,0 +1,17 @@ +#!/bin/sh + +loop=$(cat /tmp/t1 | jq .stat | tr -d '"') +[ -n "$loop" ] && echo -n "${loop} " +bg=$(cat /tmp/t1 | jq .bg) +[ -n "$bg" ] && echo -n "${bg}B " +iob=$(cat /tmp/t1 | jq .iob) +[ -n "$iob" ] && echo -n " ${iob}U" +rbat=$(cat /tmp/t1 | jq .rbat) +[ -n "$rbat" ] && [ "$rbat" -lt 25 ] && echo -n " RB" +res=$(echo "$(cat /tmp/t1 | jq .res) * 100 / 1" | bc) +[ -n "$res" ] && [ "$res" -lt 2500 ] && echo -n " PR" +pbat=$(echo "$(cat /tmp/t1 | jq .pbat) * 100 / 1" | bc) +[ -n "$pbat" ] && [ "$pbat" -lt 136 ] && echo -n " PB" +cage=$(cat /tmp/t1 | jq .cage) +[ -n "$cage" ] && [ 14 -lt "$cage" ] && echo -n " CA" +echo -n diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/tag-media b/guix/kolwynia/home/bdunahu/files/.local/bin/tag-media new file mode 100755 index 0000000..64b4586 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/tag-media @@ -0,0 +1,44 @@ +#!/bin/sh + +err() { echo "Usage: + tag [OPTIONS] file +Options: + -a: artist/author + -t: song/chapter title + -A: album/book title + -d: year of publication + -g: genre + -c: comment +You will be prompted for title, artist, album and date if not given." && exit 1 ;} + +while getopts "a:t:A:d:g:c:" o; do case "${o}" in + a) artist="${OPTARG}" ;; + t) title="${OPTARG}" ;; + A) album="${OPTARG}" ;; + d) date="${OPTARG}" ;; + g) genre="${OPTARG}" ;; + c) comment="${OPTARG}" ;; + *) printf "Invalid option: -%s\\n" "$OPTARG" && err ;; + esac done + +shift $((OPTIND - 1)) + +file="$1" + +temp="$(mktemp -p "$(dirname "$file")")" +trap 'rm -f $temp' HUP INT QUIT TERM PWR EXIT + +[ ! -f "$file" ] && echo 'Provide file to tag.' && err + +[ -z "$title" ] && echo 'Enter a title.' && read -r title +[ -z "$artist" ] && echo 'Enter an artist.' && read -r artist +[ -z "$album" ] && echo 'Enter an album.' && read -r album +[ -z "$date" ] && echo 'Enter a date.' && read -r date + +cp -f "$file" "$temp" && ffmpeg -i "$temp" -map 0 -y -codec copy \ + -metadata title="$title" \ + -metadata album="$album" \ + -metadata artist="$artist" \ + -metadata date="$date" \ + ${genre:+-metadata genre="$genre"} \ + ${comment:+-metadata comment="$comment"} "$file" diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/touchpad-defaults b/guix/kolwynia/home/bdunahu/files/.local/bin/touchpad-defaults new file mode 100755 index 0000000..6c07797 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/touchpad-defaults @@ -0,0 +1,6 @@ +#!/bin/sh + +# see: +# xinput --list +# xinput --list-props 'ELAN0412:00 04F3:311D Touchpad' +[[ $HOSTNAME == "garmr" ]] && xinput --set-prop "ELAN0412:00 04F3:311D Touchpad" "libinput Tapping Enabled" 1 diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/unfreeze b/guix/kolwynia/home/bdunahu/files/.local/bin/unfreeze new file mode 100755 index 0000000..072473d --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/unfreeze @@ -0,0 +1,8 @@ +#!/bin/sh + +epid=$(pidof emacs) + +kill -USR2 "$epid" +kill -USR1 "$epid" + +echo "Done." diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/upload b/guix/kolwynia/home/bdunahu/files/.local/bin/upload new file mode 100755 index 0000000..a2db9b5 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/upload @@ -0,0 +1,43 @@ +#!/bin/sh + + +err() { echo "Usage: + upload [OPTIONS] +Options: + -t: time from now to expire in hours (default: 48) + file: a path to a file. If this is not given, receives input from stdin." && exit 1 ;} + +hours=48 + +while getopts ":t:" opt; do + case $opt in + t) + hours=$OPTARG + if [[ $OPTARG =~ ^-?[0-9]+$ ]]; then + hours=$OPTARG + else + err + fi + ;; + *) + err + ;; + esac +done + +shift $((OPTIND -1)) + +if [ -n "$1" ] && [ -f "$1" ]; then + source="$1" + ext="${1##*.}" +else + source=$(mktemp) + ext="txt" + cat > "$source" + chmod a+r "$source" +fi + +dest="$(cat /dev/random | tr -dc 'a-zA-Z0-9' | fold -w 4 | head -n 1)-$(date -d "+$hours hours" +%s).$ext" + +scp "$source" "root@operationnull.com:/var/www/operationnull/paste/$dest" && + echo "https://operationnull.com/paste/$dest" diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/xkeyboard-auto b/guix/kolwynia/home/bdunahu/files/.local/bin/xkeyboard-auto new file mode 100755 index 0000000..b81ced4 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/xkeyboard-auto @@ -0,0 +1,12 @@ +#!/bin/sh + +/home/bdunahu/.local/bin/xkeyboard-toggle +while true; +do + if [ -f /tmp/keyboard_plugged ]; then + rm /tmp/keyboard_plugged + sleep 2 + /home/bdunahu/.local/bin/xkeyboard-toggle + fi + sleep 1 +done diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/xkeyboard-layout b/guix/kolwynia/home/bdunahu/files/.local/bin/xkeyboard-layout new file mode 100755 index 0000000..de6f7a2 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/xkeyboard-layout @@ -0,0 +1,12 @@ +#!/bin/sh + +WORKMAN=$(setxkbmap -print | grep "workman") +echo $WORKMAN + +if [ -z WORKMAN ]; then + xkbcomp -I$HOME/.xkb ~/.xkb/keymap/standard $DISPLAY && + echo 'Switched to standard layout.' +else + test -f ~/.xkb/symbols/rocket && xkbcomp -I$HOME/.xkb ~/.xkb/keymap/rocket $DISPLAY && + echo 'Switched to workman layout.' +fi diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/xkeyboard-toggle b/guix/kolwynia/home/bdunahu/files/.local/bin/xkeyboard-toggle new file mode 100755 index 0000000..70f9516 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/xkeyboard-toggle @@ -0,0 +1,5 @@ +#!/bin/sh + +xset r rate 250 70 +xset s 600 +xkbcomp -I$HOME/.xkb ~/.xkb/keymap/standard $DISPLAY diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/xrandr-refresh b/guix/kolwynia/home/bdunahu/files/.local/bin/xrandr-refresh new file mode 100755 index 0000000..c9d55c5 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/xrandr-refresh @@ -0,0 +1,10 @@ +#!/bin/sh + +declare -i count=2 +declare -i seconds=1 + +while ((count)); do + xrandr >/dev/null + sleep $seconds + ((count--)) +done
\ No newline at end of file diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/xrandr-toggle b/guix/kolwynia/home/bdunahu/files/.local/bin/xrandr-toggle new file mode 100755 index 0000000..6acff6d --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/xrandr-toggle @@ -0,0 +1,15 @@ +#!/bin/sh +intern=eDP-1 +extern=DP-1 +extern2=HDMI-1 + +if xrandr | grep "$extern disconnected" >/dev/null; then + xrandr --output "$extern" --off --output "$intern" --mode 1920x1080 --auto +# usually, HDMI-1 is a 2560x1440 screen, so cannot be duplicated well +elif xrandr | grep "$extern2 connected" >/dev/null; then + xrandr --output "$extern2" --primary --mode 1920x1080 --auto --same-as "$intern" +else + xrandr --output "$extern" --primary --mode 1920x1080 --auto --same-as "$intern" +fi + +echo "xrandr done!" diff --git a/guix/kolwynia/home/bdunahu/files/.local/bin/xxinit b/guix/kolwynia/home/bdunahu/files/.local/bin/xxinit new file mode 100755 index 0000000..1ec9a82 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.local/bin/xxinit @@ -0,0 +1,6 @@ + #!/bin/sh + +DIR=/home/bdunahu/.guix-home/profile/ +$DIR/bin/xinit -- $DIR/bin/Xorg :0 vt1 -keeptty \ + -configdir $DIR/share/X11/xorg.conf.d \ + -modulepath $DIR/lib/xorg/modules diff --git a/guix/kolwynia/home/bdunahu/files/.xinitrc b/guix/kolwynia/home/bdunahu/files/.xinitrc new file mode 100644 index 0000000..0e51e5a --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.xinitrc @@ -0,0 +1,25 @@ +#!/bin/sh + +userresources=$HOME/.Xresources +usermodmap=$HOME/.Xmodmap + +# merge in defaults and keymaps + +if [ -f "$userresources" ]; then + xrdb -merge "$userresources" +fi + +if [ -f "$usermodmap" ]; then + xmodmap "$usermodmap" +fi + +picom --backend=glx & +xss-lock -- slock & +xset r rate 250 70 +xset s 600 +touchpad-defaults +xrandr-toggle +xkeyboard-auto & +eww daemon +eww open bar +exec emacs -mm diff --git a/.xkb/keymap/rocket b/guix/kolwynia/home/bdunahu/files/.xkb/keymap/rocket index 4fdd8c1..4fdd8c1 100644 --- a/.xkb/keymap/rocket +++ b/guix/kolwynia/home/bdunahu/files/.xkb/keymap/rocket diff --git a/guix/kolwynia/home/bdunahu/files/.xkb/keymap/standard b/guix/kolwynia/home/bdunahu/files/.xkb/keymap/standard new file mode 100644 index 0000000..528dd72 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/files/.xkb/keymap/standard @@ -0,0 +1,7 @@ +xkb_keymap { + xkb_keycodes { include "evdev+aliases(qwerty)" }; + xkb_types { include "complete" }; + xkb_compat { include "complete" }; + xkb_symbols { include "pc+us+inet(evdev)+rocket(rocket)" }; + xkb_geometry { include "pc(pc105)" }; +}; diff --git a/.xkb/symbols/rocket b/guix/kolwynia/home/bdunahu/files/.xkb/symbols/rocket index a206a9a..a206a9a 100644 --- a/.xkb/symbols/rocket +++ b/guix/kolwynia/home/bdunahu/files/.xkb/symbols/rocket diff --git a/guix/kolwynia/home/bdunahu/packages.scm b/guix/kolwynia/home/bdunahu/packages.scm new file mode 100644 index 0000000..7d0e510 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/packages.scm @@ -0,0 +1,221 @@ +;;; Copyright © 2025,2026 bdunahu <bdunahu@operationnull.com> +(define-module (kolwynia home bdunahu packages) + #:use-module (gnu) + #:use-module (gnu system) + #:use-module (guix packages) + #:use-module (tanelorn packages fonts) + #:use-module (tanelorn packages wm) + #:use-module (tanelorn packages engineering) + #:use-module (tanelorn packages emacs-xyz) + #:export (emacs + browser + pass + media + mail + tex + desktop + pdf + fonts + development + reverse-engineering + university + emulators + games)) + +;;; Commentary: +;;; Code: + +(use-package-modules + admin ;; netcat + algebra ;; bc + aspell ;; aspell, aspell-dict-en + assembly ;; nasm + base ;; make + chromium ;; ungoogled-chromium + clojure ;; clojure + commencement ;; gcc-toolchain + compton ;; picom + cpp ;; ccls + education ;; anki + emacs-build ;; emacs-dash + emacs ;; emacs-next + emacs-xyz ;; emacs-emms, etc. + emulators ;; mupen64plus*, bsnes, mgba + engineering ;; radare2, iaito + fonts ;; font-terminus, font-openmoji + fontutils ;; fontconfig + freedesktop ;; xdg-utils + games ;; nethack + gdb ;; gdb + gimp ;; gimp-next + gnome ;; brightnessctl + gnupg ;; gnupg, pinentry-emacs + graphviz ;; graphviz + haskell-xyz ;; pandoc + image ;; flameshot + imagemagick ;; imagemagick + image-viewers ;; feh, nsxiv + libreoffice ;; libreoffice + librewolf ;; librewolf + linux ;; tlp, alsa-plugins + lisp ;; sbcl + luanti ;; luanti + machine-learning ;; llama-cpp + mail ;; offlineimap + password-utils ;; pass-otp, password-store + pdf ;; xpdf, pdfgrep, zathura, zathura-pdf-mupdf + photo ;; perl-image-exiftool + pkg-config ;; pkg-config + pulseaudio ;; pavucontrol, pulseaudio, + python ;; python + python-xyz ;; python-lsp-server + rsync ;; rsync + texlive ;; texlive, texlive-biber + tex ;; texlive-dvipng + tor-browsers ;; torbrowser + video ;; ffmpeg, mpv, yt-dlp + virtualization ;; qemu + web ;; jq + xdisorg ;; xdotool, xrdb, wmctrl + xorg) ;; xf86-input-libinput, xf86-video-fbdev, xinit... + + + +(define emacs + (list emacs-next + pinentry-emacs + ;; + emacs-atomic-chrome + emacs-cider + emacs-clojure-mode + emacs-dash + emacs-denote + emacs-denote-journal + emacs-elpher + emacs-emms + emacs-exwm + emacs-f + emacs-gptel + emacs-guix + emacs-hydra + emacs-jeison + emacs-lua-mode + emacs-paredit + emacs-pinentry + emacs-rainbow-delimiters + emacs-rainbow-mode + emacs-s + emacs-slime + emacs-vterm + emacs-yasnippet + ;; + aspell ;for ispell + aspell-dict-en ; + wmctrl ;for exwm + perl-image-exiftool ;for emms + ccls ;for eglot + python-lsp-server ; + llama-cpp)) ;for emacs-gptel + +(define browser + (list torbrowser + ungoogled-chromium + librewolf)) + +(define pass + (list gnupg + pass-otp + password-store)) + +(define media + (list feh + ffmpeg + flameshot + gimp + imagemagick + mpv + nsxiv + pandoc + yt-dlp)) + +(define mail + (list offlineimap3)) + +(define tex + (list texlive + texlive-biber + texlive-dvipng + texlive-pgfgantt + texlive-libertinus)) + +(define desktop + (list alsa-plugins + eww/x11 + pavucontrol + picom + pulseaudio + setxkbmap + xdg-utils + xf86-input-libinput + xf86-video-fbdev + xinit + xinput + xkbcomp + xorg-server + xrandr + xrdb + xset + xss-lock)) + +(define pdf + (list pdfgrep + xpdf ;pdftotext + zathura + zathura-pdf-mupdf)) + +(define fonts + (list fontconfig + font-iosevka + font-medieval-sharp + font-openmoji + font-runa-mono + font-terminus + font-libertinus)) + +(define development + (list bc + cl-asdf + clojure + clojure-tools + gcc-toolchain + gdb + gnu-make + pkg-config + python + jq + netcat + sbcl)) + +(define reverse-engineering + (list nasm + iaito + radare2)) + +(define university + (list anki + graphviz + libreoffice + qemu)) + +(define emulators + (list bsnes + dolphin-emu + mgba + mupen64plus-ui-console + mupen64plus-video-glide64mk2)) + +(define games + (list crawl-tiles + luanti)) + +;;; packages.scm ends here diff --git a/guix/kolwynia/home/bdunahu/ssh.scm b/guix/kolwynia/home/bdunahu/ssh.scm new file mode 100644 index 0000000..5c137b2 --- /dev/null +++ b/guix/kolwynia/home/bdunahu/ssh.scm @@ -0,0 +1,43 @@ +;;; Copyright © 2026 bdunahu <bdunahu@operationnull.com> +(define-module (kolwynia home bdunahu ssh) + #:use-module (gnu home services ssh) + #:export (garmr + heimdallr + nott + surt + codeberg)) + +;;; Commentary: +;;; Code: + +(define garmr + (openssh-host (name "garmr") + (host-name "localhost") + (user "root"))) + +(define heimdallr + (openssh-host (name "heimdallr") + (host-name "operationnull.com") + (user "root"))) + +(define nott + (openssh-host (name "nott") + (host-name "localhost") + (user "bdunahu") + (port 2222) + (extra-content " UserKnownHostsFile=/dev/null + StrictHostKeyChecking=no +"))) + +(define surt + (openssh-host (name "surt") + (host-name "192.168.1.250") + (user "root"))) + +(define codeberg + (openssh-host (name "codeberg.org") + (host-name "codeberg.org") + (user "git") + (identity-file "~/.ssh/codeberg"))) + +;;; ssh.scm ends here diff --git a/guix/kolwynia/os/garmr.scm b/guix/kolwynia/os/garmr.scm new file mode 100644 index 0000000..ad6cace --- /dev/null +++ b/guix/kolwynia/os/garmr.scm @@ -0,0 +1,61 @@ +(define-module (kolwynia os garmr) + #:use-module (gnu) + #:use-module (gnu packages) + #:use-module (gnu packages linux) + #:use-module (gnu packages gnome) + #:use-module (gnu packages networking) + #:use-module (gnu services) + #:use-module (gnu services guix) + #:use-module (gnu services pm) + #:use-module (guix gexp) + #:use-module (kolwynia os ymir) + #:use-module ((kolwynia os garmr file-systems) + #:prefix fs:) + #:use-module ((kolwynia os ymir packages) + #:prefix pkg:) + #:use-module ((kolwynia os ymir users) + #:prefix users:) + #:use-module (kolwynia home bdunahu)) + +;;; Commentary: +;;; +;;; garmr is a corebooted and fully-libre laptop +;;; +;;; Code: + +(operating-system + (inherit ymir) + (host-name "garmr") + + (packages (cons* brightnessctl tlp pkg:ymir-packages)) + + (services + (cons* + ;; laptop power management + (service tlp-service-type + (tlp-configuration + (cpu-scaling-governor-on-ac (list "powersave")) + (cpu-scaling-governor-on-bat (list "powersave")) + (energy-perf-policy-on-ac "powersave") + (energy-perf-policy-on-bat "powersave") + (pcie-aspm-on-ac "powersave") + (pcie-aspm-on-bat "powersave") + (sched-powersave-on-bat? #t) + (sched-powersave-on-ac? #t) + (sata-linkpwr-on-ac "min_power") + (sata-linkpwr-on-bat "min_power") + (start-charge-thresh-bat0 60) + (stop-charge-thresh-bat0 80))) + (service thermald-service-type) + (simple-service 'network-manager-applet + profile-service-type + (list network-manager-applet)) + (service guix-home-service-type + `((,users:bdunahu-str ,bdunahu))) + + (operating-system-user-services ymir))) + + (mapped-devices fs:%mapped-devices) + (file-systems fs:%file-systems)) + +;;; garmr.scm ends here diff --git a/guix/kolwynia/os/garmr/file-systems.scm b/guix/kolwynia/os/garmr/file-systems.scm new file mode 100644 index 0000000..352d1f2 --- /dev/null +++ b/guix/kolwynia/os/garmr/file-systems.scm @@ -0,0 +1,39 @@ +;;; Copyright © 2025 bdunahu <bdunahu@operationnull.com> +(define-module (kolwynia os garmr file-systems) + #:use-module (gnu system mapped-devices) + #:use-module (gnu system file-systems) + #:export (%mapped-devices %file-systems)) + +;;; Commentary: +;;; +;;; filesystems for garmr +;;; +;;; Code: + +(define %mapped-devices + (list (mapped-device + (source (uuid "671c8094-c8cd-47f9-8332-25513f16917b")) + (target "hidden") + (type luks-device-mapping)))) + +(define %file-systems + (cons* (file-system + (mount-point "/boot/efi") + (device (uuid + "1A7A-026F" + 'fat32)) + (type "vfat")) + (file-system + (mount-point "/home") + (device "/dev/mapper/hidden") + (type "ext4") + (dependencies %mapped-devices)) + (file-system + (mount-point "/") + (device (uuid + "0a0b9520-308f-4072-a62b-b91ffacdc5b0" + 'ext4)) + (type "ext4")) + %base-file-systems)) + +;;; file-systems.scm ends here diff --git a/guix/kolwynia/os/ymir.scm b/guix/kolwynia/os/ymir.scm new file mode 100644 index 0000000..bba1b3b --- /dev/null +++ b/guix/kolwynia/os/ymir.scm @@ -0,0 +1,117 @@ +;;; Copyright © 2025 bdunahu <bdunahu@operationnull.com> +(define-module (kolwynia os ymir) + #:use-module ((kolwynia os ymir users) + #:prefix users:) + #:use-module ((kolwynia os ymir packages) + #:prefix pkg:) + #:use-module (gnu) + #:use-module (gnu services desktop) + #:use-module (gnu system) + #:use-module (gnu packages suckless) + #:export (ymir)) + +;;; Commentary: +;;; +;;; ymir defines a default system configuration +;;; +;;; Code: + +(use-service-modules audio admin avahi base + dbus desktop file-sharing + networking sound ssh xorg) + +;;; generates a temporary file to notify a keyboard was plugged. +(define %keyboard-udev-rule + (udev-rule + "90-keyboard-hotplug.rules" + (string-append "ATTR{idVendor}==\"04b4\", ATTR{idProduct}==\"0510\", ACTION==\"add\", RUN+=\"/run/current-system/profile/bin/touch /tmp/keyboard_plugged\" RUN+=\"/run/current-system/profile/bin/chown " users:bdunahu-str " /tmp/keyboard_plugged\""))) + +(define ymir + (operating-system + (host-name "ymir") + (locale "en_US.utf8") + (timezone + (if #f + "America/New_York" + "America/Denver")) + (keyboard-layout + (keyboard-layout "us" + #:options '("ctrl:hyper_capscontrol"))) + (kernel-arguments + (delete "quiet" + %default-kernel-arguments)) + + (users (cons* users:bdunahu + %base-user-accounts)) + + (bootloader (bootloader-configuration + (bootloader grub-efi-bootloader) + (targets (list "/boot/efi")) + (timeout 1) + (keyboard-layout keyboard-layout))) + + (packages pkg:ymir-packages) + (services + `( + ;; so that non-root users in the wheel group can + ;; perform administrative tasks (similar to "sudo"). + ,polkit-wheel-service + ;; The global fontconfig cache directory can sometimes contain + ;; stale entries, possibly referencing fonts that have been GC'd, + ;; so mount it read-only. + ,fontconfig-file-system-service + + ,(service network-manager-service-type) + ,(service wpa-supplicant-service-type) ; needed by NetworkManager + ,(service modem-manager-service-type) + ,(service usb-modeswitch-service-type) + + ;; The D-Bus clique. + ,(service avahi-service-type) + ,(service udisks-service-type) + ,(service upower-service-type) + ,(service accountsservice-service-type) + ,(service cups-pk-helper-service-type) + ,(service colord-service-type) + ,(service geoclue-service-type) + ,(service polkit-service-type) + ,(service elogind-service-type + (elogind-configuration + (handle-power-key 'hibernate))) + ,(service dbus-root-service-type) + + ,(service ntp-service-type) + + ;; openssh + ,(service openssh-service-type + (openssh-configuration + (x11-forwarding? #t) + (permit-root-login 'prohibit-password) + (password-authentication? #f))) + + ;; xorg + ,(service screen-locker-service-type + (screen-locker-configuration + (name "slock") + (program (file-append slock "/bin/slock")))) + ,(service x11-socket-directory-service-type) + ,(udev-rules-service 'keyboard-hotplug %keyboard-udev-rule) + + ;; audio + ,(service pulseaudio-service-type) + ,(service alsa-service-type) + + ;; TODO: don't do this expensive operation; just copy file. + ;; ,(simple-service 'add-extra-hosts + ;; hosts-service-type + ;; (map + ;; (lambda (x) + ;; (host "0.0.0.0" x)) + ;; (read-hosts "/home/bdunahu/.config/guix/assets/blocklist.txt"))) + + ,@%base-services)) + + ;; OVERRIDE + (file-systems '()))) + +;;; ymir.scm ends here diff --git a/guix/kolwynia/os/ymir/packages.scm b/guix/kolwynia/os/ymir/packages.scm new file mode 100644 index 0000000..9331b10 --- /dev/null +++ b/guix/kolwynia/os/ymir/packages.scm @@ -0,0 +1,106 @@ +;;; Copyright © 2025 bdunahu <bdunahu@operationnull.com> +(define-module (kolwynia os ymir packages) + #:use-module (gnu) + #:use-module (gnu system) + #:use-module (guix packages) + #:export (ymir-packages-utils + ymir-packages-linux + ymir-packages-interactive + ymir-packages-networking + ymir-packages)) + +;;; Commentary: +;;; Code: + +(use-package-modules + admin + bash + compression + cryptsetup + curl + databases + firmware + gawk + guile + guile-xyz + less + linux + man + networking + nss + pciutils + rust-apps + screen + texinfo + text-editors + version-control + vim + wget) + +(define ymir-packages-utils + (list bash + bzip2 + coreutils + curl + diffutils + e2fsprogs + findutils + gawk + grep + guile-3.0-latest + gzip + lzip + man-pages + patch + procps + psmisc + recutils + screen + sed + shadow + tar + unzip + which + xz + zip + zstd)) + +(define ymir-packages-linux + (list cryptsetup + eudev + kmod + pciutils + usbutils + util-linux+udev)) + +(define ymir-packages-interactive + (list git + guile-colorized + guile-readline + info-reader + kbd + less + man-db + mg + ripgrep + sudo + sysstat + vim)) + +(define ymir-packages-networking + (list inetutils + iproute + isc-dhcp + iw + macchanger + nss-certs + wget + wireless-tools)) + +(define ymir-packages + (append ymir-packages-interactive + ymir-packages-linux + ymir-packages-networking + ymir-packages-utils)) + +;;; packages.scm ends here diff --git a/guix/kolwynia/os/ymir/users.scm b/guix/kolwynia/os/ymir/users.scm new file mode 100644 index 0000000..a577998 --- /dev/null +++ b/guix/kolwynia/os/ymir/users.scm @@ -0,0 +1,28 @@ +;;; Copyright © 2025 bdunahu <bdunahu@operationnull.com> +(define-module (kolwynia os ymir users) + #:use-module (gnu system accounts) + #:use-module (kolwynia utils) + #:export (bdunahu-str bdunahu)) + +;;; Commentary: +;;; +;;; provides the bdunahu user configuration +;;; +;;; Code: + +(define bdunahu-str "bdunahu") +(define bdunahu + (user-account + (name bdunahu-str) + (comment bdunahu-str) + (group "users") + (home-directory (string-append "/home/" bdunahu-str)) + (supplementary-groups + (cons* "audio" + "dialout" + "netdev" + "video" + "wheel" + (garmr?* "kvm"))))) + +;;; users.scm ends here diff --git a/guix/kolwynia/utils.scm b/guix/kolwynia/utils.scm new file mode 100644 index 0000000..990cef1 --- /dev/null +++ b/guix/kolwynia/utils.scm @@ -0,0 +1,14 @@ +;;; Copyright © 2025 bdunahu <bdunahu@operationnull.com> +(define-module (kolwynia utils) + #:export (garmr?*)) + +;;; Commentary: +;;; provides various utility functions +;;; Code: + +(define (garmr?* . thing) + (if (equal? (gethostname) "garmr") + thing + '())) + +;;; utils.scm ends here diff --git a/screenshots/desktop.png b/screenshots/desktop.png Binary files differnew file mode 100644 index 0000000..96cc344 --- /dev/null +++ b/screenshots/desktop.png |
