This commit is contained in:
Jeffrey Serio 2024-09-24 16:55:02 -05:00
parent 4ea6506ff6
commit daea398076
23 changed files with 776 additions and 1450 deletions

View File

@ -47,21 +47,23 @@ format = "[$symbol \\[ $name \\]]($style) "
[cmd_duration] [cmd_duration]
min_time = 1 min_time = 1
style = "yellow" style = "yellow"
format = "duration: [$duration]($style)" format = '\[duration: [$duration]($style)\] '
disabled = false disabled = false
# Prompt: param 2 # Prompt: param 2
[character] [character]
format = "$symbol " format = '$symbol '
success_symbol = ' [%](teal)' success_symbol = ' [➜](bold teal)'
error_symbol = ' [%](red)' error_symbol = ' [➜](bold red)'
vicmd_symbol = " [<](teal)" vimcmd_symbol = ' [V](bold green)'
# SYMBOLS # SYMBOLS
[status] [status]
format = 'exit status: [$status_common_meaning$status_signal_name$status]($style)' format = '\[exit status: [$status = $common_meaning]($style)\]'
disabled = false disabled = false
style = "bold red" style = "bold red"
recognize_signal_code = true
map_symbol = true
[docker_context] [docker_context]
symbol = " " symbol = " "

303
doom.d/config.el Normal file
View File

