Skip to content

Instantly share code, notes, and snippets.

@oofnikj
Last active December 28, 2022 09:21
Show Gist options
  • Save oofnikj/3423f69a0a431697733ec1cd4579586c to your computer and use it in GitHub Desktop.
Save oofnikj/3423f69a0a431697733ec1cd4579586c to your computer and use it in GitHub Desktop.
Arch linux install notes

Installing Arch

set up wireless networking

wpa_supplicant -B -i wlan0 -c <(wpa_passphrase *SSID *password*)
dhcpcd --ipv4only

partitioning

  • use cfdisk:
    • set up main partition 1 mounted on /
    • set up EFI partition 2 mounted on /boot/esp

format partitions

mkfs.ext4 /dev/sda1
mkfs.vfat -n EFI /dev/sda2

mount partitions

mount /dev/sda1 /mnt
mkdir -p /mnt/boot/esp
mount /dev/sda2 /mnt/boot/esp

swap file

fallocate -l 4g /mnt/swapfile
chmod 0600 /mnt/swapfile
mkswap /mnt/swapfile

installation

  • Use reflector to choose a fast mirror and save it in our installation
pacman -Syu reflector
reflector --verbose --number 5 --country israel --country germany --protocol http --protocol https --sort rate | tee /etc/pacman.d/mirrorlist
cp /etc/pacman.d/mirrorlist /mnt/etc/pacman.d/mirrorlist
  • install system
pacstrap /mnt grub base base-devel linux linux-firmware

generate fstab

genfstab -U /mnt >> /mnt/etc/fstab
echo '/swapfile none swap defaults 0 0' >> /mnt/etc/fstab

additional packages

chroot

arch-chroot /mnt

install bootloader

grub-install --target=x86_64-efi --efi-directory=/boot/esp --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

install additional packages

pacman -S \
  bind-tools \
  git \
  gnome \
  gnome-extra \
  htop \
  iw \
  vim \
  xorg \

link vi to vim

ln -sf /usr/bin/vim /usr/bin/vi

system services

time zone

ln -sf /usr/share/zoneinfo/Asia/Jerusalem /etc/localtime

clock

hwclock --systohc

locale

sed -i -E 's/^#(en_US.UTF-8.*)/\1/g' /etc/locale.gen
sed -i -E 's/^#(he_IL.UTF-8.*)/\1/g' /etc/locale.gen
locale-gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf

hosts

export HOSTNAME=*hostname*
cat <<EOF > /etc/hosts

127.0.0.1        localhost
::1              localhost
127.0.1.1	       $HOSTNAME.home $HOSTNAME
EOF

hostnamectl set-hostname $HOSTNAME

create user and make admin

useradd -m -G wheel $USER

passwordless sudo

echo '%wheel ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/10-nopasswd
chmod 0440 /etc/sudoers.d/10-nopasswd
visudo -c

enable gdm

systemctl enable gdm.service

enable systemd-networkd and NetworkManager

systemctl enable NetworkManager.service
systemctl enable systemd-networkd.service

[OPTIONAL] enable systemd-resolved for DNS caching and advanced configuration:

sudo rm /etc/resolv.conf
sudo ln -sf /var/run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

now reboot

reboot

Install yay for AUR support

git clone https://aur.archlinux.org/yay.git
cd yay && makepkg -si

Speed up makepkg

CORES=$(getconf -a | grep _NPROCESSORS_ONLN | awk '{print $2}')
sed -i -E "s/^#?(MAKEFLAGS).*$/\1=\"-j$CORES\"/" /etc/makepkg.conf
sed -i -E "s/^(COMPRESSZST).*$/\1=\(zstd -c -z -q - --threads=$CORES\)/" /etc/makepkg.conf
sed -i -E "s/^(PKGEXT).*$/\1=".pkg.tar.zst"/" /etc/makepkg.conf
sed -i -E 's/^(SRCEXT).*$/\1=".src.tar.zst"/' /etc/makepkg.conf

Install Google Chrome

yay -Sy google-chrome

Transparency in Gnome terminal

yay -Sy gnome-terminal-transparency

Chrome <-> Gnome shell integration

https://chrome.google.com/webstore/detail/gnome-shell-integration/gphhapmejobijbbhgpjhcjognlahblep?hl=en

pacman -S chrome-gnome-shell

Application theme:

Flat-Remix-GTK-Blue-Dark-Solid

Extensions:

  • clipboard indicator
  • horizontal workspaces
  • user themes
  • removable drive menu
  • workspace indicator
  • system-monitor
  • appindicator-support

Misc

Always show full path in Nautilus:

gsettings set org.gnome.nautilus.preferences always-use-location-entry true

For touchpad gestures, install libinput-gestures:

sudo pacman -S libinput-gestures
sudo usermod -aG input $USER
sudo libinput-gestures-setup autostart

and reboot

Launch Gnome in Xorg mode

  • fixes bugs with input grabbing in remote / VM sessions
  • valid sessions are listed in /usr/share/xsessions
sed -i -E 's/(^XSession).*$/\1=gnome-xorg/' /var/lib/AccountsService/users/$USER
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment