{ outputs = { nixpkgs, ... }: let spond = { rustPlatform, rustfmt, clippy, pkg-config, openssl, ... }: rustPlatform.buildRustPackage { pname = "spond"; version = "0.0.0"; src = ./.; cargoLock.lockFile = ./Cargo.lock; nativeBuildInputs = [ pkg-config ]; propagatedBuildInputs = [ openssl.dev ]; }; allpkgs = system: pkgs: pkgs.extend (_: _: nixpkgs.lib.attrsets.filterAttrs (name: _: name != "default") (packages system pkgs)); packages = system: pkgs': let pkgs = allpkgs system pkgs'; in { default = pkgs.spond; spond = pkgs.callPackage spond {}; }; devShells = system: pkgs': let pkgs = allpkgs system pkgs'; in builtins.mapAttrs (devShell pkgs) (packages system pkgs'); devShell = pkgs: name: pkg: pkgs.mkShell { buildInputs = with pkgs; [ cargo cargo-bloat cargo-machete cargo-workspaces cargo-unused-features cargo-udeps cargo-audit cargo-diet cargo-duplicates cargo-expand cargo-flamegraph clippy lldb gdb (python3.withPackages (py: [ py.pyyaml ])) rustc rustfmt openssl.dev ] ++ pkg.buildInputs; nativeBuildInputs = pkg.nativeBuildInputs; shellHook = '' printf 'Dev shell for %s ready!\n' '${pkg.name}' ''; }; in { packages = builtins.mapAttrs packages nixpkgs.legacyPackages; devShells = builtins.mapAttrs devShells nixpkgs.legacyPackages; }; }