Commit Diff


commit - 6a9532cb25a6aece0d8c9143fb689a4efd1ddbdb
commit + 2da793de0cd4883ac80a6ddb70d38e5392c2bda3
blob - aded968dacf031e0df62647f1b5e84c83dab2292
blob + 06226177a666a7135540ff0290334aa49524bad0
--- flake.lock
+++ flake.lock
@@ -162,11 +162,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1789482455,
-        "narHash": "sha256-pD3qVlQ4mUCFoTWrYtxecpSitQMsgJvJIN0FUIDZoEU=",
+        "lastModified": 1789676441,
+        "narHash": "sha256-mOvO5VvycuBtOUe5EYI54vrLsWe+2KF/82fmwKooe48=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "efa3ccb4c3cc90d832eab232976379058fa75aa3",
+        "rev": "9d485f74cd27d17126ee34cb31005c39d20f741f",
         "type": "github"
       },
       "original": {
@@ -199,11 +199,11 @@
     },
     "multiverse": {
       "locked": {
-        "lastModified": 1789550565,
-        "narHash": "sha256-k2MB2bhperGtyySaOGVtgFJJXCN8M+5953oihn9uXEE=",
+        "lastModified": 1789596272,
+        "narHash": "sha256-77w6/8smBVoIGOMdRyq3G7RnujIS7h5B4wMGVhTIKf0=",
         "owner": "fzakaria",
         "repo": "nixpkgs-multiverse",
-        "rev": "0d3bc8d9439238540dabb9f67e179219b674abe9",
+        "rev": "b780524b47fbe8b9ae8605a761a8fe9ad1a8e48b",
         "type": "github"
       },
       "original": {
blob - 93f1fe16233771254bdd27f37af0095498b1c737
blob + d7342606a4bcfb08d516f6cf9526140334954461
--- home.nix
+++ home.nix
@@ -14,9 +14,7 @@
   multiverse = {
     enable = true;
     config.allowUnfree = true;
-    pins = {
-      ripgrep = "13.0.0";
-    };
+    pins = {};
   };
   home = {
     inherit username homeDirectory;
blob - 33b6f677ddf20a02f082ae5f2ff794d4da856d75
blob + 15a61f61e7aab80997730b2704c127fe08cd7620
--- hosts/impish/default.nix
+++ hosts/impish/default.nix
@@ -108,6 +108,7 @@
         gitu
         mergiraf
         git-toolbelt
+        git-filter-repo
       ];
 
       net = [
@@ -180,7 +181,6 @@
       ];
 
       debug = [
-        gdb
         strace
         perf
         hyperfine
@@ -284,8 +284,6 @@
         emscripten
         astroterm
         odin
-        nim
-        nimble
       ];
     }));
   };
blob - cd49b6e10f45035807ccf3c58695c0a331ee732a
blob + 0f07e4a8e0da63aee20bce73eada9bafe40c66bb
Binary files hosts/impish/overlays/config/magdalena/config.json.nix and hosts/impish/overlays/config/magdalena/config.json.nix differ
blob - 4458ed88dbde755d3f65957b32b9d1cde728de5e
blob + 9db63d1f869d6e2e5027afa8ed0b3ff167f4bb1e
Binary files hosts/impish/overlays/config/shell/rc/imp and hosts/impish/overlays/config/shell/rc/imp differ
blob - 5dc4485ee2928adba081e3650a8c7ae97330d590
blob + eeb95fe336d414d6317d4eb0fc25b5657cf125e8
Binary files hosts/work/overlays/config/nvim/fnl/init.fnl and hosts/work/overlays/config/nvim/fnl/init.fnl differ
blob - 4541c33a70b241a12c553ec26540ff5d0ede69ff
blob + b4f179c843000e54bc78805568b6ba3766d0d706
Binary files hosts/work/overlays/home/tmux.conf and hosts/work/overlays/home/tmux.conf differ
blob - da849bb02a68908b6c9fdf45a713a9e048e671f7
blob + 85623ff0537b7d1c2ad4651923352065d85f82cb
--- modules/mixins/dotfiles/config/kitty/kitty.conf
+++ modules/mixins/dotfiles/config/kitty/kitty.conf
@@ -1,4 +1,4 @@
-include themes/base16-grayscale-dark.conf
+include themes/base16-mono-a-bit-dark.conf
 
 font_family Ioskeley Mono Term
 bold_font Ioskeley Mono Term
