d5f207424b
e2e Tests / e2e (macos-latest) (push) Waiting to run
Nix CI / check (push) Waiting to run
Python CI / Python bindings (macos-latest) (push) Waiting to run
e2e Tests / e2e (windows-latest) (push) Waiting to run
Python CI / Python bindings (windows-latest) (push) Waiting to run
Build & Publish / Build Neovim aarch64-apple-darwin (push) Waiting to run
Build & Publish / Build Neovim aarch64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build Neovim x86_64-apple-darwin (push) Waiting to run
Build & Publish / Build Neovim x86_64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build C FFI aarch64-apple-darwin (push) Waiting to run
Build & Publish / Build C FFI aarch64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build C FFI x86_64-apple-darwin (push) Waiting to run
Build & Publish / Build C FFI x86_64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build MCP aarch64-apple-darwin (push) Waiting to run
Build & Publish / Build MCP aarch64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build MCP x86_64-apple-darwin (push) Waiting to run
Build & Publish / Build MCP x86_64-pc-windows-msvc (push) Waiting to run
Build & Publish / Build Python wheels aarch64 (macos-latest) (push) Waiting to run
Build & Publish / Build Python wheels x86_64 (macos-latest) (push) Waiting to run
Build & Publish / Build Python wheels x86_64 (windows-latest) (push) Waiting to run
Build & Publish / Release (push) Blocked by required conditions
Build & Publish / Publish Python wheels to PyPI (push) Blocked by required conditions
Build & Publish / Publish Rust crates (push) Blocked by required conditions
Build & Publish / Publish npm packages (push) Blocked by required conditions
Rust CI / Fuzz Tests (windows-latest) (push) Waiting to run
Rust CI / Test (macos-latest) (push) Waiting to run
Rust CI / Test (windows-latest) (push) Waiting to run
Rust CI / Fuzz Tests (macos-latest) (push) Waiting to run
Python CI / Python bindings (ubuntu-latest) (push) Failing after 0s
Build & Publish / Build Neovim aarch64-linux-android (push) Failing after 0s
Build & Publish / Build Neovim aarch64-unknown-linux-gnu (push) Failing after 0s
Build & Publish / Build MCP x86_64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build Python wheels aarch64 (ubuntu-latest) (push) Failing after 0s
Build & Publish / Build Python wheels x86_64 (ubuntu-latest) (push) Failing after 1s
Build & Publish / Build Python sdist (push) Failing after 1s
Rust CI / Fuzz Tests (ubuntu-latest) (push) Failing after 1s
Rust CI / Build i686-unknown-linux-gnu (push) Failing after 0s
Rust CI / cargo clippy (push) Failing after 1s
e2e Tests / e2e (ubuntu-latest) (push) Failing after 1s
Lua CI / luacheck lint (push) Failing after 1s
Build & Publish / Build Neovim aarch64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build Neovim x86_64-unknown-linux-gnu (push) Failing after 0s
Build & Publish / Build Neovim x86_64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build C FFI aarch64-linux-android (push) Failing after 0s
Build & Publish / Build C FFI aarch64-unknown-linux-gnu (push) Failing after 0s
Build & Publish / Build C FFI aarch64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build C FFI x86_64-unknown-linux-gnu (push) Failing after 0s
Build & Publish / Build C FFI x86_64-unknown-linux-musl (push) Failing after 1s
Build & Publish / Build MCP aarch64-unknown-linux-gnu (push) Failing after 1s
Build & Publish / Build MCP aarch64-unknown-linux-musl (push) Failing after 0s
Build & Publish / Build MCP x86_64-unknown-linux-gnu (push) Failing after 1s
Spelling / Spell Check with Typos (push) Failing after 0s
Rust CI / Test (ubuntu-latest) (push) Failing after 0s
Rust CI / cargo fmt (push) Failing after 0s
Stylua / Check lua files using Stylua (push) Failing after 1s
Lua CI / lua-language-server type check (push) Failing after 12m29s
e2e Tests / e2e (alpine-musl) (push) Successful in 57m31s
155 lines
4.6 KiB
Nix
155 lines
4.6 KiB
Nix
{
|
|
description = "fff.nvim";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
|
|
crane.url = "github:ipetkov/crane";
|
|
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
|
|
rust-overlay = {
|
|
url = "github:oxalica/rust-overlay";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
zig-overlay = {
|
|
url = "github:mitchellh/zig-overlay";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
crane,
|
|
flake-utils,
|
|
rust-overlay,
|
|
zig-overlay,
|
|
...
|
|
}:
|
|
flake-utils.lib.eachDefaultSystem (
|
|
system:
|
|
let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
overlays = [ (import rust-overlay) ];
|
|
};
|
|
|
|
# zlob requires Zig >= 0.16, but nixpkgs tops out at 0.15. Pull from
|
|
# mitchellh/zig-overlay which ships every released version.
|
|
zig = zig-overlay.packages.${system}."0.16.0";
|
|
|
|
rustToolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
|
|
|
|
craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain;
|
|
|
|
cargoToml = builtins.fromTOML (builtins.readFile ./crates/fff-nvim/Cargo.toml);
|
|
fffMcpCargoToml = builtins.fromTOML (builtins.readFile ./crates/fff-mcp/Cargo.toml);
|
|
|
|
# Common arguments can be set here to avoid repeating them later
|
|
# Note: changes here will rebuild all dependency crates
|
|
commonArgs = {
|
|
pname = cargoToml.package.name;
|
|
version = cargoToml.package.version;
|
|
src = craneLib.cleanCargoSource ./.;
|
|
strictDeps = true;
|
|
|
|
nativeBuildInputs = [ pkgs.pkg-config pkgs.perl zig pkgs.llvmPackages.libclang.lib ];
|
|
buildInputs = with pkgs; [
|
|
# Add additional build inputs here
|
|
openssl
|
|
];
|
|
LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib";
|
|
|
|
# Zig 0.16 insists on writing to its global cache even when the
|
|
# zlob build.rs passes --global-cache-dir. In the nix sandbox $HOME
|
|
# is /homeless-shelter (unwritable), so redirect to $TMPDIR before
|
|
# the build phase runs.
|
|
preBuild = ''
|
|
export ZIG_GLOBAL_CACHE_DIR="$TMPDIR/zig-global-cache"
|
|
export ZIG_LOCAL_CACHE_DIR="$TMPDIR/zig-local-cache"
|
|
export XDG_CACHE_HOME="$TMPDIR/cache"
|
|
mkdir -p "$ZIG_GLOBAL_CACHE_DIR" "$ZIG_LOCAL_CACHE_DIR" "$XDG_CACHE_HOME"
|
|
'';
|
|
};
|
|
|
|
my-crate = craneLib.buildPackage (
|
|
commonArgs
|
|
// {
|
|
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
|
|
doCheck = false;
|
|
}
|
|
);
|
|
|
|
fff-mcp-args = commonArgs // {
|
|
pname = fffMcpCargoToml.package.name;
|
|
version = fffMcpCargoToml.package.version;
|
|
cargoExtraArgs = "-p fff-mcp --bin fff-mcp";
|
|
};
|
|
|
|
fff-mcp = craneLib.buildPackage (
|
|
fff-mcp-args
|
|
// {
|
|
cargoArtifacts = craneLib.buildDepsOnly fff-mcp-args;
|
|
doCheck = false;
|
|
}
|
|
);
|
|
|
|
# Copies the dynamic library into the target/release folder
|
|
copy-dynamic-library = /* bash */ ''
|
|
set -eo pipefail
|
|
mkdir -p target/release
|
|
if [ "$(uname)" = "Darwin" ]; then
|
|
cp -vf ${my-crate}/lib/libfff_nvim.dylib target/release/libfff_nvim.dylib
|
|
else
|
|
cp -vf ${my-crate}/lib/libfff_nvim.so target/release/libfff_nvim.so
|
|
fi
|
|
echo "Library copied to target/release/"
|
|
'';
|
|
in
|
|
{
|
|
checks = {
|
|
inherit my-crate fff-mcp;
|
|
};
|
|
|
|
packages = {
|
|
default = my-crate;
|
|
inherit fff-mcp;
|
|
|
|
# Neovim plugin
|
|
fff-nvim = pkgs.vimUtils.buildVimPlugin {
|
|
pname = "fff.nvim";
|
|
version = "main";
|
|
src = pkgs.lib.cleanSource ./.;
|
|
postPatch = copy-dynamic-library;
|
|
doCheck = false; # Skip require check since we have a Rust FFI component
|
|
};
|
|
};
|
|
|
|
apps.default = flake-utils.lib.mkApp {
|
|
drv = my-crate;
|
|
};
|
|
|
|
apps.fff-mcp = flake-utils.lib.mkApp {
|
|
drv = fff-mcp;
|
|
};
|
|
|
|
# Add the release command
|
|
apps.release = flake-utils.lib.mkApp {
|
|
drv = pkgs.writeShellScriptBin "release" copy-dynamic-library;
|
|
};
|
|
|
|
devShells.default = craneLib.devShell {
|
|
# Inherit inputs from checks.
|
|
checks = self.checks.${system};
|
|
# Extra inputs can be added here; cargo and rustc are provided by default.
|
|
packages = [
|
|
# pkgs.ripgrep
|
|
];
|
|
};
|
|
}
|
|
);
|
|
}
|