diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bf2e0d9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Franz Kafka + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index b8df2bb..41302da 100644 --- a/README.md +++ b/README.md @@ -31,12 +31,36 @@ upstream_url: "https://api.z.ai/api/anthropic" ## Building +### Standard Go build + ```bash go build -o proxx ``` Requires Go 1.21+ with only `gopkg.in/yaml.v3` as an external dependency. +### Nix build (reproducible) + +```bash +nix build +``` + +Or run directly from the flake: + +```bash +nix run . +``` + +This uses a reproducible build environment with pinned dependencies. + +### Nix development shell + +```bash +nix shell +``` + +Provides Go toolchain with gopls and other development tools. + ## Running ```bash diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..de26a32 --- /dev/null +++ b/flake.nix @@ -0,0 +1,42 @@ +{ + description = "OpenAI-to-Anthropic API proxy"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + { + packages.default = pkgs.buildGoModule { + pname = "proxx"; + version = "0.1.0"; + src = ./.; + + # Run: nix-build 2>&1 | grep "got:" to get actual hash + # Then replace vendorHash below + vendorHash = null; + + meta = with pkgs.lib; { + description = "OpenAI-to-Anthropic API proxy"; + homepage = "https://git.ashisgreat.xyz/penal-colony/proxx"; + license = licenses.mit; + maintainers = [ ]; + }; + }; + + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + go + gopls + gotools + go-tools + ]; + }; + } + ); +} diff --git a/proxx b/proxx index c15071a..9d96b85 100755 Binary files a/proxx and b/proxx differ