summaryrefslogtreecommitdiff
path: root/post-setup.sh
blob: cdaa7fa7a0099906b0ffce061c37e47ff4ea0801 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/sh

#
# ALPINE LINUX POST SETUP
#


if [ ! "$(id -u)" -eq 0 ]; then
	echo "Script must be run as root";
	exit 1
fi

# CONFIG
user="blake"

# Install additional packages
apk add linux-stable git curl bash bash-completion \
		vim vimdiff tmux colordiff \
		iwd openresolv impala \
		ncurses acpi kbd xdg-user-dirs \
		shellcheck fastfetch btop eza \
		mandoc mandoc-apropos docs \
		ufw iproute2 drill \
		pipewire pipewire-pulse pipewire-jack wireplumber \
		wayland-pipewire-idle-inhibit \
		bluez pipewire-spa-bluez bluetuith \
		mako libnotify wlsunset wev grimshot \
		waybar font-hack-nerd font-terminus-nerd adwaita-icon-theme \
		mpv zathura-pdf-mupdf swayimg-full nwg-launchers-grid \
		flatpak xdg-desktop-portal xdg-desktop-portal-wlr \
		syncthing syncthing-openrc

# WIFI: Switch wpa_supplicant to iwd
# requires: iwd openresolv

sed 's/#\[General\]/\[General\]/;
     s/#EnableNetworkConfiguration/EnableNetworkConfiguration/;
     s/#\[Network\]/\[Network\]/;
     s/#NameResolvingService/NameResolvingService/' \
     -i /etc/iwd/main.conf

resolvconf -u

rc-service wpa_supplicant stop
rc-service iwd start

rc-update del networking boot
rc-update del wpa_supplicant boot
rc-update add iwd boot

# Set Caps key to CTRL
# requires: kbd
keymap=caps-ctrl.bmap
if [ ! -f "/etc/keymap/$keymap" ]; then
	(dumpkeys | grep keymaps; echo keycode 58 = Control) | loadkeys
	dumpkmap > $keymap && gzip $keymap
	mv $keymap.gz /etc/keymap \
		&& sed "s/gb.bmap.gz/$keymap.gz/" -i /etc/conf.d/loadkmap
fi

# Set GRUB boot screen resolution
if ! grep "GRUB_GFXMODE=*" /etc/default/grub >/dev/null; then
	echo "GRUB_GFXMODE=1024x768,auto" >> /etc/default/grub
	update-grub
fi

# Setup bluetooth
# requires: bluez pipewire-spa-bluez

modprobe btusb
adduser $user lp
sed 's/#AutoEnable.*/AutoEnable=false/' -i /etc/bluetooth/main.conf
#sed 's/#Experimental.*/Experimental = false/' -i /etc/bluetooth/main.conf
rc-service bluetooth start
rc-update add bluetooth default

# Setup firewall
# requires: ufw
subnet=192.168.1.0/24
ufw enable
ufw default deny incoming
ufw default allow outgoing
ufw allow from $subnet to any port 22/tcp comment 'Allow incoming SSH via subnet'

# Podman
# requires: podman
apk add crun podman podman-tui
rc-update add cgroups
rc-service cgroups start

# for rootless/user run podman
modprobe tun
grep "^tun" /etc/modules || echo tun >> /etc/modules
echo "$user:100000:65536" > /etc/subuid
echo "$user:100000:65536" > /etc/subgid

# Incus
apk add incus incus-client \
		incus-user incus-user-openrc incus-vm

# XDG user directories
# requires: xdg-user-dirs
mkdir /home/$user/desktop >/dev/null 2>&1
mkdir /home/$user/downloads >/dev/null 2>&1
mkdir /home/$user/templates >/dev/null 2>&1
mkdir /home/$user/shared >/dev/null 2>&1
mkdir /home/$user/documents >/dev/null 2>&1
mkdir /home/$user/audio >/dev/null 2>&1
mkdir /home/$user/images >/dev/null 2>&1
mkdir /home/$user/video >/dev/null 2>&1
mkdir /home/$user/.config >/dev/null 2>&1

cat <<EOF > /home/$user/.config/user-dirs.dirs
XDG_DOWNLOAD_DIR="/home/$user/downloads"
XDG_DESKTOP_DIR="/home/$user/desktop"
XDG_TEMPLATES_DIR="/home/$user/templates"
XDG_PUBLICSHARE_DIR="/home/$user/shared"
XDG_DOCUMENTS_DIR="/home/$user/documents"
XDG_MUSIC_DIR="/home/$user/audio"
XDG_PICTURES_DIR="/home/$user/images"
XDG_VIDEOS_DIR="/home/$user/videos"
EOF

# Setup flatpak
# requires: flatpak
url="https://dl.flathub.org/repo/flathub.flatpakrepo"
su -l "$user" -c "flatpak remote-add --user --if-not-exists flathub $url"
su -l "$user" -c "flatpak install --noninteractive flatseal"