{ inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; inputs.systems.url = "github:nix-systems/default-linux"; outputs = { self, nixpkgs, systems, }: let mkDeps = pkgs: { dev = getPkgs { inherit (pkgs) rust-analyzer clippy rustc cargo rustfmt ; }; build = getPkgs { # rustc + cargo are inherent in rustPlatform }; }; forAllSystems = function: nixpkgs.lib.genAttrs (import systems) ( system: let pkgs = nixpkgs.legacyPackages.${system}; in function pkgs (mkDeps pkgs) ); getPkgs = builtins.attrValues; in { devShells = forAllSystems ( pkgs: deps: { default = pkgs.mkShell { packages = with deps; dev ++ build; }; } ); packages = forAllSystems ( pkgs: deps: { default = let inherit (pkgs.rustPlatform) buildRustPackage; in buildRustPackage { src = ./.; cargoLock.lockFile = ./Cargo.lock; }; } ); }; }