base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / pkgs / by-name / kc / kcl / package.nix
blob890f7bf33c40191380f04ce117b676e4f660f473
1 { lib
2 , stdenv
3 , buildGo123Module
4 , fetchFromGitHub
5 , kclvm_cli
6 , kclvm
7 , makeWrapper
8 , installShellFiles
9 , darwin
12 buildGo123Module rec {
13   pname = "kcl";
14   version = "0.10.0";
16   src = fetchFromGitHub {
17     owner = "kcl-lang";
18     repo = "cli";
19     rev = "v${version}";
20     hash = "sha256-0KxT4t77EDB7Vr/cb+P20ARRR+7g5uZiF5QYOArUhgI=";
21   };
23   vendorHash = "sha256-9APQDYCBvG38y0ZYuacfyUmjoEV9jGqRg7OZ7mArzIU=";
25   # By default, libs and bins are stripped. KCL will crash on darwin if they are.
26   dontStrip = stdenv.hostPlatform.isDarwin;
28   ldflags = [
29     "-w -s"
30     "-X=kcl-lang.io/cli/pkg/version.version=v${version}"
31   ];
33   nativeBuildInputs = [ makeWrapper installShellFiles ];
35   buildInputs = [ kclvm kclvm_cli ] ++ (
36     lib.optional stdenv.hostPlatform.isDarwin [
37       darwin.apple_sdk.frameworks.Security
38       darwin.apple_sdk.frameworks.CoreServices
39       darwin.apple_sdk.frameworks.SystemConfiguration
40     ]
41   );
43   subPackages = [ "cmd/kcl" ];
45   # env vars https://github.com/kcl-lang/kcl-go/blob/main/pkg/env/env.go#L29
46   postFixup = ''
47      wrapProgram $out/bin/kcl \
48     --prefix PATH : "${lib.makeBinPath [kclvm kclvm_cli]}" \
49     --prefix KCL_LIB_HOME : "${lib.makeLibraryPath [kclvm]}" \
50     --prefix KCL_GO_DISABLE_INSTALL_ARTIFACT : false
51   '';
53   postInstall = ''
54     export HOME=$(mktemp -d)
55     installShellCompletion --cmd kcl \
56       --bash <($out/bin/kcl completion bash) \
57       --fish <($out/bin/kcl completion fish) \
58       --zsh <($out/bin/kcl completion zsh)
59   '';
61   meta = with lib; {
62     description = "A command line interface for KCL programming language";
63     homepage = "https://github.com/kcl-lang/cli";
64     license = licenses.asl20;
65     platforms = platforms.linux ++ platforms.darwin;
66     maintainers = with maintainers; [ selfuryon peefy ];
67     mainProgram = "kcl";
68   };