From 73af89d935df5a8166114c9257f9f247f29850bf Mon Sep 17 00:00:00 2001 From: jdlugosz963 Date: Fri, 26 Apr 2024 18:21:56 +0200 Subject: Migrate from stumpwm to sway and from manifests to home-services. --- guix/jd/home/services/desktop.scm | 178 +++++++++++++++++++++++++++++++------- guix/jd/home/services/emacs.scm | 112 ++++++++++++++++++++++++ 2 files changed, 258 insertions(+), 32 deletions(-) create mode 100644 guix/jd/home/services/emacs.scm (limited to 'guix/jd/home') diff --git a/guix/jd/home/services/desktop.scm b/guix/jd/home/services/desktop.scm index bb4916e..c53377f 100644 --- a/guix/jd/home/services/desktop.scm +++ b/guix/jd/home/services/desktop.scm @@ -4,51 +4,165 @@ #:use-module (gnu packages networking) #:use-module (gnu packages syncthing) #:use-module (gnu packages gnome) + #:use-module (gnu packages gnupg) #:use-module (gnu services) #:use-module (gnu services configuration) #:use-module (gnu home services) #:use-module (gnu home services shepherd) #:use-module (gnu home services desktop) + #:use-module (gnu home services sound) + #:use-module (gnu home services xdg) + #:use-module (gnu home services gnupg) #:use-module (guix gexp)) (define (desktop-profile-service config) - (specifications->packages '("udiskie" + (specifications->packages '(;; sway + "swayfx" + "swaylock" + "swayidle" + "waybar" + "fuzzel" + "foot" + "mako" + "wl-clipboard" + "wlsunset" + "grimshot" + + "udiskie" + ;; rest + "qutebrowser" + "ungoogled-chromium" + "firefox" + "tor-client" + "signal-desktop" + + "pulsemixer" + "pavucontrol" + "alsa-utils" + + "virt-manager" + + "flatpak" + "redshift" + "fontmanager" + + "polybar" + + "blueman" + + "xdg-utils" + "xdg-dbus-proxy" + "xdg-desktop-portal-gtk" + "xdg-desktop-portal-wlr" + "glib:bin" + "gtk+:bin" + "gnome-keyring" + "shared-mime-info" + "libnotify" + "dconf" + "hicolor-icon-theme" + + "dunst" + + "gimp" + "inkscape" + + "mpv" + "youtube-dl" + + "pamixer" + "playerctl" + "scrot" + "brightnessctl" + "upower" + "tlp" + "feh" + "alacritty" + + "curl" + "wget" + "zip" + "unzip" + "qrencode" + "trash-cli" + "pandoc" + "password-store" + "oath-toolkit" + ;; "pinentry" + + "syncthing" "syncthing-gtk" - "network-manager-applet"))) - -(define (desktop-shepherd-services config) - (list (shepherd-service - (documentation "Udiskie daemon with tray.") - (provision '(udiskie)) - (start #~(make-forkexec-constructor - (list #$(file-append udiskie - "/bin/udiskie") - "-t"))) - (stop #~(make-kill-destructor))) - - (shepherd-service - (documentation "Syncthing daemon with tray.") - (provision '(syncthing-gtk)) - (start #~(make-forkexec-constructor - (list #$(file-append syncthing-gtk - "/bin/syncthing-gtk") - "-m"))) - (stop #~(make-kill-destructor))) - - (shepherd-service - (documentation "NetworkManager tray.") - (provision '(nm-applet)) - (start #~(make-forkexec-constructor - (list #$(file-append network-manager-applet - "/bin/nm-applet")))) - (stop #~(make-kill-destructor))))) + + "xmodmap" + "xrandr" + "arandr" + "xss-lock" + "libinput" + "xinput" + "xprop" + "rlwrap" + + "nheko" + "quassel"))) + +(define (desktop-environment-variables-service config) + `(("GTK_THEME" . "Adwaita:dark") + ("VISUAL" . "emacsclient") + ("EDITOR" . "emacsclient") + ("PATH" . "$HOME/.bin:$HOME/.npm-global/bin:$PATH") + ("XDG_DATA_DIRS" . "$XDG_DATA_DIRS:$HOME/.local/share/flatpak/exports/share") + ("SBCL_HOME" . "/run/current-system/profile/lib/sbcl/") + + ;; Set Wayland-specific environment variables (taken from RDE) + ("XDG_CURRENT_DESKTOP" . "sway") + ("XDG_SESSION_TYPE" . "wayland") + ("RTC_USE_PIPEWIRE" . "true") + ("SDL_VIDEODRIVER" . "wayland") + ("MOZ_ENABLE_WAYLAND" . "1") + ("CLUTTER_BACKEND" . "wayland") + ("ELM_ENGINE" . "wayland_egl") + ("ECORE_EVAS_ENGINE" . "wayland-egl") + ("QT_QPA_PLATFORM" . "wayland-egl"))) + +(define (desktop-xdg-mime-applications-service config) + (home-xdg-mime-applications-configuration + (default '((inode/directory . emacsclient.desktop) + (application/pdf . emacsclient.desktop) + (x-scheme-handler/http= . firefox.desktop) + (x-scheme-handler/https= . firefox.desktop))) + ;; (desktop-entries + ;; (list (xdg-desktop-entry + ;; (file "emacs-desktop") + ;; (name "Emacs") + ;; (type 'application) + ;; (config + ;; '((exec . "emacsclient -a emacs %u")))))) + )) + +(define (desktop-gpg-agent-service config) + (home-gpg-agent-configuration + (pinentry-program + (file-append pinentry-gnome3 "/bin/pinentry-gnome3")) + (ssh-support? #t) + (default-cache-ttl 28800) + (max-cache-ttl 28800) + (default-cache-ttl-ssh 28800) + (max-cache-ttl-ssh 28800))) + (define-public home-desktop-service-type - (service-type (name 'home-udiskie) + (service-type (name 'home-desktop) (extensions (list (service-extension home-profile-service-type desktop-profile-service) - (service-extension home-shepherd-service-type - desktop-shepherd-services))) + (service-extension home-environment-variables-service-type + desktop-environment-variables-service) + (service-extension home-pipewire-service-type + (lambda (_) (home-pipewire-configuration))) + (service-extension home-xdg-mime-applications-service-type + desktop-xdg-mime-applications-service) + (service-extension home-gpg-agent-service-type + desktop-gpg-agent-service) + )) (default-value #f) (description "Runs desktop services."))) diff --git a/guix/jd/home/services/emacs.scm b/guix/jd/home/services/emacs.scm new file mode 100644 index 0000000..5eb74e8 --- /dev/null +++ b/guix/jd/home/services/emacs.scm @@ -0,0 +1,112 @@ +(define-module (jd home services emacs) + #:use-module (jd packages emacs) + + #:use-module (gnu packages) + #:use-module (gnu packages emacs) + + #:use-module (gnu services) + #:use-module (gnu services configuration) + #:use-module (gnu home services) + #:use-module (gnu home services shepherd) + #:use-module (gnu home services desktop) + + #:use-module (guix gexp) + #:use-module (guix packages) + #:use-module (guix profiles)) + +(define-configuration home-emacs-service-configuration + (emacs-package + (package emacs-next-pgtk) + "Emacs packages")) + +(define (emacs-profile-service config) + (append (list emacs-org-roam-ui + emacs-lsp-mode! + (home-emacs-service-configuration-emacs-package + config)) + (specifications->packages '("emacs-sway" + "emacs-shackle" + "emacs-ytdl" + "emacs-desktop-environment" + "emacs-exwm" + "emacs-perspective" + "emacs-mu4e-alert" + "mu" + "isync" + "emacs-htmlize" + "emacs-bluetooth" + "emacs-nov-el" + "emacs-password-store" + "emacs-mastodon" + "emacs-elfeed" + "emacs-pdf-tools" + "emacs-emms" + "emacs-all-the-icons-dired" + "emacs-vterm" + "emacs-restclient" + "emacs-magit" + "emacs-neotree" + "emacs-projectile" + "emacs-company-box" + "emacs-company" + "emacs-docker" + "emacs-yaml-mode" + "emacs-web-mode" + "emacs-flycheck" + "emacs-tide" + "emacs-cider" + "emacs-typescript-mode" + "emacs-pyvenv" + "emacs-geiser-guile" + "emacs-racket-mode" + "emacs-geiser-racket" + "emacs-geiser" + "emacs-sly" + "emacs-rainbow-delimiters" + "emacs-paredit" + ;; "emacs-lsp-ivy" + ;; "emacs-lsp-mode" + "emacs-org-pomodoro" + "emacs-org-roam" + "emacs-org-roam-bibtex" + "emacs-org-superstar" + "emacs-org" + "emacs-ox-pandoc" + "emacs-beacon" + "emacs-all-the-icons" + "emacs-which-key" + "emacs-counsel" + "emacs-ivy" + "emacs-hl-todo" + "emacs-diminish" + "emacs-solarized-theme" + "font-terminus" + "emacs-undo-tree" + "emacs-hydra" + "emacs-multiple-cursors" + "emacs-general" + "emacs-guix" + "emacs-doom-modeline" + "emacs-use-package")))) + +(define (emacs-shepherd-services config) + (list (shepherd-service + (documentation "Emacs daemon.") + (provision '(emacs)) + (start #~(make-forkexec-constructor + (list #$(file-append (home-emacs-service-configuration-emacs-package + config) + "/bin/emacs") + "--fg-daemon"))) + (stop #~(make-kill-destructor))))) + +(define-public home-emacs-service-type + (service-type (name 'home-emacs) + (extensions (list (service-extension home-profile-service-type + emacs-profile-service) + (service-extension home-shepherd-service-type + emacs-shepherd-services) + )) + (default-value (home-emacs-service-configuration)) + (description "Runs emacs daemon service."))) + -- cgit v1.2.3