diff options
| author | Adrian Kummerlaender | 2020-06-07 00:02:27 +0200 | 
|---|---|---|
| committer | Adrian Kummerlaender | 2020-06-07 00:02:27 +0200 | 
| commit | dfa9dc1a2cad1eeb39c1a48936ef2b69afc0df37 (patch) | |
| tree | 08b53a46430c6efaa78f9a27ffa3cec5983376d2 /gui | |
| parent | 823e580047748ecee84436be2eb7e16e1e04458f (diff) | |
| download | nixos_home-dfa9dc1a2cad1eeb39c1a48936ef2b69afc0df37.tar nixos_home-dfa9dc1a2cad1eeb39c1a48936ef2b69afc0df37.tar.gz nixos_home-dfa9dc1a2cad1eeb39c1a48936ef2b69afc0df37.tar.bz2 nixos_home-dfa9dc1a2cad1eeb39c1a48936ef2b69afc0df37.tar.lz nixos_home-dfa9dc1a2cad1eeb39c1a48936ef2b69afc0df37.tar.xz nixos_home-dfa9dc1a2cad1eeb39c1a48936ef2b69afc0df37.tar.zst nixos_home-dfa9dc1a2cad1eeb39c1a48936ef2b69afc0df37.zip | |
Add basic port of my custom colorscheme to Emacs
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/conf/init.el | 10 | ||||
| -rw-r--r-- | gui/conf/metakr.org | 352 | ||||
| -rw-r--r-- | gui/emacs.nix | 23 | 
3 files changed, 375 insertions, 10 deletions
| diff --git a/gui/conf/init.el b/gui/conf/init.el index 57b8791..b07c14e 100644 --- a/gui/conf/init.el +++ b/gui/conf/init.el @@ -22,6 +22,8 @@  (eval-when-compile (require 'use-package)) +(load-library "akr-theme") +  (use-package evil    :ensure t    :init @@ -35,11 +37,6 @@    (global-evil-leader-mode 1)    (evil-leader/set-leader ",")) -(use-package poet-theme -  :ensure t -  :config -  (load-theme 'poet-dark t)) -  (use-package darkroom    :ensure t    :config @@ -170,3 +167,6 @@  (use-package interleave    :ensure t) + +(use-package rainbow-mode +  :ensure t) diff --git a/gui/conf/metakr.org b/gui/conf/metakr.org new file mode 100644 index 0000000..fe67e2f --- /dev/null +++ b/gui/conf/metakr.org @@ -0,0 +1,352 @@ +#+TITLE: Metakr + +This file describes a basic Emacs version of my custom Vim color theme _akr_. +For quick iteration all colors are stored in a table.  + +* Tangle scaffold +#+BEGIN_SRC emacs-lisp :tangle ./akr-theme.el :noweb yes +(deftheme akr "A theme of my own making.") +   +<<theme-generator(palette=akr-palette, theme-name="akr")>> + +(when (and (boundp 'custom-theme-load-path) +           load-file-name) +  (add-to-list 'custom-theme-load-path +               (file-name-as-directory +                (file-name-directory load-file-name)))) + +(provide-theme 'akr) +(provide 'akr-theme) +#+END_SRC +* Colors +#+NAME: akr-palette +| Label                     | Color   | +| fg                        | #F2F2F2 | +| bg                        | #161616 | +| emph                      | #eeeeee | +| sep                       | #444444 | +| hlt                       | #000000 | +| bg-hlt                    | #8C3346 | +| muted                     | #F2F2F2 | +| meta                      | #ede7dd | +| link                      | #AADB0F | +| link-underline            | #AADB0F | +| header                    | #AADB0F | +| button                    | #aaaaaa | +| glyph                     | #f7ffd1 | +| cursor                    | #AADB0F | +| paren-match-fg            | #161616 | +| paren-match-bg            | #AADB0F | +| search-fg                 | #161616 | +| search-bg                 | #909636 | +| search-fail-bg            | #8C3346 | +| tooltip-fg                | #161616 | +| tooltip-bg                | #909636 | +| shadow                    | #9E9E9E | +| secondary-bg              | #080808 | +| trailing-bg               | #8C3346 | +| lazy-hlt-fg               | #000000 | +| lazy-hlt-bg               | #ffffff | +| evil-rep-fg               | #F2F2F2 | +| evil-rep-bg               | #161616 | +| mode-line-fg              | #909636 | +| header-line-bg            | #080808 | +| mode-line-hlt             | #000000 | +| mode-line-inactive        | #9E9E9E | +| error                     | #8C3346 | +| builtin                   | #AADB0F | +| string                    | #AADB0F | +| function-name             | #F2F2F2 | +| keyword                   | #F2F2F2 | +| constant                  | #F2F2F2 | +| type                      | #AADB0F | +| variable                  | #F2F2F2 | +| org-meta                  | #E4E093 | +| org-document-info         | #E4E093 | +| org-table                 | #080808 | +| org-quote-fg              | #F2F2F2 | +| org-quote-bg              | #080808 | +| org-date                  | #c6b6ad | +| org-title                 | #AADB0F | +| org-title-underline       | #F2F2F2 | +| org-checkbox              | #999999 | +| org-scheduled             | #dddddd | +| org-scheduled-today       | #ffffff | +| org-done                  | #909636 | +| org-todo                  | #8C3346 | +| org-tag                   | #F2F2F2 | +| org-block-line            | #080808 | +| org-block-bg              | #080808 | +| org-agenda-structure-fg   | #aaaaaa | +| org-agenda-structure-bg   | #080808 | +| org-agenda-today-fg       | #dddddd | +| org-agenda-today-bg       | #000000 | +| org-special-keyword       | #777777 | +| org-sched-prev            | #8C3346 | +| org-agenda-done           | #909636 | + +* Structure +#+NAME: structure +#+BEGIN_SRC emacs-lisp +;; Basics +'((default +    :background @bg +    :foreground @fg) +  (italic +   :foreground @emph +   :slant italic) +  (highlight +   :background @hlt +   :overline nil) +  (region +   :background @bg-hlt) +  (fringe +   :background @bg) +  (button +   :inherit default +   :foreground @button) +  (escape-glyph +   :foreground @glyph) +  (link +   :underline (:color @link-underline :style line) +   :foreground @link) +  (link-visited +   :inherit link) +  (cursor +   :background @cursor) +  (show-paren-match +   :background @paren-match-fg +   :foreground @paren-match-bg) +  (isearch +   :foreground @search-fg +   :background @search-bg) +  (isearch-fail +   :background @search-fail-bg) +  (query-replace +   :inherit isearch) +  (tooltip +   :inherit default +   :foreground @tooltip-fg +   :background @tooltip-bg) +  (shadow +   :foreground @shadow) +  (secondary-selection +   :background @secondary-bg) +  (trailing-whitespace +   :background @trailing-bg) +  (lazy-highlight +   :foreground @lazy-hlt-fg +   :background @lazy-hlt-bg) +  (next-error +   :inherit region) +  (window-divider +   :background @sep +   :foreground @sep) +  (vertical-border +   :background @sep +   :foreground @sep) + +;; Evil +  (evil-ex-substitute-replacement +   :foreground @evil-rep-fg +   :background @evil-rep-bg +   :underline nil) + +;; Minibuffer +  (minibuffer-prompt +   :inherit fixed-pitch +   :weight bold +   :foreground @meta) + + ;; Mode Line +  (mode-line +   :inherit fixed-pitch +   :foreground @mode-line-fg +   :background @bg +   :overline @sep +   :box (:line-width 3 :color @bg)) +  (header-line +   :overline nil +   :background @header-line-bg +   :box (:line-width 3 :color @header-line-bg) +   :underline @sep +   :inherit mode-line) +  (mode-line-buffer-id +   :weight bold) +  (mode-line-emphasis +   :weight bold) +  (mode-line-highlight +   :background @mode-line-hlt) +  (mode-line-inactive +   :inherit mode-line +   :background @bg +   :foreground @mode-line-inactive +   :box (:color @bg :line-width 3)) + +;; Syntax +  (error +   :foreground @error +   :inherit fixed-pitch) +  (font-lock-comment-face +   :foreground @muted +   :slant italic +   :inherit fixed-pitch) +  (font-lock-builtin-face +   :foreground @builtin +   :inherit fixed-pitch) +  (font-lock-string-face +   :inherit fixed-pitch +   :foreground @string) +  (font-lock-function-name-face +   :inherit fixed-pitch +   :foreground @function-name) +  (font-lock-keyword-face +   :inherit fixed-pitch +   :foreground @keyword) +  (font-lock-comment-delimiter-face +   :inherit fixed-pitch +   :inherit font-lock-comment-face) +  (font-lock-constant-face +   :inherit fixed-pitch +   :foreground @constant) +  (font-lock-doc-face +   :inherit fixed-pitch +   :inherit font-lock-string-face) +  (font-lock-preprocessor-face +   :inherit fixed-pitch +   :inherit font-lock-builtin-face) +  (font-lock-regexp-grouping-backslash +   :inherit fixed-pitch +   :inherit bold) +  (font-lock-regexp-grouping-construct +   :inherit fixed-pitch +   :inherit bold) +  (font-lock-type-face +   :foreground @type +   :inherit fixed-pitch) +  (font-lock-variable-name-face +   :inherit fixed-pitch +   :foreground @variable) +  (font-lock-warning-face +   :inherit error) + +;; Org +  (org-level-1 :inherit default :foreground @header) +  (org-level-2 :inherit default :foreground @header) +  (org-level-3 :inherit default :foreground @header) +  (org-meta-line +   :inherit fixed-pitch +   :foreground @org-meta) +  (org-document-info-keyword +   :inherit fixed-pitch +   :foreground @org-document-info) +  (org-document-info +   :inherit default +   :foreground @org-document-info) +  (org-verbatim ; inline code +   :inherit fixed-pitch) +  (org-code +   :inherit fixed-pitch) +  (org-table +   :inherit fixed-pitch +   :background @org-table) +  (org-formula +   :inherit org-table +   :height 1) +  (org-verse +   :inherit default +   :foreground @org-quote-fg +   :background @org-quote-bg) +  (org-quote +   :inherit default +   :foreground @org-quote-fg +   :background @org-quote-bg) +  (org-hide +   :inherit fixed-pitch +   :foreground @bg) +  (org-indent +   :inherit org-hide) +  (org-date +   :inherit fixed-pitch +   :foreground @org-date +   :underline nil) +  (org-document-title +   :inherit default +   :foreground @org-title +   :height 1.8 +   :underline (:color @org-title-underline)) +  (org-checkbox +   :inherit fixed-pitch +   :weight bold +   :foreground @org-checkbox) +  (org-done +   :inherit fixed-pitch +   :foreground @org-done) +  (org-todo +   :inherit fixed-pitch +   :foreground @org-todo) +  (org-tag +   :inherit fixed-pitch +   :height 1 +   :foreground @org-tag) +  (org-block-begin-line +   :inherit fixed-pitch +   :background @org-block-line) +  (org-block-end-line +   :inherit fixed-pitch +   :background @org-block-line) +  (org-block +   :background @org-block-bg +   :inherit fixed-pitch) +  (org-priority +   :inherit fixed-pitch +   :weight normal) +  (org-agenda-structure +   :foreground @org-agenda-structure-fg +   :background @bg +   :box (:line-width 3 :color @bg) +   :underline @org-agenda-structure-bg) +  (org-scheduled +   :foreground @org-scheduled) +  (org-scheduled-today +   :foreground @org-scheduled-today) +  (org-agenda-date-weekend +   :inherit org-agenda-structure) +  (org-agenda-date-today +   :box (:line-width 3 :color @org-agenda-today-bg) +   :foreground @org-agenda-today-fg +   :background @org-agenda-today-bg) +  (org-special-keyword +   :inherit fixed-pitch +   :foreground @org-special-keyword) +  (org-scheduled-previously +   :foreground @org-sched-prev) +  (org-agenda-done +   :foreground @org-agenda-done) +  (org-footnote +   :foreground @link) +) +#+END_SRC + +* Instantiate structure using color palette + +This block resolves the =@=-prefixed variables of the theme structure using a given table of colors. + +#+NAME: theme-generator +#+BEGIN_SRC emacs-lisp :var palette='() structure=structure theme-name="" +(defun process (x) +  (cond +   ((not x)                                     '()) +   ((listp x)                                   (cons (process (car x)) (process (cdr x)))) +   ((and (symbolp x) +         (string-prefix-p "@" (symbol-name x))) (cadr (assoc (substring (symbol-name x) 1) (cdr palette)))) +   (t                                           x))) +    +(print `(apply +          'custom-theme-set-faces +          ',(make-symbol theme-name) +          ',(mapcar (lambda (x) `(,(car x) ((t ,(cdr x))))) +                    (process structure))))) + +#+END_SRC + diff --git a/gui/emacs.nix b/gui/emacs.nix index 6a4d10f..57fac2a 100644 --- a/gui/emacs.nix +++ b/gui/emacs.nix @@ -1,14 +1,27 @@  { config, pkgs, ... }:  { -  programs.emacs = { +  programs.emacs = let +    akr-color-theme = pkgs.stdenv.mkDerivation { +      name = "emacs-color-theme-akr"; +      src = ./conf/metakr.org; +      phases = [ "installPhase" ]; +      installPhase = '' +        cp $src metakr.org +        ${pkgs.emacs}/bin/emacs --batch --eval "(require 'org)" --eval "(setq org-confirm-babel-evaluate nil)" --eval '(org-babel-tangle-file "metakr.org")' +        rm metakr.org +        mkdir -p $out/share/emacs/site-lisp +        mv akr-theme.el $out/share/emacs/site-lisp/ +      ''; +    }; +  in {      enable = true; -    extraPackages = (epkgs: (with epkgs.melpaStablePackages; [  -    ]) ++ (with epkgs.melpaPackages; [  +    extraPackages = epkgs: with epkgs.melpaPackages; [        pdf-tools -    ]) ++ (with epkgs.elpaPackages; [  -    ])); +    ] ++ [ +      akr-color-theme +    ];    };    home.packages = with pkgs; [ | 
