dotfiles/.config/bootstrap/init_netctl.sh

56 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# ${1} : environment (see README.md)
module_names=''
echo -e "* Auto-create wired profil, autoconnect service for netctl and polybar module..."
for i in `ip -br l | awk '$1 !~ "lo|vir|br|wl" { print $1}'`; do
echo -e "~ ${i}..."
module_name="network-${i}"
module_names+=" ${module_name}"
cat <<- EOF | sudo tee /etc/netctl/${i} >/dev/null
Interface=${i}
Connection=ethernet
IP=dhcp
EOF
cat <<- EOF | tee ~/.config/polybar/config.d/${i}.${1} >/dev/null
[module/${module_name}]
type = internal/network
interface = ${i}
ping-interval = 3
label-connected = \${env:BAR_WIRED_CONNECTED}
label-disconnected =
label-disconnected-foreground = \${colors.text}
; Consider an 'UNKNOWN' interface state as up.
; Some devices like USB network adapters have
; an unknown state, even when they're running
; Default: false
unknown-as-up = true
EOF
sudo systemctl enable --now netctl-ifplugd@${i}
# In case some old config stays....
sudo systemctl restart netctl-ifplugd@${i}
done
echo -e "* Autoconnect to wireless profiles..."
for i in `ip -br l | awk '$1 ~ "wl" { print $1}'`; do
module_name="network-${i}"
module_names+=" ${module_name}"
echo -e "~ ${i}..."
cat <<- EOF | tee ~/.config/polybar/config.d/${i}.${1} >/dev/null
[module/${module_name}]
type = internal/network
interface = ${i}
ping-interval = 3
label-connected = \${env:BAR_WIFI_CONNECTED}
label-disconnected =
label-disconnected-foreground = \${colors.text}
EOF
sudo systemctl enable --now netctl-auto@${i}
done
echo -e "* Create an override polybar file to add all discovered networks..."
cat << EOF | tee ~/.config/polybar/config.d/bottom_center.${1} >/dev/null
[variables]
bottom_center = updates-arch-combined ${module_names}
EOF
# https://man.archlinux.org/man/netctl.special.7
echo -e "* Ensure connections are back when PC is resumed..."
sudo systemctl enable netctl-sleep