{ getSystem, inputs, ... }: { perSystem = { pkgs, lib, self', buildRustProgram, system, ... }: let cleanSystem = system: lib.replaceStrings [ "-" ] [ "_" ] system; agents = lib.strings.concatMapStrings ( system: "--set WIRE_KEY_AGENT_${cleanSystem system} ${(getSystem system).packages.agent} " ) (import inputs.linux-systems); options = pkgs.callPackage ../../doc/options.nix { }; cliManpage = pkgs.runCommand "cli-manpage" { } '' mkdir $out ${lib.getExe' self'.packages.wire-unwrapped-dev "wire"} apply --roff $out ''; in { packages = { default = self'.packages.wire; wire-unwrapped-dev = buildRustProgram { name = "wire"; pname = "wire"; cargoExtraArgs = "-p wire"; doCheck = true; CARGO_PROFILE = "dev"; nativeBuildInputs = [ pkgs.sqlx-cli ]; preBuild = '' export DATABASE_URL=sqlite:./db.sqlite3 sqlx database create sqlx migrate run --source ./crates/core/src/cache/migrations/ ''; }; wire-unwrapped = self'.packages.wire-unwrapped-dev.overrideAttrs (old: { CARGO_PROFILE = "release"; nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.installShellFiles pkgs.ronn ]; postInstall = '' installShellCompletion --cmd wire \ --bash <(COMPLETE=bash $out/bin/wire) \ --fish <(COMPLETE=fish $out/bin/wire) \ --zsh <(COMPLETE=zsh $out/bin/wire) mkdir -p $out/share/man/man1/ mkdir -p $out/share/man/man5/ cp ${options} wire.5 cp ${cliManpage}/* $out/share/man/man1/ ronn -r \ --manual="Module Options" \ --name="wire" \ --section="5" \ --date="2026-01-1" \ -o $out/share/man/man5/ \ wire.5 rm wire.5 ''; }); wire-unwrapped-perf = buildRustProgram { name = "wire"; pname = "wire"; CARGO_PROFILE = "profiling"; cargoExtraArgs = "-p wire"; }; wire = pkgs.symlinkJoin { name = "wire"; paths = [ self'.packages.wire-unwrapped ]; nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/wire ${agents} ''; meta.mainProgram = "wire"; }; wire-small = pkgs.symlinkJoin { name = "wire"; paths = [ self'.packages.wire-unwrapped ]; nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/wire --set WIRE_KEY_AGENT_${cleanSystem system} ${self'.packages.agent} ''; meta.mainProgram = "wire"; }; wire-dev = self'.packages.wire.overrideAttrs { paths = [ self'.packages.wire-unwrapped-dev ]; }; wire-small-dev = self'.packages.wire-small.overrideAttrs { paths = [ self'.packages.wire-unwrapped-dev ]; }; wire-small-perf = self'.packages.wire-small.overrideAttrs { paths = [ self'.packages.wire-unwrapped-perf ]; }; }; }; }