{ description = "Various packages for Nix"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; systems.url = "github:nix-systems/default"; blueprint = { url = "github:numtide/blueprint"; inputs.nixpkgs.follows = "nixpkgs"; inputs.systems.follows = "systems"; }; treefmt-nix = { url = "github:numtide/treefmt-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-parts = { url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; bun2nix = { # TODO(#4001): drop the branch pin once catalog support # (nix-community/bun2nix#86) reaches the default branch. url = "github:nix-community/bun2nix/staging-2.1.0"; inputs.nixpkgs.follows = "nixpkgs"; inputs.systems.follows = "systems"; inputs.treefmt-nix.follows = "treefmt-nix"; inputs.flake-parts.follows = "flake-parts"; }; }; outputs = { self, ... }@inputs: let blueprintOutputs = inputs.blueprint { inherit inputs; # allowUnfree is needed for packages that depend on pre-built # binaries (e.g., goose-cli's librusty_v8) nixpkgs.config.allowUnfree = true; }; in blueprintOutputs // { overlays = { default = import ./overlays { inherit (blueprintOutputs) packages; }; shared-nixpkgs = import ./overlays/shared-nixpkgs.nix { inherit (blueprintOutputs) mkPackagesFor; }; }; nixosModules.default = { nixpkgs.overlays = [ self.overlays.default ]; }; }; }