nixpkgs/pkgs/applications/version-management/gitlab/default.nix
Thomas Hunger 59995e168c nixos: Add gitlab and gitlab-shell
I had to make several adjustments to make it work with nixos:

* Replace relative config file lookups with ENV variable.
* Modify gitlab-shell to not clear then environment when running
  pre-receive.
* Modify gitlab-shell to write some environment variables into
  the .authorized_keys file to make sure gitlab-shell reads the
  correct config file.
* Log unicorn output to syslog.
  I tried various ways of adding a syslog package but the bundler would
  not pick them up. Please fix in a better way if possible.
* Gitlab-runner program wrapper.
  This is useful to run e.g. backups etc. with the correct
  environment set up.
2014-12-12 18:01:29 +01:00

81 lines
2.5 KiB
Nix

{ stdenv, fetchurl, ruby, rubyLibs, libxslt, libxml2, pkgconfig, libffi, postgresql, libyaml, ncurses, curl, openssh, redis, zlib, icu, checkinstall, logrotate, docutils, cmake, git, gdbm, readline, unzip, gnumake, which }:
let
gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile.nix);
in stdenv.mkDerivation rec {
version = "7.4.2";
name = "gitlab-${version}";
src = fetchurl {
url = "https://github.com/gitlabhq/gitlabhq/archive/v${version}.zip";
sha256 = "01iplkpa4scr0wcap6vjrc960dj15z4ciclaqswj0sz5hrp9glw6";
};
buildInputs = [
ruby rubyLibs.bundler libyaml gdbm readline ncurses curl openssh redis zlib
postgresql libxslt libxml2 pkgconfig libffi icu checkinstall logrotate docutils
git unzip gnumake which cmake
];
# cmake is required by a build depdenceny, not the main binary:
dontUseCmakeConfigure = true;
patches = [
./remove-hardcoded-locations.patch
];
postPatch = ''
mv config/gitlab.yml.example config/gitlab.yml
'';
installPhase = ''
mkdir -p $out/share/gitlab
cp -R . $out/share/gitlab
cd $out/share/gitlab
export HOME=$(pwd)
export GITLAB_EMAIL_FROM="required@to-make-it-work.org"
# required for some gems:
cat > config/database.yml <<EOF
production:
adapter: postgresql
database: gitlab
host: <%= ENV["GITLAB_DATABASE_HOST"] || "127.0.0.1" %>
password: <%= ENV["GITLAB_DATABASE_PASSWORD"] || "blerg" %>
username: gitlab
encoding: utf8
EOF
mkdir -p vendor/cache
${stdenv.lib.concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)}
bundle config build.nokogiri \
--use-system-libraries \
--with-xslt-dir=${libxslt} \
--with-xml2-dir=${libxml2} \
--with-pkg-config=${pkgconfig}/bin/pkg-config \
--with-pg-config=${postgresql}/bin/pg_config
# See https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide:
bundle install -j4 --verbose --local --deployment --without development test mysql
# For reasons I don't understand "bundle exec" ignores the
# RAILS_ENV causing tests to be executed that fail because we're
# not installing development and test gems above. Deleting the
# tests works though.:
rm $out/share/gitlab/lib/tasks/test.rake
# Assets
bundle exec rake assets:precompile RAILS_ENV=production
'';
meta = with stdenv.lib; {
homepage = http://www.gitlab.com/;
platforms = platforms.linux;
maintainers = [ ];
license = licenses.mit;
};
}