diff --git a/.chezmoiroot b/.chezmoiroot new file mode 100644 index 0000000..5e72f75 --- /dev/null +++ b/.chezmoiroot @@ -0,0 +1 @@ +home diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..fc734e6 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 +max_line_length = 80 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false diff --git a/README.md b/README.md index 96fbdd4..50ffd72 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,31 @@ -# dotfiles +# 🏠 dotfiles My [dotfiles], managed by [chezmoi]. [dotfiles]: https://dotfiles.github.io [chezmoi]: https://chezmoi.io + +This incorporates my other configuration repositories by reference as +[chezmoi externals]: + +[chezmoi externals]: https://chezmoi.io/user-guide/include-files-from-elsewhere + +- [astronvim-config](https://github.com/nisavid/astronvim-config) + +- [zsh-config](https://github.com/nisavid/zsh-config) + +## 🛠️ Installation + +#### [Install chezmoi](https://chezmoi.io/install) + +#### Initialize chezmoi + +```shell +chezmoi init https://github.com/nisavid/dotfiles +``` + +#### Apply dotfiles + +```shell +chezmoi apply +``` diff --git a/home/.chezmoidata/catppuccin.toml b/home/.chezmoidata/catppuccin.toml new file mode 100644 index 0000000..a1353a9 --- /dev/null +++ b/home/.chezmoidata/catppuccin.toml @@ -0,0 +1,5 @@ +[catppuccin] +accent = "sapphire" +allFlavors = ["frappe", "latte", "macchiato", "mocha"] +flavor = "mocha" +refreshPeriod = "24h" diff --git a/home/.chezmoiexternals/astronvim-config.toml b/home/.chezmoiexternals/astronvim-config.toml new file mode 100644 index 0000000..f336c8c --- /dev/null +++ b/home/.chezmoiexternals/astronvim-config.toml @@ -0,0 +1,4 @@ +[".config/nvim"] +type = "git-repo" +url = "https://github.com/nisavid/astronvim-config" +refreshPeriod = "24h" diff --git a/home/.chezmoiexternals/bat-catppuccin.toml.tmpl b/home/.chezmoiexternals/bat-catppuccin.toml.tmpl new file mode 100644 index 0000000..67832cf --- /dev/null +++ b/home/.chezmoiexternals/bat-catppuccin.toml.tmpl @@ -0,0 +1,21 @@ +{{- $homePrefix := print .chezmoi.homeDir .chezmoi.pathSeparator -}} +{{- + $batThemesPath := + joinPath + (output "bat" "--config-dir" | trim) + "themes" + | trimPrefix $homePrefix +-}} +{{- $refreshPeriod := .catppuccin.refreshPeriod -}} +{{- range $i, $flavor := .catppuccin.allFlavors -}} +{{- if ne $i 0 }}{{ "\n\n" }}{{ end -}} +[{{ + joinPath + $batThemesPath + (print "catppuccin-" $flavor ".tmTheme") + | quote +}}] +refreshPeriod = {{ $refreshPeriod | quote }} +type = "file" +url = "https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20{{ $flavor | title }}.tmTheme" +{{- end }} diff --git a/home/.chezmoiexternals/bottom-catppuccin.toml.tmpl b/home/.chezmoiexternals/bottom-catppuccin.toml.tmpl new file mode 100644 index 0000000..cdd0795 --- /dev/null +++ b/home/.chezmoiexternals/bottom-catppuccin.toml.tmpl @@ -0,0 +1,4 @@ +[".cache/chezmoi/includes/bottom/colors-catppuccin-{{ .catppuccin.flavor }}.toml"] +refreshPeriod = {{ .catppuccin.refreshPeriod | quote }} +type = "file" +url = "https://github.com/catppuccin/bottom/raw/main/themes/{{ .catppuccin.flavor }}.toml" diff --git a/home/.chezmoiexternals/gitui-catppuccin.toml.tmpl b/home/.chezmoiexternals/gitui-catppuccin.toml.tmpl new file mode 100644 index 0000000..d74d7a6 --- /dev/null +++ b/home/.chezmoiexternals/gitui-catppuccin.toml.tmpl @@ -0,0 +1,9 @@ +{{- $gituiThemesPath := joinPath ".config" "gitui" -}} +{{- $refreshPeriod := .catppuccin.refreshPeriod -}} +{{- range $i, $flavor := .catppuccin.allFlavors -}} +{{- if ne $i 0 }}{{ "\n\n" }}{{ end -}} +[{{ joinPath $gituiThemesPath (print "catppuccin-" $flavor ".ron") | quote }}] +refreshPeriod = {{ $refreshPeriod | quote }} +type = "file" +url = "https://github.com/catppuccin/gitui/raw/main/theme/{{ $flavor }}.ron" +{{- end }} diff --git a/home/.chezmoiexternals/glamour-catppuccin.toml.tmpl b/home/.chezmoiexternals/glamour-catppuccin.toml.tmpl new file mode 100644 index 0000000..19c38e7 --- /dev/null +++ b/home/.chezmoiexternals/glamour-catppuccin.toml.tmpl @@ -0,0 +1,10 @@ +{{- $glamourThemesPath := joinPath ".config" "glamour" -}} +{{- $refreshPeriod := .catppuccin.refreshPeriod -}} +{{- range $i, $flavor := .catppuccin.allFlavors -}} +{{- $fileName := print "catppuccin-" $flavor ".json" -}} +{{- if ne $i 0 }}{{ "\n\n" }}{{ end -}} +[{{ joinPath $glamourThemesPath $fileName | quote }}] +refreshPeriod = {{ $refreshPeriod | quote }} +type = "file" +url = "https://github.com/catppuccin/glamour/raw/main/themes/{{ $fileName }}" +{{- end }} diff --git a/home/.chezmoiexternals/lazygit-catppuccin.toml.tmpl b/home/.chezmoiexternals/lazygit-catppuccin.toml.tmpl new file mode 100644 index 0000000..33dbe7c --- /dev/null +++ b/home/.chezmoiexternals/lazygit-catppuccin.toml.tmpl @@ -0,0 +1,10 @@ +{{- $lazygitThemesPath := joinPath ".config" "lazygit" -}} +{{- $refreshPeriod := .catppuccin.refreshPeriod -}} +{{- $accent := .catppuccin.accent -}} +{{- range $i, $flavor := .catppuccin.allFlavors -}} +{{- if ne $i 0 }}{{ "\n\n" }}{{ end -}} +[{{ joinPath $lazygitThemesPath (print "catppuccin-" $flavor "-" $accent ".yml") | quote }}] +refreshPeriod = {{ $refreshPeriod | quote }} +type = "file" +url = "https://github.com/catppuccin/lazygit/raw/main/themes-mergable/{{ $flavor }}/{{ $accent }}.yml" +{{- end }} diff --git a/home/.chezmoiexternals/micro-catppuccin.toml.tmpl b/home/.chezmoiexternals/micro-catppuccin.toml.tmpl new file mode 100644 index 0000000..d9ff167 --- /dev/null +++ b/home/.chezmoiexternals/micro-catppuccin.toml.tmpl @@ -0,0 +1,10 @@ +{{- $microColorschemesPath := joinPath ".config" "micro" "colorschemes" -}} +{{- $refreshPeriod := .catppuccin.refreshPeriod -}} +{{- range $i, $flavor := .catppuccin.allFlavors -}} +{{- $fileName := print "catppuccin-" $flavor ".micro" -}} +{{- if ne $i 0 }}{{ "\n\n" }}{{ end -}} +[{{ joinPath $microColorschemesPath $fileName | quote }}] +refreshPeriod = {{ $refreshPeriod | quote }} +type = "file" +url = "https://github.com/catppuccin/micro/raw/main/src/{{ $fileName }}" +{{- end }} diff --git a/home/.chezmoiexternals/warp-catppuccin.toml.tmpl b/home/.chezmoiexternals/warp-catppuccin.toml.tmpl new file mode 100644 index 0000000..f3989d9 --- /dev/null +++ b/home/.chezmoiexternals/warp-catppuccin.toml.tmpl @@ -0,0 +1,10 @@ +{{- $warpThemesPath := joinPath ".local" "share" "warp-terminal" "themes" -}} +{{- $refreshPeriod := .catppuccin.refreshPeriod -}} +{{- range $i, $flavor := .catppuccin.allFlavors -}} +{{- $fileName := print "catppuccin_" $flavor ".yml" -}} +{{- if ne $i 0 }}{{ "\n\n" }}{{ end -}} +[{{ joinPath $warpThemesPath $fileName | quote }}] +refreshPeriod = {{ $refreshPeriod | quote }} +type = "file" +url = "https://github.com/catppuccin/warp/raw/main/dist/{{ $fileName }}" +{{- end }} diff --git a/home/.chezmoiexternals/zsh-config.toml b/home/.chezmoiexternals/zsh-config.toml new file mode 100644 index 0000000..2917ca5 --- /dev/null +++ b/home/.chezmoiexternals/zsh-config.toml @@ -0,0 +1,4 @@ +[".config/zsh"] +type = "git-repo" +url = "https://github.com/nisavid/zsh-config" +refreshPeriod = "24h" diff --git a/home/dot_config/X11/XCompose b/home/dot_config/X11/XCompose new file mode 100644 index 0000000..20e84c0 --- /dev/null +++ b/home/dot_config/X11/XCompose @@ -0,0 +1,8 @@ +include "%L" +include "%H/.config/X11/XCompose-vim" + + : "‣" # 2023 : TRIANGULAR BULLET + : "⁃" # 2043 : HYPHEN BULLET + : "⁃" # 2212 : MINUS SIGN + : "∕" # 2215 : DIVISION SLASH + : "◦" # 25E6 : WHITE BULLET diff --git a/home/dot_config/X11/symlink_XCompose-vim b/home/dot_config/X11/symlink_XCompose-vim new file mode 100644 index 0000000..72436d5 --- /dev/null +++ b/home/dot_config/X11/symlink_XCompose-vim @@ -0,0 +1 @@ +/home/nisavid/src/xcompose-vim/.XCompose-vim diff --git a/home/dot_config/bat/config b/home/dot_config/bat/config new file mode 100644 index 0000000..1be754e --- /dev/null +++ b/home/dot_config/bat/config @@ -0,0 +1,7 @@ +--italic-text=always +--map-syntax '.*ignore:Git Ignore' +--map-syntax '.(eslint|parcel|prettier)rc:JSON' +--nonprintable-notation=unicode +--tabs=4 +--terminal-width=-2 +--theme=catppuccin-mocha diff --git a/home/dot_config/bat/run_onchange_after_bat-cache-build.sh.tmpl b/home/dot_config/bat/run_onchange_after_bat-cache-build.sh.tmpl new file mode 100644 index 0000000..e730602 --- /dev/null +++ b/home/dot_config/bat/run_onchange_after_bat-cache-build.sh.tmpl @@ -0,0 +1,30 @@ +#!/bin/sh + +# Hashes of `$(bat --config-dir)/syntaxes/*.sublime-syntax`: +{{- + range + glob ( + joinPath + (output "bat" "--config-dir" | trim) + "syntaxes" + "*.sublime-syntax" + ) +}} +# {{ cat (sha256sum (include .)) (base .) }} +{{- end }} + +# Hashes of `$(bat --config-dir)/themes/*.tmTheme`: +{{- + range + glob ( + joinPath + (output "bat" "--config-dir" | trim) + "themes" + "*.tmTheme" + ) +}} +# {{ cat (sha256sum (include .)) (base .) }} +{{- end }} + +echo "Building bat cache..." +bat cache --build diff --git a/home/dot_config/bottom/bottom.toml.tmpl b/home/dot_config/bottom/bottom.toml.tmpl new file mode 100644 index 0000000..bebd4b4 --- /dev/null +++ b/home/dot_config/bottom/bottom.toml.tmpl @@ -0,0 +1,193 @@ +{{- + $cacheHome := + or (env "XDG_CACHE_HOME") (joinPath .chezmoi.homeDir ".cache") +-}} +{{- $includesDir := joinPath $cacheHome "chezmoi" "includes" "bottom" -}} + +# This group of options represents a command-line flag/option. Flags explicitly +# added when running (ie: btm -a) will override this config file if an option +# is also set here. + +[flags] +# Whether to hide the average cpu entry. +#hide_avg_cpu = false +# Whether to use dot markers rather than braille. +#dot_marker = false +# The update rate of the application. +#rate = "1s" +# Whether to put the CPU legend to the left. +#left_legend = false +# Whether to set CPU% on a process to be based on the total CPU or just current usage. +#current_usage = false +# Whether to set CPU% on a process to be based on the total CPU or per-core CPU% (not divided by the number of cpus). +#unnormalized_cpu = false +# Whether to group processes with the same name together by default. +#group_processes = false +# Whether to make process searching case sensitive by default. +#case_sensitive = false +# Whether to make process searching look for matching the entire word by default. +#whole_word = false +# Whether to make process searching use regex by default. +#regex = false +# Defaults to Celsius. Temperature is one of: +#temperature_type = "k" +#temperature_type = "f" +#temperature_type = "c" +#temperature_type = "kelvin" +#temperature_type = "fahrenheit" +#temperature_type = "celsius" +# The default time interval (in milliseconds). +#default_time_value = "60s" +# The time delta on each zoom in/out action (in milliseconds). +#time_delta = 15000 +# Hides the time scale. +#hide_time = false +# Override layout default widget +#default_widget_type = "proc" +#default_widget_count = 1 +# Expand selected widget upon starting the app +#expanded_on_startup = true +# Use basic mode +#basic = false +# Use the old network legend style +#use_old_network_legend = false +# Remove space in tables +#hide_table_gap = false +# Show the battery widgets +#battery = false +# Disable mouse clicks +#disable_click = false +# Built-in themes. Valid values are "default", "default-light", "gruvbox", "gruvbox-light", "nord", "nord-light" +#color = "default" +# Show memory values in the processes widget as values by default +#mem_as_value = false +# Show tree mode by default in the processes widget. +#tree = false +# Shows an indicator in table widgets tracking where in the list you are. +#show_table_scroll_position = false +# Show processes as their commands by default in the process widget. +#process_command = false +# Displays the network widget with binary prefixes. +#network_use_binary_prefix = false +# Displays the network widget using bytes. +#network_use_bytes = false +# Displays the network widget with a log scale. +#network_use_log = false +# Hides advanced options to stop a process on Unix-like systems. +#disable_advanced_kill = false +# Shows GPU(s) memory +#enable_gpu_memory = false +# Shows cache and buffer memory +#enable_cache_memory = false +# How much data is stored at once in terms of time. +#retention = "10m" + +# These are flags around the process widget. + +#[processes] +#columns = ["PID", "Name", "CPU%", "Mem%", "R/s", "W/s", "T.Read", "T.Write", "User", "State"] + +# These are all the components that support custom theming. Note that colour support +# will depend on terminal support. + +#[colors] +# Represents the colour of table headers (processes, CPU, disks, temperature). +#table_header_color="LightBlue" +# Represents the colour of the label each widget has. +#widget_title_color="Gray" +# Represents the average CPU color. +#avg_cpu_color="Red" +# Represents the colour the core will use in the CPU legend and graph. +#cpu_core_colors=["LightMagenta", "LightYellow", "LightCyan", "LightGreen", "LightBlue", "LightRed", "Cyan", "Green", "Blue", "Red"] +# Represents the colour RAM will use in the memory legend and graph. +#ram_color="LightMagenta" +# Represents the colour SWAP will use in the memory legend and graph. +#swap_color="LightYellow" +# Represents the colour ARC will use in the memory legend and graph. +#arc_color="LightCyan" +# Represents the colour the GPU will use in the memory legend and graph. +#gpu_core_colors=["LightGreen", "LightBlue", "LightRed", "Cyan", "Green", "Blue", "Red"] +# Represents the colour rx will use in the network legend and graph. +#rx_color="LightCyan" +# Represents the colour tx will use in the network legend and graph. +#tx_color="LightGreen" +# Represents the colour of the border of unselected widgets. +#border_color="Gray" +# Represents the colour of the border of selected widgets. +#highlighted_border_color="LightBlue" +# Represents the colour of most text. +#text_color="Gray" +# Represents the colour of text that is selected. +#selected_text_color="Black" +# Represents the background colour of text that is selected. +#selected_bg_color="LightBlue" +# Represents the colour of the lines and text of the graph. +#graph_color="Gray" +# Represents the colours of the battery based on charge +#high_battery_color="green" +#medium_battery_color="yellow" +#low_battery_color="red" + +{{ include (joinPath $includesDir "colors-catppuccin-mocha.toml") | trim }} + +# Layout - layouts follow a pattern like this: +# [[row]] represents a row in the application. +# [[row.child]] represents either a widget or a column. +# [[row.child.child]] represents a widget. +# +# All widgets must have the type value set to one of ["cpu", "mem", "proc", "net", "temp", "disk", "empty"]. +# All layout components have a ratio value - if this is not set, then it defaults to 1. +# The default widget layout: +#[[row]] +# ratio=30 +# [[row.child]] +# type="cpu" +#[[row]] +# ratio=40 +# [[row.child]] +# ratio=4 +# type="mem" +# [[row.child]] +# ratio=3 +# [[row.child.child]] +# type="temp" +# [[row.child.child]] +# type="disk" +#[[row]] +# ratio=30 +# [[row.child]] +# type="net" +# [[row.child]] +# type="proc" +# default=true + + +# Filters - you can hide specific temperature sensors, network interfaces, and disks using filters. This is admittedly +# a bit hard to use as of now, and there is a planned in-app interface for managing this in the future: +#[disk_filter] +#is_list_ignored = true +#list = ["/dev/sda\\d+", "/dev/nvme0n1p2"] +#regex = true +#case_sensitive = false +#whole_word = false + +#[mount_filter] +#is_list_ignored = true +#list = ["/mnt/.*", "/boot"] +#regex = true +#case_sensitive = false +#whole_word = false + +#[temp_filter] +#is_list_ignored = true +#list = ["cpu", "wifi"] +#regex = false +#case_sensitive = false +#whole_word = false + +#[net_filter] +#is_list_ignored = true +#list = ["virbr0.*"] +#regex = true +#case_sensitive = false +#whole_word = false diff --git a/home/dot_config/electron13-flags.conf b/home/dot_config/electron13-flags.conf new file mode 100644 index 0000000..b73f2a3 --- /dev/null +++ b/home/dot_config/electron13-flags.conf @@ -0,0 +1,2 @@ +--enable-features=UseOzonePlatform,WebRTCPipeWireCapturer +--ozone-platform=wayland diff --git a/home/dot_config/electron17-flags.conf b/home/dot_config/electron17-flags.conf new file mode 100644 index 0000000..a89f0b8 --- /dev/null +++ b/home/dot_config/electron17-flags.conf @@ -0,0 +1,2 @@ +--enable-features=UseOzonePlatform,WaylandWindowDecorations,WebRTCPipeWireCapturer +--ozone-platform=wayland diff --git a/home/dot_config/electron18-flags.conf b/home/dot_config/electron18-flags.conf new file mode 100644 index 0000000..e25a0fe --- /dev/null +++ b/home/dot_config/electron18-flags.conf @@ -0,0 +1,2 @@ +--enable-features=WaylandWindowDecorations,WebRTCPipeWireCapturer +--ozone-platform-hint=auto diff --git a/home/dot_config/electron28-flags.conf b/home/dot_config/electron28-flags.conf new file mode 100644 index 0000000..019e53e --- /dev/null +++ b/home/dot_config/electron28-flags.conf @@ -0,0 +1 @@ +--enable-features=WaylandWindowDecorations,WebRTCPipeWireCapturer diff --git a/home/dot_config/environment.d/10-xdg.conf b/home/dot_config/environment.d/10-xdg.conf new file mode 100644 index 0000000..6576a02 --- /dev/null +++ b/home/dot_config/environment.d/10-xdg.conf @@ -0,0 +1,100 @@ +# vim: ft=sh +# shellcheck shell=sh disable=SC2034 + +XDG_CACHE_HOME=${XDG_CACHE_HOME:-$HOME/.cache} +XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config} +XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share} +XDG_STATE_HOME=${XDG_STATE_HOME:-$HOME/.local/state} + +ACKRC=${XDG_CONFIG_HOME:-$HOME/.config}/ack/ackrc +ANSIBLE_HOME=${XDG_CONFIG_HOME}/ansible +ANSIBLE_CONFIG=${XDG_CONFIG_HOME}/ansible.cfg +ANSIBLE_GALAXY_CACHE_DIR=${XDG_CACHE_HOME}/ansible/galaxy_cache +ASDF_CONFIG_FILE=${XDG_CONFIG_HOME}/asdf/asdfrc +ASDF_DATA_DIR=${XDG_DATA_HOME}/asdf +ATOM_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/atom +BASH_COMPLETION_USER_FILE=${XDG_CONFIG_HOME:-$HOME/.config}/bash-completion/bash_completion +BOGOFILTER_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/bogofilter +CALCHISTFILE=${XDG_STATE_HOME:-$HOME/.local/state}/calc/history +CARGO_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/cargo +CGDB_DIR=${XDG_CONFIG_HOME:-$HOME/.config}/cgdb +CUDA_CACHE_PATH=${XDG_CACHE_HOME:-$HOME/.cache}/nv +DOCKER_CONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/docker +DVDCSS_CACHE=${XDG_CACHE_HOME:-$HOME/.cache}/dvdcss +ELINKS_CONFDIR=${XDG_CONFIG_HOME:-$HOME/.config}/elinks +ELM_HOME=${XDG_CACHE_HOME:-$HOME/.cache}/elm +EM_CONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/emscripten/config +EM_CACHE=${XDG_CACHE_HOME:-$HOME/.cache}/emscripten/cache +EM_PORTS=${XDG_DATA_HOME:-$HOME/.local/share}/emscripten/cache +FFMPEG_DATADIR=${XDG_CONFIG_HOME:-$HOME/.config}/ffmpeg +GHCUP_USE_XDG_DIRS=1 +GOMODCACHE=${XDG_CACHE_HOME:-$HOME/.cache}/go/mod +GOPATH=${XDG_DATA_HOME:-$HOME/.local/share}/go +GTK_RC_FILES=${XDG_CONFIG_HOME:-$HOME/.config}/gtk-1.0/gtkrc +GTK2_RC_FILES=${XDG_CONFIG_HOME:-$HOME/.config}/gtk-2.0/gtkrc +ICEAUTHORITY=${XDG_CACHE_HOME:-$HOME/.cache}/ICEauthority +IMAPFILTER_HOME=${XDG_CONFIG_HOME:-$HOME/.config}/imapfilter +INPUTRC=${XDG_CONFIG_HOME:-$HOME/.config}/readline/inputrc +IRBRC=${XDG_CONFIG_HOME:-$HOME/.config}/irb/irbrc +_JAVA_OPTIONS=-Djava.util.prefs.userRoot=${XDG_CONFIG_HOME:-$HOME/.config}/java +K9SCONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/k9s +KDEHOME=${XDG_CONFIG_HOME:-$HOME/.config}/kde +KODI_DATA=${XDG_DATA_HOME:-$HOME/.local/share}/kodi +LYNX_CFG_PATH=${XDG_CONFIG_HOME:-$HOME/.config}/lynx/lynx.cfg +MACHINE_STORAGE_PATH=${XDG_DATA_HOME:-$HOME/.local/share}/docker-machine +MATHEMATICA_USERBASE=${XDG_CONFIG_HOME:-$HOME/.config}/mathematica +MAXIMA_USERDIR=${XDG_CONFIG_HOME:-$HOME/.config}/maxima +MEDNAFEN_HOME=${XDG_CONFIG_HOME:-$HOME/.config}/mednafen +MINIKUBE_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/minikube +MOST_INITFILE=${XDG_CONFIG_HOME:-$HOME/.config}/mostrc +MPLAYER_HOME=${XDG_CONFIG_HOME:-$HOME/.config}/mplayer +MYPY_CACHE_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/mypy +MYSQL_HISTFILE=${XDG_STATE_HOME:-$HOME/.local/state}/mysql/history +NODE_REPL_HISTORY=${XDG_STATE_HOME:-$HOME/.local/state}/node/repl_history +NODENV_ROOT=${XDG_DATA_HOME:-$HOME/.local/share}/nodenv +NPM_CONFIG_USERCONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/npm/npmrc +NVM_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/nvm +OCTAVE_HISTFILE=${XDG_STATE_HOME:-$HOME/.local/state}/octave/history +OCTAVE_SITE_INITFILE=${XDG_CONFIG_HOME:-$HOME/.config}/octave/octaverc +OPAMROOT=${XDG_DATA_HOME:-$HOME/.local/share}/opam +PARALLEL_HOME=${XDG_CONFIG_HOME:-$HOME/.config}/parallel +PGPASSFILE=${XDG_CONFIG_HOME:-$HOME/.config}/pg/pgpass +PGSERVICEFILE=${XDG_CONFIG_HOME:-$HOME/.config}/pg/service.conf +PSQLRC=${XDG_CONFIG_HOME:-$HOME/.config}/pg/psqlrc +PSQL_HISTORY=${XDG_STATE_HOME:-$HOME/.local/state}/pg/history +PYENV_ROOT=${XDG_DATA_HOME:-$HOME/.local/share}/pyenv +PYTHON_EGG_CACHE=${XDG_CACHE_HOME:-$HOME/.cache}/python-eggs +PYTHONPYCACHEPREFIX=${XDG_CACHE_HOME:-$HOME/.cache}/python +PYTHONUSERBASE=${XDG_DATA_HOME:-$HOME/.local/share}/python +RBENV_ROOT=${XDG_DATA_HOME:-$HOME/.local/share}/rbenv +RECOLL_CONFDIR=${XDG_CONFIG_HOME:-$HOME/.config}/recoll +REDISCLI_HISTFILE=${XDG_STATE_HOME:-$HOME/.local/state}/redis/rediscli_history +REDISCLI_RCFILE=${XDG_CONFIG_HOME:-$HOME/.config}/redis/redisclirc +RIPGREP_CONFIG_PATH=${XDG_CONFIG_HOME:-$HOME/.config}/ripgrep/ripgreprc +RLWRAP_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/rlwrap +RUFF_CACHE_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/ruff +RUSTUP_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/rustup +DOT_SAGE=${XDG_CONFIG_HOME:-$HOME/.config}/sage +SCREENRC=${XDG_CONFIG_HOME:-$HOME/.config}/screen/screenrc +SINGULARITY_CONFIGDIR=${XDG_CONFIG_HOME:-$HOME/.config}/singularity +SINGULARITY_CACHEDIR=${XDG_CACHE_HOME:-$HOME/.cache}/singularity +SOLARGRAPH_CACHE=${XDG_CACHE_HOME:-$HOME/.cache}/solargraph +STACK_XDG=1 +STARSHIP_CONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/starship.toml +STARSHIP_CACHE=${XDG_CACHE_HOME:-$HOME/.cache}/starship +TEXMFHOME=${XDG_DATA_HOME:-$HOME/.local/share}/texmf +TEXMFVAR=${XDG_CACHE_HOME:-$HOME/.cache}/texlive/texmf-var +TEXMFCONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/texlive/texmf-config +TRAVIS_CONFIG_PATH=${XDG_CONFIG_HOME:-$HOME/.config}/travis +UNCRUSTIFY_CONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/uncrustify/uncrustify.cfg +VAGRANT_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/vagrant +VAGRANT_ALIAS_FILE=${XDG_DATA_HOME:-$HOME/.local/share}/vagrant/aliases +W3M_DIR=${XDG_STATE_HOME:-$HOME/.local/state}/w3m +WGETRC=${XDG_CONFIG_HOME:-$HOME/.config}/wget/wgetrc +WINEPREFIX=${XDG_DATA_HOME:-$HOME/.local/share}/wineprefixes/default +WORKON_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/virtualenv +XCOMPOSEFILE=${XDG_CONFIG_HOME:-$HOME/.config}/X11/XCompose +XCOMPOSECACHE=${XDG_CACHE_HOME:-$HOME/.cache}/X11/XCompose +XINITRC=${XDG_CONFIG_HOME:-$HOME/.config}/X11/xinitrc +XSERVERRC=${XDG_CONFIG_HOME:-$HOME/.config}/X11/xserverrc +_Z_DATA=${XDG_DATA_HOME:-$HOME/.local/share}/z diff --git a/home/dot_config/environment.d/20-perl.conf b/home/dot_config/environment.d/20-perl.conf new file mode 100644 index 0000000..b105e10 --- /dev/null +++ b/home/dot_config/environment.d/20-perl.conf @@ -0,0 +1,2 @@ +PERL_MB_OPT="--install_base \"/home/nisavid/.local/share/perl5\"" +PERL_MM_OPT="INSTALL_BASE=/home/nisavid/.local/share/perl5" diff --git a/home/dot_config/environment.d/20-pyenv.conf b/home/dot_config/environment.d/20-pyenv.conf new file mode 100644 index 0000000..6d103d3 --- /dev/null +++ b/home/dot_config/environment.d/20-pyenv.conf @@ -0,0 +1,4 @@ +# vim: ft=sh +# shellcheck shell=sh disable=SC2034 + +PATH=$HOME/.local/share/pyenv/bin:$PATH diff --git a/home/dot_config/environment.d/30-auth-agents.conf b/home/dot_config/environment.d/30-auth-agents.conf new file mode 100644 index 0000000..0101c50 --- /dev/null +++ b/home/dot_config/environment.d/30-auth-agents.conf @@ -0,0 +1,5 @@ +# vim: ft=sh +# shellcheck shell=sh disable=SC2034 + +SSH_ASKPASS=/usr/bin/kwalletaskpass +SSH_ASKPASS_REQUIRE=prefer diff --git a/home/dot_config/environment.d/50-desktop.conf b/home/dot_config/environment.d/50-desktop.conf new file mode 100644 index 0000000..5a5c945 --- /dev/null +++ b/home/dot_config/environment.d/50-desktop.conf @@ -0,0 +1,40 @@ +# vim: ft=sh +# shellcheck shell=sh disable=SC2034 + +WAYLAND=1 + +# bemenu library +BEMENU_BACKEND=wayland + +# Clutter toolkit +CLUTTER_BACKEND=wayland + +# EFL +ECORE_EVAS_ENGINE=wayland_egl +ELM_ACCEL=gl +ELM_DISPLAY=wl +ELM_ENGINE=wayland_egl + +# Electron >= 28 +ELECTRON_OZONE_PLATFORM_HINT=auto + +# Firefox +MOZ_DBUS_REMOTE=1 + +# GTK +GDK_BACKEND='wayland,x11' + +# Java +_JAVA_AWT_WM_NONREPARENTING=1 + +# Qt +QT_QPA_PLATFORM='wayland;xcb' + +# Proton +PROTON_ENABLE_WAYLAND=1 + +# SDL +SDL_VIDEODRIVER='wayland,x11' + +# Warp +WARP_ENABLE_WAYLAND=1 diff --git a/home/dot_config/git/attributes b/home/dot_config/git/attributes new file mode 100644 index 0000000..949a841 --- /dev/null +++ b/home/dot_config/git/attributes @@ -0,0 +1,22 @@ +*.pdf diff=lesspipe + +*.odt diff=lesspipe + +*.doc diff=lesspipe +*.xls diff=lesspipe +*.ppt diff=lesspipe + +*.docx diff=lesspipe +*.xlsx diff=lesspipe +*.pptx diff=lesspipe + +*.rtf diff=lesspipe + +*.epub diff=lesspipe + +*.{jar,ja} diff=lesspipe +*.{rar,7z,zip} diff=lesspipe + +*.gif diff=lesspipe +*.png diff=lesspipe +*.{jpg,jpeg} diff=lesspipe diff --git a/home/dot_config/git/config b/home/dot_config/git/config new file mode 100644 index 0000000..d3411bc --- /dev/null +++ b/home/dot_config/git/config @@ -0,0 +1,205 @@ +[user] + name = Ivan D Vasin + email = ivan@nisavid.io +[core] + autocrlf = input + pager = diff-so-fancy | less --tabs=4 -RFX + safecrlf = warn + whitespace = fix,-indent-with-non-tab,trailing-space,cr-at-eol +[interactive] + diffFilter = diff-so-fancy --patch +[branch] + autosetuprebase = always +[diff] + algorithm = histogram + renames = copies + mnemonicPrefix = true +[diff "lesspipe"] + textconv = LESSQUIET=1 lesspipe.sh + binary = true + cachetextconv = true +[grep] + lineNumber = true +[log] + date = iso +[merge] + log = 100 + tool = nvimdiff2 + ff = only +[pull] + rebase = merges +[push] + default = simple +[alias] + a = add --patch + aa = add --all + au = add --update + br = branch + brc = symbolic-ref --short HEAD + brd = branch --delete + cfg = config + cfgg = config --global + cfgge = config --global --edit + cfgl = config --local + cfgle = config --local --edit + chp = cherry-pick + chpa = cherry-pick --abort + chpc = cherry-pick --continue + ci = commit + cia = commit --amend + ciam = commit --amend --message + cian = commit --amend --no-edit + cim = commit --message + cin = commit --no-edit + cle = clean-disposable + clo = clone + clo1 = clone --depth=1 + co = checkout + co- = checkout - + cob = checkout -b + coma = checkout main + d = diff --break-rewrites=/90 --find-renames=30 --find-copies=30 + dc = diff --break-rewrites=/90 --find-renames=30 --find-copies=30 --cached + dcs = diff --break-rewrites=/90 --find-renames=30 --find-copies=30 --cached --stat + des = describe --dirty --broken --tags + desa = describe --dirty --broken --all + desc = describe --contains --dirty --broken --tags + desca = describe --contains --dirty --broken --all + ds = diff --break-rewrites=/90 --find-renames=30 --find-copies=30 --stat + f = fetch + g = grep + gbl = grep-blame + gi = gui + gibl = gui blame + gibr = gui browser + gici = gui citool + l = log + lgd = log --patch + lgd = log --patch + lgd1 = log --patch -1 + lgs = log --stat + lgs1 = log --stat -1 + lgsd = log --stat --patch + lgsd1 = log --stat --patch -1 + lo = log --format='%C(yellow)%h %C(blue)%aN %C(cyan)%ad%C(red)%d %C()%s' --date=format-local:'%Y-%m-%d %H:%M:%S' + lol = log --format='%C(yellow)%h %C(blue)%aN %C(cyan)%ad%C(red)%d %C()%s' --date=format-local:'%Y-%m-%d %H:%M:%S' --graph + lol1 = log --format='%C(yellow)%h %C(blue)%aN %C(cyan)%ad%C(red)%d %C()%s' --date=format-local:'%Y-%m-%d %H:%M:%S' --graph -1 + lola = log --format='%C(yellow)%h %C(blue)%aN %C(cyan)%ad%C(red)%d %C()%s' --date=format-local:'%Y-%m-%d %H:%M:%S' --graph --all + ls = ls-files + mg = merge + mgf = merge --ff-only + mgma = merge main + mgnf = merge --no-ff + mo = remote + pl = pull + prune-tags = !git tag --list | xargs git tag --delete && git fetch --tags + ps = push + psa = push --all + pscb = push-current-branch + psct = push-current-tag + psf = push --force + pso = push origin + rb = rebase + rba = rebase --abort + rbc = rebase --continue + rbi = rebase --interactive + rbima = rebase --interactive main + rbiup = rebase --interactive @{upstream} + rbma = rebase main + rmc = rm --cached + rs = reset + rshard = reset --hard + rshardma = reset --hard main + rshardup = reset --hard @{upstream} + s = status + ss = stash + ssa = stash apply + ssd = stash drop + ssd1 = stash drop stash@{1} + ssd2 = stash drop stash@{2} + ssd3 = stash drop stash@{3} + ssd4 = stash drop stash@{4} + ssd5 = stash drop stash@{5} + ssd6 = stash drop stash@{6} + ssd7 = stash drop stash@{7} + ssd8 = stash drop stash@{8} + ssl = stash list + ssp = stash pop + ssp1 = stash pop stash@{1} + ssp2 = stash pop stash@{2} + ssp3 = stash pop stash@{3} + ssp4 = stash pop stash@{4} + ssp5 = stash pop stash@{5} + ssp6 = stash pop stash@{6} + ssp7 = stash pop stash@{7} + ssp8 = stash pop stash@{8} + sss = stash show + sss1 = stash show stash@{1} + sss2 = stash show stash@{2} + sss3 = stash show stash@{3} + sss4 = stash show stash@{4} + sss5 = stash show stash@{5} + sss6 = stash show stash@{6} + sss7 = stash show stash@{7} + sss8 = stash show stash@{8} + sssp = stash show --patch + sssp1 = stash show --patch stash@{1} + sssp2 = stash show --patch stash@{2} + sssp3 = stash show --patch stash@{3} + sssp4 = stash show --patch stash@{4} + sssp5 = stash show --patch stash@{5} + sssp6 = stash show --patch stash@{6} + sssp7 = stash show --patch stash@{7} + sssp8 = stash show --patch stash@{8} + sssv = stash save + sssvk = stash save --keep-index + sssvp = stash save --patch + sssvpnk = stash save --patch --no-keep-index +[color] + branch = auto + diff = auto + grep = auto + interactive = auto + showBranch = auto + status = auto + ui = true +[color "branch"] + current = yellow reverse + local = yellow + remote = green +[color "diff"] + meta = 11 + frag = magenta bold + old = red bold + new = green bold + func = 146 bold + commit = yellow bold + whitespace = red reverse +[color "status"] + added = yellow + changed = green + untracked = cyan +[gui] + fontui = -family \"Inconsolata LGC for Powerline\" -size 11 -weight normal -slant roman -underline 0 -overstrike 0 + fontdiff = -family \"Inconsolata LGC for Powerline\" -size 11 -weight normal -slant roman -underline 0 -overstrike 0 + editor = gvim +[cola] + fontdiff = Inconsolata LGC for Powerline,11,-1,5,50,0,0,0,0,0 + tabwidth = 2 + textwidth = 92 + boldheaders = true +[url "https://invent.kde.org/"] + insteadOf = kde: +[url "ssh://git@invent.kde.org/"] + pushInsteadOf = kde: +[credential "https://github.com"] + helper = + helper = !/usr/bin/gh auth git-credential +[credential "https://gist.github.com"] + helper = + helper = !/usr/bin/gh auth git-credential +[color "diff-highlight"] + oldNormal = red bold + oldHighlight = red bold 52 + newNormal = green bold + newHighlight = green bold 22 diff --git a/home/dot_config/glow/glow.yml.tmpl b/home/dot_config/glow/glow.yml.tmpl new file mode 100644 index 0000000..b46a2bb --- /dev/null +++ b/home/dot_config/glow/glow.yml.tmpl @@ -0,0 +1,10 @@ +# style name or JSON path (default "auto") +style: "~/.config/glamour/catppuccin-{{ .catppuccin.flavor }}.json" +# show local files only; no network (TUI-mode only) +local: false +# mouse support (TUI-mode only) +mouse: true +# use pager to display markdown +pager: false +# word-wrap at width +width: 80 diff --git a/home/dot_config/irb/irbrc b/home/dot_config/irb/irbrc new file mode 100644 index 0000000..c35bcf0 --- /dev/null +++ b/home/dot_config/irb/irbrc @@ -0,0 +1,2 @@ +IRB.conf[:SAVE_HISTORY] ||= 1000 +IRB.conf[:HISTORY_FILE] ||= File.join(ENV["XDG_STATE_HOME"], "irb", "history") diff --git a/home/dot_config/lazygit/empty_config.yml b/home/dot_config/lazygit/empty_config.yml new file mode 100644 index 0000000..e69de29 diff --git a/home/dot_config/lsd/config.yaml b/home/dot_config/lsd/config.yaml new file mode 100644 index 0000000..52f9b81 --- /dev/null +++ b/home/dot_config/lsd/config.yaml @@ -0,0 +1,134 @@ +# == Classic == +# This is a shorthand to override some of the options to be backwards compatible +# with `ls`. It affects the "color"->"when", "sorting"->"dir-grouping", "date" +# and "icons"->"when" options. +# Possible values: false, true +classic: false + +# == Blocks == +# This specifies the columns and their order when using the long and the tree +# layout. +# Possible values: permission, user, group, context, size, date, name, inode, links, git +blocks: + - permission + - user + - group + - size + - date + - name + +# == Color == +# This has various color options. (Will be expanded in the future.) +color: + # When to colorize the output. + # When "classic" is set, this is set to "never". + # Possible values: never, auto, always + when: auto + # How to colorize the output. + # When "classic" is set, this is set to "no-color". + # Possible values: default, custom + # When "custom" is set, lsd will look in the config directory for `colors.yaml`. + theme: default + +# == Date == +# This specifies the date format for the date column. The freeform format +# accepts a strftime like string. +# When "classic" is set, this is set to "date". +# Possible values: date, relative, '+' +# `date_format` will be a `strftime` formatted value. e.g. `date: '+%d %b %y %X'` will give you a date like this: 17 Jun 21 20:14:55 +date: +%F %T + +# == Dereference == +# Whether to dereference symbolic links. +# Possible values: false, true +dereference: false + +# == Display == +# What items to display. Do not specify this for the default behavior. +# Possible values: all, almost-all, directory-only +# display: all + +# == Icons == +icons: + # When to use icons. + # When "classic" is set, this is set to "never". + # Possible values: always, auto, never + when: auto + # Which icon theme to use. + # Possible values: fancy, unicode + theme: fancy + # Separator between icon and the name + # Default to 1 space + separator: " " + +# == Ignore Globs == +# A list of globs to ignore when listing. +# ignore-globs: +# - .git + +# == Indicators == +# Whether to add indicator characters to certain listed files. +# Possible values: false, true +indicators: false + +# == Layout == +# Which layout to use. "oneline" might be a bit confusing here and should be +# called "one-per-line". It might be changed in the future. +# Possible values: grid, tree, oneline +layout: grid + +# == Recursion == +recursion: + # Whether to enable recursion. + # Possible values: false, true + enabled: false + # How deep the recursion should go. This has to be a positive integer. Leave + # it unspecified for (virtually) infinite. + # depth: 3 + +# == Size == +# Specifies the format of the size column. +# Possible values: default, short, bytes +size: default + +# == Permission == +# Specify the format of the permission column +# Possible value: rwx, octal +permission: rwx + +# == Sorting == +sorting: + # Specify what to sort by. + # Possible values: extension, name, time, size, version + column: name + # Whether to reverse the sorting. + # Possible values: false, true + reverse: false + # Whether to group directories together and where. + # When "classic" is set, this is set to "none". + # Possible values: first, last, none + dir-grouping: first + +# == No Symlink == +# Whether to omit showing symlink targets +# Possible values: false, true +no-symlink: false + +# == Total size == +# Whether to display the total size of directories. +# Possible values: false, true +total-size: false + +# == Hyperlink == +# Attach hyperlink to filenames +# Possible values: always, auto, never +hyperlink: auto + +# == Symlink arrow == +# Specifies how the symlink arrow display, chars in both ascii and utf8 +symlink-arrow: ⇒ + +# == Header == +# Whether to display block headers. +# Possible values: false, true +header: false diff --git a/home/dot_config/micro/bindings.json b/home/dot_config/micro/bindings.json new file mode 100644 index 0000000..83659cb --- /dev/null +++ b/home/dot_config/micro/bindings.json @@ -0,0 +1,4 @@ +{ + "Alt-/": "lua:comment.comment", + "CtrlUnderscore": "lua:comment.comment" +} diff --git a/home/dot_config/micro/settings.json b/home/dot_config/micro/settings.json new file mode 100644 index 0000000..ef784ca --- /dev/null +++ b/home/dot_config/micro/settings.json @@ -0,0 +1,3 @@ +{ + "colorscheme": "catppuccin-mocha" +} diff --git a/home/dot_config/npm/encrypted_private_npmrc.asc b/home/dot_config/npm/encrypted_private_npmrc.asc new file mode 100644 index 0000000..6658d4c --- /dev/null +++ b/home/dot_config/npm/encrypted_private_npmrc.asc @@ -0,0 +1,40 @@ +-----BEGIN PGP MESSAGE----- + +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 +=rm8+ +-----END PGP MESSAGE----- diff --git a/home/dot_config/plasma-workspace/env/askpass.sh b/home/dot_config/plasma-workspace/env/askpass.sh new file mode 100644 index 0000000..432375c --- /dev/null +++ b/home/dot_config/plasma-workspace/env/askpass.sh @@ -0,0 +1,9 @@ +# shellcheck shell=sh + +for _askpass in kwalletaskpass ksshaskpass lxqt-openssh-askpass x11-ssh-askpass; do + _askpass_bin="$(which "$_askpass" 2>/dev/null)" || continue + export SSH_ASKPASS="$_askpass_bin" + export SSH_ASKPASS_REQUIRE=prefer + break +done +unset _askpass _askpass_bin diff --git a/home/dot_config/plasma-workspace/env/gtk.sh b/home/dot_config/plasma-workspace/env/gtk.sh new file mode 100644 index 0000000..b2ef8bd --- /dev/null +++ b/home/dot_config/plasma-workspace/env/gtk.sh @@ -0,0 +1 @@ +export GTK_USE_PORTAL=1 diff --git a/home/dot_config/plasma-workspace/env/logging.sh b/home/dot_config/plasma-workspace/env/logging.sh new file mode 100644 index 0000000..eeaa332 --- /dev/null +++ b/home/dot_config/plasma-workspace/env/logging.sh @@ -0,0 +1,3 @@ +export QT_MESSAGE_PATTERN='[%{time hh::mm:s.zzz}] %{function}: %{message}' + +#export KSCREEN_LOGGING=1 diff --git a/home/dot_config/pnpm/rc b/home/dot_config/pnpm/rc new file mode 100644 index 0000000..9d4f4e9 --- /dev/null +++ b/home/dot_config/pnpm/rc @@ -0,0 +1,4 @@ +always-auth=true +resolution-mode=time-based +registry-supports-time-field=true +shell-emulator=true diff --git a/home/dot_config/python/startup.py b/home/dot_config/python/startup.py new file mode 100644 index 0000000..00155ba --- /dev/null +++ b/home/dot_config/python/startup.py @@ -0,0 +1,3 @@ +import fancycompleter + +fancycompleter.interact(persist_history=True) diff --git a/home/dot_config/ripgrep/ripgreprc b/home/dot_config/ripgrep/ripgreprc new file mode 100644 index 0000000..c414c75 --- /dev/null +++ b/home/dot_config/ripgrep/ripgreprc @@ -0,0 +1,2 @@ +--pcre2 +--smart-case diff --git a/home/dot_config/shell_gpt/dot_sgptrc b/home/dot_config/shell_gpt/dot_sgptrc new file mode 100644 index 0000000..7501a26 --- /dev/null +++ b/home/dot_config/shell_gpt/dot_sgptrc @@ -0,0 +1,21 @@ +CHAT_CACHE_PATH=/tmp/chat_cache +CACHE_PATH=/tmp/cache +CHAT_CACHE_LENGTH=100 +CACHE_LENGTH=100 +REQUEST_TIMEOUT=60 +DEFAULT_MODEL=gpt-3.5-turbo +#DEFAULT_MODEL=gpt-4-turbo-preview +OPENAI_API_HOST=https://api.openai.com +DEFAULT_COLOR=magenta +ROLE_STORAGE_PATH=/home/nisavid/.config/shell_gpt/roles +SYSTEM_ROLES=false +DEFAULT_EXECUTE_SHELL_CMD=false +DISABLE_STREAMING=false +CODE_THEME=dracula +OPENAI_BASE_URL=https://api.openai.com/v1 +OPENAI_FUNCTIONS_PATH=/home/nisavid/.config/shell_gpt/functions +OPENAI_USE_FUNCTIONS=true +SHOW_FUNCTIONS_OUTPUT=false +API_BASE_URL=default +PRETTIFY_MARKDOWN=true +USE_LITELLM=false diff --git a/home/dot_config/symlink_electron14-flags.conf b/home/dot_config/symlink_electron14-flags.conf new file mode 100644 index 0000000..a07034b --- /dev/null +++ b/home/dot_config/symlink_electron14-flags.conf @@ -0,0 +1 @@ +electron13-flags.conf diff --git a/home/dot_config/symlink_electron15-flags.conf b/home/dot_config/symlink_electron15-flags.conf new file mode 100644 index 0000000..a07034b --- /dev/null +++ b/home/dot_config/symlink_electron15-flags.conf @@ -0,0 +1 @@ +electron13-flags.conf diff --git a/home/dot_config/symlink_electron16-flags.conf b/home/dot_config/symlink_electron16-flags.conf new file mode 100644 index 0000000..a07034b --- /dev/null +++ b/home/dot_config/symlink_electron16-flags.conf @@ -0,0 +1 @@ +electron13-flags.conf diff --git a/home/dot_config/symlink_electron19-flags.conf b/home/dot_config/symlink_electron19-flags.conf new file mode 100644 index 0000000..04a74d6 --- /dev/null +++ b/home/dot_config/symlink_electron19-flags.conf @@ -0,0 +1 @@ +electron18-flags.conf diff --git a/home/dot_config/symlink_electron20-flags.conf b/home/dot_config/symlink_electron20-flags.conf new file mode 100644 index 0000000..04a74d6 --- /dev/null +++ b/home/dot_config/symlink_electron20-flags.conf @@ -0,0 +1 @@ +electron18-flags.conf diff --git a/home/dot_config/symlink_electron21-flags.conf b/home/dot_config/symlink_electron21-flags.conf new file mode 100644 index 0000000..04a74d6 --- /dev/null +++ b/home/dot_config/symlink_electron21-flags.conf @@ -0,0 +1 @@ +electron18-flags.conf diff --git a/home/dot_config/symlink_electron22-flags.conf b/home/dot_config/symlink_electron22-flags.conf new file mode 100644 index 0000000..04a74d6 --- /dev/null +++ b/home/dot_config/symlink_electron22-flags.conf @@ -0,0 +1 @@ +electron18-flags.conf diff --git a/home/dot_config/symlink_electron23-flags.conf b/home/dot_config/symlink_electron23-flags.conf new file mode 100644 index 0000000..04a74d6 --- /dev/null +++ b/home/dot_config/symlink_electron23-flags.conf @@ -0,0 +1 @@ +electron18-flags.conf diff --git a/home/dot_config/symlink_electron24-flags.conf b/home/dot_config/symlink_electron24-flags.conf new file mode 100644 index 0000000..04a74d6 --- /dev/null +++ b/home/dot_config/symlink_electron24-flags.conf @@ -0,0 +1 @@ +electron18-flags.conf diff --git a/home/dot_config/symlink_electron25-flags.conf b/home/dot_config/symlink_electron25-flags.conf new file mode 100644 index 0000000..04a74d6 --- /dev/null +++ b/home/dot_config/symlink_electron25-flags.conf @@ -0,0 +1 @@ +electron18-flags.conf diff --git a/home/dot_config/symlink_electron26-flags.conf b/home/dot_config/symlink_electron26-flags.conf new file mode 100644 index 0000000..04a74d6 --- /dev/null +++ b/home/dot_config/symlink_electron26-flags.conf @@ -0,0 +1 @@ +electron18-flags.conf diff --git a/home/dot_config/symlink_electron27-flags.conf b/home/dot_config/symlink_electron27-flags.conf new file mode 100644 index 0000000..04a74d6 --- /dev/null +++ b/home/dot_config/symlink_electron27-flags.conf @@ -0,0 +1 @@ +electron18-flags.conf diff --git a/home/dot_config/symlink_electron29-flags.conf b/home/dot_config/symlink_electron29-flags.conf new file mode 100644 index 0000000..a1efed3 --- /dev/null +++ b/home/dot_config/symlink_electron29-flags.conf @@ -0,0 +1 @@ +electron28-flags.conf diff --git a/home/private_dot_gnupg/private_dirmngr.conf b/home/private_dot_gnupg/private_dirmngr.conf new file mode 100644 index 0000000..d46c248 --- /dev/null +++ b/home/private_dot_gnupg/private_dirmngr.conf @@ -0,0 +1,13 @@ +# GNU Privacy Guard remote key agent (dirmngr) configuration + +standard-resolver +allow-ocsp +no-use-tor + +#nameserver 127.0.0.1 +#nameserver 1.1.1.1 +#keyserver hkps://keys.openpgp.org +#keyserver hkp://zkaan2xfbuxia2wpf7ofnkbz6r5zdbbvxbunvp5g2iebopbfc4iqmbad.onion +#keyserver https://keyserver.ubuntu.com +#keyserver hkps://na.pool.sks-keyservers.net +#hkp-cacert /etc/ssl/certs/sks-keyservers.netCA.crt diff --git a/home/private_dot_gnupg/private_gpg-agent.conf b/home/private_dot_gnupg/private_gpg-agent.conf new file mode 100644 index 0000000..da44fbb --- /dev/null +++ b/home/private_dot_gnupg/private_gpg-agent.conf @@ -0,0 +1,16 @@ +# GNU Privacy Guard agent configuration + +enable-extended-key-format +auto-expand-secmem + +#enable-ssh-support +ssh-fingerprint-digest sha256 + +pinentry-program /usr/bin/pinentry-qt5 +grab +default-cache-ttl 900 # seconds +default-cache-ttl-ssh 900 # seconds +max-cache-ttl 14400 # seconds +max-cache-ttl-ssh 14400 # seconds + +s2k-count 1000000000 diff --git a/home/private_dot_gnupg/private_gpg.conf b/home/private_dot_gnupg/private_gpg.conf new file mode 100644 index 0000000..2f4ca76 --- /dev/null +++ b/home/private_dot_gnupg/private_gpg.conf @@ -0,0 +1,80 @@ +# GNU Privacy Guard configuration + +# Default operands + +default-key 02A755B28155AA0F2609452C16D4DB03794181FF +default-key 77C3008070A3649C924D15F0C780D6E774E1C1E9! +encrypt-to 40CEFE251D4BEF21CA597E2B3AC22943C2252AE2! +encrypt-to 4ED1E061CB2490E90612D4CC3C2D6878CD9B6FFA! +encrypt-to 39F2400B31A4D2F510F2838B32A6462EF33FBF44! +local-user 77C3008070A3649C924D15F0C780D6E774E1C1E9! +sender ivan@nisavid.io + +# General operations + +interactive +require-secmem +limit-card-insert-tries 3 +exit-on-status-write-error + +# Interactive output + +with-secret +with-key-origin +with-wkd-hash +display-charset utf-8 +utf8-strings + +keyid-format long +with-fingerprint +list-options show-photos,show-usage,show-policy-urls,show-notations,show-uid-validity +#verify-options show-photos,show-policy-urls,show-notations,show-keyserver-urls,show-uid-validity,pka-lookups,pka-trust-increase +verify-options show-photos,show-policy-urls,show-notations,show-keyserver-urls,show-uid-validity +photo-viewer viu --width=40 - >/dev/tty + +# Trust + +trust-model tofu+pgp +auto-check-trustdb +tofu-default-policy auto +completes-needed 1 +marginals-needed 3 +min-cert-level 1 +max-cert-depth 6 +ask-cert-level +default-cert-level 1 + +# Remote keys + +auto-key-locate local,wkd,dane,cert,pka,ldap,keyserver +auto-key-retrieve +default-keyserver-url hkps://keys.openpgp.org +keyserver-options no-honor-keyserver-url timeout=12 include-revoked + +# Artifacts + +escape-from-lines +no-emit-version +no-comments + +# Algorithms + +# Requires GnuPG compiled with --enable-large-secmem +#enable-large-rsa +disable-pubkey-algo DSA ECDSA + +personal-cipher-preferences TWOFISH AES256 CAMELLIA256 AES192 CAMELLIA192 +s2k-cipher-algo TWOFISH +disable-cipher-algo IDEA 3DES + +personal-digest-preferences SHA512 SHA384 SHA256 RIPEMD160 +s2k-digest-algo SHA512 +s2k-mode 3 +cert-digest-algo SHA512 + +personal-compress-preferences BZIP2 ZLIB ZIP Uncompressed +compress-level 9 +bzip2-compress-level 9 + +default-new-key-algo ed25519/cert,sign+cv25519/encr +default-preference-list TWOFISH AES256 CAMELLIA256 AES192 CAMELLIA192 SHA512 SHA384 SHA256 RIPEMD160 BZIP2 ZLIB ZIP Uncompressed diff --git a/home/private_dot_gnupg/private_gpgsm.conf b/home/private_dot_gnupg/private_gpgsm.conf new file mode 100644 index 0000000..c5ed848 --- /dev/null +++ b/home/private_dot_gnupg/private_gpgsm.conf @@ -0,0 +1,8 @@ +# GNU Privacy Guard S/MIME configuration + +enable-crl-checks +enable-ocsp +auto-issuer-key-retrieve +validation-model steed + +cipher-algo AES256 diff --git a/home/private_dot_gnupg/private_scdaemon.conf b/home/private_dot_gnupg/private_scdaemon.conf new file mode 100644 index 0000000..6e149dc --- /dev/null +++ b/home/private_dot_gnupg/private_scdaemon.conf @@ -0,0 +1,6 @@ +# GnuPG smartcard daemon configuration + +#pcsc-driver /usr/lib/libpcsclite.so +#pcsc-shared +#disable-ccid +#card-timeout 12 diff --git a/home/private_dot_local/.keep b/home/private_dot_local/.keep new file mode 100644 index 0000000..e69de29 diff --git a/home/private_dot_local/private_share/.keep b/home/private_dot_local/private_share/.keep new file mode 100644 index 0000000..e69de29 diff --git a/home/run_after_restore-acl.sh b/home/run_after_restore-acl.sh new file mode 100644 index 0000000..58085bc --- /dev/null +++ b/home/run_after_restore-acl.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Restore the ACLs of any chezmoi-managed filesystem nodes that have permissions +# settings that cannot be expressed in chezmoi's source state attributes. +# +# See the accompanying save script for more information. +# +# This script restores the saved permissions after `chezmoi apply` changes them +# during its update step. + +ACL_FILE="${XDG_STATE_HOME:-$HOME/.local/state}/chezmoi/acl" + +if [ -f "$ACL_FILE" ] && [ -s "$ACL_FILE" ]; then + echo "Restoring original permissions for the following paths:" >&2 + grep '^# file: ' "$ACL_FILE" | cut -d' ' -f3- >&2 + + cd "$HOME" || exit 1 + setfacl --restore="$ACL_FILE" || exit 1 +fi + +rm -f "$ACL_FILE" diff --git a/home/run_before_save-acl.sh b/home/run_before_save-acl.sh new file mode 100644 index 0000000..6d1df6b --- /dev/null +++ b/home/run_before_save-acl.sh @@ -0,0 +1,98 @@ +#!/bin/sh + +# Save the ACLs of any chezmoi-managed filesystem nodes that have permissions +# settings that cannot be expressed in chezmoi's source state attributes. +# +# Using its `private`, `readonly`, and `executable` attributes, chezmoi +# effectively supports declaring the following octal permission modes: +# +# • For directories: 0755, 0700, 0555, 0500 +# +# • For regular files: 0755, 0700, 0644, 0600, 0555, 0500, 0444, 0400 +# +# It has no support for declaring the more granular permissions afforded +# by file access control lists (ACLs). +# +# When `chezmoi add` encounters a node whose permissions cannot be expressed +# in its source state attributes, it effectively saves an incorrect permissions +# state for that node. This can be problematic: +# +# 1. The correct permissions are not saved in the chezmoi source state, +# so they are not declaratively managed by chezmoi in the same manner +# as the permission modes that it supports. If the target state deviates +# from the desired permissions, `chezmoi diff` will not report this, +# and `chezmoi apply` will not correct it. On a newly configured system, +# `chezmoi init` does not replicate the permissions on the original system. +# +# 2. Chezmoi applies those incorrectly stored permissions on a subsequent +# `chezmoi apply`, even if the target state hasn't actually changed since +# `chezmoi add` was run on it. This can remove permissions that are +# necessary for functionality and add permissions that open up security +# vulnerabilities. +# +# 3. If the node has an ACL that includes an effective rights mask, then +# `chezmoi apply` may silently change that mask. Unlike its changes +# to the traditional permission mode bits---which show up +# in a `chezmoi diff`---it does not notify the user at any point +# about this change. To correct the mask, the user must know what the mask +# was previously and manually restore it after each `chezmoi apply`. +# +# 4. There is no way to tell chezmoi to behave otherwise---neither globally +# nor for a particular node. +# +# Whereas, in principle, declaratively managing dotfile permissions is useful, +# these limitations pose problems that are easy to miss and potentially +# introduce issues with functionality and security. This script +# (and the accompanying restore script) implements a partial workaround +# for this conundrum. It does not address the inability to fully replicate +# the permissions between chezmoi installations, but it does effectively prevent +# `chezmoi apply` from mangling the permissions on the original system. +# More precisely, it unmangles them at the end of each `chezmoi apply`. +# +# This script traverses all the chezmoi-managed filesystem nodes. For any node +# that has an ACL or a permission mode that chezmoi doesn't support, it saves +# the permissions settings to a state file. The accompanying restore script +# subsequently restores those saved permissions after `chezmoi apply` changes +# them during its update step. + +ACL_FILE="${XDG_STATE_HOME:-$HOME/.local/state}/chezmoi/acl" +mkdir -p "$(dirname "$ACL_FILE")" +: >"$ACL_FILE" + +cd -- "$HOME" || exit 1 + +chezmoi managed | while read -r item; do + [ -e "$item" ] || continue + [ -L "$item" ] && continue + [ -d "$item" ] || [ -f "$item" ] || continue + + save=0 + + if [ "$( + getfacl -- "$item" 2>/dev/null | + grep -cvE '^$|^#|^(user|group|other)::' + )" -ne 0 ]; then + save=1 + else + perms=$(stat -c %a "$item") + if [ -d "$item" ]; then + case $perms in + 755 | 700 | 555 | 500) ;; + *) + save=1 + ;; + esac + elif [ -f "$item" ]; then + case $perms in + 644 | 600 | 444 | 755 | 700 | 555 | 500 | 400) ;; + *) + save=1 + ;; + esac + fi + fi + + if [ "$save" -eq 1 ]; then + getfacl -- "$item" >>"$ACL_FILE" + fi +done diff --git a/home/symlink_dot_zshenv b/home/symlink_dot_zshenv new file mode 100644 index 0000000..ff06c00 --- /dev/null +++ b/home/symlink_dot_zshenv @@ -0,0 +1 @@ +.config/zsh/zshenv.zsh