3 Commits

Author SHA1 Message Date
Joe Frikker ed88afe698 wip 2026-06-19 18:33:43 -04:00
Joe Frikker e52adbbc4b Splitting out shibumi deps 2026-06-17 15:42:52 -04:00
Joe Frikker db1b86cbd7 evil 2026-06-12 22:44:14 -04:00
2 changed files with 75 additions and 138 deletions
+4 -6
View File
@@ -50,13 +50,11 @@
modules =
[
nix-index-database.homeModules.default
"${modules}/base.nix"
"${modules}/desktop.nix"
"${modules}/shibumi.nix"
"${modules}/shibumi-desktop.nix"
] ++
(pkgs.lib.filter
(n: pkgs.lib.strings.hasSuffix ".nix" n)
(pkgs.lib.filesystem.listFilesRecursive "${modules}/base")) ++
(pkgs.lib.filter
(n: pkgs.lib.strings.hasSuffix ".nix" n)
(pkgs.lib.filesystem.listFilesRecursive "${modules}/desktop")) ++
[{
home.stateVersion = "22.05";
home.username = "jfrikker";
+71 -132
View File
@@ -1,5 +1,38 @@
#+PROPERTY: header-args :mkdirp yes
#+PROPERTY: header-args:elisp :lexical t
* Categories
#+BEGIN_SRC nix :tangle target/base.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./base);
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/desktop.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./desktop);
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/shibumi.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./shibumi);
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/shibumi-desktop.nix
{lib, ...}: {
imports = lib.filter
(n: lib.strings.hasSuffix ".nix" n)
(lib.filesystem.listFilesRecursive ./shibumi-desktop);
}
#+END_SRC
* Packages
Home-manager "packages" are simply binaries that are placed on the path, without any attached
@@ -90,6 +123,7 @@ tools. They boost better speed, or simply more streamlined features.
dust
fd
ripgrep
tokei
xh
];
}
@@ -133,7 +167,7 @@ between them. Once installed, the actual command is ~wormhole~.
These are the other programs I have installed globally. A few (like ~awscli~, ~mysql-client~, etc.)
are still Shibumi-specific; ideally I'd find another way to install them.
#+BEGIN_SRC nix :tangle target/base/other-packages.nix
#+BEGIN_SRC nix :tangle target/shibumi/other-packages.nix
{pkgs, kube, ...}:
{
home.packages = with pkgs; [
@@ -142,9 +176,7 @@ are still Shibumi-specific; ideally I'd find another way to install them.
kube
kubectl
mariadb.client
nerd-fonts.jetbrains-mono
openssh
tokei
];
fonts.fontconfig.enable = true;
@@ -158,17 +190,26 @@ These programs require a full desktop environment:
{
home.packages = with pkgs; [
google-chrome
nerd-fonts.jetbrains-mono
(iosevka-bin.override { variant = "Aile"; })
(iosevka-bin.override { variant = "Etoile"; })
(iosevka-bin.override { variant = "SGr-IosevkaTerm"; })
keymapp
proton-pass
slack
wireshark
];
}
#+END_SRC
#+BEGIN_SRC nix :tangle target/shibumi-desktop/desktop-packages.nix
{pkgs, ...}:
{
home.packages = with pkgs; [
slack
];
}
#+END_SRC
* Program Configurations
This section contains applications whose config files will be generated by Home Manager. Home
Manager calls these "programs" (as opposed to "packages", which are just binaries to put on the
@@ -872,13 +913,15 @@ Use variable-width fonts in text buffers. ~mixed-pitch-mode~ keeps most code blo
(add-hook 'yaml-ts-mode-hook 'no-mixed-pitch)
(add-hook 'mhtml-mode 'no-mixed-pitch)
(add-hook 'nxml-mode 'no-mixed-pitch)
#+END_SRC
A basic ace-window setup. Allows switching between windows quickly (although avy can do the same...).
#+BEGIN_SRC elisp
(bind-keys ("M-o" . ace-window)
("s-o" . ace-window))
("s-o" . ace-window)
("C-c o" . ace-window))
(setopt aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))
(setopt aw-dispatch-always t)
#+END_SRC
@@ -1006,11 +1049,11 @@ This configuration affects general text editing, across all modes. First, some p
enable = true;
extraPackages = epkgs: with epkgs; [
avy
devil
edit-indirect
embark
god-mode
meow
evil
evil-collection
evil-org
string-inflection
];
extraConfig = builtins.readFile ./emacs-editing.el;
@@ -1029,130 +1072,18 @@ but I'm worried that having too many repeat maps will also be annoying (I'll hav
cancel them more frequently). In the end, I opted for Devil mode. It avoids modifier keys, and has
its own devil-mode-only repeat maps that don't interfere when using normal modifier key sequences.
#+BEGIN_SRC elisp :tangle nil
(use-package devil
:disable t
:config
(global-devil-mode)
(setq devil-repeatable-keys
'(("%k /")
("%k d")
("%k k")
("%k m ^")
("%k m b" "%k m f" "%k m a" "% k m e")
("%k m @" "%k m h")
("%k m y")
("%k p" "%k n" "%k b" "%k f" "%k a" "%k e")
("%k s")
("%k m d" "%k m <backspace>"))))
#+END_SRC
#+BEGIN_SRC elisp
(defun meow-setup ()
(setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty)
(meow-motion-define-key
'("j" . meow-next)
'("k" . meow-prev)
'("<escape>" . ignore))
(meow-leader-define-key
;; Use SPC (0-9) for digit arguments.
'("1" . meow-digit-argument)
'("2" . meow-digit-argument)
;; '("3" . meow-digit-argument)
;; '("4" . meow-digit-argument)
;; '("5" . meow-digit-argument)
;; '("6" . meow-digit-argument)
;; '("7" . meow-digit-argument)
;; '("8" . meow-digit-argument)
;; '("9" . meow-digit-argument)
;; '("0" . meow-digit-argument)
;; '("/" . meow-keypad-describe-key)
;; '("?" . meow-cheatsheet))
;; (meow-normal-define-key
;; '("0" . meow-expand-0)
;; '("9" . meow-expand-9)
;; '("8" . meow-expand-8)
;; '("7" . meow-expand-7)
;; '("6" . meow-expand-6)
;; '("5" . meow-expand-5)
;; '("4" . meow-expand-4)
;; '("3" . meow-expand-3)
;; '("2" . meow-expand-2)
;; '("1" . meow-expand-1)
;; '("-" . negative-argument)
;; '(";" . meow-reverse)
;; '("," . meow-inner-of-thing)
;; '("." . meow-bounds-of-thing)
;; '("[" . meow-beginning-of-thing)
;; '("]" . meow-end-of-thing)
;; '("a" . meow-append)
;; '("A" . meow-open-below)
;; '("b" . meow-back-word)
;; '("B" . meow-back-symbol)
;; '("c" . meow-change)
;; '("d" . meow-delete)
;; '("D" . meow-backward-delete)
;; '("e" . meow-next-word)
;; '("E" . meow-next-symbol)
;; '("f" . meow-find)
;; '("g" . meow-cancel-selection)
;; '("G" . meow-grab)
;; '("h" . meow-left)
;; '("H" . meow-left-expand)
;; '("i" . meow-insert)
;; '("I" . meow-open-above)
;; '("j" . meow-next)
;; '("J" . meow-next-expand)
;; '("k" . meow-prev)
;; '("K" . meow-prev-expand)
;; '("l" . meow-right)
;; '("L" . meow-right-expand)
;; '("m" . meow-join)
;; '("n" . meow-search)
;; '("o" . meow-block)
;; '("O" . meow-to-block)
;; '("p" . meow-yank)
;; '("q" . meow-quit)
;; '("Q" . meow-goto-line)
;; '("r" . meow-replace)
;; '("R" . meow-swap-grab)
;; '("s" . meow-kill)
;; '("t" . meow-till)
;; '("u" . meow-undo)
;; '("U" . meow-undo-in-selection)
;; '("v" . meow-visit)
;; '("w" . meow-mark-word)
;; '("W" . meow-mark-symbol)
;; '("x" . meow-line)
;; '("X" . meow-goto-line)
;; '("y" . meow-save)
;; '("Y" . meow-sync-grab)
;; '("z" . meow-pop-selection)
;; '("'" . repeat)
;; '("<escape>" . ignore)))
;; (require 'meow)
;; (meow-setup)
;; (meow-global-mode)
#+END_SRC
#+BEGIN_SRC elisp
(require 'god-mode)
(require 'which-key)
(setopt evil-want-keybinding nil)
(require 'evil)
(evil-mode 1)
(require 'evil-collection)
(evil-collection-init)
(bind-keys :map god-local-mode-map
("i" . (lambda () (interactive) (god-mode-all -1)))
("z" . repeat))
(bind-keys ("<escape>" . (lambda () (interactive) (god-mode-all 1))))
(defun my-god-mode-update-cursor-type ()
(setq cursor-type (cond
(org-present-mode nil)
((or (and (featurep 'god-mode) god-local-mode) buffer-read-only
(and meow-mode (not (eq 'insert meow--current-state)))) 'box)
(t 'bar))))
(add-hook 'post-command-hook 'my-god-mode-update-cursor-type)
(which-key-enable-god-mode-support)
(require 'evil-org)
(add-hook 'org-mode-hook 'evil-org-mode)
(evil-org-set-key-theme '(navigation insert textobjects additional calendar))
(require 'evil-org-agenda)
(evil-org-agenda-set-keys)
#+END_SRC
Avy allows jumping to any place on the screen with just a few keystrokes. I've stolen most of these
@@ -1224,7 +1155,13 @@ Just "silently" wrap when searching at the bottom of a document.
haskell-ts-mode
jenkinsfile-mode
jq-mode
lispy
(lispy.overrideAttrs {
packageRequires = [
ace-window iedit swiper zoutline
];
ignoreCompilationError = true;
})
lispyville
lua-mode
nix-mode
rust-mode
@@ -1406,6 +1343,8 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
(add-hook 'emacs-lisp-mode-hook (lambda () (lispy-mode 1)))
(add-hook 'lisp-mode-hook (lambda () (lispy-mode 1)))
(with-eval-after-load 'lispy
(require 'lispyville)
(add-hook 'lispy-mode-hook #'lispyville-mode)
(bind-keys :map lispy-mode-map
("i" . (lambda ()
(interactive)
@@ -1920,7 +1859,7 @@ for completion. That makes it really annoying to use; don't use yasnippet with e
#+END_SRC
#+BEGIN_SRC elisp
(autoload 'claude-code-command-map "claude-code" :type 'keymap)
(require 'claude-code)
(keymap-global-set "C-c c" claude-code-command-map)
#+END_SRC
* Theme