# Personal Arch Linux Install Guide I'm using this repo to record the steps I take to install and personalize arch linux. Hopefully I can automate some of the later steps over time. # Part 1 - Installation Generally following the steps on the arch [install guide](https://wiki.archlinux.org/title/Installation_guide) to get to a chrooted environment. - Verify we booted as x64 UEFI `cat /sys/firmware/efi/fw_platform_size` ## Network - Check device with `ip link` - Auth wifi with `iwctl station wlan0 connect $AP_NAME` - `ping archlinux.org` to verify ## Partitioning Use fdisk to partition: /boot : 1G partition, type=1 (EFI), bootable (press M then a) / : remainder of the disk, default type For /boot (/dev/sda1) call `mkfs.fat -F 32 /dev/sda1` Follow the steps [here](https://wiki.archlinux.org/title/Dm-crypt/Encrypting_an_entire_system#LUKS_on_a_partition) to encrypt the root partition. Consider increasing the cryptographic parameters as mentions. Mount the partitions at /mnt and /mnt/boot. ## Install Install the base: `pacstrap -K /mnt base linux linux-firmware` Followed by important packages: `pacstrap /mnt grub efibootmgr e2fsprogs networkmanager vim man-db man-pages texinfo sudo` # Part 2 - Configure Generally follow the configure the system steps in the [install guide](https://wiki.archlinux.org/title/Installation_guide#Configure_the_system). `genfstab -U /mnt >> /mnt/etc/fstab` `arch-chroot /mnt` - Set the time as described. - Set the localization as described. - Enable NetworkManager `systemctl enable NetworkManager.service` - Update the initramfs as described [here](https://wiki.archlinux.org/title/Dm-crypt/Encrypting_an_entire_system#Configuring_mkinitcpio) - Set the root password - Run `grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB` - Update `/etc/default/grub` to have the line: `GRUB_CMDLINE_LINUX="cryptdevice=UUID=device-UUID:root root=/dev/mapper/root"` - Run `grub-mkconfig -o /boot/grub/grub.cfg` - Reboot sucessfully(?) into the new system. ## In the new system Connect to wifi - `nmcli device wifi list` - `nmcli device wifi connect --ask $SSID` - `nmcli c modify $SSID connection.autoconnect true` Create a user: - `useradd -m -G wheel drew` - `EDITOR=vim visudo` and uncomment the line starting %wheel Install helpful utilities: - `pacman -S git` TODO: Install graphics driver pagckages? # Part 3 - Desktop Reboot and login as the new user. Clone this git repo at /home/drew/install. Run `sudo ./install_desktop.sh` # Part 4 - Applications `mkdir Documents/ Downloads/ Pictures/` `sudo pacman -S firefox` Log into firefox w/ sync (installs bitwarden.) # Part 5 - Dev environment `sudo pacman -S neovim lua-language-server ccls rust rust-analyzer jedi-language-server` Start up neovim and run PackerSync (note you may have to comment out: init.lua: require(impatient) opts.lua: vim.cmd("colorscheme nordfox") Add ssh keys to gitea and gitlab. mkdir prog and clone a c++ code base, a python code base, and a rust code base to test the language server. # Part 6 - Optional Steam?