void

- enter the void 🪐
git clone git://git.acid.vegas/archlinux.git
Log | Files | Refs | Archive

setup (11993B)

      1 #!/bin/bash
      2 # void setup script - developed by acidvegas (https://git.acid.vegas/void)
      3 
      4 # note: After importing keys: printf "FINGERPRINTHERE:6:" | gpg --import-ownertrust
      5 
      6 set -xev
      7 
      8 # Configuration
      9 ARCH=x86_64         # x86_64 or x86_64-musl
     10 CPU=intel           # amd or intel (blank for none)
     11 DISPLAY_SERVER=xorg # xorg or blank for none
     12 GFX_DRIVER=intel    # amd, intel, or nvidia (blank for none)
     13 PI=0                # 0 for desktop, 1 for Raspberry Pi
     14 REMOTE=dropbear     # dropbear or ssh (blank for none)
     15 USERNAME=acidvegas
     16 WIFI_DEV=wlan0
     17 
     18 
     19 GIT_URL="https://raw.githubusercontent.com/acidvegas/void/master"
     20 
     21 setup_root() {
     22 	setup_packages
     23 
     24 	useradd -m -s /bin/bash $USERNAME && gpasswd -a $USERNAME wheel && passwd $USERNAME
     25 	gpasswd -a $USERNAME _incus && gpasswd -a $USERNAME _incus-admin # Typically incus & incus-admin but void uses the underscore prefix
     26 
     27 	for item in 6x11 7x12 7x14; do
     28 		wget -O /usr/share/kbd/consolefonts/ohsnap${item}r.psfu $GIT_URL/font/ohsnap${item}r.psfu
     29 	done
     30 	#printf "\nnohook resolv.conf\n" >> /etc/dhcpcd.conf
     31 	echo "CGROUP_MODE=\"unified\"" >> /etc/rc.conf
     32 	echo "proc /proc proc defaults,hidepid=2 0 0" >> /etc/fstab && mount -o remount /proc
     33 	printf "set boldtext\nset minibar\nset nohelp\nset nowrap\nset quickblank\nset tabsize 4\nunbind ^J main\nset selectedcolor black,red\ninclude \"/usr/share/nano/*.nanorc\"\n" > /etc/nanorc
     34 	printf "\nexport HISTFILE=/dev/null\nexport LESSHISTFILE=/dev/null\nexport PYTHONHISTFILE=/dev/null\n" >> /etc/profile
     35 	printf "#\!/bin/sh\nclear && (echo && printf \"   E N T E R   T H E   V O I D\n"  && echo) | nms -af red\n" > /etc/profile.d/motd.sh
     36 	printf "\nFONT=\"ohsnap6x11r\"\n" >> /etc/rc.conf
     37 	printf "Defaults lecture = always\nDefaults lecture_file = /etc/sudoers.d/sudoers.lecture\nroot ALL=(ALL) ALL\n%%wheel ALL=(ALL) ALL\n" > /etc/sudoers
     38 	printf "\n\033[1m     \033[32m\"Bee\" careful    \033[34m__\n       \033[32mwith sudo!    \033[34m// \ \n                     \\\\\\_/ \033[33m//\n   \033[35m''-.._.-''-.._.. \033[33m-(||)(')\n                     '''\033[0m\n" > /etc/sudoers.d/sudoers.lecture
     39 	printf "\nhsts=0\n" >> /etc/wgetrc
     40 
     41 	# For Drevo Calibur V2 FN key fix
     42 	#echo 0 | sudo pkexec tee /sys/module/hid_apple/parameters/fnmode
     43 
     44 	if [ $REMOTE = "dropbear" ]; then
     45 		LOCAL_IP=$(ip addr show $WIFI_DEV | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1)
     46 		RND_PORT=$(shuf -i 10000-65535 -n 1)
     47 		xbps-install -y dropbear
     48 		printf '#!/bin/sh\nexec 2>&1\n[ -r conf ] && . ./conf\nexec dropbear -p $LOCAL_IP:$RND_PORT -w -s -R -F' > /etc/sv/dropbear/run
     49 	fi
     50 
     51 	# Need to optionally enable dhcp and wpa_supplicant incase we are using ethernet
     52 	for item in dhcpcd incus incus-user socklog-unix nanoklogd wpa_supplicant; do
     53 		ln -sfv /etc/sv/$item /var/service # Use /etc/runit/runsvdir/default/ instead of /var/service if in a chroot environemnt
     54 	done
     55 }
     56 
     57 
     58 setup_nonfree() {
     59 	xbps-install -Suy void-repo-nonfree
     60 
     61 	if [ $CPU = "intel" ]; then
     62 		xbps-install -y intel-ucode linux-firmware-intel
     63 	elif [ $CPU = "amd" ]; then
     64 		xbps-install -y linux-firmware-amd
     65 	fi
     66 
     67 	if [ $DISPLAY_SERVER = "xorg" ]; then
     68 		if [ $GFX_DRIVER = "intel" ]; then
     69 			xbps-install -y  mesa-dri vulkan-loader mesa-vulkan-intel intel-video-accel
     70 		elif [ $GFX_DRIVER = "amd" ]; then
     71 			xbps-install -y mesa-dri vulkan-loader mesa-vulkan-radeon radeon-video-accel # Un-tested
     72 		elif [ $GFX_DRIVER = "nvidia" ]; then
     73 			xbps-install -y nvidia nvidia-libs
     74 		fi
     75 	fi
     76 
     77 	xbps-reconfigure -f linux
     78 }
     79 
     80 
     81 setup_packages() {
     82 	setup_nonfree
     83 
     84 	if [ $DISPLAY_SERVER = "xorg" ]; then
     85 		#xbps-install -y mesa-dri # Raspberry Pi
     86 		xbps-install -y xorg libX11 libX11-devel libXft libXft-devel libXinerama libXinerama-devel libXrandr libXrandr-devel arandr xrandr brightnessctl
     87 		xbps-install -y alacritty dmenu dunst firefox pinentry-dmenu redshift scrot unclutter xclip
     88 		xbps-install -y ohsnap-font font-unifont-bdf freefont-ttf noto-fonts-ttf noto-fonts-ttf-extra noto-fonts-cjk noto-fonts-emoji # These fonts give you the most unicode support coverage (noto)
     89 	fi
     90 
     91 	# Development
     92 	if [ $ARCH = 'x86_64' ]; then
     93 		xbps-install -y gcc
     94 	fi
     95 	xbps-install -y cargo checkbashisms go make patch pkg-config python3 python3-pip
     96 	xbps-install -y ansible aws-cli python3-aiodns python3-aiofiles python3-aiohttp python3-boto3 python3-Flask terraform
     97 	xbps-install -y bluetuith
     98 
     99 	# Essentials
    100 	xbps-install -y curl dropbear git jq openssh progress rsync socklog-void tmux tor tree unzip whois zip
    101 	xbps-install -y tailscale wireguard wireguard-tools wireproxy
    102 
    103 	xbps-install -y python3-zulip zulip-desktop zulip-term
    104 
    105 	# Raspberry Pi specific
    106 	#xbps-install -y rng-tools && ln -sfv /etc/sv/rngd /var/service/ && sv up rngd
    107 
    108 	xbps-install -y  fzf glow gotify-cli gnupg2-scdaemon lxc incus incus-client incus-tools lazygit oath-toolkit websocat
    109 	#xbps-install -y earlyoom && ln -sfv /etc/sv/earlyoom /var/service/
    110 
    111 	# Alternatives
    112 	xbps-install -y bat btop delta duf exa procs xsv
    113 
    114 	# Fun
    115 	xbps-install -y asciiquarium chess-tui cmatrix no-more-secrets tuimoji tty-solitaire
    116 
    117 	# Audio
    118 	#xbps-install -y alsa-utils cmus ffmpeg id3v2 eyeD3 spotify-tui youtube-dl # Revamp audio setup at some point
    119 
    120 	# Hardware
    121 	xbps-install -y bluetuith gpsd
    122 
    123 	# Recon
    124 	xbps-install -y aircrack-ng bettercap bandwhich bpfmon ettercap ghidra kismet masscan mitmproxy strace tcpdump termshark wireshark wuzz
    125 
    126 	# Radio
    127 	#xbps-install -y airspy chirp CubicSDR gnuradio gqrx inspectrum librtlsdr rtl-sdr rx_tools SoapyRTLSDR SDRPlusPlus
    128 }
    129 
    130 
    131 setup_configs() {
    132     mkdir -p $HOME/.config/alacritty && wget -O $HOME/.config/alacritty/alacritty.toml $GIT_URL/config/alacritty/alacritty.toml
    133    	mkdir -p $HOME/.config/cmus      && wget -O $HOME/.config/cmus/autosave            $GIT_URL/config/cmus/autosave
    134 	mkdir -p $HOME/.config/dunst     && wget -O $HOME/.config/dunst/dunstrc            $GIT_URL/config/dunst/dunstrc
    135 	mkdir -p $HOME/.config/git       && wget -O $HOME/.config/git/config               $GIT_URL/config/git/config
    136 	mkdir -p $HOME/.config/tmux      && wget -O $HOME/.config/tmux/tmux.conf           $GIT_URL/config/tmux/tmux.conf
    137 	mkdir -p $HOME/.config/X11       && wget -O $HOME/.config/X11/xinitrc              $GIT_URL/config/X11/xinitrc
    138 
    139 	sed -i "s|/dev/sda2|$(df $HOME | awk 'NR==2 {print $1}')|" $HOME/.config/tmux/tmux.conf
    140 
    141 	mkdir -p $HOME/.local/share/bash
    142 	for item in bash_aliases bash_functions bash_fun bash_recon; do
    143 		wget -O $HOME/.local/share/bash/$item $GIT_URL/local/share/bash/$item
    144 	done
    145 	wget -O $HOME/.bashrc $GIT_URL/.bashrc
    146 	echo "history -c && clear && reset" > $HOME/.bash_logout
    147 
    148 	mkdir -p $HOME/.local/share/gnupg && wget -O $HOME/.local/share/gnupg/gpg.conf $GIT_URL/local/share/gnupg/gpg.conf
    149 	printf "pinentry-program /usr/bin/pinentry-curses\ndefault-cache-ttl 3600" > $HOME/.local/share/gnupg/gpg-agent.conf
    150 	chmod 700 $HOME/.local/share/gnupg && chmod 600 $HOME/.local/share/gnupg/*
    151 
    152 	mkdir -p $HOME/.local/bin/scripts
    153 	for SCRIPT in cmus-now gitremote irc-post-commit-hook mutag pmf shotz statusbar todo; do
    154 		wget -O $HOME/.local/bin/scripts/$SCRIPT $GIT_URL/scripts/$SCRIPT
    155 	done
    156 	wget -O $HOME/.local/bin/scripts/dbc  https://raw.githubusercontent.com/acidvegas/dbc/main/dbc
    157 	wget -O $HOME/.local/bin/scripts/pass https://raw.githubusercontent.com/acidvegas/pass/main/pass
    158 	chmod +x $HOME/.local/bin/scripts/*
    159 
    160 	mkdir -p $HOME/.local/share/fonts && wget -O $HOME/.local/share/fonts/BlockZone.ttf $GIT_URL/font/BlockZone.ttf && fc-cache -f -v
    161 
    162 	mkdir -p $HOME/.config/pip && printf "[global]\nbreak-system-packages = true" > ~/.config/pip/pip.conf
    163 }
    164 
    165 
    166 setup_fun() {
    167 	BUILD=$HOME/dev/build
    168 	mkdir -p $BUILD
    169 
    170 	wget -O $HOME/.local/bin/scripts/irc2ansi.py https://raw.githubusercontent.com/internet-relay-chat/archive/master/art/irc2ansi.py
    171 	wget -O $HOME/.local/bin/scripts/bomber $GIT_URL/scripts/bomber && chmod +x $HOME/.local/bin/scripts/bomber
    172 	wget -O $HOME/.local/bin/scripts/pipes https://raw.githubusercontent.com/pipeseroni/pipes.sh/master/pipes.sh && chmod +x $HOME/.local/bin/scripts/pipes
    173 
    174 	git clone https://github.com/AngelJumbo/lavat.git $BUILD/lavat
    175 	sudo make -C $BUILD/lavat clean install
    176 
    177 	git clone https://github.com/lptstr/fire --recurse $BUILD/fire
    178 	sudo make -C $BUILD/fire clean install
    179 
    180 	git clone https://github.com/ricoriedel/wipe $BUILD/wipe
    181 	cargo build --release --manifest-path $BUILD/wipe/Cargo.toml # Need to install
    182 
    183 	git clone https://github.com/pythops/bouncinamation $BUILD/bouncinamation
    184 	cargo build --release --manifest-path $BUILD/bouncinamation/Cargo.toml # Need to install
    185 
    186 	go install github.com/maaslalani/confetty@latest  # Animations
    187 	go install github.com/maxpaulus43/go-sweep@latest # Minesweeper
    188 }
    189 
    190 
    191 setup_builds() {
    192 	BUILD=$HOME/dev/build
    193 	mkdir -p $BUILD
    194 
    195 	git clone --depth 1 http://git.suckless.org/dwm $BUILD/dwm
    196 	wget -O $BUILD/dwm/config.h $GIT_URL/dwm/config.h
    197 	wget -O $BUILD/dwm/patch_nosquares.diff $GIT_URL/dwm/patch_nosquares.diff
    198 	wget -O $BUILD/dwm/patch_notitles.diff $GIT_URL/dwm/patch_notitles.diff
    199 	patch $BUILD/dwm/drw.c $BUILD/dwm/patch_nosquares.diff
    200 	patch $BUILD/dwm/dwm.c $BUILD/dwm/patch_notitles.diff
    201 	sudo make -C $BUILD/dwm clean install
    202 }
    203 
    204 
    205 setup_user_packages() {
    206     VERSION=$(curl -s https://api.github.com/repos/boxdot/gurk-rs/releases/latest | jq -r .tag_name  | cut -c2-)
    207     wget -O $HOME/.local/bin/gurk https://github.com/boxdot/gurk-rs/releases/download/v${VERSION}/gurk-x86_64-unknown-linux-gnu.tar.gz
    208 
    209 	wget -O $HOME/.local/bin/cursor https://downloader.cursor.sh/linux/appImage/x64
    210 	chmod u+x $HOME/.local/bin/cursor
    211 
    212 	VERSION=$(curl -s https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest | jq -r .tag_name  | cut -c2-)
    213 	wget -O $HOME/.local/bin/obsidian https://github.com/obsidianmd/obsidian-releases/releases/download/v${VERSION}/Obsidian-${VERSION}.AppImage
    214 	chmod u+x $HOME/.local/bin/obsidian
    215 
    216 	TEMP=$(mktemp -d)
    217 	wget -O $TEMP/zed.tar.gz https://zed.dev/api/releases/stable/latest/zed-linux-x86_64.tar.gz
    218 	tar -xzf $TEMP/zed.tar.gz -C $HOME/.local
    219 	ln -s $HOME/.local/zed.app/zed $HOME/.local/bin/zed
    220 	rm -rf $TEMP
    221 
    222 	mkdir -p $HOME/.config/pip
    223 	printf "[global]\nbreak-system-packages = true" > $HOME/.config/pip/pip.conf
    224 	pip install --user asyncwhois ecs elasticsearch meshtastic scalene
    225 
    226 	cargo install binsider csvlens git-dumper netscanner
    227 
    228 	go install -v github.com/nxtrace/NTrace-core@latest
    229 	go install -v github.com/projectdiscovery/asnmap/cmd/asnmap@latest
    230 	go install -v github.com/projectdiscovery/chaos-client/cmd/chaos@latest
    231 	go install -v github.com/projectdiscovery/cvemap/cmd/cvemap@latest
    232 	go install -v github.com/projectdiscovery/dnsx/cmd/dnsx@latest
    233 	go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
    234 	go install -v github.com/projectdiscovery/katana/cmd/katana@latest
    235 	go install -v github.com/projectdiscovery/mapcidr/cmd/mapcidr@latest
    236 	go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
    237 	go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
    238 	go install -v github.com/projectdiscovery/tlsx/cmd/tlsx@latest
    239 
    240 	git clone https://github.com/blechschmidt/massdns.git $HOME/dev/git/mirror/massdns
    241 	make -C $HOME/dev/git/mirror/massdns && sudo make -C $HOME/dev/git/mirror/massdns install
    242 }
    243 
    244 
    245 
    246 [ "$#" -ne 1 ] && echo "usage: $0 [root|config|build|fun]" && exit 1
    247 
    248 case "$1" in
    249 	root)   setup_root    ;;
    250 	config) setup_configs ;;
    251 	build)  setup_builds  ;;
    252 	fun)    setup_fun     ;;
    253 	*)      echo "usage: $0 [root|config|build|fun]\n"; exit 1 ;;
    254 esac
    255 
    256 
    257 
    258 xbps-install -Syu && vkpurge rm all && xbps-install -y openssh
    259 >/etc/ssh/sshd_config
    260 printf "Port XXX\nAddressFamily inet\nListenAddress 0.0.0.0\nPasswordAuthentication no\nPrintMotd yes\nPrintLastLog no\nBanner none" > /etc/ssh/sshd_config
    261 ln -s /etc/sv/sshd /var/service
    262 nano /etc/ssh/sshd_config
    263 sv restart sshd
    264 printf "\nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKoWLkmkbkwgivwqbzXBsIa8EbTGAEibGkX6CC/tiKZe admin@supernets.org" >> /home/acidvegas/.ssh/authorized_keys
    265 chown acidvegas:acidvegas /home/acidvegas/.ssh/authorized_keys
    266 chmod 400 /home/acidvegas/.ssh/authorized_keys