{ ... }: { perSystem = { pkgs, ... }: let dataFiles = pkgs.stdenv.mkDerivation { name = "name-generator-data"; src = ./.; installPhase = '' mkdir -p $out cp adjectives.txt nouns.txt $out/ ''; }; in { packages.name-generator = (pkgs.writeShellApplication { name = "name-generator"; runtimeInputs = [ pkgs.bash ]; text = '' # Data files location DATA_DIR="${dataFiles}" # Default separator SEPARATOR="-" # Parse command line options while [[ $# -gt 0 ]]; do case $1 in -s|--separator) SEPARATOR="$2" shift 2 ;; -h|--help) echo "Usage: $0 [OPTIONS]" echo "Generate a random name in the format: adjective-noun" echo "" echo "Options:" echo " -s, --separator CHAR Use CHAR as separator (default: -)" echo " -h, --help Show this help message" exit 0 ;; *) echo "Unknown option: $1" exit 1 ;; esac done # Read adjectives and nouns mapfile -t ADJECTIVES < "$DATA_DIR/adjectives.txt" mapfile -t NOUNS < "$DATA_DIR/nouns.txt" # Select random adjective and noun ADJ_INDEX=$((RANDOM % ''${#ADJECTIVES[@]})) NOUN_INDEX=$((RANDOM % ''${#NOUNS[@]})) # Output the generated name echo "''${ADJECTIVES[$ADJ_INDEX]}''${SEPARATOR}''${NOUNS[$NOUN_INDEX]}" ''; }).overrideAttrs { passthru.usage = builtins.readFile ./usage.kdl; }; }; }