chore(tazjin/emacs): Move //tools/emacs to //users/tazjin/emacs
Change-Id: I9dfbd0bb1fd3e215bb91c5734fb0934ee3faeae6
This commit is contained in:
parent
9448a2262b
commit
0b0e8c2da7
15 changed files with 2 additions and 2 deletions
287
users/tazjin/emacs/config/init.el
Normal file
287
users/tazjin/emacs/config/init.el
Normal file
|
@ -0,0 +1,287 @@
|
|||
;;; init.el --- Package bootstrapping. -*- lexical-binding: t; -*-
|
||||
|
||||
;; Packages are installed via Nix configuration, this file only
|
||||
;; initialises the newly loaded packages.
|
||||
|
||||
(require 'use-package)
|
||||
(require 'seq)
|
||||
|
||||
(package-initialize)
|
||||
|
||||
;; Initialise all packages installed via Nix.
|
||||
;;
|
||||
;; TODO: Generate this section in Nix for all packages that do not
|
||||
;; require special configuration.
|
||||
|
||||
;;
|
||||
;; Packages providing generic functionality.
|
||||
;;
|
||||
|
||||
(use-package ace-window
|
||||
:bind (("C-x o" . ace-window))
|
||||
:config
|
||||
(setq aw-keys '(?f ?j ?d ?k ?s ?l ?a)
|
||||
aw-scope 'frame))
|
||||
|
||||
(use-package auth-source-pass :config (auth-source-pass-enable))
|
||||
|
||||
(use-package avy
|
||||
:bind (("M-j" . avy-goto-char)
|
||||
("M-p" . avy-pop-mark)
|
||||
("M-g g" . avy-goto-line)))
|
||||
|
||||
(use-package browse-kill-ring)
|
||||
|
||||
(use-package company
|
||||
:hook ((prog-mode . company-mode))
|
||||
:config (setq company-tooltip-align-annotations t))
|
||||
|
||||
(use-package counsel
|
||||
:after (ivy)
|
||||
:config (counsel-mode 1)
|
||||
:bind (("C-c r g" . counsel-rg)))
|
||||
|
||||
(use-package dash)
|
||||
(use-package dash-functional)
|
||||
|
||||
(use-package dottime
|
||||
:demand
|
||||
:after (notmuch telega)
|
||||
:config (dottime-display-mode t))
|
||||
|
||||
(use-package gruber-darker-theme)
|
||||
|
||||
(use-package eglot
|
||||
:custom
|
||||
(eglot-autoshutdown t)
|
||||
(eglot-send-changes-idle-time 0.3))
|
||||
|
||||
(use-package ht)
|
||||
|
||||
(use-package hydra)
|
||||
(use-package idle-highlight-mode :hook ((prog-mode . idle-highlight-mode)))
|
||||
|
||||
(use-package ivy
|
||||
:config
|
||||
(ivy-mode 1)
|
||||
(setq enable-recursive-minibuffers t)
|
||||
(setq ivy-use-virtual-buffers t))
|
||||
|
||||
(use-package ivy-pass :after (ivy))
|
||||
|
||||
(use-package ivy-prescient
|
||||
:after (ivy prescient)
|
||||
:config
|
||||
(ivy-prescient-mode)
|
||||
;; Fixes an issue with how regexes are passed to ripgrep from counsel,
|
||||
;; see raxod502/prescient.el#43
|
||||
(setf (alist-get 'counsel-rg ivy-re-builders-alist) #'ivy--regex-plus))
|
||||
|
||||
(use-package multiple-cursors)
|
||||
|
||||
(use-package notmuch
|
||||
:bind (:map global-map
|
||||
("s-g m" . notmuch)
|
||||
("s-g M" . counsel-notmuch)) ;; g m -> gmail
|
||||
:config
|
||||
(setq notmuch-search-oldest-first nil)
|
||||
(setq notmuch-show-all-tags-list t)
|
||||
(setq notmuch-hello-tag-list-make-query "tag:unread"))
|
||||
|
||||
(use-package paredit :hook ((lisp-mode . paredit-mode)
|
||||
(emacs-lisp-mode . paredit-mode)))
|
||||
|
||||
(use-package pinentry
|
||||
:config
|
||||
(setq epa-pinentry-mode 'loopback)
|
||||
(pinentry-start))
|
||||
|
||||
(use-package prescient
|
||||
:after (ivy counsel)
|
||||
:config (prescient-persist-mode))
|
||||
|
||||
(use-package rainbow-delimiters :hook (prog-mode . rainbow-delimiters-mode))
|
||||
(use-package rainbow-mode)
|
||||
(use-package s)
|
||||
(use-package string-edit)
|
||||
|
||||
(use-package swiper
|
||||
:after (counsel ivy)
|
||||
:bind (("C-s" . swiper)))
|
||||
|
||||
(use-package telephone-line) ;; configuration happens outside of use-package
|
||||
(use-package term-switcher)
|
||||
(use-package undo-tree :config (global-undo-tree-mode))
|
||||
(use-package uuidgen)
|
||||
(use-package which-key :config (which-key-mode t))
|
||||
|
||||
;;
|
||||
;; Applications in emacs
|
||||
;;
|
||||
|
||||
(use-package magit
|
||||
:bind ("C-c g" . magit-status)
|
||||
:config (setq magit-repository-directories '(("/home/tazjin/projects" . 2)
|
||||
("/home/tazjin" . 1))))
|
||||
|
||||
(use-package org-journal
|
||||
;; Always use my own key to encrypt files. There seems to be no
|
||||
;; global way to set this, as `epa-file-encrypt-to' only has an
|
||||
;; effect as a file-local variable (?!)
|
||||
:hook ((org-journal-mode . (lambda ()
|
||||
(setq-local epa-file-encrypt-to
|
||||
"DCF34CFAC1AC44B87E26333136EE34814F6D294A"))))
|
||||
|
||||
:config
|
||||
(setq org-journal-dir "/ssh:camden.tazj.in:/home/tazjin/journal"
|
||||
org-journal-encrypt-journal t
|
||||
org-journal-file-type 'weekly
|
||||
org-journal-date-format "%A, %Y-%m-%d"
|
||||
org-journal-file-format "%Y%m%d-weekly"
|
||||
|
||||
;; Saturday, because reasons.
|
||||
org-journal-start-on-weekday 6)
|
||||
|
||||
;; org-journal doesn't actually enter its mode automatically if
|
||||
;; encryption is used (I'm not sure why), so this teaches Emacs to
|
||||
;; recognise the files.
|
||||
(add-to-list 'auto-mode-alist '("[0-9]-weekly\\.gpg\\'" . org-journal-mode)))
|
||||
|
||||
(use-package org-ql)
|
||||
|
||||
(use-package password-store)
|
||||
(use-package pg)
|
||||
(use-package restclient)
|
||||
|
||||
(use-package vterm
|
||||
:config (progn
|
||||
(setq vterm-shell "fish")
|
||||
(setq vterm-exit-functions
|
||||
(lambda (&rest _) (kill-buffer (current-buffer))))
|
||||
(setq vterm-set-title-functions
|
||||
(lambda (title)
|
||||
(rename-buffer
|
||||
(generate-new-buffer-name
|
||||
(format "vterm<%s>"
|
||||
(s-trim-left
|
||||
(s-chop-prefix "fish" title)))))))))
|
||||
|
||||
;;
|
||||
;; Packages providing language-specific functionality
|
||||
;;
|
||||
|
||||
(use-package cargo
|
||||
:hook ((rust-mode . cargo-minor-mode)
|
||||
(cargo-process-mode . visual-line-mode))
|
||||
:bind (:map cargo-minor-mode-map ("C-c C-c C-l" . ignore)))
|
||||
|
||||
(use-package dockerfile-mode)
|
||||
|
||||
(use-package erlang
|
||||
:hook ((erlang-mode . (lambda ()
|
||||
;; Don't indent after '>' while I'm writing
|
||||
(local-set-key ">" 'self-insert-command)))))
|
||||
|
||||
(use-package f)
|
||||
(use-package geiser)
|
||||
|
||||
(use-package go-mode
|
||||
:bind (:map go-mode-map ("C-c C-r" . recompile))
|
||||
:hook ((go-mode . (lambda ()
|
||||
(setq tab-width 2)
|
||||
(setq-local compile-command
|
||||
(concat "go build " buffer-file-name))))))
|
||||
|
||||
(use-package haskell-mode)
|
||||
|
||||
(use-package ielm
|
||||
:hook ((inferior-emacs-lisp-mode . (lambda ()
|
||||
(paredit-mode)
|
||||
(rainbow-delimiters-mode-enable)
|
||||
(company-mode)))))
|
||||
|
||||
(use-package jq-mode
|
||||
:config (add-to-list 'auto-mode-alist '("\\.jq\\'" . jq-mode)))
|
||||
|
||||
(use-package kotlin-mode
|
||||
:hook ((kotlin-mode . (lambda ()
|
||||
(setq indent-line-function #'indent-relative)))))
|
||||
|
||||
(use-package lsp-mode)
|
||||
|
||||
(use-package markdown-mode
|
||||
:config
|
||||
(add-to-list 'auto-mode-alist '("\\.txt\\'" . markdown-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)))
|
||||
|
||||
(use-package markdown-toc)
|
||||
|
||||
(use-package nix-mode
|
||||
:hook ((nix-mode . (lambda ()
|
||||
(setq indent-line-function #'nix-indent-line)))))
|
||||
|
||||
(use-package nix-util)
|
||||
(use-package nginx-mode)
|
||||
(use-package rust-mode)
|
||||
|
||||
(use-package sly
|
||||
:hook ((sly-mrepl-mode . (lambda ()
|
||||
(paredit-mode)
|
||||
(rainbow-delimiters-mode-enable)
|
||||
(company-mode))))
|
||||
:config
|
||||
(setq common-lisp-hyperspec-root "file:///home/tazjin/docs/lisp/"))
|
||||
|
||||
(use-package telega
|
||||
:bind (:map global-map ("s-t" . telega))
|
||||
:config (telega-mode-line-mode 1))
|
||||
|
||||
(use-package terraform-mode)
|
||||
(use-package toml-mode)
|
||||
(use-package web-mode)
|
||||
(use-package yaml-mode)
|
||||
|
||||
(defgroup tazjin nil
|
||||
"Settings related to my configuration")
|
||||
|
||||
(defcustom depot-path "/depot"
|
||||
"Local path to the depot checkout"
|
||||
:group 'tazjin)
|
||||
|
||||
;; Configuration changes in `customize` can not actually be persisted
|
||||
;; to the customise file that Emacs is currently using (since it comes
|
||||
;; from the Nix store).
|
||||
;;
|
||||
;; The way this will work for now is that Emacs will *write*
|
||||
;; configuration to the file tracked in my repository, while not
|
||||
;; actually *reading* it from there (unless Emacs is rebuilt).
|
||||
(setq custom-file (expand-file-name "~/depot/tools/emacs/config/custom.el"))
|
||||
(load-library "custom")
|
||||
|
||||
(defvar home-dir (expand-file-name "~"))
|
||||
|
||||
;; Seed RNG
|
||||
(random t)
|
||||
|
||||
;; Load all other Emacs configuration. These configurations are
|
||||
;; added to `load-path' by Nix.
|
||||
(mapc 'require '(desktop
|
||||
mail-setup
|
||||
look-and-feel
|
||||
functions
|
||||
settings
|
||||
modes
|
||||
bindings
|
||||
eshell-setup))
|
||||
(telephone-line-setup)
|
||||
(ace-window-display-mode)
|
||||
|
||||
;; If a local configuration library exists, it should be loaded.
|
||||
;;
|
||||
;; This can be provided by calling my Emacs derivation with
|
||||
;; `withLocalConfig'.
|
||||
(if-let (local-file (locate-library "local"))
|
||||
(load local-file))
|
||||
|
||||
(provide 'init)
|
Loading…
Add table
Add a link
Reference in a new issue