arraylake 0.1.0-alpha.1

A client for Earthmover's ArrayLake platform
Documentation
{
  description = "subsync flake";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

    fenix = {
      url = "github:nix-community/fenix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs =
    {
      self,
      nixpkgs,
      fenix,
      ...
    }:
    let
      inherit (nixpkgs) lib;

      # This example is only using x86_64-linux
      pkgs = nixpkgs.legacyPackages.x86_64-linux;

    in
    {
      packages.x86_64-linux.default = fenix.packages.x86_64-linux.stable.toolchain;

      # This example provides two different modes of development:
      # - Impurely using uv to manage virtual environments
      # - Pure development using uv2nix to manage virtual environments
      devShells.x86_64-linux = {
        # It is of course perfectly OK to keep using an impure virtualenv workflow and only use uv2nix to build packages.
        # This devShell simply adds Python and undoes the dependency leakage done by Nixpkgs Python infrastructure.
        impure =
          pkgs.mkShell.override
            {
              stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.clangStdenv;
            }
            {
              packages = [
                fenix.packages.x86_64-linux.stable.toolchain
                pkgs.cargo-nextest # test runner
                pkgs.cargo-deny
                pkgs.cargo-edit
                pkgs.cargo-release

                pkgs.mold
                pkgs.taplo # toml lsp server
                pkgs.awscli2
                pkgs.google-cloud-sdk
                pkgs.just # script launcher with a make flavor
                pkgs.alejandra # nix code formatter
                pkgs.markdownlint-cli2

                # necessary for reqwest
                pkgs.openssl
                pkgs.pkg-config
              ];

              env = {

                RUSTFLAGS = "-W unreachable-pub -W bare-trait-objects";
              }
              // lib.optionalAttrs pkgs.stdenv.isLinux {
                # Python libraries often load native shared objects using dlopen(3).
                # Setting LD_LIBRARY_PATH makes the dynamic library loader aware of libraries without using RPATH for lookup.
                LD_LIBRARY_PATH = lib.makeLibraryPath pkgs.pythonManylinuxPackages.manylinux1;
              };
              shellHook = ''
                unset PYTHONPATH
              '';
            };
      };
    };
}