NixOS Cheatsheet
Install, update, and manage cli.johlem.net tools on NixOS / Nix
Flake URL
All tools are distributed as a single Nix flake tarball — no GitHub required.
tarball+https://cli.johlem.net/releases/cli-johlem-net-latest.tar.gz
Available packages: urlrecon, lexharvest, shard, socq, webharvest, payloadforge, vlanrecon, wifiaudit, casper, ubdem, specter, pentree, cidrcalc, b64chain, regexlab, hashcrackref, logtimeline, speedtest-cli, skyrecon, ohm, jcli, mailforge, esptools, phishprobe, openclaw, credsweep, hostwatch, darkrecon, avwatch, stegcrypt, kage, jfind, yttranscript, mediagrab, glasswatch, dronewatch, mark, complymap, dossier, inciclass, roigen, tiberscope, offsec, socialscope, cmdb, notify, compose-audit, pkgaudit, shellrec, webfuzz, changefeed, signtree, backupcheck, tabletop, pwgen, burp-cli
Quick Install (one tool)
Try without installing
nix run "tarball+https://cli.johlem.net/releases/cli-johlem-net-latest.tar.gz#b64chain" -- --help
Install to user profile
nix profile install "tarball+https://cli.johlem.net/releases/cli-johlem-net-latest.tar.gz#b64chain"
Install multiple tools
nix profile install \
"tarball+https://cli.johlem.net/releases/cli-johlem-net-latest.tar.gz#jcli" \
"tarball+https://cli.johlem.net/releases/cli-johlem-net-latest.tar.gz#urlrecon" \
"tarball+https://cli.johlem.net/releases/cli-johlem-net-latest.tar.gz#hashcrackref"
NixOS System Configuration
Add the flake to your system flake.nix for declarative management.
1. Add input
# /etc/nixos/flake.nix (or wherever your system flake lives)
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
cli-johlem.url = "tarball+https://cli.johlem.net/releases/cli-johlem-net-latest.tar.gz";
};
outputs = { nixpkgs, cli-johlem, ... }: {
nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
{
nixpkgs.overlays = [ cli-johlem.overlays.default ];
}
];
};
};
}
2. Add tools to system packages
# configuration.nix
{ pkgs, ... }:
{
environment.systemPackages = with pkgs.cli-johlem; [
jcli
urlrecon
credsweep
socq
hashcrackref
logtimeline
regexlab
shard
# add any tools you need — see Available Tools below
];
}
3. Apply
sudo nixos-rebuild switch
Home Manager
For per-user installs via Home Manager.
# home.nix
{ pkgs, ... }:
{
home.packages = with pkgs.cli-johlem; [
b64chain
cidrcalc
urlrecon
];
}
Dev Shell (per-project)
Add tools to a project-specific dev environment without installing globally.
# Any project flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
cli-johlem.url = "tarball+https://cli.johlem.net/releases/cli-johlem-net-latest.tar.gz";
};
outputs = { nixpkgs, cli-johlem, ... }:
let
pkgs = nixpkgs.legacyPackages.x86_64-linux;
tools = cli-johlem.packages.x86_64-linux;
in {
devShells.x86_64-linux.default = pkgs.mkShell {
packages = [
tools.urlrecon
tools.credsweep
];
};
};
}
nix develop # drops you into a shell with those tools on PATH
Updates
| Method | Command |
|---|---|
| NixOS system | nix flake update cli-johlem && sudo nixos-rebuild switch |
| User profile | nix profile upgrade '.*' |
| Single tool | nix profile upgrade cli-johlem |
| Force refresh (nix run) | nix run --refresh "tarball+...#tool" |
The flake tarball URL is stable (cli-johlem-net-latest.tar.gz). Running nix flake update fetches the newest version and updates flake.lock.
Uninstall
From profile
# List installed packages
nix profile list
# Remove by index (shown in list output)
nix profile remove <index>
From system config
Remove the tool from environment.systemPackages and run sudo nixos-rebuild switch.
Nix Command Cheatsheet
| Task | Command |
|---|---|
| Rebuild system | sudo nixos-rebuild switch |
| Rebuild (test, no boot entry) | sudo nixos-rebuild test |
| Update all flake inputs | nix flake update |
| Update one input | nix flake update cli-johlem |
| Show flake info | nix flake show "tarball+https://cli.johlem.net/releases/cli-johlem-net-latest.tar.gz" |
| List available packages | nix flake show "tarball+...#" 2>&1 | grep packages |
| Garbage collect old generations | nix-collect-garbage -d |
| List generations | nix profile history |
| Rollback to previous generation | nix profile rollback |
| Check store integrity | nix store verify --all |
Enable Flakes (if not already)
Flakes require experimental features. Add this to your NixOS config:
# configuration.nix
nix.settings.experimental-features = [ "nix-command" "flakes" ];
Or pass the flag per-command:
nix --extra-experimental-features 'nix-command flakes' run "tarball+...#b64chain"
Troubleshooting
| Problem | Fix |
|---|---|
| error: experimental feature 'flakes' is disabled | Add nix.settings.experimental-features = [ "nix-command" "flakes" ]; to configuration.nix and rebuild |
| Tool not found after nixos-rebuild | Verify the overlay is applied and the tool is listed in environment.systemPackages |
| Old version after flake update | Run nix flake update cli-johlem to refresh the lock, then rebuild |
| Hash mismatch on tarball | Clear eval cache: rm -rf ~/.cache/nix/ and retry |
| Disk space (Nix store full) | nix-collect-garbage -d removes old generations |
Available Tools
| Package | Version | Description |
|---|---|---|
urlrecon |
v1.7.2 | Async multi-module URL / domain reconnaissance |
lexharvest |
v1.0.2 | Ranked wordlist generator with CeWL-style mutations + pentest boost |
shard |
v1.10.1 | Storage Health, Audit & Recovery Device |
socq |
v1.3.2 | SOC query translator — daily hunting intents to KQL + AQL, with a built-in Windows event-ID catalogue |
webharvest |
v1.0.2 | Web asset extractor and link harvester for OSINT and reconnaissance |
payloadforge |
v1.2.2 | Obfuscated payload generator for authorized penetration testing |
vlanrecon |
v1.1.2 | Layer 2 VLAN security assessment — Cisco IOS / Arista EOS / Juniper Junos |
wifiaudit |
v1.1.2 | Wi-Fi audit toolkit — passive scan, authorized pentest, defense |
casper |
v1.0.2 | Privacy stack + engagement security CLI with 4 levels, real-time monitor, and hard kill-switch |
ubdem |
v1.0.2 | Offline browser fingerprinting analyzer with Ed25519 + HMAC signed evidence |
specter |
v1.0.3 | Forensic CLI: parallel hashing + ssdeep, native metadata, signed evidence, cluster + triage |
pentree |
v1.1.2 | Walk pentest methodology trees, step by step |
cidrcalc |
v1.0.1 | Subnet calculator, IP range expander, and CIDR notation tool |
b64chain |
v1.0.3 | Multi-stage encoder/decoder for chained encoding operations |
regexlab |
v2.0.2 | CLI regex toolkit: tester, builder, transformer + benchmark/fuzz/diff/audit |
hashcrackref |
v1.0.2 | Hash identification and cracking command reference (does NOT crack) |
logtimeline |
v1.0.2 | CLI timestamp normaliser, converter, and incident-response timeline builder |
speedtest-cli |
v1.1.1 | Multi-stream internet speed test with bufferbloat + watch mode |
skyrecon |
v1.0.2 | OSINT CLI for aircraft + vessels — race-not-fallback sources, proximity, geofence, PDF |
ohm |
v1.0.2 | Electronics & hardware reference CLI: calc, power, id, pcb, thermal, rf, ref, safe |
jcli |
v1.5.1 | cli.johlem.net suite manager — install / remove / list / run / update |
mailforge |
v1.0.3 | Red-team mail operations toolkit — pixel beacons, landing pages, delivery testing, SPF/DKIM/DMARC offensive analysis, OSINT email harvesting, template variation |
esptools |
v2.0.3 | ESP32 hardware security assessment toolkit — device management, blue-team monitors, red-team audits, forensics, reporting |
phishprobe |
v1.3.4 | Phishing detection — URLs, domains, emails, headers |
openclaw |
v1.0.2 | Phishing takedown pipeline (detect → abuse mail → approve → send) |
credsweep |
v1.2.4 | Credential / secret scanner for files, dirs, stdin, and git history |
hostwatch |
v1.0.3 | Continuous host monitoring — availability, TLS expiry, DNS changes |
darkrecon |
v1.2.2 | Dark-web / OSINT reconnaissance for threat intelligence |
avwatch |
v1.2.4 | File integrity monitoring + YARA-lite scan + event-driven file routing |
stegcrypt |
v1.1.0 | Professional steganography with AEAD encryption, K-of-N threshold split, PNG / BMP / WAV carriers |
kage |
v1.0.0 | Realtime computer monitoring with live connection watch and one-key block |
jfind |
v1.0.1 | Canonical findings + evidence schema — Ed25519-signed, Merkle-rooted, deterministic JSON |
yttranscript |
v1.0.1 | Fetch any YouTube video transcript to a .txt file — no API key, no auth, no async runtime |
mediagrab |
v1.0.1 | Generic web media downloader — find video/audio on any standards-compliant page, save as open-source container |
glasswatch |
v1.0.1 | Passive BLE scanner for smart-glasses manufacturer IDs (Meta, EssilorLuxottica, Snap) |
dronewatch |
v0.1.1 | Passive multi-sensor drone detection — WiFi OUI + OpenDroneID RemoteID decoder |
mark |
v1.0.1 | Privacy-first CLI bookmark manager — SQLite + FTS5 full-text search |
complymap |
v1.0.0 | Control mapping engine — jfind findings → DORA / NIS2 / ISO 27001 / CSSF |
dossier |
v1.0.1 | Reporting layer — jfind / complymap inputs → johlem-branded HTML / Markdown / Document IR |
inciclass |
v1.0.0 | DORA / NIS2 incident classifier + notification clock — RTS 2024/1772 thresholds |
roigen |
v1.0.0 | DORA Register of Information generator — ITS 2024/2956 templates, validates, exports |
tiberscope |
v1.0.0 | TLPT scoping helper — DORA Art. 24 / TIBER-EU four-phase plan + suite-tool map |
offsec |
v1.0.0 | Category dispatcher — offensive toolkit front door (urlrecon / payloadforge / mailforge / wifiaudit / pentree / …) |
socialscope |
v1.0.0 | Passive social-media OSINT — username enumeration, email-existence probes, search-engine dorking, image EXIF |
cmdb |
v1.0.0 | Lightweight asset inventory — hosts / services / owners with DORA Art. 8 + NIS2 Art. 21 metadata |
notify |
v1.0.0 | Suite glue — pipe jfind/v1 findings in, route to Slack / Teams / webhook / file / stdout |
compose-audit |
v1.0.0 | Container manifest auditor — Dockerfile / docker-compose / Kubernetes hardening checks with DORA Art. 9 mapping |
pkgaudit |
v1.0.0 | Multi-lockfile CVE scanner — Cargo / npm / Python / Go via OSV.dev with DORA Art. 28 mapping |
shellrec |
v1.0.0 | Terminal session recorder with Ed25519 chain-of-custody — DORA Art. 17 evidence artefact |
webfuzz |
v1.0.0 | Wordlist-driven HTTP fuzzer — path / vhost / param with jfind/v1 classification |
changefeed |
v1.0.0 | CVE / advisory subscription monitor via OSV.dev — pairs with cmdb and notify |
signtree |
v1.0.0 | Detached Ed25519 signature verifier — signify / minisign / shellrec jfind-like |
backupcheck |
v1.0.0 | DORA Art. 12 restore-test runner — extract / validate / log / jfind |
tabletop |
v1.0.0 | DORA Art. 25 / NIS2 tabletop exercise generator — six curated scenarios |
pwgen |
v1.0.0 | Cryptographically random password / passphrase / PIN / WiFi generator |
burp-cli |
v1.0.0 | Thin CLI MITM proxy — HTTP forward + CONNECT tunnel + history + replay + jfind/v1 (v1.0) |
How It Works
# Architecture (prebuilt, signed Rust binaries)
cli.johlem.net/releases/cli-johlem-net-latest.tar.gz # ~6 KB
├── flake.nix # package set — one derivation per tool
├── flake.lock # pinned nixpkgs for reproducibility
├── johlem-release.pub # signify pubkey (out-of-band audit)
└── tools/
├── jcli/manifest.json # url + sha256 + size + signature URL
├── urlrecon/manifest.json
├── shard/manifest.json
└── ... # one per tool, ~500 bytes each
# When you `nix build .#urlrecon`:
# 1. Nix reads tools/urlrecon/manifest.json to learn the binary URL + SHA-256
# 2. fetchurl downloads cli.johlem.net/tools/urlrecon/releases/urlrecon-vX.Y.Z-linux-x86_64-glibc
# 3. Nix verifies the SHA-256 (build fails on mismatch)
# 4. The binary is installed at /nix/store/...-urlrecon-X.Y.Z/bin/urlrecon
No compilation, no Python, no virtualenvs. The flake fetches the same signify-signed binary the curl install.sh path uses, and Nix's fetchurl enforces the SHA-256 pin committed in manifest.json. The pubkey ships alongside so you can run signify -V out of band if you want a second integrity check.
Nix vs curl|bash Install
| curl|bash | Nix flake | |
|---|---|---|
| Works on | NixOS x86_64 only (the binaries link against a nix-store glibc; the install script does not patch the interpreter, so Debian / Ubuntu / Fedora hosts will fail at startup) | NixOS x86_64 + any host with the Nix package manager installed (Nix patchelfs the binary on install) |
| Binary source | Same signed release | Same signed release |
| Integrity | SHA-256 + signify | SHA-256 (Nix) + signify (manual) |
| Reproducible | Yes (pinned binary) | Yes (pinned binary + pinned nixpkgs) |
| Rollback | Manual (reinstall old version) | nix profile rollback |
| Isolation | ~/.local/bin |
/nix/store (immutable) |
| Multi-user | Per-user only | System-wide or per-user |
| Declarative | No | Yes (in flake.nix) |
| Offline rebuild | No | Yes (from store cache) |
Both methods install the same signify-signed Rust binary from cli.johlem.net — no GitHub, no third-party registry.
These tools are provided as-is with no warranty. Use at your own risk. Intended for authorized security testing, research, and educational purposes only.