DL-DISTRO(1)

NAME
dl-distro - Bash script for downloading and verifying OS images.

SYNOPSIS
dl-distro [OPTIONS] dl-distro -d <DISTRO|JSON_QUERY> [OPTIONS]

DESCRIPTION
dl-distro aims to make downloading and verifying OS images quick and easy. It uses jq for data retrieval, wget for downloading, gpg for signature verification, and validates checksums with the relevant algorithm.

OPTIONS

-a, --auto-update
    Toggle automatic updating of the local JSON file.

-c, --conf-file
    Generate a config file with default values.

-d, --distro <DISTRO|JSON_QUERY>
    Specify a distribution by its short name or a JSON query.

-D, --delete-key <KEY_ID>
    Delete a stored GPG key using its GPG key ID.

-h, --help
    Display help message containing options and distributions available.

-i, --import-key <KEY_FILE>
    Import a GPG key from a key file.

-l, --list-keys
    List the stored GPG keys.

-L, --list-distros
    List the supported distributions.

-m, --manual-download
    Print instructions for manually downloading and verifying the selected image instead of doing so automatically.

-n, --no-verify
    Skip GPG, Minisign, or Signify key fetching and verification.

-p, --path <PATH>
    Download image to specified directory.

-P, --purge-data
    Purge ALL the stored data. Includes GPG, Minisign, Signify keys and the JSON file.

-s, --spider
    Instead of downloading, return an HTTP status for URLs.

-u, --update-json
    Update the locally stored JSON file.

-V, --version
    Print dl-distro's current version.

SUPPORTED DISTRIBUTIONS
alma | AlmaLinux OS | https://almalinux.org
alpine | Alpine Linux | https://alpinelinux.org
arch | Arch Linux | https://archlinux.org
cachy | CachyOS | https://cachyos.org
debian | Debian | https://debian.org
deepin | deepin | https://deepin.org
dragora | Dragora GNU/Linux-Libre | https://dragora.org
endeavour | EndeavourOS | https://endeavouros.com
fedora | Fedora Linux | https://fedoraproject.org
ghostbsd | GhostBSD | https://ghostbsd.org
gparted | GParted Live | https://gparted.org
guix | Guix System | https://guix.gnu.org
hyperbola | Hyperbola GNU/Linux-libre | https://hyperbola.info
kali | Kali Linux | https://kali.org
mint | Linux Mint | https://linuxmint.com
mxlinux | MX Linux | https://mxlinux.org
nix | NixOS | https://nixos.org
nobara | Nobara | https://nobaraproject.org
openbsd | OpenBSD | https://openbsd.org
opensuse | openSUSE | https://opensuse.org
parabola | Parabola GNU/Linux-libre | https://parabola.nu
parch | Parch GNU/Linux | https://parchlinux.com/en
parrot | Parrot OS | https://parrotsec.org
pop | Pop!_OS | https://pop.system76.com
proxmox | Proxmox | https://proxmox.com
pure | PureOS | https://pureos.net
qubes | Qubes OS | https://qubes-os.org
rocky | Rocky Linux | https://rockylinux.org
slackware | Slackware Linux | http://slackware.com
solus | Solus | https://getsol.us
tails | Tails | https://tails.net
tinycore | Tiny Core | http://tinycorelinux.net
trisquel | Trisquel GNU/Linux | https://trisquel.info
ubuntu | Ubuntu | https://ubuntu.com
void | Void Linux | https://voidlinux.org
whonix | Whonix | https://whonix.org
zorin | Zorin OS | https://zorin.com/os

EXAMPLES

dl-distro
    Main menu with all distributions. Pick one and choose an image to download.

dl-distro -d debian
    Provide a distribution name to skip the main menu. This will prompt you with additional choice menus, if necessary.

dl-distro -d debian.netinst.amd64
    You can skip the menus and start a download directly if you provide a JSON query. The names used in the JSON query correspond directly to those in the menus.

dl-distro -d debian.netinst.amd64 -p ~/Downloads
    Download and verify the latest Debian network installer amd64 image, saving to the ~/Downloads directory.

FILES

CONFIG DIRECTORY
    The config directory is $XDG_CONFIG_HOME/dl-distro. If $XDG_CONFIG_HOME is unset, the directory will be $HOME/.config/dl-distro. dl-distro.conf is used to store dl-distro's config. Below are the variables you can set. Values shown are default values used in the script, please use quotes:

    default_download_dir="$PWD"
        By default, dl-distro will use the $PWD variable if no download path is provided with -p. To always download to a specific path, change this variable.

    auto_update_enabled="true"
        By default, dl-distro will download the JSON file from the master branch before each run, ensuring always up-to-date data.

    verification_enabled="true"
        Changing to false will disable signature key fetching and verification at script runtime.

    spider_mode_enabled="false"
        Changing to true will enable spider mode at runtime, returning an HTTP status for URL's instead of downloading.

    manual_download_enabled="false"
        Changing to true will enable manual downloads at runtime, displaying step-by-step instructions for downloading and verifying the image.

    gpg_keyserver="hkps://keyserver.ubuntu.com"
        Change the keyserver used to fetch GPG keys during runtime.

    json_url="https://codeberg.org/bashuser30/dl-distro/raw/branch/master/data.json"
        Change the URL used when updating the JSON file.
    You can also override data in the JSON file by placing it in the config directory. dl-distro will use this file over the one stored in the data directory. NOTE: dl-distro can not update your modified file.

DATA DIRECTORY
    The data directory is $XDG_DATA_HOME/dl-distro. If $XDG_DATA_HOME is unset, the directory will be $HOME/.local/share/dl-distro. This directory is used to store the GPG keys, Minisign keys, Signify keys and the JSON file.

BUGS
Please report bugs on Codeberg https://codeberg.org/bashuser30/dl-distro/issues.

AUTHORS
bashuser30 <bashuser30@mailbox.org>