From f11ce3f772dc6ae10d187ec1a3d9f1801a56ff80 Mon Sep 17 00:00:00 2001 From: "Collin J. Doering" Date: Sat, 26 Mar 2022 11:26:42 -0400 Subject: [PATCH] Move manifest definition within channel directory When running 'guix pull' with a foreign channel, the specification->package function does not appear to be able to lookup packages that are not part of the guix official channel. * .guix/rekahsoft/guix-config/home.scm: Include manifest/s used for home-configuration directly * home-manifest.scm: Continue to include a manifest file that can be used for convenience with guix commands (as there is no way to use `-e|--install-from-expression` with manifests at this time) --- .guix/rekahsoft/guix-config/home.scm | 364 ++++++++++++++++++++++++++- channels.scm | 23 +- home-manifest.scm | 358 +------------------------- 3 files changed, 382 insertions(+), 363 deletions(-) diff --git a/.guix/rekahsoft/guix-config/home.scm b/.guix/rekahsoft/guix-config/home.scm index 0c41d1c..91c34ee 100644 --- a/.guix/rekahsoft/guix-config/home.scm +++ b/.guix/rekahsoft/guix-config/home.scm @@ -13,9 +13,369 @@ #:use-module (guix gexp) #:use-module (gnu home services shells) #:use-module (gnu home services desktop) - #:export (%home)) + #:use-module (nongnu packages mozilla) + #:use-module (rekahsoft-gnu packages haskell-apps) + #:use-module (rekahsoft-gnu packages emacs-xyz) + #:use-module (rekahsoft-gnu packages python-xyz) + #:use-module (rekahsoft-gnu packages shellutils) + #:use-module (rekahsoft-gnu packages spice) + #:use-module (rekahsoft-gnu packages terraform) + #:export (%home %home-manifest)) -(include "../../../home-manifest.scm") +(define transform--emacs-helm-mu + (options->transformation + '((with-commit . "emacs-helm-mu=392a8c11ab27b625d9f863cdde14e09893401b15")))) + +(define transform--emacs-org-super-agenda + (options->transformation + '((without-tests . "emacs-org-super-agenda")))) + +(define-public %emacs-manifest + (concatenate-manifests + (list + (packages->manifest + (list + ;; Temporary: emacs-helm-mu is broken but has been fixed upstream + (transform--emacs-helm-mu + (specification->package "emacs-helm-mu")) + + ;; Temporary: emacs-org-super-agenda tests stall and do not complete due to interactive prompt + (transform--emacs-org-super-agenda + (specification->package "emacs-org-super-agenda")) + (transform--emacs-org-super-agenda ;; org-ql propigates org-super-agenda + (specification->package "emacs-org-ql")) + + ;; Packages from the rekahsoft-guix channel + emacs-ace-mc + emacs-hamlet-mode + emacs-helm-rg + emacs-helm-tramp + emacs-helm-unicode + emacs-highlight-indent-guides + emacs-highlight-parentheses + emacs-ibuffer-vc + emacs-intel-hex-mode + emacs-ix + emacs-mu4e-dashboard + emacs-mu4e-maildirs-extension + emacs-org-html-theme-darksun + emacs-org-html-themes + emacs-org-roam-extensions + emacs-org-roam-ui + persp-projectile ;; TODO: this packages' variable is not correctly prefixed with 'emacs-' upsteam + emacs-quack + emacs-rcirc-notify + emacs-rebox2 + emacs-vimish-fold + emacs-eval-in-repl + emacs-org-babel-eval-in-repl + + ;; Use more up-to-date treemacs and treemacs-extra (as well as required dependencies) + emacs-treemacs-20201225 + emacs-treemacs-extra-20201225 + emacs-all-the-icons-20201225 + emacs-doom-themes-20201225 + + ;; Use more up-to-date ace-link + emacs-ace-link-2021-01-1)) + (specifications->manifest + '("aspell" + "aspell-dict-en" + "emacs" + "emacs-ace-jump-mode" + "emacs-ace-window" + "emacs-ag" + "emacs-all-the-icons-dired" + "emacs-auctex" + "emacs-auto-complete" + "emacs-auto-yasnippet" + "emacs-dashboard" + "emacs-dired-hacks" + "emacs-docker" + "emacs-docker-tramp" + "emacs-doom-modeline" + "emacs-elpher" + "emacs-emmet-mode" + "emacs-emms" + "emacs-expand-region" + "emacs-exwm" + "emacs-fill-column-indicator" + "emacs-flycheck" + "emacs-flycheck-ledger" + "emacs-geiser" + "emacs-gnuplot" + "emacs-go-mode" + "emacs-god-mode" + "emacs-graphql-mode" + "emacs-graphviz-dot-mode" + "emacs-guix" + "emacs-haskell-mode" + "emacs-helm" + "emacs-helm-ag" + "emacs-helm-c-yasnippet" + "emacs-helm-descbinds" + "emacs-helm-exwm" + "emacs-helm-gtags" + "emacs-helm-ls-git" + "emacs-helm-org" + "emacs-helm-pass" + "emacs-helm-projectile" + "emacs-helm-swoop" + "emacs-highlight-sexp" + "emacs-htmlize" + "emacs-hydra" + "emacs-ibuffer-projectile" + "emacs-isearch+" + "emacs-ivy" + "emacs-json-mode" + "emacs-jsonnet-mode" + "emacs-ledger-mode" + "emacs-lua-mode" + "emacs-magit" + "emacs-forge" + "emacs-markdown-mode" + "emacs-mmm-mode" + "emacs-mu4e-alert" + "emacs-mu4e-conversation" + "emacs-multi-term" + "emacs-multiple-cursors" + "emacs-no-littering" + "emacs-org" + "emacs-org-download" + "emacs-org-mind-map" + "emacs-org-noter" + "emacs-org-roam" + "emacs-org-web-tools" + "emacs-orgit" + "emacs-ob-async" + "emacs-paredit" + "emacs-pdf-tools" + "emacs-persp-mode" + "emacs-php-mode" + "emacs-plantuml-mode" + "emacs-pretty-mode" + "emacs-projectile" + "emacs-racket-mode" + "emacs-rainbow-delimiters" + "emacs-rainbow-identifiers" + "emacs-rainbow-mode" + "emacs-realgud" + "emacs-rec-mode" + "emacs-restclient" + "emacs-ripgrep" + "emacs-rust-mode" + "emacs-scribble-mode" + "emacs-slime" + "emacs-string-inflection" + "emacs-swiper" + "emacs-terraform-mode" + "emacs-tramp" + "emacs-undo-tree" + "emacs-use-package" + "emacs-vterm" + "emacs-yaml-mode" + "emacs-yasnippet" + "emacs-yasnippet-snippets" + "gnuplot" + "isync" + "mu" + "plantuml" + + ; "emacs-ac-geiser" ;; TODO: hash mismatch; possible non-determinism + ;"emacs-helm-mu" ;; TODO: broken, but fixed upstream + + "emacs-all-the-icons-ibuffer" ;; TODO: this package exists in both guix and rekahsoft-guix channels, resulting in a confict warning + ))))) + +(define-public %shell-manifest + (concatenate-manifests + (list + (packages->manifest + (list + ;; TODO: this was added upstream (as "go-github-com-junegunn-fzf") but is not as complete as my existing package + fzf + ;; Remaining packages from the rekahsoft-guix channel + spaceship-prompt)) + (specifications->manifest + '("bat" + "exa" + "ripgrep" + "sh-z" + "zsh-autosuggestions" + "zsh-syntax-highlighting"))))) + +(define-public %xorg-manifest + (specifications->manifest + '("mesa" + "setxkbmap" + "xdg-utils" + "xf86-input-libinput" + "xf86-video-fbdev" + "xinit" + "xinput" + "xkbcomp" + "xkeyboard-config" + "xlsfonts" + "xorg-server" + "xrandr" + "autorandr" + "xrdb" + "xsetroot"))) + +(define-public %wayland-manifest + (specifications->manifest + '("grim" + "hicolor-icon-theme" ;; Required for wofi icon theme + "slurp" + "sway" + "wayland" + "wofi"))) + +;; Manifest containing x programs (that cannot natively run with wayland). +(define-public %xorg-apps-manifest + (concatenate-manifests + (list + (packages->manifest + (list + ;; Packages from nonguix channel + firefox + + ;; Packages from rekahsoft-guix channel + virt-viewer-11)) + (specifications->manifest + '("dunst" ;; <- May not need this; use something in emacs + "feh" + "pavucontrol" + "redshift" + "rofi" ;; <- Look into replacing in emacs + "rofi-pass" ;; <- This should be replacable in emacs with helm-pass + "i3lock" ;; required for i3lock-fancy + "i3lock-fancy" + "xmonad" + "xmobar" + "trayer-srg" ;; used in xmonad as system tray + "dmenu" + "unclutter" + "virt-manager" + "xautolock" + "xclip" + "zathura" + "zathura-djvu" + "zathura-pdf-poppler" + "zathura-ps"))))) + +;; Manifest containing Xorg and Wayland native compatible programs +(define-public %xorg-wayland-apps-manifest + (specifications->manifest + '("kitty" ;; <- May not need this and instead will use emacs-vterm + "alacritty" ;; <- ditto + "libnotify" ;; for notify-send + "network-manager-applet" + "numix-gtk-theme" + "adwaita-icon-theme"))) + +(define-public %guile-manifest + (specifications->manifest + '("guile" + "guile-charting" ;; guile-charting is required for 'guix size --map-file' + "guile-colorized" + "guile-hall" + "guile-readline"))) + +(define-public %misc-manifest + (concatenate-manifests + (list + (packages->manifest + (list + ;; Packages from rekahsoft-guix + awscliv2 + ledger-autosync + hledger-ui + terraform-provider-aws + terraform-wrapper-0.13)) + (specifications->manifest + '("ansible" + "alsa-utils" ;; for alsamixer + "aws-vault" + "beets" + "bmon" + "coreutils" + "curl" + "direnv" + "flatpak" + "xdg-desktop-portal" ;; improves user experience of flatpak + "font-dejavu" + "font-liberation" + "font-fira-code" ;; TODO: check if font is needed + "font-gnu-freefont" + "font-terminus" + "font-google-noto" + "git" + "git:send-email" + "git:subtree" + "glibc-locales" + "gnupg" + "graphviz" + "font-ghostscript" + "gwl" + "hledger" + "hledger-web" + "htop" + "jq" + "ledger" + "mpd" + "mpv" + "ncmpcpp" ;; <- This can be replaced by emacs-emms + "nextcloud-client" + "nmap" + "nss-certs" + "nyxt" + "openssh" + "gnupg" + "pinentry-gnome3" + "pass-otp" + "password-store" + "recutils" + "rhash" + "skopeo" + "texlive" + "tmux" + "ungoogled-chromium" + "util-linux" + "wget" + "youtube-dl" + + "kicad" + "kicad-templates" + "kicad-symbols" + "kicad-packages3d" + "kicad-footprints" + "kicad-doc" + + "gtkwave" + + ;; TODO: (packages I like but maybe should be project specific?) + ;; "avr-toolchain" (propigated inputs: "avrdude" "avr-binutils" "avr-gcc") + ;; "clojure" + ;; "lua" + ;; "chez" + ;; "coq" + + ;; TODO: (these probably should go in the system configuration) + ;; "bitlebee" + ))))) + +(define %home-manifest + (concatenate-manifests + (list + %emacs-manifest + %shell-manifest + %xorg-manifest + %wayland-manifest + %xorg-apps-manifest + %xorg-wayland-apps-manifest + %guile-manifest + %misc-manifest))) (define %home (home-environment diff --git a/channels.scm b/channels.scm index d31e784..951d88b 100644 --- a/channels.scm +++ b/channels.scm @@ -3,31 +3,42 @@ (url "https://git.savannah.gnu.org/git/guix.git") (branch "master") (commit - "101ba6490437334b65bed8d5f879ef8946847b2d") + "c51961b61f0142e8815be2c4137f907b6d889c26") (introduction (make-channel-introduction "9edb3f66fd807b096b48283debdcddccfea34bad" (openpgp-fingerprint "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))) + (channel + (name 'rekahsoft-guix) + (url "https://git.rekahsoft.ca/rekahsoft/rekahsoft-guix.git") + (branch "master") + (commit + "ef4a6e8c1da99bd3b4efef5de1bd8d26cc887e9d") + (introduction + (make-channel-introduction + "191cdaa0947657e0c85fe89ebbb8e7b1e7a8e0a4" + (openpgp-fingerprint + "F8D5 46F3 AF37 EF53 D1B6 48BE 7B4D EB93 212B 3022")))) (channel (name 'nonguix) (url "https://gitlab.com/nonguix/nonguix") (branch "master") (commit - "fea52adbc9356184bff51146c6515fad609baf77") + "81a651d3aa006e563385d7ff97f5ba5e5666f142") (introduction (make-channel-introduction "897c1a470da759236cc11798f4e0a5f7d4d59fbc" (openpgp-fingerprint "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))) (channel - (name 'rekahsoft-guix) - (url "https://git.rekahsoft.ca/rekahsoft/rekahsoft-guix.git") + (name 'rekahsoft-dotfiles) + (url "https://git.rekahsoft.ca/rekahsoft-public/dotfiles.git") (branch "master") (commit - "b72c13392a9ffab0dd52dcf9e30fb599e364a78e") + "e72345feac858bb0885ae7aa4edda09b1b2c7b1f") (introduction (make-channel-introduction - "191cdaa0947657e0c85fe89ebbb8e7b1e7a8e0a4" + "32b8ebec9a503b9796fda0a8ac3eb11eec744397" (openpgp-fingerprint "F8D5 46F3 AF37 EF53 D1B6 48BE 7B4D EB93 212B 3022"))))) diff --git a/home-manifest.scm b/home-manifest.scm index 25c7e31..deaa97e 100644 --- a/home-manifest.scm +++ b/home-manifest.scm @@ -1,355 +1,3 @@ -(use-modules - (gnu packages) - (guix profiles) - (guix transformations)) - -(define transform--emacs-helm-mu - (options->transformation - '((with-commit . "emacs-helm-mu=392a8c11ab27b625d9f863cdde14e09893401b15")))) - -(define transform--emacs-org-super-agenda - (options->transformation - '((without-tests . "emacs-org-super-agenda")))) - -(define %emacs-manifest - (concatenate-manifests - (list - (packages->manifest - (list - ;; Temporary: emacs-helm-mu is broken but has been fixed upstream - (transform--emacs-helm-mu - (specification->package "emacs-helm-mu")) - ;; Temporary: emacs-org-super-agenda tests stall and do not complete due to interactive prompt - (transform--emacs-org-super-agenda - (specification->package "emacs-org-super-agenda")) - (transform--emacs-org-super-agenda ;; org-ql propigates org-super-agenda - (specification->package "emacs-org-ql")))) - (specifications->manifest - '("aspell" - "aspell-dict-en" - "emacs" - "emacs-ace-jump-mode" - "emacs-ace-window" - "emacs-ag" - "emacs-all-the-icons-dired" - "emacs-auctex" - "emacs-auto-complete" - "emacs-auto-yasnippet" - "emacs-dashboard" - "emacs-dired-hacks" - "emacs-docker" - "emacs-docker-tramp" - "emacs-doom-modeline" - "emacs-elpher" - "emacs-emmet-mode" - "emacs-emms" - "emacs-expand-region" - "emacs-exwm" - "emacs-eval-in-repl" - "emacs-fill-column-indicator" - "emacs-flycheck" - "emacs-flycheck-ledger" - "emacs-geiser" - "emacs-gnuplot" - "emacs-go-mode" - "emacs-god-mode" - "emacs-graphql-mode" - "emacs-graphviz-dot-mode" - "emacs-guix" - "emacs-haskell-mode" - "emacs-helm" - "emacs-helm-ag" - "emacs-helm-c-yasnippet" - "emacs-helm-descbinds" - "emacs-helm-exwm" - "emacs-helm-gtags" - "emacs-helm-ls-git" - "emacs-helm-org" - "emacs-helm-pass" - "emacs-helm-projectile" - "emacs-helm-swoop" - "emacs-highlight-sexp" - "emacs-htmlize" - "emacs-hydra" - "emacs-ibuffer-projectile" - "emacs-isearch+" - "emacs-ivy" - "emacs-json-mode" - "emacs-jsonnet-mode" - "emacs-ledger-mode" - "emacs-lua-mode" - "emacs-magit" - "emacs-forge" - "emacs-markdown-mode" - "emacs-mmm-mode" - "emacs-mu4e-alert" - "emacs-mu4e-conversation" - "emacs-multi-term" - "emacs-multiple-cursors" - "emacs-no-littering" - "emacs-org" - "emacs-org-babel-eval-in-repl" - "emacs-org-download" - "emacs-org-mind-map" - "emacs-org-noter" - "emacs-org-roam" - "emacs-org-web-tools" - "emacs-orgit" - "emacs-ob-async" - "emacs-paredit" - "emacs-pdf-tools" - "emacs-persp-mode" - "emacs-php-mode" - "emacs-plantuml-mode" - "emacs-pretty-mode" - "emacs-projectile" - "emacs-racket-mode" - "emacs-rainbow-delimiters" - "emacs-rainbow-identifiers" - "emacs-rainbow-mode" - "emacs-realgud" - "emacs-rec-mode" - "emacs-restclient" - "emacs-ripgrep" - "emacs-rust-mode" - "emacs-scribble-mode" - "emacs-slime" - "emacs-string-inflection" - "emacs-swiper" - "emacs-terraform-mode" - "emacs-tramp" - "emacs-undo-tree" - "emacs-use-package" - "emacs-vterm" - "emacs-yaml-mode" - "emacs-yasnippet" - "emacs-yasnippet-snippets" - "gnuplot" - "isync" - "mu" - "plantuml" - - ; "emacs-ac-geiser" ;; TODO: hash mismatch; possible non-determinism - ;"emacs-helm-mu" ;; TODO: broken, but fixed upstream - - ;; - ;; Remaining packages from the rekahsoft-guix channel - - "emacs-ace-mc" - "emacs-all-the-icons-ibuffer" - "emacs-hamlet-mode" - "emacs-helm-rg" - "emacs-helm-tramp" - "emacs-helm-unicode" - "emacs-highlight-indent-guides" - "emacs-highlight-parentheses" - "emacs-ibuffer-vc" - "emacs-intel-hex-mode" - "emacs-ix" - "emacs-mu4e-dashboard" - "emacs-mu4e-maildirs-extension" - "emacs-org-html-theme-darksun" - "emacs-org-html-themes" - "emacs-org-roam-extensions" - "emacs-org-roam-ui" - "emacs-persp-projectile" - "emacs-quack" - "emacs-rcirc-notify" - "emacs-rebox2" - "emacs-vimish-fold" - - ;; Use more up-to-date treemacs and treemacs-extra (as well as required dependencies) - "emacs-treemacs-20201225" - "emacs-treemacs-extra-20201225" - "emacs-all-the-icons-20201225" - "emacs-doom-themes-20201225" - - ;; Use more up-to-date ace-link - "emacs-ace-link-2021-01-1"))))) - -(define %shell-manifest - (concatenate-manifests - (list - (packages->manifest - (list - ;; TODO: this was added upstream (as "go-github-com-junegunn-fzf") but is not as complete as my existing package - (@ (rekahsoft-gnu packages shellutils) fzf))) - (specifications->manifest - '("bat" - "exa" - "ripgrep" - "zsh-syntax-highlighting" - - ;; Remaining packages from the rekahsoft-guix channel - "sh-z" - "spaceship-prompt" - "zsh-autosuggestions"))))) - -(define %xorg-manifest - (specifications->manifest - '("mesa" - "setxkbmap" - "xdg-utils" - "xf86-input-libinput" - "xf86-video-fbdev" - "xinit" - "xinput" - "xkbcomp" - "xkeyboard-config" - "xlsfonts" - "xorg-server" - "xrandr" - "autorandr" - "xrdb" - "xsetroot"))) - -(define %wayland-manifest - (specifications->manifest - '("grim" - "hicolor-icon-theme" ;; Required for wofi icon theme - "slurp" - "sway" - "wayland" - "wofi"))) - -;; Manifest containing x programs (that cannot natively run with wayland). -(define %xorg-apps-manifest - (specifications->manifest - '("dunst" ;; <- May not need this; use something in emacs - "feh" - "pavucontrol" - "redshift" - "rofi" ;; <- Look into replacing in emacs - "rofi-pass" ;; <- This should be replacable in emacs with helm-pass - "firefox" ;; from nonguix - "i3lock-fancy" - "xmonad" - "xmobar" - "trayer-srg" ;; used in xmonad as system tray - "dmenu" - "unclutter" - "virt-manager" - "xautolock" - "xclip" - "zathura" - "zathura-djvu" - "zathura-pdf-poppler" - "zathura-ps" - - ;; "xbindkeys" <- should be able to depricate this - ;; "compton" <- this historyically caused issues with screen locking - - ;; - ;; Remaining packages from the rekahsoft-guix channel - "virt-viewer@11.0"))) - -;; Manifest containing Xorg and Wayland native compatible programs -(define %xorg-wayland-apps-manifest - (specifications->manifest - '("kitty" ;; <- May not need this and instead will use emacs-vterm - "alacritty" ;; <- ditto - "network-manager-applet" - "adwaita-icon-theme"))) - -(define %guile-manifest - (specifications->manifest - '("guile" - "guile-charting" ;; guile-charting is required for 'guix size --map-file' - "guile-colorized" - "guile-hall" - "guile-readline"))) - -(define %misc-manifest - (specifications->manifest - '("ansible" - "awscliv2" - "alsa-utils" ;; for alsamixer - "beets" - "bmon" - "coreutils" - "curl" - "direnv" - "flatpak" - "xdg-desktop-portal" ;; improves user experience of flatpak - "font-dejavu" - "font-liberation" - "font-fira-code" ;; TODO: check if font is needed - "font-gnu-freefont" - "font-terminus" - "font-google-noto" - "git" - "git:send-email" - "git:subtree" - "glibc-locales" - "gnupg" - "graphviz" - "font-ghostscript" - "gwl" - "hledger" - "htop" - "ledger" - "ledger-autosync" - "mpd" - "mpv" - "ncmpcpp" ;; <- This can be replaced by emacs-emms - "nextcloud-client" - "nmap" - "nss-certs" - "nyxt" - "openssh" - "gnupg" - "pinentry-gnome3" - "pass-otp" - "password-store" - "recutils" - "rhash" - "skopeo" - "texlive" - "tmux" - "ungoogled-chromium" - "util-linux" - "wget" - "youtube-dl" - - "kicad" - "kicad-templates" - "kicad-symbols" - "kicad-packages3d" - "kicad-footprints" - "kicad-doc" - - "gtkwave" - - ;; TODO: (packages I like but maybe should be project specific?) - ;; "avr-toolchain" (propigated inputs: "avrdude" "avr-binutils" "avr-gcc") - ;; "clojure" - ;; "lua" - ;; "chez" - ;; "coq" - - ;; TODO: (these probably should go in the system configuration) - ;; "bitlebee" - - ;; - ;; Remaining packages from the rekahsoft-guix channel - - "aws-vault" - "hledger-ui" - "hledger-web" - "terraform-provider-aws" - "terraform-wrapper"))) - -(define %home-manifest - (concatenate-manifests - (list - %emacs-manifest - %shell-manifest - %xorg-manifest - %wayland-manifest - %xorg-apps-manifest - %xorg-wayland-apps-manifest - %guile-manifest - %misc-manifest))) - -;; Return home-manifest so this file can be used by guix commands that accept manifest files -%home-manifest +;; Return home-manifest from dotfiles channel, so this file can be used by guix commands that +;; accept manifest files +(@ (rekahsoft guix-config home) %home-manifest)