Commit 1422ed88 authored by Ratchanan Srirattanamet's avatar Ratchanan Srirattanamet
Browse files

kimai: fix bundled assets missing

We were relying on `composerNoScripts = false` to make sure post-install
command `assets:install` is run. `assets:install` copies assets from
`vendor/` directory into `public/` directory, placing it in appropriate
places.

However, with commit 80bb9aec ("kimai: switch to buildComposerProject2
and tag"), we switched to `buildComposerProject2` which has moved
`composer install` step to `composerVendor` derivation. By design,
`composerVendor` ignores anything that happens outside `vendor/`, so
the assets was not copied into final derivation.

So stop relying on `composerNoScripts = false` and run `assets:install`
ourselves in `postInstall` step. A side effect of this is that there is
another post-install step being skipped (`cache:clear`). However we
simply handle caches outside of the derivation (it's handled in the
module), so that's not a problem.

Fixes: https://github.com/NixOS/nixpkgs/issues/442208
parent e7ecb1b6
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -17,5 +17,8 @@
    machine.wait_for_unit("nginx.service")
    machine.wait_for_open_port(80)
    machine.succeed("curl -v --location --fail http://localhost/")
    # Make sure bundled assets are served.
    # https://github.com/NixOS/nixpkgs/issues/442208
    machine.succeed("curl -v --location --fail http://localhost/bundles/tabler/tabler.css")
  '';
}
+4 −1
Original line number Diff line number Diff line
@@ -41,13 +41,16 @@ php.buildComposerProject2 (finalAttrs: {
  vendorHash = "sha256-I4v4WkPGLc8vBPjCiYzPxcLn4rH3HWtQXSqwGVKXeGg=";

  composerNoPlugins = false;
  composerNoScripts = false;

  postInstall = ''
    # Make available the console utility, as Kimai doesn't list this in
    # composer.json.
    mkdir -p "$out"/share/php/kimai "$out"/bin
    ln -s "$out"/share/php/kimai/bin/console "$out"/bin/console

    # Install bundled assets. This is normally done in the `composer install`
    # post-install script, but it's being skipped.
    (cd "$out"/share/php/kimai && php ./bin/console assets:install)
  '';

  passthru.tests = {