Files
infra/hosts/uconsole/configuration.nix
Hermes Agent 3bd4fcc1c6 fix: add nixos-raspberrypi input for uConsole CM5 support
- uconsole-cm5 module requires hardware.raspberry-pi options from nixos-raspberrypi
- Import raspberry-pi-5.base before uconsole-cm5 module
- Uses nixos-25.05 for both inputs (compatible versions)
2026-04-29 19:45:34 +00:00

117 lines
3.8 KiB
Nix

{ config, lib, pkgs, paths, self, keys, inputs, ... }:
{
# --- CORE HARDWARE (CM5 / RPi5) ---
# nixos-raspberrypi.nixosModules.raspberry-pi-5.base + nixos-uconsole.nixosModules.uconsole-cm5 imported in flake.nix
# --- BASIC HOST INFO ---
networking.hostName = "uConsole";
networking.networkmanager.enable = true;
time.timeZone = "America/Montreal";
i18n.defaultLocale = "en_CA.UTF-8";
# --- GPS DAEMON ---
services.gpsd = {
enable = true;
devices = [ "/dev/ttyAMA0" ]; # Default port for RPi5/CM5 GPS
nowait = true;
};
# --- USER CONFIGURATION ---
users.users.thierry = {
isNormalUser = true;
description = "Thierry";
extraGroups = [
"wheel" # Sudo
"dialout" # Access to serial/HAM rigs
"plugdev" # Access to USB SDRs
"wireshark" # Packet capture without root
"video" # Hardware acceleration access
"networkmanager"
];
openssh.authorizedKeys.keys = [
keys.users.gortium.main
keys.users.gortium.gitea
];
};
# --- INTERFACE (WAYLAND/SWAY) ---
# Sway is recommended for the uConsole's low resources
programs.sway = {
enable = true;
extraOptions = [ "--unsupported-gpu" ]; # Often needed for RPi
};
# --- SOFTWARE TOOLKITS ---
environment.systemPackages = with pkgs; [
# Base Tools (for your Doom Emacs environment)
emacs-pgtk # Emacs with Wayland support
git # Required for Doom Emacs / Flakes
ripgrep # Fast searching for Emacs/CLI
fd # Better find for Emacs
htop # Resource monitor
tmux # Terminal multiplexer
neovim # Alternative editor
# HAM RADIO (Digital Modes)
js8call # Weak-signal keyboard messaging
wsjtx # FT8, JT65, etc.
fldigi # Digital modem (PSK, RTTY)
pat # Winlink client (Use 'pat configure' after install)
direwolf # Software TNC for APRS
chirp # Radio programming
hamlib # Rig control (rigctl)
trustedqsl # LotW log signing
# SDR + RF ANALYSIS
sdrpp # Modern SDR GUI (Best for uConsole)
gqrx # Classic SDR receiver
rtl-sdr # Drivers for RTL2832U
inspectrum # Offline signal analysis
soapysdr-with-plugins # Hardware abstraction layer
# LORA, MESH & RETICULUM
meshtastic # CLI tools for Meshtastic nodes
reticulum-network-stack # The RNS stack (rnsd, rnsh)
nomadnet # Reticulum browser/messaging
lxmf # Lightweight Mesh Exchange Protocol
sidechannel-rns # Visual UI for Reticulum communication
# HACKING & SECURITY (Kali-like suite)
nmap # Port scanning
metasploit # Exploitation framework
aircrack-ng # Wi-Fi auditing
kismet # Wireless sniffer (Essential for your Pi Zero project)
bettercap # MITM and network attack tool
wireshark # Protocol analyzer
burpsuite # Web vulnerability scanner
hashcat # Password recovery
john # John the Ripper (password cracking)
sqlmap # Automated SQL injection
# GPS & OFFLINE MAPPING
foxtrotgps # Lightweight map viewer (Perfect for small screens)
viking # GPS data editor and map viewer
gpsbabel # GPS data conversion
marble # KDE Virtual Globe (supports offline tiles)
];
# Udev rules for SDR and Radio hardware access
services.udev.packages = [
pkgs.rtl-sdr
pkgs.librtlsdr
];
# Enable Wireshark privilege separation
programs.wireshark.enable = true;
# Enable OpenSSH
services.openssh = {
enable = true;
settings.PermitRootLogin = "prohibit-password";
};
# System state version
system.stateVersion = "23.11";
}