dotfiles/guix/home.scm
Chris Cochrun fe1e6c695b adding a lot of guix things to better setup guix
A lot of these changes are for Guix not Nix, however, nix still works
on the laptop so I'm going to reset the changes on the desktop to this
commit so that Nix might work there for Camp.
2023-07-12 11:19:34 -05:00

484 lines
20 KiB
Scheme

;; This is my home environment
;;
;;
;;
;;
(define-module (home)
#:use-module (pkgs emacs-xyz)
#:use-module (pkgs tridactyl-native)
#:use-module (pkgs phinger-cursors-theme)
#:use-module (pkgs qt5ct-kde)
#:use-module (pkgs kdenlive)
#:use-module (home-services pipewire)
#:use-module (gnu home)
#:use-module (gnu home services)
#:use-module (gnu home services desktop)
#:use-module (gnu home services shells)
#:use-module (gnu home services xdg)
#:use-module (gnu home services gnupg)
#:use-module (gnu home services fontutils)
#:use-module (gnu packages)
#:use-module (gnu packages vim)
#:use-module (gnu packages rust-apps)
#:use-module (gnu packages video)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages kde)
#:use-module (gnu services)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix build-system emacs)
#:use-module ((guix licenses) #:prefix license:))
;; (define snazzy-theme
;; "A set of the Snazzy colors to be used in colorschemes"
;; '((base00 . "#282a36")
;; (base01 . "#34353e")
;; (base02 . "#43454f")
;; (base03 . "#78787e")
;; (base04 . "#a5a5a9")
;; (base05 . "#e2e4e5")
;; (base05 . "#eff0eb")
;; (base06 . "#f1f1f0")
;; (base06 . "#ff5c57")
;; (base09 . "#ff9f43")
;; (base0A . "#f3f99d")
;; (base0B . "#5af78e")
;; (base0C . "#9aedfe")
;; (base0D . "#57c7ff")
;; (base0E . "#ff6ac1")
;; (base0F . "#b2643c")))
(define home-packages
(list "vim"
"exa"
"unzip"
"rsync"
"openssh"
"gcc-toolchain"
"make"
"git"
"curl"
"mpv"
"mpv-mpris"
"yt-dlp"
"python"
"playerctl"
"gstreamer"
"gst-plugins-base"
"gst-plugins-good"
"gst-plugins-bad"
"gst-plugins-ugly"
"gst-libav"
"alsa-utils"
"pavucontrol"
"v4l-utils"
"tmux"
"direnv"
"dutree"
"btop"
"htop"
"ripgrep"
"jq"
"bat"
"dutree"
"alacritty"
"fish-foreign-env"
"libnotify"
"nextcloud-client"
"rofi-wayland"
"waybar"
"qt5ct"
"fd"
"bc"
"sysstat"
"ffmpeg"
"pandoc"
"grim"
"slurp"
"imv"
"phinger-cursors-theme"
;; "firefox"
"icecat"
"qutebrowser"
"nyxt"
"openjdk"
"kwallet"
"kwallet-pam"
"breeze"
"breeze-icons"
"kdeconnect"
"plasma"
"dolphin"
"ffmpegthumbs"
"ffmpegthumbnailer"
"kio-fuse"
"kio-extras"
"nautilus"
"dconf"
"dconf-editor"
"tracker"
"tracker-miners"
"gvfs"
"kfind"
"ark"
"kdenlive-fix"
"gimp"
"mediainfo"
;; "tridactyl-native"
"qtwayland@5.15.8"
"qtdeclarative@5.15.8"
;; "qtwayland"
"egl-wayland"
"pinentry"
"pinentry-qt"
"pinentry-gnome3"
"pinentry-rofi"
"pulsemixer"
"pamixer"
"python-pulsectl"
"dunst"
"rbw"
"aspell"
"aspell-dict-en"
"alsa-utils"
"lightly"
"swaylock-effects"
"swayidle"
"wtype"
"brightnessctl"
"flatpak"
"flatpak-xdg-utils"
"sound-theme-freedesktop"
"xdg-utils"
"xdg-desktop-portal"
"xdg-desktop-portal-kde"
"papirus-icon-theme"
"font-google-noto"
"font-google-noto-emoji"
"enchant"
"blesh"
"ncurses"
"transmission"
"sbcl"
;; Emacs and packages
"emacs-next-pgtk"
"emacs-dired-rsync"
"emacs-all-the-icons"
"emacs-org-roam"
"emacs-paredit"
"emacs-evil-paredit"
"emacs-doom-modeline"
"emacs-doom-themes"
"emacs-org"
"emacs-elfeed"
"emacs-elfeed-org"
"emacs-esh-autosuggest"
"emacs-use-package"
"emacs-exec-path-from-shell"
"emacs-langtool"
"emacs-avy"
"emacs-general"
"emacs-evil"
"emacs-evil-collection"
"emacs-no-littering"
"emacs-evil-escape"
"emacs-smartparens"
"emacs-evil-org"
"emacs-evil-smartparens"
"emacs-aggressive-indent"
"emacs-adaptive-wrap"
"emacs-which-key"
"emacs-evil-surround"
"emacs-websocket"
"emacs-org-modern"
"emacs-org-web-tools"
"emacs-org-re-reveal"
"emacs-org-ql"
"emacs-org-msg"
"emacs-calfw"
"emacs-transmission"
"emacs-emojify"
"emacs-pulsar"
"emacs-vertico"
"emacs-consult"
"emacs-consult-eglot"
"emacs-consult-org-roam"
"emacs-tempel"
"emacs-tempel-collection"
"emacs-marginalia"
"emacs-embark"
"emacs-wgrep"
"emacs-corfu"
"emacs-cape"
"emacs-rainbow-delimiters"
"emacs-orderless"
"emacs-kind-icon"
"emacs-projectile"
"emacs-simple-httpd"
"emacs-direnv"
"emacs-sly"
"emacs-diredfl"
"emacs-pdf-tools"
"emacs-vterm"
"emacs-plz"
"emacs-ement"
"emacs-bongo"
"emacs-emms"
"emacs-gcmh"
"emacs-visual-fill-column"
"emacs-eat"
"emacs-mpv"
"emacs-all-the-icons-dired"
"emacs-all-the-icons-completion"
"emacs-org-super-agenda"
"emacs-toc-org"
"emacs-ox-reveal"
"emacs-ox-pandoc"
"emacs-ox-hugo"
"emacs-dired-sidebar"
"emacs-dired-du"
"emacs-ledger-mode"
"emacs-rustic"
"emacs-lua-mode"
"emacs-fennel-mode"
"emacs-web-mode"
"emacs-qml-mode"
"emacs-yaml-mode"
"emacs-cmake-mode"
"emacs-typescript-mode"
"emacs-fish-mode"
"emacs-markdown-mode"
"emacs-restclient"
"emacs-ob-restclient"
"emacs-guix"
"emacs-nix-mode"
"emacs-helpful"
;; "emacs-mu4e"
"isync"
"mu"))
(home-environment
(packages (specifications->packages home-packages))
(services
(list (service home-bash-service-type
(home-bash-configuration
(guix-defaults? #t)
(aliases '(("grep" . "grep --color=auto")
("gh" . "guix home -L ~/dotfiles/guix reconfigure ~/dotfiles/guix/home.scm")
("gs" . "sudo guix system -L /home/chris/dotfiles/guix reconfigure /home/chris/dotfiles/guix/$(hostname).scm")))
(bashrc (list (plain-file "blesh" "source $HOME/.guix-home/profile/share/blesh/ble.sh")
(plain-file "home-manager" "source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh")
;;These need to be here so they are at the bottom and therefore after guix-defaults
(plain-file "exal" "alias ls=\"exa -l\"")
(plain-file "exala" "alias la=\"exa -la\"")
(plain-file "less-color" "export LESS=\"--RAW-CONTROL-CHARS\"")
(plain-file "man-colors" "[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP")
(plain-file "starship" "source $HOME/.config/starship/init.sh")
(plain-file "direnv" "eval \"$(direnv hook bash)\"")))))
(simple-service 'extra-env-vars
home-environment-variables-service-type
`(("PATH" . "$PATH:/home/chris/bin:/home/chris/.nix-profile/bin")
("XDG_DATA_DIRS" . "$XDG_DATA_DIRS:$HOME/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share")
("RTC_USE_PIPEWIRE" . "true")
("GDK_BACKEND" . "wayland")
("WLR_DRM_NO_ATOMIC" . "1")
("WLR_BACKEND" . "vulkan")
("WLR_RENDERER" . "vulkan")
("WLR_NO_HARDWARE_CURSORS" . "1")
("GTK_USE_PORTAL" . "1")
("EDITOR" . "emacsclient -t -a")
("VISUAL" . "emacsclient -c -a")
("QT_QPA_PLATFORM" . "wayland-egl")
("SDL_VIDEODRIVER" . "wayland")
("MOZ_ENABLE_WAYLAND" . "1")
("CLUTTER_BACKEND" . "wayland")
("ELM_ENGINE" . "wayland_egl")
("ECORE_EVAS_ENGINE" . "wayland-egl")
("QT_QPA_PLATFORMTHEME" . "qt5ct")
("LITERAL_VALUE" . ,(literal-string "${abc}"))))
(service home-fish-service-type
(home-fish-configuration
(aliases '(("ls" . "exa -l")
("gh" . "guix home -L ~/dotfiles/guix reconfigure ~/dotfiles/guix/home.scm")
("gs" . "sudo guix system -L /home/chris/dotfiles/guix reconfigure /home/chris/dotfiles/guix/$(hostname).scm")
("ec" . "emacsclient -t")
("ecc" . "emacsclient -c")
("mkdir" . "mkdir -p")
("ytd" . "yt-dlp -o \\\"~/Videos/%(title)s.%(ext)s\\\" $1")))
(config (list
;; (plain-file "home-manager" "fenv source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh")
(plain-file "direnv" "direnv hook fish | source")
(local-file "../.config/fish/config.fish")))))
(simple-service 'config
home-xdg-configuration-files-service-type
`(("hypr" ,(local-file "../.config/hypr" #:recursive? #t))
("tridactyl" ,(local-file "../.config/tridactyl" #:recursive? #t))
("eww" ,(local-file "../.config/eww" #:recursive? #t))
("waybar" ,(local-file "../.config/waybar" #:recursive? #t))
("rofi" ,(local-file "../.config/rofi" #:recursive? #t))
("dunst" ,(local-file "../.config/dunst" #:recursive? #t))
("btop" ,(local-file "../.config/bpytop" #:recursive? #t))
("mpv" ,(local-file "../.config/mpv" #:recursive? #t))
("blesh" ,(local-file "../.config/blesh" #:recursive? #t))
("imv" ,(local-file "../.config/imv" #:recursive? #t))
("starship" ,(local-file "../.config/starship" #:recursive? #t))
("starship.toml" ,(local-file "../.config/starship.toml"))
("guix/channels.scm" ,(local-file "channels.scm"))
("home-manager/home.nix" ,(local-file "home.nix"))
("fish/functions" ,(local-file "../.config/fish/functions" #:recursive? #t))
("qt5ct/colors/snazzy.conf" ,(local-file "../.config/qt5ct/snazzy.conf"))
("alacritty/alacritty.yml" ,(local-file "../.config/alacritty/alacritty.yml"))
("qutebrowser" ,(local-file "../.config/qutebrowser" #:recursive? #t))
("direnv/direnvrc" ,(plain-file "direnvrc" "\
use_guixs() {
eval \"$(guix shell \"$@\" --search-paths)\"
}"))
("gtk-3.0/settings.ini" ,(plain-file "gtk3-settings.ini" "[Settings]
gtk-cursor-theme-name=phinger-cursors-light
gtk-cursor-theme-size=32
gtk-application-prefer-dark-theme=true
gtk-button-images=true
gtk-decoration-layout=icon:minimize,maximize,close
gtk-enable-animations=true
gtk-font-name=VictorMono Nerd Font, 11
gtk-icon-theme-name=Papirus-Dark
gtk-menu-images=true
gtk-modules=colorreload-gtk-module:window-decorations-gtk-module:appmenu-gtk-module
gtk-primary-button-warps-slider=true
gtk-shell-shows-menubar=1
gtk-theme-name=Breeze
gtk-toolbar-style=3
#gtk-xft-dpi=98304
"))
;; ("gtk-3.0/gtk.css" ,(plain-file "gtk.css" "
;; "))
;; ("gtk-3.0/gtk-dark.css" ,(plain-file "gtk-dark.css"
;; "@import url(\"dist/gtk.css\");"))
("gtk-3.0/gtk.css" ,(local-file "../.config/gtk-3.0/gtk.css"))
("gtk-3.0/gtk-dark.css" ,(local-file "../.config/gtk-3.0/gtk-dark.css"))
("gtk-3.0/dist" ,(local-file "../.config/gtk-3.0/dist" #:recursive? #t))
("gtk-3.0/gtk.gresource" ,(local-file "../.config/gtk-3.0/gtk.gresource"))
("gtk-3.0/gtk.gresource.xml" ,(local-file "../.config/gtk-3.0/gtk.gresource.xml"))
("gtk-3.0/assets" ,(local-file "../.config/gtk-3.0/assets" #:recursive? #t))
("gtk-2.0" ,(local-file "../.config/gtk-2.0" #:recursive? #t))))
(simple-service 'scripts
home-files-service-type
`(("bin" ,(local-file "../scripts" #:recursive? #t))
(".mozilla/firefox/chris.default/chrome" ,(local-file "../.config/firefox/chrome" #:recursive? #t))
(".Xresources" ,(plain-file "Xresources" "Xcursor.theme: phinger-cursors-light
Xcursor.size: 36
"))
(".icons/default/index.theme" ,(plain-file "default.theme" "[icon theme]
Inherits=phinger-cursors-light
"))))
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(pinentry-program
(file-append pinentry-rofi "/bin/pinentry-rofi"))
(ssh-support? #t)
(default-cache-ttl 28800)
(max-cache-ttl 28800)
(default-cache-ttl-ssh 28800)
(max-cache-ttl-ssh 28800)))
(simple-service 'additional-fonts-service
home-fontconfig-service-type
(list "~/.nix-profile/share/fonts"
'(alias
(family "monospace")
(prefer
(family "Liberation Mono")))))
(service home-xdg-user-directories-service-type
(home-xdg-user-directories-configuration
(videos "$HOME/vids")
(pictures "$HOME/pics")
(download "$HOME/dls")
(documents "$HOME/docs")
(music "$HOME/music")
(templates "$HOME")
(desktop "$HOME")
(publicshare "$HOME")))
(service home-xdg-mime-applications-service-type
(home-xdg-mime-applications-configuration
(default '(("video/mp4" . "mpv.desktop")
("video/webm" . "mpv.desktop")
("video/x-matroska" . "mpv.destop")
("video/mkv" . "mpv.destop")
("video/quicktime" . "mpv.destop")
("video/mpeg" . "mpv.desktop")
("video/ogg" . "mpv.desktop")
("video/VP9" . "mpv.desktop")
("video/VP8" . "mpv.desktop")
("video/AV1" . "mpv.desktop")
("video/H264" . "mpv.desktop")
("video/H265" . "mpv.desktop")
("video/H266" . "mpv.desktop")
("video/vnd.youtube.yt" . "mpv.desktop")
("application/x-extension-htm" . "firefox.desktop")
("application/x-extension-html" . "firefox.desktop")
("application/x-extension-shtml" . "firefox.desktop")
("application/x-extension-xht" . "firefox.desktop")
("application/x-extension-xhtml" . "firefox.desktop")
("application/xhtml+xml" . "firefox.desktop")
("inode/directory" . "dolphin.desktop")
("image/gif" . "imv-rifle.desktop")
("image/jpeg" . "imv-rifle.desktop")
("image/heif" . "imv-rifle.desktop")
("image/png" . "imv-rifle.desktop")
("audio/vorbis" . "mpv-slow.desktop")
("audio/mp3" . "mpv-slow.desktop")
("audio/flac" . "mpv-slow.desktop")
("audio/wav" . "mpv-slow.desktop")
("audio/opus" . "mpv-slow.desktop")))
(added '(("video/mp4" . "mpv.desktop")
("video/webm" . "mpv.desktop")
("video/mpeg" . "mpv.desktop")
("video/ogg" . "mpv.desktop")
("video/VP9" . "mpv.desktop")
("video/VP8" . "mpv.desktop")
("video/AV1" . "mpv.desktop")
("video/H264" . "mpv.desktop")
("video/H265" . "mpv.desktop")
("video/H266" . "mpv.desktop")
("video/vnd.youtube.yt" . "mpv.desktop")
("video/x-matroska" . "mpv.destop")
("video/mkv" . "mpv.destop")
("video/quicktime" . "mpv.destop")
("application/x-extension-htm" . "firefox.desktop")
("application/x-extension-html" . "firefox.desktop")
("application/x-extension-shtml" . "firefox.desktop")
("application/x-extension-xht" . "firefox.desktop")
("application/x-extension-xhtml" . "firefox.desktop")
("application/xhtml+xml" . "firefox.desktop")
("image/gif" . "imv-rifle.desktop")
("image/jpeg" . "imv-rifle.desktop")
("image/heif" . "imv-rifle.desktop")
("image/png" . "imv-rifle.desktop")
("audio/vorbis" . "mpv-slow.desktop")
("audio/mp3" . "mpv-slow.desktop")
("audio/flac" . "mpv-slow.desktop")
("audio/wav" . "mpv-slow.desktop")
("audio/opus" . "mpv-slow.desktop")))
(desktop-entries
(list (xdg-desktop-entry
(file "mpv-slow")
(name "MPV for Audio and Streams")
(type 'application)
(config
'((exec . "mpv --profile=slow %U"))))
(xdg-desktop-entry
(file "imv-rifle")
(name "IMV rifling all files")
(type 'application)
(config
'((exec . "rifle-imv %U"))))))))
(service home-pipewire-service-type)
(service home-dbus-service-type))))