summaryrefslogtreecommitdiff
path: root/home.scm
diff options
context:
space:
mode:
Diffstat (limited to 'home.scm')
-rw-r--r--home.scm309
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