Dotfiles
A set of bash, zsh, tmux, powershell, wsl, nodejs, msys2 configuration and script files.
Install / Use
/learn @epoweripione/DotfilesREADME
Dotfiles & Scripts
A set of bash, zsh, tmux, powershell, wsl, nodejs, msys2 configuration and script files.
These scripts only tested on my pc, laptop & cloud host and may not cover all cases, and may contain errors, use at your own RISK!
Personal use only, make sure do a full test before using them in Production Environment!
Best practice: make a system backup or prepare a live cd before running these scripts!
Linux Distros what I daily use are Manjaro KDE Plasma, Debian, Centos Stream, WSL2 on Windows 11.
Features
Linux
- Zsh as default shell
- Oh My Zsh to managing Zsh configuration
- ys theme for Zsh without Graphical Environment
- Oh My Posh theme for Zsh with Desktop Environment(KDE, GNOME, XFCE, WSL...)
- ZSH theme change script
- Zsh plugins
- Terminal Multiplexers: autostart Zellij/Tmux/Screen session on remote system when logging in via
SSH Package managerswithpacman-stylecommand syntax- Unix commands
- fastfetch
- jq
- fzf
- Modern Unix
- ...
- Helper functions
- public: color echo, version compare...
- system: cron jobs, systemd services, snapper snapshots...
- osinfo: OS type, architecture, release, package manager, icon, virtualized...
- network: ipv4, ipv6, url, web service...
- proxy: get & set proxy
- git: clone, update git repos
- Git_Clone_Update clone or update a git repo:
Git_Clone_Update "username/repository" "$HOME/repository" # default host `https://github.com/` Git_Clone_Update "https://gitlab.com/username/repository" "$HOME/repository" # full repo url Git_Clone_Update "git@github.com:username/repository.git" "$HOME/repository" - Git_Clone_Update_Branch clone or update a git repo only specified branch:
Git_Clone_Update_Branch "https://github.com/username/repository" "$HOME/repository" # auto get default branch Git_Clone_Update_Branch "username/repository" "$HOME/repository" "https://github.com" "dev" # dev branch - Git_Update_Repo_in_SubDir update all git repos in subdirectories
Git_Update_Repo_in_SubDir "$ZSH/custom" # update all ZSH plugins & themes
- Git_Clone_Update clone or update a git repo:
- docker: docker mirrors, pull multiple images...
- installer: functions to install apps
- versions: version manager functions for goup, mise, asdf...
- web
- misc
- Scripts & functions to install apps
- Auto resolve download URL that match running platform, especially for apps release on
Github - Speed up downloads with
axel, if fails usecurlinstead - Automatically extract
executable,man,Zsh completionsfiles from compressed files and install to corresponding directories(/usr/local/bin,/usr/share/man,/usr/local/share/zsh/site-functions)
installPrebuiltBinary rclone "rclone/rclone" # github releases installPrebuiltBinary nnn "jarun/nnn" "nnn-nerd-.*\.tar\.gz" # github releases installPrebuiltBinary earthly "earthly/earthly" "earthly-*" # github releases installPrebuiltBinary "https://dev.yorhel.nl/ncdu" "/download/ncdu-[^<>:;,?\"*|/]+\.tar\.gz" "ncdu-.*\.tar\.gz" # full URL- Install app using brew, cargo, go...
installBuildBinary sd sd cargo installBuildBinary fvm fvm brew installBuildBinary protoc-gen-go protoc-gen-go go "google.golang.org/protobuf/cmd/protoc-gen-go@latest"- Install apps using installer will set mirrors if the world blocked, you can override them in
~/.dotfiles.env.local- Homebrew
- Docker Registry
- DOCKER_MIRROR_LIST=(...)
- Nodejs
- Go
- Rust
- Python/pip
- Anaconda
- Flutter
- Auto resolve download URL that match running platform, especially for apps release on
- Git configs
- Update apps that installed by app store or version managers
- alias for docker:
alias | grep '^docker' - Auto setting environment variables for apps
- Snap
- Homebrew
- PHP
- Java
- Go
- Flutter
- Rust
- Python/pip
- nvm
- nvs
- Ruby
- krew
- Oracle Instant Client
- ...
Debiandistro upgradeCentOS Streamdistro upgrade- Custom environment variables in
~/.dotfiles.env.local- Auto setting proxy if exists, use
127.0.0.1:7890by defaultGLOBAL_PROXY_IP="127.0.0.1" GLOBAL_PROXY_SOCKS_PROTOCOL="socks5" GLOBAL_PROXY_SOCKS_PORT="7890" GLOBAL_PROXY_MIXED_PORT="7890" NO_PROXY_LIST=( "127.0.0.1" "::1" "localhost" ".corp" ".internal" ".local" ".localdomain" ) - git clone options
GIT_CLONE_DEFAULT_OPTION="-c core.autocrlf=false -c core.filemode=false" - installer options
INSTALLER_CHECK_CURL_OPTION="-fsL --connect-timeout 5" INSTALLER_DOWNLOAD_CURL_OPTION="-fSL --connect-timeout 5" INSTALLER_DOWNLOAD_AXEL_OPTION="--num-connections=5 --timeout=30 --alternate" - Github clone & download mirror
GITHUB_HUB_URL="https://github.com" GITHUB_DOWNLOAD_URL="https://github.com" GITHUB_RAW_URL="https://raw.githubusercontent.com" GITHUB_API_TOKEN="" - mirrors
USE_MIRROR_WHEN_BLOCKED="true" # Debian MIRROR_PACKAGE_MANAGER_APT="mirrors.sustech.edu.cn" # Archlinux MIRROR_ARCHLINUX_CN="https://mirrors.sustech.edu.cn" # CentOS Stream MIRROR_CENTOS_STREAM="https://mirrors.aliyun.com/centos-stream" # Rockylinux MIRROR_ROCKYLINUX="https://mirrors.aliyun.com/rockylinux" MIRROR_EPEL_RELEASE="https://mirrors.aliyun.com" # homebrew HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git" HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git" HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles" HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api" # flatpak MIRROR_FLATPAK_URL="https://mirrors.ustc.edu.cn/flathub" # go GOUP_GO_HOST="golang.google.cn" MIRROR_GO_PROXY="https://goproxy.cn,direct" # MIRROR_GO_PROXY="https://goproxy.io,direct" # MIRROR_GO_PROXY="https://mirrors.aliyun.com/
- Auto setting proxy if exists, use
