;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Provides a set of my preferred ;; ;; programs and services for any ;; ;; system ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-module (modules 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 shells) #:use-module (gnu home services shepherd) #:use-module (gnu home services ssh) #:use-module (gnu home services xdg) #:use-module (gnu system) #:use-module (guix gexp) #:use-module (modules emacs) #:export (bd-base-system-packages bd-base-system-services bd-base-home-services)) (use-service-modules base file-sharing networking ssh) (use-package-modules gnupg mail password-utils bittorrent pdf video cryptsetup curl emacs version-control web admin databases rsync package-management texlive compression vim) (define comm (list gnupg notmuch offlineimap3 pass-otp password-store pinentry transmission xpdf ; pdftotext yt-dlp )) (define dev (list cryptsetup curl emacs git jq netcat recutils rsync stow texlive unzip vim )) (define bd-base-system-packages (append! comm dev %base-packages )) (define bd-base-system-services `(,(service openssh-service-type (openssh-configuration (x11-forwarding? #t) (permit-root-login 'prohibit-password) (password-authentication? #f))) ,(service tor-service-type) ,(service transmission-daemon-service-type) ,@%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 "/bin/pinentry")) (max-cache-ttl 43200) (ssh-support? #t))) (service home-bash-service-type (home-bash-configuration (aliases '(("cp" . "cp -i") ("grep" . "grep --color=auto") ("guix-rcfg" . "sudo guix system -L ${HOME}/.config/guix/ reconfigure ${HOME}/.config/guix/${HOSTNAME}.scm") ("ll" . "ls -l") ("ls" . "ls -p --color=auto") ("mkd" . "mkdir -pv") ("mv" . "mv -i") ("rm" . "rm -i") ("suspend" . "sudo bash -c 'echo mem > /sys/power/state'") ("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" . "icecat") ("VISUAL" . "emacsclient") ("EDITOR" . "emacsclient") ("PATH" . "$HOME/.local/bin:$PATH") )))) (service home-openssh-service-type (home-openssh-configuration (hosts (list (openssh-host (name "hati") (host-name "192.168.1.76") (user "bdunahu")) (openssh-host (name "vali") (host-name "192.168.1.64") (user "bdunahu")) (openssh-host (name "ivaldi") (host-name "192.168.1.98") (user "bdunahu")) (openssh-host (name "heimdallr") (host-name "operationnull.com") (user "root")))))) (service home-xdg-user-directories-service-type (home-xdg-user-directories-configuration (desktop "$HOME") (documents "$HOME/dc") (download "$HOME/dl") (music "$HOME/ik/music") (pictures "$HOME/md/ig") (publicshare "$HOME") (templates "$HOME") (videos "$HOME/md/vi"))) (service home-xdg-mime-applications-service-type (home-xdg-mime-applications-configuration (default '((application/x-bittorrent . torrent.desktop) (x-scheme-handler/magnet . torrent.desktop))) (desktop-entries (list (xdg-desktop-entry (file "torrent") (name "Torrent") (type 'application) (config '((exec . "transmission-remote -a %u"))))))))))