commit adf8fe7a9c18bce269de4e0e2dca6861d7bc9d2f Author: Ayo Date: Tue Jun 16 10:29:49 2026 +0200 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0bc7935 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*~ +*swp +*swo diff --git a/.mailcap b/.mailcap new file mode 100644 index 0000000..1c56674 --- /dev/null +++ b/.mailcap @@ -0,0 +1 @@ +text/html; links2 -dump %s; nametemplate=%s.html; copiousoutput diff --git a/.muttrc b/.muttrc new file mode 100644 index 0000000..a972b0c --- /dev/null +++ b/.muttrc @@ -0,0 +1,73 @@ +# Load secrets +source ${HOME}/.mutt.secrets + +# About Me +set from = "ayo@ayco.io" +set realname = "Ayo Ayco" + +# Folders +set spoolfile = "+INBOX" +set postponed="+Drafts" +set record="+Sent Messages" +set trash="+Deleted Messages" + +# set ssl_force_tls = yes +# set ssl_starttls = yes +set imap_pipeline_depth=0 + +# Where to put the stuff +set header_cache = "~/.mutt/cache/headers" +set message_cachedir = "~/.mutt/cache/bodies" +set certificate_file = "~/.mutt/certificates" + +# Etc +set mail_check = 30 +set move = no +set imap_keepalive = 900 +set sort = threads +set editor = "vim" + +# GnuPG bootstrap +source ~/.mutt/gpg.rc + +# PGP +set pgp_autosign +set pgp_verify_sig=yes +set pgp_sign_as=ayo@ayco.io # KEY ID + +# Signature +set signature=~/.signature +set sig_dashes + +# Navigate & operate on lists +bind index gg first-entry +bind index G last-entry +bind index,pager a group-reply +bind index o display-message +macro index,pager e "+Archive" +bind index,pager next-entry +bind index,pager previous-entry +# macro index J +# macro index K + +# Navigate folders +macro index,pager gh "+INBOX" +macro index,pager gi "+INBOX" +macro index,pager ga "+Archive" +macro index,pager gd "+Deleted" +macro index,pager gs "+Sent" +macro index,pager gj "+Junk" +macro index,pager gf "+Feed" +macro index,pager gl "+Lists" + +macro index,pager \\u "set pipe_decode = yesurlviewset pipe_decode = no" "view URLs" + +# HTML Mail handling +# load html emails with links2 (config in ~/.mailcap) +auto_view text/html + +# Aliases +source ~/.mutt_aliases + +# vim settings +set editor='vim + -c "set textwidth=72" -c "set wrap" -c "set spell spelllang=en"' diff --git a/.nvidia-settings-rc b/.nvidia-settings-rc new file mode 100644 index 0000000..9ba0454 --- /dev/null +++ b/.nvidia-settings-rc @@ -0,0 +1,87 @@ +# Configuration file for nvidia-settings - the NVIDIA Settings utility +# Generated on Fri Apr 17 18:30:38 2026 +# + +# ConfigProperties: + +RcFileLocale = C +DisplayStatusBar = Yes +SliderTextEntries = Yes +IncludeDisplayNameInConfigFile = No +ShowQuitDialog = Yes +UpdateRulesOnProfileNameChange = Yes +Timer = PowerMizer_Monitor_(GPU_0),Yes,1000 +Timer = Thermal_Monitor_(GPU_0),Yes,1000 +Timer = Memory_Used_(GPU_0),Yes,3000 + +# Attributes: + +0/SyncToVBlank=1 +0/LogAniso=0 +0/FSAA=0 +0/TextureClamping=1 +0/FXAA=0 +0/AllowFlipping=1 +0/FSAAAppControlled=1 +0/LogAnisoAppControlled=1 +0/OpenGLImageSettings=1 +0/FSAAAppEnhanced=0 +0/ShowGraphicsVisualIndicator=0 +[DPY:HDMI-0]/Dithering=0 +[DPY:HDMI-0]/DitheringMode=0 +[DPY:HDMI-0]/DitheringDepth=0 +[DPY:HDMI-0]/ColorSpace=0 +[DPY:HDMI-0]/ColorRange=0 +[DPY:HDMI-0]/SynchronousPaletteUpdates=0 +[DPY:DP-0]/Dithering=0 +[DPY:DP-0]/DitheringMode=0 +[DPY:DP-0]/DitheringDepth=0 +[DPY:DP-0]/ColorSpace=0 +[DPY:DP-0]/ColorRange=0 +[DPY:DP-0]/SynchronousPaletteUpdates=0 +[DPY:DP-1]/Dithering=0 +[DPY:DP-1]/DitheringMode=0 +[DPY:DP-1]/DitheringDepth=0 +[DPY:DP-1]/ColorSpace=0 +[DPY:DP-1]/ColorRange=0 +[DPY:DP-1]/SynchronousPaletteUpdates=0 +[DPY:DP-2]/Dithering=0 +[DPY:DP-2]/DitheringMode=0 +[DPY:DP-2]/DitheringDepth=0 +[DPY:DP-2]/ColorSpace=0 +[DPY:DP-2]/ColorRange=0 +[DPY:DP-2]/SynchronousPaletteUpdates=0 +[DPY:DP-3]/Dithering=0 +[DPY:DP-3]/DitheringMode=0 +[DPY:DP-3]/DitheringDepth=0 +[DPY:DP-3]/ColorSpace=0 +[DPY:DP-3]/ColorRange=0 +[DPY:DP-3]/SynchronousPaletteUpdates=0 +[DPY:DP-4]/Dithering=0 +[DPY:DP-4]/DitheringMode=0 +[DPY:DP-4]/DitheringDepth=0 +[DPY:DP-4]/ColorSpace=0 +[DPY:DP-4]/ColorRange=0 +[DPY:DP-4]/SynchronousPaletteUpdates=0 +[DPY:DP-5]/Dithering=0 +[DPY:DP-5]/DitheringMode=0 +[DPY:DP-5]/DitheringDepth=0 +[DPY:DP-5]/ColorSpace=0 +[DPY:DP-5]/ColorRange=0 +[DPY:DP-5]/SynchronousPaletteUpdates=0 +[DPY:HDMI-1]/RedBrightness=0.010000 +[DPY:HDMI-1]/GreenBrightness=0.010000 +[DPY:HDMI-1]/BlueBrightness=0.010000 +[DPY:HDMI-1]/RedContrast=0.000000 +[DPY:HDMI-1]/GreenContrast=0.000000 +[DPY:HDMI-1]/BlueContrast=0.000000 +[DPY:HDMI-1]/RedGamma=1.000000 +[DPY:HDMI-1]/GreenGamma=1.000000 +[DPY:HDMI-1]/BlueGamma=1.000000 +[DPY:HDMI-1]/Dithering=0 +[DPY:HDMI-1]/DitheringMode=0 +[DPY:HDMI-1]/DitheringDepth=0 +[DPY:HDMI-1]/DigitalVibrance=300 +[DPY:HDMI-1]/ColorSpace=0 +[DPY:HDMI-1]/ColorRange=0 +[DPY:HDMI-1]/SynchronousPaletteUpdates=0 diff --git a/.tmux.conf b/.tmux.conf new file mode 100644 index 0000000..ec56f2e --- /dev/null +++ b/.tmux.conf @@ -0,0 +1,19 @@ +# IMPORTANT: To apply plugins, while on tmux press: , I + +# List of plugins +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' + +# Solarized theme +set -g @plugin 'seebi/tmux-colors-solarized' +set -g @colors-solarized 'light' + +# Terminal type configuration +set -g default-terminal "screen-256color" +set -ga terminal-overrides ",xterm-256color:Tc" + +# Bindings +bind M-c a -c "%{pane_current_path}" + +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +run '~/.tmux/plugins/tpm/tpm' diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..d6287b9 --- /dev/null +++ b/.vimrc @@ -0,0 +1,199 @@ +set encoding=UTF-8 + +set wrap +set linebreak +set nolist " list disables linebreak +set textwidth=0 +set wrapmargin=0 + +set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe,*.*~ " Windows + +highlight LineNr ctermfg=grey + +let g:ctrlp_map = '' +let g:ctrlp_custom_ignore = 'node_modules\|DS_Store\|git' +nmap i=strftime("%Y-%m-%d %a %I:%M %p") +imap =strftime("%Y-%m-%d %a %I:%M %p") + +set ic + +""""""""""" Set tab to 4 spaces +set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab + + +""""""""""" Display line numbers +set nu + + +""""""""""" Disable error bells +set noerrorbells visualbell t_vb= +autocmd GUIEnter * set visualbell t_vb= + + +""""""""""" Key mappings +nmap ga (EasyAlign) +xmap ga (EasyAlign) +map :NERDTreeToggle +map :find +" xmap :wq + +""" from Andrew +nnoremap j gj +nnoremap k gk +xnoremap j gj +xnoremap k gk +nmap = + +nmap J 5j +nmap K 5k +xmap J 5j +xmap K 5k +nmap DD d5d +xmap DD d5d +nmap gh h +nmap gj j +nmap gk k +nmap gl l +nmap gt +nmap gT +nmap :nohl + + +""""""""""" Close vim when NERDTree is the only split left open +autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif + + +""""""""""" Open NERDTree by default +" autocmd StdinReadPre * let s:std_in=1 +" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif + + +""""""""""" Start Enable Vundle +set nocompatible " be iMproved, required +filetype off " required + +" set The runtime path to include Vundle and initialize +set rtp+=~/.vim/bundle/Vundle.vim +call vundle#begin() +" alternatively, pass a path where Vundle should install plugins +"call vundle#begin('~/some/path/here') + +""" let Vundle manage Vundle, required +Plugin 'VundleVim/Vundle.vim' + +""" TODO - review following plugins +Plugin 'tpope/vim-sensible' +Plugin 'vim-airline/vim-airline' +Plugin 'tpope/vim-fugitive' +Plugin 'tpope/vim-surround' +Plugin 'scrooloose/nerdtree' +Plugin 'mattn/emmet-vim' +" Plugin 'jiangmiao/auto-pairs' +Plugin 'ctrlpvim/ctrlp.vim' +Plugin 'junegunn/vim-easy-align' +" Plugin 'instant-markdown/vim-instant-markdown' +Plugin 'ervandew/supertab' +Plugin 'leafgarland/typescript-vim' +Plugin 'dense-analysis/ale' + +""" Syntax highlighting +Plugin 'Sheerun/vim-polyglot' +Plugin 'wuelnerdotexe/vim-astro' + +""" Themes +" Plugin 'ryanoasis/vim-devicons' +Plugin 'morhetz/gruvbox' +Plugin 'Rigellute/shades-of-purple.vim' +Plugin 'NLKNguyen/papercolor-theme' + +" All of your Plugins must be added before the following line +call vundle#end() " required +filetype plugin indent on " required +""""""""""" End Enable Vundle + + +set nocompatible " be iMproved, required +source $VIMRUNTIME/vimrc_example.vim +source $VIMRUNTIME/mswin.vim +behave mswin + +set diffexpr=MyDiff() +function MyDiff() + let opt = '-a --binary ' + if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif + if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif + let arg1 = v:fname_in + if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif + let arg2 = v:fname_new + if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif + let arg3 = v:fname_out + if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif + let eq = '' + if $VIMRUNTIME =~ ' ' + if &sh =~ '\ ' . arg3 . eq +endfunction + + +"""" enable 24bit true color +" If you have vim >=8.0 or Neovim >= 0.1.5 +" Enable true color 启用终端24位色 +syntax enable +set guioptions-=r +set cursorline +if (has('termguicolors')) + let &t_8f = "\[38;2;%lu;%lu;%lum" + let &t_8b = "\[48;2;%lu;%lu;%lum" + set termguicolors + colorscheme shades_of_purple +else + colorscheme gruvbox + set bg=dark +endif + + +if has("gui_running") + if has("gui_gtk2") + set guifont=Inconsolata\ 12 + elseif has("gui_macvim") + set guifont=Menlo\ Regular:h14 + elseif has("gui_win32") + set guifont=Consolas:h11:cANSI + endif +endif + +" set directory where swap files are stored +silent !mkdir -p ~/.vim/swap > /dev/null 2>&1 +silent !mkdir -p ~/.vim/backup > /dev/null 2>&1 +set swapfile +set directory=$HOME/.vim/swap// +set backupdir=$HOME/.vim/backup// + +" set window size +" if has("gui_running") +" " GUI is running or is about to start. +" set lines=50 columns=200 +" else +" " This is console Vim. +" if exists("+lines") +" set lines=50 +" endif +" if exists("+columns") +" set columns=200 +" endif +" endif + +let g:ale_fixers = { +\ '*': ['remove_trailing_lines', 'trim_whitespace'], +\ 'javascript': ['eslint', 'prettier'], +\} + +" Set this variable to 1 to fix files when you save them. +let g:ale_fix_on_save = 1 diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..31c4bfc --- /dev/null +++ b/.zshrc @@ -0,0 +1,14 @@ +export NVM_DIR="$HOME/.nvm" +# [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh" +# [ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" + + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + [ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" + +export PATH="$HOME/.gem/ruby/2.6.0/bin:$PATH" + +alias vi=/opt/homebrew/bin/vim +alias vim=/opt/homebrew/bin/vim + +# Load Angular CLI autocompletion. +source <(ng completion script) diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..592a301 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Ayo Ayco + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..7136f03 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# Ayo's various configuration files + +Clone the repo + +```bash +git clone git@github.com:ayo-run/dotfiles +``` + +Then symlink to correct places. For example, the `.vimrc` usually goes to user home directory + +```bash +cd dotfiles +ln -rsf ./.vimrc ~/ +``` + +## For vim, vundle is used +1. install vundle + +```bash +git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim +``` + +2. open `vim` then run `:PluginInstall` + +[See more](https://github.com/VundleVim/Vundle.vim?tab=readme-ov-file#quick-start) diff --git a/vscode-settings.json b/vscode-settings.json new file mode 100644 index 0000000..7d98c70 --- /dev/null +++ b/vscode-settings.json @@ -0,0 +1,133 @@ +{ + "git.autofetch": true, + "chat.disableAIFeatures": true, + "terminal.integrated.defaultProfile.linux": "bash", + "vim.insertModeKeyBindings": [ + { + "before": ["j", "j"], + "after": [""] + } + ], + "vim.visualModeKeyBindingsNonRecursive": [ + { + "before": ["j"], + "after": ["g", "j"] + }, + { + "before": ["k"], + "after": ["g", "k"] + }, + { + "before": ["J"], + "after": ["5", "j"] + }, + { + "before": ["K"], + "after": ["5", "k"] + }, + { + "before": ["H"], + "after": ["5", "h"] + }, + { + "before": ["L"], + "after": ["5", "l"] + }, + { + "before": ["="], + "after": ["-"] + }, + { + "before": ["-"], + "after": ["+"] + } + ], + "vim.normalModeKeyBindingsNonRecursive": [ + { + "before": ["j"], + "after": ["g", "j"] + }, + { + "before": ["k"], + "after": ["g", "k"] + }, + { + "before": ["J"], + "after": ["5", "j"] + }, + { + "before": ["K"], + "after": ["5", "k"] + }, + { + "before": ["H"], + "after": ["5", "h"] + }, + { + "before": ["L"], + "after": ["5", "l"] + }, + { + "before": ["="], + "after": ["-"] + }, + { + "before": ["-"], + "after": ["+"] + } + ], + "typescript.updateImportsOnFileMove.enabled": "always", + "workbench.iconTheme": "vscode-icons", + "workbench.secondarySideBar.defaultVisibility": "hidden", + "javascript.updateImportsOnFileMove.enabled": "always", + "editor.wordWrap": "wordWrapColumn", + "editor.wordWrapColumn": 100, + "editor.cursorSmoothCaretAnimation": "on", + "editor.smoothScrolling": true, + "oneDarkPro.vivid": true, + "window.autoDetectColorScheme": true, + "github.copilot.enable": { + "*": true, + "plaintext": false, + "markdown": false, + "scminput": false, + "javascript": false + }, + "eslint.codeActionsOnSave.rules": null, + "diffEditor.ignoreTrimWhitespace": false, + "security.workspace.trust.untrustedFiles": "open", + "git.confirmSync": false, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "explorer.confirmDragAndDrop": false, + "editor.semanticHighlighting.enabled": true, + "window.zoomLevel": 1, + "files.exclude": { + "**/*~": true, + "**/*swo": true, + "**/*swp": true + }, + "editor.gotoLocation.multipleDefinitions": "goto", + "vim.useCtrlKeys": false, + "workbench.preferredLightColorTheme": "Shades of Purple", + "workbench.preferredDarkColorTheme": "Shades of Purple (Super Dark)", + "editor.fontLigatures": true, + "editor.fontFamily": "'Fira Code', 'monospace', monospace", + "editor.formatOnSave": true, + "prettier.configPath": "", + "prettier.ignorePath": "", + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[xml]": { + "editor.defaultFormatter": "redhat.vscode-xml" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "git.suggestSmartCommit": false +}