From 35d6c2c70824cf77ef2216889cc9730b622f5ac1 Mon Sep 17 00:00:00 2001 From: Emile Date: Fri, 13 Sep 2024 15:04:06 +0200 Subject: big push --- nix/hosts/caladan/home_emile.nix | 306 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 295 insertions(+), 11 deletions(-) (limited to 'nix/hosts/caladan/home_emile.nix') diff --git a/nix/hosts/caladan/home_emile.nix b/nix/hosts/caladan/home_emile.nix index f57daaf..06131dd 100644 --- a/nix/hosts/caladan/home_emile.nix +++ b/nix/hosts/caladan/home_emile.nix @@ -1,14 +1,17 @@ -{ pkgs, lib, stdenv, ... }: +{ pkgs, ... }: { home = { + # The state version is required and should stay at the version you + # originally installed. stateVersion = "22.11"; username = "emile"; homeDirectory = "/Users/emile"; }; - # let home-manager install and manage itself programs = { + + # let home-manager install and manage itself home-manager.enable = true; direnv = { @@ -56,8 +59,285 @@ emacs = { enable = true; package = pkgs.emacs; + extraPackages = epkgs: with epkgs; [ + nix-mode + magit + meow + ]; extraConfig = '' (setq standard-indent 2) + + ;; MELPA Packages + (require 'package) + (package-initialize) + (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) + (unless package-archive-contents + (package-refresh-contents)) + + ;; Install packages. + (dolist (package '(use-package sly corfu org)) + (unless (package-installed-p package) + (package-install package))) + + (use-package org) + + ;(use-package evil-colemak-basics) + + (when (display-graphic-p) + (tool-bar-mode 0) + (scroll-bar-mode 0)) + (setq inhibit-startup-screen t) + + (load-theme 'leuven) ;; light theme + + ;; pixel perfect scrolling + (setq pixel-scroll-precision-mode 1) + + ;; dont create lockfiles + (setq create-lockfiles nil) + + ;; delete excess backup version silently + (setq delete-old-versions -1) + (setq make-backup-files nil) ; stop creating ~ files + + ;; use version controll + (setq version-control t) + + ;; utf8 by default(setq coding-system-for-read 'utf-8) + (setq coding-system-for-write 'utf-8) + + ;; org-mode + (require 'org) + (define-key global-map "\C-cl" 'org-store-link) + (define-key global-map "\C-ca" 'org-agenda) + (setq org-log-done t) + + ;; random emacs foo + (setq-default indent-tabs-mode nil) ;; use spaces, not tabs + (setq show-paren-delay 0) + (show-paren-mode) + + ;; write customizations to a custom file + (setq custom-file (expand-file-name "custom.el" user-emacs-directory)) + + ;; Configure SBCL as the Lisp program for SLIME + (add-to-list 'exec-path "/Users/emile/.nix-profile/bin") + (defvar inerior-lisp-program "clisp") + + ;; configure parinfer to be enabled as a mode when the major lisp mode is enabled + (add-to-list 'load-path "/Users/emile/parinfer-rust") + (add-hook 'emacs-lisp-mode 'parinfer-rust-mode) + (add-hook 'emacs-lisp-mods (lambda () (lispy-mode 1))) + + (require 'meow) + + (defun meow-setup () + "My colemak-dh meow keybindings with some helix influence." + (setq meow-cheatsheet-layout meow-cheatsheet-layout-colemak-dh) + (meow-motion-overwrite-define-key + ;; Use e to move up, n to move down. + ;; Since special modes usually use n to move down, we only overwrite e here. + '("e" . meow-prev) + '("" . ignore)) + (meow-leader-define-key + '("?" . meow-cheatsheet) + ;; To execute the originally e in MOTION state, use SPC e. + '("e" . "H-e") + '("1" . meow-digit-argument) + '("2" . meow-digit-argument) + '("3" . meow-digit-argument) + '("4" . meow-digit-argument) + '("5" . meow-digit-argument) + '("6" . meow-digit-argument) + '("7" . meow-digit-argument) + '("8" . meow-digit-argument) + '("9" . meow-digit-argument) + '("0" . meow-digit-argument)) + (meow-normal-define-key + '("0" . meow-expand-0) + '("1" . meow-expand-1) + '("2" . meow-expand-2) + '("3" . meow-expand-3) + '("4" . meow-expand-4) + '("5" . meow-expand-5) + '("6" . meow-expand-6) + '("7" . meow-expand-7) + '("8" . meow-expand-8) + '("9" . meow-expand-9) + '("-" . negative-argument) + '(";" . meow-reverse) + '("," . meow-inner-of-thing) + '("." . meow-bounds-of-thing) + '("[" . meow-beginning-of-thing) + '("]" . meow-end-of-thing) + '("/" . meow-visit) + '("a" . meow-append) + '("A" . meow-open-below) + '("b" . meow-back-word) + '("B" . meow-back-symbol) + '("c" . meow-change) + ; '("C" . ) + '("d" . meow-delete) + ;'("D" . delete-window) + '("e" . meow-next) + '("E" . meow-next-expand) + '("f" . find-file) + '("F" . flycheck-list-errors) + '("g" . meow-cancel-selection) + '("G" . meow-grab) + '("h" . meow-mark-word) + '("H" . meow-mark-symbol) + '("i" . meow-prev) + '("I" . meow-prev-expand) + '("j" . meow-join) + ; '("J" . ) + '("k" . meow-kill) + '("K" . meow-paren-mode) + '("l" . meow-line) + '("L" . meow-goto-line) + '("m" . meow-block) + '("M" . meow-to-block) + '("n" . meow-left) + '("N" . meow-left-expand) + '("o" . meow-right) + '("O" . meow-right-expand) + '("p" . meow-yank) + ; '("P" . ) + '("q" . meow-quit) + ; '("Q" . ) + '("r" . meow-replace) + '("R" . undo-redo) + '("s" . meow-insert) + '("S" . meow-open-above) + '("t" . meow-till) + ; '("T" . ) + '("u" . meow-undo) + '("U" . meow-undo-in-selection) + '("v" . meow-search) + '("w" . meow-next-word) + '("W" . meow-next-symbol) + '("x" . meow-delete) + '("X" . meow-backward-delete) + '("y" . meow-save) + '("z" . meow-pop-selection) + ; '("Z" . ) + '("'" . repeat) + '("" . ignore))) + + + (meow-setup) + (meow-global-mode 1) + + ;; Corfu completion + (use-package corfu + :custom + (corfu-cycle-tab t) + (corfu-auto t) + (corfu-auto-prefix 2) + (corfu-auto-delay 0.0) + (corfu-quit-at-boundary 'separator) + (corfu-echo-documentation 0.5) + (corfu-preview-current 'insert) + (corfu-preselect 'prompt) + :bind (:map corfu-map + ("M-SPC" . corfu-insert-separator) + ("RET" . nil) + ("TAB" . corfu-next) + ([tab] . corfu-next) + ("S-TAB" . corfu-previous) + ([backtab] . corfu-previous) + ("S-" . corfu-inser)) + :init + (global-corfu-mode) + (corfu-history-mode) + + :config + (add-hook 'eshell-mode-hook + (lambda () + (setq-local corfu-quit-at-boundary t + corfu-quit-no-match t + corfu-auto nil) + (corfu-mode)))) + + ;; In-margin annotations + (use-package marginalia + :custom + (marginalia-max-relative-age 0) + (marginalia-align 'right) + :init + (marginalia-mode)) + + ;; Fancy icons + (use-package all-the-icons-completion + :after (marginalia all-the-icons) + :hook (marginalia . all-the-icons-completion-marginalia-setup) + :init (all-the-icons-completion-mode)) + + ;; Usable minibuffers + (use-package vertico + :init (vertico-mode) + :custom (vertico-count 13) + (vertico-resize t) + (vertico-cycle nil) + :config (vertico-mode)) + + ;; orderless completion + ;; This allows searching for space separated terms in any order + (use-package orderless + :init (setq completion-styles '(orderless basic) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))) + )) + + ;; general purpose emacs settings + (use-package emacs + :init + + ;; do not allow cursor in the minibuffer prompt + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + + ;; support opening new minibuffers from inside existing minibuffers + (setq enable-recursive-minibuffers t) + + ;; Emacs 28 and newer: Hide commands in M-x which do not work in the current + ;; mode. Vertico commands are hidden in normal buffers. This setting is + ;; useful beyond Vertico. + (setq read-extended-command-predicate #'command-completion-default-include-p)) + + ;; Add "lisp" to the list of languages babel is allowed to eval + ;(setq-default org-babel-lisp-eval-fn #'sly-eval) + (org-babel-do-load-languages + 'org-babel-load-languages + '((lisp . t))) + + ;; markdown mode + (use-package markdown-mode + :ensure t + :mode ("README\\.md\\'" . gfm-mode) + :init (setq markdown-command "multimarkdown")) + + ;; minibuffer with help when waiting too long + (use-package which-key + :ensure t + :config + (setq which-key-idle-delay 0.1) + (setq which-key-idle-secondary-delay 0.1) + (which-key-mode)) + + ;; Display imenu (symbols) in a separate buffer + (use-package imenu-list :ensure t + :init + (setq imenu-list-auto-resize t) + (setq imenu-list-focus-after-activation t)) + + ;; error checking + (use-package flycheck + :ensure t + :init (global-flycheck-mode)) + + (provide '.emacs) ; makes flycheck happy ''; }; @@ -103,7 +383,7 @@ "cmd+shift+k" = "move_window up"; "cmd+shift+l" = "move_window right"; - "cmd+shift+m" = "detach_window ask"; + # "cmd+shift+m" = "detach_window ask"; "command+j" = "kitten pass_keys.py neighboring_window bottom command+j"; "command+k" = "kitten pass_keys.py neighboring_window top command+k"; @@ -112,14 +392,14 @@ "command+b" = "combine : clear_terminal scroll active : send_text normal,application \x0c"; # "ctrl+n" = "send_text all \x0e"; - "ctrl+e" = "send_text all \x01h"; - "ctrl+n" = "send_text all \x01i"; - "ctrlshift++n" = "send_text all \x01i"; - - "ctrl+left" = "resize_window wider"; - "ctrl+right" = "resize_window narrower"; - "ctrl+up" = "resize_window shorter"; - "ctrl+down" = "resize_window taller"; + # "ctrl+e" = "send_text all \x01h"; + # "ctrl+n" = "send_text all \x01i"; + # "ctrlshift++n" = "send_text all \x01i"; + + # "ctrl+left" = "resize_window wider"; + # "ctrl+right" = "resize_window narrower"; + # "ctrl+up" = "resize_window shorter"; + # "ctrl+down" = "resize_window taller"; }; environment = { }; @@ -193,6 +473,10 @@ tiny # irc + rlwrap + + entr + # blender # ] ++ lib.optionals stdenv.isDarwin [ -- cgit 1.4.1