(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 '(("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") ("rm" . "rm -i") ("suspend" . "sudo loginctl suspend") ("rig-shell" . "sudo 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 '( ("BROWSER" . "icecat") ("VISUAL" . "emacsclient") ("EDITOR" . "emacsclient") ("NETHACKOPTIONS" . "@$XDG_CONFIG_HOME/nethack/config") ("PATH" . "$HOME/.local/bin:$PATH") ("ZATHURA_PLUGINS_PATH" . "$HOME/.guix-home/profile/lib/zathura") )))) (simple-service 'gdbrc home-files-service-type `((".gdbinit" ,(plain-file "gdbinit" "set disassembly-flavor intel")) ("./.radare2rc" ,(plain-file "radare2rc" "e bin.relocs.apply=true")))) (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 "ivaldi") (host-name "192.168.1.250") (user "root")) (openssh-host (name "heimdallr") (host-name "operationnull.com") (user "root")) (openssh-host (name "exploit") (host-name "localhost") (user "dean") (port 2222)))))) (service home-xdg-user-directories-service-type (home-xdg-user-directories-configuration (desktop "$HOME/dl") (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"))))))))))