stable gen
This commit is contained in:
commit
7c22850442
15
bin/books
Executable file
15
bin/books
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
BOOKS="/ar1/Books"
|
||||||
|
|
||||||
|
file_name="$(find "$BOOKS" -type f -printf "%f\n" | sed 's/\.[^.]*$//' | rofi -dmenu -i -p "Books:" -theme ~/.config/rofi/menu.rasi)"
|
||||||
|
|
||||||
|
if [ ! -z "$file_name" ]; then
|
||||||
|
file_path="$(find "$BOOKS" -type f -name "$file_name.*")"
|
||||||
|
extension="${file_path#*.}"
|
||||||
|
if [ "$extension" == "epub" ]; then
|
||||||
|
ebook-viewer --detach "$file_path" >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
xdg-open "$file_path" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
fi
|
BIN
bin/boomer
Executable file
BIN
bin/boomer
Executable file
Binary file not shown.
3
bin/clipboard
Executable file
3
bin/clipboard
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
rofi -modi "Clipboard:greenclip print" -show Clipboard -run-command '{cmd}' -theme ~/.config/rofi/menu.rasi
|
24
bin/define
Executable file
24
bin/define
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
word="$(rofi -dmenu -i -p "Define:" -theme ~/.config/rofi/menu-no-list.rasi)"
|
||||||
|
TERMINAL="ghostty"
|
||||||
|
|
||||||
|
|
||||||
|
if [[ -n $word ]]; then
|
||||||
|
case "$TERMINAL" in
|
||||||
|
"kitty"|"ghostty")
|
||||||
|
$TERMINAL --title="Dictionary" -e ~/.local/bin/show_def "$word"
|
||||||
|
;;
|
||||||
|
"wezterm")
|
||||||
|
$TERMINAL start --new-tab -e ~/.local/bin/show_def "$word"
|
||||||
|
;;
|
||||||
|
"alacritty")
|
||||||
|
$TERMINAL --class "Dictionary" --hold \
|
||||||
|
-e /bin/zsh -c "$HOME/.local/bin/show_def '$word'"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
15
bin/keyboard-toggle
Executable file
15
bin/keyboard-toggle
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
DEVICE_NAME="AT Translated Set 2 keyboard"
|
||||||
|
ID=$(xinput list --id-only "$DEVICE_NAME")
|
||||||
|
is_enabled=$(xinput --list-props "$ID" | awk -F'[\t:]+' '/Device Enabled/ {print $3}')
|
||||||
|
|
||||||
|
if [[ $is_enabled == 0 ]]; then
|
||||||
|
xinput enable $ID
|
||||||
|
status="Enabled"
|
||||||
|
else
|
||||||
|
xinput disable $ID
|
||||||
|
status="Disabled"
|
||||||
|
fi
|
||||||
|
|
||||||
|
notify-send "Internal Keyboard" "$status" -i "keyboard"
|
10
bin/show_colors
Executable file
10
bin/show_colors
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
for b in $(seq 0 7) 9; do
|
||||||
|
echo
|
||||||
|
for f in $(seq 0 7) 9; do
|
||||||
|
printf " \033[0;1;3${f};4${b}m 3${f}\033[0;3${f};4${b}m 4${b} \033[0m "
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
echo
|
9
bin/show_def
Executable file
9
bin/show_def
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
function def() {
|
||||||
|
sdcv -n --utf8-output --color "$@" 2>&1 | \
|
||||||
|
fold --width=$(tput cols) | \
|
||||||
|
less --quit-if-one-screen -RX
|
||||||
|
}
|
||||||
|
|
||||||
|
def $1
|
40
bin/stm
Executable file
40
bin/stm
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
session_name="$1"
|
||||||
|
tmux has-session -t $session_name &> /dev/null
|
||||||
|
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
case "$session_name" in
|
||||||
|
|
||||||
|
webdev)
|
||||||
|
explorer="$COURSES/Angela Yu - The Complete 2022 Web Development Bootcamp"
|
||||||
|
webdev_dir="$DEVDIR/web/webproj"
|
||||||
|
|
||||||
|
tmux new-session -s "webdev" -d -n "Explorer" -c "$explorer" "nnn"
|
||||||
|
tmux new-window -t "webdev" -d -n "Editor" -c "$webdev_dir" "$EDITOR"
|
||||||
|
tmux new-window -t "webdev" -d -n "Terminal" -c "$webdev_dir"
|
||||||
|
tmux split-window -h -t "webdev:Terminal" -c "$webdev_dir"
|
||||||
|
;;
|
||||||
|
|
||||||
|
media)
|
||||||
|
kvardir="/ar1/Kvar/Running Man"
|
||||||
|
moviesdir="/ar1/Movies"
|
||||||
|
tvseriesdir="/ar1/TV Series"
|
||||||
|
|
||||||
|
tmux new-session -s "media" -d -n "Running Man" -c "$kvardir" "nnn"
|
||||||
|
tmux new-window -t "media" -d -n "Movies" -c "$moviesdir" "nnn"
|
||||||
|
tmux new-window -t "media" -d -n "TV Series" -c "$tvseriesdir" "nnn"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
tmux new-session -s "$session_name"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $session_name ]]; then
|
||||||
|
session_name="main"
|
||||||
|
tmux new-session -s "$session_name"
|
||||||
|
fi
|
||||||
|
|
||||||
|
tmux attach -t "$session_name"
|
48
bin/tmux-sessionizer
Executable file
48
bin/tmux-sessionizer
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
switch_to() {
|
||||||
|
if [[ -z $TMUX ]]; then
|
||||||
|
tmux attach-session -t $1
|
||||||
|
else
|
||||||
|
tmux switch-client -t $1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
has_session() {
|
||||||
|
tmux list-sessions | grep -q "^$1:"
|
||||||
|
}
|
||||||
|
|
||||||
|
hydrate() {
|
||||||
|
if [ -f $2/.tmux-sessionizer ]; then
|
||||||
|
tmux send-keys -t $1 "source $2/.tmux-sessionizer" c-M
|
||||||
|
elif [ -f $HOME/.tmux-sessionizer ]; then
|
||||||
|
tmux send-keys -t $1 "source $HOME/.tmux-sessionizer" c-M
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ $# -eq 1 ]]; then
|
||||||
|
selected=$1
|
||||||
|
else
|
||||||
|
# If someone wants to make this extensible, i'll accept
|
||||||
|
# PR
|
||||||
|
selected=$(find ~/dev ~/dev/probe ~/dev/gitlab ~/Documents -mindepth 1 -maxdepth 1 -type d | fzf)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $selected ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
selected_name=$(basename "$selected" | tr . _)
|
||||||
|
tmux_running=$(pgrep tmux)
|
||||||
|
|
||||||
|
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
|
||||||
|
tmux new-session -s $selected_name -c $selected
|
||||||
|
hydrate $selected_name $selected
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! has_session $selected_name; then
|
||||||
|
tmux new-session -ds $selected_name -c $selected
|
||||||
|
hydrate $selected_name $selected
|
||||||
|
fi
|
||||||
|
|
||||||
|
switch_to $selected_name
|
14
bin/touchpad-toggle-xinput
Executable file
14
bin/touchpad-toggle-xinput
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
TPAD_ID=$(xinput | awk '/Touchpad/ {print $6}' | awk -F = '{print $2}')
|
||||||
|
is_enabled=$(xinput list-props $TPAD_ID | awk '/Device Enabled/ {print $4}')
|
||||||
|
|
||||||
|
if [[ $is_enabled == 0 ]]; then
|
||||||
|
xinput enable "$TPAD_ID"
|
||||||
|
status="Enabled"
|
||||||
|
else
|
||||||
|
xinput disable "$TPAD_ID"
|
||||||
|
status="Disabled"
|
||||||
|
fi
|
||||||
|
|
||||||
|
notify-send "Touchpad" "$status" -i "touchpad"
|
76
config/dracula.toml
Normal file
76
config/dracula.toml
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# Dracula theme for Alacritty
|
||||||
|
# https://draculatheme.com/alacritty
|
||||||
|
#
|
||||||
|
# Color palette
|
||||||
|
# https://spec.draculatheme.com
|
||||||
|
#
|
||||||
|
# Instructions
|
||||||
|
# https://github.com/alacritty/alacritty/blob/master/extra/man/alacritty.5.scd
|
||||||
|
|
||||||
|
[colors.primary]
|
||||||
|
|
||||||
|
background = "#282a36"
|
||||||
|
foreground = "#f8f8f2"
|
||||||
|
bright_foreground = "#ffffff"
|
||||||
|
|
||||||
|
[colors.cursor]
|
||||||
|
|
||||||
|
text = "#282a36"
|
||||||
|
cursor = "#f8f8f2"
|
||||||
|
|
||||||
|
[colors.vi_mode_cursor]
|
||||||
|
|
||||||
|
text = "CellBackground"
|
||||||
|
cursor = "CellForeground"
|
||||||
|
|
||||||
|
[colors.selection]
|
||||||
|
|
||||||
|
text = "CellForeground"
|
||||||
|
background = "#44475a"
|
||||||
|
|
||||||
|
[colors.normal]
|
||||||
|
|
||||||
|
black = "#21222c"
|
||||||
|
red = "#ff5555"
|
||||||
|
green = "#50fa7b"
|
||||||
|
yellow = "#f1fa8c"
|
||||||
|
blue = "#bd93f9"
|
||||||
|
magenta = "#ff79c6"
|
||||||
|
cyan = "#8be9fd"
|
||||||
|
white = "#f8f8f2"
|
||||||
|
|
||||||
|
[colors.bright]
|
||||||
|
|
||||||
|
black = "#6272a4"
|
||||||
|
red = "#ff6e6e"
|
||||||
|
green = "#69ff94"
|
||||||
|
yellow = "#ffffa5"
|
||||||
|
blue = "#d6acff"
|
||||||
|
magenta = "#ff92df"
|
||||||
|
cyan = "#a4ffff"
|
||||||
|
white = "#ffffff"
|
||||||
|
|
||||||
|
[colors.search.matches]
|
||||||
|
|
||||||
|
foreground = "#44475a"
|
||||||
|
background = "#50fa7b"
|
||||||
|
|
||||||
|
[colors.search.focused_match]
|
||||||
|
|
||||||
|
foreground = "#44475a"
|
||||||
|
background = "#ffb86c"
|
||||||
|
|
||||||
|
[colors.footer_bar]
|
||||||
|
|
||||||
|
background = "#282a36"
|
||||||
|
foreground = "#f8f8f2"
|
||||||
|
|
||||||
|
[colors.hints.start]
|
||||||
|
|
||||||
|
foreground = "#282a36"
|
||||||
|
background = "#f1fa8c"
|
||||||
|
|
||||||
|
[colors.hints.end]
|
||||||
|
|
||||||
|
foreground = "#f1fa8c"
|
||||||
|
background = "#282a36"
|
22
config/ghostty-dracula
Normal file
22
config/ghostty-dracula
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
palette = 0=#21222c
|
||||||
|
palette = 1=#ff5555
|
||||||
|
palette = 2=#50fa7b
|
||||||
|
palette = 3=#f1fa8c
|
||||||
|
palette = 4=#bd93f9
|
||||||
|
palette = 5=#ff79c6
|
||||||
|
palette = 6=#8be9fd
|
||||||
|
palette = 7=#f8f8f2
|
||||||
|
palette = 8=#6272a4
|
||||||
|
palette = 9=#ff6e6e
|
||||||
|
palette = 10=#69ff94
|
||||||
|
palette = 11=#ffffa5
|
||||||
|
palette = 12=#d6acff
|
||||||
|
palette = 13=#ff92df
|
||||||
|
palette = 14=#a4ffff
|
||||||
|
palette = 15=#ffffff
|
||||||
|
background = #282a36
|
||||||
|
foreground = #f8f8f2
|
||||||
|
cursor-color = #f8f8f2
|
||||||
|
cursor-text = #282a36
|
||||||
|
selection-foreground = #f8f8f2
|
||||||
|
selection-background = #44475a
|
8
config/ideavimrc
Normal file
8
config/ideavimrc
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
set clipboard^=unnamedplus,unnamed
|
||||||
|
set hlsearch
|
||||||
|
set ignorecase
|
||||||
|
set smartcase
|
||||||
|
set incsearch
|
||||||
|
set ideajoin
|
||||||
|
set scrolloff=8
|
||||||
|
set sidescrolloff=8
|
19
config/mpd.conf
Normal file
19
config/mpd.conf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
log_level "verbose"
|
||||||
|
auto_update "yes"
|
||||||
|
group "audio"
|
||||||
|
|
||||||
|
audio_output {
|
||||||
|
type "pipewire"
|
||||||
|
name "Pipewire Pulse"
|
||||||
|
}
|
||||||
|
|
||||||
|
audio_output {
|
||||||
|
type "fifo"
|
||||||
|
name "FIFO"
|
||||||
|
path "/tmp/mpd.fifo"
|
||||||
|
format "44100:16:2"
|
||||||
|
}
|
||||||
|
|
||||||
|
follow_outside_symlinks "yes"
|
||||||
|
follow_inside_symlinks "yes"
|
||||||
|
filesystem_charset "UTF-8"
|
1
config/nvim/after/ftplugin/astro.lua
Normal file
1
config/nvim/after/ftplugin/astro.lua
Normal file
@ -0,0 +1 @@
|
|||||||
|
vim.opt_local.tabstop = 2
|
1
config/nvim/after/ftplugin/html.lua
Normal file
1
config/nvim/after/ftplugin/html.lua
Normal file
@ -0,0 +1 @@
|
|||||||
|
vim.opt_local.tabstop = 2
|
2
config/nvim/after/ftplugin/javascript.lua
Normal file
2
config/nvim/after/ftplugin/javascript.lua
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
vim.opt_local.tabstop = 2
|
||||||
|
|
1
config/nvim/after/ftplugin/javascriptreact.lua
Normal file
1
config/nvim/after/ftplugin/javascriptreact.lua
Normal file
@ -0,0 +1 @@
|
|||||||
|
vim.opt_local.tabstop = 2
|
3
config/nvim/after/ftplugin/json.lua
Normal file
3
config/nvim/after/ftplugin/json.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.shiftwidth = 2
|
1
config/nvim/after/ftplugin/lua.lua
Normal file
1
config/nvim/after/ftplugin/lua.lua
Normal file
@ -0,0 +1 @@
|
|||||||
|
vim.opt_local.tabstop = 2
|
15
config/nvim/after/ftplugin/markdown.lua
Normal file
15
config/nvim/after/ftplugin/markdown.lua
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.wrap = true
|
||||||
|
|
||||||
|
vim.opt.linebreak = true
|
||||||
|
vim.opt.signcolumn = 'no'
|
||||||
|
vim.opt.number = false
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.shiftwidth = 2
|
||||||
|
vim.opt.fillchars = { eob = ' ', fold = ' ' }
|
||||||
|
|
||||||
|
vim.o.list = true
|
||||||
|
vim.o.conceallevel = 2
|
3
config/nvim/after/ftplugin/nix.lua
Normal file
3
config/nvim/after/ftplugin/nix.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.shiftwidth = 2
|
2
config/nvim/after/ftplugin/oil.lua
Normal file
2
config/nvim/after/ftplugin/oil.lua
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
vim.opt_local.number = false
|
||||||
|
vim.opt_local.relativenumber = false
|
3
config/nvim/after/ftplugin/python.lua
Normal file
3
config/nvim/after/ftplugin/python.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.shiftwidth = 4
|
3
config/nvim/after/ftplugin/toml.lua
Normal file
3
config/nvim/after/ftplugin/toml.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.shiftwidth = 2
|
1
config/nvim/after/ftplugin/typescript.lua
Normal file
1
config/nvim/after/ftplugin/typescript.lua
Normal file
@ -0,0 +1 @@
|
|||||||
|
vim.opt_local.tabstop = 2
|
1
config/nvim/after/ftplugin/typescriptreact.lua
Normal file
1
config/nvim/after/ftplugin/typescriptreact.lua
Normal file
@ -0,0 +1 @@
|
|||||||
|
vim.opt_local.tabstop = 2
|
2
config/nvim/after/ftplugin/typst.lua
Normal file
2
config/nvim/after/ftplugin/typst.lua
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
vim.opt_local.wrap = true
|
||||||
|
vim.opt_local.tabstop = 2
|
3
config/nvim/after/ftplugin/yaml.lua
Normal file
3
config/nvim/after/ftplugin/yaml.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.shiftwidth = 2
|
7
config/nvim/init.lua
Normal file
7
config/nvim/init.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
vim.loader.enable()
|
||||||
|
|
||||||
|
require 'config.lazy'
|
||||||
|
require 'config.options'
|
||||||
|
require 'config.keymaps'
|
||||||
|
require 'config.autocmds'
|
||||||
|
require 'config.lsp'
|
9
config/nvim/lsp/astro.lua
Normal file
9
config/nvim/lsp/astro.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'astro-ls', '--stdio' },
|
||||||
|
filetypes = { 'astro' },
|
||||||
|
init_options = {
|
||||||
|
typescript = {
|
||||||
|
tsdk = 'node_modules/typescript/lib',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
12
config/nvim/lsp/basedpyright.lua
Normal file
12
config/nvim/lsp/basedpyright.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'basedpyright-langserver', '--stdio' },
|
||||||
|
filetypes = { 'python' },
|
||||||
|
settings = {
|
||||||
|
basedpyright = {
|
||||||
|
analysis = {
|
||||||
|
typeCheckingMode = 'off',
|
||||||
|
reportUnusedVariable = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
4
config/nvim/lsp/clangd.lua
Normal file
4
config/nvim/lsp/clangd.lua
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'clangd' },
|
||||||
|
filetypes = { 'c', 'cpp' },
|
||||||
|
}
|
13
config/nvim/lsp/emmet_ls.lua
Normal file
13
config/nvim/lsp/emmet_ls.lua
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'emmet-language-server', '--stdio' },
|
||||||
|
filetypes = {
|
||||||
|
'typescript',
|
||||||
|
'javascriptreact',
|
||||||
|
'typescriptreact',
|
||||||
|
'vue',
|
||||||
|
'astro',
|
||||||
|
'php',
|
||||||
|
'html',
|
||||||
|
'css',
|
||||||
|
},
|
||||||
|
}
|
23
config/nvim/lsp/luals.lua
Normal file
23
config/nvim/lsp/luals.lua
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'lua-language-server' },
|
||||||
|
filetypes = { 'lua' },
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
runtime = {
|
||||||
|
version = 'LuaJIT',
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
checkThirdParty = false,
|
||||||
|
library = {
|
||||||
|
vim.env.VIMRUNTIME,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
globals = { 'vim' },
|
||||||
|
},
|
||||||
|
telemetry = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
4
config/nvim/lsp/nixd.lua
Normal file
4
config/nvim/lsp/nixd.lua
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'nixd' },
|
||||||
|
filetypes = { 'nix' },
|
||||||
|
}
|
14
config/nvim/lsp/tailwindcss.lua
Normal file
14
config/nvim/lsp/tailwindcss.lua
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'tailwindcss-language-server', '--stdio' },
|
||||||
|
filetypes = {
|
||||||
|
'typescript',
|
||||||
|
'javascriptreact',
|
||||||
|
'typescriptreact',
|
||||||
|
'svelte',
|
||||||
|
'vue',
|
||||||
|
'astro',
|
||||||
|
'php',
|
||||||
|
'html',
|
||||||
|
'css',
|
||||||
|
},
|
||||||
|
}
|
4
config/nvim/lsp/ts_ls.lua
Normal file
4
config/nvim/lsp/ts_ls.lua
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
cmd = { 'typescript-language-server', '--stdio' },
|
||||||
|
filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact' },
|
||||||
|
}
|
24
config/nvim/lua/config/autocmds.lua
Normal file
24
config/nvim/lua/config/autocmds.lua
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||||
|
desc = 'Highlight when yanking (copying) text',
|
||||||
|
group = vim.api.nvim_create_augroup('highlight-yank', { clear = true }),
|
||||||
|
callback = function()
|
||||||
|
vim.highlight.on_yank()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('TermOpen', {
|
||||||
|
group = vim.api.nvim_create_augroup('custom-term-open', { clear = true }),
|
||||||
|
callback = function()
|
||||||
|
vim.opt.number = false
|
||||||
|
vim.opt.relativenumber = false
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
callback = function(args)
|
||||||
|
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
||||||
|
if client then
|
||||||
|
client.server_capabilities.semanticTokensProvider = nil
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
56
config/nvim/lua/config/keymaps.lua
Normal file
56
config/nvim/lua/config/keymaps.lua
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
---@diagnostic disable: unused-local
|
||||||
|
local key = vim.keymap
|
||||||
|
|
||||||
|
key.set('n', '<leader>q', ':q<cr>', { desc = '[q]uit' })
|
||||||
|
key.set('n', '<leader>fs', ':w<cr>', { desc = '[f]ile [s]ave' })
|
||||||
|
key.set('n', '<leader>fr', ':e<cr>', { desc = '[f]ile [r]efresh' })
|
||||||
|
key.set('n', '<leader>fx', ':source %<cr>', { desc = '[f]ile e[x]ecute' })
|
||||||
|
|
||||||
|
key.set('v', '<leader>er', ':lua<cr>', { desc = '[f]ile [s]ave' })
|
||||||
|
|
||||||
|
key.set('n', '<leader>bx', ':source %<cr>', { desc = 'e[x]ecute buffer' })
|
||||||
|
key.set('n', '<leader>bx', ':source %<cr>', { desc = 'e[x]ecute buffer' })
|
||||||
|
key.set('n', '<leader>bd', ':bdelete<cr>', { desc = '[b]uffer [d]elete' })
|
||||||
|
key.set('n', '<leader>bp', ':bprevious<cr>', { desc = '[b]uffer [p]revious' })
|
||||||
|
key.set('n', '<leader>bn', ':bnext<cr>', { desc = '[b]uffer [n]ext' })
|
||||||
|
|
||||||
|
key.set('n', 'j', 'gj')
|
||||||
|
key.set('n', 'k', 'gk')
|
||||||
|
|
||||||
|
key.set('v', '<', '<gv')
|
||||||
|
key.set('v', '>', '>gv')
|
||||||
|
|
||||||
|
key.set('n', 'n', 'nzzzv')
|
||||||
|
key.set('n', 'N', 'nzzzv')
|
||||||
|
|
||||||
|
key.set('v', 'p', '"_dP')
|
||||||
|
|
||||||
|
key.set({ 'i', 's' }, '<C-c>', function()
|
||||||
|
if vim.snippet then
|
||||||
|
vim.snippet.stop()
|
||||||
|
end
|
||||||
|
return '<esc>'
|
||||||
|
end)
|
||||||
|
|
||||||
|
key.set('n', '<leader>ws', ':split<cr>', { desc = '[w]indow [s]plit horizontally' })
|
||||||
|
key.set('n', '<leader>wv', ':vsplit<cr>', { desc = '[w]indow split [v]ertically' })
|
||||||
|
key.set('n', '<leader>wh', '<C-w><C-h>', { desc = 'move focus to left window' })
|
||||||
|
key.set('n', '<leader>wj', '<C-w><C-j>', { desc = 'move focus to bottom window' })
|
||||||
|
key.set('n', '<leader>wk', '<C-w><C-k>', { desc = 'move focus to top window' })
|
||||||
|
key.set('n', '<leader>wl', '<C-w><C-l>', { desc = 'move focus to right window' })
|
||||||
|
key.set('n', '<leader>wc', '<C-w>c', { desc = '[w]indow [c]lose' })
|
||||||
|
key.set('n', '<leader>wo', '<C-w>o', { desc = '[w]indow make it [o]pen wide' })
|
||||||
|
|
||||||
|
key.set('n', '<M-j>', ':cnext<cr>', { desc = 'quickfix next' })
|
||||||
|
key.set('n', '<M-k>', ':cprev<cr>', { desc = 'quickfix previous' })
|
||||||
|
|
||||||
|
key.set('t', '<esc><esc>', '<C-\\><C-n>', { desc = 'easier terminal normal mode' })
|
||||||
|
|
||||||
|
local job_id = 0
|
||||||
|
key.set('n', '<leader>to', function()
|
||||||
|
vim.cmd.vnew()
|
||||||
|
vim.cmd.term()
|
||||||
|
vim.cmd.wincmd 'J'
|
||||||
|
vim.api.nvim_win_set_height(0, 13)
|
||||||
|
job_id = vim.bo.channel
|
||||||
|
end, { desc = '[t]erminal [o]pen' })
|
40
config/nvim/lua/config/lazy.lua
Normal file
40
config/nvim/lua/config/lazy.lua
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
-- Bootstrap lazy.nvim
|
||||||
|
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
||||||
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
|
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
||||||
|
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
vim.api.nvim_echo({
|
||||||
|
{ 'Failed to clone lazy.nvim:\n', 'ErrorMsg' },
|
||||||
|
{ out, 'WarningMsg' },
|
||||||
|
{ '\nPress any key to exit...' },
|
||||||
|
}, true, {})
|
||||||
|
vim.fn.getchar()
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
-- Make sure to setup `mapleader` and `maplocalleader` before
|
||||||
|
-- loading lazy.nvim so that mappings are correct.
|
||||||
|
-- This is also a good place to setup other settings (vim.opt)
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.g.maplocalleader = ' '
|
||||||
|
|
||||||
|
-- Setup lazy.nvim
|
||||||
|
require('lazy').setup {
|
||||||
|
spec = {
|
||||||
|
{
|
||||||
|
'tpope/vim-fugitive',
|
||||||
|
config = function()
|
||||||
|
vim.keymap.set('n', '<leader>gd', ':0G<cr>', { desc = '[g]it [d]ashboard' })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{ 'chrisbra/csv.vim', ft = 'csv' },
|
||||||
|
{ import = 'plugins' },
|
||||||
|
},
|
||||||
|
change_detection = {
|
||||||
|
notify = false,
|
||||||
|
},
|
||||||
|
}
|
58
config/nvim/lua/config/lsp.lua
Normal file
58
config/nvim/lua/config/lsp.lua
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
group = vim.api.nvim_create_augroup('UserLspAttach', { clear = true }),
|
||||||
|
callback = function(args)
|
||||||
|
local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
|
||||||
|
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
local k = vim.keymap
|
||||||
|
|
||||||
|
k.set('n', 'gd', function() vim.lsp.buf.definition() end, { desc = '[g]oto [d]efinition' })
|
||||||
|
k.set('n', '<leader>lt', ':checkhealth vim.lsp<cr>', opts)
|
||||||
|
k.set('n', '<leader>lr', vim.lsp.buf.rename, opts)
|
||||||
|
k.set('n', '<leader>la', vim.lsp.buf.code_action, opts)
|
||||||
|
k.set('n', 'gr', vim.lsp.buf.references, opts)
|
||||||
|
k.set('n', '[d', function() vim.diagnostic.jump({ count = -1, float = true }) end, opts)
|
||||||
|
k.set('n', ']d', function() vim.diagnostic.jump({ count = 1, float = true }) end, opts)
|
||||||
|
|
||||||
|
-- Auto-formatting (with Editorconfig)
|
||||||
|
if client:supports_method 'textDocument/willSaveWaitUntil' and client:supports_method 'textDocument/formatting' then
|
||||||
|
vim.api.nvim_create_autocmd('BufWritePre', {
|
||||||
|
group = vim.api.nvim_create_augroup('UserLspAttach', { clear = false }),
|
||||||
|
buffer = args.buf,
|
||||||
|
callback = function()
|
||||||
|
vim.lsp.buf.format { bufnr = args.buf, id = client.id, timeout_ms = 1000 }
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
vim.o.completeopt = 'menuone,noinsert,popup,fuzzy,noselect'
|
||||||
|
vim.o.winborder = 'rounded' -- rounded borders in floating windows
|
||||||
|
|
||||||
|
-- Diagnostics
|
||||||
|
vim.diagnostic.config {
|
||||||
|
severity_sort = true,
|
||||||
|
signs = true,
|
||||||
|
underline = true,
|
||||||
|
virtual_text = true,
|
||||||
|
-- virtual_lines = true,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Configs
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||||
|
|
||||||
|
vim.lsp.config('*', {
|
||||||
|
capabilities = capabilities,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.enable({
|
||||||
|
"astro",
|
||||||
|
"basedpyright",
|
||||||
|
"clangd",
|
||||||
|
"emmet_ls",
|
||||||
|
"luals",
|
||||||
|
"nixd",
|
||||||
|
"tailwindcss",
|
||||||
|
"ts_ls",
|
||||||
|
})
|
30
config/nvim/lua/config/options.lua
Normal file
30
config/nvim/lua/config/options.lua
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
local set = vim.opt
|
||||||
|
|
||||||
|
set.cole = 0
|
||||||
|
set.tabstop = 4
|
||||||
|
set.shiftwidth = 0
|
||||||
|
set.wrap = false
|
||||||
|
set.number = true
|
||||||
|
set.softtabstop = -1
|
||||||
|
set.smarttab = true
|
||||||
|
set.expandtab = false
|
||||||
|
set.ignorecase = true
|
||||||
|
set.smartcase = true
|
||||||
|
set.updatetime = 100
|
||||||
|
set.redrawtime = 10000
|
||||||
|
set.timeoutlen = 300
|
||||||
|
set.hlsearch = true
|
||||||
|
set.clipboard = 'unnamedplus'
|
||||||
|
set.signcolumn = 'yes:1'
|
||||||
|
set.foldcolumn = '0'
|
||||||
|
set.list = true
|
||||||
|
set.undofile = true
|
||||||
|
set.cmdheight = 1
|
||||||
|
set.fillchars = { eob = ' ', fold = ' ' }
|
||||||
|
set.listchars = { tab = '│ ', trail = '·', nbsp = '␣' }
|
||||||
|
|
||||||
|
vim.o.foldenable = true
|
||||||
|
vim.o.foldlevel = 99
|
||||||
|
vim.o.foldmethod = 'expr'
|
||||||
|
vim.o.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
|
||||||
|
vim.o.foldtext = ''
|
57
config/nvim/lua/config/telescope/multigrep.lua
Normal file
57
config/nvim/lua/config/telescope/multigrep.lua
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
local pickers = require 'telescope.pickers'
|
||||||
|
local finders = require 'telescope.finders'
|
||||||
|
local make_entry = require 'telescope.make_entry'
|
||||||
|
local conf = require('telescope.config').values
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
local live_multigrep = function(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
opts.cwd = opts.cwd or vim.uv.cwd()
|
||||||
|
|
||||||
|
local finder = finders.new_async_job {
|
||||||
|
command_generator = function(prompt)
|
||||||
|
if not prompt or prompt == '' then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local pieces = vim.split(prompt, ' ')
|
||||||
|
local args = { 'rg' }
|
||||||
|
if pieces[1] then
|
||||||
|
table.insert(args, '-e')
|
||||||
|
table.insert(args, pieces[1])
|
||||||
|
end
|
||||||
|
|
||||||
|
if pieces[2] then
|
||||||
|
table.insert(args, '-g')
|
||||||
|
table.insert(args, pieces[2])
|
||||||
|
end
|
||||||
|
|
||||||
|
return vim
|
||||||
|
.iter({
|
||||||
|
args,
|
||||||
|
{ '--no-heading', '--with-filename', '--line-number', '--column', '--smart-case' },
|
||||||
|
})
|
||||||
|
:flatten()
|
||||||
|
:totable()
|
||||||
|
end,
|
||||||
|
entry_maker = make_entry.gen_from_vimgrep(opts),
|
||||||
|
cwd = opts.cwd,
|
||||||
|
}
|
||||||
|
|
||||||
|
pickers
|
||||||
|
.new(opts, {
|
||||||
|
debounce = 100,
|
||||||
|
prompt_title = 'Multi Grep',
|
||||||
|
finder = finder,
|
||||||
|
previewer = conf.grep_previewer(opts),
|
||||||
|
sorter = require('telescope.sorters').empty(),
|
||||||
|
})
|
||||||
|
:find()
|
||||||
|
end
|
||||||
|
|
||||||
|
M.setup = function()
|
||||||
|
return live_multigrep
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
7
config/nvim/lua/plugins/autotag.lua
Normal file
7
config/nvim/lua/plugins/autotag.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'windwp/nvim-ts-autotag',
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
}
|
23
config/nvim/lua/plugins/blink.lua
Normal file
23
config/nvim/lua/plugins/blink.lua
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
return {
|
||||||
|
'saghen/blink.cmp',
|
||||||
|
dependencies = { 'rafamadriz/friendly-snippets' },
|
||||||
|
build = 'cargo build --release',
|
||||||
|
opts = {
|
||||||
|
-- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
|
||||||
|
-- 'super-tab' for mappings similar to vscode (tab to accept)
|
||||||
|
-- 'enter' for enter to accept
|
||||||
|
-- 'none' for no mappings
|
||||||
|
-- All presets have the following mappings:
|
||||||
|
-- C-space: Open menu or open docs if already open
|
||||||
|
-- C-n/C-p or Up/Down: Select next/previous item
|
||||||
|
-- C-e: Hide menu
|
||||||
|
-- C-k: Toggle signature help (if signature.enabled = true)
|
||||||
|
-- See :h blink-cmp-config-keymap for defining your own keymap
|
||||||
|
keymap = { preset = 'enter' },
|
||||||
|
appearance = {
|
||||||
|
nerd_font_variant = 'mono'
|
||||||
|
},
|
||||||
|
completion = { documentation = { auto_show = true } },
|
||||||
|
},
|
||||||
|
opts_extend = { "sources.default" }
|
||||||
|
}
|
12
config/nvim/lua/plugins/colorscheme.lua
Normal file
12
config/nvim/lua/plugins/colorscheme.lua
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'Mofiqul/dracula.nvim',
|
||||||
|
lazy = false,
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
require('dracula').setup {}
|
||||||
|
|
||||||
|
vim.cmd.colorscheme 'dracula'
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
17
config/nvim/lua/plugins/comment.lua
Normal file
17
config/nvim/lua/plugins/comment.lua
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'numToStr/Comment.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'JoosepAlviste/nvim-ts-context-commentstring',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require('ts_context_commentstring').setup {
|
||||||
|
enable_autocmd = false,
|
||||||
|
}
|
||||||
|
|
||||||
|
require('Comment').setup {
|
||||||
|
pre_hook = require('ts_context_commentstring.integrations.comment_nvim').create_pre_hook(),
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
47
config/nvim/lua/plugins/fzf.lua
Normal file
47
config/nvim/lua/plugins/fzf.lua
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
return {
|
||||||
|
'ibhagwan/fzf-lua',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-tree/nvim-web-devicons',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local key = vim.keymap
|
||||||
|
local fzf = require('fzf-lua')
|
||||||
|
|
||||||
|
fzf.setup {
|
||||||
|
'telescope',
|
||||||
|
winopts = {
|
||||||
|
preview = {
|
||||||
|
layout = 'vertical',
|
||||||
|
vertical = 'down:60%'
|
||||||
|
},
|
||||||
|
width = 0.95
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local search_nvim_conf = function()
|
||||||
|
fzf.files {
|
||||||
|
cwd = vim.fn.stdpath 'config'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
key.set('n', '<leader><leader>', fzf.buffers, { desc = 'search buffers' })
|
||||||
|
|
||||||
|
-- key.set('n', '<leader>sf', fzf.files, { desc = '[s]earch [f]iles' })
|
||||||
|
key.set('n', '<leader>sl', fzf.blines, { desc = '[s]earch buffer [l]ines' })
|
||||||
|
key.set('n', '<leader>sh', fzf.helptags, { desc = '[s]earch [h]elp' })
|
||||||
|
key.set('n', '<leader>sk', fzf.keymaps, { desc = '[s]earch [k]eymaps' })
|
||||||
|
key.set('n', '<leader>sn', search_nvim_conf, { desc = '[s]earch [n]vim config files' })
|
||||||
|
key.set('n', '<leader>ss', fzf.builtin, { desc = '[s]earch [s]earchables' })
|
||||||
|
|
||||||
|
key.set('n', '<leader>sf', fzf.files, { desc = '[s]earch [f]iles' })
|
||||||
|
key.set('n', '<leader>pf', fzf.files, { desc = '[p]roject [f]iles' })
|
||||||
|
key.set('n', '<leader>pg', fzf.live_grep_native, { desc = '[p]roject [g]rep' })
|
||||||
|
|
||||||
|
key.set('n', '<leader>gc', fzf.git_commits, { desc = '[g]it [c]ommits' })
|
||||||
|
key.set('n', '<leader>gb', fzf.git_branches, { desc = '[g]it [b]ranches' })
|
||||||
|
key.set('n', '<leader>gt', fzf.git_status, { desc = '[g]it [s]tatus' })
|
||||||
|
|
||||||
|
key.set('n', '<leader>ld', fzf.lsp_workspace_diagnostics, { desc = '[L]SP [d]iagnostics' })
|
||||||
|
key.set('n', '<leader>ls', fzf.lsp_document_symbols, { desc = '[L]SP [s]ymbols' })
|
||||||
|
end
|
||||||
|
}
|
15
config/nvim/lua/plugins/gitsigns.lua
Normal file
15
config/nvim/lua/plugins/gitsigns.lua
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
return {
|
||||||
|
'lewis6991/gitsigns.nvim',
|
||||||
|
config = function ()
|
||||||
|
require('gitsigns').setup {
|
||||||
|
signs = {
|
||||||
|
add = { text = '┃' },
|
||||||
|
change = { text = '┃' },
|
||||||
|
delete = { text = '_' },
|
||||||
|
topdelete = { text = '‾' },
|
||||||
|
changedelete = { text = '~' },
|
||||||
|
untracked = { text = '┆' },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
19
config/nvim/lua/plugins/obsidian.lua
Normal file
19
config/nvim/lua/plugins/obsidian.lua
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
return {
|
||||||
|
'obsidian-nvim/obsidian.nvim',
|
||||||
|
version = '*',
|
||||||
|
lazy = true,
|
||||||
|
event = {
|
||||||
|
'BufReadPre ' .. vim.fn.expand '~' .. '/Documents/obsidian/*.md',
|
||||||
|
},
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
workspaces = {
|
||||||
|
{
|
||||||
|
name = 'personal',
|
||||||
|
path = '~/Documents/obsidian'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
16
config/nvim/lua/plugins/oil.lua
Normal file
16
config/nvim/lua/plugins/oil.lua
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'stevearc/oil.nvim',
|
||||||
|
config = function()
|
||||||
|
vim.keymap.set('n', '<leader>fe', ':Oil<cr>', { desc = '[f]ile [e]xplorer' })
|
||||||
|
vim.keymap.set('n', '-', ':Oil<cr>', { desc = 'file explorer' })
|
||||||
|
require('oil').setup {
|
||||||
|
default_file_explorer = true,
|
||||||
|
delete_to_trash = true,
|
||||||
|
view_options = {
|
||||||
|
show_hidden = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
13
config/nvim/lua/plugins/snacks.lua
Normal file
13
config/nvim/lua/plugins/snacks.lua
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'folke/snacks.nvim',
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
require('snacks').setup {
|
||||||
|
quickfile = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
38
config/nvim/lua/plugins/treesitter.lua
Normal file
38
config/nvim/lua/plugins/treesitter.lua
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---@diagnostic disable: missing-fields
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
build = ':TSUpdate',
|
||||||
|
config = function()
|
||||||
|
require('nvim-treesitter.configs').setup {
|
||||||
|
ensure_installed = {
|
||||||
|
'lua',
|
||||||
|
'python',
|
||||||
|
'c',
|
||||||
|
'javascript',
|
||||||
|
'typescript',
|
||||||
|
'astro',
|
||||||
|
},
|
||||||
|
auto_install = false,
|
||||||
|
-- ignore_install = {},
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
---@diagnostic disable-next-line: unused-local
|
||||||
|
disable = function(lang, buf)
|
||||||
|
local max_filesize = 100 * 1024
|
||||||
|
---@diagnostic disable-next-line: undefined-field
|
||||||
|
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
||||||
|
if ok and stats and stats.size > max_filesize then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
enable = true,
|
||||||
|
disable = { 'python', 'c' },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
51
config/nvim/plugin/floaterm.lua
Normal file
51
config/nvim/plugin/floaterm.lua
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
local state = {
|
||||||
|
floating = {
|
||||||
|
buf = -1,
|
||||||
|
win = -1,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local function create_floating_window(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
local width = opts.width or math.floor(vim.o.columns * 0.8)
|
||||||
|
local height = opts.height or math.floor(vim.o.lines * 0.8)
|
||||||
|
|
||||||
|
local col = math.floor((vim.o.columns - width) / 2)
|
||||||
|
local row = math.floor((vim.o.lines - height) / 2)
|
||||||
|
|
||||||
|
local buf = nil
|
||||||
|
if vim.api.nvim_buf_is_valid(opts.buf) then
|
||||||
|
buf = opts.buf
|
||||||
|
else
|
||||||
|
buf = vim.api.nvim_create_buf(false, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
local win_config = {
|
||||||
|
relative = 'editor',
|
||||||
|
width = width,
|
||||||
|
height = height,
|
||||||
|
col = col,
|
||||||
|
row = row,
|
||||||
|
style = 'minimal',
|
||||||
|
border = 'rounded',
|
||||||
|
}
|
||||||
|
|
||||||
|
local win = vim.api.nvim_open_win(buf, true, win_config)
|
||||||
|
|
||||||
|
return { buf = buf, win = win }
|
||||||
|
end
|
||||||
|
|
||||||
|
local toggle_terminal = function()
|
||||||
|
if not vim.api.nvim_win_is_valid(state.floating.win) then
|
||||||
|
state.floating = create_floating_window { buf = state.floating.buf }
|
||||||
|
if vim.bo[state.floating.buf].buftype ~= 'terminal' then
|
||||||
|
vim.cmd.term()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
vim.api.nvim_win_hide(state.floating.win)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command('Floaterm', toggle_terminal, {})
|
||||||
|
|
||||||
|
vim.keymap.set({ 'n', 't' }, '<M-\\>', toggle_terminal, { desc = '[t]oggle [t]erminal' })
|
199
config/p10k-config
Normal file
199
config/p10k-config
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
# Generated by Powerlevel10k configuration wizard on 2024-12-04 at 03:24 PST.
|
||||||
|
# Based on romkatv/powerlevel10k/config/p10k-pure.zsh, checksum 07533.
|
||||||
|
# Wizard options: nerdfont-v3 + powerline, large icons, pure, snazzy, 2 lines, sparse,
|
||||||
|
# transient_prompt, instant_prompt=quiet.
|
||||||
|
# Type `p10k configure` to generate another config.
|
||||||
|
#
|
||||||
|
# Config file for Powerlevel10k with the style of Pure (https://github.com/sindresorhus/pure).
|
||||||
|
#
|
||||||
|
# Differences from Pure:
|
||||||
|
#
|
||||||
|
# - Git:
|
||||||
|
# - `@c4d3ec2c` instead of something like `v1.4.0~11` when in detached HEAD state.
|
||||||
|
# - No automatic `git fetch` (the same as in Pure with `PURE_GIT_PULL=0`).
|
||||||
|
#
|
||||||
|
# Apart from the differences listed above, the replication of Pure prompt is exact. This includes
|
||||||
|
# even the questionable parts. For example, just like in Pure, there is no indication of Git status
|
||||||
|
# being stale; prompt symbol is the same in command, visual and overwrite vi modes; when prompt
|
||||||
|
# doesn't fit on one line, it wraps around with no attempt to shorten it.
|
||||||
|
#
|
||||||
|
# If you like the general style of Pure but not particularly attached to all its quirks, type
|
||||||
|
# `p10k configure` and pick "Lean" style. This will give you slick minimalist prompt while taking
|
||||||
|
# advantage of Powerlevel10k features that aren't present in Pure.
|
||||||
|
|
||||||
|
# Temporarily change options.
|
||||||
|
'builtin' 'local' '-a' 'p10k_config_opts'
|
||||||
|
[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
|
||||||
|
[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
|
||||||
|
[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
|
||||||
|
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
|
||||||
|
|
||||||
|
() {
|
||||||
|
emulate -L zsh -o extended_glob
|
||||||
|
|
||||||
|
# Unset all configuration options.
|
||||||
|
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
|
||||||
|
|
||||||
|
# Zsh >= 5.1 is required.
|
||||||
|
[[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
|
||||||
|
|
||||||
|
# Prompt colors.
|
||||||
|
local grey='242'
|
||||||
|
local red='#FF5C57'
|
||||||
|
local yellow='#F3F99D'
|
||||||
|
local blue='#57C7FF'
|
||||||
|
local magenta='#FF6AC1'
|
||||||
|
local cyan='#9AEDFE'
|
||||||
|
local white='#F1F1F0'
|
||||||
|
|
||||||
|
# Left prompt segments.
|
||||||
|
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
|
||||||
|
# =========================[ Line #1 ]=========================
|
||||||
|
context # user@host
|
||||||
|
dir # current directory
|
||||||
|
vcs # git status
|
||||||
|
command_execution_time # previous command duration
|
||||||
|
# =========================[ Line #2 ]=========================
|
||||||
|
newline # \n
|
||||||
|
virtualenv # python virtual environment
|
||||||
|
prompt_char # prompt symbol
|
||||||
|
)
|
||||||
|
|
||||||
|
# Right prompt segments.
|
||||||
|
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
|
||||||
|
# =========================[ Line #1 ]=========================
|
||||||
|
# command_execution_time # previous command duration
|
||||||
|
# virtualenv # python virtual environment
|
||||||
|
# context # user@host
|
||||||
|
# time # current time
|
||||||
|
# =========================[ Line #2 ]=========================
|
||||||
|
newline # \n
|
||||||
|
)
|
||||||
|
|
||||||
|
# Basic style options that define the overall prompt look.
|
||||||
|
typeset -g POWERLEVEL9K_BACKGROUND= # transparent background
|
||||||
|
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace
|
||||||
|
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space
|
||||||
|
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
|
||||||
|
typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons
|
||||||
|
|
||||||
|
# Add an empty line before each prompt except the first. This doesn't emulate the bug
|
||||||
|
# in Pure that makes prompt drift down whenever you use the Alt-C binding from fzf or similar.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
|
||||||
|
|
||||||
|
# Magenta prompt symbol if the last command succeeded.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=$magenta
|
||||||
|
# Red prompt symbol if the last command failed.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=$red
|
||||||
|
# Default prompt symbol.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯'
|
||||||
|
# Prompt symbol in command vi mode.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
|
||||||
|
# Prompt symbol in visual vi mode is the same as in command mode.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='❮'
|
||||||
|
# Prompt symbol in overwrite vi mode is the same as in command mode.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=false
|
||||||
|
|
||||||
|
# Grey Python Virtual Environment.
|
||||||
|
typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=$grey
|
||||||
|
# Don't show Python version.
|
||||||
|
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
|
||||||
|
typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
|
||||||
|
|
||||||
|
# Blue current directory.
|
||||||
|
typeset -g POWERLEVEL9K_DIR_FOREGROUND=$blue
|
||||||
|
|
||||||
|
# Context format when root: user@host. The first part white, the rest grey.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE="%F{$white}%n%f%F{$grey}@%m%f"
|
||||||
|
# Context format when not root: user@host. The whole thing grey.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE="%F{$grey}%n@%m%f"
|
||||||
|
# Don't show context unless root or in SSH.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=
|
||||||
|
|
||||||
|
# Show previous command duration only if it's >= 5s.
|
||||||
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=5
|
||||||
|
# Don't show fractional seconds. Thus, 7s rather than 7.3s.
|
||||||
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
|
||||||
|
# Duration format: 1d 2h 3m 4s.
|
||||||
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
|
||||||
|
# Yellow previous command duration.
|
||||||
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=$yellow
|
||||||
|
|
||||||
|
# Grey Git prompt. This makes stale prompts indistinguishable from up-to-date ones.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_FOREGROUND=$grey
|
||||||
|
|
||||||
|
# Disable async loading indicator to make directories that aren't Git repositories
|
||||||
|
# indistinguishable from large Git repositories without known state.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_LOADING_TEXT=
|
||||||
|
|
||||||
|
# Don't wait for Git status even for a millisecond, so that prompt always updates
|
||||||
|
# asynchronously when Git state changes.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0
|
||||||
|
|
||||||
|
# Cyan ahead/behind arrows.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND=$cyan
|
||||||
|
# Don't show remote branch, current tag or stashes.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind)
|
||||||
|
# Don't show the branch icon.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
|
||||||
|
# When in detached HEAD state, show @commit where branch normally goes.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@'
|
||||||
|
# Don't show staged, unstaged, untracked indicators.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON=
|
||||||
|
# Show '*' when there are staged, unstaged or untracked files.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_DIRTY_ICON='*'
|
||||||
|
# Show '⇣' if local branch is behind remote.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=':⇣'
|
||||||
|
# Show '⇡' if local branch is ahead of remote.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=':⇡'
|
||||||
|
# Don't show the number of commits next to the ahead/behind arrows.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1
|
||||||
|
# Remove space between '⇣' and '⇡' and all trailing spaces.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${${${P9K_CONTENT/⇣* :⇡/⇣⇡}// }//:/ }'
|
||||||
|
|
||||||
|
# Grey current time.
|
||||||
|
typeset -g POWERLEVEL9K_TIME_FOREGROUND=$grey
|
||||||
|
# Format for the current time: 09:51:02. See `man 3 strftime`.
|
||||||
|
typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
|
||||||
|
# If set to true, time will update when you hit enter. This way prompts for the past
|
||||||
|
# commands will contain the start times of their commands rather than the end times of
|
||||||
|
# their preceding commands.
|
||||||
|
typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
|
||||||
|
|
||||||
|
# Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
|
||||||
|
# when accepting a command line. Supported values:
|
||||||
|
#
|
||||||
|
# - off: Don't change prompt when accepting a command line.
|
||||||
|
# - always: Trim down prompt when accepting a command line.
|
||||||
|
# - same-dir: Trim down prompt when accepting a command line unless this is the first command
|
||||||
|
# typed after changing current working directory.
|
||||||
|
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
|
||||||
|
|
||||||
|
# Instant prompt mode.
|
||||||
|
#
|
||||||
|
# - off: Disable instant prompt. Choose this if you've tried instant prompt and found
|
||||||
|
# it incompatible with your zsh configuration files.
|
||||||
|
# - quiet: Enable instant prompt and don't print warnings when detecting console output
|
||||||
|
# during zsh initialization. Choose this if you've read and understood
|
||||||
|
# https://github.com/romkatv/powerlevel10k#instant-prompt.
|
||||||
|
# - verbose: Enable instant prompt and print a warning when detecting console output during
|
||||||
|
# zsh initialization. Choose this if you've never tried instant prompt, haven't
|
||||||
|
# seen the warning, or if you are unsure what this all means.
|
||||||
|
typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet
|
||||||
|
|
||||||
|
# Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
|
||||||
|
# For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
|
||||||
|
# can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
|
||||||
|
# really need it.
|
||||||
|
typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
|
||||||
|
|
||||||
|
# If p10k is already loaded, reload configuration.
|
||||||
|
# This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
|
||||||
|
(( ! $+functions[p10k] )) || p10k reload
|
||||||
|
}
|
||||||
|
|
||||||
|
# Tell `p10k configure` which file it should overwrite.
|
||||||
|
typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
|
||||||
|
|
||||||
|
(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
|
||||||
|
'builtin' 'unset' 'p10k_config_opts'
|
542
config/spacemacs
Normal file
542
config/spacemacs
Normal file
@ -0,0 +1,542 @@
|
|||||||
|
;; -*- mode: emacs-lisp; lexical-binding: t -*-
|
||||||
|
;; This file is loaded by Spacemacs at startup.
|
||||||
|
;; It must be stored in your home directory.
|
||||||
|
|
||||||
|
(defun dotspacemacs/layers ()
|
||||||
|
"Layer configuration:
|
||||||
|
This function should only modify configuration layer settings."
|
||||||
|
(setq-default
|
||||||
|
dotspacemacs-distribution 'spacemacs
|
||||||
|
dotspacemacs-enable-lazy-installation 'unused
|
||||||
|
dotspacemacs-ask-for-lazy-installation t
|
||||||
|
|
||||||
|
;; List of additional paths where to look for configuration layers.
|
||||||
|
;; Paths must have a trailing slash (i.e. "~/.mycontribs/")
|
||||||
|
dotspacemacs-configuration-layer-path '()
|
||||||
|
dotspacemacs-configuration-layers
|
||||||
|
'(yaml
|
||||||
|
html
|
||||||
|
shell-scripts
|
||||||
|
|
||||||
|
;; Spacemacs
|
||||||
|
spacemacs-project
|
||||||
|
spacemacs-defaults
|
||||||
|
spacemacs-org
|
||||||
|
spacemacs-evil
|
||||||
|
|
||||||
|
;; Fonts
|
||||||
|
emoji
|
||||||
|
unicode-fonts
|
||||||
|
|
||||||
|
;; editing
|
||||||
|
better-defaults
|
||||||
|
compleseus
|
||||||
|
auto-completion
|
||||||
|
multiple-cursors
|
||||||
|
prettier
|
||||||
|
|
||||||
|
;; tools
|
||||||
|
pdf
|
||||||
|
git
|
||||||
|
(shell :variables
|
||||||
|
shell-default-shell 'vterm
|
||||||
|
shell-default-term-shell "/home/dpv/.nix-profile/bin/zsh"
|
||||||
|
spacemacs-vterm-history-file-location "~/.local/share/zsh/zsh_history")
|
||||||
|
|
||||||
|
;; apps
|
||||||
|
hackernews
|
||||||
|
|
||||||
|
;; development
|
||||||
|
(lsp :variables
|
||||||
|
lsp-headerline-breadcrumb-enable nil)
|
||||||
|
emacs-lisp
|
||||||
|
c-c++
|
||||||
|
lua
|
||||||
|
go
|
||||||
|
php
|
||||||
|
react
|
||||||
|
markdown
|
||||||
|
(python :variables python-backend 'lsp python-lsp-server 'pyright)
|
||||||
|
(javascript :variables
|
||||||
|
javascript-backend 'lsp)
|
||||||
|
(typescript :variables
|
||||||
|
typescript-backend 'lsp)
|
||||||
|
(docker :variables
|
||||||
|
docker-dockerfile-backend 'lsp)
|
||||||
|
|
||||||
|
;; Custom
|
||||||
|
dat-utils
|
||||||
|
dat-tabs
|
||||||
|
dat-notetaking
|
||||||
|
dat-emms)
|
||||||
|
|
||||||
|
dotspacemacs-additional-packages '(doom-themes org-modern persistent-scratch autothemer)
|
||||||
|
|
||||||
|
;; A list of packages that cannot be updated.
|
||||||
|
dotspacemacs-frozen-packages '()
|
||||||
|
|
||||||
|
;; A list of packages that will not be installed and loaded.
|
||||||
|
dotspacemacs-excluded-packages
|
||||||
|
'(vi-tilde-fringe)
|
||||||
|
|
||||||
|
;; Defines the behaviour of Spacemacs when installing packages.
|
||||||
|
;; Possible values are `used-only', `used-but-keep-unused' and `all'.
|
||||||
|
;; `used-only' installs only explicitly used packages and deletes any unused
|
||||||
|
;; packages as well as their unused dependencies. `used-but-keep-unused'
|
||||||
|
;; installs only the used packages but won't delete unused ones. `all'
|
||||||
|
;; installs *all* packages supported by Spacemacs and never uninstalls them.
|
||||||
|
;; (default is `used-only')
|
||||||
|
dotspacemacs-install-packages 'used-only))
|
||||||
|
|
||||||
|
(defun dotspacemacs/init ()
|
||||||
|
"Initialization:
|
||||||
|
This function is called at the very beginning of Spacemacs startup,
|
||||||
|
before layer configuration.
|
||||||
|
It should only modify the values of Spacemacs settings."
|
||||||
|
;; This setq-default sexp is an exhaustive list of all the supported
|
||||||
|
;; spacemacs settings.
|
||||||
|
(setq-default
|
||||||
|
;; If non-nil then enable support for the portable dumper. You'll need to
|
||||||
|
;; compile Emacs 27 from source following the instructions in file
|
||||||
|
;; EXPERIMENTAL.org at to root of the git repository.
|
||||||
|
;;
|
||||||
|
;; WARNING: pdumper does not work with Native Compilation, so it's disabled
|
||||||
|
;; regardless of the following setting when native compilation is in effect.
|
||||||
|
;;
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-enable-emacs-pdumper nil
|
||||||
|
|
||||||
|
;; Name of executable file pointing to emacs 27+. This executable must be
|
||||||
|
;; in your PATH.
|
||||||
|
;; (default "emacs")
|
||||||
|
dotspacemacs-emacs-pdumper-executable-file "emacs"
|
||||||
|
|
||||||
|
;; Name of the Spacemacs dump file. This is the file will be created by the
|
||||||
|
;; portable dumper in the cache directory under dumps sub-directory.
|
||||||
|
;; To load it when starting Emacs add the parameter `--dump-file'
|
||||||
|
;; when invoking Emacs 27.1 executable on the command line, for instance:
|
||||||
|
;; ./emacs --dump-file=$HOME/.emacs.d/.cache/dumps/spacemacs-27.1.pdmp
|
||||||
|
;; (default (format "spacemacs-%s.pdmp" emacs-version))
|
||||||
|
dotspacemacs-emacs-dumper-dump-file (format "spacemacs-%s.pdmp" emacs-version)
|
||||||
|
|
||||||
|
;; Maximum allowed time in seconds to contact an ELPA repository.
|
||||||
|
;; (default 5)
|
||||||
|
dotspacemacs-elpa-timeout 5
|
||||||
|
|
||||||
|
;; Set `gc-cons-threshold' and `gc-cons-percentage' when startup finishes.
|
||||||
|
;; This is an advanced option and should not be changed unless you suspect
|
||||||
|
;; performance issues due to garbage collection operations.
|
||||||
|
;; (default '(100000000 0.1))
|
||||||
|
dotspacemacs-gc-cons '(100000000 0.1)
|
||||||
|
|
||||||
|
;; Set `read-process-output-max' when startup finishes.
|
||||||
|
;; This defines how much data is read from a foreign process.
|
||||||
|
;; Setting this >= 1 MB should increase performance for lsp servers
|
||||||
|
;; in emacs 27.
|
||||||
|
;; (default (* 1024 1024))
|
||||||
|
dotspacemacs-read-process-output-max (* 1024 1024)
|
||||||
|
|
||||||
|
;; If non-nil then Spacelpa repository is the primary source to install
|
||||||
|
;; a locked version of packages. If nil then Spacemacs will install the
|
||||||
|
;; latest version of packages from MELPA. Spacelpa is currently in
|
||||||
|
;; experimental state please use only for testing purposes.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-use-spacelpa nil
|
||||||
|
|
||||||
|
;; If non-nil then verify the signature for downloaded Spacelpa archives.
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-verify-spacelpa-archives t
|
||||||
|
|
||||||
|
;; If non-nil then spacemacs will check for updates at startup
|
||||||
|
;; when the current branch is not `develop'. Note that checking for
|
||||||
|
;; new versions works via git commands, thus it calls GitHub services
|
||||||
|
;; whenever you start Emacs. (default nil)
|
||||||
|
dotspacemacs-check-for-update nil
|
||||||
|
|
||||||
|
;; If non-nil, a form that evaluates to a package directory. For example, to
|
||||||
|
;; use different package directories for different Emacs versions, set this
|
||||||
|
;; to `emacs-version'. (default 'emacs-version)
|
||||||
|
dotspacemacs-elpa-subdirectory 'emacs-version
|
||||||
|
|
||||||
|
;; One of `vim', `emacs' or `hybrid'.
|
||||||
|
;; `hybrid' is like `vim' except that `insert state' is replaced by the
|
||||||
|
;; `hybrid state' with `emacs' key bindings. The value can also be a list
|
||||||
|
;; with `:variables' keyword (similar to layers). Check the editing styles
|
||||||
|
;; section of the documentation for details on available variables.
|
||||||
|
;; (default 'vim)
|
||||||
|
dotspacemacs-editing-style 'vim
|
||||||
|
|
||||||
|
;; If non-nil show the version string in the Spacemacs buffer. It will
|
||||||
|
;; appear as (spacemacs version)@(emacs version)
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-startup-buffer-show-version t
|
||||||
|
dotspacemacs-startup-banner 'official
|
||||||
|
dotspacemacs-startup-banner-scale 'auto
|
||||||
|
dotspacemacs-startup-lists '((recents . 5)
|
||||||
|
(projects . 7))
|
||||||
|
dotspacemacs-startup-buffer-responsive t
|
||||||
|
dotspacemacs-show-startup-list-numbers t
|
||||||
|
dotspacemacs-startup-buffer-multi-digit-delay 0.4
|
||||||
|
dotspacemacs-startup-buffer-show-icons nil
|
||||||
|
|
||||||
|
;; Default major mode for a new empty buffer. Possible values are mode
|
||||||
|
;; names such as `text-mode'; and `nil' to use Fundamental mode.
|
||||||
|
;; (default `text-mode')
|
||||||
|
dotspacemacs-new-empty-buffer-major-mode 'text-mode
|
||||||
|
|
||||||
|
;; Default major mode of the scratch buffer (default `text-mode')
|
||||||
|
dotspacemacs-scratch-mode 'text-mode
|
||||||
|
|
||||||
|
;; If non-nil, *scratch* buffer will be persistent. Things you write down in
|
||||||
|
;; *scratch* buffer will be saved and restored automatically.
|
||||||
|
dotspacemacs-scratch-buffer-persistent nil
|
||||||
|
|
||||||
|
;; If non-nil, `kill-buffer' on *scratch* buffer
|
||||||
|
;; will bury it instead of killing.
|
||||||
|
dotspacemacs-scratch-buffer-unkillable nil
|
||||||
|
|
||||||
|
;; Initial message in the scratch buffer, such as "Welcome to Spacemacs!"
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-initial-scratch-message nil
|
||||||
|
|
||||||
|
;; List of themes, the first of the list is loaded when spacemacs starts.
|
||||||
|
;; Press `SPC T n' to cycle to the next theme in the list (works great
|
||||||
|
;; with 2 themes variants, one dark and one light). A theme from external
|
||||||
|
;; package can be defined with `:package', or a theme can be defined with
|
||||||
|
;; `:location' to download the theme package, refer the themes section in
|
||||||
|
;; DOCUMENTATION.org for the full theme specifications.
|
||||||
|
dotspacemacs-themes '(doom-dracula
|
||||||
|
modus-operandi-deuteranopia)
|
||||||
|
|
||||||
|
;; Set the theme for the Spaceline. Supported themes are `spacemacs',
|
||||||
|
;; `all-the-icons', `custom', `doom', `vim-powerline' and `vanilla'. The
|
||||||
|
;; first three are spaceline themes. `doom' is the doom-emacs mode-line.
|
||||||
|
;; `vanilla' is default Emacs mode-line. `custom' is a user defined themes,
|
||||||
|
;; refer to the DOCUMENTATION.org for more info on how to create your own
|
||||||
|
;; spaceline theme. Value can be a symbol or list with additional properties.
|
||||||
|
;; (default '(spacemacs :separator wave :separator-scale 1.5))
|
||||||
|
dotspacemacs-mode-line-theme 'doom
|
||||||
|
|
||||||
|
;; If non-nil the cursor color matches the state color in GUI Emacs.
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-colorize-cursor-according-to-state t
|
||||||
|
|
||||||
|
;; Default font or prioritized list of fonts. This setting has no effect when
|
||||||
|
;; running Emacs in terminal. The font set here will be used for default and
|
||||||
|
;; fixed-pitch faces. The `:size' can be specified as
|
||||||
|
;; a non-negative integer (pixel size), or a floating-point (point size).
|
||||||
|
;; Point size is recommended, because it's device independent. (default 10.0)
|
||||||
|
dotspacemacs-default-font '("Iosevka Nerd Font"
|
||||||
|
:size 15.0
|
||||||
|
:weight medium)
|
||||||
|
|
||||||
|
dotspacemacs-leader-key "SPC"
|
||||||
|
dotspacemacs-emacs-command-key "SPC"
|
||||||
|
dotspacemacs-ex-command-key ":"
|
||||||
|
dotspacemacs-emacs-leader-key "M-m"
|
||||||
|
dotspacemacs-major-mode-leader-key ","
|
||||||
|
dotspacemacs-major-mode-emacs-leader-key (if window-system "<M-return>" "C-M-m")
|
||||||
|
|
||||||
|
dotspacemacs-distinguish-gui-tab nil
|
||||||
|
dotspacemacs-default-layout-name "Default"
|
||||||
|
dotspacemacs-display-default-layout nil
|
||||||
|
dotspacemacs-auto-resume-layouts nil
|
||||||
|
dotspacemacs-auto-generate-layout-names nil
|
||||||
|
|
||||||
|
dotspacemacs-large-file-size 1
|
||||||
|
dotspacemacs-auto-save-file-location 'cache
|
||||||
|
dotspacemacs-max-rollback-slots 5
|
||||||
|
dotspacemacs-enable-paste-transient-state nil
|
||||||
|
|
||||||
|
dotspacemacs-which-key-delay 0.4
|
||||||
|
|
||||||
|
;; Which-key frame position. Possible values are `right', `bottom' and
|
||||||
|
;; `right-then-bottom'. right-then-bottom tries to display the frame to the
|
||||||
|
;; right; if there is insufficient space it displays it at the bottom.
|
||||||
|
;; It is also possible to use a posframe with the following cons cell
|
||||||
|
;; `(posframe . position)' where position can be one of `center',
|
||||||
|
;; `top-center', `bottom-center', `top-left-corner', `top-right-corner',
|
||||||
|
;; `top-right-corner', `bottom-left-corner' or `bottom-right-corner'
|
||||||
|
;; (default 'bottom)
|
||||||
|
dotspacemacs-which-key-position 'bottom
|
||||||
|
|
||||||
|
;; Control where `switch-to-buffer' displays the buffer. If nil,
|
||||||
|
;; `switch-to-buffer' displays the buffer in the current window even if
|
||||||
|
;; another same-purpose window is available. If non-nil, `switch-to-buffer'
|
||||||
|
;; displays the buffer in a same-purpose window even if the buffer can be
|
||||||
|
;; displayed in the current window. (default nil)
|
||||||
|
dotspacemacs-switch-to-buffer-prefers-purpose nil
|
||||||
|
|
||||||
|
;; Whether side windows (such as those created by treemacs or neotree)
|
||||||
|
;; are kept or minimized by `spacemacs/toggle-maximize-window' (SPC w m).
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-maximize-window-keep-side-windows t
|
||||||
|
|
||||||
|
;; If nil, no load-hints enabled. If t, enable the `load-hints' which will
|
||||||
|
;; put the most likely path on the top of `load-path' to reduce walking
|
||||||
|
;; through the whole `load-path'. It's an experimental feature to speedup
|
||||||
|
;; Spacemacs on Windows. Refer the FAQ.org "load-hints" session for details.
|
||||||
|
dotspacemacs-enable-load-hints nil
|
||||||
|
|
||||||
|
;; If t, enable the `package-quickstart' feature to avoid full package
|
||||||
|
;; loading, otherwise no `package-quickstart' attemption (default nil).
|
||||||
|
;; Refer the FAQ.org "package-quickstart" section for details.
|
||||||
|
dotspacemacs-enable-package-quickstart nil
|
||||||
|
dotspacemacs-loading-progress-bar nil
|
||||||
|
dotspacemacs-fullscreen-at-startup nil
|
||||||
|
dotspacemacs-fullscreen-use-non-native nil
|
||||||
|
dotspacemacs-maximized-at-startup t
|
||||||
|
|
||||||
|
;; If non-nil the frame is undecorated when Emacs starts up. Combine this
|
||||||
|
;; variable with `dotspacemacs-maximized-at-startup' to obtain fullscreen
|
||||||
|
;; without external boxes. Also disables the internal border. (default nil)
|
||||||
|
dotspacemacs-undecorated-at-startup nil
|
||||||
|
|
||||||
|
;; A value from the range (0..100), in increasing opacity, which describes
|
||||||
|
;; the transparency level of a frame when it's active or selected.
|
||||||
|
;; Transparency can be toggled through `toggle-transparency'. (default 90)
|
||||||
|
dotspacemacs-active-transparency 90
|
||||||
|
|
||||||
|
;; A value from the range (0..100), in increasing opacity, which describes
|
||||||
|
;; the transparency level of a frame when it's inactive or deselected.
|
||||||
|
;; Transparency can be toggled through `toggle-transparency'. (default 90)
|
||||||
|
dotspacemacs-inactive-transparency 70
|
||||||
|
|
||||||
|
;; A value from the range (0..100), in increasing opacity, which describes the
|
||||||
|
;; transparency level of a frame background when it's active or selected. Transparency
|
||||||
|
;; can be toggled through `toggle-background-transparency'. (default 90)
|
||||||
|
dotspacemacs-background-transparency 90
|
||||||
|
|
||||||
|
;; If non-nil show the titles of transient states. (default t)
|
||||||
|
dotspacemacs-show-transient-state-title t
|
||||||
|
|
||||||
|
;; If non-nil show the color guide hint for transient state keys. (default t)
|
||||||
|
dotspacemacs-show-transient-state-color-guide t
|
||||||
|
|
||||||
|
;; If non-nil unicode symbols are displayed in the mode line.
|
||||||
|
;; If you use Emacs as a daemon and wants unicode characters only in GUI set
|
||||||
|
;; the value to quoted `display-graphic-p'. (default t)
|
||||||
|
dotspacemacs-mode-line-unicode-symbols t
|
||||||
|
dotspacemacs-smooth-scrolling t
|
||||||
|
dotspacemacs-scroll-bar-while-scrolling nil
|
||||||
|
|
||||||
|
dotspacemacs-line-numbers '(:relative t :size-limit-kb 1000)
|
||||||
|
dotspacemacs-folding-method 'evil
|
||||||
|
dotspacemacs-smartparens-strict-mode nil
|
||||||
|
|
||||||
|
;; If non-nil smartparens-mode will be enabled in programming modes.
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-activate-smartparens-mode t
|
||||||
|
|
||||||
|
;; If non-nil pressing the closing parenthesis `)' key in insert mode passes
|
||||||
|
;; over any automatically added closing parenthesis, bracket, quote, etc...
|
||||||
|
;; This can be temporary disabled by pressing `C-q' before `)'. (default nil)
|
||||||
|
dotspacemacs-smart-closing-parenthesis nil
|
||||||
|
|
||||||
|
;; Select a scope to highlight delimiters. Possible values are `any',
|
||||||
|
;; `current', `all' or `nil'. Default is `all' (highlight any scope and
|
||||||
|
;; emphasis the current one). (default 'all)
|
||||||
|
dotspacemacs-highlight-delimiters 'all
|
||||||
|
|
||||||
|
;; If non-nil, start an Emacs server if one is not already running.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-enable-server nil
|
||||||
|
|
||||||
|
;; Set the emacs server socket location.
|
||||||
|
;; If nil, uses whatever the Emacs default is, otherwise a directory path
|
||||||
|
;; like \"~/.emacs.d/server\". It has no effect if
|
||||||
|
;; `dotspacemacs-enable-server' is nil.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-server-socket-dir nil
|
||||||
|
|
||||||
|
;; If non-nil, advise quit functions to keep server open when quitting.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-persistent-server nil
|
||||||
|
|
||||||
|
;; List of search tool executable names. Spacemacs uses the first installed
|
||||||
|
;; tool of the list. Supported tools are `rg', `ag', `pt', `ack' and `grep'.
|
||||||
|
;; (default '("rg" "ag" "pt" "ack" "grep"))
|
||||||
|
dotspacemacs-search-tools '("rg" "ag" "pt" "ack" "grep")
|
||||||
|
|
||||||
|
;; The backend used for undo/redo functionality. Possible values are
|
||||||
|
;; `undo-fu', `undo-redo' and `undo-tree' see also `evil-undo-system'.
|
||||||
|
;; Note that saved undo history does not get transferred when changing
|
||||||
|
;; your undo system. The default is currently `undo-fu' as `undo-tree'
|
||||||
|
;; is not maintained anymore and `undo-redo' is very basic."
|
||||||
|
dotspacemacs-undo-system 'undo-fu
|
||||||
|
dotspacemacs-frame-title-format "%F - %a"
|
||||||
|
dotspacemacs-icon-title-format nil
|
||||||
|
dotspacemacs-show-trailing-whitespace t
|
||||||
|
dotspacemacs-whitespace-cleanup nil
|
||||||
|
dotspacemacs-use-clean-aindent-mode t
|
||||||
|
dotspacemacs-use-SPC-as-y nil
|
||||||
|
dotspacemacs-swap-number-row nil
|
||||||
|
dotspacemacs-zone-out-when-idle nil
|
||||||
|
dotspacemacs-pretty-docs nil
|
||||||
|
dotspacemacs-home-shorten-agenda-source nil
|
||||||
|
dotspacemacs-byte-compile nil))
|
||||||
|
|
||||||
|
(defun dotspacemacs/user-env ()
|
||||||
|
(spacemacs/load-spacemacs-env))
|
||||||
|
|
||||||
|
(defun dotspacemacs/user-init ()
|
||||||
|
;; (add-to-list 'custom-theme-load-path "~/.emacs.d/private/themes/")
|
||||||
|
(setq-default git-magit-status-fullscreen t))
|
||||||
|
|
||||||
|
(defun dotspacemacs/user-load ())
|
||||||
|
|
||||||
|
(defun dotspacemacs/user-config ()
|
||||||
|
;; Custom functions
|
||||||
|
(setq-default indent-tabs-mode t)
|
||||||
|
(setq-default tab-width 4)
|
||||||
|
(defvaralias 'c-basic-offset 'tab-width)
|
||||||
|
|
||||||
|
(setq initial-buffer-choice (lambda () (get-buffer "*scratch*")))
|
||||||
|
|
||||||
|
(tab-bar-mode -1)
|
||||||
|
|
||||||
|
;; Configure packages
|
||||||
|
(with-eval-after-load 'projectile
|
||||||
|
(setq projectile-project-search-path '("~/dev" "~/dev/gitlab")
|
||||||
|
projectile-require-project-root nil))
|
||||||
|
|
||||||
|
(with-eval-after-load 'doom-modeline
|
||||||
|
(setq doom-modeline-icon nil))
|
||||||
|
|
||||||
|
;; Enable truncating lines
|
||||||
|
(add-hook 'hack-local-variables-hook #'spacemacs/toggle-truncate-lines-on)
|
||||||
|
|
||||||
|
;; More themes
|
||||||
|
(use-package doom-themes
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(setq doom-themes-enable-bold t
|
||||||
|
doom-themes-enable-italic t)
|
||||||
|
(doom-themes-org-config))
|
||||||
|
|
||||||
|
;; Cleaning up Dired
|
||||||
|
(setf dired-kill-when-opening-new-dired-buffer t)
|
||||||
|
(add-hook 'dired-mode-hook #'dired-hide-details-mode)
|
||||||
|
|
||||||
|
;; Evil collection
|
||||||
|
(with-eval-after-load 'emms (evil-collection-emms-setup))
|
||||||
|
(with-eval-after-load 'pdf-view (evil-collection-pdf-setup))
|
||||||
|
(with-eval-after-load 'ibuffer (evil-collection-ibuffer-setup))
|
||||||
|
|
||||||
|
;; Custom keybinds
|
||||||
|
(spacemacs/set-leader-keys "ks" 'nil)
|
||||||
|
(spacemacs/set-leader-keys "ks" 'bookmark-set)
|
||||||
|
(spacemacs/set-leader-keys "kv" 'bookmark-save)
|
||||||
|
(spacemacs/set-leader-keys "pp" (lambda ()
|
||||||
|
(interactive)
|
||||||
|
(dat-tabs/create-project-tab)
|
||||||
|
(tab-bar-mode -1)))
|
||||||
|
(spacemacs/set-leader-keys "gd" 'magit-status)
|
||||||
|
(define-key evil-normal-state-map (kbd "C-`") 'spacemacs/shell-pop-vterm)
|
||||||
|
(spacemacs/set-leader-keys "l" nil)
|
||||||
|
(spacemacs/set-leader-keys "ld" 'consult-lsp-diagnostics))
|
||||||
|
|
||||||
|
|
||||||
|
;; Do not write anything past this comment. This is where Emacs will
|
||||||
|
;; auto-generate custom variable definitions.
|
||||||
|
(defun dotspacemacs/emacs-custom-settings ()
|
||||||
|
"Emacs custom settings.
|
||||||
|
This is an auto-generated function, do not modify its content directly, use
|
||||||
|
Emacs customize menu instead.
|
||||||
|
This function is called at the very end of Spacemacs initialization."
|
||||||
|
(custom-set-variables
|
||||||
|
;; custom-set-variables was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
'(custom-safe-themes
|
||||||
|
'("bbb13492a15c3258f29c21d251da1e62f1abb8bbd492386a673dcfab474186af" default))
|
||||||
|
'(ignored-local-variable-values '((origami-fold-style . triple-braces)))
|
||||||
|
'(package-selected-packages
|
||||||
|
'(ac-php-core ace-jump-helm-line ace-link add-node-modules-path
|
||||||
|
aggressive-indent all-the-icons auto-compile
|
||||||
|
auto-highlight-symbol auto-yasnippet bui catppuccin-theme
|
||||||
|
centaur-tabs centered-cursor-mode clean-aindent-mode closql
|
||||||
|
code-cells column-enforce-mode company company-c-headers
|
||||||
|
company-emoji company-php company-phpactor company-shell
|
||||||
|
company-web compleseus-spacemacs-help composer consult
|
||||||
|
consult-lsp consult-yasnippet counsel counsel-css
|
||||||
|
cpp-auto-include cython-mode dap-mode define-word devdocs
|
||||||
|
diminish dired-quick-sort disable-mouse disaster dotenv-mode
|
||||||
|
drag-stuff drupal-mode dumb-jump eat edit-indirect elisp-def
|
||||||
|
elisp-demos elisp-slime-nav emacsql embark embark-consult
|
||||||
|
emmet-mode emoji-cheat-sheet-plus emr esh-help
|
||||||
|
eshell-prompt-extras eshell-z eval-sexp-fu evil-anzu evil-args
|
||||||
|
evil-cleverparens evil-collection evil-easymotion evil-escape
|
||||||
|
evil-evilified-state evil-exchange evil-goggles
|
||||||
|
evil-iedit-state evil-indent-plus evil-lion evil-lisp-state
|
||||||
|
evil-matchit evil-mc evil-nerd-commenter evil-numbers
|
||||||
|
evil-surround evil-textobj-line evil-tutor evil-unimpaired
|
||||||
|
evil-visual-mark-mode evil-visualstar expand-region eyebrowse
|
||||||
|
fancy-battery fish-mode flycheck flycheck-bashate flycheck-elsa
|
||||||
|
flycheck-package flycheck-pos-tip font-utils forge geben
|
||||||
|
gendoxy ggtags gh-md ghub git-link git-messenger git-modes
|
||||||
|
git-timemachine gitignore-templates go-eldoc go-fill-struct
|
||||||
|
go-gen-test go-guru go-impl go-mode go-rename go-tag godoctor
|
||||||
|
golden-ratio google-c-style google-translate haml-mode helm
|
||||||
|
helm-ag helm-comint helm-core helm-css-scss helm-descbinds
|
||||||
|
helm-git-grep helm-ls-git helm-make helm-mode-manager helm-org
|
||||||
|
helm-projectile helm-purpose helm-swoop helm-themes helm-xref
|
||||||
|
hide-comnt highlight-indentation highlight-numbers
|
||||||
|
highlight-parentheses hl-todo holy-mode htmlize hungry-delete
|
||||||
|
hybrid-mode impatient-mode indent-guide info+ insert-shebang
|
||||||
|
inspector ivy js-doc js2-mode js2-refactor json-mode
|
||||||
|
json-navigator json-reformat json-snatcher link-hint
|
||||||
|
live-py-mode livid-mode llama load-env-vars lorem-ipsum
|
||||||
|
lsp-docker lsp-mode lsp-origami lsp-pyright lsp-treemacs lsp-ui
|
||||||
|
lua-mode macrostep magit magit-section marginalia markdown-mode
|
||||||
|
markdown-toc multi-line multi-term multi-vterm multiple-cursors
|
||||||
|
mwim nameless nerd-icons nodejs-repl npm-mode open-junk-file
|
||||||
|
orderless org-superstar origami overseer package-lint paradox
|
||||||
|
password-generator pcache pcre2el pdf-tools pdf-view-restore
|
||||||
|
persistent-scratch persistent-soft php-auto-yasnippets
|
||||||
|
php-extras php-mode php-runtime phpactor phpunit
|
||||||
|
pip-requirements pipenv pippel poetry popwin pos-tip powerline
|
||||||
|
prettier-js pug-mode py-isort pydoc pyenv-mode pylookup pytest
|
||||||
|
pythonic pyvenv quickrun rainbow-delimiters reformatter request
|
||||||
|
restart-emacs rjsx-mode sass-mode scss-mode shell-pop shfmt
|
||||||
|
simple-httpd skewer-mode slim-mode smeargle space-doc spaceline
|
||||||
|
spacemacs-purpose-popwin spacemacs-whitespace-cleanup
|
||||||
|
sphinx-doc string-edit-at-point string-inflection swiper
|
||||||
|
symbol-overlay symon tablist tagedit term-cursor terminal-here
|
||||||
|
toc-org transient treemacs-evil treemacs-icons-dired
|
||||||
|
treemacs-magit treemacs-persp treemacs-projectile treepy
|
||||||
|
typescript-mode ucs-utils undo-fu undo-fu-session unfill
|
||||||
|
unicode-fonts uuidgen vertico vi-tilde-fringe
|
||||||
|
volatile-highlights vterm vundo web-beautify
|
||||||
|
web-completion-data web-mode wfnames wgrep winum with-editor
|
||||||
|
writeroom-mode ws-butler xcscope yaml yasnippet
|
||||||
|
yasnippet-snippets))
|
||||||
|
'(safe-local-variable-values
|
||||||
|
'((js2-basic-offset . 2) (web-mode-indent-style . 2)
|
||||||
|
(web-mode-block-padding . 2) (web-mode-script-padding . 2)
|
||||||
|
(web-mode-style-padding . 2) (typescript-backend . tide)
|
||||||
|
(typescript-backend . lsp) (javascript-backend . tide)
|
||||||
|
(javascript-backend . tern) (javascript-backend . lsp))))
|
||||||
|
(custom-set-faces
|
||||||
|
;; custom-set-faces was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
;; '(company-tooltip-selection ((t (:background "#ffffff" :foreground "#43242B" :weight bold))))
|
||||||
|
;; '(dired-directory ((t (:inherit bold :background "#1f1f28" :foreground "#4f97d7"))))
|
||||||
|
;; '(font-lock-comment-face ((t (:foreground "#727169" :background "#1f1f28" :slant italic))))
|
||||||
|
;; '(minibuffer-prompt ((t (:inherit bold :background "#1f1f28" :foreground "#E6C384"))))
|
||||||
|
'(org-block ((t (:inherit shadow :extend t :background "#010F1D"))))
|
||||||
|
'(org-block-begin-line ((t (:inherit org-meta-line :extend t :background "#1f1f28" :foreground "#7FB4CA" :slant italic))))
|
||||||
|
'(org-block-end-line ((t (:inherit org-meta-line :extend t :background "#1f1f28" :foreground "#FF5D62" :slant italic))))
|
||||||
|
'(org-level-1 ((t (:inherit outline-1 :height 1.7))))
|
||||||
|
'(org-level-2 ((t (:inherit outline-2 :height 1.5))))
|
||||||
|
'(org-level-3 ((t (:inherit outline-3 :height 1.3))))
|
||||||
|
'(org-level-4 ((t (:inherit outline-4 :height 1.2))))
|
||||||
|
'(org-level-5 ((t (:inherit outline-5 :height 1.1))))
|
||||||
|
'(org-level-6 ((t (:inherit outline-6 :height 1.1))))
|
||||||
|
'(org-level-7 ((t (:inherit outline-7 :height 1.1))))
|
||||||
|
'(org-level-8 ((t (:inherit outline-8 :height 1.1))))
|
||||||
|
'(org-level-9 ((t (:inherit outline-9 :height 1.1)))))
|
||||||
|
)
|
77
config/zathurarc
Normal file
77
config/zathurarc
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
map i recolor
|
||||||
|
map h navigate previous
|
||||||
|
map l navigate next
|
||||||
|
map <Left> navigate previous
|
||||||
|
map <Right> navigate next
|
||||||
|
map J zoom out
|
||||||
|
map K zoom in
|
||||||
|
|
||||||
|
set font "Iosudo Bold 10"
|
||||||
|
|
||||||
|
set window-height 3000
|
||||||
|
set window-width 3000
|
||||||
|
set window-title-basename true
|
||||||
|
set window-title-page true
|
||||||
|
|
||||||
|
set adjust-open "width"
|
||||||
|
|
||||||
|
set selection-clipboard clipboard
|
||||||
|
set selection-notification false
|
||||||
|
|
||||||
|
set statusbar-basename true
|
||||||
|
|
||||||
|
set guioptions n
|
||||||
|
|
||||||
|
set scroll-page-aware true
|
||||||
|
|
||||||
|
set scroll-full-overlap 0.01
|
||||||
|
|
||||||
|
set scroll-step 100
|
||||||
|
|
||||||
|
####### COLOR SCHEME #######
|
||||||
|
set notification-error-bg rgba(255,85,85,1) # Red
|
||||||
|
set notification-error-fg rgba(248,248,242,1) # Foreground
|
||||||
|
set notification-warning-bg rgba(255,184,108,1) # Orange
|
||||||
|
set notification-warning-fg rgba(68,71,90,1) # Selection
|
||||||
|
set notification-bg rgba(40,42,54,1) # Background
|
||||||
|
set notification-fg rgba(248,248,242,1) # Foreground
|
||||||
|
|
||||||
|
set completion-bg rgba(40,42,54,1) # Background
|
||||||
|
set completion-fg rgba(98,114,164,1) # Comment
|
||||||
|
set completion-group-bg rgba(40,42,54,1) # Background
|
||||||
|
set completion-group-fg rgba(98,114,164,1) # Comment
|
||||||
|
set completion-highlight-bg rgba(68,71,90,1) # Selection
|
||||||
|
set completion-highlight-fg rgba(248,248,242,1) # Foreground
|
||||||
|
|
||||||
|
set index-bg rgba(40,42,54,1) # Background
|
||||||
|
set index-fg rgba(248,248,242,1) # Foreground
|
||||||
|
set index-active-bg rgba(68,71,90,1) # Current Line
|
||||||
|
set index-active-fg rgba(248,248,242,1) # Foreground
|
||||||
|
|
||||||
|
set inputbar-bg rgba(40,42,54,1) # Background
|
||||||
|
set inputbar-fg rgba(248,248,242,1) # Foreground
|
||||||
|
set statusbar-bg rgba(40,42,54,1) # Background
|
||||||
|
set statusbar-fg rgba(248,248,242,1) # Foreground
|
||||||
|
|
||||||
|
set highlight-color rgba(255,184,108,0.5) # Orange
|
||||||
|
set highlight-active-color rgba(255,121,198,0.5) # Pink
|
||||||
|
|
||||||
|
set default-bg rgba(40,42,54,1) # Background
|
||||||
|
set default-fg rgba(248,248,242,1) # Foreground
|
||||||
|
|
||||||
|
set render-loading true
|
||||||
|
set render-loading-fg rgba(40,42,54,1) # Background
|
||||||
|
set render-loading-bg rgba(248,248,242,1) # Foreground
|
||||||
|
|
||||||
|
#
|
||||||
|
# Recolor mode settings
|
||||||
|
#
|
||||||
|
|
||||||
|
set recolor-lightcolor rgba(40,42,54,1) # Background
|
||||||
|
set recolor-darkcolor rgba(248,248,242,1) # Foreground
|
||||||
|
|
||||||
|
#
|
||||||
|
# Startup options
|
||||||
|
#
|
||||||
|
set adjust-open width
|
||||||
|
# set recolor true
|
91
flake.lock
generated
Normal file
91
flake.lock
generated
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747688838,
|
||||||
|
"narHash": "sha256-FZq4/3OtGV/cti9Vccsy2tGSUrxTO4hkDF9oeGRTen4=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "45c2985644b60ab64de2a2d93a4d132ecb87cf66",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"zen-browser",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747565775,
|
||||||
|
"narHash": "sha256-B6jmKHUEX1jxxcdoYHl7RVaeohtAVup8o3nuVkzkloA=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "97118a310eb8e13bc1b9b12d67267e55b7bee6c8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747542820,
|
||||||
|
"narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"zen-browser": "zen-browser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zen-browser": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747658502,
|
||||||
|
"narHash": "sha256-7SunK8XumGZz+ITBmOMVEHqrCFtP0hAyydftLkXqnw0=",
|
||||||
|
"owner": "0xc000022070",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"rev": "d4005e943d4276023fb81d598811c9ab04d141d0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "0xc000022070",
|
||||||
|
"repo": "zen-browser-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
29
flake.nix
Normal file
29
flake.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
description = "Dat's flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
zen-browser = {
|
||||||
|
url = "github:0xc000022070/zen-browser-flake";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, ... } @ inputs:
|
||||||
|
{
|
||||||
|
nixosConfigurations = {
|
||||||
|
datNix = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
./system/configuration.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
9
misc/camera.desktop
Executable file
9
misc/camera.desktop
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Type=Application
|
||||||
|
Name=MPV Camera
|
||||||
|
Icon=camera
|
||||||
|
Exec=mpv av://v4l2:/dev/video0 --profile=low-latency --untimed --no-osc --cache=no --profile=low-latency
|
||||||
|
Comment=Camera App Using MPV
|
||||||
|
Terminal=false
|
||||||
|
StartupWMClass=cheese
|
8
misc/nsxiv.desktop
Normal file
8
misc/nsxiv.desktop
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=nsxiv
|
||||||
|
GenericName=Image Viewer
|
||||||
|
Exec=nsxiv -ab %F
|
||||||
|
MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/png;image/tiff;image/x-bmp;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-tga;image/x-xpixmap;image/webp;image/heic;image/svg+xml;application/postscript;image/jp2;image/jxl;image/avif;image/heif;
|
||||||
|
NoDisplay=true
|
||||||
|
Icon=nsxiv
|
12
system/audio.nix
Normal file
12
system/audio.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
services = {
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio.enable = false;
|
||||||
|
};
|
||||||
|
}
|
23
system/boot.nix
Normal file
23
system/boot.nix
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
systemd-boot.enable = false;
|
||||||
|
efi.canTouchEfiVariables = false;
|
||||||
|
efi.efiSysMountPoint = "/boot";
|
||||||
|
grub = {
|
||||||
|
efiSupport = true;
|
||||||
|
efiInstallAsRemovable = true;
|
||||||
|
extraEntriesBeforeNixOS = false;
|
||||||
|
configurationLimit = 8;
|
||||||
|
device = "nodev";
|
||||||
|
extraEntries = ''
|
||||||
|
menuentry "Windows 10" {
|
||||||
|
search --fs-uuid --no-floppy --set=root E00B-A178
|
||||||
|
chainloader ($root)/EFI/Microsoft/Boot/bootmgfw.efi
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
supportedFilesystems = [ "ntfs" ];
|
||||||
|
};
|
||||||
|
}
|
147
system/configuration.nix
Normal file
147
system/configuration.nix
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
{ pkgs, inputs, options, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ # Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./boot.nix
|
||||||
|
./filesystems.nix
|
||||||
|
./flatpak.nix
|
||||||
|
./audio.nix
|
||||||
|
./devtools.nix
|
||||||
|
./fontconfig.nix
|
||||||
|
./localisation.nix
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
];
|
||||||
|
|
||||||
|
### NETWORKING
|
||||||
|
networking = {
|
||||||
|
hostName = "dpv";
|
||||||
|
networkmanager.enable = true;
|
||||||
|
timeServers = options.networking.timeServers.default ++ [ "time.google.com" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
### SERVICES
|
||||||
|
services = {
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
displayManager.lightdm.enable = true;
|
||||||
|
desktopManager.cinnamon.enable = true;
|
||||||
|
|
||||||
|
xkb.layout = "us";
|
||||||
|
xkb.variant = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
ntp.enable = true;
|
||||||
|
|
||||||
|
## Daemons
|
||||||
|
printing.enable = true;
|
||||||
|
openssh.enable = true;
|
||||||
|
|
||||||
|
### Clipboard
|
||||||
|
greenclip = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.haskellPackages.greenclip;
|
||||||
|
};
|
||||||
|
|
||||||
|
envfs.enable = true;
|
||||||
|
gvfs.enable = true;
|
||||||
|
tumbler.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||||
|
config.common.default = "gtk";
|
||||||
|
};
|
||||||
|
|
||||||
|
### HARDWARE
|
||||||
|
hardware = {
|
||||||
|
graphics = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [ intel-media-driver ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
### SECURITY
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
### USERS
|
||||||
|
users = {
|
||||||
|
groups.libvirtd.members = [ "dpv" ];
|
||||||
|
users.dpv = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "dpv";
|
||||||
|
extraGroups = [ "networkmanager" "wheel" "libvirtd" ];
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
packages = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
### PROGRAMS
|
||||||
|
programs = {
|
||||||
|
firefox.enable = false;
|
||||||
|
ssh.startAgent = true;
|
||||||
|
zsh.enable = true;
|
||||||
|
xfconf.enable = true;
|
||||||
|
thunar = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [
|
||||||
|
pkgs.xfce.thunar-archive-plugin
|
||||||
|
pkgs.xfce.thunar-volman
|
||||||
|
pkgs.xfce.thunar-media-tags-plugin
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
flatpak.enable = true;
|
||||||
|
|
||||||
|
### UNFREE PACKAGES
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
### PACKAGES TO INSTALL IN A SYSTEM
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
fastfetch btop htop wget fzf ripgrep
|
||||||
|
obsidian metasploit google-chrome home-manager
|
||||||
|
xclip sqlite lsd gpick nsxiv pulseaudio
|
||||||
|
mpc brightnessctl sdcv speedcrunch screenkey bitwarden-desktop
|
||||||
|
keepassxc rustup gcc gnumake clang-tools nodejs pnpm
|
||||||
|
imagemagick pandoc nixd dbeaver-bin gdu sl pavucontrol
|
||||||
|
ffmpeg ffmpegthumbnailer p7zip rar unrar zip unzip dig nix-du
|
||||||
|
nh graphviz libnotify
|
||||||
|
|
||||||
|
inputs.zen-browser.packages.${pkgs.system}.default
|
||||||
|
];
|
||||||
|
|
||||||
|
### ENV
|
||||||
|
environment.variables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
### DEV
|
||||||
|
devtools.postgres.enable = true;
|
||||||
|
devtools.virtualisation.enable = true;
|
||||||
|
devtools.docker.enable = true;
|
||||||
|
|
||||||
|
### HOME MANAGER
|
||||||
|
home-manager = {
|
||||||
|
extraSpecialArgs = { inherit inputs; };
|
||||||
|
users = {
|
||||||
|
dpv = import ../user/home.nix;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
### MORE NIX
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "daily";
|
||||||
|
options = "--delete-older-than 10d";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
69
system/devtools.nix
Normal file
69
system/devtools.nix
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkOption mkIf mkMerge types;
|
||||||
|
cfg = config.devtools;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.devtools = {
|
||||||
|
postgres.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
virtualisation.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
docker.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
services.postgresql = {
|
||||||
|
enable = cfg.postgres.enable;
|
||||||
|
package = pkgs.postgresql_17;
|
||||||
|
ensureDatabases = [ "dpv" ];
|
||||||
|
ensureUsers = [
|
||||||
|
{
|
||||||
|
name = "dpv";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
authentication = lib.mkForce ''
|
||||||
|
# Generated file; do not edit!
|
||||||
|
# TYPE DATABASE USER ADDRESS METHOD
|
||||||
|
local all all trust
|
||||||
|
host all all 127.0.0.1/32 trust
|
||||||
|
host all all ::1/128 trust
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation = mkMerge [
|
||||||
|
(mkIf cfg.virtualisation.enable {
|
||||||
|
libvirtd = {
|
||||||
|
enable = true;
|
||||||
|
qemu = {
|
||||||
|
swtpm.enable = true;
|
||||||
|
ovmf.enable = true;
|
||||||
|
ovmf.packages = [ pkgs.OVMFFull.fd ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
spiceUSBRedirection.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
(mkIf cfg.docker.enable {
|
||||||
|
docker = {
|
||||||
|
enable = true;
|
||||||
|
rootless = {
|
||||||
|
enable = true;
|
||||||
|
setSocketVariable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.virt-manager.enable = cfg.virtualisation.enable;
|
||||||
|
};
|
||||||
|
}
|
14
system/filesystems.nix
Normal file
14
system/filesystems.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
fileSystems = {
|
||||||
|
"/ar1" = {
|
||||||
|
device = "/dev/disk/by-uuid/AEDEBC24DEBBE2AF";
|
||||||
|
fsType = "ntfs-3g";
|
||||||
|
options = [ "rw" "uid=1000" ];
|
||||||
|
};
|
||||||
|
"/win" = {
|
||||||
|
device = "/dev/disk/by-uuid/DA820CCE820CB155";
|
||||||
|
fsType = "ntfs-3g";
|
||||||
|
options = [ "rw" "uid=1000" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
26
system/flatpak.nix
Normal file
26
system/flatpak.nix
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.flatpak;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.flatpak = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
systemd.services = {
|
||||||
|
flatpak-repo = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = [ pkgs.flatpak ];
|
||||||
|
script = ''
|
||||||
|
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
15
system/fontconfig.nix
Normal file
15
system/fontconfig.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
inter
|
||||||
|
nerd-fonts.iosevka
|
||||||
|
nerd-fonts.symbols-only
|
||||||
|
];
|
||||||
|
fonts.fontconfig = {
|
||||||
|
defaultFonts = {
|
||||||
|
serif = [ "Liberation Serif" ];
|
||||||
|
sansSerif = [ "Inter" "SF Pro Display" ];
|
||||||
|
monospace = [ "Iosevka Nerd Font" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
40
system/hardware-configuration.nix
Normal file
40
system/hardware-configuration.nix
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "nvme" "usbhid" "sd_mod" "rtsx_usb_sdmmc" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/740252ff-39d8-416e-8f04-73e837810417";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/A717-5D98";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/33b020e2-7859-49d2-85e4-b0c8a778ab1d"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
19
system/localisation.nix
Normal file
19
system/localisation.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
time.timeZone = "Asia/Manila";
|
||||||
|
time.hardwareClockInLocalTime = true;
|
||||||
|
|
||||||
|
i18n = {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
44
user/docs.nix
Normal file
44
user/docs.nix
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.docs;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ ./subs/sioyek.nix ];
|
||||||
|
|
||||||
|
options.docs = {
|
||||||
|
zathura.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
sioyek.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
libreoffice.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
foliate.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
subs.sioyek.enable = cfg.sioyek.enable;
|
||||||
|
|
||||||
|
programs.zathura = {
|
||||||
|
enable = cfg.zathura.enable;
|
||||||
|
extraConfig = builtins.readFile ../config/zathurarc;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.foliate = {
|
||||||
|
enable = cfg.foliate.enable;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = lib.mkIf cfg.libreoffice.enable [
|
||||||
|
pkgs.libreoffice-fresh
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
40
user/editors.nix
Normal file
40
user/editors.nix
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkOption types;
|
||||||
|
|
||||||
|
cfg = config.editors;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./subs/zed.nix
|
||||||
|
./subs/neovim.nix
|
||||||
|
./subs/emacs.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.editors = {
|
||||||
|
emacs.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
neovim.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
zed.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
vscode.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
subs.zed.enable = cfg.zed.enable;
|
||||||
|
subs.neovim.enable = cfg.neovim.enable;
|
||||||
|
subs.emacs.enable = cfg.emacs.enable;
|
||||||
|
programs.vscode.enable = cfg.vscode.enable;
|
||||||
|
};
|
||||||
|
}
|
102
user/home.nix
Normal file
102
user/home.nix
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./shells.nix
|
||||||
|
./music.nix
|
||||||
|
./theming.nix
|
||||||
|
./terminals.nix
|
||||||
|
./termtools.nix
|
||||||
|
./editors.nix
|
||||||
|
./docs.nix
|
||||||
|
./utils.nix
|
||||||
|
./subs/mpv.nix
|
||||||
|
./subs/git.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home = {
|
||||||
|
username = "dpv";
|
||||||
|
homeDirectory = "/home/dpv";
|
||||||
|
stateVersion = "24.11";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
qbittorrent yt-dlp typst obs-studio krita
|
||||||
|
jetbrains.idea-community astro-language-server
|
||||||
|
basedpyright emmet-language-server lua-language-server
|
||||||
|
tailwindcss-language-server typescript-language-server
|
||||||
|
ripcord abaddon netcat-gnu nmap nerd-fonts.jetbrains-mono
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".ideavimrc".source = ../config/ideavimrc;
|
||||||
|
".local/bin/books".source = ../bin/books;
|
||||||
|
".local/bin/clipboard".source = ../bin/clipboard;
|
||||||
|
".local/bin/define".source = ../bin/define;
|
||||||
|
".local/bin/keyboard-toggle".source = ../bin/keyboard-toggle;
|
||||||
|
".local/bin/show_colors".source = ../bin/show_colors;
|
||||||
|
".local/bin/show_def".source = ../bin/show_def;
|
||||||
|
".local/bin/stm".source = ../bin/stm;
|
||||||
|
".local/bin/tmux-sessionizer".source = ../bin/tmux-sessionizer;
|
||||||
|
".local/bin/touchpad-toggle-xinput".source = ../bin/touchpad-toggle-xinput;
|
||||||
|
".local/share/applications/camera.desktop".source = ../misc/camera.desktop;
|
||||||
|
".local/share/applications/nsxiv.desktop".source = ../misc/nsxiv.desktop;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.activation.createDirs = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||||
|
mkdir -p "${config.home.homeDirectory}/dev/gitlab"
|
||||||
|
mkdir -p "${config.home.homeDirectory}/Documents/org"
|
||||||
|
mkdir -p "${config.home.homeDirectory}/.local/src"
|
||||||
|
'';
|
||||||
|
|
||||||
|
### SESSION ENV
|
||||||
|
home.sessionPath = [
|
||||||
|
"$HOME/.local/bin"
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
"GTK_THEME" = "Adwaita:dark";
|
||||||
|
};
|
||||||
|
|
||||||
|
### DOCK
|
||||||
|
theming.dock.enable = true;
|
||||||
|
theming.dock.autostart = true;
|
||||||
|
|
||||||
|
music = {
|
||||||
|
enable = true;
|
||||||
|
directory = "/ar1/Music";
|
||||||
|
ncmpcpp.enable = true;
|
||||||
|
rmpc.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
editors = {
|
||||||
|
neovim.enable = true;
|
||||||
|
emacs.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
zed.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
terminals.ghostty.enable = true;
|
||||||
|
terminals.alacritty.enable = true;
|
||||||
|
|
||||||
|
shells.fish.enable = false;
|
||||||
|
|
||||||
|
termtools.tmux.enable = true;
|
||||||
|
termtools.zoxide.enable = true;
|
||||||
|
|
||||||
|
docs.zathura.enable = true;
|
||||||
|
docs.sioyek.enable = true;
|
||||||
|
docs.libreoffice.enable = true;
|
||||||
|
docs.foliate.enable = true;
|
||||||
|
|
||||||
|
utils.rofi.enable = true;
|
||||||
|
utils.sxhkd.enable = true;
|
||||||
|
utils.flameshot.enable = true;
|
||||||
|
|
||||||
|
programs.vesktop.enable = true;
|
||||||
|
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
}
|
101
user/music.nix
Normal file
101
user/music.nix
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkIf mkOption types;
|
||||||
|
|
||||||
|
cfg = config.music;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.music = {
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''Enables MPD server'';
|
||||||
|
};
|
||||||
|
directory = mkOption {
|
||||||
|
default = "~/Music";
|
||||||
|
type = types.str;
|
||||||
|
description = ''Path to your music directory'';
|
||||||
|
};
|
||||||
|
ncmpcpp.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''Enables NCMPCPP (MPD Client)'';
|
||||||
|
};
|
||||||
|
rmpc.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''
|
||||||
|
Enables RMPC (Rusty Music Player Client) (another MPD Client)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
services.mpd = {
|
||||||
|
enable = cfg.enable;
|
||||||
|
musicDirectory = cfg.directory;
|
||||||
|
extraConfig = builtins.readFile ../config/mpd.conf;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = mkIf cfg.enable {
|
||||||
|
ncmpcpp = {
|
||||||
|
enable = cfg.ncmpcpp.enable;
|
||||||
|
bindings = [
|
||||||
|
{ key = "k"; command = "scroll_up"; }
|
||||||
|
{ key = "j"; command = "scroll_down"; }
|
||||||
|
{ key = "l"; command = "next_column"; }
|
||||||
|
{ key = "l"; command = "slave_screen"; }
|
||||||
|
{ key = "h"; command = "previous_column"; }
|
||||||
|
{ key = "h"; command = "master_screen"; }
|
||||||
|
{ key = "G"; command = "move_end"; }
|
||||||
|
{ key = "g"; command = "move_home"; }
|
||||||
|
{ key = "alt-l"; command = "show_lyrics"; }
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
ncmpcpp_directory = "~/.config/ncmpcpp";
|
||||||
|
system_encoding = "utf-8";
|
||||||
|
visualizer_output_name = "my_fifo";
|
||||||
|
visualizer_type = "ellipse";
|
||||||
|
visualizer_in_stereo = "yes";
|
||||||
|
visualizer_look = "▀▋";
|
||||||
|
visualizer_color = "blue, cyan, green, yellow, magenta, red, black";
|
||||||
|
playlist_display_mode = "columns";
|
||||||
|
media_library_primary_tag = "album_artist";
|
||||||
|
media_library_hide_album_dates = true;
|
||||||
|
playlist_shorten_total_times = "yes";
|
||||||
|
playlist_editor_display_mode = "columns";
|
||||||
|
lyrics_fetchers = "genius, internet";
|
||||||
|
browser_display_mode = "columns";
|
||||||
|
search_engine_display_mode = "columns";
|
||||||
|
autocenter_mode = "yes";
|
||||||
|
mouse_support = "yes";
|
||||||
|
centered_cursor = "yes";
|
||||||
|
follow_now_playing_lyrics = "yes";
|
||||||
|
display_bitrate = "no";
|
||||||
|
external_editor = "vim";
|
||||||
|
progressbar_elapsed_color = "white";
|
||||||
|
progressbar_color = "black";
|
||||||
|
user_interface = "alternative";
|
||||||
|
header_visibility = "no";
|
||||||
|
statusbar_visibility = "yes";
|
||||||
|
titles_visibility = "yes";
|
||||||
|
progressbar_look = "━━";
|
||||||
|
statusbar_color = "white";
|
||||||
|
enable_window_title = "yes";
|
||||||
|
now_playing_prefix = "$b$1";
|
||||||
|
now_playing_suffix = "$8$/b";
|
||||||
|
song_list_format = "$1 $2%A$8 - $8%t $R $3%l ";
|
||||||
|
song_status_format = "$b$7♫ $2%a $8- $3%b $8- $8%t ";
|
||||||
|
song_window_title_format = " {%A} - {%t}";
|
||||||
|
song_columns_list_format = "(23)[white]{a} (26)[yellow]{t|f} (40)[green]{b} (4)[blue]{l}";
|
||||||
|
startup_slave_screen = "playlist";
|
||||||
|
startup_slave_screen_focus = "yes";
|
||||||
|
locked_screen_width_part = "50";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
rmpc.enable = cfg.rmpc.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
81
user/shells.nix
Normal file
81
user/shells.nix
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkIf mkOption mkMerge types;
|
||||||
|
|
||||||
|
cfg = config.shells;
|
||||||
|
aliases = {
|
||||||
|
"ls" = "lsd --color=never";
|
||||||
|
"ll" = "lsd -la --color=never";
|
||||||
|
"llt" = "lsd --tree --color=never";
|
||||||
|
"cp" = "cp --verbose";
|
||||||
|
"rm" = "rm --verbose";
|
||||||
|
"mv" = "mv --verbose";
|
||||||
|
"mkdir" = "mkdir --verbose";
|
||||||
|
"v" = "nvim";
|
||||||
|
"music" = "ncmpcpp";
|
||||||
|
"tls" = "tmux ls";
|
||||||
|
"tkl" = "tmux kill-session -t";
|
||||||
|
"tch" = "tmux attach";
|
||||||
|
"ytmusic" = "yt-dlp -f 'ba' -x --audio-format mp3 -o '%(id)s.%(ext)s'";
|
||||||
|
"ytvid" = "yt-dlp -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'";
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.shells = {
|
||||||
|
fish.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''Enables FISH'';
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh.enable = mkOption {
|
||||||
|
default = true;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''Enables ZSH'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.fish = {
|
||||||
|
enable = cfg.fish.enable;
|
||||||
|
shellAliases = aliases;
|
||||||
|
plugins = [
|
||||||
|
{ name = "hydro"; src = pkgs.fishPlugins.hydro.src; }
|
||||||
|
];
|
||||||
|
functions = {
|
||||||
|
__fish_command_not_found_handler = {
|
||||||
|
body = "__fish_default_command_not_found_handler $argv[1]";
|
||||||
|
onEvent = "fish_command_not_found";
|
||||||
|
};
|
||||||
|
|
||||||
|
su = "command su --shell=/usr/bin/fish $argv";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
enable = cfg.zsh.enable;
|
||||||
|
enableCompletion = true;
|
||||||
|
defaultKeymap = "emacs";
|
||||||
|
shellAliases = aliases;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
history.path = "${config.xdg.dataHome}/zsh/zsh_history";
|
||||||
|
initContent = ''
|
||||||
|
[ -f ~/.p10k.zsh ]; source ~/.p10k.zsh
|
||||||
|
'';
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "powerlevel10k";
|
||||||
|
src = pkgs.zsh-powerlevel10k;
|
||||||
|
file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".p10k.zsh" = mkIf cfg.zsh.enable {
|
||||||
|
source = ../config/p10k-config;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
52
user/subs/alacritty.nix
Normal file
52
user/subs/alacritty.nix
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.subs.alacritty;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.subs.alacritty.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general.live_config_reload = true;
|
||||||
|
general.import = [
|
||||||
|
"~/.config/alacritty/themes/dracula.toml"
|
||||||
|
];
|
||||||
|
colors.draw_bold_text_with_bright_colors = true;
|
||||||
|
font = {
|
||||||
|
size = 15;
|
||||||
|
normal = {
|
||||||
|
family = "Iosevka Nerd Font";
|
||||||
|
style = "Medium";
|
||||||
|
};
|
||||||
|
italic = {
|
||||||
|
style = "Medium Italic";
|
||||||
|
};
|
||||||
|
bold = {
|
||||||
|
style = "ExtraBold";
|
||||||
|
};
|
||||||
|
bold_italic = {
|
||||||
|
style = "ExtraBold Italic";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
scrolling = {
|
||||||
|
history = 100000;
|
||||||
|
multiplier = 3;
|
||||||
|
};
|
||||||
|
window = {
|
||||||
|
decorations = "full";
|
||||||
|
dynamic_padding = false;
|
||||||
|
dynamic_title = true;
|
||||||
|
startup_mode = "Maximized";
|
||||||
|
padding.x = 0;
|
||||||
|
padding.y = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
25
user/subs/emacs.nix
Normal file
25
user/subs/emacs.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.subs.emacs;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.subs.emacs.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.emacs.enable = true;
|
||||||
|
services.emacs = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.emacs;
|
||||||
|
client.enable = true;
|
||||||
|
client.arguments = [ "-ca" ];
|
||||||
|
startWithUserSession = "graphical";
|
||||||
|
};
|
||||||
|
home.file = {
|
||||||
|
".spacemacs".source = ../../config/spacemacs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
47
user/subs/ghostty.nix
Normal file
47
user/subs/ghostty.nix
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.subs.ghostty;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.subs.ghostty.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
settings = {
|
||||||
|
font-family = "Iosevka Nerd Font";
|
||||||
|
font-size = 14;
|
||||||
|
theme = "ghostty-dracula";
|
||||||
|
clipboard-read = "allow";
|
||||||
|
clipboard-write = "allow";
|
||||||
|
window-padding-x = 0;
|
||||||
|
window-padding-y = 0;
|
||||||
|
window-theme = "system";
|
||||||
|
window-decoration = true;
|
||||||
|
window-padding-balance = true;
|
||||||
|
window-new-tab-position = "end";
|
||||||
|
gtk-single-instance = true;
|
||||||
|
gtk-titlebar = true;
|
||||||
|
gtk-titlebar-hide-when-maximized = true;
|
||||||
|
gtk-adwaita = false;
|
||||||
|
gtk-wide-tabs = false;
|
||||||
|
confirm-close-surface = false;
|
||||||
|
keybind = [
|
||||||
|
"ctrl+shift+h=goto_split:left"
|
||||||
|
"ctrl+shift+j=goto_split:down"
|
||||||
|
"ctrl+shift+k=goto_split:up"
|
||||||
|
"ctrl+shift+l=goto_split:right"
|
||||||
|
"ctrl+alt+h=new_split:left"
|
||||||
|
"ctrl+alt+j=new_split:down"
|
||||||
|
"ctrl+alt+k=new_split:up"
|
||||||
|
"ctrl+alt+l=new_split:right"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
42
user/subs/git.nix
Normal file
42
user/subs/git.nix
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "datsudo";
|
||||||
|
userEmail = "76833632+datsudo@users.noreply.github.com";
|
||||||
|
includes = [
|
||||||
|
{
|
||||||
|
condition = "gitdir:~/dev/gitlab/";
|
||||||
|
contents = {
|
||||||
|
user = {
|
||||||
|
name = "datsudo";
|
||||||
|
email = "11058167-Datsudo@users.noreply.gitlab.com";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
column.ui = "auto";
|
||||||
|
branch.sort = "-committerdate";
|
||||||
|
tag.sort = "version:refname";
|
||||||
|
user.signingkey = "~/.ssh/id_ed25519.pub";
|
||||||
|
diff = {
|
||||||
|
algorithm = "histogram";
|
||||||
|
colorMoved = "plain";
|
||||||
|
mnemonicPrefix = true;
|
||||||
|
renames = true;
|
||||||
|
};
|
||||||
|
push.autoSetupRemote = true;
|
||||||
|
fetch = {
|
||||||
|
prune = true;
|
||||||
|
pruneTags = true;
|
||||||
|
all = true;
|
||||||
|
};
|
||||||
|
gpg = {
|
||||||
|
format = "ssh";
|
||||||
|
};
|
||||||
|
help.autocorrect = "prompt";
|
||||||
|
commit.verbose = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
16
user/subs/mpv.nix
Normal file
16
user/subs/mpv.nix
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
programs.mpv = {
|
||||||
|
enable = true;
|
||||||
|
bindings = {
|
||||||
|
"ALT+k" = "add sub-scale +0.1";
|
||||||
|
"ALT+j" = "add sub-scale -0.1";
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
"sub-scale" = "0.60";
|
||||||
|
"interpolation" = true;
|
||||||
|
"tscale" = "oversample";
|
||||||
|
"sub-auto" = "fuzzy";
|
||||||
|
"force-window" = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
29
user/subs/neovim.nix
Normal file
29
user/subs/neovim.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.subs.neovim;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.subs.neovim.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
vimdiffAlias = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".config/nvim/init.lua".source = ../../config/nvim/init.lua;
|
||||||
|
".config/nvim/after" = { source = ../../config/nvim/after; recursive = true; };
|
||||||
|
".config/nvim/lsp" = { source = ../../config/nvim/lsp; recursive = true; };
|
||||||
|
".config/nvim/lua" = { source = ../../config/nvim/lua; recursive = true; };
|
||||||
|
".config/nvim/plugin" = { source = ../../config/nvim/plugin; recursive = true; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
44
user/subs/sioyek.nix
Normal file
44
user/subs/sioyek.nix
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.subs.sioyek;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.subs.sioyek.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.sioyek = {
|
||||||
|
enable = true;
|
||||||
|
bindings = {
|
||||||
|
"add_highlight" = "<unbound>";
|
||||||
|
"overview_definition" = "<unbound>";
|
||||||
|
"toggle_dark_mode" = "<unbound>";
|
||||||
|
"fit_to_page_width" = "<unbound>";
|
||||||
|
"quit" = "<unbound>";
|
||||||
|
"next_page" = "l";
|
||||||
|
"previous_page" = "h";
|
||||||
|
"toggle_custom_color" = "i";
|
||||||
|
"fit_to_page_width_ratio" = "=";
|
||||||
|
"close_window" = "q";
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
"ui_font" = "Inter";
|
||||||
|
"font_size" = "15";
|
||||||
|
"status_bar_font_size" = "10";
|
||||||
|
"fit_to_page_width_ratio" = "1.0";
|
||||||
|
"should_launch_new_window" = "1";
|
||||||
|
"show_document_name_in_statusbar" = "1";
|
||||||
|
"super_fast_search" = "1";
|
||||||
|
"collapsed_toc" = "1";
|
||||||
|
"sort_bookmarks_by_location" = "1";
|
||||||
|
"create_table_of_contents_if_not_exists" = "0";
|
||||||
|
"dark_mode_background_color" = "0.114 0.125 0.129";
|
||||||
|
"custom_background_color" = "0.114 0.125 0.129";
|
||||||
|
"startup_commands" = "fit_to_page_width_ratio,toggle_custom_color";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
56
user/subs/sxhkd.nix
Normal file
56
user/subs/sxhkd.nix
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.subs.sxhkd;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.subs.sxhkd.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.sxhkd = {
|
||||||
|
enable = true;
|
||||||
|
keybindings = {
|
||||||
|
"super + Return" = "alacritty";
|
||||||
|
"super + b" = "zen-beta";
|
||||||
|
"super + f" = "thunar";
|
||||||
|
"super + m" = "emacsclient -ca ''";
|
||||||
|
"super + t" = "flatpak run eu.betterbird.Betterbird";
|
||||||
|
"super + c" = "speedcrunch";
|
||||||
|
"super + ctrl + 1" = "/home/dpv/.local/bin/books";
|
||||||
|
"XF86MonBrightness{Up,Down}" = "brightnessctl {-q set 3%+,--min-val=2 -q set 3%-}";
|
||||||
|
"super + ctrl + {equal,minus}" = "brightnessctl {-q set 3%+,--min-val=2 -q set 3%-}";
|
||||||
|
"XF86PowerOff" = "~/.config/rofi/scripts/powermenu.sh";
|
||||||
|
"XF86Audio{Raise,Lower}Volume" = "pactl set-sink-volume @DEFAULT_SINK@ {+5%,-5%}";
|
||||||
|
"XF86Audio{Mic,_}Mute" = "pactl {set-source-mute @DEFAULT_SOURCE@,set-sink-mute @DEFAULT_SINK@} toggle";
|
||||||
|
"XF86Audio{Prev,Next}" = "mpc -q {prev,next}";
|
||||||
|
"XF86Audio{Stop,Play}" = "mpc {stop,toggle}";
|
||||||
|
"super + ctrl + {comma,period,slash}" = "mpc {-q prev,-q next,toggle}";
|
||||||
|
"alt + space" = "/home/dpv/.config/rofi/scripts/launcher.sh";
|
||||||
|
"super + shift + d" = "/home/dpv/.local/bin/define";
|
||||||
|
"super + ctrl + shift + 7" = "/home/dpv/.local/bin/keyboard-toggle";
|
||||||
|
"super + ctrl + shift + 6" = "/home/dpv/.local/bin/touchpad-toggle-xinput";
|
||||||
|
"super + shift + F8" = "setxkbmap -option 'caps:escape' && notify-send 'Caps' 'Remapped to Esc'";
|
||||||
|
"super + z" = "rofi -modi 'Clipboard:greenclip print' -show Clipboard -run-command '{cmd}' -theme ~/.config/rofi/menu.rasi";
|
||||||
|
"super + ctrl + shift + k" = "screenkey";
|
||||||
|
"ctrl + Print" = "flameshot gui";
|
||||||
|
"super + shift + p" = "flameshot gui";
|
||||||
|
"Print" = "flameshot full";
|
||||||
|
"ctrl + alt + n" = "/home/dpv/.config/rofi/scripts/powermenu.sh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.sxhkd-daemon = {
|
||||||
|
Unit = { Description = "SXHKD Daemon."; };
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" "default.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.sxhkd}/bin/sxhkd -m 1";
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
64
user/subs/tmux.nix
Normal file
64
user/subs/tmux.nix
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.subs.tmux;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.subs.tmux = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.tmux = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.tmux;
|
||||||
|
baseIndex = 1;
|
||||||
|
mouse = true;
|
||||||
|
prefix = "C-Space";
|
||||||
|
terminal = "alacritty";
|
||||||
|
plugins = with pkgs.tmuxPlugins; [
|
||||||
|
{
|
||||||
|
plugin = yank;
|
||||||
|
extraConfig = ''
|
||||||
|
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
||||||
|
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
||||||
|
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
plugin = tmux-fzf;
|
||||||
|
extraConfig = ''
|
||||||
|
TMUX_FZF_LAUNCH_KEY="z"
|
||||||
|
TMUX_FZF_PREVIEW=0
|
||||||
|
TMUX_FZF_ORDER="session|window|pane|command|keybinding"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
plugin = dracula;
|
||||||
|
extraConfig = ''
|
||||||
|
set -g @dracula-plugins "cwd ssh-session"
|
||||||
|
set -g @dracula-show-left-icon "#S"
|
||||||
|
set -g @dracula-show-powerline false
|
||||||
|
set -g @dracula-border-contrast true
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
extraConfig = ''
|
||||||
|
set -sg escape-time 10
|
||||||
|
set -g focus-events on
|
||||||
|
set -sa terminal-features ",alacritty:RGB"
|
||||||
|
set -g status-position top
|
||||||
|
set -g status-left-length 50
|
||||||
|
set -g mode-keys vi
|
||||||
|
bind-key h select-pane -L
|
||||||
|
bind-key j select-pane -D
|
||||||
|
bind-key k select-pane -U
|
||||||
|
bind-key l select-pane -R
|
||||||
|
bind-key -r f run-shell "tmux neww ~/.local/bin/tmux-sessionizer"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
132
user/subs/zed.nix
Normal file
132
user/subs/zed.nix
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.subs.zed;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
subs.zed.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.zed-editor = {
|
||||||
|
enable = true;
|
||||||
|
extensions = [
|
||||||
|
"kanagawa-themes" "modus-themes" "material-icon-theme"
|
||||||
|
"toml" "php" "dockerfile" "vue" "sql" "svelte" "scss" "lua"
|
||||||
|
"astro" "graphql" "ini" "emmet"
|
||||||
|
];
|
||||||
|
|
||||||
|
userKeymaps = [
|
||||||
|
{
|
||||||
|
context = "Workspace";
|
||||||
|
bindings = {
|
||||||
|
"alt-`" = "workspace::ToggleLeftDock";
|
||||||
|
"alt-~" = "workspace::ToggleRightDock";
|
||||||
|
"ctrl-`" = "workspace::ToggleBottomDock";
|
||||||
|
"alt-h" = "workspace::ActivatePaneLeft";
|
||||||
|
"alt-j" = "workspace::ActivatePaneDown";
|
||||||
|
"alt-k" = "workspace::ActivatePaneUp";
|
||||||
|
"alt-l" = "workspace::ActivatePaneRight";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
context = "Editor";
|
||||||
|
bindings = {
|
||||||
|
"ctrl-w" = "pane::CloseActiveItem";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
context = "VimControl && !menu";
|
||||||
|
bindings = {
|
||||||
|
"ctrl-w" = "pane::CloseActiveItem";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
context = "Editor || Pane";
|
||||||
|
bindings = {
|
||||||
|
"ctrl-alt-h" = "pane::SplitLeft";
|
||||||
|
"ctrl-alt-j" = "pane::SplitDown";
|
||||||
|
"ctrl-alt-k" = "pane::SplitUp";
|
||||||
|
"ctrl-alt-l" = "pane::SplitRight";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
userSettings = {
|
||||||
|
vim_mode = true;
|
||||||
|
base_keymap = "VSCode";
|
||||||
|
diagnostics = {
|
||||||
|
include_warnings = false;
|
||||||
|
inline.enabled = true;
|
||||||
|
};
|
||||||
|
tab_size = 4;
|
||||||
|
hard_tabs = true;
|
||||||
|
git.inline_blame.enabled = false;
|
||||||
|
ui_font_family = "Inter";
|
||||||
|
ui_font_size = 16;
|
||||||
|
buffer_font_family = "Iosevka Nerd Font";
|
||||||
|
buffer_font_fallbacks = [ "Symbols Nerd Font" "Noto Color Emoji" ];
|
||||||
|
buffer_font_weight = 500;
|
||||||
|
buffer_font_size = 18;
|
||||||
|
buffer_line_height.custom = 1.3;
|
||||||
|
terminal = {
|
||||||
|
font_family = "Iosevka Nerd Font";
|
||||||
|
font_weight = 500;
|
||||||
|
font_size = 16;
|
||||||
|
font_fallbacks = [ "Symbols Nerd Font" "Noto Color Emoji" ];
|
||||||
|
working_directory = "current_project_directory";
|
||||||
|
toolbar.breadcrumbs = false;
|
||||||
|
env = {
|
||||||
|
"ZED" = "1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
icon_theme = "Material Icon Theme";
|
||||||
|
theme = {
|
||||||
|
mode = "dark";
|
||||||
|
light = "Modus Operandi Deuteranopia";
|
||||||
|
dark = "Kanagawa";
|
||||||
|
};
|
||||||
|
toolbar.quick_actions = false;
|
||||||
|
tab_bar.show = false;
|
||||||
|
scrollbar = {
|
||||||
|
show = "never";
|
||||||
|
git_diff = false;
|
||||||
|
};
|
||||||
|
gutter = {
|
||||||
|
code_actions = true;
|
||||||
|
runnables = true;
|
||||||
|
folds = false;
|
||||||
|
line_numbers = true;
|
||||||
|
};
|
||||||
|
inlay_hints = {
|
||||||
|
enabled = true;
|
||||||
|
show_type_hints = true;
|
||||||
|
};
|
||||||
|
telemetry = {
|
||||||
|
diagnostics = false;
|
||||||
|
metrics = false;
|
||||||
|
};
|
||||||
|
languages = {
|
||||||
|
CSS.tab_size = 2;
|
||||||
|
HTML.tab_size = 2;
|
||||||
|
Astro.tab_size = 2;
|
||||||
|
JavaScript.tab_size = 2;
|
||||||
|
TypeScript.tab_size = 2;
|
||||||
|
TSX.tab_size = 2;
|
||||||
|
JSON.hard_tabs = false;
|
||||||
|
JSON.tab_size = 2;
|
||||||
|
YAML.hard_tabs = false;
|
||||||
|
YAML.tab_size = 2;
|
||||||
|
JSONC.hard_tabs = false;
|
||||||
|
JSONC.tab_size = 2;
|
||||||
|
TOML.tab_size = 2;
|
||||||
|
Python.hard_tabs = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
33
user/terminals.nix
Normal file
33
user/terminals.nix
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkIf mkOption types;
|
||||||
|
cfg = config.terminals;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./subs/ghostty.nix
|
||||||
|
./subs/alacritty.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.terminals = {
|
||||||
|
ghostty.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
alacritty.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
subs.ghostty.enable = cfg.ghostty.enable;
|
||||||
|
subs.alacritty.enable = cfg.alacritty.enable;
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".config/alacritty/themes/dracula.toml".source = mkIf cfg.alacritty.enable ../config/dracula.toml;
|
||||||
|
".config/ghostty/themes/ghostty-dracula".source = mkIf cfg.ghostty.enable ../config/ghostty-dracula;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
28
user/termtools.nix
Normal file
28
user/termtools.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkOption types;
|
||||||
|
cfg = config.termtools;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ ./subs/tmux.nix ];
|
||||||
|
options.termtools = {
|
||||||
|
tmux.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
zoxide.enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
subs.tmux.enable = cfg.tmux.enable;
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = cfg.zoxide.enable;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
options = [ "--cmd cd" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
63
user/theming.nix
Normal file
63
user/theming.nix
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.theming.dock;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.theming.dock = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
autostart = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
home.pointerCursor = {
|
||||||
|
x11.enable = true;
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
gtk.enable = true;
|
||||||
|
size = 20;
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
cursorTheme = {
|
||||||
|
name = "Bibata-Modern-Classic";
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
size = 20;
|
||||||
|
};
|
||||||
|
iconTheme = {
|
||||||
|
name = "Tela-dark";
|
||||||
|
package = pkgs.tela-icon-theme;
|
||||||
|
};
|
||||||
|
gtk3 = {
|
||||||
|
extraConfig.gtk-application-prefer-dark-theme = true;
|
||||||
|
};
|
||||||
|
gtk4 = {
|
||||||
|
extraConfig.gtk-application-prefer-dark-theme = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
platformTheme.name = "gtk";
|
||||||
|
style.name = "adwaita-dark";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = lib.mkIf cfg.enable [
|
||||||
|
pkgs.plank pkgs.libwnck pkgs.bamf
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.autostart = lib.mkIf cfg.autostart {
|
||||||
|
enable = true;
|
||||||
|
entries = [
|
||||||
|
"${pkgs.plank}/share/applications/plank.desktop"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
41
user/utils.nix
Normal file
41
user/utils.nix
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.utils;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ ./subs/sxhkd.nix ];
|
||||||
|
|
||||||
|
options.utils = {
|
||||||
|
rofi.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
sxhkd.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
flameshot.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.rofi.enable = cfg.rofi.enable;
|
||||||
|
|
||||||
|
subs.sxhkd.enable = cfg.sxhkd.enable;
|
||||||
|
|
||||||
|
services.flameshot = {
|
||||||
|
enable = cfg.flameshot.enable;
|
||||||
|
settings = {
|
||||||
|
General = {
|
||||||
|
savePathFixed = false;
|
||||||
|
saveAfterCopy = true;
|
||||||
|
showStartupLaunchMessage = false;
|
||||||
|
useJpgForClipboard = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user