;; This "home-environment" file can be passed to 'guix home reconfigure' ;; to reproduce the content of your profile. This is "symbolic": it only ;; specifies package names. To reproduce the exact same profile, you also ;; need to capture the channels being used, as returned by "guix describe". ;; See the "Replicating Guix" section in the manual. (define-module (tw home lap) #:use-module (gnu home) #:use-module (gnu home services) #:use-module (gnu home services desktop) #:use-module (gnu home services guix) #:use-module (gnu home services mail) #:use-module (gnu home services mcron) #:use-module (gnu home services pm) #:use-module (gnu packages android) #:use-module (gnu packages bittorrent) #:use-module (gnu packages calendar) #:use-module (gnu packages dav) #:use-module (gnu packages finance) #:use-module (gnu packages gnome) #:use-module (gnu packages mail) #:use-module (gnu packages messaging) #:use-module (gnu packages music) #:use-module (gnu packages networking) #:use-module (gnu packages syndication) #:use-module (gnu packages web-browsers) #:use-module (gnu packages xorg) #:use-module (gnu packages xdisorg) #:use-module (gnu services) #:use-module (guix gexp) #:use-module ((nongnu packages messaging) #:select (signal-desktop)) #:use-module ((nongnu packages nvidia) #:select (nvidia-system-monitor)) #:use-module ((nongnu packages steam-client) #:select (steam-nvidia)) #:use-module (tw home) #:use-module (tw packages mail) #:use-module (tw packages scanner) #:use-module (tw services desktop) #:use-module (tw services git) #:use-module (tw services gnupg) #:use-module (tw services restic) #:use-module (tw theme)) (define pim-packages (list newsboat vdirsyncer khal khard aerc lynx mutt_oauth2.py)) ; lynx for HTML mail (define pim-services (list (simple-service 'pim-config home-xdg-configuration-files-service-type `(("khal/config" ,(local-file "files/khal.conf")) ("khard/khard.conf" ,(local-file "files/khard.conf")) ("aerc/accounts.conf" ,(local-file "files/aerc/accounts.conf")) ("aerc/aerc.conf" ,(local-file "files/aerc/aerc.conf")) ("aerc/binds.conf" ,(local-file "files/aerc/binds.conf")) ("aerc/filters" ,(local-file "files/aerc/filters" #:recursive? #t)) ("aerc/stylesets" ,(local-file "files/aerc/stylesets" #:recursive? #t)) ("newsboat/config" ,(local-file "files/newsboat.conf")) ("newsboat/config.catppuccin" ,catppuccin-newsboat) ("vdirsyncer/config" ,(local-file "files/vdirsyncer.conf")))) ;; To avoid popping up a password prompt every time these run, gpg-agent ;; needs a long-enough default-cache-ttl. (simple-service 'pim-cronjobs home-mcron-service-type (list #~(job "15 */4 * * *" ; every four hours at HH:15 (string-append #$(file-append vdirsyncer "/bin/vdirsyncer") " metasync")) #~(job "0,30 * * * *" ; every half hour (string-append #$(file-append vdirsyncer "/bin/vdirsyncer") " sync")))) (service home-msmtp-service-type (home-msmtp-configuration (defaults (msmtp-configuration (tls? #t) (tls-starttls? #f) ; use "real" TLS instead (log-file "-"))) ; log to stdout (accounts (list (msmtp-account (name "mythic") (configuration (msmtp-configuration (host "smtp-auth.mythic-beasts.com") (user "timo@twilken.net") (password-eval "pass www/mythic-beasts/email/timo | head -1")))))) (default-account "mythic"))))) (define (restic-pass-key key) (restic-password-source (type 'pass) (name key))) (define (restic-vin.wg-repo path) (restic-rest-repository (username "timo") (password (restic-pass-key "computers/vin/restic-server/timo")) (hostname "vin.wg") (port 8181) (path path))) (define-public %lap-home (home-environment (packages ;; These packages will show up in the home profile, under ~/.guix-home/profile. (cons* ;; CLI tools adb fastboot beets cmus ;; Graphical applications blueman electrum nheko signal-desktop simple-scan/airscan transmission-remote-gtk ;; Games steam-nvidia ; use "steam" for non-NVIDIA Steam client nvidia-system-monitor ; Qt; installs "qnvsm" binary, but no .desktop file ;; Games are installed in ~/.guix-profile instead, to make updates of the ;; home environment faster. ;; 0ad flightgear freeciv simutrans/pak128 warzone2100 widelands pioneer (append %interactive-packages pim-packages %common-packages))) ;; To search for available home services, run 'guix home search KEYWORD'. (services (cons* ;; Batsignal: battery level notifications. (service home-batsignal-service-type (home-batsignal-configuration (batteries '("BAT0")))) ;; For `nvidia-service-monitor'. (simple-service 'qnvsm-config home-xdg-configuration-files-service-type `(("congard/NVSM.conf" ,(local-file "files/NVSM.conf")))) (service home-restic-backup-service-type (list (restic-scheduled-backup (schedule #~"0 */2 * * *") (paths '(;; important user data "~/documents" "~/src" "~/.local/share/zsh/history" ;; secrets "~/.local/share/ssh-keys" "~/.local/share/gnupg" "~/.config/cern-ca-bundle.crt" "~/.config/grid-personal-cert.pem" "~/.config/grid-personal-key.pem" "~/.config/syncthing" ;; games "~/savegames" "~/.config/simutrans" "~/.local/share/0ad" "~/.local/share/warzone2100" "~/.local/share/widelands" "~/.local/share/guix-sandbox-home/.local/share/Colossal Order/Cities_Skylines" "~/.local/share/guix-sandbox-home/.local/share/Surviving Mars" "~/.local/share/ksp-overlay/upper" "~/.pioneer")) (repo (restic-vin.wg-repo "timo/laptop")) (password (restic-pass-key "computers/vin/restic-repos/timo-laptop"))) (restic-scheduled-backup (schedule #~"10 */2 * * *") (paths '("~/audiobooks" "~/music" "~/pictures" "~/sync" "~/videos/youtube/.yt-dlp" "~/videos/youtube/.config")) (repo (restic-vin.wg-repo "timo/sync")) (password (restic-pass-key "computers/vin/restic-repos/timo-sync"))))) ;; Redshift: make the screen turn redder at night. (service home-redshift-service-type (home-redshift-configuration ;; See info '(guix)Desktop Home Services'. (location-provider 'manual) ;; Approximate location (latitude 46.0) (longitude 6.0) ;; (location-provider 'geoclue2) ; TODO: currently waits forever for a location -- not sure why geoclue doesn't work ;; (daytime-temperature 6500) ; default 6500 ;; (nighttime-temperature 4500) ; default 4500 (daytime-brightness 1.0) (nighttime-brightness 0.7) (extra-content "fade=0"))) ; with fade=1, restarting redshift causes flickering for a few secs (service home-blueman-service-type) (service home-desktop-layout-service-type (home-desktop-layout-configuration (desktop-background "~/pictures/Backgrounds/greece/IMG_20181201_104748_DRO.jpg") (battery-name "BAT0") (ac-adapter-name "AC") (monitors (list (home-monitor-configuration (name "eDP-1-1") (xrandr-options '("--auto"))) (home-monitor-configuration (name "HDMI-0") ;; Don't use --auto for this monitor. That configures it at 60 ;; Hz, which causes it to briefly turn off every few minutes. (xrandr-options '("--mode" "2560x1440" "--rate" "144.01" "--right-of" "eDP-1-1"))))))) ;; On my private machine, I want to use my private PGP key normally, and ;; my work key only for work repositories. (service home-git-service-type (home-git-configuration (default-email "git@twilken.net") (default-signing-key "53EC3C06856883DD92355BC22FC78504681F69B0") (identities (list (home-git-identity (name "cern") (root-directory "~/src/alice") (email "timo.wilken@cern.ch") (signing-key "C2249BBE5E8761C943A0CFA1B7B3914BF63ACD7C")))))) (openssh-service #t) (service home-gnupg-service-type (home-gnupg-configuration (default-key "53EC3C06856883DD92355BC22FC78504681F69B0") (gui-pinentry? #t))) (append pim-services (interactive-services #:nvidia-driver? #t) %common-services))))) %lap-home