;; 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. ;; See also, for some tips: ;; https://github.com/alezost/shepherd-config/blob/master/init.scm (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 pm) #:use-module (gnu home services shepherd) #: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 (gnu services shepherd) #:use-module (guix channels) #:use-module (guix gexp) #:use-module ((nongnu packages messaging) #:select (signal-desktop)) #:use-module ((nongnu packages steam-client) #:select (steam)) #:use-module (tw home) #:use-module (tw theme)) (define pim-packages (list newsboat vdirsyncer khal khard aerc lynx)) ; 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")))) ;; These cron jobs are annoying because they pop up a password prompt every time they run. ;; (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")))) (simple-service 'mail-files home-files-service-type `(;; The file from git main is newer than the one bundled with the ;; packaged neomutt version and contains a few fixes. (".local/bin/mutt_oauth2.py" ,(local-file "files/neomutt/contrib/oauth2/mutt_oauth2.py" #:recursive? #t)))))) (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 transmission-remote-gtk ;; Games steam ; see also: steam-nvidia ;; 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* ;; This can't be a `service' as that would remove the 'guix channel. (simple-service 'nonfree-channels home-channels-service-type (list ;; Nonguix is also needed system-wide for non-free drivers! (channel (name 'nonguix) (url "https://gitlab.com/nonguix/nonguix") ;; Enable signature verification: (introduction (make-channel-introduction "897c1a470da759236cc11798f4e0a5f7d4d59fbc" (openpgp-fingerprint "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))) (channel (name 'guix-gaming-games) (url "https://gitlab.com/guix-gaming-channels/games") ;; Enable signature verification: (introduction (make-channel-introduction "c23d64f1b8cc086659f8781b27ab6c7314c5cca5" (openpgp-fingerprint "50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F")))))) ;; Batsignal: battery level notifications. (service home-batsignal-service-type (home-batsignal-configuration (batteries '("BAT0")))) ;; 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 (simple-service 'laptop-gui-services home-shepherd-service-type (list (shepherd-service (documentation "Blueman applet; provides a GUI for connection to bluetooth devices.") (provision '(blueman-applet)) (start #~(make-forkexec-constructor (list #$(file-append blueman "/bin/blueman-applet")))) (stop #~(make-kill-destructor))) (polybar-service "eDP-1") (polybar-service "HDMI-1-1") (shepherd-service (documentation "Set up X displays on login.") (provision '(xorg-setup)) (one-shot? #t) (start #~(lambda _ (system* #$(file-append numlockx "/bin/numlockx") "on") ;; Turn off the monitors if there is no input for 10 minutes. (system* #$(file-append xset "/bin/xset") "dpms" "600" "600" "600") (system* #$(file-append xrandr "/bin/xrandr") "--output" "eDP-1" "--auto" ;; Don't use --auto for this monitor. That ;; configures it at 60 Hz, which causes ;; it to briefly turn off every few minutes. "--output" "HDMI-1-1" "--mode" "2560x1440" "--rate" "120.00" "--right-of" "eDP-1") ;; Set the desktop background picture. Hopefully doing this just after ;; xrandr works and sets it for both screens. (system* #$(file-append hsetroot "/bin/hsetroot") "-cover" (string-append (getenv "HOME") "/pictures/Backgrounds/greece/IMG_20181201_104748_DRO.jpg"))))))) (openssh-service #t) (append pim-services %interactive-services %common-services))))) %lap-home