Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ 2 lib, 3 channel ? "stable", 4 fetchurl, 5 installShellFiles, 6 makeBinaryWrapper, 7 terraform, 8 stdenvNoCC, 9 unzip, 10 nixosTests, 11}: 12 13let 14 inherit (stdenvNoCC.hostPlatform) system; 15 16 channels = { 17 stable = { 18 version = "2.23.4"; 19 hash = { 20 x86_64-linux = "sha256-tpU26+3NrfOUWgd4Wav1fhTMtErh2CXt3Nr8BTIUdbc="; 21 x86_64-darwin = "sha256-07pSXm++a9VWcnc4AgrR7OaaDw2ki2XMtr8PZkWW2Vw="; 22 aarch64-linux = "sha256-Rm1CIVK7qPLizK+0H3Eb2qwPEj1TjHtIqdBr+Z+21eA="; 23 aarch64-darwin = "sha256-H5MLnRokC5Wb3FrotprunG+kx0qwT8/Ou6ScO7N2h+E="; 24 }; 25 }; 26 mainline = { 27 version = "2.24.2"; 28 hash = { 29 x86_64-linux = "sha256-Al3bvIsSnU0vdNAkZknpP/rxJIP6UGUIeIZ6kw84SuM="; 30 x86_64-darwin = "sha256-0+n69BWKIgKFUCQzW4AMRW4QdRQcZkK5Ioiu4d4RvnE="; 31 aarch64-linux = "sha256-2JkEO7hhLY9e22OTYLhzv+Zb0aP6PRVG8ZX5r686o0Q="; 32 aarch64-darwin = "sha256-7CJQEj7VA3SwaZeimng6BPDtw14LXt7+1E7HxVs8kYM="; 33 }; 34 }; 35 }; 36in 37stdenvNoCC.mkDerivation (finalAttrs: { 38 pname = "coder"; 39 version = channels.${channel}.version; 40 src = fetchurl { 41 hash = (channels.${channel}.hash).${system}; 42 43 url = 44 let 45 systemName = 46 { 47 x86_64-linux = "linux_amd64"; 48 aarch64-linux = "linux_arm64"; 49 x86_64-darwin = "darwin_amd64"; 50 aarch64-darwin = "darwin_arm64"; 51 } 52 .${system}; 53 54 ext = 55 { 56 x86_64-linux = "tar.gz"; 57 aarch64-linux = "tar.gz"; 58 x86_64-darwin = "zip"; 59 aarch64-darwin = "zip"; 60 } 61 .${system}; 62 in 63 "https://github.com/coder/coder/releases/download/v${finalAttrs.version}/coder_${finalAttrs.version}_${systemName}.${ext}"; 64 }; 65 66 nativeBuildInputs = [ 67 installShellFiles 68 makeBinaryWrapper 69 unzip 70 ]; 71 72 unpackPhase = '' 73 runHook preUnpack 74 75 case $src in 76 *.tar.gz) tar -xz -f "$src" ;; 77 *.zip) unzip "$src" ;; 78 esac 79 80 runHook postUnpack 81 ''; 82 83 installPhase = '' 84 runHook preInstall 85 86 install -D -m755 coder $out/bin/coder 87 88 runHook postInstall 89 ''; 90 91 postInstall = '' 92 wrapProgram $out/bin/coder \ 93 --prefix PATH : ${lib.makeBinPath [ terraform ]} 94 ''; 95 96 # integration tests require network access 97 doCheck = false; 98 99 meta = { 100 description = "Provision remote development environments via Terraform"; 101 homepage = "https://coder.com"; 102 license = lib.licenses.agpl3Only; 103 mainProgram = "coder"; 104 maintainers = with lib.maintainers; [ 105 ghuntley 106 kylecarbs 107 urandom 108 ]; 109 }; 110 111 passthru = { 112 updateScript = ./update.sh; 113 tests = { 114 inherit (nixosTests) coder; 115 }; 116 }; 117})