forgecode / flake.nix
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
eb51191 verified
Raw
History Blame Contribute Delete
4.38 kB
{
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";
};
});
};
}