## Installation via GRUB Customizer

In order to clone the repository from GitHub, you have to install Git, via the `git` package.  
Alternatively, you can download a zip archive by clicking on **Code** then **Download ZIP**

#### Clone the repository

You can clone the repository or go to the [release page](https://github.com/AdisonCavani/distro-grub-themes/releases) and download a single theme.

```shell
git clone https://github.com/AdisonCavani/distro-grub-themes.git
```

### Install GRUB Customizer

<Callout type="warning">
  ``grub-customizer`` is not available on Ubuntu 21.10 and above.  
  See [#56](https://github.com/AdisonCavani/distro-grub-themes/issues/56).  
  You should [install it manually](#manual-installation), instead.
</Callout>

apt

```shell
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer
```

pacman

```shell
sudo pacman -S grub-customizer
```

<Callout type="warning">
  Grub Customizer DOES NOT WORK on recent Fedora releases without extensive modification.  
  [Manually installing](#manual-installation) a GRUB theme is much more secure and hassle free.  
  Use this at your own risk.
</Callout>

dnf

```shell
sudo dnf install grub-customizer
```

eopkg

```shell
sudo eopkg install grub-customizer
```

### Install a pre-made theme with GRUB Customizer

- Open GRUB Customizer
- Click on the **Appearance settings** tab
- Select _Custom resolution_ and select or type in your resolution, e.g 1920x1080
- Press the _Add theme_ button, then navigate to the directory where you cloned the repository; in my case `/home/adison/distro-grub-themes`
- Select your theme located in the `/themes` directory
- Save the changes

### Install a custom-made theme with GRUB Customizer

- Extract and edit your theme located in the `/themes` folder
- With your file manager, inside the modified theme's directory, select all files and create an archive with .tar or .tar.xz format
- Open GRUB Customizer
- Click on the **Appearance settings** tab
- Enable _Custom resolution_ and select or type in your resolution, e.g 1920x1080
- Press the _Add theme_ button, then navigate to the directory where you cloned the repository; in my case `/home/adison/distro-grub-themes`
- Change the _Archive files_ setting to **All files**
- Select your archive
- Save the changes

<Callout>
  KDE Neon's default theme is set in a separate file that overrides any theme changes you make.  
  Run the following to disable the default GRUB theme:
  
  ```shell
  sudo rm /etc/default/grub.d/99_breeze-grub.cfg
  sudo update-grub
  ```
  
  To revert back to the orignal KDE Neon theme, open GRUB Customizer, and in the Appearance settings tab, change the theme dropdown back to breeze.
</Callout>

## Installation via Nix Flakes
### Prerequisites
- Nix 2.4 or later
- Experimental features `nix-command` and `flakes` enabled.
  - You can achive that by adding the following to your `configuration.nix` and rebuilding your system.
    ```nix
    nix = {
      package = pkgs.nixFlakes;
      extraOptions = ''
        experimental-features = nix-command flakes
      '';
    };
    ```

### NixOS module
To use this theme as a NixOS module, a bare-minimum configuration would be as follows:  
`flake.nix`:
```nix
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    distro-grub-themes.url = "github:AdisonCavani/distro-grub-themes";
  };
  outputs = { self, nixpkgs, ... }@inputs: {
    nixosConfigurations."default" = nixpkgs.lib.nixosSystem rec {
      system = "x86_64-linux";
      modules = [
        ./configuration.nix
        inputs.distro-grub-themes.nixosModules.${system}.default
      ];
    };
  };
}
```

`configuration.nix`:
```nix
{ config, pkgs, lib, ... }: {
  distro-grub-themes = {
    enable = true;
    theme = "<theme_name>";
  };
}
```

### Standalone setup
To use this theme in a standalone setup, a bare-minimum configuration would be as follows:  
`flake.nix`:
```nix
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    distro-grub-themes.url = "github:AdisonCavani/distro-grub-themes";
  };
  outputs = { self, nixpkgs, ... }@inputs: {
    nixosConfigurations."default" = nixpkgs.lib.nixosSystem rec {
      system = "x86_64-linux";
      modules = [
        ./configuration.nix
      ];
    };
  };
}
```
`configuration.nix`:
```nix
{ config, pkgs, lib, inputs, ... }: {
  
  boot.loader.grub = rec {
    theme = inputs.distro-grub-themes.packages.${system}.<theme_name>-grub-theme;
    splashImage = "${theme}/splash_image.jpg";
  };
}
```

## Manual Installation

In order to clone the repository from GitHub, you have to install Git, via the `git` package.  
Alternatively, you can download a zip archive by clicking on **Code** then **Download ZIP**.

#### Clone the repository

You can clone the repository, or go to the [release page](https://github.com/AdisonCavani/distro-grub-themes/releases) and download a single theme.

```shell
git clone https://github.com/AdisonCavani/distro-grub-themes.git
```

#### Create themes directory
To create themes directory, replace `BOOT_GRUB_LOCATION` with the directory where GRUB is located.  
Usually it's `/boot/grub` or `/boot/grub2` but some distributions have a different one, so you'll have to figure it out.

```shell
sudo mkdir BOOT_GRUB_LOCATION/themes
```

#### Edit or use a pre-made theme

```shell
cd distro-grub-themes/themes
```

#### Copy theme

The theme must be unpacked inside a folder before you can install it.

```
sudo tar -C BOOT_GRUB_LOCATION/themes/<theme_name> -xf <theme_name>.tar
```

#### Edit GRUB config

You can use your favourite text editor for this. Here, we use nano.

```shell
sudo nano /etc/default/grub
```

Uncomment this line and set your display resolution:

```
GRUB_GFXMODE=1920x1080
```

Make sure ``GRUB_TERMINAL_OUTPUT="console"`` is commented out!

At the end of the file, add the path of your theme:

```
GRUB_THEME="BOOT_GRUB_LOCATION/themes/<theme_name>/theme.txt"
```

Ctrl+O to save, Ctrl+X to exit.

#### Update Grub config

You'll need to tell GRUB to update its configuration in order to include the new theme.

##### Ubuntu and Debian-based systems:

```shell
sudo update-grub
```

##### Fedora, Arch & others: 


If you have a UEFI system, run:

```
sudo grub-mkconfig -o BOOT_GRUB_LOCATION/grub.cfg
```
or
```
sudo grub2-mkconfig -o BOOT_GRUB_LOCATION/grub.cfg
```

<Callout type="warning">
  These commands have only been tested on Arch & Fedora, and may not work on your distribution. Consult your distro's documentation and/or forum for the GRUB config file directory and its update commands.
 
</Callout>

<Callout>
  KDE Neon's default theme is set in a separate file that overrides any theme changes you make.  
  Run the following to disable the default GRUB theme:
  
  ```shell
  sudo rm /etc/default/grub.d/99_breeze-grub.cfg
  sudo update-grub
  ```
  
  To revert back to the orignal KDE Neon theme, set the `GRUB_THEME` value in `/etc/default/grub` to `/boot/grub/themes/breeze/theme.txt`.
</Callout>

## Install theme in Ventoy

Extract `Ventoy.tar` to `/ventoy/theme`

Locate `ventoy.json` file in `/plugin/ventoy/` directory and change:

```
"file": "/ventoy/theme/blur/theme.txt",
```

to

```
"file": "/ventoy/theme/Ventoy/theme.txt",
```

For more information, head over to the [Ventoy website](https://www.ventoy.net/en/plugin_theme.html).
