From 9afac8a0a36efc3b457ee0016f11649356d84a89 Mon Sep 17 00:00:00 2001 From: Carl Richard Theodor Schneider Date: Thu, 16 Mar 2023 10:21:01 +0100 Subject: [PATCH] Add emacs module (#62) Closes #55 --- modules/emacs/hm.nix | 68 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 modules/emacs/hm.nix diff --git a/modules/emacs/hm.nix b/modules/emacs/hm.nix new file mode 100644 index 00000000..3a8c66e5 --- /dev/null +++ b/modules/emacs/hm.nix @@ -0,0 +1,68 @@ +{ pkgs, config, lib, ... }: + +with config.lib.stylix.colors.withHashtag; +with config.stylix.fonts; + +{ + options.stylix.targets.emacs.enable = + config.lib.stylix.mkEnableTarget "Emacs" config.programs.emacs.enable; + + config = lib.mkIf config.stylix.targets.emacs.enable { + programs.emacs = { + extraPackages = epkgs: + [ + (epkgs.trivialBuild { + pname = "base16-stylix-theme"; + src = pkgs.writeText "base16-stylix-theme.el" '' + (require 'base16-theme) + + (defvar base16-stylix-theme-colors + '(:base00 "${base00}" + :base01 "${base01}" + :base02 "${base02}" + :base03 "${base03}" + :base04 "${base04}" + :base05 "${base05}" + :base06 "${base06}" + :base07 "${base07}" + :base08 "${base08}" + :base09 "${base09}" + :base0A "${base0A}" + :base0B "${base0B}" + :base0C "${base0C}" + :base0D "${base0D}" + :base0E "${base0E}" + :base0F "${base0F}") + "All colors for Base16 stylix are defined here.") + + ;; Define the theme + (deftheme base16-stylix) + + ;; Add all the faces to the theme + (base16-theme-define 'base16-stylix base16-stylix-theme-colors) + + ;; Mark the theme as provided + (provide-theme 'base16-stylix) + + ;; Add path to theme to theme-path + (add-to-list 'custom-theme-load-path + (file-name-directory + (file-truename load-file-name))) + + (provide 'base16-stylix-theme) + ''; + packageRequires = [ epkgs.base16-theme ]; + }) + ]; + + extraConfig = '' + ;; ---- Generated by stylix ---- + (require 'base16-stylix-theme) + (load-theme 'base16-stylix t) + ;; Set font + (set-face-attribute 'default t :font "${monospace.name}" ) + ;; ----------------------------- + ''; + }; + }; +}