Add setup script
This commit is contained in:
1
.bashrc
1
.bashrc
@@ -79,6 +79,7 @@ fi
|
|||||||
if [ -f ~/.bash_aliases ]; then
|
if [ -f ~/.bash_aliases ]; then
|
||||||
. ~/.bash_aliases
|
. ~/.bash_aliases
|
||||||
fi
|
fi
|
||||||
|
|
||||||
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
||||||
|
|
||||||
# enable programmable completion features (you don't need to enable
|
# enable programmable completion features (you don't need to enable
|
||||||
|
|||||||
112
.vimrc
112
.vimrc
@@ -1,53 +1,93 @@
|
|||||||
|
" ========================================
|
||||||
|
" Basic Vim configuration for Debian/Ubuntu
|
||||||
|
" Maintainer: Your Name
|
||||||
|
" Date: 2025-09-23
|
||||||
|
" ========================================
|
||||||
|
|
||||||
" An example for a vimrc file.
|
" Bail out if running as evim
|
||||||
"
|
|
||||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
|
||||||
" Last change: 2019 Dec 17
|
|
||||||
"
|
|
||||||
" To use it, copy it to
|
|
||||||
" for Unix: ~/.vimrc
|
|
||||||
" for Amiga: s:.vimrc
|
|
||||||
" for MS-Windows: $VIM\_vimrc
|
|
||||||
" for Haiku: ~/config/settings/vim/vimrc
|
|
||||||
" for OpenVMS: sys$login:.vimrc
|
|
||||||
|
|
||||||
" When started as "evim", evim.vim will already have done these settings, bail
|
|
||||||
" out.
|
|
||||||
if v:progname =~? "evim"
|
if v:progname =~? "evim"
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Get the defaults that most users want.
|
" Load Vim defaults
|
||||||
source $VIMRUNTIME/defaults.vim
|
source $VIMRUNTIME/defaults.vim
|
||||||
|
|
||||||
if has("vms")
|
" ----------------------------
|
||||||
set nobackup " do not keep a backup file, use versions instead
|
" Swap, backup, and undo setup
|
||||||
else
|
" ----------------------------
|
||||||
set backup " keep a backup file (restore to previous version)
|
" Directories for swap, backup, and undo files
|
||||||
if has('persistent_undo')
|
let s:vim_dir = $HOME . '/.vim'
|
||||||
set undofile " keep an undo file (undo changes after closing)
|
let &directory = s:vim_dir . '/swap//'
|
||||||
endif
|
let &backupdir = s:vim_dir . '/backup//'
|
||||||
|
let &undodir = s:vim_dir . '/undo//'
|
||||||
|
|
||||||
|
" Create directories if they don't exist
|
||||||
|
if !isdirectory(s:vim_dir . '/swap')
|
||||||
|
call mkdir(s:vim_dir . '/swap', 'p')
|
||||||
|
endif
|
||||||
|
if !isdirectory(s:vim_dir . '/backup')
|
||||||
|
call mkdir(s:vim_dir . '/backup', 'p')
|
||||||
|
endif
|
||||||
|
if !isdirectory(s:vim_dir . '/undo')
|
||||||
|
call mkdir(s:vim_dir . '/undo', 'p')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if &t_Co > 2 || has("gui_running")
|
" Enable swap, backup, and persistent undo
|
||||||
" Switch on highlighting the last used search pattern.
|
set swapfile
|
||||||
set hlsearch
|
set backup
|
||||||
endif
|
set undofile
|
||||||
|
|
||||||
" Put these in an autocmd group, so that we can delete them easily.
|
" ----------------------------
|
||||||
|
" Visual & editing enhancements
|
||||||
|
" ----------------------------
|
||||||
|
" Line numbers and cursor line
|
||||||
|
set number
|
||||||
|
set cursorline
|
||||||
|
|
||||||
|
" Highlight search matches
|
||||||
|
set hlsearch
|
||||||
|
set incsearch
|
||||||
|
|
||||||
|
" Matching brackets/parentheses
|
||||||
|
set showmatch
|
||||||
|
|
||||||
|
" Tabs and indentation
|
||||||
|
set tabstop=4
|
||||||
|
set shiftwidth=4
|
||||||
|
set expandtab
|
||||||
|
|
||||||
|
" Syntax highlighting and colors
|
||||||
|
syntax on
|
||||||
|
set termguicolors
|
||||||
|
set background=dark
|
||||||
|
|
||||||
|
" Command history
|
||||||
|
set history=1000
|
||||||
|
set viminfo='1000,<1000,s100
|
||||||
|
|
||||||
|
" Search case handling
|
||||||
|
set ignorecase
|
||||||
|
set smartcase
|
||||||
|
|
||||||
|
" Enable mouse support
|
||||||
|
set mouse=a
|
||||||
|
|
||||||
|
" ----------------------------
|
||||||
|
" Filetype-specific settings
|
||||||
|
" ----------------------------
|
||||||
augroup vimrcEx
|
augroup vimrcEx
|
||||||
au!
|
autocmd!
|
||||||
|
" Text files: wrap at 78 characters
|
||||||
" For all text files set 'textwidth' to 78 characters.
|
|
||||||
autocmd FileType text setlocal textwidth=78
|
autocmd FileType text setlocal textwidth=78
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
" Add optional packages.
|
" ----------------------------
|
||||||
"
|
" Optional plugins
|
||||||
" The matchit plugin makes the % command work better, but it is not backwards
|
" ----------------------------
|
||||||
" compatible.
|
" matchit: improves % for matching tags/brackets
|
||||||
" The ! means the package won't be loaded right away but when plugins are
|
|
||||||
" loaded during initialization.
|
|
||||||
if has('syntax') && has('eval')
|
if has('syntax') && has('eval')
|
||||||
packadd! matchit
|
packadd! matchit
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Done
|
||||||
|
|
||||||
|
|||||||
45
setup.sh
Normal file
45
setup.sh
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
echo ">>> Bootstrapping new Debian-like machine..."
|
||||||
|
|
||||||
|
# 1. Update package list and install essentials
|
||||||
|
echo ">>> Installing bash, tmux, and vim..."
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install -y bash tmux vim git curl
|
||||||
|
|
||||||
|
# 2. Clone your dotfiles (bare repo style)
|
||||||
|
if [ ! -d "$HOME/.dotfiles" ]; then
|
||||||
|
echo ">>> Cloning dotfiles repo..."
|
||||||
|
git clone --bare https://gitea.james-server.duckdns.org/james/dotfiles $HOME/.dotfiles
|
||||||
|
else
|
||||||
|
echo ">>> Dotfiles repo already exists."
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# 3. Checkout dotfiles
|
||||||
|
dotfiles() {
|
||||||
|
/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME" "$@"
|
||||||
|
}
|
||||||
|
echo ">>> Checking out dotfiles..."
|
||||||
|
if ! dotfiles checkout; then
|
||||||
|
echo ">>> Conflicts detected! Backing up existing dotfiles..."
|
||||||
|
mkdir -p $HOME/.dotfiles-backup
|
||||||
|
dotfiles checkout 2>&1 | grep -E "\s+\." | awk '{print $1}' | \
|
||||||
|
xargs -I{} mv {} $HOME/.dotfiles-backup/{}
|
||||||
|
dotfiles checkout
|
||||||
|
fi
|
||||||
|
|
||||||
|
dotfiles config --local status.showUntrackedFiles no
|
||||||
|
|
||||||
|
# 4. setup tmux
|
||||||
|
mkdir -p ~/.tmux/plugins
|
||||||
|
if [ ! -d ~/.tmux/plugins/tpm ]; then
|
||||||
|
echo ">>> Installing Tmux Plugin Manager..."
|
||||||
|
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo ">>> Done! Bash, tmux, vim, and dotfiles are ready."
|
||||||
|
|
||||||
Reference in New Issue
Block a user