blob - 09f26f67495ae603442c8a9ffbd6d0816257a68d (mode 644)
blob + /dev/null
--- modules/mixins/dotfiles/config/kitty/themes/base16-grayscale-dark.conf
+++ /dev/null
@@ -1,25 +0,0 @@
-foreground #b9b9b9
-background #101010
-
-color0 #101010
-color1 #7c7c7c
-color2 #8e8e8e
-color3 #a0a0a0
-color4 #686868
-color5 #747474
-color6 #868686
-color7 #b9b9b9
-
-color8 #525252
-color9 #7c7c7c
-color10 #8e8e8e
-color11 #a0a0a0
-color12 #686868
-color13 #747474
-color14 #868686
-color15 #f7f7f7
-
-cursor #b9b9b9
-cursor_text_color #101010
-selection_foreground #101010
-selection_background #b9b9b9
blob - /dev/null
blob + 09f26f67495ae603442c8a9ffbd6d0816257a68d (mode 644)
--- /dev/null
+++ modules/mixins/dotfiles/config/kitty/themes/base16-mono-a-bit-dark.conf
@@ -0,0 +1,25 @@
+foreground #b9b9b9
+background #101010
+
+color0 #101010
+color1 #7c7c7c
+color2 #8e8e8e
+color3 #a0a0a0
+color4 #686868
+color5 #747474
+color6 #868686
+color7 #b9b9b9
+
+color8 #525252
+color9 #7c7c7c
+color10 #8e8e8e
+color11 #a0a0a0
+color12 #686868
+color13 #747474
+color14 #868686
+color15 #f7f7f7
+
+cursor #b9b9b9
+cursor_text_color #101010
+selection_foreground #101010
+selection_background #b9b9b9
blob - 1c0c36295391d53d53f269f7236ad97bd49cc2f4
blob + 4eb06b60bf55e6cdcd615f3d1ff2dd61f96991f8
--- modules/mixins/dotfiles/config/nvim/fnl/init.fnl
+++ modules/mixins/dotfiles/config/nvim/fnl/init.fnl
@@ -29,7 +29,6 @@
       (gh :stevearc/oil.nvim)
       (gh :neogitorg/neogit)
       (gh :sindrets/diffview.nvim)
-      (gh :ibhagwan/fzf-lua)
       (gh :troydm/zoomwintab.vim)
       (gh :mbbill/undotree)
       (gh :smoka7/hop.nvim)
@@ -51,7 +50,6 @@
   ((. (require :mini.align) :setup))
   ((. (require :oil) :setup) {:default_file_explorer false})
   ((. (require :neogit) :setup))
