Skip to content

deadlysyn/archer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Opinionated Arch Install Helper

Why

NOTE: The official guide is authoritative. If something doesn't work, fall back to that. Feel free to open a PR if something can be better. Also check References. Read scripts before running!

After installing Arch a handful of times I decided to automate more of the process. Aside from having complete control, the great thing about Arch is the wiki. It's a wonderful resource, but can be overwhelming. I end up following 2^32 links and have 100 tabs open just to get through a basic install (sincere thanks to all doc writers, this is a personal problem vs any fault of yours).

What

This project attempts to condense the official guide so my typical install is faster. This could become more full featured and support additional options (PRs welcome), but as a starting point I semi-automated my personal preferences. Depending on your needs, this might save you time or serve as a starting point for your own automation. See CHOICES.md for thought process and opinions.

Install

This is still in infancy, with the need for a lot of refinement, but in current form it greatly reduces total install time for me and results in 548 (expect this to be further trimmed) packages consuming ~8.4GB on disk using only 147MB of RAM on boot.

Bootstrap

  • Download ISO and write to USB
    • lsblk to determine right /dev/sdX
    • dd if=/path/to/file.iso of=/dev/sdX status=progress
  • Reboot from USB (enable in BIOS, ensure UEFI is on, secure boot is off)
  • Configure wifi network
    • rfkill unblock wifi (not always needed)
    • iwctl
    • device list
    • station wlan0 scan
    • station wlan0 get-networks
    • station wlan0 connect <ssid>
    • config is saved in /var/lib/iwd/<ssid>.psk (we'll use it later)
    • timedatectl set-ntp true
  • Verify boot mode
    • ls /sys/firmware/efi/efivars
    • Missing == legacy BIOS (stick to install guide vs these notes)
    • Present == UEFI (keep going)
  • Partition disk
    • fdisk -l to see devices
    • fdisk /dev/XXX then erase all partitions and recreate
    • g (create new empty GPT partition table)
    • Create partitions
      • 512MB EFI boot partition (type 1, EFI System)
      • Use rest of disk for / (type 24, Linux x86-64 root)
    • Format
      • mkfs.fat -F32 /dev/X (EFI)
      • mkfs.ext4 /dev/Y (root)
      • Mount root on /mnt
      • mkdir /mnt/boot then mount EFI partition on /mnt/boot
  • Install base packages
    • pacstrap /mnt base base-devel linux linux-firmware vim man-db man-pages iwd efibootmgr
  • Maintain wifi config
    • mkdir /mnt/var/lib/iwd
    • chmod 700 /mnt/var/lib/iwd
    • cp /var/lib/iwd/<ssid>.psk /mnt/var/lib/iwd
  • Fix fstab
    • genfstab -U /mnt >> /mnt/etc/fstab
  • Bootstrap
    • arch-chroot /mnt
    • curl -s https://raw.githubusercontent.com/deadlysyn/archer/main/bootstrap | bash -s <hostname> <manifests...>
    • manifests are ABS package lists (files with abs suffix)
  • Reboot (make sure boot manager works; if not reboot from USB and repair)

Post Install

Login as root, then configure a local user and get AUR packages installed.

  • curl -s https://raw.githubusercontent.com/deadlysyn/archer/main/usersetup | bash -s <username>
  • Logout of root and back in as local user
  • mkdir ~/src;cd ~/src;git clone https://github.com/deadlysyn/archer.git
  • cd ~/src/archer;./yaystrap <manifests...>

Customize

Now we've got a base install with some useful pacakges, working network, and a local user. Time to tweak our environment and start X. The install script will symlink configs for bspwm, sxhkd, polybar, etc. into home.

  • While logged in as local user...
    • git clone git@github.com:deadlysyn/dotfiles.git
    • cd dotfiles/linux
    • ../install <packages...>
  • startx and add desired manual tuning

Manual Steps

These items are currently left as manual since they can vary from machine to machine or user to user.

  • Pair bluetooth devices
    • systemctl enable bluetooth
    • systemctl start bluetooth
    • bluetoothctl
    • power on
    • scan on
    • pair XX:YY:ZZ...
  • Browser plugins (sign-in to sync, adjust settings as needed)
  • Run lxappearance to select theme, fonts, etc.
  • Drop Synergy license in ~/.config/Synergy/license if this is a server
  • Install go, nodejs (and/or nvm), etc.
  • Tweak font settings for machine
    • Link /etc/fonts/conf.avail/xx-*.conf into ~/.config/fontconfig/conf.d
    • Varies by screen (e.g. RGB vs BGR)
  • UFW is enabled but nothing allowed; open ports as needed.
    • ufw allow 22/tcp (ssh)
    • ufw allow 24800/tcp (synergy)
  • Enable sshd if you want remote SSH connectivity.
    • Default Arch sshd_config allows key auth and disables root password logins
    • systemctl enable sshd
    • systemctl start sshd
  • Setup SSH config/keys (copy from another host or backup)
  • Docker is isntalled via bloat.abs, but:
    • Add non-root user to docker group
    • systemctl enable docker
    • systemctl start docker
  • Install docker-credential-helper
  • Setup aws-cli
    • Copy ~/.aws/* from another machine/backup
    • aws-vault add <profile>
  • Install cw
  • If spotifyd/spotify-tui are installed...
    • Edit ~/.config/spotifyd/spotifyd.conf
    • systemctl --user enable spotifyd

TODO

  • Better organize manifests
  • Fix and better integrate tmux config
  • Better automation of yay installs
  • Move all manual compilations to packages (create or fix packages where necessary)
  • Pull in / tune laptop tools (power management, backlight oddities)

References

About

Install Arch Linux Faster

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages