{ description = "Endless honeypot for web crawlers"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; flake-utils.url = "github:numtide/flake-utils"; crane.url = "github:ipetkov/crane"; }; outputs = { self, nixpkgs, crane, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; craneLib = crane.mkLib pkgs; commonArgs = { src = craneLib.cleanCargoSource ./.; strictDeps = true; buildInputs = [] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin []; }; dictionaryFile = import ./dictionary.nix {pkgs = pkgs;}; pitch-lake = craneLib.buildPackage (commonArgs // { cargoArtifacts = craneLib.buildDepsOnly commonArgs; DICTIONARY_FILE_PATH = dictionaryFile; }); in { checks = { inherit pitch-lake; }; packages.default = pitch-lake; apps.default = flake-utils.lib.mkApp { drv = pitch-lake; }; devShells.default = craneLib.devShell { checks = self.checks.${system}; inputsFrom = [pitch-lake]; DICTIONARY_FILE_PATH = dictionaryFile; packages = [pkgs.rust-analyzer]; }; }); }