mirror of
https://github.com/gogrlx/grlx-lsp.git
synced 2026-04-02 03:18:47 -07:00
LSP server for grlx recipe files (.grlx) providing: - Completion for ingredients, methods, properties, requisite types, and step ID references - Diagnostics for unknown ingredients/methods, missing required properties, unknown properties, and invalid requisite types - Hover documentation for all ingredients and methods with property tables - Full schema for all 6 grlx ingredients (cmd, file, group, pkg, service, user) with accurate properties from the grlx source
98 lines
2.4 KiB
Nix
98 lines
2.4 KiB
Nix
{
|
|
description = "A flake for grlx-nom, with Hercules CI support";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
|
|
crane = {
|
|
url = "github:ipetkov/crane";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
|
};
|
|
|
|
outputs = inputs @ {
|
|
self,
|
|
flake-parts,
|
|
nixpkgs,
|
|
crane,
|
|
flake-utils,
|
|
...
|
|
}:
|
|
flake-parts.lib.mkFlake {inherit inputs;} {
|
|
systems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
|
|
perSystem = {
|
|
pkgs,
|
|
system,
|
|
...
|
|
}: let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
};
|
|
craneLib = crane.lib.${system};
|
|
commonArgs = {
|
|
src = craneLib.cleanCargoSource (craneLib.path ./.);
|
|
buildInputs = with pkgs;
|
|
[
|
|
openssl
|
|
pkg-config
|
|
# Add additional build inputs here
|
|
]
|
|
++ lib.optionals stdenv.isDarwin [
|
|
# Additional darwin specific inputs can be set here
|
|
libiconv
|
|
];
|
|
};
|
|
cargoArtifacts = craneLib.buildDepsOnly (commonArgs
|
|
// {
|
|
pname = "grlx-nom-deps";
|
|
});
|
|
|
|
grlx-nom-clippy = craneLib.cargoClippy (commonArgs
|
|
// {
|
|
inherit cargoArtifacts;
|
|
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
|
|
});
|
|
|
|
grlx-nom-nextest = craneLib.cargoNextest (commonArgs
|
|
// {
|
|
inherit cargoArtifacts;
|
|
});
|
|
|
|
grlx-nom = craneLib.buildPackage (commonArgs
|
|
// {
|
|
inherit cargoArtifacts;
|
|
});
|
|
in {
|
|
checks = {
|
|
inherit
|
|
grlx-nom
|
|
grlx-nom-clippy
|
|
grlx-nom-nextest
|
|
;
|
|
};
|
|
formatter = pkgs.alejandra;
|
|
packages.default = grlx-nom;
|
|
|
|
apps.default = flake-utils.lib.mkApp {
|
|
drv = grlx-nom;
|
|
};
|
|
|
|
devShells.default = pkgs.mkShell {
|
|
# Additional dev-shell environment variables can be set directly
|
|
# MY_CUSTOM_DEVELOPMENT_VAR = "something else";
|
|
|
|
# Extra inputs can be added here
|
|
nativeBuildInputs = [
|
|
commonArgs.buildInputs
|
|
pkgs.cargo
|
|
pkgs.rustc
|
|
pkgs.rust-analyzer
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|