| { |
| description = "forge: AI enabled pair programmer for Claude, GPT, O Series, Grok, Deepseek, Gemini and 300+ models"; |
|
|
| inputs = { |
| nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
| }; |
|
|
| outputs = { self, nixpkgs }: |
| let |
| systems = [ |
| "x86_64-linux" |
| "aarch64-linux" |
| "x86_64-darwin" |
| "aarch64-darwin" |
| ]; |
| forAllSystems = nixpkgs.lib.genAttrs systems; |
| in |
| { |
| formatter = forAllSystems (system: |
| let |
| pkgs = import nixpkgs { inherit system; }; |
| in |
| pkgs.nixfmt-rfc-style |
| ); |
|
|
| packages = forAllSystems (system: |
| let |
| pkgs = import nixpkgs { inherit system; }; |
| lib = pkgs.lib; |
| src = lib.cleanSourceWith { |
| src = ./.; |
| filter = path: type: |
| lib.cleanSourceFilter path type |
| && baseNameOf path != "target" |
| && baseNameOf path != "result"; |
| }; |
| forge = pkgs.rustPlatform.buildRustPackage { |
| pname = "forge"; |
| version = "0.1.0-dev"; |
| inherit src; |
|
|
| cargoLock = { |
| lockFile = ./Cargo.lock; |
| allowBuiltinFetchGit = true; |
| }; |
|
|
| cargoBuildFlags = [ |
| "-p" |
| "forge_main" |
| "--bin" |
| "forge" |
| ]; |
| cargoInstallFlags = [ |
| "-p" |
| "forge_main" |
| "--bin" |
| "forge" |
| ]; |
|
|
| nativeBuildInputs = [ |
| pkgs.cmake |
| pkgs.nasm |
| pkgs.perl |
| pkgs.pkg-config |
| pkgs.protobuf |
| ]; |
|
|
| buildInputs = |
| [ pkgs.sqlite ] |
| ++ lib.optionals pkgs.stdenv.isLinux [ |
| pkgs.libxkbcommon |
| pkgs.libx11 |
| pkgs.libxext |
| pkgs.libxfixes |
| pkgs.libxcb |
| pkgs.wayland |
| ] |
| ++ lib.optionals pkgs.stdenv.isDarwin [ |
| pkgs.libiconv |
| pkgs.apple-sdk |
| ]; |
|
|
| PROTOC = "${pkgs.protobuf}/bin/protoc"; |
| PROTOC_INCLUDE = "${pkgs.protobuf}/include"; |
| APP_VERSION = "0.1.0-dev"; |
|
|
| doCheck = false; |
|
|
| meta = { |
| description = "forge: AI enabled pair programmer for Claude, GPT, O Series, Grok, Deepseek, Gemini and 300+ models"; |
| homepage = "https://forgecode.dev"; |
| license = lib.licenses.mit; |
| mainProgram = "forge"; |
| platforms = lib.platforms.unix; |
| }; |
| }; |
| in |
| { |
| default = forge; |
| forge = forge; |
| } |
| ); |
|
|
| apps = forAllSystems (system: { |
| default = { |
| type = "app"; |
| program = "${self.packages.${system}.default}/bin/forge"; |
| }; |
| forge = { |
| type = "app"; |
| program = "${self.packages.${system}.forge}/bin/forge"; |
| }; |
| }); |
|
|
| devShells = forAllSystems (system: |
| let |
| pkgs = import nixpkgs { inherit system; }; |
| lib = pkgs.lib; |
| in |
| { |
| default = pkgs.mkShell { |
| packages = |
| [ |
| pkgs.cargo |
| pkgs.cargo-insta |
| pkgs.cargo-llvm-cov |
| pkgs.clippy |
| pkgs.cmake |
| pkgs.nasm |
| pkgs.perl |
| pkgs.pkg-config |
| pkgs.protobuf |
| pkgs.rust-analyzer |
| pkgs.rustc |
| pkgs.rustfmt |
| pkgs.sqlite |
| ] |
| ++ lib.optionals pkgs.stdenv.isLinux [ |
| pkgs.libxkbcommon |
| pkgs.libx11 |
| pkgs.libxext |
| pkgs.libxfixes |
| pkgs.libxcb |
| pkgs.wayland |
| ] |
| ++ lib.optionals pkgs.stdenv.isDarwin [ |
| pkgs.libiconv |
| pkgs.darwin.apple_sdk.frameworks.AppKit |
| pkgs.darwin.apple_sdk.frameworks.CoreGraphics |
| pkgs.darwin.apple_sdk.frameworks.Foundation |
| ]; |
|
|
| PROTOC = "${pkgs.protobuf}/bin/protoc"; |
| PROTOC_INCLUDE = "${pkgs.protobuf}/include"; |
| APP_VERSION = "0.1.0-dev"; |
| }; |
| }); |
| }; |
| } |
|
|