Mostly following Arch installation guide.
-
Run
iwctl(iNet wireless daemon interactive prompt) -
From interactive prompt:
- device list
- station device scan
- station device get-networks
- station device connect network
- Use timedatectl to ensure the system clock is accurate
timedatectl set-ntp true- Verify service status
timedatectl status- List available devices
fdisk -l- Start
fdiskinteractive prompt
fdisk <disk-name>-
From interactive prompt:
g- create a new empty GPT partition tablen- add a new partitiont- change partition typew- write table to disk and exit
-
Partition table:
- EFI partition (Size: +1G; Type: EFI System)
- Swap partition (Size: +2G; Type: Linux swap)
- Root partition (Size: remainder; Type: Linux filesystem)
-
EFI
mkfs.fat -F32 /dev/<efi-partition-name>
-
Swap
mkswap /dev/<swap-partition-name>
-
Root
mkfs.ext4 /dev/<root-partition-name>
-
Root
mount /dev/<root-partition-name> /mnt
-
Swap
swapon /dev/<swap-partition-name>
pacstrap /mnt base base-devel linux linux-firmware linux-headers git neovimgenfstab -U /mnt >> /mnt/etc/fstabarch-chroot /mntln -sf /usr/share/zoneinfo/Europe/Kiev /etc/localtime
hwclock --systohc-
Edit
/etc/locale.genand uncommenten_US.UTF-8 UTF-8and other needed locales:pl_PL.UTF-8 UTF-8ru_RU.UTF-8 UTF-8uk_UA.UTF-8 UTF-8
-
Generate the locales by running
locale-gen
- Create the
hostnamefile
nvim /etc/hostnameType the hostname (for ex. Lenovo-ThinkPad)
- Create
hostsfile
nvim /etc/hostsAdd the following content:
127.0.0.1 localhost
::1 localhost
127.0.1.1 Lenovo-ThinkPad.localdomain Lenovo-ThinkPad- Set the root password
passwd- Add non-root user
useradd -m <user-name>- Set password for non-root user
passwd <user-name>- Add non-root user to groups
usermod -aG wheel,audio,video,optical,storage <user-name>- Edit
sudoersfile
EDITOR=nvim visudoUncomment the following line: %wheel ALL=(ALL) ALL
- Install
gruband other helper packages
pacman -S grub efibootmgr dosfstools os-prober mtools- Create EFI directory
mkdir /boot/EFI- Mount EFI partition
mount /dev/<efi-partition-name> /boot/EFI- Install grub on EFI partition
grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck- Generate grub configuration file
grub-mkconfig -o /boot/grub/grub.cfg- Install network tools
pacman -S dhcpcd dialog netctl wpa_supplicant- Exit
chrootenvironment
exit- Unmount root partition
umount -R /mnt- Reboot and remove installation media
git clone https://github.com/kolyamba2105/arch-configs.git configs
cd ~/configs
git submodule init
git submodule updategit clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
cd
rm -rf yaymkdir ~/Pictures
cd ~/Pictures
mkdir Screenshots
git clone https://github.com/kolyamba2105/my-wallpapers.git- Install official packages
cd ~/configs/pacman
pacman -S --needed - < pkgs.txt- Install packages from AUR
cd ~/configs/pacman
yay -S --needed - < foreign-pkgs.txtcd ~/configs
sh setup.shJust reboot and follow the final steps...
- Generate
sshkey
ssh-keygen- Add content of
~/.ssh/id_rsa.pubto Github
- Add/modify the following lines to
/etc/default/grub
# Save last used kernel
GRUB_DEFAULT=saved
# Show all available kernels
GRUB_DISABLE_SUBMENU=y
# Use last selected kernel
GRUB_SAVEDEFAULT=true
# This will make GRUB menu disappear immediately
GRUB_TIMEOUT=0
# This will decrease the amount of logs during start-up
GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=3 vga=current"
# This will fix a problem with laptop brightness (on Lenovo ThinkPad E580)
GRUB_CMDLINE_LINUX="intel_backlight.enable_dpcd_backlight=0"- Update grub (generate grub config file again)
sudo grub-mkconfig -o /boot/grub/grub.cfg- Reboot
Create /etc/X11/xorg.conf.d/99-synaptics-overrides.conf file and add the
following content:
Section "InputClass"
Identifier "touchpad overrides"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "on"
EndSection- Edit
/etc/systemd/logind.conffile, here is a default configuration - Apply changes with
systemctl kill -s HUP systemd-logindor just reboot
- Create
/etc/systemd/system/slock@.servicefile and add the following content:
[Unit]
Description=Lock X session using slock for user %i
Before=sleep.target
[Service]
User=%i
Environment=DISPLAY=:0
ExecStartPre=/usr/bin/xset dpms force suspend
ExecStart=/usr/bin/slock
[Install]
WantedBy=sleep.target- Enable service
systemctl enable slock@<user-name>.service- Update mirror list with
reflector:
reflector @/etc/xdg/reflector/reflector.conf- Make
list-pkgs.shexecutable:
chmod u+x ~/configs/pacman/list-pkgs.sh- Create a symlink:
sudo ln ~/configs/pacman/list-pkgs.sh /usr/local/bin/list-pkgs- Copy
list-pkgs.hookinto Pacman hooks directory:
sudo cp ~/configs/pacman/list-pkgs.hook /usr/share/libalpm/hooks/- Repeat similar procedure for
list-foreign-pkgshook
- Make each script in
scriptsdirectory executable - Link each script to
/usr/local/bin/<script-name>
- Use
fdiskto partition the disk
# Create the only partion of type "Linux FileSystem"
fdisk /dev/sda- Format partition
mkfs.ext4 /dev/sda1- Add an entry in
/etc/fstabfile
# Retrieve disk UUID
lsa /dev/disk/by-uuid- Create mount point
mkdir /hdd- Re-mount
mount -a- Change permissions
chgrp storage /hdd
chmod 775 /hdd
# This may be optional if user was already added to storage group
gpasswd -a <user-name> storage