From e1056d8d54538913ccde53b9e7f54b6772cd6a37 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Tue, 29 Oct 2024 20:11:58 -0400 Subject: [PATCH] initial --- dotfiles/.bashrc | 165 +++++++++++++++++++++++++++++++++++++++++ dotfiles/.bashrc_local | 9 +++ dotfiles/.gitconfig | 28 +++++++ dotfiles/.pspgconf | 40 ++++++++++ dotfiles/.psqlrc | 9 +++ dotfiles/.tmux.conf | 32 ++++++++ dotfiles/.vimrc | 75 +++++++++++++++++++ install_postgres.sh | 12 +++ install_python3.sh | 24 ++++++ setup_env.sh | 79 ++++++++++++++++++++ sync.sh | 1 + 11 files changed, 474 insertions(+) create mode 100644 dotfiles/.bashrc create mode 100644 dotfiles/.bashrc_local create mode 100644 dotfiles/.gitconfig create mode 100644 dotfiles/.pspgconf create mode 100644 dotfiles/.psqlrc create mode 100644 dotfiles/.tmux.conf create mode 100644 dotfiles/.vimrc create mode 100755 install_postgres.sh create mode 100755 install_python3.sh create mode 100755 setup_env.sh create mode 100755 sync.sh diff --git a/dotfiles/.bashrc b/dotfiles/.bashrc new file mode 100644 index 0000000..a7d0fa6 --- /dev/null +++ b/dotfiles/.bashrc @@ -0,0 +1,165 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +vc() { + git add . + git commit -m "commit: $(date "+%Y-%m-%d %H:%M:%S")" + git push +} +# some more ls aliases +alias ll='ls -alFh' +alias la='ls -A' +alias l='ls -CF' +#alias lb='lsblk -o+FSAVAIL,FSUSED,FSUSE%,MODEL,PARTTYPENAME,STATE' +alias lb='lsblk -o+FSTYPE,FSAVAIL,FSUSED,FSUSE%,MODEL' +alias opg="lsof 2>/dev/null +D . | grep 'pg.*swp$' | awk '{print \$9}' | sed 's/\.swp//g' | sed 's/\/\./\//g'" +alias osw="lsof 2>/dev/null +D . | awk '\$NF ~ /swp$/ {print \$9}' | sed 's/\.swp//g' | sed 's/\/\./\//g'" +alias xpg="lsof 2>/dev/null +D . | grep 'pg.*swp$' | awk '{print \$9}' | sed 's/\.swp//g' | sed 's/\/\./\//g' | xargs -r $PG -f" +alias xsw="lsof 2>/dev/null +D . | grep '.*swp$' | awk '{print \$9}' | sed 's/\.swp//g' | sed 's/\/\./\//g' | xargs -r $PG -f" +alias ons='lsof +D ~/.local/state/nvim/swap/ | grep -o "/swap/.*" | cut -c 7- | tr "%" "/" | sed "s/\\.swp$//" | grep "$(pwd)"' +alias xns='lsof +D ~/.local/state/nvim/swap/ | grep -o "/swap/.*" | cut -c 7- | tr "%" "/" | sed "s/\\.swp$//" | sed "s/\\.swo$//" | grep "$(pwd | sed "s|^//|/|")" | fzf | xargs -I % $PG -f %' +alias xnsp='lsof +D ~/.local/state/nvim/swap/ | grep -o "/swap/.*" | cut -c 7- | tr "%" "/" | sed "s/\\.swp$//" | sed "s/\\.swo$//" | grep "$(pwd | sed "s|^//|/|")" | fzf | xargs -I % $PG -f % | pspg' +#alias xnsp='lsof +D ~/.local/state/nvim/swap/ | grep -o "/swap/.*" | cut -c 7- | tr "%" "/" | sed "s/\\.swp$//" | grep "$(pwd)" | fzf | xargs -I % $PG -f % | pspg' +alias mns='fzf | xargs -I {} sqlcmd -U Pricing -S mid-sql02 -C -i {} | pspg' +alias xmsp='lsof +D ~/.local/state/nvim/swap/ | grep -o "/swap/.*" | cut -c 7- | tr "%" "/" | sed "s/\\.swp$//" | grep "$(pwd | sed "s|^//|/|")" | fzf | xargs -I % $MS -i % | pspg' +alias nv='~/nvim-linux64/bin/nvim' +alias gs='git status -s' +alias ga='git status --untracked-files=all -s | fzf -m | awk "{print \$2}" | xargs git add ' +alias gx='git status --untracked-files=all -s | fzf -m | awk "{print \$2}" | xargs git checkout ' +alias td='rg "\- \[[^x]\]"' +# alias tdo='rg "\- \[[^x]\]" | fzf | xargs nvim' +alias tdo='rg "\- \[ \]" --line-number | fzf | awk -F: "{print \$1, \"+\"\$2}" | xargs -r nvim' +alias gr='git reset HEAD' +alias gc='git commit -v' +alias gd='git difftool' +alias gl='git log --graph --oneline --format="%C(yellow)%h %C(green)%an%Creset %C(blue)%ad%Creset %s"' +alias cj='cd ~/storage/shared/Documents/journal/' +alias jr='cd ~/storage/shared/Documents/journal/ && git pull && vc && cd -' +alias hc='cd ~/storage/shared/Documents/hc_notes/ && git pull && git push && cd -' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +#EDITOR=/usr/bin/vim.basic +export EDITOR=vim +export VISUAL=vim +PAGER="less" +LESS="-S" +export PSQL_PAGER="pspg" + +if [ -f "$HOME/.bash-git-prompt/gitprompt.sh" ]; then + GIT_PROMPT_ONLY_IN_REPO=1 + source $HOME/.bash-git-prompt/gitprompt.sh +fi + +bind 'set bell-style none' + +[ -f ~/dot_config/.bashrc_local ] && source ~/dot_config/.bashrc_local +export PATH=$PATH:~/lua-language-server/bin diff --git a/dotfiles/.bashrc_local b/dotfiles/.bashrc_local new file mode 100644 index 0000000..58d870c --- /dev/null +++ b/dotfiles/.bashrc_local @@ -0,0 +1,9 @@ +#export IPTOKEN= +#export PG="psql -U ptrowbridge -d ubm -p 5432 -h usmidsap01" +#export MS="sqlcmd.exe -S mid-sql02 -i" +#export JAVA_HOME=/opt/jdk-19.0.1 +#export PATH=$PATH:$JAVA_HOME/bin +#export PATH=$PATH:/opt/gradle/gradle-7.6/bin +#export RUNNER_PATH=/opt/runner/ +#export DB2PW= +#export PGPW= diff --git a/dotfiles/.gitconfig b/dotfiles/.gitconfig new file mode 100644 index 0000000..514f8cf --- /dev/null +++ b/dotfiles/.gitconfig @@ -0,0 +1,28 @@ +[user] + email = paul@hptrow.me + name = Paul Trowbridge +[core] + autocrlf = input + editor = vim +[push] + default = simple +[alias] + pushall = !git remote | xargs -L1 git push --all +[log] + date = format:%Y-%m-%d %H:%M:%S +[format] + pretty = format:'%C(yellow)%h %Cred%ad %Cblue%an %Cgreen%d %Creset%s' +[diff] + tool = vimdiff +[safe] + directory = /var/www/kimai2 + directory = /var/www/html/resume/ + directory = /var/www/html/resume + directory = /opt/forecast_api/ + directory = /opt/forecast_api + directory = /etc/postgresql/15/main/ + directory = /etc/postgresql/15/main + directory = /storage/emulated/0/Documents/journal + directory = /storage/emulated/0/Documents/hc_notes +[pull] + rebase = false diff --git a/dotfiles/.pspgconf b/dotfiles/.pspgconf new file mode 100644 index 0000000..b1f6cd4 --- /dev/null +++ b/dotfiles/.pspgconf @@ -0,0 +1,40 @@ +ascii_menu = false +bold_labels = false +bold_cursor = false +ignore_case = false +ignore_lower_case = false +no_cursor = false +no_sound = false +no_mouse = false +less_status_bar = false +no_highlight_search = false +no_highlight_lines = false +force_uniborder = false +show_rownum = false +without_commandbar = false +without_topbar = false +vertical_cursor = true +on_sigint_exit = false +no_sigint_search_reset = false +double_header = false +quit_on_f3 = false +pgcli_fix = false +xterm_mouse_mode = true +show_scrollbar = true +menu_always = false +empty_string_is_null = true +last_row_search = true +progressive_load_mode = true +highlight_odd_rec = true +hide_header_line = false +on_exit_reset = false +on_exit_clean = false +on_exit_erase_line = false +on_exit_sgr0 = false +direct_color = false +theme = 18 +border_type = 2 +default_clipboard_format = 0 +clipboard_app = 0 +hist_size = 500 +esc_delay = -1 diff --git a/dotfiles/.psqlrc b/dotfiles/.psqlrc new file mode 100644 index 0000000..31e531c --- /dev/null +++ b/dotfiles/.psqlrc @@ -0,0 +1,9 @@ +-- Switch pagers with :x and :xx commands +\set x '\\setenv PAGER ''less -S''' +\set xx '\\setenv PAGER \'pspg -bX --no-mouse\'' +\timing on +\set QUIET 1 +\pset linestyle unicode +-- \pset border 2 +\pset null ∅ +\unset QUIET diff --git a/dotfiles/.tmux.conf b/dotfiles/.tmux.conf new file mode 100644 index 0000000..b486e1d --- /dev/null +++ b/dotfiles/.tmux.conf @@ -0,0 +1,32 @@ +set -g default-terminal 'screen-256color' +#attempt to navigate panes like vim +bind -r h select-pane -L # move left +bind -r j select-pane -D # move down +bind -r k select-pane -U # move up +bind -r l select-pane -R # move right +set -g mouse on +bind -n C-PgDn next-window +bind -n C-PgUp previous-window + +#plugin manager for install tmux-resurrect +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'jimeh/tmux-themepack' +set -g @themepack 'powerline/default/cyan' +#-----------------------nova--------------------------------------------- +#set -g @plugin 'o0th/tmux-nova' +#set -g @nova-nerdfonts true +#set -g @nova-nerdfonts-left  +#set -g @nova-nerdfonts-right  +#set -g @nova-segment-mode "#{?client_prefix,Ω,ω}" +#set -g @nova-segment-mode-colors "#50fa7b #282a36" +#set -g @nova-segment-whoami "#(whoami)@#h" +#set -g @nova-segment-whoami-colors "#50fa7b #282a36" +#set -g @nova-pane "#I#{?pane_in_mode,  #{pane_mode},}  #W" +#set -g @nova-rows 0 +#set -g @nova-segments-0-left "mode" +#set -g @nova-segments-0-right "whoami" + +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +run '~/.tmux/plugins/tpm/tpm' + diff --git a/dotfiles/.vimrc b/dotfiles/.vimrc new file mode 100644 index 0000000..6e2ac55 --- /dev/null +++ b/dotfiles/.vimrc @@ -0,0 +1,75 @@ +set nocompatible +filetype off + +" set the runtime path to include Vundle and initialize +set rtp+=~/.vim/bundle/Vundle.vim +call vundle#begin() +" let Vundle manage Vundle, required +Plugin 'gmarik/Vundle.vim' +Plugin 'vim-airline/vim-airline' +Plugin 'kien/ctrlp.vim' +Plugin 'scrooloose/nerdtree' +"Plugin 'edkolev/tmuxline.vim' +Plugin 'vim-airline/vim-airline-themes' +Plugin 'leafgarland/typescript-vim' +Plugin 'peitalin/vim-jsx-typescript' +"Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'} +" All of your Plugins must be added before the following line +call vundle#end() " required +filetype plugin indent on " required + +map j +map k +map h +map l +let NERDTreeShowHidden=1 +set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab +set mouse=a +set nowrap +colorscheme desert +syntax on +set splitright +set splitbelow +set number +"---------explorer------ +let g:netrw_banner = 0 +let g:netrw_liststyle = 3 +let g:netrw_browse_split = 4 +let g:netrw_altv = 1 +let g:netrw_winsize = 25 +"----airline tabs for buffers------- +let g:airline#extensions#tabline#enabled = 1 +let g:airline_theme = 'violet' +let g:airline_solarized_bg='dark' +let g:tmuxline_powerline_separators = 1 +let g:airline_powerline_fonts = 1 +"----markdown folding------------ +"let g:vim_markdown_folding_disabled = 1 +set nofoldenable " disable folding +"---general-------------------- +let mapleader = ";" +set showcmd +map a :bn +map f :bp +map d :bp:bd # +"---move the whole page without moving the cursor--- +nnoremap J +nnoremap K +"-----nerdtree-------------------- +nmap e :NERDTreeToggle +" Search as you type, highlight results +set incsearch +set showmatch +set hlsearch +set mouse=a +"----disable the bell; t_vb is required to be set to nothing +set visualbell +set t_vb= +nnoremap \\ :noh " Clear higlighting +set nowrap +"nnoremap :noh +" Resize windows +nnoremap 5+ +nnoremap 5- +nnoremap 10> +nnoremap 10< diff --git a/install_postgres.sh b/install_postgres.sh new file mode 100755 index 0000000..e998f21 --- /dev/null +++ b/install_postgres.sh @@ -0,0 +1,12 @@ +# Create the file repository configuration: +sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' + +# Import the repository signing key: +wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - + +# Update the package lists: +sudo apt-get update + +# Install the latest version of PostgreSQL. +# If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql': +sudo apt-get -y install postgresql diff --git a/install_python3.sh b/install_python3.sh new file mode 100755 index 0000000..d280195 --- /dev/null +++ b/install_python3.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Update the package list +sudo apt-get update + +# Install the software-properties-common package +sudo apt-get install software-properties-common + +# Add the deadsnakes PPA to the sources list +sudo add-apt-repository ppa:deadsnakes/ppa + +# Update the package list again +sudo apt-get update + +# Check the latest version of Python 3 available +latest_version=$(apt-cache madison python3 | awk '{print $3}' | grep "^3\." | sort -V | tail -1) + +# Install the latest version of Python 3 +sudo apt-get install -y python3=$latest_version + +# Verify the installation +python3 --version +which python3 + diff --git a/setup_env.sh b/setup_env.sh new file mode 100755 index 0000000..241d4c8 --- /dev/null +++ b/setup_env.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# Function to install packages +install_packages() { + echo "Updating package list..." + sudo apt update + echo "Installing basic packages..." + sudo apt install -y tmux vim git pspg bat fzf ripgrep +} + +# Install Tmux Plugin Manager (TPM) if not already installed +install_tpm() { + if [[ ! -d ~/.tmux/plugins/tpm ]]; then + echo "Installing Tmux Plugin Manager..." + git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm + else + echo "Tmux Plugin Manager already installed, skipping..." + fi +} + +# Install Vundle (Vim plugin manager) if not already installed +install_vundle() { + if [[ ! -d ~/.vim/bundle/Vundle.vim ]]; then + echo "Installing Vundle for Vim..." + git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim + else + echo "Vundle already installed, skipping..." + fi +} + +# Install git-bash-prompt if not already installed +install_git_bash_prompt() { + if [[ ! -d ~/.bash-git-prompt ]]; then + echo "Installing git-bash-prompt..." + git clone https://github.com/magicmonty/bash-git-prompt.git ~/.bash-git-prompt --depth=1 + else + echo "git-bash-prompt already installed, skipping..." + fi +} + +# Back up and create symlink +create_symlink() { + local target=$1 + local link_name=$2 + + if [[ -L $link_name || -f $link_name ]]; then + echo "Backing up existing $link_name to ${link_name}.backup" + mv "$link_name" "${link_name}.backup" + fi + + echo "Creating symlink: $link_name -> $target" + ln -s "$target" "$link_name" +} + +# Deploy configuration files as symlinks +deploy_configs() { + echo "Deploying configuration files as symlinks..." + CONFIG_DIR="$(pwd)/dotfiles" # Use the local 'dotfiles' directory in the repo + + for config in .bashrc .bashrc_local .vimrc .gitconfig .pspgconf .psqlrc .tmux.conf ; do + create_symlink "$CONFIG_DIR/$config" ~/$config + done + + echo "Sourcing .bashrc..." + source ~/.bashrc +} + +# Main script +main() { + install_packages + install_tpm + install_vundle + install_git_bash_prompt + deploy_configs + echo "Setup complete! Please restart your shell or run 'source ~/.bashrc' for changes to take effect." +} + +main + diff --git a/sync.sh b/sync.sh new file mode 100755 index 0000000..3a1ee37 --- /dev/null +++ b/sync.sh @@ -0,0 +1 @@ +rsync -azv -e ssh -r /storage/emulated/0/DCIM/Camera pt@hptrow.me:/home/pt/pics