-  ((. (require :fzf-lua) :setup))
   ((. (require :orgmode) :setup)
    {:org_agenda_files [(.. vim.g.denote.directory "agenda.org")
                        (.. vim.g.denote.directory "todo.org")]
@@ -102,6 +100,9 @@
     (set vim.opt.undodir (.. vim-dir :undo//))
     (set vim.opt.undofile true))
   (set vim.opt.clipboard :unnamedplus)
+  (set vim.o.grepprg
+       "ugrep --recursive --line-number --column-number --smart-case --ignore-binary --color=never --no-messages -- $*")
+  (set vim.o.grepformat "%f:%l:%c:%m,%f:%l:%m")
   (vim.opt.rtp:append (.. (vim.fn.stdpath :data) :/nix/tree-sitter))
   (set package.path (.. (fs.normalize "~") "/.config/nvim/lua/?.lua;"
                         package.path))
blob - 336def0dc05a79910ea5bbef0ff434ab1c328ccc
blob + 7faedc8d77c7d251b7e17529ab8b4f67c2097238
--- modules/mixins/dotfiles/config/nvim/fnl/keymaps.fnl
+++ modules/mixins/dotfiles/config/nvim/fnl/keymaps.fnl
@@ -1,10 +1,14 @@
-(each [key func (pairs {:<leader><leader> :files
-                        :<leader>ff :git_status
-                        :<leader>fh :oldfiles
-                        :<leader>fg :grep_project
-                        :<leader>bb :buffers})]
-  (vim.keymap.set :n key (.. "<cmd>lua require('fzf-lua')." func "()<CR>")))
+(local mag (require :magdalena))
 
+(vim.keymap.set :n :<leader><leader> mag.files)
+(vim.keymap.set :n :<leader>fh mag.recent-files)
+(vim.keymap.set :n :<leader>fs mag.search)
+(vim.keymap.set :n :<leader>fg mag.grep)
+(vim.keymap.set :n :<leader>fG mag.grep-query)
+(vim.keymap.set :n :<leader>fd mag.dirs)
+(vim.keymap.set :n :<leader>bb mag.buffers)
+(vim.keymap.set :n :<leader>ff mag.git)
+
 (each [key cmd (pairs {:<leader>ng :<cmd>Neogit<CR>
                        :- :<cmd>Oil<CR>
                        :<leader>u :<cmd>UndotreeToggle<CR>
blob - /dev/null
blob + 1f76683e32a7d67c0f251bba49228ca5b38fec1f (mode 644)
--- /dev/null
+++ modules/mixins/dotfiles/config/nvim/fnl/magdalena.fnl
@@ -0,0 +1,130 @@
+(local M {})
+
+(fn has-bin? [bin]
+  (= (vim.fn.executable bin) 1))
+
+(fn warn-once [msg]
+  (vim.notify msg vim.log.levels.WARN))
+
+(fn argv-for [full stdin-file]
+  (if stdin-file
+      (let [escaped (icollect [_ p (ipairs full)]
+                      (vim.fn.shellescape p))]
+        [:sh
+         :-c
+         (.. (table.concat escaped " ") " < " (vim.fn.shellescape stdin-file))])
+      full))
+
+(fn float-term [cmd on-choice stdin-file]
+  (let [tmp (vim.fn.tempname)
+        full [:magdalena :--choose-file tmp]]
+    (each [_ a (ipairs cmd)]
+      (table.insert full a))
+    (let [argv (argv-for full stdin-file)
+          width (math.floor (* vim.o.columns 0.85))
+          height (math.floor (* vim.o.lines 0.8))
+          row (math.floor (/ (- vim.o.lines height) 2))
+          col (math.floor (/ (- vim.o.columns width) 2))
+          buf (vim.api.nvim_create_buf false true)
+          win (vim.api.nvim_open_win buf true
+                                     {:relative :editor
+                                      : width
+                                      : height
+                                      : row
+                                      : col
+                                      :style :minimal
+                                      :border :rounded})]
+      (vim.fn.jobstart argv
+                       {:term true
+                        :cwd (vim.fn.getcwd)
+                        :on_exit (fn [_ code]
+                                   (vim.schedule (fn []
+                                                   (let [lines (if (= (vim.fn.filereadable tmp)
+                                                                      1)
+                                                                   (vim.fn.readfile tmp)
+                                                                   [])]
+                                                     (pcall vim.fn.delete tmp)
+                                                     (when (vim.api.nvim_win_is_valid win)
+                                                       (vim.api.nvim_win_close win
+                                                                               true))
+                                                     (when (and (= code 0)
+                                                                (> (length lines)
+                                                                   0))
+                                                       (on-choice (. lines 1)))))))}))
+    (vim.cmd :startinsert)))
+
+(fn pick [args on-choice]
+  (if (not (has-bin? :magdalena))
+      (warn-once "magdalena: binary not on PATH")
+      (float-term args on-choice)))
+
+(fn edit-path [path]
+  (when (and path (not= path ""))
+    (vim.cmd (.. "edit " (vim.fn.fnameescape path)))))
+
+(fn open-grep-choice [choice]
+  (let [(file line) (choice:match "^(.-):(%d+)")]
+    (if file
+        (do
+          (edit-path file)
+          (when line
+            (vim.api.nvim_win_set_cursor 0 [(tonumber line) 0])))
+        (edit-path choice))))
+
+(fn M.files []
+  (pick [:look-file] edit-path))
+
+(fn M.recent-files []
+  (pick [:goto-file] edit-path))
+
+(fn M.dirs []
+  (pick [:look-directory]
+        (fn [dir]
+          (vim.cmd (.. "Oil " (vim.fn.fnameescape dir))))))
+
+(fn M.grep []
+  (pick [:grep] open-grep-choice))
+
+(fn M.grep-query []
+  (let [query (vim.fn.input "grep> ")]
+    (when (not= query "")
+      (pick [:grep query] open-grep-choice))))
+
+(fn M.git []
+  (pick [:git-status] edit-path))
+
+(fn M.buffers []
+  (if (not (has-bin? :magdalena))
+      (warn-once "magdalena: binary not on PATH")
+      (let [names (icollect [_ b (ipairs (vim.api.nvim_list_bufs))]
+                    (let [name (vim.api.nvim_buf_get_name b)]
+                      (when (and (vim.api.nvim_buf_is_loaded b) (not= name "")
+                                 (= (vim.fn.buflisted b) 1))
+                        name)))]
+        (if (= (length names) 0)
+            (warn-once "magdalena: no open buffers")
+            (let [input (vim.fn.tempname)]
+              (vim.fn.writefile names input)
+              (float-term [:select]
+                          (fn [choice]
+                            (pcall vim.fn.delete input)
+                            (edit-path choice)) input))))))
+
+(fn M.search []
+  (if (not (has-bin? :magdalena))
+      (warn-once "magdalena: binary not on PATH")
+      (let [query (vim.fn.input "history> ")]
+        (when (not= query "")
+          (let [out (vim.fn.systemlist (.. "magdalena search "
+                                           (vim.fn.shellescape query)))
+                items (icollect [_ line (ipairs out)]
+                        (let [idx (line:match ".*()|")]
+                          (when (not= line "")
+                            (if idx
+                                (line:sub (+ idx 1))
+                                line))))]
+            (if (= (length items) 0)
+                (warn-once (.. "magdalena: no history for " query))
+                (vim.ui.select items {:prompt "history> "} edit-path)))))))
+
+M
blob - dfd5f052545ae685b28f93ea05fe6c54a3bd6ff3
blob + 06d34b45b63e8536ae23771929cfdef034130554
--- modules/mixins/dotfiles/config/shell/rc/aliased-short-names
+++ modules/mixins/dotfiles/config/shell/rc/aliased-short-names
@@ -16,6 +16,7 @@ alias tls='tmux list-sessions'
 alias tms="tmux display-message -p '#{session_name}'"
 
 alias mgr='magdalena grep'
+alias mgs='magdalena git-status'
 alias mrf='magdalena recent-files'
 alias mrd='magdalena recent-directories'
 
blob - 10de100840bfc91bafbf237970851d0ae73592a7
blob + 48d6a5525697a5889b6c8d9cbfcc1d345aa64f38
--- modules/mixins/dotfiles/home/tmux.conf
+++ modules/mixins/dotfiles/home/tmux.conf
@@ -3,7 +3,7 @@ set-option -g status-position top
 set -g base-index 1
 setw -g pane-base-index 1
 
-set -g extended-keys on
+set -g extended-keys always
 set -g extended-keys-format csi-u
 
 set-option -g update-environment "WAYLAND_DISPLAY DISPLAY"
@@ -28,13 +28,17 @@ set-window-option -g window-status-style "fg=#747474,b
 set-window-option -g window-status-current-style "fg=#101010,bg=#999999"
 
 set-option -g pane-border-style "fg=#353535"
-set-option -g pane-active-border-style "fg=#999999"
+set-option -g pane-active-border-style "fg=#f5f5f5,bg=default,bold"
+set-option -g pane-border-lines single
 
+set-window-option -g window-style "fg=#757575,bg=#0a0a0a"
+set-window-option -g window-active-style "fg=#e8e8e8,bg=default"
+
 set-option -g message-style "fg=#999999,bg=#222222"
 set-option -g message-command-style "fg=#999999,bg=#222222"
 
-set-option -g display-panes-active-colour "#999999"
-set-option -g display-panes-colour "#747474"
+set-option -g display-panes-active-colour "#ffffff"
+set-option -g display-panes-colour "#4a4a4a"
 
 set-window-option -g mode-style "fg=#999999,bg=#222222"
 set-window-option -g clock-mode-colour "#747474"