@ -3,11 +3,17 @@
, rustPlatform
, fetchFromGitHub
, makeWrapper
, symlinkJoin
, CoreFoundation
, openssl
, pkg-config
, protobuf
, Security
, stdenv
, xdg-utils
, nixosTests
, withRdpClient ? true
, withRoleTester ? true
} :
let
@ -16,17 +22,38 @@ let
owner = " g r a v i t a t i o n a l " ;
repo = " t e l e p o r t " ;
rev = " v ${ version } " ;
sha256 = " s h a 2 5 6 - i r 2 N M N I j S p v 7 l 6 d V N H c z A R g 6 b + d o F o f i n s J y 1 s m E C 7 o = " ;
sha256 = " s h a 2 5 6 - K Q f d e M u Z 9 L J H h E J L M l 5 8 Y b 0 + g x g D T 7 V c V n K 1 J x j V Z a I = " ;
} ;
version = " 9 . 1 . 2 " ;
rdpClient = rustPlatform . buildRustPackage rec {
name = " t e l e p o r t - r d p c l i e n t " ;
cargoSha256 = " s h a 2 5 6 - J z 7 b B / f 4 H R x B h S e v m f E L S r I m + I X U V l A D I g p 2 q W Q d 5 P Y = " ;
inherit version src ;
buildAndTestSubdir = " l i b / s r v / d e s k t o p / r d p / r d p c l i e n t " ;
buildInputs = [ openssl ]
++ lib . optionals stdenv . isDarwin [ CoreFoundation Security ] ;
nativeBuildInputs = [ pkg-config ] ;
# https://github.com/NixOS/nixpkgs/issues/161570 ,
# buildRustPackage sets strictDeps = true;
checkInputs = buildInputs ;
OPENSSL_NO_VENDOR = " 1 " ;
postInstall = ''
cp - r target $ out
'' ;
} ;
version = " 8 . 1 . 3 " ;
roleTester = rustPlatform . buildRustPackage {
name = " t e l e p o r t - r o l e t e s t e r " ;
inherit version ;
inherit version src ;
src = " ${ src } / l i b / d a t a l o g " ;
cargoSha256 = " s h a 2 5 6 - c p W 7 k e l 0 2 t / f B 2 C v D v V q W l z g S 3 V g 2 q L n e m F / b W 2 I i 1 A = " ;
sourceRoot = " d a t a l o g / r o l e t e s t e r " ;
cargoSha256 = " s h a 2 5 6 - g C m 4 E T b X y 6 t G J Q V S z U k o A W U m K D 3 p o Y g k w 1 3 3 L t z i A S I = " ;
buildAndTestSubdir = " l i b / d a t a l o g / r o l e t e s t e r " ;
PROTOC = " ${ protobuf } / b i n / p r o t o c " ;
PROTOC_INCLUDE = " ${ protobuf } / i n c l u d e " ;
@ -39,20 +66,23 @@ let
webassets = fetchFromGitHub {
owner = " g r a v i t a t i o n a l " ;
repo = " w e b a s s e t s " ;
rev = " e a 3 c 6 7 c 9 4 1 c 5 6 c f b 6 c 2 2 8 6 1 2 e 8 8 1 0 0 d f 0 9 f b 6 f 9 c " ;
sha256 = " s h a 2 5 6 - o K v D X k x A 7 3 I J O i + c i B F V L k Y c m e R U s T C + 3 r c Y f 6 4 v D o Y = " ;
rev = " 6 7 e 6 0 8 d b 7 7 3 0 0 d 8 a 6 c b 1 7 7 0 9 b e 6 7 f 1 2 c 1 d 3 2 7 1 c 3 " ;
sha256 = " s h a 2 5 6 - o 4 q j X G a N i 5 X D S U Q r U u U + G 7 7 E d R n v J 1 W U P W r r y Z U 1 C U E = " ;
} ;
in
buildGoModule rec {
pname = " t e l e p o r t " ;
inherit src version ;
vendorSha256 = null ;
vendorSha256 = " s h a 2 5 6 - U M g W M 7 K H a g 9 9 J R 4 i 4 m w V H a 6 y d 9 a H Q 6 D y + p m U i j N L 4 E w = " ;
subPackages = [ " t o o l / t c t l " " t o o l / t e l e p o r t " " t o o l / t s h " ] ;
tags = [ " w e b a s s e t s _ e m b e d " ] ++
lib . optional withRoleTester " r o l e t e s t e r " ;
subPackages = [ " t o o l / t b o t " " t o o l / t c t l " " t o o l / t e l e p o r t " " t o o l / t s h " ] ;
tags = [ " w e b a s s e t s _ e m b e d " ]
++ lib . optional withRdpClient " d e s k t o p _ a c c e s s _ r d p "
++ lib . optional withRoleTester " r o l e t e s t e r " ;
buildInputs = [ openssl ]
++ lib . optionals ( stdenv . isDarwin && withRdpClient ) [ CoreFoundation Security ] ;
nativeBuildInputs = [ makeWrapper ] ;
patches = [
@ -61,26 +91,31 @@ buildGoModule rec {
# https://github.com/NixOS/nixpkgs/issues/132652
./test.patch
./0001-fix-add-nix-path-to-exec-env.patch
./rdpclient.patch
] ;
# Reduce closure size for client machines
outputs = [ " o u t " " c l i e n t " ] ;
preBuild = ''
mkdir - p build
echo " m a k i n g w e b a s s e t s "
cp - r $ { webassets } /* w e b a s s e t s /
make lib/web/build/webassets
$ { lib . optionalString withRoleTester
" c p - r ${ roleTester } / t a r g e t l i b / d a t a l o g / r o l e t e s t e r / . " }
'' ;
doCheck = ! stdenv . isDarwin ;
preBuild =
let rustDeps = symlinkJoin {
name = " t e l e p o r t - r u s t - d e p s " ;
paths = lib . optional withRdpClient rdpClient
++ lib . optional withRoleTester roleTester ;
} ;
in
''
mkdir - p build
echo " m a k i n g w e b a s s e t s "
cp - r $ { webassets } /* w e b a s s e t s /
make lib/web/build/webassets
cp - r $ { rustDeps } /. .
'' ;
preCheck = ''
export HOME = $ ( mktemp - d )
'' ;
# Multiple tests fail in the build sandbox
# due to trying to spawn nixbld's shell (/noshell), etc.
doCheck = false ;
postInstall = ''
install - Dm755 - t $ client/bin $ out/bin/tsh
@ -93,6 +128,7 @@ buildGoModule rec {
installCheckPhase = ''
$ out/bin/tsh version | grep $ { version } > /dev/null
$ client/bin/tsh version | grep $ { version } > /dev/null
$ out/bin/tbot version | grep $ { version } > /dev/null
$ out/bin/tctl version | grep $ { version } > /dev/null
$ out/bin/teleport version | grep $ { version } > /dev/null
'' ;