lumin 0.1.16

A library for searching and displaying local files
Documentation
{
  description = "lumin";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
    fenix = {
      url = "github:nix-community/fenix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    crane = {
      url = "github:ipetkov/crane/v0.17.3";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs =
    {
      self,
      nixpkgs,
      flake-utils,
      fenix,
      crane,
    }:
    flake-utils.lib.eachDefaultSystem (
      system:
      let
        pkgs = nixpkgs.legacyPackages.${system};

        # Get Rust toolchain from fenix - with updated hash
        rust-toolchain = fenix.packages.${system}.fromToolchainFile {
          file = ./rust-toolchain.toml;
          sha256 = "sha256-AJ6LX/Q/Er9kS15bn9iflkUwcgYqRQxiOIL2ToVAXaU=";
        };

        # Create a crane lib with our rust-toolchain
        craneLib = (crane.mkLib pkgs).overrideToolchain rust-toolchain;

        # Create a modified buildRustPackage that skips the problematic steps
        buildRustPackageCustom =
          args:
          pkgs.rustPlatform.buildRustPackage (
            args
            // {
              # These options help bypass the workspace inheritance issues
              dontFixCargo = true;
              cargoLockCheck = false;
              doCheck = false;
            }
          );

        # Build cargo-machete with the same rust-toolchain
        cargo-machete = craneLib.buildPackage {
          pname = "cargo-machete";
          version = "0.8.0";

          src = pkgs.fetchCrate {
            pname = "cargo-machete";
            version = "0.8.0";
            sha256 = "sha256-EMU/ZegrNBzDtjifdVlHP/P9hNJJ//SDDwlB7uo1sY0=";
          };

          # Ensure the binary is installed in the expected location
          cargoExtraArgs = "--bin cargo-machete";

          doCheck = false;
        };

      in
      {
        # Development shell with Rust toolchain
        devShells.default = craneLib.devShell {
          packages = [
            pkgs.nixpkgs-fmt
            pkgs.openssl
            pkgs.pkg-config
            pkgs.nodejs
            pkgs.nodePackages.npm
            pkgs.go-task
            cargo-machete
          ];

          inputsFrom = [ ];

          # Add OpenSSL configuration
          shellHook = ''
            export OPENSSL_DIR=${pkgs.openssl.dev}
            export OPENSSL_LIB_DIR=${pkgs.openssl.out}/lib
            export OPENSSL_INCLUDE_DIR=${pkgs.openssl.dev}/include

            echo "Shell loaded successfully with OpenSSL configuration"
          '';
        };

        # Simple package definition
        packages.default = buildRustPackageCustom {
          pname = "lumin";
          version = "0.1.16";
          src = ./.;

          # Basic cargo lock configuration
          cargoLock = {
            lockFile = ./Cargo.lock;
            allowBuiltinFetchGit = true;
          };

          # Enable Git fetching with CLI
          CARGO_NET_GIT_FETCH_WITH_CLI = "true";
          CARGO_TERM_VERBOSE = "true";

          nativeBuildInputs = [
            rust-toolchain
            pkgs.pkg-config
          ];

          buildInputs =
            [
              pkgs.openssl
            ]
            ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
              pkgs.libiconv
            ];

          # OpenSSL environment variables
          OPENSSL_DIR = "${pkgs.openssl.dev}";
          OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib";
          OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include";
        };
      }
    );
}