Compare commits
3 commits
380fa002c2
...
937ab7e510
| Author | SHA1 | Date | |
|---|---|---|---|
| 937ab7e510 | |||
| 26386b2ea7 | |||
| a23a3f8a50 |
20 changed files with 540 additions and 27 deletions
9
bin/copy-message-link
Executable file
9
bin/copy-message-link
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
# Extract Message-ID from email and copy as neomutt:// link to clipboard
|
||||
# Used by neomutt macro - reads email from stdin
|
||||
|
||||
message_id=$(grep -i '^Message-ID:' | head -1 | sed 's/Message-ID: *<//i; s/>//' | tr -d '\n\r')
|
||||
|
||||
if [[ -n $message_id ]]; then
|
||||
printf 'neomutt://%s' "$message_id" | ~/dotfiles/bin/cb
|
||||
fi
|
||||
11
bin/neomutt-open-message
Executable file
11
bin/neomutt-open-message
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
# Open a specific message in neomutt by message ID
|
||||
# Usage: neomutt-open-message <message-id>
|
||||
|
||||
message_id="$1"
|
||||
if [[ -z $message_id ]]; then
|
||||
echo "Usage: neomutt-open-message <message-id>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec neomutt -e "push \"<vfolder-from-query>id:${message_id}<enter><display-message>\""
|
||||
48
bin/nvim-vimtex-callback
Executable file
48
bin/nvim-vimtex-callback
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
#!/bin/bash
|
||||
# Inverse search callback for sioyek/vimtex/skim
|
||||
# Usage: nvim-vimtex-callback LINE FILE
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
SERVERNAME_FILE="/tmp/vimtex-servername"
|
||||
|
||||
# Read servername if available and server still exists
|
||||
SERVERNAME_ARG=""
|
||||
if [[ -f $SERVERNAME_FILE ]]; then
|
||||
SERVERNAME=$(cat "$SERVERNAME_FILE")
|
||||
if [[ -n $SERVERNAME && -e $SERVERNAME ]]; then
|
||||
SERVERNAME_ARG="--servername $SERVERNAME"
|
||||
fi
|
||||
fi
|
||||
|
||||
# If first arg is a number, assume sioyek direct format: LINE FILE
|
||||
if [[ $1 =~ ^[0-9]+$ ]]; then
|
||||
LINE="$1"
|
||||
FILE="$2"
|
||||
exec "$SCRIPT_DIR/path-shim" nvr $SERVERNAME_ARG --remote-silent +"$LINE" "$FILE"
|
||||
fi
|
||||
|
||||
# Otherwise parse VimTeX format: --headless -c "VimtexInverseSearch LINE 'FILE'"
|
||||
CMD=""
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--headless)
|
||||
shift
|
||||
;;
|
||||
-c)
|
||||
shift
|
||||
CMD="$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -n $CMD ]]; then
|
||||
if [[ $CMD =~ VimtexInverseSearch\ ([0-9]+)\ \'(.+)\' ]]; then
|
||||
LINE="${BASH_REMATCH[1]}"
|
||||
FILE="${BASH_REMATCH[2]}"
|
||||
exec "$SCRIPT_DIR/path-shim" nvr $SERVERNAME_ARG --remote-silent +"$LINE" "$FILE"
|
||||
fi
|
||||
fi
|
||||
44
bin/open-message-link
Executable file
44
bin/open-message-link
Executable file
|
|
@ -0,0 +1,44 @@
|
|||
#!/bin/bash
|
||||
# Open a neomutt:// link in neomutt via notmuch
|
||||
# Usage: open-message-link [--current] neomutt://message-id
|
||||
# --current: Open in current terminal (for nvim integration)
|
||||
# Without flag: Opens in Ghostty on workspace 8 (like open-mail)
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
set -euo pipefail
|
||||
|
||||
open_in_current=false
|
||||
if [[ ${1:-} == "--current" ]]; then
|
||||
open_in_current=true
|
||||
shift
|
||||
fi
|
||||
|
||||
url="${1:-}"
|
||||
if [[ -z $url ]]; then
|
||||
echo "Usage: open-message-link [--current] neomutt://message-id" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract message ID from URL
|
||||
message_id="${url#neomutt://}"
|
||||
notmuch_url="notmuch://?query=id:${message_id}"
|
||||
|
||||
if $open_in_current; then
|
||||
exec neomutt -f "$notmuch_url"
|
||||
else
|
||||
if [[ "$(uname)" == "Darwin" ]]; then
|
||||
aerospace workspace 8
|
||||
open -na Ghostty --args -e "$SCRIPT_DIR/path-shim" "$SCRIPT_DIR/neomutt-open-message" "$message_id"
|
||||
else
|
||||
# Linux (i3/sway)
|
||||
if command -v swaymsg &>/dev/null; then
|
||||
swaymsg workspace 8
|
||||
ghostty -e neomutt -e "push \"<vfolder-from-query>id:${message_id}<enter><display-message>\"" &
|
||||
elif command -v i3-msg &>/dev/null; then
|
||||
i3-msg workspace 8
|
||||
ghostty -e neomutt -e "push \"<vfolder-from-query>id:${message_id}<enter><display-message>\"" &
|
||||
else
|
||||
exec neomutt -f "$notmuch_url"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
|
@ -28,10 +28,23 @@
|
|||
;; (setq default-frame-alist '((ns-appearance . dark)
|
||||
;; (ns-transparent-titlebar . t)))
|
||||
|
||||
(setenv "LIBRARY_PATH"
|
||||
(mapconcat 'identity
|
||||
'(
|
||||
"/opt/homebrew/opt/gcc/lib/gcc/15"
|
||||
"/opt/homebrew/opt/libgccjit/lib/gcc/15"
|
||||
"/opt/homebrew/opt/gcc/lib/gcc/15/gcc/aarch64-apple-darwin24/15")
|
||||
":"))
|
||||
;; Use dynamic GCC paths to avoid recompilation when Homebrew updates GCC
|
||||
(when-let* ((gcc-base "/opt/homebrew/opt/gcc/lib/gcc/current")
|
||||
((file-directory-p gcc-base)))
|
||||
(setenv "LIBRARY_PATH"
|
||||
(string-join
|
||||
(delq nil
|
||||
(list gcc-base
|
||||
(let ((jit-path "/opt/homebrew/opt/libgccjit/lib/gcc/current"))
|
||||
(when (file-directory-p jit-path) jit-path))
|
||||
;; Find the arch-specific directory (e.g., aarch64-apple-darwin24/15)
|
||||
(car (last (file-expand-wildcards
|
||||
(concat gcc-base "/gcc/aarch64-apple-darwin*/*"))))))
|
||||
":")))
|
||||
|
||||
;; Native compilation settings to reduce unnecessary recompilation
|
||||
(when (native-comp-available-p)
|
||||
(setq native-comp-async-report-warnings-errors 'silent)
|
||||
(setq native-compile-prune-cache t)
|
||||
;; Redirect eln-cache to writable location (default goes to read-only ~/.emacs.d/)
|
||||
(startup-redirect-eln-cache (expand-file-name "eln-cache/" minimal-emacs-var-dir)))
|
||||
|
|
|
|||
|
|
@ -81,6 +81,9 @@ bind compose S pgp-menu
|
|||
macro compose a "<shell-escape>~/dotfiles/bin/yazi-pick-file<enter><enter-command>source /tmp/neomutt-yazi-pick<enter><shell-escape>~/dotfiles/bin/yazi-pick-file clean<enter>" "Attach file with yazi"
|
||||
bind compose d detach-file
|
||||
|
||||
# Copy message link to clipboard (message://message-id format)
|
||||
macro index,pager Y "<pipe-message>~/dotfiles/bin/copy-message-link<enter>" "Copy message link"
|
||||
|
||||
# Mark messages
|
||||
bind index,pager m noop
|
||||
macro index,pager mu "<enter-command>unset mark_old<enter><tag-prefix><toggle-new><sync-mailbox>" "Mark as unread"
|
||||
|
|
|
|||
|
|
@ -61,10 +61,63 @@ add { source = 'R-nvim/R.nvim', depends = { 'nvim-treesitter/nvim-treesitter' }
|
|||
add 'nvim-treesitter/nvim-treesitter'
|
||||
add 'nvim-treesitter/nvim-treesitter-textobjects'
|
||||
add { source = 'nvim-pack/nvim-spectre', depends = { 'nvim-lua/plenary.nvim' } }
|
||||
add 'lervag/vimtex'
|
||||
|
||||
-- color themes
|
||||
add 'EdenEast/nightfox.nvim'
|
||||
|
||||
now(function() require('vimtex').setup() end)
|
||||
|
||||
-- Message link handler for neomutt/notmuch integration
|
||||
now(function()
|
||||
local function open_neomutt_link(url)
|
||||
local message_id = url:gsub('^neomutt://', '')
|
||||
-- vim.notify('Opening: ' .. message_id, vim.log.levels.INFO)
|
||||
-- Use vfolder-from-query then display the message (hide sidebar and index, q quits directly)
|
||||
-- Note: nvim terminal doesn't support neomutt's directcolor, so we disable colors for clean display
|
||||
local search_cmd = string.format(
|
||||
[[neomutt -e "set color_directcolor=no sidebar_visible=no pager_index_lines=0" -e "color normal default default" -e "color hdrdefault default default" -e "color quoted default default" -e "color signature default default" -e "color attachment default default" -e "color header default default '.*'" -e "color body default default '.*'" -e "macro pager q '<exit><quit>'" -e "macro index q '<quit>'" -e "push \"<vfolder-from-query>id:%s<enter><display-message>\""]],
|
||||
message_id
|
||||
)
|
||||
|
||||
require('snacks').terminal(search_cmd, {
|
||||
win = { position = 'bottom', height = 0.4 },
|
||||
})
|
||||
|
||||
-- local script = vim.env.HOME .. '/dotfiles/bin/open-message-link'
|
||||
-- vim.fn.jobstart({ script, url }, { detach = true })
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command(
|
||||
'OpenMessageLink',
|
||||
function(opts) open_neomutt_link(opts.args) end,
|
||||
{ nargs = 1, desc = 'Open email message link in neomutt' }
|
||||
)
|
||||
|
||||
-- gx override: opens neomutt:// links, falls back to default for others
|
||||
-- Use BufEnter to override markview's buffer-local gx mapping
|
||||
vim.api.nvim_create_autocmd('BufEnter', {
|
||||
pattern = '*.md',
|
||||
callback = function()
|
||||
vim.keymap.set('n', 'gx', function()
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
local url = line:match 'neomutt://[^%)%s>]+'
|
||||
if url then
|
||||
open_neomutt_link(url)
|
||||
else
|
||||
-- Use markview's link opener or fallback
|
||||
local ok, markview = pcall(require, 'markview')
|
||||
if ok and markview.actions and markview.actions.openLink then
|
||||
markview.actions.openLink()
|
||||
else
|
||||
vim.ui.open(vim.fn.expand '<cfile>')
|
||||
end
|
||||
end
|
||||
end, { buffer = true, desc = 'Open link (supports neomutt://)' })
|
||||
end,
|
||||
})
|
||||
end)
|
||||
|
||||
now(function()
|
||||
require('mail-count').setup {
|
||||
accounts = {
|
||||
|
|
@ -311,6 +364,8 @@ later(function()
|
|||
'diff',
|
||||
'git_rebase',
|
||||
'gitcommit',
|
||||
'latex',
|
||||
'bibtex',
|
||||
},
|
||||
auto_install = true,
|
||||
highlight = { enable = true },
|
||||
|
|
|
|||
79
config/nvim/lua/vimtex.lua
Normal file
79
config/nvim/lua/vimtex.lua
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
-- VimTeX configuration
|
||||
local M = {}
|
||||
|
||||
function M.setup()
|
||||
-- Sioyek - cross-platform PDF viewer with vim-like keybindings
|
||||
vim.g.vimtex_view_method = 'general'
|
||||
vim.g.vimtex_view_general_viewer = 'sioyek'
|
||||
vim.g.vimtex_view_general_options = '--forward-search-file @tex --forward-search-line @line @pdf'
|
||||
|
||||
-- Skim (macOS)
|
||||
-- vim.g.vimtex_view_method = 'skim'
|
||||
|
||||
-- Compiler settings
|
||||
vim.g.vimtex_compiler_method = 'latexmk'
|
||||
vim.g.vimtex_compiler_latexmk = {
|
||||
build_dir = 'build',
|
||||
callback = 1,
|
||||
continuous = 1,
|
||||
executable = 'latexmk',
|
||||
options = {
|
||||
'-verbose',
|
||||
'-file-line-error',
|
||||
'-synctex=1',
|
||||
'-interaction=nonstopmode',
|
||||
},
|
||||
}
|
||||
|
||||
-- Quickfix settings
|
||||
vim.g.vimtex_quickfix_mode = 0 -- Don't open quickfix automatically
|
||||
|
||||
-- Disable default mappings, we'll set our own
|
||||
vim.g.vimtex_mappings_enabled = 1
|
||||
|
||||
-- TOC settings
|
||||
vim.g.vimtex_toc_config = {
|
||||
split_pos = 'vert leftabove',
|
||||
split_width = 40,
|
||||
show_help = 0,
|
||||
}
|
||||
|
||||
-- Fold settings
|
||||
vim.g.vimtex_fold_enabled = 0
|
||||
|
||||
-- Set up filetype-specific keymaps
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
pattern = { 'tex', 'latex' },
|
||||
callback = function()
|
||||
local opts = { buffer = true, silent = true }
|
||||
|
||||
-- Compilation - saves servername for inverse search
|
||||
vim.keymap.set('n', '<localleader>ll', function()
|
||||
local f = io.open('/tmp/vimtex-servername', 'w')
|
||||
if f then
|
||||
f:write(vim.v.servername)
|
||||
f:close()
|
||||
end
|
||||
vim.cmd 'VimtexCompile'
|
||||
end, vim.tbl_extend('force', opts, { desc = 'Compile LaTeX' }))
|
||||
vim.keymap.set('n', '<localleader>lk', '<cmd>VimtexStop<cr>', vim.tbl_extend('force', opts, { desc = 'Stop compilation' }))
|
||||
vim.keymap.set('n', '<localleader>lc', '<cmd>VimtexClean<cr>', vim.tbl_extend('force', opts, { desc = 'Clean aux files' }))
|
||||
vim.keymap.set('n', '<localleader>lC', '<cmd>VimtexClean!<cr>', vim.tbl_extend('force', opts, { desc = 'Clean all files' }))
|
||||
|
||||
-- View PDF (forward search)
|
||||
vim.keymap.set('n', '<localleader>lv', '<cmd>VimtexView<cr>', vim.tbl_extend('force', opts, { desc = 'View PDF (forward search)' }))
|
||||
|
||||
-- TOC
|
||||
vim.keymap.set('n', '<localleader>lt', '<cmd>VimtexTocToggle<cr>', vim.tbl_extend('force', opts, { desc = 'Toggle TOC' }))
|
||||
|
||||
-- Errors
|
||||
vim.keymap.set('n', '<localleader>le', '<cmd>VimtexErrors<cr>', vim.tbl_extend('force', opts, { desc = 'Show errors' }))
|
||||
|
||||
-- Info
|
||||
vim.keymap.set('n', '<localleader>li', '<cmd>VimtexInfo<cr>', vim.tbl_extend('force', opts, { desc = 'VimTeX info' }))
|
||||
vim.keymap.set('n', '<localleader>ls', '<cmd>VimtexStatus<cr>', vim.tbl_extend('force', opts, { desc = 'Compilation status' }))
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
return M
|
||||
3
config/sioyek/.gitignore
vendored
Normal file
3
config/sioyek/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
*.db
|
||||
auto.config
|
||||
*.txt
|
||||
94
config/sioyek/keys_user.config
Normal file
94
config/sioyek/keys_user.config
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
# Sioyek user keybindings
|
||||
# Vim-like keybindings
|
||||
|
||||
# Navigation - use visual mark commands (works as scroll when no mark exists)
|
||||
move_visual_mark_down j
|
||||
move_visual_mark_up k
|
||||
move_left h
|
||||
move_right l
|
||||
|
||||
# Page navigation
|
||||
next_page J
|
||||
previous_page K
|
||||
screen_down <C-d>
|
||||
screen_up <C-u>
|
||||
screen_down <C-f>
|
||||
screen_up <C-b>
|
||||
goto_page_with_page_number <C-g>
|
||||
goto_beginning gg
|
||||
goto_end G
|
||||
|
||||
# Chapter navigation (like vim [[ ]])
|
||||
next_chapter ]]
|
||||
prev_chapter [[
|
||||
|
||||
# History navigation (like vim jumplist)
|
||||
prev_state <C-o>
|
||||
next_state <tab>
|
||||
|
||||
# Scroll
|
||||
screen_down <space>
|
||||
screen_up <S-space>
|
||||
|
||||
# Search
|
||||
search /
|
||||
next_item n
|
||||
prev_item N
|
||||
|
||||
# Copy
|
||||
copy y
|
||||
|
||||
# Command mode
|
||||
command :
|
||||
|
||||
# Zoom
|
||||
zoom_in +
|
||||
zoom_in =
|
||||
zoom_out -
|
||||
fit_to_page_width w
|
||||
fit_to_page_width_smart e
|
||||
|
||||
# Bookmarks
|
||||
add_bookmark m
|
||||
goto_bookmark '
|
||||
delete_bookmark dm
|
||||
|
||||
# Highlights - mouse select text, then h + letter for color
|
||||
add_highlight H
|
||||
goto_next_highlight ]h
|
||||
goto_prev_highlight [h
|
||||
delete_highlight dh
|
||||
|
||||
# Table of contents
|
||||
goto_toc t
|
||||
|
||||
# Visual mark - right-click or v to create, then j/k to move
|
||||
visual_mark_under_cursor v
|
||||
toggle_visual_scroll <F7>
|
||||
|
||||
# Synctex (for LaTeX integration)
|
||||
# F4 toggles synctex mode, then right-click on text jumps to source
|
||||
# Use v to start visual mark, then Enter to jump to source in editor
|
||||
toggle_synctex <F4>
|
||||
synctex_under_ruler <return>
|
||||
|
||||
# Color mode toggle
|
||||
toggle_dark_mode <C-i>
|
||||
toggle_custom_color <C-r>
|
||||
|
||||
# Open/close
|
||||
quit q
|
||||
quit ZZ
|
||||
quit ZQ
|
||||
open_document o
|
||||
|
||||
# View
|
||||
rotate_clockwise r
|
||||
rotate_counterclockwise R
|
||||
toggle_fullscreen F
|
||||
|
||||
# Portal (linked view)
|
||||
portal p
|
||||
|
||||
# Overview (thumbnail view)
|
||||
overview <S-tab>
|
||||
55
config/sioyek/prefs_user.config
Normal file
55
config/sioyek/prefs_user.config
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# Sioyek user preferences
|
||||
# Noctis Azureus Ghostty theme
|
||||
|
||||
# Precise hex to RGB (0.0-1.0) conversions:
|
||||
# #051b29 -> 5/255=0.0196, 27/255=0.1059, 41/255=0.1608
|
||||
# #041520 -> 4/255=0.0157, 21/255=0.0824, 32/255=0.1255
|
||||
# #becfda -> 190/255=0.7451, 207/255=0.8118, 218/255=0.8549
|
||||
# #49e9a6 -> 73/255=0.2863, 233/255=0.9137, 166/255=0.6510
|
||||
# #e4b781 -> 228/255=0.8941, 183/255=0.7176, 129/255=0.5059
|
||||
# #49ace9 -> 73/255=0.2863, 172/255=0.6745, 233/255=0.9137
|
||||
|
||||
# Background - deep blue #051b29
|
||||
background_color 0.0196 0.1059 0.1608
|
||||
dark_mode_background_color 0.0196 0.1059 0.1608
|
||||
dark_mode_contrast 1.0
|
||||
|
||||
# Custom color mode (toggle with Ctrl+r)
|
||||
custom_background_color 0.0196 0.1059 0.1608
|
||||
custom_text_color 0.7451 0.8118 0.8549
|
||||
|
||||
# Search highlight (green #49e9a6)
|
||||
search_highlight_color 0.2863 0.9137 0.6510
|
||||
|
||||
# Link color (blue #49ace9)
|
||||
link_highlight_color 0.2863 0.6745 0.9137
|
||||
|
||||
# Text selection/highlight (yellow #e4b781)
|
||||
text_highlight_color 0.8941 0.7176 0.5059
|
||||
|
||||
# Page separator
|
||||
page_separator_width 2
|
||||
page_separator_color 0.1569 0.2078 0.2431
|
||||
|
||||
# Status bar - darker blue #041520
|
||||
ui_background_color 0.0157 0.0824 0.1255
|
||||
ui_text_color 0.7451 0.8118 0.8549
|
||||
|
||||
# Startup - use custom color mode and enable synctex by default
|
||||
should_launch_new_window 0
|
||||
startup_commands toggle_custom_color;toggle_synctex
|
||||
|
||||
# Smooth scrolling
|
||||
smooth_scroll_speed 3.0
|
||||
smooth_scroll_drag 2500
|
||||
|
||||
# Zoom
|
||||
default_zoom_level 1.0
|
||||
zoom_inc_factor 1.2
|
||||
|
||||
# Inverse search - click PDF to jump to Neovim source
|
||||
# %1 = filename, %2 = line number
|
||||
inverse_search_command /Users/rayandrew/dotfiles/bin/nvim-vimtex-callback %2 %1
|
||||
|
||||
# Control+click triggers synctex inverse search
|
||||
control_click_command synctex_under_cursor
|
||||
49
config/zathura/zathurarc
Normal file
49
config/zathura/zathurarc
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
# Noctis Azureus Ghostty theme for Zathura
|
||||
|
||||
set default-bg "#051b29"
|
||||
set default-fg "#becfda"
|
||||
|
||||
set statusbar-bg "#041520"
|
||||
set statusbar-fg "#becfda"
|
||||
|
||||
set inputbar-bg "#051b29"
|
||||
set inputbar-fg "#becfda"
|
||||
|
||||
set notification-bg "#051b29"
|
||||
set notification-fg "#49e9a6"
|
||||
set notification-error-bg "#051b29"
|
||||
set notification-error-fg "#e66533"
|
||||
set notification-warning-bg "#051b29"
|
||||
set notification-warning-fg "#e4b781"
|
||||
|
||||
set highlight-color "#e4b781"
|
||||
set highlight-active-color "#49e9a6"
|
||||
|
||||
set completion-bg "#041520"
|
||||
set completion-fg "#becfda"
|
||||
set completion-highlight-bg "#0c3f5f"
|
||||
set completion-highlight-fg "#becfda"
|
||||
|
||||
set index-bg "#051b29"
|
||||
set index-fg "#becfda"
|
||||
set index-active-bg "#0c3f5f"
|
||||
set index-active-fg "#becfda"
|
||||
|
||||
set render-loading-bg "#051b29"
|
||||
set render-loading-fg "#becfda"
|
||||
|
||||
# Recolor settings (inverts PDF colors to match theme)
|
||||
set recolor "true"
|
||||
# set recolor-reverse-video "true"
|
||||
set recolor-keephue "true"
|
||||
set recolor-lightcolor "#051b29"
|
||||
set recolor-darkcolor "#becfda"
|
||||
# set recolor-keephue "false"
|
||||
|
||||
# Selection settings
|
||||
set selection-clipboard clipboard
|
||||
set selection-notification true
|
||||
|
||||
# Synctex inverse search (Ctrl+click in PDF jumps to source)
|
||||
set synctex true
|
||||
set synctex-editor-command "~/dotfiles/bin/path-shim nvr --remote-silent +%{line} %{input}"
|
||||
|
|
@ -66,6 +66,7 @@
|
|||
valgrind = mkEnableOption "Enable valgrind";
|
||||
hammerspoon = mkEnableOption "Enable hammerspoon";
|
||||
aerospace = mkEnableOption "Enable aerospace";
|
||||
skim = mkEnableOption "Enable skim";
|
||||
};
|
||||
|
||||
config = lib.mkMerge [
|
||||
|
|
@ -389,5 +390,10 @@
|
|||
"aerospace"
|
||||
];
|
||||
})
|
||||
(lib.mkIf config.custom.brew.skim {
|
||||
homebrew.casks = [
|
||||
"skim"
|
||||
];
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
./hammerspoon.nix
|
||||
./kitty.nix
|
||||
./ghostty.nix
|
||||
./zathura.nix
|
||||
./sioyek.nix
|
||||
];
|
||||
|
||||
options.custom.gui = with lib; {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
home.packages = with pkgs; [
|
||||
(neovim.override { withNodeJs = true; })
|
||||
tree-sitter
|
||||
neovim-remote
|
||||
];
|
||||
|
||||
xdg.configFile."nvim".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/nvim";
|
||||
|
|
|
|||
34
home/sioyek.nix
Normal file
34
home/sioyek.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
dots,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
options.custom.gui = with lib; {
|
||||
sioyek = {
|
||||
enable = mkEnableOption "Enable sioyek";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.custom.gui.sioyek.enable (
|
||||
lib.mkMerge [
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
sioyek
|
||||
];
|
||||
}
|
||||
# Linux uses ~/.config/sioyek
|
||||
(lib.mkIf pkgs.stdenv.isLinux {
|
||||
xdg.configFile."sioyek".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/sioyek";
|
||||
})
|
||||
# macOS uses ~/Library/Application Support/sioyek
|
||||
(lib.mkIf pkgs.stdenv.isDarwin {
|
||||
home.file."Library/Application Support/sioyek".source =
|
||||
config.lib.file.mkOutOfStoreSymlink "${dots}/config/sioyek";
|
||||
})
|
||||
]
|
||||
);
|
||||
}
|
||||
22
home/zathura.nix
Normal file
22
home/zathura.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
dots,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
options.custom.gui = with lib; {
|
||||
zathura = {
|
||||
enable = mkEnableOption "Enable zathura";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.custom.gui.zathura.enable {
|
||||
home.packages = with pkgs; [
|
||||
zathura
|
||||
];
|
||||
xdg.configFile."zathura".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/zathura";
|
||||
};
|
||||
}
|
||||
|
|
@ -67,6 +67,7 @@
|
|||
valgrind = false;
|
||||
hammerspoon = true;
|
||||
aerospace = true;
|
||||
skim = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -99,6 +100,8 @@
|
|||
ghostty.enable = true;
|
||||
hammerspoon.enable = true;
|
||||
kitty.enable = true;
|
||||
zathura.enable = true;
|
||||
sioyek.enable = true;
|
||||
};
|
||||
email = {
|
||||
enable = true;
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/early-init.el b/early-init.el
|
||||
index dfea2f0..d60b6ef 100644
|
||||
--- a/early-init.el
|
||||
+++ b/early-init.el
|
||||
@@ -32,7 +32,7 @@ turned on.")
|
||||
(defvar minimal-emacs-frame-title-format "%b – Emacs"
|
||||
"Template for displaying the title bar of visible and iconified frame.")
|
||||
|
||||
-(defvar minimal-emacs-debug (bound-and-true-p init-file-debug)
|
||||
+(defvar minimal-emacs-debug nil
|
||||
"Non-nil to enable debug.")
|
||||
|
||||
(defvar minimal-emacs-gc-cons-threshold (* 16 1024 1024)
|
||||
|
|
@ -14,15 +14,10 @@ stdenv.mkDerivation {
|
|||
src = pkgs.fetchFromGitHub {
|
||||
owner = "jamescherti";
|
||||
repo = "minimal-emacs.d";
|
||||
rev = "e44aa459d5eb5af2f868dc490e4d05efca308915";
|
||||
# rev = "08f077545a0f45a1701333406fd1afe8be77a752";
|
||||
sha256 = "sha256-ABHv+TUQpBoXkg75iL2ROJoGjT+iUZQHZD9b4Z8Q4kQ=";
|
||||
rev = "4b43566ec9bc9b1a68e288b955d673d0ab68ddd9";
|
||||
sha256 = "sha256-Z4NgOrwNXuQKIEh4Z/H324sK3zVY3AdxwOUFUSkXta4=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./030825-init-file-debug.patch
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
cp -r * "$out/"
|
||||
|
|
|
|||
Loading…
Reference in a new issue