;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Provides a set of my preferred ;; ;; programs and services for any ;; ;; system ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-module (base) #: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 packages) #:use-module (gnu packages gnupg) #:use-module (gnu services) #:use-module (gnu services base) #:use-module (gnu services file-sharing) #:use-module (gnu services networking) #:use-module (gnu services ssh) #:use-module (gnu system) #:use-module (guix gexp) #:export (bd-base-system-packages bd-base-system-services bd-base-home-services)) (define comm '( "aspell" "aspell-dict-en" "gnupg" "notmuch" "offlineimap3" "pass-otp" "password-store" "pinentry" "transmission" "xpdf" ; pdftotext "yt-dlp" )) (define dev '( "cryptsetup" "curl" "emacs" "git" "jq" "netcat" "recutils" "rsync" "sbcl" "stow" "texlive" "vim" )) (define emacs '( "emacs-all-the-icons" "emacs-all-the-icons-dired" "emacs-auctex" "emacs-consult" "emacs-ef-themes" "emacs-emms" "emacs-guix" "emacs-htmlize" "emacs-magit" "emacs-marginalia" "emacs-notmuch" "emacs-orderless" "emacs-org-roam" "emacs-paredit" "emacs-popper" "emacs-rainbow-delimiters" "emacs-rainbow-mode" "emacs-simple-httpd" "emacs-slime" "emacs-transmission" "emacs-vertico" "emacs-visual-fill-column" )) (define bd-base-system-packages `(,@(map specification->package (append! comm dev emacs )) ,@%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 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/modules/ 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 # add my scripts to path PATH=${HOME}/Personal/scripts:$PATH"))) (environment-variables '(("BROWSER" . "icecat"))))) (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") (download "$HOME/dl") (music "$HOME/media") (pictures "$HOME/media") (publicshare "$HOME") (templates "$HOME") (videos "$HOME/media"))) (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"))))))))))