| 1 | ;; Guix Home configuration |
| 2 | (use-modules (gnu home) |
| 3 | (gnu home services) |
| 4 | (gnu home services shells) |
| 5 | (gnu home services gnupg) |
| 6 | (gnu home services xdg) |
| 7 | (gnu packages) |
| 8 | (gnu packages guile) |
| 9 | (gnu services) |
| 10 | (gnu system shadow) |
| 11 | (guix gexp) |
| 12 | (guix packages)) |
| 13 | |
| 14 | (define %zsh-packages |
| 15 | (specifications->packages |
| 16 | (list "zsh" |
| 17 | "zsh-autosuggestions" |
| 18 | "zsh-syntax-highlighting" |
| 19 | "starship" "zoxide" "fzf" "fd" "bat" "eza" "jless" |
| 20 | "fastfetch" "xclip" |
| 21 | "tmux" "xdg-utils" |
| 22 | "gnupg" "pinentry" "password-store"))) |
| 23 | |
| 24 | (define guile-lsp-server/latest |
| 25 | (let ((base (specification->package "guile-lsp-server"))) |
| 26 | (package |
| 27 | (inherit base) |
| 28 | (native-inputs (modify-inputs (package-native-inputs base) |
| 29 | (replace "guile" guile-3.0-latest))) |
| 30 | (propagated-inputs (modify-inputs (package-propagated-inputs base) |
| 31 | (replace "guile" guile-3.0-latest)))))) |
| 32 | |
| 33 | (define %lsp-packages |
| 34 | (cons guile-lsp-server/latest |
| 35 | (specifications->packages |
| 36 | (list "rust-analyzer" |
| 37 | "gopls" |
| 38 | "lua-language-server" |
| 39 | "python-lsp-server")))) |
| 40 | |
| 41 | (define %lang-packages |
| 42 | (specifications->packages |
| 43 | (list "python"))) |
| 44 | |
| 45 | (define %theme-packages |
| 46 | (specifications->packages (list "adwaita-icon-theme"))) |
| 47 | |
| 48 | (home-environment |
| 49 | (packages (append %zsh-packages %lsp-packages %lang-packages %theme-packages)) |
| 50 | |
| 51 | (services |
| 52 | (append |
| 53 | (list |
| 54 | (service home-zsh-service-type |
| 55 | (home-zsh-configuration |
| 56 | (zshrc (list (local-file "zsh/zshrc"))))) |
| 57 | |
| 58 | ;; pinentry uses GTK under X and falls back to curses otherwise |
| 59 | (service home-gpg-agent-service-type |
| 60 | (home-gpg-agent-configuration |
| 61 | (pinentry-program |
| 62 | (file-append (specification->package "pinentry") |
| 63 | "/bin/pinentry")))) |
| 64 | |
| 65 | (service home-files-service-type |
| 66 | `((".guile" ,%default-dotguile) |
| 67 | (".Xdefaults" ,%default-xdefaults) |
| 68 | (".emacs.d/early-init.el" ,(local-file "emacs/early-init.el")) |
| 69 | (".emacs.d/init.el" ,(local-file "emacs/init.el")) |
| 70 | (".emacs.d/lisp" ,(local-file "emacs/lisp" #:recursive? #t)) |
| 71 | (".emacs.d/themes" ,(local-file "emacs/themes" #:recursive? #t)))) |
| 72 | |
| 73 | (service home-xdg-configuration-files-service-type |
| 74 | `(("starship.toml" ,(local-file "starship/starship.toml")) |
| 75 | ("kitty/kitty.conf" ,(local-file "kitty/kitty.conf")) |
| 76 | ("sway/config" ,(local-file "sway/config")) |
| 77 | ("qtile/config.py" ,(local-file "qtile/config.py")) |
| 78 | ("rofi/config.rasi" ,(local-file "rofi/config.rasi")) |
| 79 | ("rofi/darkmatter.rasi" ,(local-file "rofi/darkmatter.rasi")) |
| 80 | ("tmux/tmux.conf" ,(local-file "tmux/tmux.conf")) |
| 81 | ("gdb/gdbinit" ,%default-gdbinit) |
| 82 | ("nano/nanorc" ,%default-nanorc))) |
| 83 | |
| 84 | (simple-service 'cursor-theme home-environment-variables-service-type |
| 85 | '(("XCURSOR_THEME" . "Adwaita") |
| 86 | ("XCURSOR_SIZE" . "24") |
| 87 | ("XCURSOR_PATH" . "$HOME/.guix-home/profile/share/icons"))) |
| 88 | |
| 89 | (simple-service 'cursor-default home-files-service-type |
| 90 | `((".icons/default" |
| 91 | ,(file-append (specification->package "adwaita-icon-theme") |
| 92 | "/share/icons/Adwaita")))) |
| 93 | |
| 94 | (service home-xdg-data-files-service-type |
| 95 | `(("fonts/BerkeleyMonoNerdFontMono-Regular.ttf" |
| 96 | ,(local-file "fonts/BerkeleyMonoNerdFontMono-Regular.ttf"))))) |
| 97 | |
| 98 | %base-home-services))) |