# archiso-valhalla
Creates `.iso` files or PXE boot assets for setting up Arch Linux.

## Usage
This project is meant to be used on Arch Linux. However, configuration files are provided to use it on any Linux system (or WSL) with [Nix] installed.

### Requirements
#### Arch Linux
If you are using Arch Linux, make sure that the `archiso` package is installed on your system:

```sh
sudo pacman -Syu archiso
```

#### Nix
On any other Linux system with Nix installed, use `nix` to automatically set up a development shell with the necessary tools installed:

```sh
nix develop
```

### Creating a `.iso`
To create a `.iso` file for installing Arch Linux, run the following command:

```sh
./scripts/build.fish
```

The script accepts all additional arguments which are accepted by the `mkarchiso` command.

Running this script will generate a `.iso` file in a new folder called `out`. This `.iso` file can be used for installing Arch Linux.

### Updating
This project also contains scripts for updating the files in case Arch Linux's `releng` template (the `archiso` template used by this project) changed.
Said scripts are described briefly in the following chapters.

#### Show Diff
Show the differences between this `archiso` configuration and Arch Linux's `releng` template by running the following command:

```sh
./scripts/show-diff.fish
```

#### Update the Patch
To update the patch containing the differences between Arch Linux's `releng` template and this `archiso` configuration, run this command:

```sh
./scripts/update-patch.fish
```

#### Update the Project
In case Arch Linux did major changes to the `releng` template, it might make sense to replicate these in this `archiso` configuration.
The following command will try to do so using the patch located at `./scripts/valhalla.patch`:

```sh
./scripts/update.fish
```

<!--- References --->
[Nix]: https://nixos.org