404 lines
16 KiB
Scheme
404 lines
16 KiB
Scheme
;; This is my home environment
|
||
;;
|
||
;;
|
||
;;
|
||
;;
|
||
|
||
(define-module (home)
|
||
#: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 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 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 home-scripts
|
||
;; (package
|
||
;; (name "home-scripts")
|
||
;; (version "0.1")
|
||
;; (source (local-file "../scripts" #:recursive #t))
|
||
;; (build-system copy-build-system)
|
||
;; (arguments
|
||
;; `(#:install-plan
|
||
;; '(())))))
|
||
|
||
(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"
|
||
"bat"
|
||
"alacritty"
|
||
"libnotify"
|
||
"nextcloud-client"
|
||
"rofi-wayland"
|
||
"waybar"
|
||
"qt5ct"
|
||
"fd"
|
||
"bc"
|
||
"sysstat"
|
||
"ffmpeg"
|
||
"pandoc"
|
||
"grim"
|
||
"slurp"
|
||
"imv"
|
||
"firefox"
|
||
"openjdk"
|
||
"kwallet"
|
||
"kwallet-pam"
|
||
"breeze"
|
||
"breeze-icons"
|
||
"kdeconnect"
|
||
"qtwayland@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"
|
||
|
||
;; 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-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-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-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"))
|
||
|
||
(define emacs-dired-rsync
|
||
(let ((commit "c4f484bff94ed2ddfe0fa45f1e695a1637e1a35a")
|
||
(revision "0"))
|
||
(package
|
||
(name "emacs-dired-rsync")
|
||
(version (git-version "0.0.1" revision commit))
|
||
(source
|
||
(origin
|
||
(method git-fetch)
|
||
(uri (git-reference
|
||
(url "https://github.com/stsquad/dired-rsync.git")
|
||
(commit commit)))
|
||
(file-name (git-file-name name version))
|
||
(sha256
|
||
(base32
|
||
"0000000000000000000000000000000000000000000000000000"))))
|
||
(build-system emacs-build-system)
|
||
(arguments (list #:emacs emacs-next-pgtk))
|
||
(license license:gpl3+)
|
||
(home-page "https://github.com/stsquad/dired-rsync.git")
|
||
(synopsis "dired-rsync – asynchronous rsync from dired")
|
||
(description "\
|
||
This package adds the command dired-rsync which allows the user to copy
|
||
marked files in a dired buffer via rsync."))))
|
||
|
||
(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")))
|
||
(environment-variables
|
||
'(("QT_QPA_PLATFORM" . "wayland-egl")
|
||
("QT_QPA_PLATFORMTHEME" . "qt5ct")
|
||
("XDG_DATA_DIRS" . "$XDG_DATA_DIRS:$HOME/.local/share/flatpak/exports/share")
|
||
("RTC_USE_PIPEWIRE" . "true")
|
||
("GDK_BACKEND" . "wayland")
|
||
("WLR_DRM_NO_ATOMIC" . "1")
|
||
("MOZ_ENABLE_WAYLAND" . "1")
|
||
("WLR_BACKEND" . "vulkan")
|
||
("WLR_RENDERER" . "vulkan")
|
||
("SDL_VIDEODRIVER" . "wayland")
|
||
("WLR_NO_HARDWARE_CURSORS" . "1")
|
||
("GTK_USE_PORTAL" . "1")
|
||
("EDITOR" . "emacsclient -t -a")
|
||
("VISUAL" . "emacsclient -c -a")))
|
||
(bashrc (list (plain-file "blesh" "source .guix-home/profile/share/blesh/ble.sh")
|
||
(plain-file "home-manager" "source .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 .config/starship/init.sh")))))
|
||
(simple-service 'extra-env-vars
|
||
home-environment-variables-service-type
|
||
`(("PATH" . "$PATH:/home/chris/bin:/home/chris/.nix-profile/bin")
|
||
("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")))))
|
||
(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))
|
||
("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"))
|
||
("qt5ct/colors/snazzy.conf" ,(local-file "../.config/qt5ct/snazzy.conf"))
|
||
("alacritty/alacritty.yml" ,(local-file "../.config/alacritty/alacritty.yml"))))
|
||
(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))))
|
||
|
||
(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)))
|
||
|
||
(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.desktop")
|
||
("image/jpeg" . "imv.desktop")
|
||
("image/heif" . "imv.desktop")
|
||
("image/png" . "imv.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.desktop")
|
||
("image/jpeg" . "imv.desktop")
|
||
("image/heif" . "imv.desktop")
|
||
("image/png" . "imv.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"))))))))
|
||
(service home-pipewire-service-type)
|
||
(service home-dbus-service-type))))
|