anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / development / tools / shellcheck / default.nix
blob8d04c357ce5089483acb8efe3311465f55436d35
1 { stdenv, lib, ShellCheck, haskell, pandoc }:
3 # this wraps around the haskell package
4 # and puts the documentation into place
6 let
7   # TODO: move to lib/ in separate PR
8   overrideMeta = drv: overrideFn:
9     let
10       drv' = if drv ? meta then drv else drv // { meta = { }; };
11       pos = (builtins.unsafeGetAttrPos "pname" drv');
12       meta' = drv'.meta // {
13         # copied from the mkDerivation code
14         position = pos.file + ":" + toString pos.line;
15       };
16     in
17     drv' // { meta = meta' // overrideFn meta'; };
19   bin = haskell.lib.compose.justStaticExecutables ShellCheck;
21   shellcheck = stdenv.mkDerivation {
22     pname = "shellcheck";
23     version = bin.version;
25     inherit (ShellCheck) meta src;
27     nativeBuildInputs = [ pandoc ];
29     outputs = [ "bin" "man" "doc" "out" ];
31     buildPhase = ''
32       pandoc -s -f markdown-smart -t man shellcheck.1.md -o shellcheck.1
33     '';
35     installPhase = ''
36       install -Dm755 ${bin}/bin/shellcheck $bin/bin/shellcheck
37       install -Dm644 README.md $doc/share/shellcheck/README.md
38       install -Dm644 shellcheck.1 $man/share/man/man1/shellcheck.1
39       mkdir $out
40     '';
42     passthru = ShellCheck.passthru or { } // {
43       # pandoc takes long to build and documentation isn't needed for in nixpkgs usage
44       unwrapped = ShellCheck;
45     };
46   };
49 overrideMeta shellcheck (old: {
50   maintainers = with lib.maintainers; [ zowoq ];
51   mainProgram = "shellcheck";
52   outputsToInstall = [ "bin" "man" "doc" ];