nixpkgs/pkgs/applications/science/electronics/bitscope/common.nix
David Asabina b986078593 bitscope: refactored to pass nixpkgs-lint
The linter (nixpkgs-lint) was not able to find the bitscope packages
because `recurseIntoAttrs` was not applied to the suite's set.

The name supplied to `buildFHSUserEnv` produces a binary that
corresponds to the binary names in the deb packages (e.g.: bitscope-dso,
bitscope-chart, bitscope-logic, etc), however; this name does not
constitute a valid nixpkgs name. Valid nixpkgs names satisfy the
`/(.*)(-[0-9].*)$/` pattern, therefore a valid name is merged into the
derivation produced by `buildFHSUserEnv`.
2018-01-14 20:00:10 +01:00

71 lines
1.3 KiB
Nix

{ atk
, buildFHSUserEnv
, cairo
, dpkg
, fetchurl
, gdk_pixbuf
, glib
, gtk2-x11
, makeWrapper
, pango
, stdenv
, writeTextFile
, xorg
}:
{ src, toolName, version, ... } @ attrs:
let
wrapBinary = libPaths: binaryName: ''
wrapProgram "$out/bin/${binaryName}" \
--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath libPaths}"
'';
pkg = stdenv.mkDerivation (rec {
inherit (attrs) version src;
name = "${toolName}-${version}";
meta = with stdenv.lib; {
homepage = http://bitscope.com/software/;
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [
vidbina
];
} // (attrs.meta or {});
buildInputs = [
dpkg
makeWrapper
];
libs = attrs.libs or [
atk
cairo
gdk_pixbuf
glib
gtk2-x11
pango
xorg.libX11
];
dontBuild = true;
unpackPhase = attrs.unpackPhase or ''
dpkg-deb -x ${attrs.src} ./
'';
installPhase = attrs.installPhase or ''
mkdir -p "$out/bin"
cp -a usr/* "$out/"
${(wrapBinary libs) attrs.toolName}
'';
});
fhs = target: buildFHSUserEnv {
inherit (pkg) name;
runScript = target;
};
in buildFHSUserEnv {
name = attrs.toolName;
runScript = "${pkg.outPath}/bin/${attrs.toolName}";
} // { inherit (pkg) meta name; }