fieldset 0.1.4

Struct to enum derivation
Documentation
{
  inputs = {
    nixpkgs = {
      url = "github:NixOs/nixpkgs/nixos-unstable";
    };
    fenix = {
      url = "github:nix-community/fenix/monthly";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
  outputs = { self, nixpkgs, fenix, ... }:
    let
      forAllSystems = nixpkgs.lib.genAttrs [
        "aarch64-linux"
        "x86_64-linux"
        "aarch64-darwin"
        "x86_64-darwin"
      ];

      buildToolchain = system: with fenix.packages.${system}; combine [
        latest.cargo
        latest.rustc
        latest.clippy
        latest.llvm-tools
        latest.rustfmt
        latest.rust-analyzer
      ];
    in
    {
      packages = forAllSystems
        (system:
          let
            pkgs = nixpkgs.legacyPackages.${system};
            toolchain = buildToolchain system;
            buildRustPackage = (pkgs.makeRustPlatform {
              cargo = toolchain;
              rustc = toolchain;
            }).buildRustPackage;
          in
          {
            default = buildRustPackage {
              pname = "fieldset";
              version = "0.1.0";
              src = ./.;
              cargoLock = {
                lockFile = ./Cargo.lock;
              };
            };
          });

      devShells = forAllSystems
        (system:
          let
            pkgs = nixpkgs.legacyPackages.${system};
            toolchain = buildToolchain system;
          in
          {
            default = pkgs.mkShell {
              inputsFrom = [
                self.packages.${system}.default
              ];
              nativeBuildInputs = with pkgs; [
                toolchain
                cargo-expand
                cargo-binutils
                cargo-udeps
                cargo-readme
                clang-tools
              ];
            };
          });
    };
}