# Installation Guide
## Table of Contents
- [Nix Build (Recommended)](#nix-build-recommended)
- [Pre-built Releases](#pre-built-releases)
- [Cargo Install](#cargo-install)
- [Traditional Cargo Build](#traditional-cargo-build)
- [Runtime Dependencies](#runtime-dependencies)
## Nix Build (Recommended)
Nix automatically handles all build and runtime dependencies.
```bash
# Install Nix (if not already installed)
# Clone, build, and run
git clone https://codeberg.org/kennysheridan/hardware_report.git
cd hardware_report
nix build
sudo ./result/bin/hardware_report
```
**Development shell:**
```bash
nix develop
cargo build --release
```
## Pre-built Releases
Pre-built release artifacts are not currently published from the Codeberg repository. Use `cargo install hardware_report` or the Nix build path until release artifacts are available.
Historical GitHub release examples are retained below for operators running older deployments.
**Linux tarball** (pick the archive for your architecture — `x86_64` or `aarch64`):
```bash
curl -sL https://api.github.com/repos/sfcompute/hardware_report/releases/latest \
| grep "browser_download_url.*hardware_report-linux-x86_64.*\.tar\.gz" | cut -d '"' -f 4 | wget -qi -
tar xzf hardware_report-linux-x86_64-*.tar.gz
sudo ./hardware_report-linux-x86_64
```
On ARM64, use `hardware_report-linux-aarch64` in the `grep` pattern and tarball / binary names instead.
## Cargo Install
```bash
sudo cargo install hardware_report
sudo hardware_report
```
## Traditional Cargo Build
**Ubuntu/Debian:**
```bash
sudo apt-get update && sudo apt-get install -y \
build-essential pkg-config libssl-dev git \
numactl ipmitool ethtool util-linux pciutils
git clone https://codeberg.org/kennysheridan/hardware_report.git
cd hardware_report
cargo build --release
sudo ./target/release/hardware_report
```
**RHEL/Fedora:**
```bash
sudo dnf groupinstall "Development Tools"
sudo dnf install pkg-config openssl-devel numactl ipmitool ethtool util-linux pciutils
git clone https://codeberg.org/kennysheridan/hardware_report.git
cd hardware_report
cargo build --release
sudo ./target/release/hardware_report
```
## Runtime Dependencies
| `numactl` | NUMA topology |
| `ipmitool` | BMC/IPMI data |
| `ethtool` | Network interface details |
| `lspci` | PCI device enumeration |
| `dmidecode` | System/BIOS/memory info |
| `nvidia-smi` | GPU detection (optional) |
> **Note:** Nix builds bundle all dependencies automatically.