- Recommendation
- Advanced Installation
- Features
- Technical Information
- Troubleshooting
- Development
- Credits
For a robust & stable Arch OS experience, install as few additional packages from the official Arch Repository or AUR as possible. Instead, use Flatpak or GNOME Software. Furthermore change system files only if absolutely necessary and perform regular package upgrades.
- Arch OS System Manager:
arch-os
- System information:
fetch
- Update system:
paru -Syu
- Search package:
paru -Ss <my search string>
- Install package:
paru -S <my package>
- List installed packages:
paru -Qe
- Show package info:
paru -Qi <my package>
- Remove package:
paru -Rsn <my package>
Note: See ~/.aliases
for useful command aliases
Note: Only available with default installation preset (desktop).
- Close Window:
Super + q
- Hide Window:
Super + h
- Toggle Desktop:
Super + d
- Toggle Fullscreen:
Super + F11
Note: The target of the respective URL is also the recommended way to install the package.
- Install Pika Backup for backup and restore home files
- Install Extension Manager for manage GNOME Extensions
- Install webapp-manager for easy creation of web-apps for any website
- Install preload on older machines (start the service after installation:
sudo systemctl enable preload
) - Install mutter-performance (great on older Intel Graphics with Wayland)
- Install downgrade when you need to downgrade a package
- Install EasyEffects for Dolby Atmos
- Install folder-color-nautilus for setting colorful folders
- Install Flatseal to manage Flatpak Permissions
- Install Warehouse to Manage Flatpak Packages
- Install LocalSend to simply share files in same network
- Install Monitorets as sticky system monitor
- Install MissionCenter as system monitor
- Install Parabolic as download manager
- Install Amberol or Gapless as music player
- Install noisetorch for microphone noise suppression
- Install AddWater for Firefox GNOME Theme
- Install MenuLibre as desktop app editor
- Install File Roller as archive helper tool
- Install GNOME Firmware to update firmware of the local hardware
- Install seahorse as keyring editor (login password can be set to empty)
- Install dconf-editor as graphical tool for
gsettings
anddconf
- Install GNOME Tweaks as graphical tool for advanced GNOME settings
- Install Refine as replacement for GNOME Tweaks
- Install Ferdium for all web services at one place
- Install Alpaca for local AI support
- Install Ignition to manage GNOME autostart files
- Install Papers as elegant document viewer for GNOME
- Install GDM Settings GDM Login Manager Settings
- Desktop Font: inter-font, adwaita-fonts
- Desktop Theme: adw-gtk3
- Icon Theme: tela-icon-theme, tela-circle-icon-theme
- Cursor Theme: bibata-cursor, nordzy-cursors
- Firefox Theme: AddWater, firefox-gnome-theme
- archlinux-updates-indicator
- app-indicator-support
- weather-oclock
- just-perfection
- dash-to-panel
- dash-to-dock
- caffeine
- tiling-assistant
- happy-appy-hotkey
- app-hider
- hide-minimized
- blur-my-shell
- open-bar
- vitals
- system-monitor
- fullscreen-to-empty-workspace (open fullscreen apps on new workspace)
- disable-unredirect-fullscreen (fix some issues)
- window-calls (alternative to wmctrl in wayland)
- lilypad (deprecated)
- Streaming Server: Sunshine
- Streaming Client: Moonlight
- Discord: Vesktop (incl. Wayland Screen Sharing)
- All-In-One Game Collection Manager (TV/Desktop): RetroDECK
- Add LizardByte Repository to Pacman config:
sudo nano /etc/pacman.conf
[lizardbyte]
SigLevel = Optional
Server = https://github.com/LizardByte/pacman-repo/releases/latest/download
- Install Sunshine:
sudo pacman -Syyu lizardbyte/sunshine
- Start Sunshine Desktop Application (see system tray)
- Open local Sunshine Web Interface: https://localhost:47990 and set username and password
- Simply start streaming with Moonlight
Source: LizardByte Docs
For sandboxed CLI tools or test environment you can try Distrobox or Toolbox and as container runtime use Podman or Docker.
For native Microsoft Windows Gaming install Qemu and enable GPU Passthrough. Then you can use an emulated Microsoft Windows with native GPU access. For quick installation, have a look to this project: quickpassthrough
Note: Use gamemode when playing games from Linux with: gamemoderun <file>
You can install install AUR/lutris-wine-meta and AUR/arch-gaming-meta package to install some useful apps and libraries for gaming:
paru -S lutris-wine-meta # Recommended from lutris maintainers
paru -S arch-gaming-meta # Has a lot of depenencies
Install prefered Steam version:
- Average between performance and compatibility (recommended):
paru -S steam
- Best performance:
paru -S steam-native
- Best compatibility:
flatpak install com.valvesoftware.Steam
- Install and apply GNOME Theme: AdwSteamGtk
- Lutris
- Bottles
- RetroDeck
- Cartridges
- ScummVM
- Wine, Winetricks
- Proton, Protontricks
- Gamescope
- MangoHud
- ProtonPlus
- Haguichi, logmein-hamachi
For advanced Pipewire audio configuration, check out the official Arch Wiki.
May check out these projects:
The installer.conf
with all properties (except ARCH_OS_PASSWORD
for better security) will automatically generated on first start of the installer and be updated on every setup change. If the file exists on startup, the values will set as preset for the installer properties. This file provides some additional properties to customize your Arch OS installation (see Example).
Note: The installer.conf
& installer.log
will copied to the new user's home directory during installation. This files can be saved for reuse or simply deleted.
ARCH_OS_HOSTNAME='arch-os' # Hostname
ARCH_OS_USERNAME='tux' # User
ARCH_OS_DISK='/dev/sda' # Disk
ARCH_OS_BOOT_PARTITION='/dev/sda1' # Boot partition
ARCH_OS_ROOT_PARTITION='/dev/sda2' # Root partition
ARCH_OS_ENCRYPTION_ENABLED='true' # Disk encryption | Disable: false
ARCH_OS_TIMEZONE='Europe/Berlin' # Timezone | Show available: ls /usr/share/zoneinfo/** | Example: Europe/Berlin
ARCH_OS_LOCALE_LANG='de_DE' # Locale | Show available: ls /usr/share/i18n/locales | Example: de_DE
ARCH_OS_LOCALE_GEN_LIST=('de_DE.UTF-8 UTF-8' 'de_DE ISO-8859-1' 'de_DE@euro ISO-8859-15' 'en_US.UTF-8 UTF-8') # Locale List | Show available: cat /etc/locale.gen
ARCH_OS_REFLECTOR_COUNTRY='' # Country used by reflector | Default: null | Example: Germany,France
ARCH_OS_VCONSOLE_KEYMAP='de-latin1-nodeadkeys' # Console keymap | Show available: localectl list-keymaps | Example: de-latin1-nodeadkeys
ARCH_OS_VCONSOLE_FONT='' # Console font | Default: null | Show available: find /usr/share/kbd/consolefonts/*.psfu.gz | Example: eurlatgr
ARCH_OS_KERNEL='linux-zen' # Kernel | Default: linux-zen | Recommended: linux, linux-lts linux-zen, linux-hardened
ARCH_OS_MICROCODE='intel-ucode' # Microcode | Disable: none | Available: intel-ucode, amd-ucode
ARCH_OS_CORE_TWEAKS_ENABLED='true' # Arch OS Core Tweaks | Disable: false
ARCH_OS_MULTILIB_ENABLED='true' # MultiLib 32 Bit Support | Disable: false
ARCH_OS_AUR_HELPER='paru' # AUR Helper | Default: paru | Disable: none | Recommended: paru, yay, trizen, pikaur
ARCH_OS_BOOTSPLASH_ENABLED='true' # Bootsplash | Disable: false
ARCH_OS_SHELL_ENHANCEMENT_ENABLED='true' # Shell Enhancement | Disable: false
ARCH_OS_SHELL_ENHANCEMENT_FISH_ENABLED='true' # Enable fish shell | Default: true | Disable: false
ARCH_OS_HOUSEKEEPING_ENABLED='true' # Housekeeping | Disable: false
ARCH_OS_MANAGER_ENABLED='true' # Arch OS Manager | Disable: false
ARCH_OS_DESKTOP_ENABLED='true' # Arch OS Desktop (caution: if disabled, only a minimal tty will be provied)| Disable: false
ARCH_OS_DESKTOP_EXTRAS_ENABLED='true' # Enable desktop extra packages (caution: if disabled, only core + gnome + git packages will be installed) | Disable: false
ARCH_OS_DESKTOP_SLIM_ENABLED='true' # Enable Sim Desktop (only GNOME Core Apps) | Default: false
ARCH_OS_DESKTOP_GRAPHICS_DRIVER='nvidia' # Graphics Driver | Disable: none | Available: mesa, intel_i915, nvidia, amd, ati
ARCH_OS_DESKTOP_KEYBOARD_LAYOUT='de' # X11 keyboard layout | Show available: localectl list-x11-keymap-layouts | Example: de
ARCH_OS_DESKTOP_KEYBOARD_MODEL='pc105' # X11 keyboard model | Default: pc105 | Show available: localectl list-x11-keymap-models
ARCH_OS_DESKTOP_KEYBOARD_VARIANT='nodeadkeys' # X11 keyboard variant | Default: null | Show available: localectl list-x11-keymap-variants | Example: nodeadkeys
ARCH_OS_SAMBA_SHARE_ENABLED='true' # Enable Samba public (anonymous) & home share (user) | Disable: false
ARCH_OS_VM_SUPPORT_ENABLED='true' # VM Support | Default: true | Disable: false
ARCH_OS_ECN_ENABLED='true' # Disable ECN support for legacy routers | Default: true | Disable: false
Set these properties to install Arch OS Core only with minimal packages & configurations. This is the same as preset core
:
ARCH_OS_CORE_TWEAKS_ENABLED='false'
ARCH_OS_BOOTSPLASH_ENABLED='false'
ARCH_OS_DESKTOP_ENABLED='false'
ARCH_OS_MULTILIB_ENABLED='false'
ARCH_OS_HOUSEKEEPING_ENABLED='false'
ARCH_OS_SHELL_ENHANCEMENT_ENABLED='false'
ARCH_OS_AUR_HELPER='none'
If you want to disable VM support add ARCH_OS_VM_SUPPORT_ENABLED='false'
Note: You will only be provided with a minimal tty after installation.
Each feature can be activated/deactivated during installation. Further information can be found in the individual feature headings.
Enable this feature with ARCH_OS_CORE_TWEAKS_ENABLED='true'
:
vm.max_map_count
is set to1048576
for compatibility of some apps/games (default)quiet splash vt.global_cursor_default=0
is set to kernel parameters for silent boot- Pacman parallel downloads is set to
5
- Pacman colors and eyecandy is enabled
- Sudo password feedback is enabled
- Debug packages are disabled in
/etc/makepkg.conf
- Watchdog is disabled with kernel arg
nowatchdog
and blacklist:/etc/modprobe.d/blacklist-watchdog.conf
Disable this featuree with ARCH_OS_CORE_TWEAKS_ENABLED='false'
This feature will install and configure:
Package | Service | Config | Description |
---|---|---|---|
reflector | reflector.service | /etc/xdg/reflector/reflector.conf | Rank & update the mirrorlist on every boot |
pacman-contrib | paccache.timer | none | Weekly clear the pacman cache |
pkgfile | pkgfile-update.timer | none | Missing command suggestion and daily database update |
smartmontools | smartd | none | Monitor storage devices |
irqbalance | irqbalance.service | none | Distribute hardware interrupts across processors on a multicore system |
Disable this feature with ARCH_OS_HOUSEKEEPING_ENABLED='false'
If the property ARCH_OS_SHELL_ENHANCEMENT_ENABLED
is set to true
, the following packages are installed and preconfigured (for root & user). To keep bash
as default shell, set ARCH_OS_SHELL_ENHANCEMENT_FISH_ENABLED='false'
.
Package Dependencies:
fish git starship eza bat zoxide fd fzf fastfetch mc btop nano neovim python-pynvim man-db bash-completion nano-syntax-highlighting ttf-firacode-nerd ttf-nerd-fonts-symbols
Promt Theme ➜ Arch OS Starship Theme
fish
is set as default shellstarship
is set as fancy default promt see~/.config/fish/config.fish
nvim
is preconfigured with SpaceVim and linked to/usr/bin/vim
and/usr/bin/vi
ls
is replaced with colorfuleza
see~/.aliases
man
is replaced with colorfulbat
see~/.config/fish/config.fish
nano
is set as default editorfastfetch
is preconfigured as system info
help
open fish help in browserhistory
open command historyfish
open fish shell (default)bash
switch to bash shell (go back to fish withq
)vim
open enhanced file editor (alsovi
ornvim
)fetch
show system infobtop
show system managerlogs
show system logsmc
open file managerfd
Alternative searchz
Alternative cd (zoxide)ll
list files in dirla
list all files (+ hidden files) in dirlt
tree files in dir.
go backc
clear screenq
exitopen <file>
open file in GNOME app
Note: See ~/.aliases
for all command aliases
- Use
Tab
to autocomplete command - Use
Arrows
to navigate - Use
Ctrl + r
to search in command history - Use
Alt + s
to run previous command assudo
(Bash:sudo !!
) - Use
Alt + .
to paste the last parameter from previous command (Bash:ESC .
)
This config files are created or modified during the Arch OS installation.
# Aliases
~/.aliases
# Bash config
~/.bashrc
# Fish config
~/.config/fish/config.fish
# Starship config
~/.config/starship.toml
# Fastfetch config
~/.config/fastfetch/config.jsonc
# Midnight Commander config
~/.config/mc/ini
# Btop config
~/.config/btop/btop.conf
# Nano config
/etc/nanorc
# Environment config
/etc/environment
# Open Fish web config
fish_config
GitHub Project ➜ github.com/murkl/arch-os-manager
Install ➜ archlinux-updates-indicator and set this in extension options to integrate Arch OS Manager:
- Check command:
/usr/bin/arch-os check
- Update command:
arch-os --kitty upgrade
- Package Manager (optional):
arch-os --kitty
Set the property ARCH_OS_DESKTOP_GRAPHICS_DRIVER='none'
and install your graphics driver manually:
- AMD LACT: Overclocking Tool
If the installation is executed in a VM (autodetected), the corresponding packages are installed.
Supported VMs:
- kvm
- vmware
- oracle
- microsoft
Disable this feature with ARCH_OS_VM_SUPPORT_ENABLED='false'
Here are some technical information regarding the Arch OS Core installation.
The partitions layout is seperated in two partitions:
- FAT32 partition (1 GiB), mounted at
/boot
as ESP - EXT4 partition (rest of disk) optional with LUKS2 encrypted container, mounted at
/
as root
Partition | Label | Size | Mount | Filesystem |
---|---|---|---|---|
1 | BOOT | 1 GiB | /boot | FAT32 |
2 | ROOT / cryptroot | Rest of disk | / | EXT4 + Encryption (LUKS2) |
As default, zram-generator
is used to create swap with enhanced config.
You can edit the zram-generator default configuration in /etc/systemd/zram-generator.conf
and to modify the enhanced kernel parameter in /etc/sysctl.d/99-vm-zram-parameters.conf
This packages will be installed during Arch OS Core Installation (~150 packages in total):
base linux-firmware zram-generator networkmanager sudo [kernel_pkg] [microcode_pkg]
This services will be enabled during Arch OS Core Installation:
NetworkManager fstrim.timer systemd-zram-setup@zram0.service systemd-oomd.service systemd-boot-update.service systemd-timesyncd.service
This configuration will be set during Arch OS Core Installation:
- Bootloader timeout is set to
0
- User is added to group
wheel
to usesudo
Note: The password (ARCH_OS_PASSWORD
) is used for encryption (optional), root and user login and can be changed afterwards with passwd
if necessary.
If an error occurs, see created installer.log
for more details.
If you encounter problems with a server during Arch OS installation (error: failed retrieving file
or related errors), remove this server from /etc/pacman.d/mirrorlist
(Arch ISO) and run Arch OS Installer again.
# From booted Arch ISO:
nano /etc/pacman.d/mirrorlist
....
# Disable this server
# Server = https://archlinux.thaller.ws/$repo/os/$arch
Server = https://london.mirror.pkgbuild.com/$repo/os/$arch
Server = https://mirror.ubrco.de/archlinux/$repo/os/$arch
Server = https://mirror.f4st.host/archlinux/$repo/os/$arch
....
Try terminate all processes with:
fuser -km /mnt
Set ARCH_OS_ECN_ENABLED="false"
in Arch OS installer.conf
.
paru -S downgrade
sudo downgrade my_package_name
sudo rm -rf /etc/pacman.d/gnupg
sudo pacman-key --init
sudo pacman-key --populate
# Do update
sudo pacman -Sy archlinux-keyring && paru -Su
paru -Scc
If you need to rescue your Arch OS in case of a crash, boot from an Arch ISO device and start the included recovery mode:
curl -Ls bit.ly/arch-os > installer.sh
bash installer.sh --recovery
or follow these instructions to do this manually.
- Show disk info:
lsblk
Example
- Example Disk:
/dev/sda
- Example Boot:
/dev/sda1
- Example Root:
/dev/sda2
Note: You may have to replace the example /dev/sda
with your own disk
- Create mount dir:
mkdir -p /mnt/boot
- a) Mount root partition (disk encryption enabled):
cryptsetup open /dev/sda2 cryptroot
mount /dev/mapper/cryptroot /mnt
- b) Mount root partition (disk encryption disabled):
mount /dev/sda2 /mnt
- Mount boot partition:
mount /dev/sda1 /mnt/boot
- Enter chroot:
arch-chroot /mnt
- Fix your Arch OS...
- Exit:
exit
Create new pull request branches only from main branch! The dev branch will be deleted after each merge into main.
The Arch OS dev branch can be broken, use only for testing!
curl -Ls bit.ly/arch-os-dev | bash
# Set password:
ARCH_OS_PASSWORD=mySecret123 ./installer.sh
# Force install:
FORCE=true ./installer.sh
# Custom gum:
GUM=/usr/bin/gum ./installer.sh
# Debug simulator:
DEBUG=true ./installer.sh
Many thanks for these projects and the people behind them!
- Arch Linux
- GNOME
- Gum by charm