What Is EMInstaller?

EMInstaller is a comprehensive Bash script designed to streamline Arch Linux installation. It:

  • Prepares your system environment
  • Installs required dependencies
  • Downloads the main installer payload
  • Launches the installer safely

Intended for execution on Arch Linux (or compatible systems).

Quick Install

The standard installation method is a single command:

curl -s https://imemix.github.io/install | sudo bash

This will:

  1. Download the installer
  2. Execute installation steps automatically

Main Installer

The payload downloaded by the quick‑install command is a small wrapper script named install which in turn fetches and executes eminstaller.py. You can run either file directly if you’ve saved them locally.

Basic usage

sudo bash install                      # run the shell wrapper
sudo python3 eminstaller.py [OPTIONS]        # run the Python installer directly

Common options

  • --config <path> – specify a YAML configuration file.
  • --dry-run – show what would be done without making any changes.
  • --offline – skip network downloads; requires the installer files be present locally.
  • --skip-validation – bypass internal sanity checks (use with caution).

The wrapper script accepts the same arguments and simply forwards them to the Python payload. Environment variables such as INSTALLER_DEBUG and INSTALLER_URL affect both layers.

For a full list of flags run:

sudo python3 eminstaller.py --help

This section is intended to give users an overview of the “main installer”; the detailed behaviour and additional options are documented in the Python source itself.

Recommended Safe Method

For security-sensitive environments, manually inspect the script before execution:

Step 1: Download the file

curl -O https://imemix.github.io/install

Step 2: Inspect the script

less install

Step 3: Execute if satisfied

sudo bash install

This method ensures you review the script before execution, providing better security.

What the Script Does

EMInstaller follows security best practices by using strict mode:

set -euo pipefail

This enables:

  • -e: Exit immediately if any command fails
  • -u: Prevent undefined variables from being used silently
  • -o pipefail: Fail if any command in a pipeline fails

Detailed Installation Flow

  1. Privilege Check: Verifies the script is running with root privileges (required for system package installation)
  2. Dependency Installation: Installs required system packages like curl, bash, and Python
  3. Environment Setup: Configures necessary environment variables and paths
  4. Main Installer Download: Fetches the latest installer payload using curl
  5. Execution: Launches the installer with Python, passing all necessary arguments
  6. Cleanup: Removes temporary files and provides status feedback

Error Handling

If any step fails, the script will:

  • Stop execution immediately
  • Display the error message for troubleshooting
  • Exit with a non-zero status code
  • Prevent partial or incomplete installations

Requirements

EMInstaller requires the following on your system:

Operating System

  • Arch Linux or compatible distributions (Manjaro, EndeavourOS, etc.)
  • Systems with pacman package manager support

Required Tools

  • curl - for downloading files from the internet
  • bash - shell environment (usually pre-installed)
  • python3 - Python 3 interpreter for running the main installer
  • sudo - required for root privilege escalation

System Requirements

  • Minimum 2GB RAM recommended
  • Root or sudo access required
  • Network connectivity for downloads
  • At least 5GB free disk space

Install missing dependencies with:

sudo pacman -Sy curl python base-devel

The -Sy flag refreshes the package database before installation.

Testing the Script Locally

If you have the installer script file locally:

Step 1: Make it executable

chmod +x install

Step 2: Run the installer

sudo ./install

Updating the Installer

When a new version is released, simply re-run the installation command:

curl -s https://imemix.github.io/install | sudo bash

The script automatically pulls the latest version unless version pinning is configured.

Security Best Practices

When using remote install scripts, follow these guidelines:

  • ✅ Always use HTTPS for downloads
  • ✅ Manually inspect scripts in production environments
  • ✅ Verify checksums before execution
  • ✅ Avoid running unknown scripts as root
  • ✅ Audit scripts before distributing to others

❌ Never run untrusted scripts:

curl http://untrusted-source.com/install | bash

Advanced Usage

Environment Variables

Control installer behavior with environment variables:

INSTALLER_URL="https://custom.source/installer" sudo bash install
INSTALLER_DEBUG=1 sudo bash install
  • INSTALLER_URL: Override the default installer source URL
  • INSTALLER_DEBUG: Enable verbose output for troubleshooting

Custom Configuration

Pass custom arguments to the main installer:

sudo bash install --config /path/to/config.yml
sudo bash install --skip-validation

See the main installer documentation for available flags and options.

Desktop Environments

During interactive setup you can select which graphical environment to install. Supported values include:

  • cli-only – no GUI
  • gnome – GNOME Shell with GDM
  • kde – KDE Plasma with SDDM
  • hyprland – Hyprland Wayland compositor with LightDM
  • xfce – XFCE4 desktop with LightDM
  • i3 – i3 window manager with LightDM

Offline Installation

For systems without internet access, download the installer first:

curl -O https://imemix.github.io/install
curl -O https://imemix.github.io/eminstaller.py
# Transfer both files to target system
sudo bash install --offline

Dry Run (Simulation)

Preview installation steps without making changes:

sudo bash install --dry-run

This is useful for testing in production environments before actual deployment.

Security Notice

⚠️ Running scripts via piping to bash carries inherent security risk:

curl | bash

Only execute installers from trusted, verified sources.

Review the script before execution whenever possible, or use the recommended safe method in the documentation above.

Philosophy

EMInstaller is built on these core principles:

  • Minimal: Only essential functionality
  • Transparent: Clear and understandable code
  • Auditable: Easy to review and verify
  • Deterministic: Consistent, predictable behavior
  • Secure by Default: Security first approach

If an install script cannot be easily read and understood, it should not be trusted.