ArchLinux Installation
Preparation
- Download latest image and very GPG key from archlinux.org/download
- Burn latest install image on USB/SD card with
dd
dd bs=4M if=archlinux-2019.09.01-x86_64.iso of=/dev/disk2 status=progress oflag=sync
Boot
Boot from USB/SD card and establish internet connection.
Filesystem
Partition table:
Device | Size | Type |
---|---|---|
/dev/sda1 | 512M | EFI System |
/dev/sda2 | 30G | Linux root (x86-64) |
/dev/sda2 | 4G | Linux swap |
/dev/sda2 | 897G | Linux home |
fdisk /dev/sda
# Partition devices:
# g: create new empty GPT partition table
# n, 1, default, +512M (sda1 /boot)
# n, 2, default, +30G (sda2 /)
# n, 2, default, +4G (sda3 swap)
# n, 2, default, default (sda4 /home)
# t, 1, 1
# t, 2, 24
# t, 3, 19
# t, 4, 28
# Format
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda4
mkswap /dev/sda3
swapon /dev/sda3
# Mount
mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
mkdir /mnt/home
mount /dev/sda4 /mnt/home
Installation
pacstrap /mnt base
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab
# Verify for any errors!
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Asia/Jerusalem /etc/localtime
hwclock --systohc
# Locale
vi /etc/locale.gen
# Uncomment en_US.UTF-8 UTF-8 and other needed locales
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
# Hostname
echo rafi-desk > /etc/hostname
# Network
vi /etc/hosts
# Add proper localhost entries
systemctl enable dhcpcd.service
passwd
# GRUB boot-loader
pacman -S intel-ucode grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
# Reboot
exit
umount -R /mnt
reboot
(Be sure to remove the installation media)
Post-installation
# Update system
pacman -Syyu
pacman -S --needed base-devel
# Create local user
useradd -m -g users -G wheel,storage,power -s /bin/bash rafi
chfn rafi
passwd rafi
pacman -S sudo
visudo
# rafi ALL=(ALL) ALL
# Setup audio
pacman -Sy alsa-utils
aplay -l
alsamixer # Unmute with 'm' and raise volume with 'Up'
speaker-test -c 2
# Install X-Server and SSH
pacman -S xorg-server xorg-xinit xorg-xinput xorg-xset ttf-dejavu xterm
pacman -S openssh sshfs rsync
systemctl enable sshd
exit
# login as user
# copy configuration
git clone git@github.com:rafi/.config.git
startx
Software
# Window manager and terminal
pacman -S alacritty i3-gaps i3lock i3status perl-json-xs perl-anyevent-i3
# Essentials
pacman -S curl wget git keychain vim xcape htop xclip z unrar bc
pacman -S gnupg pass bash-completion grc colordiff tree ack tmux tmuxp
pacman -S the_silver_searcher rofi diff-so-fancy bat chafa fd entr
pacman -S fzf fzy jq tcpdump nmap gnu-netcat id3lib p7zip tarsnap
pacman -S exiv2 ncdu calc pngcrush pinfo atool poppler aria2
pacman -S xmlstarlet ripgrep httpie rclone
pacman -S syncthing mpc mpd mpv neomutt task vit tig glyr ncmpcpp
# Languages
pacman -S go
pacman -S python python2 python-pip python2-pip
pacman -S nodejs npm yarn
# Programming
pacman -S cloc shellcheck proselint yamllint vint
# Platforms
pacman -S kubectl kubectx minikube docker docker-compose
# Various Shells
pacman -S zsh fish
# Aur packages
yay -S google-chrome termsyn-font neovim-git urlview lf-git
yay -S tmux-mem-cpu-load-git tmux-xpanes tidy-html5-git
yay -S ttyrec ttyd icdiff git-cal-git git-extras
yay -S unversal-ctags-git yaml2json
- git-extras-git (aur)
- vim-spell-en
- ntfs-3g
- mediainfo
- xsel # or xclip?
- dstat
- sysstat
- hdparm
- iotop
- weechat
- bitlbee (custom PKGBUILD with patch for hipchat)
- libotr3
- python2-notify (for notify.py plugin)
- pyfribidi (aur)
- hwdetect
- jre (aur)
- virtualbox virtualbox-guest-iso
- gpasswd -a rafi vboxusers
- echo "vboxdrv" > /etc/modules-load.d/virtualbox.conf
- modprobe vboxdrv
- nfs-utils
- net-tools
- systemctl start rpc-idmapd rpc-mountd
- modprobe -a vboxnetadp vboxnetflt
- rainbarf-git (aur)
- fb-client
- mad (aur)
- surfraw
- etckeeper (aur)
- glances
- jsctags-tern-git (aur)
- pkgbuild-introspection
- par (aur)
- archey3-git (aur)
- flake8
- gdrive-cli-git (aur)
- sassc (aur)
- dnsutils
- python2-pygments
- python-ansi2html
- perl-text-markdown
- nmh-git (aur)
- mercurial
- asciiquarium (aur)
- diana-git (aur)
Graphical
- vdpau/vaapi:
- ati-dri
- vdpauinfo
- xvba-video
- libvdpau-va-gl
- libva-vdpau-driver
- rxvt-unicode-patched (aur)
- qt4 (amdcccle depends on it)
- gksu (pulls loads of depends. incl. gtk2/3)
- gksu amdcccle
- setup monitors
- xcb-util-cursor-git (aur)
- dunst-git (aur)
- dmenu2 (aur)
- tk (for gitk)
- unclutter
- mimi-git (aur)
- google-chrome (aur)
- gpasswd -a rafi video
- firefox (pulls libnotify)
- icu
- meld
- pygtksourceview2
- keepassx-git (aur)
- libgphoto2 (for usb camera)
- gphoto2
- gitg
- ghex
- xdotool
- redshift
- teiler-git (aur)
- maim (aur)
- slop (aur)
- spacefm
- libmtp (for android)
- simple-mtpfs (for android)
- python-i3-git (aur)
- zeal-git (aur)
- compton-git (aur)
- tidy-html5-git (aur)
- libotr
- python-pafy-git (aur)
- antiword
- termite-git (aur)
- sshpass
- graphviz
- wmctrl
- keymon (aur)
- fontforge
- gpaste-daemon (aur)
- byzanz-git (aur)
- qrencode
Fonts, Icons, Cursors, Themes
- gnome-icon-theme
- gnome-themes-standard
- ttf-pragmatapro (personal PKGBUILD)
- terminus-font
- ttf-bitstream-vera ttf-dejavu ttf-inconsolata ttf-liberation ttf-ubuntu-font-family
- envypn-font (aur)
- erusfont (aur)
- gohufont (aur)
- artwiz-fonts
- ohsnap (aur)
- xcursor-neutral
- xcursor-premium
- xcursor-simpleandsoft
- gtk2-theme-dust (aur)
- gtk2-theme-dyne (aur)
- faience-icon-theme
Media
- pulseaudio-alsa
- pavucontrol
- mpd
- mpc
- ncmpcpp (aur)
- fftw
- mplayer
- beets
- python2-pyacoustid
- python2-pylast
- mp3gain
- python2-pyechonest (aur)
- python2-requests (for beets-lastimport)
- python2-mpd (for clerk)
- python-mpd2 (aur)
- clerk-git
- mppc-git
- perl-image-exiftool
- sxiv-git (aur)
- exiv2
- imagemagick
- zathura
- zathura-pdf-poppler
- gloobus-preview
- mpv-git (aur)
- gimp
- ncmpc-git (aur)
- id3ted (aur)
- gifsicle
- rtorrent
- pngcrush (aur)
- ponymix
- id3v2
- mps-youtube-git (aur)
bitlbee
Configuration
/secure passphrase <pass>
/secure set bitlbeepass <pass>
/secure set tikalpass <pass>
/set irc.server_default.nicks rafi
/server add bitlbee localhost -autoconnect
/connect -all
acc add jabber rafaelb@pitput.tikal.io ${sec.data.tikalpass}
chat add 0 nsfw@conference.pitput.tikal.io
chan 1 set auto_join true
/join #nsfw
account add slack rbodill@mycwt.com
account slack set api_token xoxp-132804510225-266629488839-1025351239287-d517ba5c0781496613b6c380d141b9ef
account slack on
account add hangouts justrafi@gmail.com
acc add jabber justRafi@gmail.com
acc gtalk set oauth on
acc gtalk on
# Perform oauth dance with 'jabber_oauth'
account gtalk set nick_format %full_name
# help nick_format
# help nick_format2
# help set nick_format
account add hipchat your@email.com <password>
account hipchat on
set strip_html always
save
# see your sound devices: aplay -l
nano /etc/modprobe.d/alsa-base.conf
# options snd slots=snd_hda_intel
# options snd_hda_intel index=0
# options snd_usb_audio index=-2
# Catalyst
- /etc/pacman.conf
- [catalyst]
- Server = http://catalyst.wirephire.com/repo/catalyst/$arch
- pacman-key --keyserver pgp.mit.edu --recv-keys 0xabed422d653c3094
- pacman-key --lsign-key 0xabed422d653c3094
- linux-headers (for generator)
- base-devel (for generator)
- catalyst-libgl catalyst-utils catalyst-generator
- nano /boot/syslinux/syslinux.cfg
- Add 'nomodeset' in the APPEND line, eg:
- APPEND root=/dev/sda1 rw nomodeset
- aticonfig --initial=dual-head --screen-layout=left
- nano /etc/modprobe.d/modprobe.conf
- blacklist radeon
- reboot
- Check datetime, sync if needed:
- pacman -S ntp
- ntpd -qg
- hwclock -w