refactor: packagise emacs configuration and lib refactor
This commit is contained in:
parent
60b02b0338
commit
52c33aa328
9 changed files with 208 additions and 168 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -3,10 +3,9 @@
|
||||||
/**/#*#
|
/**/#*#
|
||||||
/**/.#*
|
/**/.#*
|
||||||
!/flake.*
|
!/flake.*
|
||||||
!/emacs
|
!/config
|
||||||
!/.gitignore
|
!/.gitignore
|
||||||
!/README.org
|
!/README.org
|
||||||
!/media
|
!/media
|
||||||
!/.editorconfig
|
!/.editorconfig
|
||||||
!/lib.nix
|
!/lib.nix
|
||||||
!/config.el
|
|
||||||
|
|
139
config.el
139
config.el
|
@ -1,139 +0,0 @@
|
||||||
;; -*- lexical-binding: t -*-
|
|
||||||
|
|
||||||
|
|
||||||
(use-package emacs
|
|
||||||
:init
|
|
||||||
(setq frame-resize-pixelwise t
|
|
||||||
window-resize-pixelwise t
|
|
||||||
frame-inhibit-implied-resize t)
|
|
||||||
(defun crm-indicator (args)
|
|
||||||
(cons (format "[CRM%s] %s"
|
|
||||||
(replace-regexp-in-string
|
|
||||||
"\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" ""
|
|
||||||
crm-separator)
|
|
||||||
(car args))
|
|
||||||
(cdr args)))
|
|
||||||
(advice-add #'completing-read-multiple :filter-args #'crm-indicator)
|
|
||||||
(setq minibuffer-prompt-properties
|
|
||||||
'(read-only t cursor-intangible t face minibuffer-prompt))
|
|
||||||
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
|
|
||||||
:custom
|
|
||||||
(initial-scratch-message nil)
|
|
||||||
(inhibit-startup-screen t)
|
|
||||||
(inhibit-splash-screen t)
|
|
||||||
(menu-bar-mode nil)
|
|
||||||
(tool-bar-mode nil)
|
|
||||||
(scroll-bar-mode nil)
|
|
||||||
(delete-selection-mode t)
|
|
||||||
(column-number-mode t)
|
|
||||||
(enable-recursive-buffer t)
|
|
||||||
(read-extended-command-predicate #'command-completion-default-include-p)
|
|
||||||
(tab-always-indent 'complete)
|
|
||||||
:hook (prog-mode . display-line-numbers-mode))
|
|
||||||
|
|
||||||
(use-package ivy
|
|
||||||
:custom
|
|
||||||
(ivy-mode t)
|
|
||||||
(counsel-mode t)
|
|
||||||
(ivy-use-virtual-buffers t)
|
|
||||||
:bind (("C-s" . swiper-isearch)
|
|
||||||
("C-c C-r" . ivy-resume)
|
|
||||||
("<f6>" . ivy-resume)
|
|
||||||
("M-x" . counsel-M-x)
|
|
||||||
("C-x C-f" . counsel-find-file)
|
|
||||||
("<f1> f" . counsel-describe-function)
|
|
||||||
("<f1> v" . counsel-describe-variable)
|
|
||||||
("<f1> o" . counsel-describe-symbol)
|
|
||||||
("<f1> l" . counsel-find-library)
|
|
||||||
("<f2> i" . counsel-info-lookup-symbol)
|
|
||||||
("<f2> u" . counsel-unicode-char)
|
|
||||||
("C-c g" . counsel-git)
|
|
||||||
("C-c j" . counsel-git-grep)
|
|
||||||
("C-c k" . counsel-ag)
|
|
||||||
("C-x l" . counsel-locate)
|
|
||||||
("C-S-o" . counsel-rhythmbox)
|
|
||||||
:map minibuffer-local-map
|
|
||||||
("C-r" . counsel-minibuffer-history)))
|
|
||||||
|
|
||||||
(use-package savehist
|
|
||||||
:defer t
|
|
||||||
:commands (savehist-mode)
|
|
||||||
:hook after-init)
|
|
||||||
|
|
||||||
(use-package which-key
|
|
||||||
:defer t
|
|
||||||
:commands (which-key-mode)
|
|
||||||
:hook after-init)
|
|
||||||
|
|
||||||
(use-package base16-theme
|
|
||||||
:config
|
|
||||||
(load-theme 'base16-tokyo-night-dark t))
|
|
||||||
|
|
||||||
(use-package nix-ts-mode
|
|
||||||
:defer t
|
|
||||||
:commands (nix-ts-mode)
|
|
||||||
:mode "\\.nix\\'")
|
|
||||||
|
|
||||||
(use-package rust-mode
|
|
||||||
:defer t
|
|
||||||
:commands (rust-mode)
|
|
||||||
:mode "\\.rs\\'")
|
|
||||||
|
|
||||||
(use-package envrc
|
|
||||||
:defer t
|
|
||||||
:commands (envrc-global-mode envrc-mode)
|
|
||||||
:hook (after-init . envrc-global-mode))
|
|
||||||
|
|
||||||
(use-package eglot
|
|
||||||
:defer t
|
|
||||||
:commands (eglot eglot-ensure)
|
|
||||||
:hook (prog-mode . eglot-ensure))
|
|
||||||
|
|
||||||
(use-package qml-mode
|
|
||||||
:defer t
|
|
||||||
:commands (qml-mode)
|
|
||||||
:mode "\\.qml\\'")
|
|
||||||
|
|
||||||
(use-package haskell-mode
|
|
||||||
:defer t
|
|
||||||
:commands (haskell-mode)
|
|
||||||
:mode "\\.hs\\'")
|
|
||||||
|
|
||||||
(use-package python
|
|
||||||
:defer t
|
|
||||||
:commands (python-ts-mode python-mode)
|
|
||||||
:custom
|
|
||||||
(python-indent-offset 4))
|
|
||||||
|
|
||||||
(use-package cc-mode
|
|
||||||
:defer t
|
|
||||||
:commands (c-ts-mode
|
|
||||||
c++-ts-mode
|
|
||||||
c++-mode
|
|
||||||
c-mode)
|
|
||||||
:custom
|
|
||||||
(c-basic-offset 4))
|
|
||||||
|
|
||||||
(use-package nushell-mode
|
|
||||||
:defer t
|
|
||||||
:commands (nushell-mode)
|
|
||||||
:mode "\\.nu\\'")
|
|
||||||
|
|
||||||
(use-package tuareg
|
|
||||||
:defer t
|
|
||||||
:commands (tuareg-mode tuareg-opam-mode)
|
|
||||||
:mode "\\.ml\\'")
|
|
||||||
|
|
||||||
(use-package nim-mode
|
|
||||||
:defer t
|
|
||||||
:commands (nim-mode)
|
|
||||||
:mode "\\.nim\\'")
|
|
||||||
|
|
||||||
(use-package doom-modeline
|
|
||||||
:defer t
|
|
||||||
:commands (doom-modeline-mode)
|
|
||||||
:hook after-init
|
|
||||||
:custom
|
|
||||||
(doom-modeline-height 26))
|
|
||||||
|
|
||||||
(provide 'config)
|
|
22
config/config-dev.el
Normal file
22
config/config-dev.el
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
;; -*- lexical-binding: t -*-
|
||||||
|
|
||||||
|
|
||||||
|
(defun config-init-dev ()
|
||||||
|
(use-package which-key
|
||||||
|
:defer t
|
||||||
|
:commands (which-key-mode)
|
||||||
|
:custom
|
||||||
|
(which-key-mode t))
|
||||||
|
|
||||||
|
(use-package envrc
|
||||||
|
:defer t
|
||||||
|
:commands (envrc-global-mode envrc-mode)
|
||||||
|
:custom
|
||||||
|
(envrc-global-mode t))
|
||||||
|
|
||||||
|
(use-package eglot
|
||||||
|
:defer t
|
||||||
|
:commands (eglot eglot-ensure)
|
||||||
|
:hook (prog-mode . eglot-ensure)))
|
||||||
|
|
||||||
|
(provide 'config-dev)
|
29
config/config-ivy.el
Normal file
29
config/config-ivy.el
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
;; -*- lexical-binding: t -*-
|
||||||
|
|
||||||
|
|
||||||
|
(defun config-init-ivy ()
|
||||||
|
(use-package ivy
|
||||||
|
:custom
|
||||||
|
(ivy-mode t)
|
||||||
|
(counsel-mode t)
|
||||||
|
(ivy-use-virtual-buffers t)
|
||||||
|
:bind (("C-s" . swiper-isearch)
|
||||||
|
("C-c C-r" . ivy-resume)
|
||||||
|
("<f6>" . ivy-resume)
|
||||||
|
("M-x" . counsel-M-x)
|
||||||
|
("C-x C-f" . counsel-find-file)
|
||||||
|
("<f1> f" . counsel-describe-function)
|
||||||
|
("<f1> v" . counsel-describe-variable)
|
||||||
|
("<f1> o" . counsel-describe-symbol)
|
||||||
|
("<f1> l" . counsel-find-library)
|
||||||
|
("<f2> i" . counsel-info-lookup-symbol)
|
||||||
|
("<f2> u" . counsel-unicode-char)
|
||||||
|
("C-c g" . counsel-git)
|
||||||
|
("C-c j" . counsel-git-grep)
|
||||||
|
("C-c k" . counsel-ag)
|
||||||
|
("C-x l" . counsel-locate)
|
||||||
|
("C-S-o" . counsel-rhythmbox)
|
||||||
|
:map minibuffer-local-map
|
||||||
|
("C-r" . counsel-minibuffer-history))))
|
||||||
|
|
||||||
|
(provide 'config-ivy)
|
55
config/config-languages.el
Normal file
55
config/config-languages.el
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
;; -*- lexical-binding: t -*-
|
||||||
|
|
||||||
|
|
||||||
|
(defun config-init-languages ()
|
||||||
|
(use-package nix-ts-mode
|
||||||
|
:defer t
|
||||||
|
:commands (nix-ts-mode)
|
||||||
|
:mode "\\.nix\\'")
|
||||||
|
|
||||||
|
(use-package rust-mode
|
||||||
|
:defer t
|
||||||
|
:commands (rust-mode)
|
||||||
|
:mode "\\.rs\\'")
|
||||||
|
|
||||||
|
(use-package qml-mode
|
||||||
|
:defer t
|
||||||
|
:commands (qml-mode)
|
||||||
|
:mode "\\.qml\\'")
|
||||||
|
|
||||||
|
(use-package haskell-mode
|
||||||
|
:defer t
|
||||||
|
:commands (haskell-mode)
|
||||||
|
:mode "\\.hs\\'")
|
||||||
|
|
||||||
|
(use-package python
|
||||||
|
:defer t
|
||||||
|
:commands (python-ts-mode python-mode)
|
||||||
|
:custom
|
||||||
|
(python-indent-offset 4))
|
||||||
|
|
||||||
|
(use-package cc-mode
|
||||||
|
:defer t
|
||||||
|
:commands (c-ts-mode
|
||||||
|
c++-ts-mode
|
||||||
|
c++-mode
|
||||||
|
c-mode)
|
||||||
|
:custom
|
||||||
|
(c-basic-offset 4))
|
||||||
|
|
||||||
|
(use-package nushell-mode
|
||||||
|
:defer t
|
||||||
|
:commands (nushell-mode)
|
||||||
|
:mode "\\.nu\\'")
|
||||||
|
|
||||||
|
(use-package tuareg
|
||||||
|
:defer t
|
||||||
|
:commands (tuareg-mode tuareg-opam-mode)
|
||||||
|
:mode "\\.ml\\'")
|
||||||
|
|
||||||
|
(use-package nim-mode
|
||||||
|
:defer t
|
||||||
|
:commands (nim-mode)
|
||||||
|
:mode "\\.nim\\'"))
|
||||||
|
|
||||||
|
(provide 'config-languages)
|
16
config/config-ui.el
Normal file
16
config/config-ui.el
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
;; -*- lexical-binding: t -*-
|
||||||
|
|
||||||
|
|
||||||
|
(defun config-init-ui ()
|
||||||
|
(use-package doom-modeline
|
||||||
|
:defer t
|
||||||
|
:commands (doom-modeline-mode)
|
||||||
|
:custom
|
||||||
|
(doom-modeline-mode t)
|
||||||
|
(doom-modeline-height 26))
|
||||||
|
|
||||||
|
(use-package base16-theme
|
||||||
|
:config
|
||||||
|
(load-theme 'base16-tokyo-night-dark t)))
|
||||||
|
|
||||||
|
(provide 'config-ui)
|
63
config/config.el
Normal file
63
config/config.el
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
;;; config.el --- my emacs configuration -*- lexical-binding: t -*-
|
||||||
|
|
||||||
|
;; Author: Artur Manuel
|
||||||
|
;; URL: https://copeberg.org/amadaluzia/pankomacs
|
||||||
|
;; Version: 0.0.0
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
|
||||||
|
;; All this does is provide a configuration for Emacs to use.
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'config-ui)
|
||||||
|
(require 'config-dev)
|
||||||
|
(require 'config-ivy)
|
||||||
|
(require 'config-languages)
|
||||||
|
(require 'use-package)
|
||||||
|
|
||||||
|
(defun config-initialise ()
|
||||||
|
(config-init-dev)
|
||||||
|
(config-init-ui)
|
||||||
|
(config-init-languages)
|
||||||
|
(config-init-ivy)
|
||||||
|
(use-package emacs
|
||||||
|
:init
|
||||||
|
(setq frame-resize-pixelwise t
|
||||||
|
window-resize-pixelwise t
|
||||||
|
frame-inhibit-implied-resize t)
|
||||||
|
(defun crm-indicator (args)
|
||||||
|
(cons (format "[CRM%s] %s"
|
||||||
|
(replace-regexp-in-string
|
||||||
|
"\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" ""
|
||||||
|
crm-separator)
|
||||||
|
(car args))
|
||||||
|
(cdr args)))
|
||||||
|
(advice-add #'completing-read-multiple :filter-args #'crm-indicator)
|
||||||
|
(setq minibuffer-prompt-properties
|
||||||
|
'(read-only t cursor-intangible t face minibuffer-prompt))
|
||||||
|
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
|
||||||
|
:custom
|
||||||
|
(initial-scratch-message nil)
|
||||||
|
(inhibit-startup-screen t)
|
||||||
|
(inhibit-splash-screen t)
|
||||||
|
(menu-bar-mode nil)
|
||||||
|
(tool-bar-mode nil)
|
||||||
|
(scroll-bar-mode nil)
|
||||||
|
(delete-selection-mode t)
|
||||||
|
(column-number-mode t)
|
||||||
|
(enable-recursive-buffer t)
|
||||||
|
(read-extended-command-predicate #'command-completion-default-include-p)
|
||||||
|
(tab-always-indent 'complete)
|
||||||
|
:hook (prog-mode . display-line-numbers-mode))
|
||||||
|
|
||||||
|
(use-package savehist
|
||||||
|
:defer t
|
||||||
|
:commands (savehist-mode)
|
||||||
|
:hook after-init))
|
||||||
|
|
||||||
|
(add-hook #'after-init-hook #'config-initialise)
|
||||||
|
|
||||||
|
(provide 'config)
|
||||||
|
|
||||||
|
;;; config.el ends here
|
14
flake.nix
14
flake.nix
|
@ -20,11 +20,13 @@
|
||||||
{
|
{
|
||||||
lib = import ./lib.nix inputs;
|
lib = import ./lib.nix inputs;
|
||||||
formatter = forAllSystems (_: pkgs: pkgs.nixfmt-rfc-style);
|
formatter = forAllSystems (_: pkgs: pkgs.nixfmt-rfc-style);
|
||||||
packages = forAllSystems (_: pkgs: {
|
packages = forAllSystems (
|
||||||
pgtk = inputs.self.lib.mkPankomacs {
|
_: pkgs: {
|
||||||
inherit pkgs;
|
pgtk = inputs.self.lib.mkPankomacs {
|
||||||
emacs = pkgs.emacs30-pgtk;
|
inherit pkgs;
|
||||||
};
|
emacs = pkgs.emacs30-pgtk;
|
||||||
});
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
35
lib.nix
35
lib.nix
|
@ -1,16 +1,19 @@
|
||||||
inputs:
|
inputs:
|
||||||
let
|
let
|
||||||
|
pkgsWithEmacsOverlay =
|
||||||
|
system:
|
||||||
|
inputs.nixpkgs.legacyPackages.${system}.appendOverlays [
|
||||||
|
inputs.emacs.overlays.default
|
||||||
|
];
|
||||||
mkPankomacs =
|
mkPankomacs =
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
emacs,
|
emacs,
|
||||||
}: let
|
}:
|
||||||
pkgsWithEmacsOverlay = pkgs.appendOverlays [ inputs.emacs.overlays.default ];
|
(pkgsWithEmacsOverlay pkgs.stdenv.system).emacsWithPackagesFromUsePackage {
|
||||||
in
|
config = ./config/config.el;
|
||||||
pkgsWithEmacsOverlay.emacsWithPackagesFromUsePackage {
|
|
||||||
package = emacs;
|
|
||||||
defaultInitFile = true;
|
defaultInitFile = true;
|
||||||
config = ./config.el;
|
package = emacs;
|
||||||
extraEmacsPackages =
|
extraEmacsPackages =
|
||||||
epkgs:
|
epkgs:
|
||||||
builtins.attrValues {
|
builtins.attrValues {
|
||||||
|
@ -29,23 +32,13 @@ let
|
||||||
nushell-mode
|
nushell-mode
|
||||||
nim-mode
|
nim-mode
|
||||||
envrc
|
envrc
|
||||||
;
|
;
|
||||||
treesit-grammars = epkgs.treesit-grammars.with-all-grammars;
|
treesit-grammars = epkgs.treesit-grammars.with-all-grammars;
|
||||||
|
config = epkgs.trivialBuild {
|
||||||
|
name = "config-${inputs.self.shortRev or "dirty"}";
|
||||||
|
src = ./config;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
override =
|
|
||||||
_: prev:
|
|
||||||
builtins.listToAttrs (
|
|
||||||
map
|
|
||||||
(name: {
|
|
||||||
inherit name;
|
|
||||||
value = prev.emacs;
|
|
||||||
})
|
|
||||||
[
|
|
||||||
"use-package"
|
|
||||||
"savehist"
|
|
||||||
"which-key"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue