nixos/home/emacs/init.el

106 lines
3.4 KiB
EmacsLisp
Raw Normal View History

;;; init.el -*- lexical-binding: t; -*-
;;; Initial phase.
;; Load the custom file if it exists. Among other settings, this will
;; have the list `package-selected-packages', so we need to load that
;; before adding more packages. The value of the `custom-file'
;; variable must be set appropriately, by default the value is nil.
;; This can be done here, or in the early-init.el file.
2023-10-24 21:18:00 +01:00
(setq custom-file (locate-user-emacs-file "custom.el"))
(when (and custom-file (file-exists-p custom-file))
(load custom-file nil 'nomessage))
;; Add custom modules to the `load-path'
(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory))
;; Adds crafted-emacs modules to the `load-path'
(setq crafted-emacs-home (expand-file-name "crafted-emacs" user-emacs-directory))
(add-to-list 'load-path (expand-file-name "modules" crafted-emacs-home))
;;; Configuration phase
(require 'crafted-completion-config)
(require 'crafted-defaults-config)
(require 'crafted-ide-config)
(require 'crafted-org-config)
(require 'crafted-workspaces-packages)
(require 'crafted-writing-packages)
(require 'custom-email-config)
(require 'custom-feed-config)
(require 'custom-ide-config)
(require 'custom-ligatures-config)
2023-10-26 16:11:52 +01:00
(require 'custom-media-config)
(require 'custom-org-config)
(require 'custom-project-config)
(require 'custom-ui-config)
;;; Optional configuration
(setq user-full-name "Evie Litherland-Smith"
user-mail-address "evie@xenia.me.uk"
sendmail-program (executable-find "msmtp")
send-mail-function #'smtpmail-send-it
message-sendmail-f-is-evil t
message-sendmail-extra-arguments '("--read-envelope-from")
message-send-mail-function #'message-send-mail-with-sendmail
message-kill-buffer-on-exit t
2023-10-23 23:55:52 +01:00
display-line-numbers 'relative
fill-column 80)
;; Theme settings
(customize-set-variable 'crafted-startup-inhibit-splash t)
(setq use-dialog-box nil)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(load-theme 'doom-tokyo-night t)
(add-to-list 'default-frame-alist '(font . "FiraCode Nerd Font-12"))
(global-prettify-symbols-mode)
(set-frame-parameter nil 'alpha-background 80)
(add-to-list 'default-frame-alist '(alpha-background . 80))
;; Extra minor-modes
(which-key-mode)
2023-10-23 23:55:52 +01:00
;; Extra functions
(defun crafted-startup-example/display-startup-time ()
"Display the startup time after Emacs is fully initialized."
(message "Crafted Emacs loaded in %s."
(emacs-init-time)))
(add-hook 'emacs-startup-hook #'crafted-startup-example/display-startup-time)
2023-10-23 23:55:52 +01:00
(defun my/org-move-done-tasks-to-bottom ()
"Sort all tasks in the topmost heading by TODO state."
(interactive)
(save-excursion
(while (org-up-heading-safe))
(org-sort-entries nil ?o))
;; Reset the view of TODO items
(org-overview)
(org-show-entry)
(org-show-children))
;; Set default coding system (especially for Windows)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
;; Magit settings
(setq magit-clone-default-directory "~/Projects/")
;; ntfy server settings
(setq ntfy-server "https://ntfy.xenia.me.uk"
ntfy-topic "UhrNGphnSKCpCnk8"
ntfy-header "Notification from emacs"
ntfy-tags "purple_circle,loudspeaker")
;; Apheleia settings
(setq apheleia-remote-algorithm 'local)
;; TRAMP settings
(setq tramp-default-method "sshx"
tramp-default-remote-shell "/bin/sh"
tramp-remote-path '(tramp-own-remote-path tramp-default-remote-path))