{ lib, stdenv, fetchFromGitHub, fetchYarnDeps, yarn, fixup_yarn_lock, nodejs , ruby_3_2, bundlerEnv, logDir ? "/var/log/ds-fr", dataDir ? "/var/lib/ds-fr" , initialDeploymentDate ? "17941030" }: let pname = "ds-fr"; meta = import ./meta.nix; inherit (meta) version; src = fetchFromGitHub { owner = "demarches-simplifiees"; repo = "demarches-simplifiees.fr"; rev = version; hash = meta.src-hash; }; rubyEnv = bundlerEnv { name = "env-${pname}"; gemdir = ./rubyEnv; ruby = ruby_3_2; gemset = (import ./rubyEnv/gemset.nix) // { bundler = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; sha256 = "deeQ3fNwcSiGSO/yeB2yoTniRq2gHW8WueprXoPX6Jk="; type = "gem"; }; version = "2.3.11"; }; }; }; dsModules = stdenv.mkDerivation { pname = "${pname}-modules"; inherit src version; offlineCache = fetchYarnDeps { yarnLock = "${src}/yarn.lock"; hash = meta.deps-hash; }; buildInputs = [ rubyEnv ]; nativeBuildInputs = [ fixup_yarn_lock nodejs yarn rubyEnv.wrappedRuby ]; RAILS_ENV = "production"; NODE_ENV = "dev"; patches = [ # Disable functionnalities as we only precompile assets ./patches/build.patch ]; OTP_SECRET_KEY = "precompile_placeholder"; SECRET_KEY_BASE = "precompile_placeholder"; APP_HOST = "precompile_placeholder"; buildPhase = '' export HOME=$(mktemp -d) yarn config --offline set yarn-offline-mirror $offlineCache fixup_yarn_lock yarn.lock yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive patchShebangs node_modules/ patchShebangs bin/ bin/rake assets:precompile yarn cache clean --offline rm -rf node_modules/ ''; installPhase = '' mkdir -p $out/public cp -r public/* $out/public ''; }; in stdenv.mkDerivation { name = "demarches-simplifiees.fr-${version}"; inherit src; buildInputs = [ rubyEnv ]; propagatedBuildInputs = [ rubyEnv.wrappedRuby ]; patches = [ ./patches/replay_routing_engine_for_a_cloned_procedure.patch ./patches/smtp_settings.patch ./patches/garage.patch ./patches/secrets-fc.patch ]; buildPhase = '' rm -rf public ln -s ${dsModules}/public/ public patchShebangs bin/ rm -rf log storage ln -s ${logDir} log ln -s ${dataDir}/tmp tmp ln -s ${dataDir}/storage storage for f in $(ls lib/tasks/deployment/); do [[ ! ${initialDeploymentDate} < $f ]] \ && rm lib/tasks/deployment/$f; done; echo "Removed unused data migrations" ''; installPhase = '' mkdir -p $out cp -r * $out/ ''; passthru = { inherit rubyEnv; ruby = rubyEnv.wrappedRuby; }; meta = with lib; { description = "Dématérialiser et simplifier les démarches administratives"; homepage = "https://github.com/demarches-simplifiees/demarches-simplifiees.fr"; license = licenses.agpl3Only; maintainers = with maintainers; [ thubrecht ]; }; }