about summary refs log tree commit diff
path: root/pkgs/development/tools/coder/default.nix
diff options
context:
space:
mode:
authorSoner Sayakci <s.sayakci@shopware.com>2022-10-24 20:08:00 +0000
committerSoner Sayakci <s.sayakci@shopware.com>2023-02-06 13:15:00 +0100
commit56ecab709a5a6e49049c0892a7cc59cfa22bdd98 (patch)
tree6cb209777f6858016e214cbfd5e43d92357c6b19 /pkgs/development/tools/coder/default.nix
parent0566d27d03a7b9c285045f57004a6ba2c2613454 (diff)
nixos/coder: init module
Diffstat (limited to 'pkgs/development/tools/coder/default.nix')
-rw-r--r--pkgs/development/tools/coder/default.nix59
1 files changed, 55 insertions, 4 deletions
diff --git a/pkgs/development/tools/coder/default.nix b/pkgs/development/tools/coder/default.nix
index 30d22bc183dc2..c81cdce753ecc 100644
--- a/pkgs/development/tools/coder/default.nix
+++ b/pkgs/development/tools/coder/default.nix
@@ -1,8 +1,18 @@
-{ buildGoModule
+{ lib
 , fetchFromGitHub
 , installShellFiles
-, lib
+, makeWrapper
+, buildGoModule
+, fetchYarnDeps
+, fixup_yarn_lock
+, pkg-config
+, nodejs
+, yarn
+, nodePackages
+, python3
+, terraform
 }:
+
 buildGoModule rec {
   pname = "coder";
   version = "0.16.0";
@@ -14,18 +24,59 @@ buildGoModule rec {
     hash = "sha256-3rGpyJzGkZYUEvKKDzj2I5sqrUImmmX7cXWM9UClPLY=";
   };
 
+  offlineCache = fetchYarnDeps {
+    yarnLock = src + "/site/yarn.lock";
+    hash = "sha256-4GbM7GNZ3wHIZJIJuHw1v/SwjUNc1vi8IHRGaGwPGZQ=";
+  };
+
+  subPackages = [ "cmd/..." ];
+
+  vendorHash = "sha256-bb9jBno7elO6qKGjacpX3rxgrpJpGpTxMQtdBYjBzMk=";
+
   # integration tests require network access
   doCheck = false;
 
-  vendorHash = "sha256-bb9jBno7elO6qKGjacpX3rxgrpJpGpTxMQtdBYjBzMk=";
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/coder/coder/buildinfo.tag=${version}"
+  ];
+
+  preBuild = ''
+    export HOME=$TEMPDIR
 
-  nativeBuildInputs = [ installShellFiles ];
+    pushd site
+    yarn config --offline set yarn-offline-mirror ${offlineCache}
+    fixup_yarn_lock yarn.lock
+
+    # node-gyp tries to download always the headers and fails: https://github.com/NixOS/nixpkgs/issues/195404
+    yarn remove --offline jest-canvas-mock canvas
+
+    NODE_ENV=production node node_modules/.bin/vite build
+
+    popd
+  '';
+
+  tags = [ "embed" ];
+
+  nativeBuildInputs = [
+    fixup_yarn_lock
+    installShellFiles
+    makeWrapper
+    nodePackages.node-pre-gyp
+    nodejs
+    pkg-config
+    python3
+    yarn
+  ];
 
   postInstall = ''
     installShellCompletion --cmd coder \
       --bash <($out/bin/coder completion bash) \
       --fish <($out/bin/coder completion fish) \
       --zsh <($out/bin/coder completion zsh)
+
+    wrapProgram $out/bin/coder --prefix PATH : ${lib.makeBinPath [ terraform ]}
   '';
 
   meta = with lib; {