chore: added lsps and applied formatting
eb51570e
3 file(s) · +206 −146
| 7 | 7 | shells image-viewers) |
|
| 8 | 8 | ||
| 9 | 9 | (operating-system |
|
| 10 | - | (host-name "benson") |
|
| 11 | - | (timezone "America/New_York") |
|
| 12 | - | (locale "en_US.utf8") |
|
| 10 | + | (host-name "benson") |
|
| 11 | + | (timezone "America/New_York") |
|
| 12 | + | (locale "en_US.utf8") |
|
| 13 | 13 | ||
| 14 | - | ;; Mainline kernel + firmware from nonguix; linux-libre can't load the |
|
| 15 | - | ;; amdgpu blobs the Radeon 780M (Phoenix) needs. |
|
| 16 | - | (kernel linux) |
|
| 17 | - | (initrd microcode-initrd) |
|
| 18 | - | (firmware (list amdgpu-firmware amd-microcode)) |
|
| 14 | + | ;; Mainline kernel + firmware from nonguix; linux-libre can't load the |
|
| 15 | + | ;; amdgpu blobs the Radeon 780M (Phoenix) needs. |
|
| 16 | + | (kernel linux) |
|
| 17 | + | (initrd microcode-initrd) |
|
| 18 | + | (firmware (list amdgpu-firmware amd-microcode)) |
|
| 19 | 19 | ||
| 20 | - | (bootloader (bootloader-configuration |
|
| 21 | - | (bootloader grub-efi-bootloader) |
|
| 22 | - | (targets '("/boot/efi")))) |
|
| 20 | + | (bootloader (bootloader-configuration |
|
| 21 | + | (bootloader grub-efi-bootloader) |
|
| 22 | + | (targets '("/boot/efi")))) |
|
| 23 | 23 | ||
| 24 | - | (file-systems (append |
|
| 25 | - | (list (file-system |
|
| 26 | - | (device "/dev/nvme0n1p3") |
|
| 27 | - | (mount-point "/") |
|
| 28 | - | (type "ext4")) |
|
| 29 | - | (file-system |
|
| 30 | - | (device "/dev/nvme0n1p1") |
|
| 31 | - | (mount-point "/boot/efi") |
|
| 32 | - | (type "vfat"))) |
|
| 33 | - | %base-file-systems)) |
|
| 24 | + | (file-systems (append |
|
| 25 | + | (list (file-system |
|
| 26 | + | (device "/dev/nvme0n1p3") |
|
| 27 | + | (mount-point "/") |
|
| 28 | + | (type "ext4")) |
|
| 29 | + | (file-system |
|
| 30 | + | (device "/dev/nvme0n1p1") |
|
| 31 | + | (mount-point "/boot/efi") |
|
| 32 | + | (type "vfat"))) |
|
| 33 | + | %base-file-systems)) |
|
| 34 | 34 | ||
| 35 | - | (swap-devices (list (swap-space |
|
| 36 | - | (target (uuid "10676fa5-e5a0-43b8-8316-e254ea56629e"))))) |
|
| 35 | + | (swap-devices (list (swap-space |
|
| 36 | + | (target (uuid "10676fa5-e5a0-43b8-8316-e254ea56629e"))))) |
|
| 37 | 37 | ||
| 38 | - | (users (cons (user-account |
|
| 39 | - | (name "stevedylandev") |
|
| 40 | - | (group "users") |
|
| 41 | - | (shell (file-append zsh "/bin/zsh")) |
|
| 42 | - | ;; "docker" lets you run docker without sudo |
|
| 43 | - | (supplementary-groups '("wheel" "netdev" "audio" "video" "docker"))) |
|
| 44 | - | %base-user-accounts)) |
|
| 38 | + | (users (cons (user-account |
|
| 39 | + | (name "stevedylandev") |
|
| 40 | + | (group "users") |
|
| 41 | + | (shell (file-append zsh "/bin/zsh")) |
|
| 42 | + | ;; "docker" lets you run docker without sudo |
|
| 43 | + | (supplementary-groups '("wheel" "netdev" "audio" "video" "docker"))) |
|
| 44 | + | %base-user-accounts)) |
|
| 45 | 45 | ||
| 46 | - | (packages (append (list |
|
| 47 | - | ;; window managers |
|
| 48 | - | qtile cwm rofi |
|
| 49 | - | ;; xorg stuff |
|
| 50 | - | xorg-server xinit xwallpaper xset xrandr feh |
|
| 51 | - | ;; text editor |
|
| 52 | - | vis emacs |
|
| 53 | - | ;; browser |
|
| 54 | - | icecat |
|
| 55 | - | ;; terminal emulator |
|
| 56 | - | alacritty kitty |
|
| 57 | - | ;; utils |
|
| 58 | - | git btop ncurses openssh rsync fastfetch |
|
| 59 | - | ;; dev |
|
| 60 | - | go |
|
| 61 | - | docker-cli |
|
| 62 | - | (specification->package "cloudflared")) ; from Rosenthal channel |
|
| 63 | - | %base-packages)) |
|
| 46 | + | (packages (append (list |
|
| 47 | + | ;; window managers |
|
| 48 | + | qtile cwm rofi |
|
| 49 | + | ;; xorg stuff |
|
| 50 | + | xorg-server xinit xwallpaper xset xrandr feh |
|
| 51 | + | ;; text editor |
|
| 52 | + | vis emacs |
|
| 53 | + | ;; browser |
|
| 54 | + | icecat |
|
| 55 | + | ;; terminal emulator |
|
| 56 | + | alacritty kitty |
|
| 57 | + | ;; utils |
|
| 58 | + | git btop ncurses openssh rsync fastfetch |
|
| 59 | + | ;; dev |
|
| 60 | + | go |
|
| 61 | + | docker-cli |
|
| 62 | + | (specification->package "cloudflared")) ; from Rosenthal channel |
|
| 63 | + | %base-packages)) |
|
| 64 | 64 | ||
| 65 | - | (services (append (list (service xorg-server-service-type) |
|
| 66 | - | (service slim-service-type) |
|
| 67 | - | (service dhcpcd-service-type) |
|
| 68 | - | ;; Docker and what its daemon depends on |
|
| 69 | - | (service dbus-root-service-type) |
|
| 70 | - | (service elogind-service-type) |
|
| 71 | - | (service containerd-service-type) |
|
| 72 | - | (service docker-service-type) |
|
| 73 | - | (extra-special-file "/lib64/ld-linux-x86-64.so.2" |
|
| 74 | - | (file-append glibc "/lib/ld-linux-x86-64.so.2")) |
|
| 75 | - | (service tailscale-service-type) |
|
| 76 | - | (simple-service 'cloudflared shepherd-root-service-type |
|
| 77 | - | (list (shepherd-service |
|
| 78 | - | (provision '(cloudflared)) |
|
| 79 | - | (requirement '(networking)) |
|
| 80 | - | (documentation "Run the Cloudflare tunnel.") |
|
| 81 | - | ;; 'networking' is up as soon as dhcpcd is spawned, before it has a |
|
| 82 | - | ;; lease, so cloudflared can exit at boot. Wait between respawns so |
|
| 83 | - | ;; it keeps retrying instead of hitting the respawn limit (5 in 7s) |
|
| 84 | - | ;; and getting disabled. |
|
| 85 | - | (respawn-delay 5) |
|
| 86 | - | (start #~(make-forkexec-constructor |
|
| 87 | - | (list #$(file-append (specification->package "cloudflared") |
|
| 88 | - | "/bin/cloudflared") |
|
| 89 | - | "tunnel" "--no-autoupdate" "run" |
|
| 90 | - | "--token-file" "/etc/cloudflared/token") |
|
| 91 | - | #:log-file "/var/log/cloudflared.log")) |
|
| 92 | - | (stop #~(make-kill-destructor))))) |
|
| 93 | - | (service openssh-service-type |
|
| 94 | - | (openssh-configuration |
|
| 95 | - | (openssh openssh) |
|
| 96 | - | (port-number 22) |
|
| 97 | - | (permit-root-login #f) |
|
| 98 | - | (password-authentication? #f) |
|
| 99 | - | (authorized-keys |
|
| 100 | - | `(("stevedylandev" |
|
| 101 | - | ,(local-file "/home/stevedylandev/.ssh/authorized_keys"))))))) |
|
| 102 | - | (modify-services %base-services |
|
| 103 | - | (guix-service-type |
|
| 104 | - | config => (guix-configuration |
|
| 105 | - | (inherit config) |
|
| 106 | - | (authorized-keys |
|
| 107 | - | (cons (local-file "nonguix-signing-key.pub") |
|
| 108 | - | %default-authorized-guix-keys)) |
|
| 109 | - | (substitute-urls |
|
| 110 | - | (append (list "https://substitutes.nonguix.org") |
|
| 111 | - | %default-substitute-urls)))))))) |
|
| 65 | + | (services (append (list (service xorg-server-service-type) |
|
| 66 | + | (service slim-service-type) |
|
| 67 | + | (service dhcpcd-service-type) |
|
| 68 | + | (service dbus-root-service-type) |
|
| 69 | + | (service elogind-service-type) |
|
| 70 | + | (service containerd-service-type) |
|
| 71 | + | (service docker-service-type) |
|
| 72 | + | (extra-special-file "/lib64/ld-linux-x86-64.so.2" |
|
| 73 | + | (file-append glibc "/lib/ld-linux-x86-64.so.2")) |
|
| 74 | + | (service tailscale-service-type) |
|
| 75 | + | (simple-service 'cloudflared shepherd-root-service-type |
|
| 76 | + | (list (shepherd-service |
|
| 77 | + | (provision '(cloudflared)) |
|
| 78 | + | (requirement '(networking)) |
|
| 79 | + | (documentation "Run the Cloudflare tunnel.") |
|
| 80 | + | ;; 'networking' is up as soon as dhcpcd is spawned, before it has a |
|
| 81 | + | ;; lease, so cloudflared can exit at boot. Wait between respawns so |
|
| 82 | + | ;; it keeps retrying instead of hitting the respawn limit (5 in 7s) |
|
| 83 | + | ;; and getting disabled. |
|
| 84 | + | (respawn-delay 5) |
|
| 85 | + | (start #~(make-forkexec-constructor |
|
| 86 | + | (list #$(file-append (specification->package "cloudflared") |
|
| 87 | + | "/bin/cloudflared") |
|
| 88 | + | "tunnel" "--no-autoupdate" "run" |
|
| 89 | + | "--token-file" "/etc/cloudflared/token") |
|
| 90 | + | #:log-file "/var/log/cloudflared.log")) |
|
| 91 | + | (stop #~(make-kill-destructor))))) |
|
| 92 | + | (service openssh-service-type |
|
| 93 | + | (openssh-configuration |
|
| 94 | + | (openssh openssh) |
|
| 95 | + | (port-number 22) |
|
| 96 | + | (permit-root-login #f) |
|
| 97 | + | (password-authentication? #f) |
|
| 98 | + | (authorized-keys |
|
| 99 | + | `(("stevedylandev" |
|
| 100 | + | ,(local-file "/home/stevedylandev/.ssh/authorized_keys"))))))) |
|
| 101 | + | (modify-services %base-services |
|
| 102 | + | (guix-service-type |
|
| 103 | + | config => (guix-configuration |
|
| 104 | + | (inherit config) |
|
| 105 | + | (authorized-keys |
|
| 106 | + | (cons (local-file "nonguix-signing-key.pub") |
|
| 107 | + | %default-authorized-guix-keys)) |
|
| 108 | + | (substitute-urls |
|
| 109 | + | (append (list "https://substitutes.nonguix.org") |
|
| 110 | + | %default-substitute-urls)))))))) |
| 1 | 1 | ;;; init-lang.el -*- lexical-binding: t; -*- |
|
| 2 | 2 | ||
| 3 | - | ;;; Syntax highlighting: tree-sitter (built-in) |
|
| 4 | - | ;; Every built-in *-ts-mode replaces its classic mode, and the grammar is |
|
| 5 | - | ;; compiled into ~/.config/emacs/tree-sitter the first time it's needed. |
|
| 6 | - | ;; Needs a C compiler (xcode-select --install). |
|
| 3 | + | ;;; Syntax highlighting: tree-sitter |
|
| 7 | 4 | (setopt treesit-enabled-modes t |
|
| 8 | 5 | treesit-auto-install-grammar 'always |
|
| 9 | 6 | treesit-font-lock-level 4) ; 4 = everything (calls, properties, operators) |
|
| 10 | 7 | ||
| 11 | - | ;;; LSP: eglot (built-in) |
|
| 12 | - | ;; Add a language: one line here. MODES is a ts-mode (or list of them), |
|
| 13 | - | ;; SERVER is the command eglot runs. Entries whose server binary isn't on |
|
| 14 | - | ;; PATH are skipped, so it's fine to list servers you haven't installed. |
|
| 15 | - | ;; A mode not built into Emacs needs its package first, e.g. |
|
| 16 | - | ;; (use-package zig-mode) then (zig-mode "zls") |
|
| 8 | + | ;;; LSP: eglot |
|
| 17 | 9 | (defvar my/lsp-servers |
|
| 18 | 10 | '(((typescript-ts-mode tsx-ts-mode js-ts-mode) "vtsls" "--stdio") |
|
| 19 | 11 | (rust-ts-mode "rust-analyzer") |
|
| 20 | 12 | ((go-ts-mode go-mod-ts-mode) "gopls") |
|
| 21 | 13 | ((c-ts-mode c++-ts-mode) "clangd") |
|
| 22 | 14 | (lua-ts-mode "lua-language-server") |
|
| 23 | - | (css-ts-mode "vscode-css-language-server" "--stdio") |
|
| 15 | + | ;;(css-ts-mode "vscode-css-language-server" "--stdio") |
|
| 24 | 16 | ((mhtml-ts-mode html-ts-mode) "vscode-html-language-server" "--stdio") |
|
| 25 | 17 | (json-ts-mode "vscode-json-language-server" "--stdio") |
|
| 26 | - | (python-ts-mode "basedpyright-langserver" "--stdio") |
|
| 27 | - | (bash-ts-mode "bash-language-server" "start")) |
|
| 18 | + | (python-ts-mode "pylsp") |
|
| 19 | + | (python-ts-mode "basedpyright-langserver" "--stdio") ; wins if both installed |
|
| 20 | + | (bash-ts-mode "bash-language-server" "start") |
|
| 21 | + | (scheme-mode "guile-lsp-server")) |
|
| 28 | 22 | "Alist of (MODES SERVER ARGS...) used to auto-start eglot.") |
|
| 29 | 23 | ||
| 30 | 24 | (use-package eglot |
|
| 42 | 36 | (dolist (mode modes) |
|
| 43 | 37 | (add-hook (intern (format "%s-hook" mode)) #'eglot-ensure)))))) |
|
| 44 | 38 | ||
| 39 | + | ;;; Indentation per language |
|
| 40 | + | (defvar my/indent-settings |
|
| 41 | + | '(((typescript-ts-mode tsx-ts-mode) 2 nil typescript-ts-mode-indent-offset) |
|
| 42 | + | (js-ts-mode 2 nil js-indent-level) |
|
| 43 | + | (rust-ts-mode 4 nil rust-ts-mode-indent-offset) |
|
| 44 | + | (go-ts-mode 4 t go-ts-mode-indent-offset) |
|
| 45 | + | ((c-ts-mode c++-ts-mode) 4 nil c-ts-mode-indent-offset) |
|
| 46 | + | (lua-ts-mode 2 nil lua-ts-indent-offset) |
|
| 47 | + | (css-ts-mode 2 nil css-indent-offset) |
|
| 48 | + | ((mhtml-ts-mode html-ts-mode) 2 nil html-ts-mode-indent-offset) |
|
| 49 | + | (json-ts-mode 2 nil json-ts-mode-indent-offset) |
|
| 50 | + | (python-ts-mode 4 nil python-indent-offset) |
|
| 51 | + | (bash-ts-mode 2 nil sh-basic-offset) |
|
| 52 | + | ((emacs-lisp-mode scheme-mode) 2 nil nil)) |
|
| 53 | + | "List of (MODES WIDTH TABS OFFSET-VAR) applied in each mode's hook.") |
|
| 54 | + | ||
| 55 | + | (dolist (entry my/indent-settings) |
|
| 56 | + | (pcase-let ((`(,modes ,width ,tabs ,var) entry)) |
|
| 57 | + | (dolist (mode (ensure-list modes)) |
|
| 58 | + | (add-hook (intern (format "%s-hook" mode)) |
|
| 59 | + | (lambda () |
|
| 60 | + | (setq-local tab-width width |
|
| 61 | + | indent-tabs-mode tabs) |
|
| 62 | + | (when var (set (make-local-variable var) width))))))) |
|
| 63 | + | ||
| 64 | + | ;;; Format on save |
|
| 65 | + | ;; Uses eglot when the server can format, else re-indents lisp buffers. Off for a |
|
| 66 | + | ;; buffer with SPC c F, or per project via .dir-locals.el: |
|
| 67 | + | (defvar my/format-on-save t |
|
| 68 | + | "Non-nil formats eglot-managed buffers before saving.") |
|
| 69 | + | (put 'my/format-on-save 'safe-local-variable #'booleanp) |
|
| 70 | + | ||
| 71 | + | (defvar my/reindent-modes '(emacs-lisp-mode scheme-mode) |
|
| 72 | + | "Modes without an LSP formatter that format by re-indenting the buffer.") |
|
| 73 | + | ||
| 74 | + | (defun my/format-buffer () |
|
| 75 | + | "Format with eglot if the server can, else re-indent in `my/reindent-modes'." |
|
| 76 | + | (interactive) |
|
| 77 | + | (cond ((and (fboundp 'eglot-managed-p) (eglot-managed-p) |
|
| 78 | + | (eglot-server-capable :documentFormattingProvider)) |
|
| 79 | + | (eglot-format-buffer)) |
|
| 80 | + | ((apply #'derived-mode-p my/reindent-modes) |
|
| 81 | + | (indent-region (point-min) (point-max))) |
|
| 82 | + | ((called-interactively-p 'any) |
|
| 83 | + | (message "No formatter for %s" major-mode)))) |
|
| 84 | + | ||
| 85 | + | (defun my/format-on-save () |
|
| 86 | + | (when my/format-on-save (my/format-buffer))) |
|
| 87 | + | ||
| 88 | + | (add-hook 'before-save-hook #'my/format-on-save) |
|
| 89 | + | ||
| 90 | + | (defun my/toggle-format-on-save () |
|
| 91 | + | "Toggle format on save for the current buffer." |
|
| 92 | + | (interactive) |
|
| 93 | + | (setq-local my/format-on-save (not my/format-on-save)) |
|
| 94 | + | (message "Format on save %s" (if my/format-on-save "on" "off"))) |
|
| 95 | + | ||
| 45 | 96 | ;; Diagnostics |
|
| 46 | 97 | (setq flymake-show-diagnostics-at-end-of-line 'short) |
|
| 47 | 98 | ||
| 50 | 101 | "c" '(:ignore t :wk "code") |
|
| 51 | 102 | "ca" '(eglot-code-actions :wk "actions") |
|
| 52 | 103 | "cr" '(eglot-rename :wk "rename") |
|
| 53 | - | "cf" '(eglot-format-buffer :wk "format") |
|
| 104 | + | "cf" '(my/format-buffer :wk "format") |
|
| 105 | + | "cF" '(my/toggle-format-on-save :wk "toggle format on save") |
|
| 54 | 106 | "cd" '(xref-find-definitions :wk "definition") |
|
| 55 | 107 | "cR" '(xref-find-references :wk "references") |
|
| 56 | 108 | "ci" '(eglot-find-implementation :wk "implementation") |
|
| 21 | 21 | ;; encryption and password management |
|
| 22 | 22 | "gnupg" "pinentry" "password-store"))) |
|
| 23 | 23 | ||
| 24 | + | ;; Language servers that emacs/lisp/init-lang.el starts through eglot |
|
| 25 | + | (define %lsp-packages |
|
| 26 | + | (specifications->packages |
|
| 27 | + | (list "guile-lsp-server" |
|
| 28 | + | "rust-analyzer" |
|
| 29 | + | "gopls" |
|
| 30 | + | "lua-language-server" |
|
| 31 | + | "python-lsp-server"))) |
|
| 32 | + | ||
| 24 | 33 | (home-environment |
|
| 25 | - | (packages %zsh-packages) |
|
| 34 | + | (packages (append %zsh-packages %lsp-packages)) |
|
| 26 | 35 | ||
| 27 | - | (services |
|
| 28 | - | (append |
|
| 29 | - | (list |
|
| 30 | - | (service home-zsh-service-type |
|
| 31 | - | (home-zsh-configuration |
|
| 32 | - | (zshrc (list (local-file "zsh/zshrc"))))) |
|
| 36 | + | (services |
|
| 37 | + | (append |
|
| 38 | + | (list |
|
| 39 | + | (service home-zsh-service-type |
|
| 40 | + | (home-zsh-configuration |
|
| 41 | + | (zshrc (list (local-file "zsh/zshrc"))))) |
|
| 33 | 42 | ||
| 34 | - | ;; pinentry uses GTK under X and falls back to curses otherwise |
|
| 35 | - | (service home-gpg-agent-service-type |
|
| 36 | - | (home-gpg-agent-configuration |
|
| 37 | - | (pinentry-program |
|
| 38 | - | (file-append (specification->package "pinentry") |
|
| 39 | - | "/bin/pinentry")))) |
|
| 43 | + | ;; pinentry uses GTK under X and falls back to curses otherwise |
|
| 44 | + | (service home-gpg-agent-service-type |
|
| 45 | + | (home-gpg-agent-configuration |
|
| 46 | + | (pinentry-program |
|
| 47 | + | (file-append (specification->package "pinentry") |
|
| 48 | + | "/bin/pinentry")))) |
|
| 40 | 49 | ||
| 41 | - | (service home-files-service-type |
|
| 42 | - | `((".guile" ,%default-dotguile) |
|
| 43 | - | (".Xdefaults" ,%default-xdefaults) |
|
| 44 | - | (".xsession" ,(local-file "xsession/xsession" #:recursive? #t)) |
|
| 45 | - | (".cwmrc" ,(local-file "cwm/cwmrc")) |
|
| 46 | - | ;; Emacs config files are linked into ~/.emacs.d so that |
|
| 47 | - | ;; elpa/ and other runtime state stay writable there. |
|
| 48 | - | (".emacs.d/early-init.el" ,(local-file "emacs/early-init.el")) |
|
| 49 | - | (".emacs.d/init.el" ,(local-file "emacs/init.el")) |
|
| 50 | - | (".emacs.d/org.css" ,(local-file "emacs/org.css")) |
|
| 51 | - | (".emacs.d/lisp" ,(local-file "emacs/lisp" #:recursive? #t)) |
|
| 52 | - | (".emacs.d/themes" ,(local-file "emacs/themes" #:recursive? #t)))) |
|
| 50 | + | (service home-files-service-type |
|
| 51 | + | `((".guile" ,%default-dotguile) |
|
| 52 | + | (".Xdefaults" ,%default-xdefaults) |
|
| 53 | + | (".xsession" ,(local-file "xsession/xsession" #:recursive? #t)) |
|
| 54 | + | (".cwmrc" ,(local-file "cwm/cwmrc")) |
|
| 55 | + | ;; Emacs config files are linked into ~/.emacs.d so that |
|
| 56 | + | ;; elpa/ and other runtime state stay writable there. |
|
| 57 | + | (".emacs.d/early-init.el" ,(local-file "emacs/early-init.el")) |
|
| 58 | + | (".emacs.d/init.el" ,(local-file "emacs/init.el")) |
|
| 59 | + | (".emacs.d/org.css" ,(local-file "emacs/org.css")) |
|
| 60 | + | (".emacs.d/lisp" ,(local-file "emacs/lisp" #:recursive? #t)) |
|
| 61 | + | (".emacs.d/themes" ,(local-file "emacs/themes" #:recursive? #t)))) |
|
| 53 | 62 | ||
| 54 | - | (service home-xdg-configuration-files-service-type |
|
| 55 | - | `(("starship.toml" ,(local-file "starship/starship.toml")) |
|
| 56 | - | ("alacritty/alacritty.toml" ,(local-file "alacritty/alacritty.toml")) |
|
| 57 | - | ("kitty/kitty.conf" ,(local-file "kitty/kitty.conf")) |
|
| 58 | - | ("qtile/config.py" ,(local-file "qtile/config.py")) |
|
| 59 | - | ("gdb/gdbinit" ,%default-gdbinit) |
|
| 60 | - | ("nano/nanorc" ,%default-nanorc))) |
|
| 63 | + | (service home-xdg-configuration-files-service-type |
|
| 64 | + | `(("starship.toml" ,(local-file "starship/starship.toml")) |
|
| 65 | + | ("alacritty/alacritty.toml" ,(local-file "alacritty/alacritty.toml")) |
|
| 66 | + | ("kitty/kitty.conf" ,(local-file "kitty/kitty.conf")) |
|
| 67 | + | ("qtile/config.py" ,(local-file "qtile/config.py")) |
|
| 68 | + | ("gdb/gdbinit" ,%default-gdbinit) |
|
| 69 | + | ("nano/nanorc" ,%default-nanorc))) |
|
| 61 | 70 | ||
| 62 | - | ;; ~/.local/share/fonts is on fontconfig's default search path |
|
| 63 | - | (service home-xdg-data-files-service-type |
|
| 64 | - | `(("fonts/BerkeleyMonoNerdFontMono-Regular.ttf" |
|
| 65 | - | ,(local-file "fonts/BerkeleyMonoNerdFontMono-Regular.ttf"))))) |
|
| 71 | + | ;; ~/.local/share/fonts is on fontconfig's default search path |
|
| 72 | + | (service home-xdg-data-files-service-type |
|
| 73 | + | `(("fonts/BerkeleyMonoNerdFontMono-Regular.ttf" |
|
| 74 | + | ,(local-file "fonts/BerkeleyMonoNerdFontMono-Regular.ttf"))))) |
|
| 66 | 75 | ||
| 67 | - | %base-home-services))) |
|
| 76 | + | %base-home-services))) |