use-package / more prose
This commit is contained in:
@@ -89,8 +89,6 @@ using a dialog, rather than a command line prompt.
|
|||||||
#+BEGIN_SRC nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
rage
|
|
||||||
age-plugin-yubikey
|
|
||||||
yubikey-manager
|
yubikey-manager
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -158,8 +156,6 @@ are still Redbook-specific; ideally I'd find another way to install them.
|
|||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
openssh
|
openssh
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts.fontconfig.enable = true;
|
|
||||||
})
|
})
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
@@ -179,14 +175,24 @@ These programs require a full desktop environment:
|
|||||||
proton-pass
|
proton-pass
|
||||||
wireshark
|
wireshark
|
||||||
];
|
];
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
})
|
})
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+BEGIN_SRC nix
|
#+BEGIN_SRC nix
|
||||||
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
|
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
linear
|
linear
|
||||||
notion-app
|
notion-app
|
||||||
|
teams
|
||||||
|
];
|
||||||
|
})
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Slack
|
||||||
|
#+BEGIN_SRC nix
|
||||||
|
(mkIf (cfg.redbook.enable && cfg.desktop.enable) {
|
||||||
|
home.packages = with pkgs; [
|
||||||
(slack.overrideAttrs {
|
(slack.overrideAttrs {
|
||||||
version = "4.50.143";
|
version = "4.50.143";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
@@ -194,11 +200,31 @@ These programs require a full desktop environment:
|
|||||||
hash = "sha256-f5oYi8NPKXWpDcowFYMUjptbQs4V9hK2bm1TuaQeJn0=";
|
hash = "sha256-f5oYi8NPKXWpDcowFYMUjptbQs4V9hK2bm1TuaQeJn0=";
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
teams
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
programs.emacs = {
|
||||||
|
extraPackages = epkgs: with epkgs; [
|
||||||
|
ox-slack
|
||||||
|
slack
|
||||||
|
];
|
||||||
|
extraConfig = builtins.readFile ./slack.el;
|
||||||
|
};
|
||||||
})
|
})
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
#+BEGIN_SRC elisp :tangle target/slack.el
|
||||||
|
(use-package lui
|
||||||
|
:defer t
|
||||||
|
:custom
|
||||||
|
(lui-time-stamp-format "[%Y-%m-%d %H:%M]"))
|
||||||
|
|
||||||
|
(use-package slack
|
||||||
|
:commands slack-start
|
||||||
|
:custom
|
||||||
|
(slack-render-profile-images-p nil)
|
||||||
|
(slack-buffer-function #'switch-to-buffer))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
* Program Configurations
|
* Program Configurations
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:nix: :noweb-ref nix-configs
|
:header-args:nix: :noweb-ref nix-configs
|
||||||
@@ -408,7 +434,6 @@ shows what's changing when you update your config, which is nice.
|
|||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
|
||||||
** Starship
|
** Starship
|
||||||
|
|
||||||
~starship~ gives me a nice shell prompt, mostly showing the versions of relevant software I have
|
~starship~ gives me a nice shell prompt, mostly showing the versions of relevant software I have
|
||||||
@@ -776,15 +801,72 @@ Actually, nix *really* requires ~bash~. This is a plugin that allows using zsh f
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Claude Code
|
** Claude Code
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:elisp: :tangle target/emacs.el
|
||||||
|
:END:
|
||||||
|
|
||||||
#+BEGIN_SRC nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
programs.claude-code = {
|
programs.claude-code = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.emacs = {
|
||||||
|
extraPackages = epkgs: with epkgs; [
|
||||||
|
(epkgs.trivialBuild {
|
||||||
|
pname = "claude-code";
|
||||||
|
version = "0.4.5";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "stevemolitor";
|
||||||
|
repo = "claude-code.el";
|
||||||
|
rev = "03199df8b3a1e9cd4857f0851f7a912ba524aff3";
|
||||||
|
sha256 = "sha256-5QJrWIu4EgnHcOqMwlrs2JBBx7aI9OaSJswesr6Apfk=";
|
||||||
|
};
|
||||||
|
packageRequires = [ epkgs.inheritenv ];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
#+BEGIN_SRC elisp
|
||||||
|
(use-package claude-code
|
||||||
|
:bind-keymap ("C-c c" . claude-code-command-map)
|
||||||
|
:custom (claude-code-optimize-window-resize nil))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Age
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:elisp: :tangle target/emacs.el
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+BEGIN_SRC nix
|
||||||
|
{
|
||||||
|
home.sessionVariables = {
|
||||||
|
PINENTRY_PROGRAM = "pinentry-mac";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
rage
|
||||||
|
age-plugin-yubikey
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.emacs = {
|
||||||
|
extraPackages = epkgs: with epkgs; [
|
||||||
|
age
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
#+BEGIN_SRC elisp
|
||||||
|
(use-package age
|
||||||
|
:hook (after-init . age-file-enable)
|
||||||
|
:custom
|
||||||
|
(age-default-identity "~/source/dotfiles/keys/yubi1age.txt")
|
||||||
|
(age-default-recipient "~/source/dotfiles/keys/myself.txt"))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
* Emacs
|
* Emacs
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:nix: :noweb-ref nix-configs
|
:header-args:nix: :noweb-ref nix-configs
|
||||||
@@ -1980,7 +2062,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
org-modern
|
org-modern
|
||||||
org-present
|
org-present
|
||||||
org-roam
|
org-roam
|
||||||
ox-slack
|
|
||||||
verb
|
verb
|
||||||
visual-fill-column
|
visual-fill-column
|
||||||
];
|
];
|
||||||
@@ -1989,17 +2070,15 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+BEGIN_SRC elisp
|
#+BEGIN_SRC elisp
|
||||||
(require 'org)
|
(use-package org
|
||||||
|
:bind (("C-c A" . org-agenda)
|
||||||
(bind-keys ("C-c A" . org-agenda)
|
|
||||||
("C-c C" . org-capture)
|
("C-c C" . org-capture)
|
||||||
("C-c l" . org-id-store-link))
|
("C-c l" . org-id-store-link))
|
||||||
|
:custom
|
||||||
(setopt org-babel-load-languages '((emacs-lisp . t) (sql . t)))
|
(org-babel-load-languages '((emacs-lisp . t) (sql . t)))
|
||||||
(setopt org-confirm-babel-evaluate nil)
|
(org-confirm-babel-evaluate nil)
|
||||||
(add-hook 'org-mode-hook 'visual-line-mode)
|
(org-link-keep-stored-after-insertion t)
|
||||||
(setopt org-link-keep-stored-after-insertion t
|
(org-capture-templates
|
||||||
org-capture-templates
|
|
||||||
'(("t" "Todo" entry
|
'(("t" "Todo" entry
|
||||||
(here)
|
(here)
|
||||||
"** TODO %?\n:LOGBOOK:\n- State \"TODO\" %U\n:END:\n")
|
"** TODO %?\n:LOGBOOK:\n- State \"TODO\" %U\n:END:\n")
|
||||||
@@ -2016,12 +2095,14 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
"*** PROJ %?\n- State \"PROJ\" %U\n")
|
"*** PROJ %?\n- State \"PROJ\" %U\n")
|
||||||
("pa" "Personal Next Action" entry
|
("pa" "Personal Next Action" entry
|
||||||
(file+headline "~/org/todo/personal.org.age" "Next Actions")
|
(file+headline "~/org/todo/personal.org.age" "Next Actions")
|
||||||
"*** TODO %?\n- State \"TODO\" %U\n"))
|
"*** TODO %?\n- State \"TODO\" %U\n")))
|
||||||
org-agenda-files '("~/org/todo/work.org" "~/org/todo/personal.org.age")
|
(org-agenda-files '("~/org/todo/work.org" "~/org/todo/personal.org.age"))
|
||||||
org-agenda-todo-ignore-scheduled 'future
|
(org-agenda-todo-ignore-scheduled 'future)
|
||||||
org-agenda-tags-todo-honor-ignore-options t
|
(org-agenda-tags-todo-honor-ignore-options t)
|
||||||
org-enforce-todo-dependencies t
|
(org-enforce-todo-dependencies t)
|
||||||
org-agenda-dim-blocked-tasks 'invisible)
|
(org-agenda-dim-blocked-tasks 'invisible)
|
||||||
|
:config
|
||||||
|
(add-hook 'org-mode-hook 'visual-line-mode)
|
||||||
(set-face-attribute 'org-level-1 nil :font "Iosevka Aile")
|
(set-face-attribute 'org-level-1 nil :font "Iosevka Aile")
|
||||||
(set-face-attribute 'org-level-2 nil :font "Iosevka Aile")
|
(set-face-attribute 'org-level-2 nil :font "Iosevka Aile")
|
||||||
(set-face-attribute 'org-level-3 nil :font "Iosevka Aile")
|
(set-face-attribute 'org-level-3 nil :font "Iosevka Aile")
|
||||||
@@ -2029,65 +2110,8 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
(set-face-attribute 'org-level-5 nil :font "Iosevka Aile")
|
(set-face-attribute 'org-level-5 nil :font "Iosevka Aile")
|
||||||
(set-face-attribute 'org-level-6 nil :font "Iosevka Aile")
|
(set-face-attribute 'org-level-6 nil :font "Iosevka Aile")
|
||||||
(set-face-attribute 'org-level-7 nil :font "Iosevka Aile")
|
(set-face-attribute 'org-level-7 nil :font "Iosevka Aile")
|
||||||
(set-face-attribute 'org-level-8 nil :font "Iosevka Aile")
|
(set-face-attribute 'org-level-8 nil :font "Iosevka Aile"))
|
||||||
|
|
||||||
(defvar-local my/org-present-face-remapping-cookies nil)
|
|
||||||
(with-eval-after-load 'org-present
|
|
||||||
(require 'face-remap)
|
|
||||||
(require 'visual-fill-column)
|
|
||||||
|
|
||||||
(defun my/org-present-start ()
|
|
||||||
(setq-local my/org-present-face-remapping-cookies nil)
|
|
||||||
;; Tweak font sizes
|
|
||||||
(dolist (face '((default :height 2.0)
|
|
||||||
(header-line :height 4.0 :background "#303446")
|
|
||||||
(org-document-title :height 1.75)
|
|
||||||
(org-code :height 2.0)
|
|
||||||
(org-verbatim :height 2.0)
|
|
||||||
(org-block :height 1.25)
|
|
||||||
(org-block-begin-line :height 0.7)
|
|
||||||
(org-level-1 :height 3.0)
|
|
||||||
(org-level-2 :height 3.0)
|
|
||||||
(org-level-3 :height 3.0)
|
|
||||||
(org-level-4 :height 3.0)
|
|
||||||
(org-level-5 :height 3.0)
|
|
||||||
(org-level-6 :height 3.0)
|
|
||||||
(org-level-7 :height 3.0)
|
|
||||||
(org-level-8 :height 3.0)))
|
|
||||||
(push (apply #'face-remap-add-relative face) my/org-present-face-remapping-cookies))
|
|
||||||
|
|
||||||
;; Set a blank header line string to create blank space at the top
|
|
||||||
(setq header-line-format " ")
|
|
||||||
|
|
||||||
;; Display inline images automatically
|
|
||||||
(org-display-inline-images)
|
|
||||||
(org-present-hide-cursor)
|
|
||||||
|
|
||||||
;; Center the presentation and wrap lines
|
|
||||||
(visual-fill-column-mode 1)
|
|
||||||
(setq visual-fill-column-center-text t)
|
|
||||||
;; (visual-line-mode 1)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defun my/org-present-end ()
|
|
||||||
;; Reset font customizations
|
|
||||||
(dolist (cookie my/org-present-face-remapping-cookies)
|
|
||||||
(face-remap-remove-relative cookie))
|
|
||||||
|
|
||||||
;; Clear the header line string so that it isn't displayed
|
|
||||||
(setq header-line-format nil)
|
|
||||||
|
|
||||||
;; Stop displaying inline images
|
|
||||||
(org-remove-inline-images)
|
|
||||||
(org-present-show-cursor)
|
|
||||||
|
|
||||||
;; Stop centering the document
|
|
||||||
(visual-fill-column-mode 0)
|
|
||||||
;; (visual-line-mode 0)
|
|
||||||
)
|
|
||||||
|
|
||||||
(add-hook 'org-present-mode-hook 'my/org-present-start)
|
|
||||||
(add-hook 'org-present-mode-quit-hook 'my/org-present-end))
|
|
||||||
|
|
||||||
;; (require 'org-roam)
|
;; (require 'org-roam)
|
||||||
;; (bind-keys ("C-c n l" . org-roam-buffer-toggle)
|
;; (bind-keys ("C-c n l" . org-roam-buffer-toggle)
|
||||||
@@ -2105,6 +2129,120 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
;; (define-key org-mode-map (kbd "C-c C-r") verb-command-map)
|
;; (define-key org-mode-map (kbd "C-c C-r") verb-command-map)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
*** Presentations
|
||||||
|
~org-present~ is a cool little package. It lets you give presentations with org mode. Each top-level heading turns into
|
||||||
|
a slide. When you switch to present mode, ~org-present~ removes all other windows, narrows the buffer to only one
|
||||||
|
top-level heading at a time, and exposes keys to quickly navigate forward / backward between slides. It also exposes
|
||||||
|
entry / exit hooks. Those hooks allow you to add custom styling to present mode. For example, you could make all the
|
||||||
|
text bigger.
|
||||||
|
|
||||||
|
#+begin_src elisp
|
||||||
|
(use-package org-present
|
||||||
|
:config
|
||||||
|
(require 'face-remap)
|
||||||
|
(require 'visual-fill-column)
|
||||||
|
|
||||||
|
(defun my/org-present-start ()
|
||||||
|
<<emacs-org-present-start>>
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun my/org-present-end ()
|
||||||
|
<<emacs-org-present-end>>
|
||||||
|
)
|
||||||
|
|
||||||
|
(add-hook 'org-present-mode-hook 'my/org-present-start)
|
||||||
|
(add-hook 'org-present-mode-quit-hook 'my/org-present-end))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Let's customize the window appearance when presenting. First, we'll make fonts larger, by multiplying them by a constant
|
||||||
|
factor. We'll use ~face-remap~ for that. When ~face-remap~ changes a face, it returns a "cookie" that can be used to restore the face to its old size. We'll store those cookies in a buffer-local variable.
|
||||||
|
|
||||||
|
#+begin_src elisp
|
||||||
|
(defvar-local my/org-present-face-remapping-cookies nil)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
When we enter present mode, we'll enlarge the fonts.
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-start
|
||||||
|
(setq-local my/org-present-face-remapping-cookies nil)
|
||||||
|
(dolist (face '((default :height 2.0)
|
||||||
|
(header-line :height 4.0 :background "#303446")
|
||||||
|
(org-document-title :height 1.75)
|
||||||
|
(org-code :height 2.0)
|
||||||
|
(org-verbatim :height 2.0)
|
||||||
|
(org-block :height 1.25)
|
||||||
|
(org-block-begin-line :height 0.7)
|
||||||
|
(org-level-1 :height 3.0)
|
||||||
|
(org-level-2 :height 3.0)
|
||||||
|
(org-level-3 :height 3.0)
|
||||||
|
(org-level-4 :height 3.0)
|
||||||
|
(org-level-5 :height 3.0)
|
||||||
|
(org-level-6 :height 3.0)
|
||||||
|
(org-level-7 :height 3.0)
|
||||||
|
(org-level-8 :height 3.0)))
|
||||||
|
(push (apply #'face-remap-add-relative face) my/org-present-face-remapping-cookies))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And when we leave, we'll restore the old faces.
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-end
|
||||||
|
(dolist (cookie my/org-present-face-remapping-cookies)
|
||||||
|
(face-remap-remove-relative cookie))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Let's add some empty space at the top as a margin. This is kind of a hack, but :shrug:.
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-start
|
||||||
|
(setq header-line-format " ")
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And we'll clean it up when we're done.
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-end
|
||||||
|
(setq header-line-format nil)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
To make this look more like a "real" presentation, we want to center the text in the window. We'll use
|
||||||
|
~visual-fill-column~ to do that. It does two things:
|
||||||
|
|
||||||
|
1. Causes text to wrap, like ~visual-line-mode~, but it wraps at the fill column instead of the edge of the window.
|
||||||
|
2. Centers the text block within the window (based on the fill column).
|
||||||
|
|
||||||
|
Let's set it up when we enter present mode:
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-start
|
||||||
|
(visual-fill-column-mode 1)
|
||||||
|
(setq visual-fill-column-center-text t)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And tear it down when we're done:
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-end
|
||||||
|
(visual-fill-column-mode 0)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We want to display inline images, of course.
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-start
|
||||||
|
(org-display-inline-images)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And stop when we're done.
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-end
|
||||||
|
(org-remove-inline-images)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And finally, we want to hide the cursor when presenting.
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-start
|
||||||
|
(org-present-hide-cursor)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src elisp :noweb-ref emacs-org-present-end
|
||||||
|
(org-present-show-cursor)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Terminal
|
** Terminal
|
||||||
#+BEGIN_SRC nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
@@ -2122,30 +2260,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
:hook (eshell-load . eat-eshell-mode))
|
:hook (eshell-load . eat-eshell-mode))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Slack
|
|
||||||
#+BEGIN_SRC nix
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
slack
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
#+BEGIN_SRC elisp
|
|
||||||
(use-package lui
|
|
||||||
:defer t
|
|
||||||
:custom
|
|
||||||
(lui-time-stamp-format "[%Y-%m-%d %H:%M]"))
|
|
||||||
|
|
||||||
(use-package slack
|
|
||||||
:commands slack-start
|
|
||||||
:custom
|
|
||||||
(slack-render-profile-images-p nil)
|
|
||||||
(slack-buffer-function #'switch-to-buffer))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Ledger
|
** Ledger
|
||||||
#+BEGIN_SRC nix
|
#+BEGIN_SRC nix
|
||||||
{
|
{
|
||||||
@@ -2156,54 +2270,6 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Age
|
|
||||||
#+BEGIN_SRC nix
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
age
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
#+BEGIN_SRC elisp
|
|
||||||
(use-package age
|
|
||||||
:hook (after-init . age-file-enable)
|
|
||||||
:custom
|
|
||||||
(age-default-identity "~/source/dotfiles/keys/yubi1age.txt")
|
|
||||||
(age-default-recipient "~/source/dotfiles/keys/myself.txt")
|
|
||||||
:config
|
|
||||||
(setenv "PINENTRY_PROGRAM" "pinentry-mac")
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Claude Code
|
|
||||||
#+BEGIN_SRC nix
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
extraPackages = epkgs: with epkgs; [
|
|
||||||
(epkgs.trivialBuild {
|
|
||||||
pname = "claude-code";
|
|
||||||
version = "0.4.5";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "stevemolitor";
|
|
||||||
repo = "claude-code.el";
|
|
||||||
rev = "03199df8b3a1e9cd4857f0851f7a912ba524aff3";
|
|
||||||
sha256 = "sha256-5QJrWIu4EgnHcOqMwlrs2JBBx7aI9OaSJswesr6Apfk=";
|
|
||||||
};
|
|
||||||
packageRequires = [ epkgs.inheritenv ];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
#+BEGIN_SRC elisp
|
|
||||||
(use-package claude-code
|
|
||||||
:bind-keymap ("C-c c" . claude-code-command-map)
|
|
||||||
:custom (claude-code-optimize-window-resize nil))
|
|
||||||
#+END_SRC
|
|
||||||
* Theme
|
* Theme
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:nix: :noweb-ref nix-configs
|
:header-args:nix: :noweb-ref nix-configs
|
||||||
|
|||||||
Reference in New Issue
Block a user