forked from mirrors/nixpkgs
73 lines
2 KiB
Nix
73 lines
2 KiB
Nix
{ stdenv, ruby, bundler, fetchFromGitLab, buildGoPackage, bundlerEnv }:
|
|
|
|
let
|
|
version = "10.0.0";
|
|
src = fetchFromGitLab {
|
|
owner = "gitlab-org";
|
|
repo = "gitlab-shell";
|
|
rev = "v${version}";
|
|
sha256 = "0n1llkb0jrqxm10l9wqmqxjycydqphgz0chbbf395d8pywyz826x";
|
|
};
|
|
rubyEnv = bundlerEnv {
|
|
name = "gitlab-shell-env";
|
|
inherit ruby;
|
|
gemdir = ./.;
|
|
};
|
|
goPackage = buildGoPackage {
|
|
pname = "gitlab-shell-go";
|
|
inherit src version;
|
|
|
|
patches = [ ./remove-hardcoded-locations-go.patch ];
|
|
|
|
goPackagePath = "gitlab.com/gitlab-org/gitlab-shell";
|
|
goDeps = ./deps.nix;
|
|
|
|
# gitlab-shell depends on an older version of gitaly which
|
|
# contains old, vendored versions of some packages; gitlab-shell
|
|
# also explicitly depends on newer versions of these libraries,
|
|
# but buildGoPackage exposes the vendored versions instead,
|
|
# leading to compilation errors. Since the vendored libraries
|
|
# aren't used here anyway, we'll just remove them.
|
|
postConfigure = ''
|
|
rm -r "$NIX_BUILD_TOP/go/src/gitlab.com/gitlab-org/gitaly/vendor/"
|
|
'';
|
|
};
|
|
in
|
|
stdenv.mkDerivation {
|
|
pname = "gitlab-shell";
|
|
inherit src version;
|
|
|
|
patches = [ ./remove-hardcoded-locations-ruby.patch ];
|
|
|
|
# gitlab-shell will try to read its config relative to the source
|
|
# code by default which doesn't work in nixos because it's a
|
|
# read-only filesystem
|
|
postPatch = ''
|
|
substituteInPlace lib/gitlab_config.rb --replace \
|
|
"File.join(ROOT_PATH, 'config.yml')" \
|
|
"'/run/gitlab/shell-config.yml'"
|
|
'';
|
|
|
|
buildInputs = [ rubyEnv.wrappedRuby ];
|
|
|
|
dontBuild = true;
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/
|
|
cp -R . $out/
|
|
cp ${goPackage.bin}/bin/* $out/bin/
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with stdenv.lib; {
|
|
description = "SSH access and repository management app for GitLab";
|
|
homepage = http://www.gitlab.com/;
|
|
platforms = platforms.unix;
|
|
maintainers = with maintainers; [ fpletz globin talyz ];
|
|
license = licenses.mit;
|
|
};
|
|
}
|