diff options
| author | Mitch Taylor <mitch@mitchtaylor.xyz> | 2026-03-22 22:07:22 -0300 |
|---|---|---|
| committer | Mitch Taylor <mitch@mitchtaylor.xyz> | 2026-03-22 22:07:22 -0300 |
| commit | 04126e9fda050fa753ddc22511e3c3f8dc275f7a (patch) | |
| tree | 41d9f9276c1e09c1cb86f94133bdf90f041d1ed2 /home.scm | |
initial commit
Diffstat (limited to 'home.scm')
| -rw-r--r-- | home.scm | 309 |
1 files changed, 309 insertions, 0 deletions
diff --git a/home.scm b/home.scm new file mode 100644 index 0000000..d6d1d26 --- /dev/null +++ b/home.scm @@ -0,0 +1,309 @@ +;; 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 |
