diff --git a/snamellit/common.scm b/snamellit/common.scm new file mode 100644 index 0000000..95703cf --- /dev/null +++ b/snamellit/common.scm @@ -0,0 +1,280 @@ +(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 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) + ) + + +(define-public %snam-terminal-packages + (list + kubectl + docker + docker-compose + cifs-utils + gnupg + pinentry + + starship + 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 + + bluez ;; strictly speaking terminal but only useful on desktop? + blueman + + xeyes + nm-tray + alacritty + gimp + flameshot + mpv + yt-dlp + vlc + feh + i3status + rofi + dex + xclip + xca + pavucontrol + gnome-keyring + keepassxc + + foot + kitty + + 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 + ) + ) + + +(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 + (zshrc + (list + (local-file "../../../base/zshrc" "zshrc"))) + (zlogin + (list + (local-file "../../../base/zlogin" "zlogin"))) + (zprofile + (list + (local-file "../../../base/zprofile" "zprofile"))))) + (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://github.com/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")))) + (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 + (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") + )))) + ) + )