home.scm 3.7 K raw
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)))