generate auto install arch script and readme
This commit is contained in:
150
arch-chroot-setup.sh
Executable file
150
arch-chroot-setup.sh
Executable file
@@ -0,0 +1,150 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
username=kk
|
||||||
|
|
||||||
|
core_packages=(
|
||||||
|
tmux
|
||||||
|
kakoune
|
||||||
|
man-db
|
||||||
|
man-pages
|
||||||
|
clang
|
||||||
|
make
|
||||||
|
tcc
|
||||||
|
ripgrep
|
||||||
|
curl
|
||||||
|
plocate
|
||||||
|
fzf
|
||||||
|
gdb
|
||||||
|
)
|
||||||
|
|
||||||
|
network_packages=(
|
||||||
|
openssh
|
||||||
|
sshfs
|
||||||
|
)
|
||||||
|
|
||||||
|
desktop_packages=(
|
||||||
|
sway
|
||||||
|
swayidle
|
||||||
|
swaybg
|
||||||
|
swaylock
|
||||||
|
foot
|
||||||
|
wmenu
|
||||||
|
xorg-xwayland
|
||||||
|
wl-clipboard
|
||||||
|
xdg-desktop-portal-wlr
|
||||||
|
xdg-user-dirs
|
||||||
|
grim
|
||||||
|
)
|
||||||
|
|
||||||
|
media_packages=(
|
||||||
|
pipewire
|
||||||
|
pipewire-pulse
|
||||||
|
pipewire-alsa
|
||||||
|
pipewire-jack
|
||||||
|
wireplumber
|
||||||
|
pavucontrol
|
||||||
|
ffmpeg
|
||||||
|
imv
|
||||||
|
mpv
|
||||||
|
)
|
||||||
|
|
||||||
|
font_packages=(
|
||||||
|
ttf-fira-code
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk
|
||||||
|
noto-fonts-emoji
|
||||||
|
noto-fonts-extra
|
||||||
|
ttf-liberation
|
||||||
|
ttf-dejavu
|
||||||
|
ttf-roboto
|
||||||
|
)
|
||||||
|
|
||||||
|
app_packages=(
|
||||||
|
firefox
|
||||||
|
)
|
||||||
|
|
||||||
|
machine_packages=(
|
||||||
|
nvidia-open
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ ${EUID} -ne 0 ]]; then
|
||||||
|
printf 'Run this script as root inside arch-chroot.\n' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -sf /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
|
||||||
|
hwclock --systohc
|
||||||
|
|
||||||
|
sed -i 's/^#\(en_US.UTF-8 UTF-8\)/\1/' /etc/locale.gen
|
||||||
|
sed -i 's/^#\(pl_PL.UTF-8 UTF-8\)/\1/' /etc/locale.gen
|
||||||
|
locale-gen
|
||||||
|
|
||||||
|
cat >/etc/locale.conf <<'EOF'
|
||||||
|
LANG=en_US.UTF-8
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >/etc/vconsole.conf <<'EOF'
|
||||||
|
KEYMAP=pl2
|
||||||
|
EOF
|
||||||
|
|
||||||
|
bootctl install
|
||||||
|
|
||||||
|
cat >/boot/loader/loader.conf <<'EOF'
|
||||||
|
default arch.conf
|
||||||
|
timeout 0
|
||||||
|
console-mode max
|
||||||
|
editor no
|
||||||
|
EOF
|
||||||
|
|
||||||
|
root_uuid=$(findmnt -no UUID /)
|
||||||
|
if [[ -z ${root_uuid} ]]; then
|
||||||
|
printf 'Could not detect root filesystem UUID. Check findmnt/blkid manually.\n' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >/boot/loader/entries/arch.conf <<EOF
|
||||||
|
title Arch Linux
|
||||||
|
linux /vmlinuz-linux
|
||||||
|
initrd /amd-ucode.img
|
||||||
|
initrd /initramfs-linux.img
|
||||||
|
options root=UUID=${root_uuid} rw
|
||||||
|
EOF
|
||||||
|
|
||||||
|
bootctl status
|
||||||
|
|
||||||
|
systemctl enable systemd-networkd.service
|
||||||
|
systemctl enable systemd-resolved.service
|
||||||
|
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
||||||
|
install -d /etc/systemd/network
|
||||||
|
ln -sf /usr/lib/systemd/network/89-ethernet.network.example /etc/systemd/network/89-ethernet.network
|
||||||
|
|
||||||
|
if ! id -u "${username}" >/dev/null 2>&1; then
|
||||||
|
useradd -m -s /bin/bash -G wheel,video,render "${username}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
install -m 0750 -d /etc/sudoers.d
|
||||||
|
cat >/etc/sudoers.d/00-wheel <<'EOF'
|
||||||
|
%wheel ALL=(ALL:ALL) ALL
|
||||||
|
EOF
|
||||||
|
chmod 0440 /etc/sudoers.d/00-wheel
|
||||||
|
visudo -cf /etc/sudoers.d/00-wheel
|
||||||
|
|
||||||
|
passwd "${username}"
|
||||||
|
|
||||||
|
pacman -Syu --needed \
|
||||||
|
"${core_packages[@]}" \
|
||||||
|
"${network_packages[@]}" \
|
||||||
|
"${desktop_packages[@]}" \
|
||||||
|
"${media_packages[@]}" \
|
||||||
|
"${font_packages[@]}" \
|
||||||
|
"${app_packages[@]}" \
|
||||||
|
"${machine_packages[@]}"
|
||||||
|
|
||||||
|
updatedb
|
||||||
|
systemctl enable sshd.service
|
||||||
|
|
||||||
|
printf '\nChroot setup complete. Exit, unmount /mnt, reboot, then log in as %s.\n' "${username}"
|
||||||
|
printf 'After first login, run: xdg-user-dirs-update\n'
|
||||||
|
printf 'After first login, run: systemctl --user enable --now pipewire pipewire-pulse wireplumber\n'
|
||||||
|
printf 'Generate SSH key after first login with: ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519\n'
|
||||||
305
arch-install.md
Normal file
305
arch-install.md
Normal file
@@ -0,0 +1,305 @@
|
|||||||
|
# Arch install notes
|
||||||
|
|
||||||
|
## 1. Install the base system
|
||||||
|
|
||||||
|
These packages are needed before the first boot. Install them with `pacstrap` after mounting the target system at `/mnt` and the EFI system partition at `/mnt/boot`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
base_packages=(
|
||||||
|
base # Minimal Arch system
|
||||||
|
linux # Linux kernel
|
||||||
|
linux-firmware
|
||||||
|
amd-ucode # AMD CPU microcode updates loaded by the boot loader
|
||||||
|
sudo # Run commands as root from the user account
|
||||||
|
git # Version control and cloning dotfiles
|
||||||
|
)
|
||||||
|
|
||||||
|
pacstrap -K /mnt "${base_packages[@]}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Generate `fstab`, then enter the installed system:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
genfstab -U /mnt >>/mnt/etc/fstab
|
||||||
|
arch-chroot /mnt
|
||||||
|
```
|
||||||
|
|
||||||
|
From inside the chroot, the scripted version of the remaining setup is:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
/path/to/dotfiles/arch-chroot-setup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The sections below show what the script does, following the same order as the Arch install guide: timezone, localization, boot loader, user, networking, packages, then reboot.
|
||||||
|
|
||||||
|
## 2. Configure timezone and localization
|
||||||
|
|
||||||
|
Set the timezone to Warsaw and sync the hardware clock:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ln -sf /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
|
||||||
|
hwclock --systohc
|
||||||
|
```
|
||||||
|
|
||||||
|
Enable English and Polish UTF-8 locales:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sed -i 's/^#\(en_US.UTF-8 UTF-8\)/\1/' /etc/locale.gen
|
||||||
|
sed -i 's/^#\(pl_PL.UTF-8 UTF-8\)/\1/' /etc/locale.gen
|
||||||
|
locale-gen
|
||||||
|
```
|
||||||
|
|
||||||
|
Use English as the system language:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cat >/etc/locale.conf <<'EOF'
|
||||||
|
LANG=en_US.UTF-8
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Use a Polish console keymap:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cat >/etc/vconsole.conf <<'EOF'
|
||||||
|
KEYMAP=pl2
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Configure systemd-boot
|
||||||
|
|
||||||
|
These commands run inside `arch-chroot /mnt`. They assume the EFI system partition is mounted at `/boot` inside the chroot.
|
||||||
|
|
||||||
|
Install systemd-boot:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
bootctl install
|
||||||
|
```
|
||||||
|
|
||||||
|
Configure the loader menu. `timeout 0` makes boot faster by hiding the menu unless you hold the boot menu key.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cat >/boot/loader/loader.conf <<'EOF'
|
||||||
|
default arch.conf
|
||||||
|
timeout 0
|
||||||
|
console-mode max
|
||||||
|
editor no
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Find the root filesystem UUID:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
blkid
|
||||||
|
```
|
||||||
|
|
||||||
|
Create the Arch boot entry. Replace `ROOT_UUID_HERE` with the UUID of the root partition, not the EFI partition.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cat >/boot/loader/entries/arch.conf <<'EOF'
|
||||||
|
title Arch Linux
|
||||||
|
linux /vmlinuz-linux
|
||||||
|
initrd /amd-ucode.img
|
||||||
|
initrd /initramfs-linux.img
|
||||||
|
options root=UUID=ROOT_UUID_HERE rw
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Verify the boot loader configuration:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
bootctl status
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Create the user account
|
||||||
|
|
||||||
|
Create the normal user and add it to the `wheel` group so it can use `sudo`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
useradd -m -s /bin/bash -G wheel,video,render kk
|
||||||
|
passwd kk
|
||||||
|
```
|
||||||
|
|
||||||
|
Enable `sudo` for the `wheel` group:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
EDITOR=vi visudo
|
||||||
|
```
|
||||||
|
|
||||||
|
Uncomment this line:
|
||||||
|
|
||||||
|
```sudoers
|
||||||
|
%wheel ALL=(ALL:ALL) ALL
|
||||||
|
```
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
|
||||||
|
- `-m` creates `/home/kk`.
|
||||||
|
- `-s /bin/bash` sets Bash as the login shell.
|
||||||
|
- `-G wheel,video,render` adds the user to `sudo` plus the groups often needed by Sway/GPU access.
|
||||||
|
|
||||||
|
## 5. Enable ethernet networking
|
||||||
|
|
||||||
|
Enable `systemd-networkd` and `systemd-resolved`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
systemctl enable systemd-networkd.service
|
||||||
|
systemctl enable systemd-resolved.service
|
||||||
|
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Use the packaged ethernet DHCP example config:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ln -s /usr/lib/systemd/network/89-ethernet.network.example /etc/systemd/network/89-ethernet.network
|
||||||
|
```
|
||||||
|
|
||||||
|
This is enough for a normal wired connection using DHCP.
|
||||||
|
|
||||||
|
## 6. Install core tools
|
||||||
|
|
||||||
|
These are the day-to-day terminal and development tools.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
core_packages=(
|
||||||
|
tmux # Terminal multiplexer
|
||||||
|
kakoune # Text editor
|
||||||
|
man-db # Manual page database
|
||||||
|
man-pages # Linux and POSIX manual pages
|
||||||
|
clang # C/C++ compiler toolchain
|
||||||
|
make # Build automation tool
|
||||||
|
tcc # Tiny C compiler
|
||||||
|
ripgrep # Fast grep replacement, command: rg
|
||||||
|
curl # Download URLs from the command line
|
||||||
|
plocate # Fast file name search database
|
||||||
|
fzf # Fuzzy finder for terminal scripts and navigation
|
||||||
|
gdb # Debugger
|
||||||
|
)
|
||||||
|
|
||||||
|
pacman -Syu --needed "${core_packages[@]}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Initialize the `plocate` database:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
updatedb
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. Install networking and remote file tools
|
||||||
|
|
||||||
|
```sh
|
||||||
|
network_packages=(
|
||||||
|
openssh # SSH client/server tools
|
||||||
|
sshfs # Mount remote machines over SSH
|
||||||
|
)
|
||||||
|
|
||||||
|
pacman -S --needed "${network_packages[@]}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8. Install the Sway desktop
|
||||||
|
|
||||||
|
```sh
|
||||||
|
desktop_packages=(
|
||||||
|
sway # Wayland window manager
|
||||||
|
swayidle # Idle actions like lock, suspend, hibernate
|
||||||
|
swaybg # Wallpaper setter for Sway
|
||||||
|
swaylock # Screen locker for Sway/Wayland
|
||||||
|
foot # Wayland terminal emulator
|
||||||
|
wmenu # Lightweight Wayland launcher/menu
|
||||||
|
xorg-xwayland # Run X11 applications inside Wayland
|
||||||
|
wl-clipboard # wl-copy and wl-paste clipboard tools
|
||||||
|
xdg-desktop-portal-wlr # Portal backend for screen sharing and app integration
|
||||||
|
xdg-user-dirs # Standard folders like Downloads, Documents, Pictures
|
||||||
|
grim # Wayland screenshot tool
|
||||||
|
)
|
||||||
|
|
||||||
|
pacman -S --needed "${desktop_packages[@]}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9. Install audio and media tools
|
||||||
|
|
||||||
|
```sh
|
||||||
|
media_packages=(
|
||||||
|
pipewire # Modern Linux audio/media server
|
||||||
|
pipewire-pulse # PulseAudio compatibility for PipeWire
|
||||||
|
pipewire-alsa # ALSA compatibility for PipeWire
|
||||||
|
pipewire-jack # JACK compatibility for PipeWire
|
||||||
|
wireplumber # PipeWire session and policy manager
|
||||||
|
pavucontrol # Graphical volume mixer
|
||||||
|
ffmpeg # Video/audio codecs and conversion tools
|
||||||
|
imv # Image viewer
|
||||||
|
mpv # Video/audio player
|
||||||
|
)
|
||||||
|
|
||||||
|
pacman -S --needed "${media_packages[@]}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 10. Install fonts
|
||||||
|
|
||||||
|
```sh
|
||||||
|
font_packages=(
|
||||||
|
ttf-fira-code # Monospace programming font with ligatures
|
||||||
|
noto-fonts # Broad Unicode font coverage
|
||||||
|
noto-fonts-cjk # Chinese, Japanese, and Korean font coverage
|
||||||
|
noto-fonts-emoji # Emoji font support
|
||||||
|
noto-fonts-extra # Extra Noto font families
|
||||||
|
ttf-liberation # Microsoft-compatible replacement fonts
|
||||||
|
ttf-dejavu # General purpose readable fonts
|
||||||
|
ttf-roboto # Roboto font family
|
||||||
|
)
|
||||||
|
|
||||||
|
pacman -S --needed "${font_packages[@]}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 11. Install browser and extra tools
|
||||||
|
|
||||||
|
```sh
|
||||||
|
app_packages=(
|
||||||
|
firefox # Web browser
|
||||||
|
)
|
||||||
|
|
||||||
|
pacman -S --needed "${app_packages[@]}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Install `opencode` separately if it is available from an AUR helper or a custom repository on the installed system.
|
||||||
|
|
||||||
|
## 12. Install NVIDIA driver
|
||||||
|
|
||||||
|
Install the open NVIDIA kernel driver for the PC graphics card:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pacman -S --needed nvidia-open
|
||||||
|
```
|
||||||
|
|
||||||
|
Reboot after leaving the chroot so the driver is loaded on the first real boot.
|
||||||
|
|
||||||
|
## 13. Reboot into the installed system
|
||||||
|
|
||||||
|
Exit the chroot, unmount everything, and reboot:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
exit
|
||||||
|
umount -R /mnt
|
||||||
|
reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
Log in as `kk` after rebooting.
|
||||||
|
|
||||||
|
## 14. First login tasks
|
||||||
|
|
||||||
|
Create standard user directories:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
xdg-user-dirs-update
|
||||||
|
```
|
||||||
|
|
||||||
|
Enable the PipeWire user services:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
systemctl --user enable --now pipewire pipewire-pulse wireplumber
|
||||||
|
```
|
||||||
|
|
||||||
|
Generate a local SSH key for this machine:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
|
||||||
|
```
|
||||||
143
new.md
143
new.md
@@ -1,143 +0,0 @@
|
|||||||
# Packages
|
|
||||||
|
|
||||||
## Base install
|
|
||||||
|
|
||||||
Install these with `pacstrap` while installing Arch:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
base_packages=(
|
|
||||||
base # Minimal Arch system
|
|
||||||
linux # Linux kernel
|
|
||||||
sudo # Run commands as root from the user account
|
|
||||||
iwd # Wi-Fi management during and after install
|
|
||||||
git # Version control and cloning dotfiles
|
|
||||||
)
|
|
||||||
|
|
||||||
pacstrap /mnt "${base_packages[@]}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Core tools
|
|
||||||
|
|
||||||
Install after booting into the new system:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
core_packages=(
|
|
||||||
tmux # Terminal multiplexer
|
|
||||||
kakoune # Text editor
|
|
||||||
man-db # Manual page database
|
|
||||||
man-pages # Linux and POSIX manual pages
|
|
||||||
clang # C/C++ compiler toolchain
|
|
||||||
make # Build automation tool
|
|
||||||
tcc # Tiny C compiler
|
|
||||||
ripgrep # Fast grep replacement, command: rg
|
|
||||||
curl # Download URLs from the command line
|
|
||||||
plocate # Fast file name search database
|
|
||||||
fzf # Fuzzy finder for terminal scripts and navigation
|
|
||||||
gdb # Debugger
|
|
||||||
)
|
|
||||||
|
|
||||||
sudo pacman -S --needed "${core_packages[@]}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Networking and remote files
|
|
||||||
|
|
||||||
```sh
|
|
||||||
network_packages=(
|
|
||||||
openssh # SSH client/server tools
|
|
||||||
sshfs # Mount remote machines over SSH
|
|
||||||
)
|
|
||||||
|
|
||||||
sudo pacman -S --needed "${network_packages[@]}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Desktop: Sway / Wayland
|
|
||||||
|
|
||||||
```sh
|
|
||||||
desktop_packages=(
|
|
||||||
sway # Wayland window manager
|
|
||||||
swayidle # Idle actions like lock, suspend, hibernate
|
|
||||||
swaybg # Wallpaper setter for Sway
|
|
||||||
swaylock # Screen locker for Sway/Wayland
|
|
||||||
foot # Wayland terminal emulator
|
|
||||||
wmenu # Lightweight Wayland launcher/menu
|
|
||||||
xorg-xwayland # Run X11 applications inside Wayland
|
|
||||||
wl-clipboard # wl-copy and wl-paste clipboard tools
|
|
||||||
xdg-desktop-portal-wlr # Portal backend for screen sharing and app integration
|
|
||||||
xdg-user-dirs # Standard folders like Downloads, Documents, Pictures
|
|
||||||
grim # Wayland screenshot tool
|
|
||||||
)
|
|
||||||
|
|
||||||
sudo pacman -S --needed "${desktop_packages[@]}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Audio and media
|
|
||||||
|
|
||||||
```sh
|
|
||||||
media_packages=(
|
|
||||||
pipewire # Modern Linux audio/media server
|
|
||||||
pipewire-pulse # PulseAudio compatibility for PipeWire
|
|
||||||
pipewire-alsa # ALSA compatibility for PipeWire
|
|
||||||
pipewire-jack # JACK compatibility for PipeWire
|
|
||||||
wireplumber # PipeWire session and policy manager
|
|
||||||
pavucontrol # Graphical volume mixer
|
|
||||||
ffmpeg # Video/audio codecs and conversion tools
|
|
||||||
imv # Image viewer
|
|
||||||
mpv # Video/audio player
|
|
||||||
)
|
|
||||||
|
|
||||||
sudo pacman -S --needed "${media_packages[@]}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Fonts
|
|
||||||
|
|
||||||
```sh
|
|
||||||
font_packages=(
|
|
||||||
ttf-fira-code # Monospace programming font with ligatures
|
|
||||||
noto-fonts # Broad Unicode font coverage
|
|
||||||
noto-fonts-cjk # Chinese, Japanese, and Korean font coverage
|
|
||||||
noto-fonts-emoji # Emoji font support
|
|
||||||
noto-fonts-extra # Extra Noto font families
|
|
||||||
ttf-liberation # Microsoft-compatible replacement fonts
|
|
||||||
ttf-dejavu # General purpose readable fonts
|
|
||||||
ttf-roboto # Roboto font family
|
|
||||||
)
|
|
||||||
|
|
||||||
sudo pacman -S --needed "${font_packages[@]}"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Browser and extra tools
|
|
||||||
|
|
||||||
```sh
|
|
||||||
app_packages=(
|
|
||||||
firefox # Web browser
|
|
||||||
opencode # AI coding agent; may require AUR or a custom repository
|
|
||||||
)
|
|
||||||
|
|
||||||
sudo pacman -S --needed "${app_packages[@]}"
|
|
||||||
```
|
|
||||||
|
|
||||||
# Setting up the boot loader with systemd-boot
|
|
||||||
1. Setting up bootloader with systemd (EFI, mounted at /boot)
|
|
||||||
1.1. sudo bootctl install
|
|
||||||
1.2. copy over the loader.conf to /boot/loader/loader.conf and modify (set timeout to 0 because faster)
|
|
||||||
1.3. find partition ID using blkid
|
|
||||||
1.4. create arch boot entry with that UUID /boot/loader/entries/arch.conf
|
|
||||||
|
|
||||||
# Setup user
|
|
||||||
1. useradd -s /bin/bash -m -G wheel kk
|
|
||||||
1.1. `m` - means create directory
|
|
||||||
1.2. `-G wheel` - means add to sudo group so that sudo works when using the user
|
|
||||||
2. passwd kk
|
|
||||||
|
|
||||||
# Enabling internet
|
|
||||||
1. enable and start systemd-networkd
|
|
||||||
1.1. for ethernet: copy over the ethernet configuration file from default configs
|
|
||||||
1.2. for wifi: need to install iwd first in pacstrap, I think copy over the config and setup the connection using iwd
|
|
||||||
|
|
||||||
# Nvidia drivers
|
|
||||||
1. pacman -Syu nvidia-open
|
|
||||||
1.1. For my PC graphics card
|
|
||||||
|
|
||||||
|
|
||||||
sudo usermod -aG video,render
|
|
||||||
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
|
|
||||||
Reference in New Issue
Block a user