Declerative Arch Linux installer.
- Basic partitioning
- Base install (kernel, firmware, base, bootloader)
- System setup from a human-readable specification file
- Incremental execution
- Tag selection
The system is configured with a YAML specification/config file. Upon execution user is prompted to fill missing fields in the specification and then shell scripts are composed from the specification and run.
hostname‒ Hostname which is shown on the networkusername‒ Username of the admin accountpassword‒ Password for the admin account
Not recommended to store in spectimezone‒ Timezone keyword fortimedatectldisk‒ Disk device path eg./dev/sda
Not recommended to store in spec since it may not be consistentswap‒ Swap size in MiByay‒ Whether to install and useyayfor installing packagespkg‒ Tree of packagesgit‒ Tree of git repositories to clonefs‒ Tree of files to writecmd‒ Tree of commands to execute in the end
Simple example of a specification file. See more at
rasmusmerzin/cfg-archerry.
hostname: MyLaptop
username: admin
timezone: Europe/Helsinki
swap: 1024
yay: true
pkg:
- dhcpcd
- tree neovim
- xorg xorg-xinit dmenu slock feh
- tag: emoji
pkg: remove:libxft libxft-bgra ttf-twemoji
git:
- repo: gitlab.com/rasmusmerzin/dwm
path: ~/repos/dwm
- repo: gitlab.com/rasmusmerzin/st
path: ~/repos/st
- tag: config
git:
- repo: gitlab.com/rasmusmerzin/cfg-nvim
path: ~/repos/cfg-nvim
- repo: gitlab.com/rasmusmerzin/cfg-bash
path: ~/repos/cfg-bash
fs:
- path: ~/.xinitrc
write: |
[ -x ~/.fehbg ] && ~/.fehbg
exec dwm
cmd:
- sudo systemctl enable dhcpcd
- cd ~/repos/dwm && sudo make install
- cd ~/repos/st && sudo make install
- tag: config
cmd:
- cd ~/repos/cfg-nvim && make
- cd ~/repos/cfg-bash && makeTags are a way of making the specification file modular. Tags act similar to
CSS selectors. In the example by excluding config tag during execution
repositories cfg-nvim and cfg-bash are not cloned nor will make be run
for them.
Currently the recommended way to use Archerry is as follows:
- Boot with Arch Linux ISO
- Configure network (should be automatic when using ethernet).
When using Wi-Fi the easiest way to connect isSee more at ArchWiki wpa_supplicant.wpa_supplicant -Bi <INTERFACE> -c <(wpa_passphrase <SSID> <PASSWORD>)
- Install Git with
pacman -Sy git
- Download Archerry with
clone https://gitlab.com/osoy/archerry
- Download your specification file with
curl <URL> -o spec.yaml
- Run Archerry with
./archerry/archerry spec.yaml
After installation a log file is created at /var/log/archerry.log.
Archerry creates shell scripts from your specification file and executes them while showing a statusbar.
Created scripts are main.bash, root.bash, user.bash and are stored in
archerry/dist directory.
main.bash includes disk setup and pacstrap which should be run from iso. It
also includes chroot entries to root.bash and user.bash.
root.bash is run after pacstrap as root and includes bootloader setup and
user creation.
user.bash is run last as created user and includes most that's generated from
the specification file.
You can check installed files and packages with
archerry -c <FILE>Example result:
Checking fs...
Different: /home/erm/.xinitrc
Missing: /etc/X11/xorg.conf.d/70-synaptics.conf
Total 5, Missing 1, Different 1
Checking pkg...
Missing: xf86-input-synaptics
Total 61, Missing 1
You can create & optionally run only the user script with
archerry -u <FILE>See more with
archerry -h- Arch Installer Official Arch Linux Installer
- Decpac Arch Linux declarative package management
- NixOS Linux distribution based on the Nix package manager