Warning
MAIS is an actively developed personal project and may contain bugs, incomplete functionality or destructive behavior. It is not intended for production systems or unattended deployments. Review the code, keep backups and use it at your own risk.
From an Arch Linux shell with root privileges, run:
curl -fsSL https://github.com/themamiza/mais/releases/latest/download/mais | bash -s -- installThat's it.
The bootstrap script downloads the latest published release, verifies its checksum and installs it to:
/usr/local/bin/mais
To update an existing installation:
sudo mais installThe modular development version can also run the installer:
git clone https://github.com/themamiza/mais.git
cd mais
sudo ./mais installThis uses the cloned repository as a launcher, but the installed executable is still downloaded from the latest published GitHub Release.
Clone the repository, build the standalone executable and install that exact version:
git clone https://github.com/themamiza/mais.git
cd mais
./tools/build.sh
sudo install -Dm755 release/mais /usr/local/bin/maisThis method installs the code from the latest commit instead of downloading the latest published release.
MAIS is a collection of Bash scripts used to install and configure Arch Linux systems.
It can bootstrap a fresh Arch installation, install selected groups of programs, configure the system, install dotfiles, create backups and perform other repetitive setup tasks.
MAIS is primarily designed for my own machines and preferences, but the program list, dotfiles repository and individual commands can be changed or used independently.
Run the following to see the available commands:
mais helpBefore running the installer, partition and format the target disk manually.
Mount the root filesystem at /mnt and mount any additional filesystems below
it. On UEFI systems, mount the EFI system partition at /mnt/efi.
sudo mais arch-installValues can be provided before installation to avoid some interactive prompts:
sudo mais arch-install \
-u username -h hostname -t Region/CityCaution
Do not run arch-install on an existing installation.
MAIS installs programs from
data/programs.csv.
Install every listed program:
mais install-programsInstall only a selected tag:
mais install-programs hyprlandThe currently supported tags are:
x11 wayland |-dev-|-----|-----|-----| extra
| | | | | | |
dwm hyprland python clang lua bash js virt
Programs without a tag are installed with every selection.
The programs file has four fields separated by |:
installation method | tag | package name | description
For example:
AUR | extra | some-package-git | "Description of the package"
Suckless | dwm | username/dwm | "A dynamic window manager"
| hyprland | hyprland | "A Wayland compositor"
The installation method can be:
- Blank or
Pacmanfor an official repository package. AURfor an AUR package.Sucklessfor a supported source repository.DoomEmacsfor the Doom Emacs installation method.
Lines beginning with # are comments and whitespace around fields is ignored.
Programs are processed from the top of the file to the bottom, so packages may be ordered when one depends on another.
By default, MAIS installs my dotfiles:
mais install-dotfilesA different repository can be supplied:
mais install-dotfiles https://github.com/username/dotfilesWhen ~/rp/dotfiles already exists, MAIS uses that local repository instead
of cloning the default or supplied repository.
Install an AUR helper:
mais install-aurhelper yay
mais install-aurhelper paruConfigure GRUB, Pacman, Makepkg and supported optional programs:
sudo mais configureUpdate the Arch mirror list:
sudo mais update-mirrorsCreate a backup using the predefined backup rules:
mais backupGive the backup a custom name:
mais backup backup-nameUse --verbose or -v to display command output:
mais configure --verboseUse --quiet or -q to suppress normal MAIS output:
mais configure --quietExperimental commands are intentionally not documented here. Review their implementation before using them.
The development version of MAIS is split into modules for readability, testing and easier maintenance.
The main entry point is mais, while the implementation is divided
between:
lib/cli/ command-line parsing, help and dispatch
lib/commands/ user commands
lib/core/ shared helpers and configuration
lib/distro/ distribution-specific operations
Clone the repository and run the modular version with:
git clone https://github.com/themamiza/mais.git
cd mais
./mais helpThe modular mais file depends on the accompanying lib/ directory and
should not be downloaded by itself. Use the published standalone release for
normal installation.
Install ShellCheck, then run:
./tools/run_tests.shTo build and test the standalone release:
./tools/run_tests.sh --releaseThe checks include Bash syntax validation, focused smoke tests, ShellCheck, standalone build validation and checks for unsafe shell-string execution.