;; This is a sample Guix Home configuration which can help setup your ;; home directory in the same declarative manner as Guix System. ;; For more information, see the Home Configuration section of the manual. (define-module (guix-home-config) #:use-module (gnu home) #:use-module (gnu home services) #:use-module (gnu home services shells) #:use-module (gnu services) #:use-module (gnu system shadow) #:use-module (gnu packages) #:use-module (gnu home services gnupg) #:use-module (gnu packages gnupg) #:use-module (guix gexp) #:use-module (guix sets) #:use-module (gnu home services sway) #:use-module (gnu packages wm) #:use-module (gnu home services sound) #:use-module (gnu services dbus) #:use-module (gnu system keyboard) #:use-module (gnu home services guix) #:use-module (guix channels) #:use-module (gnu packages glib) #:use-module (gnu packages terminals) #:use-module (gnu packages xdisorg) #:use-module (gnu home services desktop) #:use-module (gnu home services ssh) #:use-module (gnu home services dotfiles)) (define home-config (home-environment (packages (append (map specification->package '("xorg-server-xwayland" "font-google-noto" "font-google-noto-emoji" "font-sarasa-gothic" "flatpak" "xdg-desktop-portal" "xdg-desktop-portal-gtk" "xdg-desktop-portal-wlr" "xdg-utils" ;; For "xdg-open, etc "xdg-dbus-proxy" "shared-mime-info" "adwaita-icon-theme" "hicolor-icon-theme" "icecat" "fuzzel" "wl-clipboard" "mako" "foot" "network-manager-applet" "password-store" "pass-otp" "passff-host" "mpv" "mpv-mpris" "yt-dlp" "playerctl" "gstreamer" "gst-plugins-base" "gst-plugins-good" "gst-plugins-bad" "gst-plugins-ugly" "gst-libav" "alsa-utils" "pavucontrol" "gimp" "zathura" "zathura-pdf-mupdf" "ghostscript" "syncthing-gtk" "stow" "emacs-pgtk" "emacs-guix" "emacs-rainbow-delimiters" "emacs-pinentry" "emacs-pass" "emacs-bluetooth" "emacs-enwc" "emacs-emms" "emacs-compile-angel" "pinentry-fuzzel" )))) (services (append (list ;; Uncomment the shell you wish to use for your user: ;(service home-fish-service-type) (service home-bash-service-type) (simple-service 'custom-bash-service home-bash-service-type (home-bash-extension (variables '(("PS1" . "\\u \\wλ "))) (aliases '(("dbus-sway" . "exec dbus-run-session -- sway"))) (bash-profile `(,(local-file "/home/mitch/.guix-home/profile/etc/profile.d/flatpak.sh"))))) (service home-dotfiles-service-type (home-dotfiles-configuration (layout 'stow) (directories '("./files")))) (service home-gpg-agent-service-type (home-gpg-agent-configuration (pinentry-program (file-append pinentry-fuzzel "/bin/pinentry-fuzzel")))) (service home-ssh-agent-service-type) (service home-openssh-service-type (home-openssh-configuration (add-keys-to-agent "yes"))) (service home-files-service-type `((".guile" ,%default-dotguile) (".Xdefaults" ,%default-xdefaults))) (service home-dbus-service-type) (service home-pipewire-service-type) (service home-xdg-configuration-files-service-type `(("gdb/gdbinit" ,%default-gdbinit) ("nano/nanorc" ,%default-nanorc))) (simple-service 'extra-packages-service home-channels-service-type (list (channel (name 'nonguix) (url "https://gitlab.com/nonguix/nonguix") (branch "master") (introduction (make-channel-introduction "897c1a470da759236cc11798f4e0a5f7d4d59fbc" (openpgp-fingerprint "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))) (channel (name 'mitch) (url "git://git.omnifarious.net/channel.git")))) (service home-redshift-service-type (home-redshift-configuration (location-provider 'manual) (latitude 45.27) ;northern hemisphere (longitude -66.06))) ;west of Greenwich (service home-unclutter-service-type) (service home-sway-service-type (sway-configuration (inputs (list (sway-input (identifier "type:keyboard") (layout (keyboard-layout "us" "dvorak" #:options '("ctrl:nocaps")))) (sway-input (identifier "type:touchpad") (tap #t) (disable-while-typing #t) (extra-content '("middle_emulation enabled" "tap enabled" "dwt enabled" "natural_scroll enabled"))))) (variables `((mod . "Mod4") ; string (term ; file-append . ,(file-append foot "/bin/foot")) (menu . ,(file-append fuzzel "/bin/fuzzel")) (up . "p") (down . "n") (left . "b") (right . "f"))) (gestures '((swipe:3:left . "workspace prev") (swipe:3:right . "workspace next"))) (startup-programs `("emacs" "flatpak run com.github.wwmm.easyeffects --service-mode" "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway" ,#~(string-append #$swayidle "/bin/swayidle -w \\\n " ;; 300: lock screen. "timeout 300 '" #$swaylock "/bin/swaylock " "--indicator-radius 75 \\\n " "-i /home/mitch/Pictures/Backgrounds/lain-dining-room.jpg \\\n " "-f -c 000000' \\\n " ;; 600: lock + screen off. "timeout 600 '" #$sway "/bin/swaymsg \"output * power off\"' \\\n " ;; Resume + sleep. "resume '" #$sway "/bin/swaymsg \"output * power on\"' \\\n " "before-sleep '" #$swaylock "/bin/swaylock -f -c 000000'"))) (keybindings `(($mod+return . "exec $term") ($mod+grave . "exec $menu") (XF86AudioMute . "exec pactl set-sink-mute @DEFAULT_SINK@ toggle") (XF86AudioLowerVolume . "exec pactl set-sink-volume @DEFAULT_SINK@ -5%") (XF86AudioRaiseVolume . "exec pactl set-sink-volume @DEFAULT_SINK@ +5%") (XF86AudioPlay . "exec playerctl play-pause") (XF86AudioNext . "exec playerctl next") (XF86AudioPrev . "exec playerctl previous") (XF86MonBrightnessDown . "exec brightnessctl set 10%-") (XF86MonBrightnessUp . "exec brightnessctl set 10%+") ($mod+apostrophe . "kill") ($mod+Shift+e . "exit") ($mod+Shift+c . "reload") ($mod+$left . "focus left") ($mod+$down . "focus down") ($mod+$up . "focus up") ($mod+$right . "focus right") ($mod+Left . "focus left") ($mod+Down . "focus down") ($mod+Up . "focus up") ($mod+Right . "focus right") ($mod+Shift+$left . "move left") ($mod+Shift+$down . "move down") ($mod+Shift+$up . "move up") ($mod+Shift+$right . "move right") ($mod+Shift+Left . "move left") ($mod+Shift+Down . "move down") ($mod+Shift+Up . "move up") ($mod+Shift+Right . "move right") ($mod+1 . "workspace number 1") ($mod+2 . "workspace number 2") ($mod+3 . "workspace number 3") ($mod+4 . "workspace number 4") ($mod+5 . "workspace number 5") ($mod+6 . "workspace number 6") ($mod+7 . "workspace number 7") ($mod+8 . "workspace number 8") ($mod+9 . "workspace number 9") ($mod+0 . "workspace number 10") ($mod+Shift+1 . "move container to workspace number 1") ($mod+Shift+2 . "move container to workspace number 2") ($mod+Shift+3 . "move container to workspace number 3") ($mod+Shift+4 . "move container to workspace number 4") ($mod+Shift+5 . "move container to workspace number 5") ($mod+Shift+6 . "move container to workspace number 6") ($mod+Shift+7 . "move container to workspace number 7") ($mod+Shift+8 . "move container to workspace number 8") ($mod+Shift+9 . "move container to workspace number 9") ($mod+Shift+0 . "move container to workspace number 10") ($mod+w . "layout tabbed") ($mod+e . "layout toggle split") ($mod+F11 . "fullscreen") ($mod+Shift+space . "floating toggle"))) (bar (sway-bar (position 'top) (hidden-state 'hide) (status-command (program-file "sway-bar-status" #~(begin (use-modules (ice-9 format) (srfi srfi-19)) (let loop () (let* ((date (date->string (current-date) "~d/~m/~Y (~a) • ~H:~M:~S")) (percent (read (open-input-file "/sys/class/power_supply/BAT1/capacity")))) (close-port (open-input-file "/sys/class/power_supply/BAT1/capacity")) (format #t "~a~%~!" (string-concatenate (list date " | " (number->string percent) "%"))) (sleep 1) (loop)))))))) (outputs (list (sway-output (identifier '*) (background "/home/mitch/Pictures/Backgrounds/lain-dining-room.jpg")))) (extra-content '("for_window [title=\"Icecat — Sharing Indicator\"] kill" "for_window [title=\".* - mpv$\"] floating enable, sticky enable" "for_window [app_id=\"Icecat\"] inhibit_idle fullscreen" "floating_modifier $mod"))))) %base-home-services)))) home-config