initial commit
This commit is contained in:
commit
fb46d04a50
8 changed files with 393 additions and 0 deletions
20
config/default.nix
Normal file
20
config/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{pkgs, ...}:
|
||||
with pkgs;
|
||||
emacsWithPackagesFromUsePackage {
|
||||
config = ./init.el;
|
||||
package = pkgs.emacs29;
|
||||
|
||||
defaultInitFile = true;
|
||||
|
||||
alwaysEnsure = true;
|
||||
alwaysTangle = true;
|
||||
|
||||
override = epkgs:
|
||||
epkgs
|
||||
// {
|
||||
sideline-eglot = callPackage ./extraPackages/sideline-eglot.nix {
|
||||
inherit (pkgs) fetchFromGitHub;
|
||||
inherit (epkgs) trivialBuild sideline;
|
||||
};
|
||||
};
|
||||
}
|
19
config/extraPackages/sideline-eglot.nix
Normal file
19
config/extraPackages/sideline-eglot.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
sideline,
|
||||
trivialBuild,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
trivialBuild rec {
|
||||
pname = "sideline-eglot";
|
||||
version = "main-12-08-2024";
|
||||
src = fetchFromGitHub {
|
||||
owner = "emacs-sideline";
|
||||
repo = "sideline-eglot";
|
||||
rev = "d7fbb9e13edbe5b9b9de464c8dabb8b0014de78e";
|
||||
hash = "sha256-/NCclLf4stF4+C1W+s2Y+LJ0TgqGAxVDa6v7+H+3/vA=";
|
||||
};
|
||||
propagatedUserEnvPkgs = [
|
||||
sideline
|
||||
];
|
||||
buildInputs = propagatedUserEnvPkgs;
|
||||
}
|
122
config/init.el
Normal file
122
config/init.el
Normal file
|
@ -0,0 +1,122 @@
|
|||
; Disable bars
|
||||
(menu-bar-mode -1)
|
||||
(scroll-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
|
||||
; Set font
|
||||
(set-frame-font "Maple Mono NF 12" nil t)
|
||||
|
||||
; Set theme
|
||||
(use-package catppuccin-theme :ensure t :demand t)
|
||||
(load-theme 'catppuccin t)
|
||||
|
||||
; Set modeline
|
||||
(use-package doom-modeline
|
||||
:ensure t
|
||||
:hook (after-init . doom-modeline-mode))
|
||||
|
||||
; Emoji support
|
||||
(use-package emojify
|
||||
:hook (after-init . global-emojify-mode))
|
||||
|
||||
; Evil mode
|
||||
(use-package evil
|
||||
:ensure t
|
||||
:init
|
||||
(setq evil-want-integration t) ;; This is optional since it's already set to t by default.
|
||||
(setq evil-want-keybinding nil)
|
||||
:config
|
||||
(evil-mode 1))
|
||||
|
||||
;; Evil collection
|
||||
(use-package evil-collection
|
||||
:after evil
|
||||
:ensure t
|
||||
:config
|
||||
(evil-collection-init))
|
||||
|
||||
;; Evil leader
|
||||
(use-package evil-leader
|
||||
:after evil
|
||||
:config
|
||||
(global-evil-leader-mode)
|
||||
(setq evil-leader/leader "<SPC>") ;; Set the leader key to space
|
||||
(evil-leader/set-key
|
||||
"a" #'eglot-code-actions))
|
||||
|
||||
(use-package undo-tree
|
||||
:demand t
|
||||
:config
|
||||
(global-undo-tree-mode) ;; Enable undo-tree mode globally
|
||||
(setq undo-tree-history-directory-alist '(("." . "~/.emacs.d/undo")))) ;; Directory for undo files
|
||||
|
||||
; Dashboard
|
||||
(use-package dashboard
|
||||
:ensure t
|
||||
:config
|
||||
(dashboard-setup-startup-hook)
|
||||
(setq dashboard-startup-banner 'logo))
|
||||
|
||||
; Direnv
|
||||
(use-package direnv
|
||||
:config
|
||||
(direnv-mode))
|
||||
|
||||
; Nix
|
||||
(use-package nix-mode
|
||||
:mode "\\.nix\\'")
|
||||
|
||||
; Treesitter
|
||||
(use-package tree-sitter
|
||||
:hook ((prog-mode . tree-sitter-mode)
|
||||
(prog-mode . tree-sitter-hl-mode)))
|
||||
|
||||
(use-package tree-sitter-langs)
|
||||
|
||||
(use-package treesit-auto
|
||||
:config
|
||||
(global-treesit-auto-mode)
|
||||
(dolist (lang treesit-language-source-alist)
|
||||
(let ((mode (intern (format "%s-ts-mode" (car lang)))))
|
||||
(when (fboundp mode)
|
||||
(add-to-list 'major-mode-remap-alist
|
||||
(cons (intern (car lang)) mode))))))
|
||||
|
||||
; Eglot setup
|
||||
(add-hook 'prog-mode-hook 'eglot-ensure)
|
||||
|
||||
(evil-leader/set-key
|
||||
"a" #'eglot-code-actions)
|
||||
|
||||
;; Function to format the buffer using Eglot
|
||||
(defun my/eglot-format-buffer-on-save ()
|
||||
"Format the current buffer if Eglot is active."
|
||||
(when (bound-and-true-p eglot--managed-p)
|
||||
(eglot-format-buffer)))
|
||||
|
||||
;; Add the function to the save-hook
|
||||
(add-hook 'before-save-hook #'my/eglot-format-buffer-on-save)
|
||||
|
||||
; Flycheck
|
||||
(use-package flycheck
|
||||
:ensure t
|
||||
:config
|
||||
(add-hook 'after-init-hook #'global-flycheck-mode))
|
||||
|
||||
; Sideline
|
||||
(use-package sideline-flycheck
|
||||
:hook (flycheck-mode . sideline-mode)
|
||||
:init (setq sideline-backends-right '(sideline-flycheck)
|
||||
sideline-delay 0.0))
|
||||
|
||||
(use-package sideline-flycheck
|
||||
:hook (flycheck-mode . sideline-flycheck-setup)
|
||||
:init (setq sideline-flycheck-display-mode 'line))
|
||||
|
||||
; Eglot
|
||||
(use-package sideline-eglot
|
||||
:init
|
||||
(setq sideline-backends-right '(sideline-eglot)))
|
||||
|
||||
(use-package eglot :hook (eglot-mode . sideline-mode)) ; enable it when eglot is on
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue