started working on bringing the redmine package back to life using gitlab as an example
This commit is contained in:
@@ -1,74 +1,43 @@
|
||||
{ stdenv, fetchurl, ruby, bundler, libiconv, libxslt, libxml2, pkgconfig, libffi, imagemagickBig, postgresql }:
|
||||
|
||||
{ stdenv, fetchurl, bundlerEnv, ruby }:
|
||||
|
||||
let
|
||||
gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile.nix);
|
||||
in stdenv.mkDerivation rec {
|
||||
version = "2.5.2";
|
||||
name = "redmine-${version}";
|
||||
version = "3.4.6";
|
||||
rubyEnv = bundlerEnv {
|
||||
name = "redmine-env-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.redmine.org/releases/${name}.tar.gz";
|
||||
sha256 = "0x0zwxyj4dwbk7l64s3lgny10mjf0ba8jwrbafsm4d72sncmacv0";
|
||||
inherit ruby;
|
||||
gemdir = ./.;
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "redmine-${version}";
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
src = fetchurl {
|
||||
url = "https://www.redmine.org/releases/${name}.tar.gz";
|
||||
sha256 = "15akq6pn42w7cf7dg45xmvw06fixck1qznp7s8ix7nyxlmcyvcg3";
|
||||
};
|
||||
|
||||
# taken from redmine (2.5.1-2~bpo70+3) in debian wheezy-backports
|
||||
# needed to separate run-time and build-time directories
|
||||
patches = [
|
||||
./2002_FHS_through_env_vars.patch
|
||||
./2004_FHS_plugins_assets.patch
|
||||
./2003_externalize_session_config.patch
|
||||
];
|
||||
buildInputs = [ rubyEnv rubyEnv.wrappedRuby rubyEnv.bundler ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace lib/redmine/plugin.rb --replace "File.join(Rails.root, 'plugins')" "ENV['RAILS_PLUGINS']"
|
||||
substituteInPlace lib/redmine/plugin.rb --replace "File.join(Rails.root, 'plugins', id.to_s, 'db', 'migrate')" "File.join(ENV['RAILS_PLUGINS'], id.to_s, 'db', 'migrate')"
|
||||
substituteInPlace config/routes.rb --replace '"plugins/*", Rails.root' 'ENV["RAILS_PLUGINS"] + "/*"'
|
||||
'';
|
||||
buildPhase = ''
|
||||
mv config config.dist
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
ruby bundler libiconv
|
||||
libxslt libxml2 pkgconfig libffi
|
||||
imagemagickBig postgresql
|
||||
];
|
||||
installPhase = ''
|
||||
mkdir -p $out/share
|
||||
cp -r . $out/share/redmine
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/redmine/
|
||||
cp -R . $out/share/redmine/
|
||||
cd $out/share/redmine
|
||||
ln -s ${./Gemfile.lock} Gemfile.lock
|
||||
export HOME=$(pwd)
|
||||
for i in config files log plugins tmp; do # TODO: add 'public' to this list?
|
||||
rm -rf $out/share/redmine/$i
|
||||
ln -sf /run/redmine/$i $out/share/redmine/
|
||||
done
|
||||
'';
|
||||
|
||||
cat > config/database.yml <<EOF
|
||||
production:
|
||||
adapter: postgresql
|
||||
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-iconv-dir="${libiconv}" --with-xslt-dir="${libxslt.dev}" --with-xml2-dir="${libxml2.dev}"
|
||||
|
||||
bundle install --verbose --local --deployment
|
||||
|
||||
# make sure we always load pg package
|
||||
echo "gem \"pg\"" >> Gemfile
|
||||
|
||||
# make rails server happy
|
||||
mkdir -p tmp/pids
|
||||
|
||||
# cleanup
|
||||
rm config/database.yml
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://www.redmine.org/;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.garbas ];
|
||||
license = licenses.gpl2;
|
||||
# Marked as broken due to needing an update for security issues.
|
||||
# See: https://github.com/NixOS/nixpkgs/issues/18856
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://www.redmine.org/;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.garbas ];
|
||||
license = licenses.gpl2;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user