(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 base) #:use-module (gnu packages curl) #:use-module (gnu packages commencement) #:use-module (gnu packages compression) #:use-module (gnu packages containers) #:use-module (gnu packages docker) #: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-xyz) #:use-module (gnu packages image) #:use-module (gnu packages image-viewers) #: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 pulseaudio) #:use-module (gnu packages rsync) #:use-module (gnu packages rust-apps) #:use-module (gnu packages samba) #:use-module (gnu packages shellutils) #: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 (nongnu packages chrome) #:use-module (nongnu packages mozilla) #:use-module (nongnu packages k8s) #:use-module (nongnu packages nvidia) #: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 (snamellit packages fzf) #:use-module (srfi srfi-1) #:use-module (ice-9 format) ;; #:use-module (nebula packages fonts) ) (define-public %snam-terminal-packages (list kubectl docker docker-compose cifs-utils gnupg pinentry go-github-com-junegunn-fzf-0.54.3 tmux direnv ripgrep unzip watchexec password-store bc texlive rsync curl yq lazygit-bin gh-bin tea-bin lsof git gnu-make glibc-locales gcc-toolchain 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 )) (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 foot kitty firefox google-chrome-stable guile-g-golf guile-cairo gtk libadwaita gobject-introspection ;; 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 ; fira-mono-nerd-font ; fira-code-nerd-font ; jetbrains-mono-nerd-font ; meslo-nerd-font ; hack-nerd-font ) ) (define-public %snam-terminal-services (list (service home-bash-service-type (home-bash-configuration (aliases '(("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"))) (bashrc (list (plain-file "helpers" (format #f "~{~a~&~}" (list "eval \"$(direnv hook bash)\"" "eval \"$(starship init bash)\"" "source `guix locate fzf | grep bash_completion | awk -e '{print $2}'`" ))))))) (service home-zsh-service-type (home-zsh-configuration)) (simple-service 'variant-packages-service home-channels-service-type (list (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 'guix-science-nonfree) (url "https://codeberg.org/guix-science/guix-science-nonfree.git") (introduction (make-channel-introduction "58661b110325fd5d9b40e6f0177cc486a615817e" (openpgp-fingerprint "CA4F 8CF4 37D7 478F DA05 5FD4 4213 7701 1A37 8446")))) (channel (name 'snamguix) (url "https://forge.snamellit.com/pti/snamguix") (branch "main")) (channel (name 'nebula) (url "https://git.sr.ht/~apoorv569/nebula") (branch "master") ;; Enable signature verification: (introduction (make-channel-introduction "2f1be757b40f78456220823b71aace5277c5f33d" (openpgp-fingerprint "53B4 8418 D76A 3EF1 1BCC 92A8 4FDB 05CF 5D67 6283")))) (channel (name 'benoitj) (url "https://git.sr.ht/~benoit/my-guix-channel") (branch "main") (introduction (make-channel-introduction "37444eebf69f83f4accaa2c69562209d94f4e57a" (openpgp-fingerprint "C3B6 ED99 DF87 B208 0C79 C8AC F86B 0628 26D4 C20A")))))) (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 `(("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"))))) (simple-service 'additional-fonts-service home-fontconfig-service-type (list '(alias (family "monospace") (prefer (family "FiraCode Nerd Font") (family "Liberation Mono") (family "Google Noto Emoji") )))) ) )