(define-module (snamellit common) #:use-module (gnu home) #:use-module (gnu packages) #:use-module (gnu services) #:use-module (gnu services desktop) #:use-module (gnu services shepherd) #:use-module (gnu home services) #:use-module (gnu home services desktop) #:use-module (gnu home services fontutils) #:use-module (gnu home services guix) #:use-module (gnu home services mcron) #:use-module (gnu home services shells) #:use-module (gnu home services shepherd) #:use-module (gnu home services sound) #:use-module (gnu home services xdg) #:use-module (gnu packages algebra) #:use-module (gnu packages aspell) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages cmake) #:use-module (gnu packages curl) #:use-module (gnu packages commencement) #:use-module (gnu packages compression) #:use-module (gnu packages containers) #:use-module (gnu packages emacs) #:use-module (gnu packages fonts) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gimp) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gnupg) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) #:use-module (gnu packages haskell-apps) #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages image) #:use-module (gnu packages image-viewers) #:use-module (gnu packages librewolf) #:use-module (gnu packages linux) #:use-module (gnu packages lsof) #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) #:use-module (gnu packages node) #:use-module (gnu packages package-management) #:use-module (gnu packages password-utils) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages rsync) #:use-module (gnu packages rust-apps) #:use-module (gnu packages samba) #:use-module (gnu packages shells) #:use-module (gnu packages shellutils) #:use-module (gnu packages sync) #:use-module (gnu packages terminals) #:use-module (gnu packages texlive) #:use-module (gnu packages tmux) #:use-module (gnu packages uml) #:use-module (gnu packages version-control) #:use-module (gnu packages video) #:use-module (gnu packages vim) #:use-module (gnu packages web) #:use-module (gnu packages wm) #:use-module (gnu packages xdisorg) #:use-module (guix channels) #:use-module (guix gexp) #:use-module (snamellit packages atuin-bin) #:use-module (snamellit packages tools) #:use-module (snamellit packages xca) #:use-module (snamellit packages lazygit-bin) #:use-module (snamellit packages tea-bin) #:use-module (snamellit packages gh-bin) #:use-module (snamellit packages guile-xyz) #:use-module (srfi srfi-1) #:use-module (ice-9 format) ) (define-public %snam-terminal-packages (list cifs-utils gnupg pinentry tmux direnv ripgrep starship atuin-bin unzip fish fzf watchexec password-store pass-otp bc rsync curl yq lazygit-bin gh-bin tea-bin lsof git gnu-make glibc-locales gcc-toolchain cmake autoconf automake pkg-config guile-3.0 guile-colorized guile-readline ncurses neovim emacs-next node-lts ; emacs startup relies on node being present pandoc ; for org-mode export and markdown plantuml ; for org-mode plantuml export texlive ; for org-latex support vault ; hashicorp vault )) (define-public %snam-desktop-packages (list ;; desktop support flatpak flatpak-xdg-utils gsettings-desktop-schemas xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-gnome xdg-utils sway wmenu swaylock-effects swaybg swayidle fuzzel wlogout mako grimshot wlsunset wl-clipboard bluez ;; strictly speaking terminal but only useful on desktop? blueman nm-tray alacritty gimp flameshot mpv yt-dlp vlc dex xca pavucontrol gnome-keyring keepassxc nextcloud-client foot kitty librewolf guile-g-golf guile-cairo gtk libadwaita gobject-introspection zlib ; ubiquitous used so file ;; emacs support emacs aspell aspell-dict-en aspell-dict-fr aspell-dict-nl aspell-dict-de ;; some additional fonts font-dejavu font-fira-code font-hack font-iosevka font-inconsolata font-lato font-liberation font-google-noto-emoji ) ) (define-public %snam-terminal-services (list (service home-bash-service-type (home-bash-configuration (aliases '(("ec" . "emacsclient -a=''") ("gst" . "git status") ("gca" . "git commit -a") ("gcl" . "git clone") ("gco" . "git checkout") ("gd" . "git diff") ("gl" . "git pull") ("gp" . "git push") ("ggpnp". "git pull && git push") ("grb" . "git rebase") ("grba" . "git rebase --abort") ("grbc" . "git rebase --continue") ("sway" . "sway --unsupported-gpu"))) (bashrc (list (plain-file "helpers" (format #f "~{~a~&~}" (list "export PATH=$PATH:$HOME/.local/bin" "eval \"$(direnv hook bash)\"" "eval \"$(atuin init bash)\"" "if [[ \"$ALACRITTY_WINDOW_ID\" != \"\" ]]; then tmux; fi" ))))))) ;; (simple-service 'variant-packages-service home-channels-service-type ; extend default (service home-channels-service-type ; replace default home-channels-service (list (channel (name 'guix) (url (channel-url %default-guix-channel)) (branch "master") (introduction (make-channel-introduction "9edb3f66fd807b096b48283debdcddccfea34bad" (openpgp-fingerprint "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))) (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 'snamguix) (url "https://forge.snamellit.com/pti/snamguix") (branch "main")) )) (service home-mcron-service-type) )) ;; add folders at the end of a PATH like string, removing duplicates but ;; keeping the order of first occurrence (define (add-folders-to-path path folders) (if (null? folders) (string-join (delete-duplicates (string-split path #\:)) ":") (add-folders-to-path (string-append path ":" (car folders)) (cdr folders)))) (define-public %snam-desktop-services (list (service home-dbus-service-type) (service home-pipewire-service-type) (simple-service 'my-xdg-data-dirs home-environment-variables-service-type `( ;; sort hidden (dot) files first in ls listings ("LC_COLLATE" . "C") ;; Emacs is our editor ("VISUAL" . "emacsclient") ("EDITOR" . "emacsclient") ;; Make sure Flatpak apps are visible ("XDG_DATA_DIRS" . ,(add-folders-to-path (or (getenv "XDG_DATA_DIRS") "") '("/var/lib/flatpak/exports/share" "/home/pti/.local/share/flatpak/exports/share" "/home/pti/.guix-home/profile/share"))) ;; 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") )) (simple-service 'additional-fonts-service home-fontconfig-service-type (list '(alias (family "monospace") (prefer (family "Fira Code") (family "Liberation Mono") (family "Google Noto Emoji") )))) ) )