3
0
Fork 0
forked from mirrors/nixpkgs
nixpkgs/pkgs/applications/version-management/gitlab/gitlab-shell/default.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;
};
}