.
This commit is contained in:
parent
8b669d32b9
commit
35978aca9a
2 changed files with 126 additions and 12 deletions
|
@ -18,16 +18,17 @@
|
||||||
srfi-69
|
srfi-69
|
||||||
srfi-197
|
srfi-197
|
||||||
utf8
|
utf8
|
||||||
] ++ [ pkgs.chicken ];
|
] ++ (with pkgs; [
|
||||||
|
chicken
|
||||||
nixpkgs.overlays = [
|
# (chicken.overrideAttrs (final: previous: {
|
||||||
(final: prev: {
|
# assets = fetchurl {
|
||||||
chicken = prev.chicken.overrideAttrs (oldAttrs: {
|
# url = "https://3e8.org/pub/chicken-doc/chicken-doc-repo-5.tgz";
|
||||||
postInstall = (oldAttrs.postInstall or "") + ''
|
# sha256 = "sha256-3fwcepem+1xj5UlQ+fCjvjHVtE8LO5co2A0k5gx5cZU=";
|
||||||
cd `csi -R chicken.platform -p '(chicken-home)'`
|
# };
|
||||||
curl https://3e8.org/pub/chicken-doc/chicken-doc-repo-5.tgz | sudo tar zx
|
# postInstall = (previous.postInstall or "") + ''
|
||||||
'';
|
# cd `csi -R chicken.platform -p '(chicken-home)'`;
|
||||||
});
|
# tar zxf ${assets};
|
||||||
})
|
# '';
|
||||||
];
|
# }))
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
113
emacs/init.org
Normal file
113
emacs/init.org
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
#+TITLE: Emacs Init File
|
||||||
|
#+AUTHOR: Daniel Ziltener
|
||||||
|
|
||||||
|
* Initialization
|
||||||
|
|
||||||
|
** Requirements
|
||||||
|
|
||||||
|
Since I am using ~cl-defun~ in this init file, I need to import ~cl-macs~.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(require 'cl-macs)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Personal Information
|
||||||
|
|
||||||
|
#+NAME: pers-info-table
|
||||||
|
| Name | Mail |
|
||||||
|
|-----------------+---------------------|
|
||||||
|
| Daniel Ziltener | dziltener@lyrion.ch |
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :var input=pers-info-table
|
||||||
|
(let ((row (car input)))
|
||||||
|
(setq user-full-name (cl-first row))
|
||||||
|
(setq user-mail-address (cl-second row)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
For storage of passwords, I use [[https://www.passwordstore.org/][pass]]: src_emacs-lisp[]{(auth-source-pass-enable)}
|
||||||
|
|
||||||
|
** Customizations
|
||||||
|
|
||||||
|
Since this init file is version controlled, and I set all customizations
|
||||||
|
myself in =use-package= blocks, I want Emacs to use a separate file
|
||||||
|
for authorized =.dir-local= variables and similar stuff.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(setq custom-file "~/.emacs.d/custom.el")
|
||||||
|
(when (file-exists-p custom-file)
|
||||||
|
(load custom-file))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Package Manager
|
||||||
|
|
||||||
|
I use =straight.el= as package manager.
|
||||||
|
|
||||||
|
#+NAME: straight-settings
|
||||||
|
| Setting | Value |
|
||||||
|
|-------------------------+-------|
|
||||||
|
| Use Straight as default | f |
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :var tbl=straight-settings
|
||||||
|
(defvar bootstrap-version)
|
||||||
|
(let ((bootstrap-file
|
||||||
|
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
||||||
|
(bootstrap-version 6))
|
||||||
|
(unless (file-exists-p bootstrap-file)
|
||||||
|
(with-current-buffer
|
||||||
|
(url-retrieve-synchronously
|
||||||
|
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
|
||||||
|
'silent 'inhibit-cookies)
|
||||||
|
(goto-char (point-max))
|
||||||
|
(eval-print-last-sexp)))
|
||||||
|
(load bootstrap-file nil 'nomessage))
|
||||||
|
|
||||||
|
(let ((settings (car tbl)))
|
||||||
|
(setq straight-use-package-by-default
|
||||||
|
(string= "t" (cl-first settings))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Helper Functions
|
||||||
|
|
||||||
|
Those are meant to reduce code duplication, and add some basic useful features.
|
||||||
|
The first one is a function to create conditional keybindings.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(cl-defun conditional-keybind
|
||||||
|
"Creates a keybinding that checks `filter-fn`. If it succeeds,
|
||||||
|
`target-fn` is run, otherwise `fail-fn`. If no fail-fn is given,
|
||||||
|
`self-insert-command` is run instead.
|
||||||
|
`target-fn` and `fail-fn` must both be interactive."
|
||||||
|
(lambda (_prefix)
|
||||||
|
(interactive "P")
|
||||||
|
(if (funcall filter-fn)
|
||||||
|
(call-interactively target-fn)
|
||||||
|
(call-interactively fail-fn))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Core Emacs Customization :important:
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package emacs
|
||||||
|
:delight (eldoc-mode " ")
|
||||||
|
:custom
|
||||||
|
(completion-cycle-threshold 10)
|
||||||
|
(display-time-mode t)
|
||||||
|
(enable-recursive-minibuffers t)
|
||||||
|
(enable-remote-dir-locals t)
|
||||||
|
(global-hl-line-mode t)
|
||||||
|
(indent-tabs-mode nil)
|
||||||
|
(menu-bar-mode nil)
|
||||||
|
(minibuffer-prompt-properties (read-only t cursor-intangible t face minibuffer-prompt))
|
||||||
|
(read-extended-command-predicate #'command-completion-default-include-p)
|
||||||
|
(recentf-mode t)
|
||||||
|
(scroll-bar-mode nil)
|
||||||
|
(tab-always-indent 'complete)
|
||||||
|
(tool-bar-mode nil)
|
||||||
|
:custom-face
|
||||||
|
(default ((t (:weight bold :height 113 :width normal :family "VictorMono Nerd Font"))))
|
||||||
|
:hook
|
||||||
|
(minibuffer-setup . cursor-intangible-mode)
|
||||||
|
:config
|
||||||
|
(advice-add 'risky-local-variable-p :override #'ignore))
|
||||||
|
#+end_src
|
||||||
|
|
Loading…
Reference in a new issue