@ -0,0 +1,303 @@
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
;;;; Misc settings
;; start Emacs as a server process
(server-start)
(setq doom-user-dir "~/.doom.d/")
;; package-archives
(setq package-archives
'(("gnu" . "https://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")))
(after! projectile
(setq projectile-project-root-files-bottom-up
(remove ".git" projectile-project-root-files-bottom-up)))
;; Set fonts
(setq fontsize 18)
(setq monofontfam "JetBrainsMono Nerd Font Mono")
(setq doom-font (font-spec :family monofontfam :size fontsize)
doom-variable-pitch-font (font-spec :family monofontfam :size fontsize)
doom-symbol-font (font-spec :family monofontfam :size fontsize)
doom-big-font (font-spec :family monofontfam :size fontsize))
;; Use catppuccin-mocha theme
(setq doom-theme 'catppuccin)
(setq catppuccin-flavor 'mocha)
;; Backups
(setq backup-directory-alist '(("." . "~/shared/emacs/backups")))
(with-eval-after-load 'tramp
(add-to-list 'tramp-backup-directory-alist
(cons tramp-file-name-regexp nil)))
(setq delete-old-versions -1)
(setq version-control t)
(setq vc-make-backup-files t)
(setq auto-save-file-name-transforms '((".*" "~/shared/emacs/auto-save-list/" t)))
;; History
(setq savehist-file "~/shared/emacs/savehist")
(savehist-mode 1)
(setq history-length t)
(setq history-delete-duplicates t)
(setq savehist-save-minibuffer-history 1)
(setq savehist-additional-variables
'(kill-ring
search-ring
regexp-search-ring))
;; Display time in the modeline
(display-time-mode 1)
;; Sentences end with a single space because it's right and proper
(setq sentence-end-double-space nil)
;; This determines the style of line numbers in effect. If set to `nil', line
;; numbers are disabled. For relative line numbers, set this to `relative'.
(setq display-line-numbers-type 'relative)
;; Make vterm open in another window
(setq vterm-other-window 1)
;; Keybinding to kill-whole-line
(global-set-key (kbd "M-9") 'kill-whole-line)
;; trim newline from string output
(defun string-trim-final-newline (string)
"Trim the last newline character from string.
Used with `shell-command-to-string'.
Source: https://emacs.stackexchange.com/a/21906"
(let ((len (length string)))
(cond
((and (> len 0) (eql (aref string (- len 1)) ?\n))
(substring string 0 (- len 1)))
(t string))))
;; wrapper around `shell-command-to-string' to remove newline
(defun shell-command-output-string (command)
(string-trim-final-newline (shell-command-to-string command)))
;; Copy all or text selection
(defun xah-copy-all-or-region ()
"Put the whole buffer content to `kill-ring', or text selection if there's one.
Respects `narrow-to-region'.
URL `https://ergomacs.org/emacs/emacs_copy_cut_all_or_region.html'
Version 2015-08-22"
(interactive)
(if (use-region-p)
(progn
(kill-new (buffer-substring (region-beginning) (region-end)))
(message "Text selection copied."))
(progn
(kill-new (buffer-string))
(message "Buffer content copied."))))
;; Cut all or text selection
(defun xah-cut-all-or-region ()
"Cut the whole buffer content to `kill-ring', or text selection if there's one.
Respects `narrow-to-region'.
URL `https://ergomacs.org/emacs/emacs_copy_cut_all_or_region.html'
Version 2015-08-22"
(interactive)
(if (use-region-p)
(progn
(kill-new (buffer-substring (region-beginning) (region-end)))
(delete-region (region-beginning) (region-end)))
(progn
(kill-new (buffer-string))
(delete-region (point-min) (point-max)))))
;; open URL in Firefox/LibreWolf
(defun browse-host-web (url)
"Browse URL with Firefox/LibreWolf"
(interactive "sURL: ")
(shell-command (concat "firefox " url)))
(setq browse-url-browser-function 'browse-host-web)
;; after copy Ctrl+c in Linux X11, you can paste by `yank' in emacs
(setq select-enable-clipboard t)
;; after mouse selection copy in X11, you can paste by `yank' in emacs
(setq select-enable-primary t)
;; set keybinding for paste
(global-set-key (kbd "C-S-V") #'clipboard-yank)
;; Smart home key
(defun smart-beginning-of-line ()
"Move point to first non-whitespace character or beginning-of-line.
Move point to the first non-whitespace character on this line.
If point was already at that position, move point to beginning of line."
(interactive "^")
(let ((oldpos (point)))
(back-to-indentation)
(and (= oldpos (point))
(beginning-of-line))))
(global-set-key (kbd "<home>") 'smart-beginning-of-line)
(global-set-key (kbd "<end>") 'end-of-line)
;; Autoformat on save
(setq +format-on-save-enabled-modes
'(emacs-lisp-mode))
;; UTF-8
(prefer-coding-system 'utf-8)
(when (display-graphic-p)
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)))
;;;; undo-tree-mode - visualize undos and branches
(global-undo-tree-mode)
(setq undo-tree-visualizer-timestamps t)
(setq undo-tree-visualizer-diff t)
(setq undo-tree-history-directory-alist '(("." . "~/shared/emacs/backups/undo-tree")))
;;;; evil-nerd-commenter
(global-set-key (kbd "M-;") 'evilnc-comment-or-uncomment-lines)
(global-set-key (kbd "C-c l") 'evilnc-quick-comment-or-uncomment-to-the-line)
(global-set-key (kbd "C-c c") 'evilnc-copy-and-comment-lines)
(global-set-key (kbd "C-c p") 'evilnc-comment-or-uncomment-paragraphs)
;;;; org-mode
(add-hook 'org-mode-hook (lambda () (org-superstar-mode 1)))
(require 'org-protocol)
(setq org-modules '(org-agenda
org-annotate-file
org-choose
org-collector
))
(eval-after-load 'org
'(org-load-modules-maybe t))
(setq org-directory "~/shared/org/")
(setq org-default-notes-file "~/shared/org/inbox.org")
(setq org-agenda-files '("~/shared/org/inbox.org"))
;; support selecting lines by using shift
(setq org-support-shift-select t)
;; org-mode tags
;; I hardly use these but whatever
(setq org-tag-alist (quote (("@archiving" .?a)
("@blog" .?b)
("@homelab" . ?l)
("@hyperreal.coffee" .?h)
("@nirn.quest" .?n)
("@reading" . ?r)
("@selfcare" . ?s))))
;; org-mode keybindings
(with-eval-after-load 'org
(bind-key "C-c $" 'org-archive-subtree)
(bind-key "C-c r" 'org-capture)
(bind-key "C-c R" 'org-roam-capture)
(bind-key "C-c a" 'org-agenda)
(bind-key "C-c l" 'org-store-link)
(bind-key "C-c L" 'org-insert-link-global)
(bind-key "C-c O" 'org-open-at-point-global))
(setq org-use-effective-time t)
;; org-refile
(setq org-reverse-note-order nil) ; new notes prepended
(setq org-refile-use-outline-path 'full-file-path)
(setq org-outline-path-complete-in-steps nil)
(setq org-refile-allow-creating-parent-nodes nil)
(setq org-refile-use-cache nil)
(setq org-blank-before-new-entry '((heading . t) (plain-list-item . t)))
(setq org-refile-targets
`((("~/shared/org/inbox.org"
"~/shared/org/computing.org"
"~/shared/org/todos.org")
. (:maxlevel . 5))))
;; org-todo-keywords
(with-eval-after-load 'org
(setq org-todo-keywords
'((sequence
"STARTED(s)"
"TODO(t)"
"WAITING(w@/!)"
"IDEA(i)"
"SOMEDAY(.)"
"BLOCKED(k@/!)"
"|"
"DONE(x!)"
"CANCELLED(c)")
(sequence "PROJECT" "|" "DONE(x)")
(sequence "MAYBE(,0)" "CHOSEN(c,+)" "|" "REJECTED")))
;; catppuccin palette
(setq org-todo-keyword-faces
'(("STARTED" . (:foreground "#a6d189" :weight bold))
("TODO" . (:foreground "#a6e3a1" :weight bold))
("WAITING" . (:foreground "#f9e2af" :weight bold))
("IDEA" . (:foreground "#74c7ec" :weight bold))
("SOMEDAY" . (:foreground "#f2cdcd" :weight bold))
("BLOCKED" . (:foreground "#c6d0f5" :weight bold))
("DONE" . (:foreground "#f38ba8" :weight bold))
("CANCELLED" . (:foreground "#e78284" :weight bold))
("MAYBE" . (:foreground "#c6d0f5" :weight bold))
("CHOSEN" . (:foreground "#89b4fa" :weight bold))
("REJECTED" . (:foreground "#d20f39" :weight bold)))))
(setq org-log-done 'time)
(setq org-popup-calendar-for-date-prompt nil)
;; colorize compilation buffer
;; from https://sachachua.com/dotemacs/index.html#orga33bac5
(require 'ansi-color)
(defun colorize-compilation-buffer ()
(when (eq major-mode 'compilation-mode)
(let ((inhibit-read-only t))
(ansi-color-apply-on-region compilation-filter-start (point-max)))))
(add-hook 'compilation-filter-hook 'colorize-compilation-buffer)
;;;; helpful
(global-set-key (kbd "C-h f") #'helpful-callable)
(global-set-key (kbd "C-h v") #'helpful-variable)
(global-set-key (kbd "C-h k") #'helpful-key)
(global-set-key (kbd "C-h x") #'helpful-command)
(global-set-key (kbd "C-c C-d") #'helpful-at-point)
;;;; dictionary
(global-set-key (kbd "C-c l") #'dictionary-lookup-definition)
(setq dictionary-server "dict.org")
;;;; dired
(map! :after dired
:map dired-mode-map
"C-o" #'casual-dired-tmenu)
;;;; elpher
(setq elpher-certificate-directory "~/shared/elpher/certs")
(setq elpher-default-url-type "gemini")
;;;; vterm
(setq vterm-kill-buffer-on-exit t)
(setq vterm-always-compile-module t)

191
doom.d/init.el Normal file
View File

@ -0,0 +1,191 @@
;;; init.el -*- lexical-binding: t; -*-
;; This file controls what Doom modules are enabled and what order they load
;; in. Remember to run 'doom sync' after modifying it!
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
;; documentation. There you'll find a link to Doom's Module Index where all
;; of our modules are listed, including what flags they support.
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
;; 'C-c c k' for non-vim users) to view its documentation. This works on
;; flags as well (those symbols that start with a plus).
;;
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
;; directory (for easy access to its source code).
(doom! :input
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
;;chinese
;;japanese
;;layout ; auie,ctsrnm is the superior home row
:completion
company ; the ultimate code completion backend
;; (corfu +orderless) ; complete with cap(f), cape and a flying feather!
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
;;ivy ; a search engine for love and life
vertico ; the search engine of the future
:ui
;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
(emoji +unicode) ; 🙂
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;indent-guides ; highlighted indent columns
ligatures ; ligatures and symbols to make your code pretty again
;;minimap ; show a map of the code on the side
modeline ; snazzy, Atom-inspired modeline, plus API
;;nav-flash ; blink cursor line after big motions
;;neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
(popup +defaults) ; tame sudden yet inevitable temporary windows
;;tabs ; a tab bar for Emacs
;;treemacs ; a project drawer, like neotree but cooler
;;unicode ; extended unicode support for various languages
(vc-gutter +pretty) ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
;;window-select ; visually switch windows
workspaces ; tab emulation, persistence & separate workspaces
;;zen ; distraction-free coding or writing
:editor
;;(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim
;;multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of
;;rotate-text ; cycle region at point between text candidates
snippets ; my elves. They type so I don't have to
;;word-wrap ; soft wrapping with language-aware indent
:emacs
dired ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent
ibuffer ; interactive buffer management
undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree
:term
;;eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs
vterm ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
;; (spell +flyspell) ; tasing you for misspelling mispelling
;; grammar ; tasing grammar mistake every you make
:tools
ansible
;;biblio ; Writes a PhD for you (citation needed)
;;collab ; buffers with friends
;;debugger ; FIXME stepping through code, to help you add bugs
direnv
;;docker
;;editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
;; lookup ; navigate your code and its documentation
lsp ; M-x vscode
magit ; a git porcelain for Emacs
make ; run make tasks from Emacs
;;pass ; password manager for nerds
;; pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
tree-sitter ; syntax and parsing, sitting in a tree...
;;upload ; map local to remote projects via ssh/ftp
:os
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
;;tty ; improve the terminal Emacs experience
:lang
;;agda ; types of types of types of types...
;;beancount ; mind the GAAP
;;(cc +lsp) ; C > C++ == 1
;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans
data ; config/data formats
;;(dart +flutter) ; paint ui and not much else
;;dhall
;;elixir ; erlang done right
;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
;;ess ; emacs speaks statistics
;;factor
;;faust ; dsp, but you get to keep your soul
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
;;gdscript ; the language you waited for
(go +lsp) ; the hipster dialect
;;(graphql +lsp) ; Give queries a REST
;;(haskell +lsp) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ; a language you can depend on
json ; At least it ain't XML
;;(java +lsp) ; the poster child for carpal tunnel syndrome
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
;;latex ; writing papers in Emacs has never been so fun
;;lean ; for folks with too much to prove
;;ledger ; be audit you can be
;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
org ; organize your plain life in plain text
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional
(python +lsp +pyright) ; beautiful is better than ugly
;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6
;;rest ; Emacs as a REST client
;;rst ; ReST in peace
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
;;(scheme +guile) ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor
;; sml
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
web ; the tubes
yaml ; JSON, but readable
;;zig ; C, but simpler
:email
;;(mu4e +org +gmail)
;;notmuch
;;(wanderlust +gmail)
:app
;;calendar
;;emms
;;everywhere ; *leave* Emacs!? You must be joking
;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader
:config
;;literate
(default +bindings +smartparens))

27
doom.d/packages.el Normal file
View File

@ -0,0 +1,27 @@
;; -*- no-byte-compile: t; -*-
;;; $DOOMDIR/packages.el
;; To install a package with Doom you must declare them here and run 'doom sync'
;; on the command line, then restart Emacs for the changes to take effect -- or
;; use 'M-x doom/reload'.
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
;(package! some-package)
(package! apheleia)
(package! autothemer)
(package! casual-dired)
(package! catppuccin-theme)
(package! dockerfile-mode)
(package! elpher)
(package! evil-nerd-commenter)
(package! gemini :recipe
(:host nil :repo "https://git.carcosa.net/jmcbray/gemini.el"))
(package! helpful)
(package! just-mode)
(package! license-templates)
(package! org-superstar)
(package! ox-gemini)
(package! pdf-tools)
(package! shell-pop)
(package! systemd)
(package! undo-tree)

View File

@ -1,31 +0,0 @@
#!/usr/bin/env bash
git_files=$(cd "${HOME}" && git ls-tree --name-only main)
while IFS= read -r line; do
case $line in
".config")
config_files=$(cd "${HOME}/.config" && git ls-tree --name-only main)
mkdir -p "$(pwd)/.config"
while IFS= read -r line; do
cp -rfv "${HOME}/.config/$line" "$(pwd)/.config/"
done <<< "$config_files"
;;
".gitignore")
echo "Skipping .gitignore"
;;
".gnupg")
echo "Skipping .gnupg"
;;
".local")
mkdir -p "$(pwd)/.local/share"
cp -rfv "${HOME}/.local/share/rofi" "$(pwd)/.local/share/"
;;
".ssh")
echo "Skipping .ssh"
;;
*)
cp -rfv "${HOME}/$line" "$(pwd)/"
;;
esac
done <<< "$git_files"

View File

@ -1,367 +0,0 @@
# This is the default config file.
# It also shows all the default values, if you don't create the file.
# All URL values may omit the scheme and/or port, as well as the beginning double slash
# Valid URL examples:
# gemini://example.com
# //example.com
# example.com
# example.com:123
[a-general]
# Press Ctrl-H to access it
home = "about:newtab"
# Follow up to 5 Gemini redirects without prompting.
# A prompt is always shown after the 5th redirect and for redirects to protocols other than Gemini.
# If set to false, a prompt will be shown before following redirects.
auto_redirect = false
# What command to run to open a HTTP(S) URL.
# Set to "default" to try to guess the browser, or set to "off" to not open HTTP(S) URLs.
# If a command is set, than the URL will be added (in quotes) to the end of the command.
# A space will be prepended to the URL.
#
# The best to define a command is using a string array.
# Examples:
http = ['firefox']
# http = ['custom-browser', '--flag', '--option=2']
# http = ['/path/with spaces/in it/firefox']
#
# Note the use of single quotes, so that backslashes will not be escaped.
# Using just a string will also work, but it is deprecated, and will degrade if
# you use paths with spaces.
# Any URL that will accept a query string can be put here
search = "gemini://gus.guru/search"
# Whether colors will be used in the terminal
color = true
# Whether ANSI color codes from the page content should be rendered
ansi = true
# Whether or not to support source code highlighting in preformatted blocks based on alt text
highlight_code = true
# Which highlighting style to use (see https://xyproto.github.io/splash/docs/)
highlight_style = "dracula"
# Whether to replace list asterisks with unicode bullets
bullets = true
# Whether to show link after link text
show_link = false
# A number from 0 to 1, indicating what percentage of the terminal width the left margin should take up.
left_margin = 0.15
# The max number of columns to wrap a page's text to. Preformatted blocks are not wrapped.
max_width = 100
# 'downloads' is the path to a downloads folder.
# An empty value means the code will find the default downloads folder for your system.
# If the path does not exist it will be created.
# Note the use of single quotes, so that backslashes will not be escaped.
downloads = '/home/jas/downloads'
# Max size for displayable content in bytes - after that size a download window pops up
page_max_size = 2097152 # 2 MiB
# Max time it takes to load a page in seconds - after that a download window pops up
page_max_time = 10
# Whether to replace tab numbers with emoji favicons, which are cached.
emoji_favicons = true
# When a scrollbar appears. "never", "auto", and "always" are the only valid values.
# "auto" means the scrollbar only appears when the page is longer than the window.
scrollbar = "auto"
[auth]
# Authentication settings
# Note the use of single quotes for values, so that backslashes will not be escaped.
[auth.certs]
# Client certificates
# Set domain name equal to path to client cert
# "example.com" = 'mycert.crt'
"bbs.geminispace.org" = "~/.config/amfora/idents/fd10177ef16eb7c13bf68cccc144e09bd7b87d885f77b6a34c0a7599582535a0.crt"
[auth.keys]
# Client certificate keys
# Set domain name equal to path to key for the client cert above
# "example.com" = 'mycert.key'
"bbs.geminispace.org" = "~/.config/amfora/idents/fd10177ef16eb7c13bf68cccc144e09bd7b87d885f77b6a34c0a7599582535a0.key"
[keybindings]
# If you have a non-US keyboard, use bind_tab1 through bind_tab0 to
# setup the shift-number bindings: Eg, for US keyboards (the default):
# bind_tab1 = "!"
# bind_tab2 = "@"
# bind_tab3 = "#"
# bind_tab4 = "$"
# bind_tab5 = "%"
# bind_tab6 = "^"
# bind_tab7 = "&"
# bind_tab8 = "*"
# bind_tab9 = "("
# bind_tab0 = ")"
# Whitespace is not allowed in any of the keybindings! Use 'Space' and 'Tab' to bind to those keys.
# Multiple keys can be bound to one command, just use a TOML array.
# To add the Alt modifier, the binding must start with Alt-, should be reasonably universal
# Ctrl- won't work on all keys, see this for a list:
# https://github.com/gdamore/tcell/blob/cb1e5d6fa606/key.go#L83
# An example of a TOML array for multiple keys being bound to one command is the default
# binding for reload:
# bind_reload = ["R","Ctrl-R"]
# One thing to note here is that "R" is capitalization sensitive, so it means shift-r.
# "Ctrl-R" means both ctrl-r and ctrl-shift-R (this is a quirk of what ctrl-r means on
# an ANSI terminal)
# The default binding for opening the bottom bar for entering a URL or link number is:
# bind_bottom = "Space"
# This is how to get the Spacebar as a keybinding, if you try to use " ", it won't work.
# And, finally, an example of a simple, unmodified character is:
# bind_edit = "e"
# This binds the "e" key to the command to edit the current URL.
# The bind_link[1-90] options are for the commands to go to the first 10 links on a page,
# typically these are bound to the number keys:
# bind_link1 = "1"
# bind_link2 = "2"
# bind_link3 = "3"
# bind_link4 = "4"
# bind_link5 = "5"
# bind_link6 = "6"
# bind_link7 = "7"
# bind_link8 = "8"
# bind_link9 = "9"
# bind_link0 = "0"
# All keybindings:
#
# bind_bottom
# bind_edit
# bind_home
# bind_bookmarks
# bind_add_bookmark
# bind_save
# bind_reload
# bind_back
# bind_forward
# bind_pgup
# bind_pgdn
# bind_new_tab
# bind_close_tab
# bind_next_tab
# bind_prev_tab
# bind_quit
# bind_help
# bind_sub: for viewing the subscriptions page
# bind_add_sub
[url-handlers]
# Allows setting the commands to run for various URL schemes.
# E.g. to open FTP URLs with FileZilla set the following key:
# ftp = 'filezilla'
# You can set any scheme to "off" or "" to disable handling it, or
# just leave the key unset.
#
# DO NOT use this for setting the HTTP command.
# Use the http setting in the "a-general" section above.
#
# NOTE: These settings are overrided by the ones in the proxies section.
# Note the use of single quotes, so that backslashes will not be escaped.
# This is a special key that defines the handler for all URL schemes for which
# no handler is defined.
other = 'off'
# [[mediatype-handlers]] section
# ---------------------------------
#
# Specify what applications will open certain media types.
# By default your default application will be used to open the file when you select "Open".
# You only need to configure this section if you want to override your default application,
# or do special things like streaming.
#
# Note the use of single quotes for commands, so that backslashes will not be escaped.
#
#
# To open jpeg files with the feh command:
#
# Each command that you specify must come under its own [[mediatype-handlers]]. You may
# specify as many [[mediatype-handlers]] as you want to setup multiple commands.
#
# If the subtype is omitted then the specified command will be used for the
# entire type:
#
# [[mediatype-handlers]]
# command = ['vlc', '--flag']
# types = ["audio", "video"]
#
# A catch-all handler can by specified with "*".
# Note that there are already catch-all handlers in place for all OSes,
# that open the file using your default application. This is only if you
# want to override that.
#
# [[mediatype-handlers]]
# cmd = ['some-command']
# types = [
# "application/pdf",
# "*",
# ]
#
# You can also choose to stream the data instead of downloading it all before
# opening it. This is especially useful for large video or audio files, as
# well as radio streams, which will never complete. You can do this like so:
#
# [[mediatype-handlers]]
# cmd = ['vlc', '-']
# types = ["audio", "video"]
# stream = true
#
# This uses vlc to stream all video and audio content.
# By default stream is set to off for all handlers
#
#
# If you want to always open a type in its viewer without the download or open
# prompt appearing, you can add no_prompt = true
#
[[mediatype-handlers]]
cmd = ['eog']
types = ["image"]
no_prompt = true
[[mediatype-handlers]]
cmd = ['foliate']
types = ["application/epub+zip"]
no_prompt = true
[[mediatype-handlers]]
cmd = ['evince']
types = ["application/pdf"]
no_prompt = true
[[mediatype-handlers]]
cmd = ['vlc', '-']
types = ["audio", "video"]
stream = true
[[mediatype-handlers]]
cmd = ['emacsclient']
types = [
"application/json",
"text/plain",
]
no_prompt = true
#
# Note: Multiple handlers cannot be defined for the same full media type, but
# still there needs to be an order for which handlers are used. The following
# order applies regardless of the order written in the config:
#
# 1. Full media type: "image/jpeg"
# 2. Just type: "image"
# 3. Catch-all: "*"
[cache]
# Options for page cache - which is only for text pages
# Increase the cache size to speed up browsing at the expense of memory
# Zero values mean there is no limit
max_size = 0 # Size in bytes
max_pages = 30 # The maximum number of pages the cache will store
# How long a page will stay in cache, in seconds.
timeout = 1800 # 30 mins
[proxies]
# Allows setting a Gemini proxy for different schemes.
# The settings are similar to the url-handlers section above.
# E.g. to open a gopher page by connecting to a Gemini proxy server:
# gopher = "example.com:123"
#
# Port 1965 is assumed if no port is specified.
#
# NOTE: These settings override any external handlers specified in
# the url-handlers section.
#
# Note that HTTP and HTTPS are treated as separate protocols here.
[subscriptions]
# For tracking feeds and pages
# Whether a pop-up appears when viewing a potential feed
popup = true
# How often to check for updates to subscriptions in the background, in seconds.
# Set it to 0 to disable this feature. You can still update individual feeds
# manually, or restart the browser.
#
# Note Amfora will check for updates on browser start no matter what this setting is.
update_interval = 1800 # 30 mins
# How many subscriptions can be checked at the same time when updating.
# If you have many subscriptions you may want to increase this for faster
# update times. Any value below 1 will be corrected to 1.
workers = 3
# The number of subscription updates displayed per page.
entries_per_page = 20
# Catppuccin Mocha
[theme]
bg = "#1E1E2E"
tab_num = "#cba6f7"
tab_divider = "#a6adc8"
bottombar_text = "#94e2d5"
bottombar_bg = "#45475a"
scrollbar = "#45475a"
hdg_1 = "#cba6f7"
hdg_2 = "#cba6f7"
hdg_3 = "#cba6f7"
amfora_link = "#f38ba8"
foreign_link = "#fab387"
link_number = "#94e2d5"
regular_text = "#cdd6f4"
quote_text = "#f9e2af"
preformatted_text = "#fab387"
list_text = "#cdd6f4"
btn_bg = "#45475a"
btn_text = "#cdd6f4"
dl_choice_modal_bg = "#45475a"
dl_choice_modal_text = "#cdd6f4"
dl_modal_bg = "#45475a"
dl_modal_text = "#cdd6f4"
info_modal_bg = "#45475a"
info_modal_text = "#cdd6f4"
error_modal_bg = "#f38ba8"
error_modal_text = "#181825"
yesno_modal_bg = "#45475a"
yesno_modal_text = "#cdd6f4"
tofu_modal_bg = "#45475a"
tofu_modal_text = "#cdd6f4"
subscription_modal_bg = "#45475a"
subscription_modal_text = "#cdd6f4"
input_modal_bg = "#45475a"
input_modal_text = "#cdd6f4"
input_modal_field_bg = "#313244"
input_modal_field_text = "#cdd6f4"
bkmk_modal_bg = "#45475a"
bkmk_modal_text = "#cdd6f4"
bkmk_modal_label = "#cdd6f4"
bkmk_modal_field_bg = "#313244"
bkmk_modal_field_text = "#cdd6f4"

View File

@ -1,34 +0,0 @@
_____ _ _ _____
/ ____| (_) (_) / ____|
| | __ ___ _ __ ___ _ _ __ _ | (___ _ __ __ _ ___ ___
| | |_ |/ _ \ '_ ` _ \| | '_ \| | \___ \| '_ \ / _` |/ __/ _ \
| |__| | __/ | | | | | | | | | | ____) | |_) | (_| | (_| __/
\_____|\___|_| |_| |_|_|_| |_|_| |_____/| .__/ \__,_|\___\___|
| |
|_|
## Internal pages
=> about:bookmarks Bookmarks
=> about:subscriptions Subscriptions
## Gemini Space
=> gemini://hyperreal.coffee hyperreal.coffee
=> gemini://makeworld.space/amfora-wiki/ Amfora Wiki
=> gemini://gemini.circumlunar.space/ Project Gemini
## BBS Quicklinks
=> gemini://bbs.geminispace.org bbs.geminispace.org
=> gemini://bbs.geminispace.org/s/ascii-art?feed s/ascii-art
=> gemini://bbs.geminispace.org/s/emacs?feed s/emacs
=> gemini://bbs.geminispace.org/s/Fediverse?feed s/Fediverse
=> gemini://bbs.geminispace.org/s/Gemini?feed s/Gemini
=> gemini://bbs.geminispace.org/s/Geminispace?feed s/Geminispace
=> gemini://bbs.geminispace.org/s/homelab?feed s/homelab
=> gemini://bbs.geminispace.org/s/IPFS?feed s/IPFS
=> gemini://bbs.geminispace.org/s/IRL-Issues?feed s/IRL-Issues
=> gemini://bbs.geminispace.org/s/Lagrange?feed s/Lagrange
=> gemini://bbs.geminispace.org/s/Linux?feed s/Linux
=> gemini://bbs.geminispace.org/s/privacy?feed s/privacy
=> gemini://bbs.geminispace.org/s/retrocomputing?feed s/retrocomputing
=> gemini://bbs.geminispace.org/s/retrogaming?feed s/retrogaming

View File

@ -1,10 +0,0 @@
[core]
editor = "emacsclient"
pager = "diff-so-fancy | less --tabs=4 -RFX"
[init]
defaultBranch = "main"
[pull]
rebase = true
[user]
email = "23226432+hyperreal64@users.noreply.github.com"
name = "Jeffrey Serio"

View File

@ -1,12 +0,0 @@
* {
bg-col: #1e1e2e;
bg-col-light: #313244;
border-col: #43465a;
selected-col: #181825;
blue: #f38ba8;
fg-col: #c6d0f5;
fg-col2: #cba6f7;
grey: #696d86;
width: 600;
}

View File

@ -1,104 +0,0 @@
configuration{
modi: "drun,filebrowser,window";
lines: 5;
font: "JetBrainsMono Nerd Font Mono 14";
show-icons: true;
icon-theme: "Papirus-Dark";
terminal: "gnome-terminal";
drun-display-format: "{icon} {name}";
location: 0;
disable-history: false;
hide-scrollbar: true;
display-drun: "  Apps ";
display-run: "  Run ";
display-window: " 🗔 Windows ";
display-Network: " 󰤨 Network ";
display-filebrowser: " 📁 Files ";
sidebar-mode: true;
}
@theme "catppuccin"
element-text, element-icon , mode-switcher {
background-color: inherit;
text-color: inherit;
}
window {
height: 800px;
width: 1200px;
border: 3px;
border-color: @border-col;
background-color: @bg-col;
}
mainbox {
background-color: @bg-col;
}
inputbar {
children: [prompt,entry];
background-color: @bg-col;
border-radius: 5px;
padding: 2px;
}
prompt {
background-color: @blue;
padding: 6px;
text-color: @bg-col;
border-radius: 3px;
margin: 20px 0px 0px 20px;
}
textbox-prompt-colon {
expand: false;
str: ":";
}
entry {
padding: 3px;
margin: 20px 0px 0px 10px;
text-color: @fg-col;
background-color: @bg-col;
}
listview {
border: 0px 0px 0px;
padding: 3px 0px 0px;
margin: 10px 0px 0px 20px;
columns: 2;
background-color: @bg-col;
}
element {
padding: 1px;
background-color: @bg-col;
text-color: @fg-col ;
}
element-icon {
size: 32px;
}
element selected {
background-color: @selected-col ;
text-color: @fg-col2 ;
}
mode-switcher {
spacing: 0;
}
button {
padding: 8px;
background-color: @bg-col-light;
text-color: @grey;
vertical-align: 0.5;
horizontal-align: 0.5;
}
button selected {
background-color: @bg-col;
text-color: @blue;
}

View File

@ -1,315 +0,0 @@
// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true"
keybinds {
normal {
// uncomment this and adjust key if using copy_on_select=false
// bind "Alt c" { Copy; }
}
locked {
bind "Ctrl g" { SwitchToMode "Normal"; }
}
resize {
bind "Ctrl n" { SwitchToMode "Normal"; }
bind "h" "Left" { Resize "Increase Left"; }
bind "j" "Down" { Resize "Increase Down"; }
bind "k" "Up" { Resize "Increase Up"; }
bind "l" "Right" { Resize "Increase Right"; }
bind "H" { Resize "Decrease Left"; }
bind "J" { Resize "Decrease Down"; }
bind "K" { Resize "Decrease Up"; }
bind "L" { Resize "Decrease Right"; }
bind "=" "+" { Resize "Increase"; }
bind "-" { Resize "Decrease"; }
}
pane {
bind "Ctrl p" { SwitchToMode "Normal"; }
bind "h" "Left" { MoveFocus "Left"; }
bind "l" "Right" { MoveFocus "Right"; }
bind "j" "Down" { MoveFocus "Down"; }
bind "k" "Up" { MoveFocus "Up"; }
bind "p" { SwitchFocus; }
bind "n" { NewPane; SwitchToMode "Normal"; }
bind "d" { NewPane "Down"; SwitchToMode "Normal"; }
bind "r" { NewPane "Right"; SwitchToMode "Normal"; }
bind "x" { CloseFocus; SwitchToMode "Normal"; }
bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
bind "z" { TogglePaneFrames; SwitchToMode "Normal"; }
bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; }
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;}
}
move {
bind "Ctrl h" { SwitchToMode "Normal"; }
bind "n" "Tab" { MovePane; }
bind "h" "Left" { MovePane "Left"; }
bind "j" "Down" { MovePane "Down"; }
bind "k" "Up" { MovePane "Up"; }
bind "l" "Right" { MovePane "Right"; }
}
tab {
bind "Ctrl t" { SwitchToMode "Normal"; }
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
bind "h" "Left" "Up" "k" { GoToPreviousTab; }
bind "l" "Right" "Down" "j" { GoToNextTab; }
bind "n" { NewTab; SwitchToMode "Normal"; }
bind "x" { CloseTab; SwitchToMode "Normal"; }
bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; }
bind "1" { GoToTab 1; SwitchToMode "Normal"; }
bind "2" { GoToTab 2; SwitchToMode "Normal"; }
bind "3" { GoToTab 3; SwitchToMode "Normal"; }
bind "4" { GoToTab 4; SwitchToMode "Normal"; }
bind "5" { GoToTab 5; SwitchToMode "Normal"; }
bind "6" { GoToTab 6; SwitchToMode "Normal"; }
bind "7" { GoToTab 7; SwitchToMode "Normal"; }
bind "8" { GoToTab 8; SwitchToMode "Normal"; }
bind "9" { GoToTab 9; SwitchToMode "Normal"; }
bind "Tab" { ToggleTab; }
}
scroll {
bind "Ctrl s" { SwitchToMode "Normal"; }
bind "e" { EditScrollback; SwitchToMode "Normal"; }
bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; }
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
bind "j" "Down" { ScrollDown; }
bind "k" "Up" { ScrollUp; }
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
bind "d" { HalfPageScrollDown; }
bind "u" { HalfPageScrollUp; }
// uncomment this and adjust key if using copy_on_select=false
// bind "Alt c" { Copy; }
}
search {
bind "Ctrl s" { SwitchToMode "Normal"; }
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
bind "j" "Down" { ScrollDown; }
bind "k" "Up" { ScrollUp; }
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
bind "d" { HalfPageScrollDown; }
bind "u" { HalfPageScrollUp; }
bind "n" { Search "down"; }
bind "p" { Search "up"; }
bind "c" { SearchToggleOption "CaseSensitivity"; }
bind "w" { SearchToggleOption "Wrap"; }
bind "o" { SearchToggleOption "WholeWord"; }
}
entersearch {
bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; }
bind "Enter" { SwitchToMode "Search"; }
}
renametab {
bind "Ctrl c" { SwitchToMode "Normal"; }
bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; }
}
renamepane {
bind "Ctrl c" { SwitchToMode "Normal"; }
bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; }
}
session {
bind "Ctrl o" { SwitchToMode "Normal"; }
bind "Ctrl s" { SwitchToMode "Scroll"; }
bind "d" { Detach; }
}
tmux {
bind "[" { SwitchToMode "Scroll"; }
bind "Ctrl b" { Write 2; SwitchToMode "Normal"; }
bind "\"" { NewPane "Down"; SwitchToMode "Normal"; }
bind "%" { NewPane "Right"; SwitchToMode "Normal"; }
bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
bind "c" { NewTab; SwitchToMode "Normal"; }
bind "," { SwitchToMode "RenameTab"; }
bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
bind "n" { GoToNextTab; SwitchToMode "Normal"; }
bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; }
bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; }
bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; }
bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; }
bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; }
bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; }
bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; }
bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; }
bind "o" { FocusNextPane; }
bind "d" { Detach; }
}
shared_except "locked" {
bind "Ctrl g" { SwitchToMode "Locked"; }
bind "Ctrl q" { Quit; }
bind "Alt n" { NewPane; }
bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; }
bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; }
bind "Alt j" "Alt Down" { MoveFocus "Down"; }
bind "Alt k" "Alt Up" { MoveFocus "Up"; }
bind "Alt =" "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
}
shared_except "normal" "locked" {
bind "Enter" "Esc" { SwitchToMode "Normal"; }
}
shared_except "pane" "locked" {
bind "Ctrl p" { SwitchToMode "Pane"; }
}
shared_except "resize" "locked" {
bind "Ctrl n" { SwitchToMode "Resize"; }
}
shared_except "scroll" "locked" {
bind "Ctrl s" { SwitchToMode "Scroll"; }
}
shared_except "session" "locked" {
bind "Ctrl o" { SwitchToMode "Session"; }
}
shared_except "tab" "locked" {
bind "Ctrl t" { SwitchToMode "Tab"; }
}
shared_except "move" "locked" {
bind "Ctrl h" { SwitchToMode "Move"; }
}
shared_except "tmux" "locked" {
bind "Ctrl b" { SwitchToMode "Tmux"; }
}
}
plugins {
tab-bar { path "tab-bar"; }
status-bar { path "status-bar"; }
strider { path "strider"; }
// compact-bar { path "compact-bar"; }
}
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
// eg. when terminal window with an active zellij session is closed
// Options:
// - detach (Default)
// - quit
//
// on_force_close "quit"
// Send a request for a simplified ui (without arrow fonts) to plugins
// Options:
// - true
// - false (Default)
//
// simplified_ui true
// Choose the path to the default shell that zellij will use for opening new panes
// Default: $SHELL
//
// default_shell "fish"
// Toggle between having pane frames around the panes
// Options:
// - true (default)
// - false
//
// pane_frames true
// Define color themes for Zellij
// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
// Once these themes are defined, one of them should to be selected in the "theme" section of this file
//
// themes {
// dracula {
// fg 248 248 242
// bg 40 42 54
// red 255 85 85
// green 80 250 123
// yellow 241 250 140
// blue 98 114 164
// magenta 255 121 198
// orange 255 184 108
// cyan 139 233 253
// black 0 0 0
// white 255 255 255
// }
// }
themes {
catppuccin-mocha {
bg "#585b70"
fg "#cdd6f4"
red "#f38ba8"
green "#a6e3a1"
blue "#89b4fa"
yellow "#f9e2af"
magenta "#f5c2e7"
orange "#fab387"
cyan "#89dceb"
black "#181825"
white "#cdd6f4"
}
}
// Choose the theme that is specified in the themes section.
// Default: default
//
theme "catppuccin-mocha"
// The name of the default layout to load on startup
// Default: "default"
//
default_layout "default"
// Choose the mode that zellij uses when starting up.
// Default: normal
//
// default_mode "locked"
// Toggle enabling the mouse mode.
// On certain configurations, or terminals this could
// potentially interfere with copying text.
// Options:
// - true (default)
// - false
//
// mouse_mode false
// Configure the scroll back buffer size
// This is the number of lines zellij stores for each pane in the scroll back
// buffer. Excess number of lines are discarded in a FIFO fashion.
// Valid values: positive integers
// Default value: 10000
//
// scroll_buffer_size 10000
// Provide a command to execute when copying text. The text will be piped to
// the stdin of the program to perform the copy. This can be used with
// terminal emulators which do not support the OSC 52 ANSI control sequence
// that will be used by default if this option is not set.
// Examples:
//
//copy_command "xclip -selection clipboard" // x11
copy_command "wl-copy" // wayland
// copy_command "pbcopy" // osx
// Choose the destination for copied text
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
// Does not apply when using copy_command.
// Options:
// - system (default)
// - primary
//
copy_clipboard "system"
// Enable or disable automatic copy (and clear) of selection when releasing mouse
// Default: true
//
copy_on_select true
// Path to the default editor to use to edit pane scrollbuffer
// Default: $EDITOR or $VISUAL
//
scrollback_editor "/bin/emacs -nw"
// When attaching to an existing session with other users,
// should the session be mirrored (true)
// or should each user have their own cursor (false)
// Default: false
//
// mirror_session true
// The folder in which Zellij will look for layouts
//
layout_dir "/home/jas/.config/zellij/layouts"
// The folder in which Zellij will look for themes
//
// theme_dir "/path/to/my/theme_dir"

View File

@ -1,12 +0,0 @@
layout {
default_tab_template {
pane size=1 borderless=true {
plugin location="zellij:tab-bar"
}
children
pane size=2 borderless=true {
plugin location="zellij:status-bar"
}
}
tab
}

View File

@ -1,26 +0,0 @@
#!/usr/bin/env zsh
# PATH variable declaration as array
# -U means unique, which tells the shell not to add anything to the array if it's
# already there.
typeset -U PATH path
# Set Go path if it exists
[ -d "${HOME}/go/bin" ] && path+=("${HOME}/go/bin")
# Set Cargo path for Rust binaries
[ -d "${HOME}/.cargo/bin" ] && path+=("${HOME}/.cargo/bin")
# Add ~/bin to PATH
[ -d "${HOME}/bin" ] && path+=("${HOME}/bin")
# Add ~/.local/bin to PATH
[ -d "${HOME}/.local/bin" ] && path+=("${HOME}/.local/bin")
# Add ~/.npm-global/bin to PATH
[ -d "${HOME}/.npm-global/bin" ] && path+=("${HOME}/.npm-global/bin")
export PATH
# Automatically remove duplicates from these arrays
typeset -gU path cdpath manpath fpath

View File

@ -1,23 +0,0 @@
#
# Generic .zshenv file for zsh
#
# .zshenv is sourced on ALL invocations of the shell, unless the -f option is
# set. It should NOT normally contain commands to set the command search path,
# or other common environment variables unless you really know what you're
# doing. E.g. running "PATH=/custom/path gdb program" sources this file (when
# gdb runs the program via $SHELL), so you want to be sure not to override a
# custom environment in such cases. Note also that .zshenv should not contain
# commands that produce output or assume the shell is attached to a tty.
#
# Some people insist on setting their PATH here to affect things like ssh.
# Those that do should probably use $SHLVL to ensure that this only happens
# the first time the shell is started (to avoid overriding a customized
# environment). Also, the various profile/rc/login files all get sourced
# *after* this file, so they will override this value. One solution is to
# put your path-setting code into a file named .zpath, and source it from
# both here (if we're not a login shell) and from the .zprofile file (which
# is only sourced if we are a login shell).
if [[ $SHLVL == 1 ]]; then
source ~/.zpath
fi

View File

@ -1,150 +0,0 @@
# Filename : ~/.zshrc
# Purpose : setup file for zsh
# Author : Jeffrey Serio <hyperreal@fedoraproject.org>
# Homepage : https://hyperreal.coffee
#
# Zsh Manual - https://zsh-manual.netlify.app
# Zsh Guide - https://zsh-guide.netlify.app
#
# ,----[ man -k zsh ]
# |
# | zsh (1) - the Z shell
# | zshall (1) - the Z shell meta-man page
# | zshbuiltins (1) - zsh builtin commands
# | zshcalsys (1) - zsh calendar system
# | zshcompctl (1) - zsh programmable completion
# | zshcompsys (1) - zsh completion system
# | zshcompwid (1) - zsh completion widgets
# | zshcontrib (1) - user contributions to zsh
# | zshexpn (1) - zsh expansion and substitution
# | zshmisc (1) - everything and then some
# | zshmodules (1) - zsh loadable modules
# | zshoptions (1) - zsh options
# | zshparam (1) - zsh parameters
# | zshroadmap (1) - informal introduction to the zsh manual
# | zshtcpsys (1) - zsh tcp system
# | zshzftpsys (1) - zftp function front-end
# | zshzle (1) - zsh command line editor
# `----
#
# Zsh startup sequence
# 1) /etc/zshenv -> Always run for every zsh. (login + interactive + other)
# 2) ~/.zshenv -> Usually run for every zsh. (login + interactive + other)
# 3) /etc/zprofile -> Run for login shells. (login)
# 4) ~/.zprofile -> Run for login shells. (login)
# 5) /etc/zshrc -> Run for interactive shells. (login + interactive)
# 6) ~/.zshrc -> Run for interactive shells. (login + interactive)
# 7) /etc/zlogin -> Run for login shells. (login)
# 8) ~/.zlogin -> Run for login shells. (login)
#
# This file is based on Christian Schneider's zsh configuration
# https://www.strcat.de/dotfiles
# Load Homebrew
if test -d "/home/linuxbrew"; then
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
fi
# Plugins
if ! test -f ~/.zplug/init.zsh; then
export ZPLUG_HOME=~/.zplug
git clone https://github.com/zplug/zplug $ZPLUG_HOME
fi
source ~/.zplug/init.zsh
# Use autosuggestions when typing commands
zplug "zsh-users/zsh-autosuggestions"
# Use a keybinding to complete parts of command from the history file
zplug "zsh-users/zsh-history-substring-search"
# Use syntax highlighting when typing commands
zplug "zsh-users/zsh-syntax-highlighting", defer:2
# Press escape twice to prepend `sudo` to the command line
zplug "plugins/sudo", from:oh-my-zsh
# extract archives
zplug "plugins/extract", from:oh-my-zsh
# systemd aliases
zplug "plugins/systemd", from:oh-my-zsh
# bookmarks
zplug "zpm-zsh/zshmarks"
# Load file from ~/.zshrc.d
zplug "~/.zshrc.d", from:local, use:'*'
if ! zplug check; then
zplug install;
exec $SHELL $SHELL_ARGS "$@"
fi
zplug load
# -----------------------------------------------------------------------------
# ENVIRONMENT VARS
# -----------------------------------------------------------------------------
export LS_COLORS=$(vivid generate catppuccin-mocha)
export PAGER="less -X"
export MANWIDTH="88"
export MANROFFOPT="-c"
export MANPAGER="less -X"
if test -x "$(command -v emacs)"; then
EDITOR="emacs"
else
EDITOR="nvim"
fi
export EDITOR
# Have less display colours
# from: https://wiki.archlinux.org/index.php/Color_output_in_console#man
export LESS_TERMCAP_mb=$'\e[1;31m' # begin bold
export LESS_TERMCAP_md=$'\e[1;34m' # begin blink
export LESS_TERMCAP_so=$'\e[01;0;33m' # begin reverse video
export LESS_TERMCAP_us=$'\e[01;31m' # begin underline
export LESS_TERMCAP_me=$'\e[0m' # reset bold/blink
export LESS_TERMCAP_se=$'\e[0m' # reset reverse video
export LESS_TERMCAP_ue=$'\e[0m' # reset underline
export GROFF_NO_SGR=1 # for konsole and gnome-terminal
# HISTSIZE is the number of lines of history that is kept within any given
# running zsh instance. SAVEHIST is the number of lines of history that is
# written out to the HISTFILE when that event occurs. If you use the
# HIST_EXPIRE_DUPS_FIRST option, setting this value larger than the SAVEHIST
# size will give you the difference as a cushion for saving duplicated history
# events.
HISTSIZE=100000
SAVEHIST=65536
# Name of the file used to store command history
HISTFILE=~/.zsh_history
# Language
export LANG="en_US.UTF-8"
# Manpages
export MANPATH="${MANPATH:-/usr/share/man:/usr/local/share/man}"
if [ -d "${HOME}/.fzf/man" ]; then
export MANPATH="${MANPATH}:${HOME}/.fzf/man"
fi
# Bat theme
export BAT_THEME="Catppuccin Mocha"
# Automatically remove duplicates from these arrays
typeset -gU path cdpath manpath fpath
# compatibility with vterm-buffer-name-string in Emacs
autoload -U add-zsh-hook
add-zsh-hook -Uz chpwd() { print -Pn "\e]2;%m:%2~\a" }
# starship.rs
eval "$(starship init zsh)"
# direnv
eval "$(direnv hook zsh)"

View File

@ -1,141 +0,0 @@
# Get top 10 shell commands
alias top10='print -l ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
# history mechanism
alias h='history'
# Aliases for APT
if [ -e "/etc/debian_version" ]; then
alias acs="sudo apt-cache search"
alias acp="sudo apt-cache policy"
alias afs="sudo apt-file search"
alias afu="sudo apt-file update"
alias aac="sudo apt autoclean"
alias agc="sudo apt clean"
alias agi="sudo apt install"
alias agli="sudo apt list --installed"
alias agp="sudo apt purge"
alias agr="sudo apt remove"
alias agu="sudo apt update"
alias agud="sudo apt update && sudo apt dist-upgrade"
alias agar="sudo apt autoremove"
fi
if [ -e "/etc/redhat-release" ]; then
alias dnfc='sudo dnf clean all'
alias dnfgi='sudo dnf groupinstall'
alias dnfgl='dnf grouplist'
alias dnfgr='sudo dnf groupremove'
alias dnfi='sudo dnf install'
alias dnfl='dnf list'
alias dnfli='dnf list installed'
alias dnfmc='dnf makecache'
alias dnfp='dnf info'
alias dnfr='sudo dnf remove'
alias dnfs='dnf search'
alias dnfu='sudo dnf update'
fi
# The ls family
if test -x "$(command -v lsd)"; then
alias ls='lsd'
else
alias ls='ls --color=auto'
fi
alias l='ls -lFhg'
alias la='ls -a'
alias ll='ls -l'
alias lal='ls -al'
alias ldot='ls -gld .*'
alias lse='ls -lZ'
# greps
alias grep='grep --color'
alias sgrep='grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS}'
# Copy SSH public key to clipboard (requires wl-clipboard)
if test -x "$(command -v wl-copy)"; then
alias pubkey='printf "$(cat ~/.ssh/id_ed25519.pub)" | wl-copy | echo "SSH public key copied"'
fi
# Prompt user before overwriting files
alias cp='cp -i'
alias mv='mv -i'
alias rm='trash'
alias del='/bin/rm -i'
# Display zsh functions with bat
alias zfun='functions | bat -l zsh'
# Assorted global aliases
alias -g H='| head'
alias -g T='| tail'
alias -g G='| grep'
alias -g L='| less -X'
alias -g B='| bat'
alias -g J='| jq'
alias -g CC='| wl-copy'
alias -g C='| wc -l'
# Get public IP address
alias pubip4='curl -s -m 5 ipv4.icanhazip.com'
alias pubip6='curl -s -m 5 ipv6.icanhazip.com'
# List apps with network connections
alias netcons='lsof -i'
# List ports
alias tulp='ss -tulp'
# List open ports
alias openports='sudo lsof -i | grep LISTEN'
# Ping google.com
alias pong='ping -c 3 www.google.com'
# Ping alias
alias ping='ping -c 3'
# List sockets in use
alias lsock='sudo lsof -i -P'
# List UDP sockets in use
alias lsocku='sudo lsof -nP | grep UDP'
# List TCP sockets in use
alias lsockt='sudo lsof -nP | grep TCP'
# Reboot / Poweroff
alias rbt='sudo systemctl reboot'
alias shut='sudo systemctl poweroff'
# firewalld
if test -x "$(command -v firewall-cmd)"; then
alias fw='sudo firewall-cmd'
alias fwp='sudo firewall-cmd --permanent'
alias fwr='sudo firewall-cmd --reload'
alias fwrp='sudo firewall-cmd --runtime-to-permanent'
fi
# git
alias ga='git add'
alias gcl='git clone'
alias gcmsg='git commit -m'
alias gd='git diff'
alias gl='git pull'
alias gp='git push'
alias gr='git remote'
alias grbi='git rebase -i'
alias grm='git rm'
alias grv='git remote -v'
alias gst='git status'
# doom emacs
alias doomdoc="~/.config/emacs/bin/doom doctor"
alias dsync="~/.config/emacs/bin/doom sync"
alias dclean="~/.config/emacs/bin/doom clean"
alias dcomp="~/.config/emacs/bin/doom compile"
alias dgc="~/.config/emacs/bin/doom gc"
alias denv="~/.config/emacs/bin/doom env"
alias dupgrade="~/.config/emacs/bin/doom upgrade"

View File

@ -1,37 +0,0 @@
typeset -g -A key
key[Home]="${terminfo[khome]}"
key[End]="${terminfo[kend]}"
[[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line
[[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
autoload -Uz add-zle-hook-widget
function zle_application_mode_start { echoti smkx }
function zle_application_mode_stop { echoti rmkx }
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop
fi
## keybinding for convenient viewing of man pages
if test -x "${HOME}/bin/split-man"; then
split-man-widget() { "${HOME}/bin/split-man"}
zle -N split-man-widget
bindkey '^[m' split-man-widget
fi
## gumssh
if test -x "$(command -v gumssh)"; then
bindkey -s '^[s' 'gumssh^M'
fi
## ranger
if test -x "$(command -v ranger)"; then
bindkey -s '^[f' 'ranger^M'
fi
## history substring search
bindkey '^[[1;5A' history-substring-search-up
bindkey '^[[1;5B' history-substring-search-down

View File

@ -1,12 +0,0 @@
# ~/.zshrc.d/fzf.zsh
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
## default opts uses Catppuccin (mocha) color palette
export FZF_DEFAULT_OPTS='--color=bg+:#302D41,bg:#1E1E2E,spinner:#F8BD96,hl:#F28FAD --color=fg:#D9E0EE,header:#F28FAD,info:#DDB6F2,pointer:#F8BD96 --color=marker:#F8BD96,fg+:#F2CDCD,prompt:#DDB6F2,hl+:#F28FAD'
## completion trigger
export FZF_COMPLETION_TRIGGER="~~"
## default source for fzf
export FZF_DEFAULT_COMMAND="fd --type f --hidden --follow --exclude .git"

View File

@ -1,151 +0,0 @@
## General shell options
# See https://zsh-manual.netlify.app/options
# This is a multiple move based on zsh pattern matching (like "mmv").
# Read ``less ${^fpath}/zmv(N)'' for more details.
autoload zmv
# A builtin that can clone a running shell onto another terminal.
zmodload -e zsh/clone
# When listing options (by 'setopt', 'unsetopt', 'set -o', or 'set +o'),
# those turned on by default appear in the list prefixed with 'no'.
# Hence (unless KSH_OPTION_PRINT is set), 'setopt' shows all options whose
# settings are changed from default.
#
# Report the status of background jobs immediately, rather than waiting until
# just before printing a prompt.
setopt notify
# Allow comments even in interactive shells.
setopt interactivecomments
# Send *not* a HUP signal to running jobs when the shell exits.
setopt nohup
# If a pattern for filename generation has no matches, delete the pattern from
# the argument list instead of reporting an error.
# Overrides NOMATCH
setopt nullglob
# Perform =filename access
# $ setopt EQUALS
# $ echo =ls
# /bin/ls
# $ unsetopt EQUALS
# $ echo =ls
# =ls
# NOTE: It's not really needed because zsh sets the per default.
setopt equals
# Try to make completion list smaller by printing the matches in columns with
# different widths.
setopt list_packed
# Expands single letters and ranges of letters between braces
# $ print 1{abw-z}2
# $ 1a2 1b2 1w2 1y2 1z2
setopt braceccl
# If the argument to a cd command (or an implied cd with the AUTO_CD option
# set) is not a directory, and does not begin with a slash, try to expand the
# expression as if it were preceded by a '~' (See section 14.7 Filename
# Expansion).
setopt cdablevars
# Report the status of background and suspended jobs before exiting a shell
# with job control; a second attempt to exit the shell will succeed.
setopt checkjobs
# Make cd push the old directory onto the directory stack.
setopt autopushd
# Change to directory without cd
setopt autocd
# Query the user before executing 'rm *' or 'rm path/*'
setopt normstarsilent
setopt no_rm_star_wait
# Shaddapa you face
setopt nobeep
# When writing out the history file, older commands that duplicate newer ones
# are omitted.
set histsavenodups
# When searching for history entries in the line editor, do not display
# duplicates of a line previously found, even if the duplicates are not
# contiguous.
setopt histfindnodups
# If the internal history needs to be trimmed to add the current command line,
# setting this option will cause the oldest history event that has a duplicate
# to be lost before losing a unique event from the list.
setopt hist_expire_dups_first
# If a new command line being added to the history list duplicates an older
# one, the older command is removed from the list (even if it is not the
# previous event).
setopt hist_ignore_all_dups
# Do not enter command lines into the history list if they are duplicates of
# the previous event.
setopt hist_ignore_dups
# Remove superfluous blanks from each command line being added to history.
setopt hist_reduce_blanks
# Whenever the user enters a line with history expansion, don't execute the
# line directly; instead, perform history expansion and reload the line into
# the editing buffer.
setopt hist_verify
# Do not remove function definitions from the history list.
unsetopt hist_no_functions
# Remove the history (fc -l) command from the history list when invoked.
# Note that the command lingers in the internal history until the next command
# is entered before it vanishes, allowing you to briefly reuse or edit the
# line.
setopt hist_no_store
# If this is set, zsh sessions will append their history list to the history
# file, rather than overwrite it. Thus, multiple parallel zsh sessions will all
# have their history lists added to the history file, in the order they are
# killed.
setopt appendhistory
# If unset, the cursor is set to the end of the word if completion is started.
# Otherwise, it stays there and completion is done from both ends.
unsetopt completeinword
# When listing files that are possible completions, show the type of each file
# with a trailing identifying mark.
setopt listtypes
# Do not require a leading '.' in a filename to be matched explicitly.
setopt globdots
# List jobs in long format by default
setopt longlistjobs
# Don't push multiple copies of the same directory onto the directory staack.
setopt pushdignoredups
# This option both imports new commands from the history file, and also causes
# your typed commands to be appended to the history file (the latter is like
# specifying INC_APPEND_HISTORY).
# The history lines are also output with timestamps ala EXTENDED_HISTORY
# (which makes it easier to find the spot where we left off reading the file
# after it gets re-written).
setopt sharehistory
# Save each command's beginning timestamp (in seconds since the epoch)
# and the duration (in seconds) to the history file. The format of this
# prefixed data is:
# ':<beginning time>:<elapsed seconds>;<command>'
setopt extendedhistory
# Do *not* run all background jobs at a lower nice priority
unsetopt bgnice

264
home.nix
View File

@ -1,4 +1,4 @@
{ config, pkgs, ... }: { config, lib, pkgs, ... }:
{ {
nixpkgs.config = { nixpkgs.config = {
@ -10,6 +10,11 @@
# manage. # manage.
home.username = "jas"; home.username = "jas";
home.homeDirectory = "/home/jas"; home.homeDirectory = "/home/jas";
home.sessionPath = [
"\${config.home.homeDirectory}/bin"
"\${config.home.homeDirectory}/.local/bin"
"\${config.home.homeDirectory}/go/bin"
];
home.stateVersion = "24.05"; # Please read the comment before changing. home.stateVersion = "24.05"; # Please read the comment before changing.
@ -17,16 +22,25 @@
# environment. # environment.
home.packages = with pkgs; [ home.packages = with pkgs; [
arp-scan arp-scan
curlie
direnv
diskonaut diskonaut
doggo doggo
duf
dust dust
eza
fd
glow glow
gum gum
httpie
hyfetch hyfetch
hyperfine hyperfine
jq
just just
nixfmt-rfc-style nixfmt-rfc-style
ripgrep
starship starship
tealdeer
vivid vivid
wthrr wthrr
yazi yazi
@ -40,18 +54,240 @@
# # the Nix store. Activating the configuration will then make '~/.screenrc' a # # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy. # # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc; # ".screenrc".source = dotfiles/screenrc;
".justfile".source = dotfiles/just/.justfile; ".justfile".source = confs/justfile;
".zshrc".source = dotfiles/zsh/.zshrc; ".zshrc.d".source = confs/zshrc.d;
".zshrc.d".source = dotfiles/zsh/.zshrc.d; ".doom.d/config.el".source = doom.d/config.el;
".zpath".source = dotfiles/zsh/.zpath; ".doom.d/init.el".source = doom.d/init.el;
".zshenv".source = dotfiles/zsh/.zshenv; ".doom.d/packages.el".source = doom.d/packages.el;
".config/zellij".source = dotfiles/config/.config/zellij; };
".config/starship.toml".source = dotfiles/config/.config/starship.toml;
## PROGRAMS
# bat config
home.activation.buildBatCache = "${lib.getExe pkgs.bat} cache --build";
programs.bat = {
enable = true;
config.theme = "Catppuccin-mocha";
themes = {
Catppuccin-mocha = {
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "bat";
rev = "d3feec47b16a8e99eabb34cdfbaa115541d374fc";
sha256 = "sha256-s0CHTihXlBMCKmbBBb8dUhfgOOQu9PBCQ+uviy7o47w=";
};
file = "/themes/Catppuccin Mocha.tmTheme";
};
};
};
# starship.rs
programs.starship = {
enable = true;
settings = lib.importTOML confs/starship.toml;
};
# zsh config
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
autocd = false;
history = {
extended = true;
ignoreAllDups = false;
ignoreDups = true;
path = "${config.home.homeDirectory}/.zsh_history";
save = 65536;
share = false;
size = 100000;
};
historySubstringSearch.enable = true;
zplug.enable = true;
zplug.plugins = [
{
name = "zsh-users/zsh-syntax-highlighting";
tags = [ "defer:2" ];
}
{
name = "plugins/sudo";
tags = [ "from:oh-my-zsh" ];
}
{
name = "plugins/extract";
tags = [ "from:oh-my-zsh" ];
}
{
name = "plugins/systemd";
tags = [ "from:oh-my-zsh" ];
}
{
name = "${config.home.homeDirectory}/.zshrc.d";
tags = [ "from:local" "use:'*'" ];
}
];
shellAliases = {
acs = "sudo apt-cache search $@";
acp = "sudo apt-cache policy $@";
afs = "sudo apt-file search $@";
afu = "sudo apt-file update";
agi = "sudo apt install $@";
agp = "sudo apt purge $@";
agr = "sudo apt remove $@";
agu = "sudo apt update";
agud = "sudo apt update && sudo apt dist-upgrade";
agar = "sudo apt autoremove";
ls = "eza --git --icons $@";
la = "eza --git --icons -a $@";
lal = "eza --git --icons -al $@";
ll = "eza --git --icons -l $@";
grep = "rg $@";
df = "duf $@";
cp = "cp -i $@";
rm = "trash $@";
del = "/bin/rm -i $@";
mv = "mv -i $@";
zfun = "functions | bat -l zsh";
pubip4 = "curl -s -m 5 ipv4.icanhazip.com";
pubip6 = "curl -s -m 5 ipv6.icanhazip.com";
netcons = "lsof -i";
tulp = "ss -tulp";
openports = "sudo lsof -i | grep LISTEN";
pong = "ping -c 3 www.google.com";
lsock = "sudo lsof -i -P";
lsocku = "sudo lsof -nP | grep UDP";
lsockt = "sudo lsof -nP | grep TCP";
fw = "sudo firewall-cmd $@";
fwr = "sudo firewall-cmd --reload";
fwp = "sudo firewall-cmd --permanent $@";
ga = "git add $@";
gcl = "git clone $@";
gcmsg = "git commit -m $@";
gd = "git diff";
gp = "git push $@";
grm = "git rm $@";
grv = "git remote -v";
gst = "git status";
doomdoc = "\${xdg.configHome}/emacs/bin/doom doctor";
dsync = "\${xdg.configHome}/emacs/bin/doom sync";
dclean = "\${xdg.configHome}/emacs/bin/doom clean";
dgc = "\${xdg.configHome}/emacs/bin/doom gc";
dupgrade = "\${xdg.configHome}/emacs/bin/doom upgrade";
pubkey = "cat ${config.home.homeDirectory}/.ssh/id_ed25519.pub | tr -d '\n' | wl-copy";
};
shellGlobalAliases = {
G = "| grep";
J = "| jq";
CC = "| wl-copy";
H = "| head";
T = "| tail";
L = "| less -RFX";
C = "| wc -l";
B = "| bat";
};
sessionVariables = {
LS_COLORS = "$(vivid generate catppuccin-mocha)";
PAGER = "less -RFX";
MANWIDTH = "88";
MANROFFOPT = "-c";
MANPAGER = "less -RFX";
EDITOR = "emacsclient";
LESS_TERMCAP_mb = "$'\e[1;31m'";
LESS_TERMCAP_md = "$'\e[1;34m'";
LESS_TERMCAP_so = "$'\e[01;0;33m'";
LESS_TERMCAP_us = "$'\e[01;31m'";
LESS_TERMCAP_me = "$'\e[0m'";
LESS_TERMCAP_se = "$'\e[0m'";
LESS_TERMCAP_ue = "$'\e[0m'";
GROFF_NO_SGR = 1;
BAT_PAGER = "less -RFX";
BAT_STYLE = "plain";
};
initExtraFirst = ''
if test -x ${config.home.homeDirectory}/bin/gumssh; then bindkey -s '^[s' 'gumssh^M'; fi
bindkey -s '^[f' 'yazi^M'
'';
initExtra = ''
eval "$(direnv hook zsh)"
eval "$(starship init zsh)"
'';
};
# neovim
programs.neovim = {
enable = true;
plugins = with pkgs.vimPlugins; [
vim-startify
vim-lastplace
nerdcommenter
catppuccin-nvim
];
extraConfig = ''
set nocompatible
set showmatch
set ignorecase
set mouse=v
set hlsearch
set incsearch
set tabstop=4
set softtabstop=4
set expandtab
set shiftwidth=4
set autoindent
set relativenumber
set wildmode=longest,list
set cc=80
filetype plugin indent on
syntax on
set clipboard=unnamedplus
filetype plugin on
set cursorline
set ttyfast
colorscheme catppuccin
'';
};
# zellij config
programs.zellij.enable = true;
programs.zellij.settings = {
theme = "catppuccin-mocha";
themes = {
catppuccin-mocha = {
bg = "#585b70";
fg = "#cdd6f4";
red = "#f38ba8";
green = "#a6e3a1";
blue = "#89b4fa";
yellow = "#f9e2af";
magenta = "#f5c2e7";
orange = "#fab387";
cyan = "#89dceb";
black = "#181825";
white = "#cdd6f4";
};
};
copy_command = "wl-copy";
copy_clipboard = "system";
copy_on_select = true;
}; };
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.
programs.home-manager.enable = true; programs.home-manager.enable = true;
# XDG user dirs
xdg.userDirs = {
enable = true;
createDirectories = true;
download = "${config.home.homeDirectory}/downloads";
desktop = "${config.home.homeDirectory}/desktop";
documents = "${config.home.homeDirectory}/shared/documents";
publicShare = "${config.home.homeDirectory}/shared";
templates = null;
music = null;
pictures = "${config.home.homeDirectory}/shared/pictures";
videos = null;
};
# git config # git config
programs.git = { programs.git = {
enable = true; enable = true;
@ -92,20 +328,12 @@
hostname = "bttracker.nirn.quest"; hostname = "bttracker.nirn.quest";
user = "jas"; user = "jas";
}; };
"desktop" = {
hostname = "desktop.lyrebird-marlin.ts.net";
user = "jas";
};
"hyperreal.coffee" = { "hyperreal.coffee" = {
hostname = "hyperreal.coffee"; hostname = "hyperreal.coffee";
user = "jas"; user = "jas";
}; };
"laptop" = { "nas" = {
hostname = "laptop.lyrebird-marlin.ts.net"; hostname = "nas.lyrebird-marlin.ts.net";
user = "jas";
};
"nas-pi" = {
hostname = "nas-pi.lyrebird-marlin.ts.net";
user = "jas"; user = "jas";
}; };
}; };