ea4eb0d574
In certain situations, such as running development builds of Nix that might break API, it can be undesirable to have a Nix dependency for nix-doc, and there is still substantial useful functionality (ctags, search) exposed in its binaries. Thus let's make it possible to turn off the plugin build.
58 lines
1.8 KiB
Nix
58 lines
1.8 KiB
Nix
{ lib
|
|
, stdenv
|
|
, rustPlatform
|
|
, fetchFromGitHub
|
|
, boost
|
|
, nix
|
|
, pkg-config
|
|
# Whether to build the nix-doc plugin for Nix
|
|
, withPlugin ? true
|
|
}:
|
|
|
|
let
|
|
packageFlags = [ "-p" "nix-doc" ] ++ lib.optionals withPlugin [ "-p" "nix-doc-plugin" ];
|
|
in
|
|
rustPlatform.buildRustPackage rec {
|
|
pname = "nix-doc";
|
|
version = "0.6.5";
|
|
|
|
src = fetchFromGitHub {
|
|
rev = "v${version}";
|
|
owner = "lf-";
|
|
repo = "nix-doc";
|
|
sha256 = "sha256-9cuNzq+CBA2jz0LkZb7lh/WISIlKklfovGBAbSo1Mgk=";
|
|
};
|
|
|
|
doCheck = true;
|
|
buildInputs = lib.optionals withPlugin [ boost nix ];
|
|
|
|
nativeBuildInputs = lib.optionals withPlugin [ pkg-config nix ];
|
|
|
|
cargoBuildFlags = packageFlags;
|
|
cargoTestFlags = packageFlags;
|
|
|
|
# Packaging support for making the nix-doc plugin load cleanly as a no-op on
|
|
# the wrong Nix version (disabling bindnow permits loading libraries
|
|
# requiring unavailable symbols if they are unreached)
|
|
hardeningDisable = lib.optionals withPlugin [ "bindnow" ];
|
|
# Due to a Rust bug, setting -Z relro-level to anything including "off" on
|
|
# macOS will cause link errors
|
|
env = lib.optionalAttrs (withPlugin && stdenv.isLinux) {
|
|
# nix-doc does not use nightly features, however, there is no other way to
|
|
# set relro-level
|
|
RUSTC_BOOTSTRAP = 1;
|
|
RUSTFLAGS = "-Z relro-level=partial";
|
|
};
|
|
|
|
cargoSha256 = "sha256-CHagzXTG9AfrFd3WmHanQ+YddMgmVxSuB8vK98A1Mlw=";
|
|
|
|
meta = with lib; {
|
|
description = "An interactive Nix documentation tool";
|
|
longDescription = "An interactive Nix documentation tool providing a CLI for function search, a Nix plugin for docs in the REPL, and a ctags implementation for Nix script";
|
|
homepage = "https://github.com/lf-/nix-doc";
|
|
license = licenses.lgpl3Plus;
|
|
maintainers = [ maintainers.lf- ];
|
|
platforms = platforms.unix;
|
|
mainProgram = "nix-doc";
|
|
};
|
|
}
|