Skip to content

Instantly share code, notes, and snippets.

@GinShio
Last active September 13, 2022 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GinShio/4a20280056b6c9d4108980b283ae066b to your computer and use it in GitHub Desktop.
Save GinShio/4a20280056b6c9d4108980b283ae066b to your computer and use it in GitHub Desktop.
setup the environment
#!/usr/bin/env bash
# update source
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo add-apt-repository ppa:kelleyk/emacs
sudo apt update && sudo apt upgrade
# common environment
sudo apt install -y fish ripgrep wget emacs28 \
git git-lfs git-extras git-flow git-doc \
neofetch screenfetch screen fcitx5 fcitx5-rime daemonize \
proxychains aspell imagemagick calibre sqlite3 zip unzip
# C++ environment
sudo apt install -y build-essential gcc clang cmake ninja-build \
gdb lldb lld ccls clang-format clang-tidy clang-tools iwyu
# Rust environment
sudo apt install -y rust-all
# JVM environment
sudo apt install -y default-jdk default-jre default-jre-headless
# Python3 environment
sudo apt install -y python3 python3-pip python3-venv python3-doc pylint
sudo pip3 install pyright
# NodeJS environment
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install -y nodejs yarn
# Beam environment
sudo apt install -y erlang erlang-doc erlang-manpages elixir
# font
sudo apt install -y fonts-font-awesome fonts-noto-cjk fonts-noto-cjk-extra \
fonts-unifont fonts-wqy-microhei fonts-wqy-zenhei
# for emacs
sudo apt install -y libvterm-bin libtool-bin
# end
sudo apt autoremove
#!/usr/bin/env fish
# copy this file to ~/.config/fish/config
set -x -g PATH $PATH ~/.local/bin
if status is-interactive
# Commands to run in interactive sessions can go here
set --erase fish_greeting
function setconda
source $HOME/.local/share/anaconda3/etc/fish/conf.d/conda.fish
end
function unproxy
set -e http_proxy
set -e https_proxy
end
function __ginshio_command_abbreviation
#alias cat "lolcat"
alias clear "clear && echo -en \"\e[3J\""
alias ping "ping -c 8"
#alias oneko=" oneko -fg brown -bg white -speed 16 -idle 100"
#alias uuid=" cat /proc/sys/kernel/random/uuid"
#abbr -a pc "proxychains4"
#abbr -a spc "sudo proxychains4"
end
function __ginshio_init_systemV
end
function __ginshio_init_systemd
abbr -a Isrt 'sudo systemctl start'
abbr -a Istp 'sudo systemctl stop'
abbr -a Irst 'sudo systemctl restart'
abbr -a Irlod 'sudo systemctl reload'
abbr -a Istat 'systemctl status'
abbr -a Ikill 'sudo systemctl kill'
abbr -a Ienb 'sudo systemctl enable'
abbr -a Idsbl 'sudo systemctl disable'
abbr -a Isus 'systemctl suspend'
abbr -a Irb 'systemctl reboot'
abbr -a Ipo 'systemctl poweroff'
end
# package management
# - repository management
# - ar addrepo 添加源
# - lr repos 列出源
# - ref refresh 刷新源
# - rr removerepo 移除源
# - mr modifyrepo 调整源
# - nr renamerepo 重命名源
# - package management
# - arm autoremove 自动移除
# - in install 安装
# - rm remove 移除
# - si source-install 源码包安装
# - update management
# - dup dist-upgrade 发行版升级
# - lu list-updates 列出需升级的包
# - up update 更新
# - querying
# - if info 获取包信息
# - se search 查询
# - wp what-provides 提供的包
# - locking
# - al addlock 锁定
# - ll locks 列出锁定
# - rl removelock 移除锁定
# - cl cleanlocks ???
# - utilities
# - cln clean 清除本地缓存
# - inr install-new-recommends 安装新的推荐
# - ps check-process 检测最近修改但仍在运行的程序
# - ve verify 验证依赖
function __ginshio_zypp_package_management
# repository management
abbr -a Par "sudo zypper addrepo -fcg"
abbr -a Plr "zypper repos -Np"
abbr -a Pref "sudo -E zypper refresh"
abbr -a Prr "sudo zypper removerepo"
abbr -a Pmr "sudo zypper modifyrepo"
abbr -a Pnr "sudo zypper renamerepo"
# package management
abbr -a Parm ""
abbr -a Pin "sudo -E zypper install"
abbr -a Prm "sudo zypper remove -u"
abbr -a Psi "sudo -E zypper source-install"
# update management
abbr -a Pdup "sudo -E zypper dist-upgrade"
abbr -a Plu "zypper list-updates"
abbr -a Pup "sudo -E zypper update"
# querying
abbr -a Pif "zypper info"
#alias Pif="rpm -qi"
abbr -a Pse "zypper search"
abbr -a Pwp "zypper search --provides"
#alias Pwp="rpm -q --whatprovides"
# locking
abbr -a Pal "sudo zypper addlock"
abbr -a Pll "zypper locks"
abbr -a Prl "sudo zypper removelock"
abbr -a Pcl "sudo zypper cleanlocks"
# utilities
abbr -a Pcln "sudo zypper clean"
abbr -a Pinr "sudo -E zypper install-new-recommends"
abbr -a Pps "zypper ps"
abbr -a Pve "sudo -E zypper verify"
end
function __ginshio_apt_package_management
# need 'software-properties-common'
# repository management
abbr -a Par "sudo add-apt-repository"
abbr -a Plr ""
abbr -a Pref "sudo -E apt update"
abbr -a Prr "sudo add-apt-repository --remove"
abbr -a Pmr "sudo apt edit-sources"
abbr -a Pnr "sudo apt edit-sources"
# package management
abbr -a Parm "sudo apt autoremove --purge"
abbr -a Pin "sudo -E apt install"
abbr -a Prm "sudo apt purge"
abbr -a Psi "sudo -E apt-src install"
# update management
abbr -a Pdup "sudo -E apt dist-upgrade"
abbr -a Plu "apt list --upgradable"
abbr -a Pup "sudo -E apt upgrade"
# querying
abbr -a Pif "apt show"
#alias Pif="dpkg -s"
abbr -a Pse "apt search"
abbr -a Pwp "dpkg -s"
#alias Pwp="dpkg -s"
# locking
abbr -a Pal "sudo apt-mark hold"
abbr -a Pll ""
abbr -a Prl "sudo zypper apt-mark unhold"
abbr -a Pcl ""
# utilities
abbr -a Pcc "sudo apt clean"
abbr -a Pinr ""
abbr -a Pps ""
abbr -a Pve "sudo -E apt check"
end
function __ginshio_pacman_package_management
# repository management
abbr -a Par ""
abbr -a Plr ""
abbr -a Pref "sudo -E pacman -Sy"
abbr -a Prr ""
abbr -a Pmr ""
abbr -a Pnr ""
# package management
abbr -a Parm "sudo pacman -Qdtq | pacman -Rs -"
abbr -a Pin "sudo -E pacman -S"
abbr -a Prm "sudo pacman -Rs"
abbr -a Psi ""
# update management
abbr -a Pdup "sudo -E pacman -Syu"
abbr -a Plu "pacman -Qu"
abbr -a Pup "sudo -E pacman -Syu"
# querying
abbr -a Pif "pacman -Si"
#alias Pif="pacman -Qi"
abbr -a Pse "pacman -Ss"
abbr -a Pwp "pacman -Sii"
#alias Pwp="pacman -Qii"
# locking
abbr -a Pal ""
abbr -a Pll ""
abbr -a Prl ""
abbr -a Pcl ""
# utilities
abbr -a Pcln "sudo pacman -Scc"
abbr -a Pinr ""
abbr -a Pps ""
abbr -a Pve "pacman -Dk"
end
__ginshio_command_abbreviation
switch (bash -c "source /etc/os-release; echo \"\${NAME:-\${DISTRIB_ID}} \${VERSION_ID:-\${DISTRIB_RELEASE}}\"")
# case 'FreeBSD*'
# __ginshio_freebsd_package_management
# __ginshio_init_systemV
# case 'CentOS*' 'Fedora*' 'Oracle*' 'openEuler*'
# __ginshio_dnf_package_management
# __ginshio_init_systemd
case 'Debian*' 'Ubuntu*' 'Kali*' 'Deepin*'
__ginshio_apt_package_management
__ginshio_init_systemd
case 'openSUSE*'
__ginshio_zypp_package_management
__ginshio_init_systemd
case '*'
echo "unknown $distro"
end
set __ginshio_kernel_name (uname -mrs |tr '[:upper:]' '[:lower:]')
switch $__ginshio_kernel_name
case '*microsoft*'
# Microsoft WSL Environment
set -g hostip (ip route|awk '/^default/{print $3}')
set -g loaclip (ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)
set -x DISPLAY "$hostip:0"
set -x INPUT_METHOD fcitx
set -x XMODIFIERS "@im=fcitx"
set -x GTK_IM_MODULE fcitx
set -x QT_IM_MODULE fcitx
daemonize -e /tmp/fcitx5.log -o /tmp/fcitx5.log -p /tmp/fcitx5.pid -l /tmp/fcitx5.pid -a /usr/bin/fcitx5 --disable=wayland
function proxy
set -x -g http_proxy "http://$hostip:8118"
set -x -g https_proxy "http://$hostip:8118"
end
for p in $PATH
switch (wslpath -m $p)
case '//wsl*'
set -p __ginshio_wsl_path $p
case '*'
set -p __ginshio_wsl_cleaned_path $p
end
end
set -x -g PATH $__ginshio_wsl_path
case '*'
function proxy
set -x -g http_proxy "http://localhost:8118"
set -x -g https_proxy "http://localhost:8118"
end
end
end
#!/usr/bin/env bash
mkdir -p ~/.ssh
cat <<-EOF |tee ~/.ssh/config
Host github github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/git
Port 443
Host gitlab gitlab.com
User git
Hostname gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/git
Port 22
Host gitiris git.ginshio.org
User git
Hostname git.ginshio.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/git
Port 22
EOF
#!/usr/bin/env fish
mkdir -p ~/.local/{bin,share,lib}
mkdir -p ~/.local/share/fonts
# fonts
cd (mktemp -d)
wget -O source-serif.zip https://github.com/adobe-fonts/source-serif/releases/download/4.004R/source-serif-4.004.zip
unzip -j source-serif "source-serif-4.004/OTF/*" -d ~/.local/share/fonts/Source-Serif
wget -O source-sans.zip https://github.com/adobe-fonts/source-sans/releases/download/3.046R/OTF-source-sans-3.046R.zip
unzip -j source-sans "OTF/*" -d ~/.local/share/fonts/Source-Sans
wget -O source-code-pro.zip https://github.com/adobe-fonts/source-code-pro/releases/download/2.038R-ro%2F1.058R-it%2F1.018R-VAR/OTF-source-code-pro-2.038R-ro-1.058R-it.zip
unzip -j source-code-pro "SourceCodePro-*.otf" -d ~/.local/share/fonts/Source-Code-Pro
wget -O source-code-var.zip https://github.com/adobe-fonts/source-code-pro/releases/download/2.038R-ro%2F1.058R-it%2F1.018R-VAR/VAR-source-code-var-1.018R.zip
unzip -j source-code-var "*.otf" -d ~/.local/share/fonts/Source-Code-Var
wget -O source-han-serif.zip https://github.com/adobe-fonts/source-han-serif/releases/download/2.001R/03_SourceHanSerifOTC.zip
unzip -j source-han-serif "OTC/*" -d ~/.local/share/fonts/Source-Han-Serif
wget -O source-han-sans.zip https://github.com/adobe-fonts/source-han-sans/releases/download/2.004R/SourceHanSansOTC.zip
unzip -j source-han-sans "OTC/*" -d ~/.local/share/fonts/Source-Han-Sans
wget https://github.com/adobe-fonts/source-han-mono/releases/download/1.002/SourceHanMono.ttc
mv SourceHanMono.ttc ~/.local/share/fonts
wget https://github.com/cormullion/juliamono/releases/download/v0.045/JuliaMono.zip
unzip -j JuliaMono "*.ttf" -d ~/.local/share/fonts/Julia-Mono
wget -O IBM-Plex.zip https://github.com/IBM/plex/releases/download/v6.1.0/OpenType.zip
unzip IBM-Plex -d IBM-Plex/
mv IBM-Plex/OpenType/* ~/.local/share/fonts
wget https://mirrors.ctan.org/fonts/tex-gyre.zip
unzip -j tex-gyre "tex-gyre/opentype/*.otf" -d ~/.local/share/fonts/Tex-Gyre
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Hasklig.zip
unzip Hasklig -d ~/.local/share/fonts/Hasklig-Nerd
# directories
cd (mktemp -d)
mkdir -p ~/{Desktop,Documents,Downloads,Music,Pictures,Projects,Public,Templates,Videos,.temp}
rm -rf ~/.config/user-dirs.dirs
echo "XDG_DESKTOP_DIR=\"$HOME/Desktop\"" |tee ~/.config/user-dirs.dirs
echo "XDG_DOCUMENTS_DIR=\"$HOME/Documents\"" |tee -a ~/.config/user-dirs.dirs
echo "XDG_DOWNLOAD_DIR=\"$HOME/Downloads\"" |tee -a ~/.config/user-dirs.dirs
echo "XDG_MUSIC_DIR=\"$HOME/Music\"" |tee -a ~/.config/user-dirs.dirs
echo "XDG_PICTURES_DIR=\"$HOME/Pictures\"" |tee -a ~/.config/user-dirs.dirs
echo "XDG_PUBLICSHARE_DIR=\"$HOME/Public\"" |tee -a ~/.config/user-dirs.dirs
echo "XDG_TEMPLATES_DIR=\"$HOME/Templates\"" |tee -a ~/.config/user-dirs.dirs
echo "XDG_VIDEOS_DIR=\"$HOME/Videos\"" |tee -a ~/.config/user-dirs.dirs
# other
cd (mktemp -d)
wget -O hugo.tar.gz https://github.com/gohugoio/hugo/releases/download/v0.102.3/hugo_extended_0.102.3_Linux-64bit.tar.gz
tar -C ~/.local/bin -zxvf hugo.tar.gz hugo
bash -c "bash <(wget https://xmake.io/shget.text -O -)"
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
fisher install IlanCosman/tide@v5.0.1
# emacs
cd (mktemp -d)
wget https://github.com/domtronn/all-the-icons.el/raw/master/fonts/all-the-icons.ttf
wget https://github.com/domtronn/all-the-icons.el/raw/master/fonts/file-icons.ttf
wget https://github.com/domtronn/all-the-icons.el/raw/master/fonts/material-design-icons.ttf
wget https://github.com/domtronn/all-the-icons.el/raw/master/fonts/octicons.ttf
wget https://github.com/domtronn/all-the-icons.el/raw/master/fonts/weathericons.ttf
mkdir -p ~/.local/share/fonts/all-the-icons && cp *.ttf ~/.local/share/fonts/all-the-icons
git clone --depth 1 github:doomemacs/doomemacs.git ~/.emacs.d
git clone gitiris:GinShio/doom-private.git ~/.doom.d
emacs --batch --eval "(progn (require 'org) (setq org-confirm-babel-evaluate nil) (org-babel-tangle-file \"~/.doom.d/config.org\"))"
yes |~/.emacs.d/bin/doom install
~/.emacs.d/bin/doom sync
wget -O twemoji-v2.tar "https://raw.githubusercontent.com/iqbalansari/emacs-emojify/9e36d0e8c2a9c373a39728f837a507adfbb7b931/twemoji-fixed-v2.tar"
mkdir -p ~/.emacs.d/.local/cache/emojis && tar -C ~/.emacs.d/.local/cache/emojis -xvf twemoji-v2.tar
#!/usr/bin/env fish
sudo apt install -y libgulkan-dev libgulkan-doc libgulkan-utils vulkan-tools vulkan-validationlayers-dev \
libsdl2-2.0-0 libsdl2-dev libsdl2-doc libglm-dev libglm-doc \
glslang-dev glslang-tools spirv-tools spirv-cross
#!/usr/bin/env fish
# run this script when poweron
set __my_uid (id -u)
set __my_gid (id -g)
# sudo -u root -H mkdir -p /run/user/$__my_uid
# sudo -u root -H chown -R $__my_uid:$__my__gid /run/user/$__my_uid
sudo -u root -H sed -i 's/socks5\t.*/socks5\t'"$hostip"' 1080/g' /etc/proxychains.conf
# sudo -u root -H mount -t drvfs D: /mnt/d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment