Skip to content

Commit

Permalink
mediatomb: Allow users to customize duktape/js script imports
Browse files Browse the repository at this point in the history
With no customization, the default behavior is kept (virtual-layout using the
builtin engine with the default import.js provided by gerbera).

This allows user to develop and provide their own list of customized
duktape/javascript scripts [1]

[1] http://docs.gerbera.io/en/latest/scripting.html
  • Loading branch information
ardumont committed Apr 4, 2021
1 parent 5401998 commit bf7ea83
Showing 1 changed file with 21 additions and 3 deletions.
24 changes: 21 additions & 3 deletions nixos/modules/services/misc/mediatomb.nix
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@ let
</transcoding>
'';

virtualLayout =
let toCustomImportScript = import-script-path: "<import-script>${import-script-path}</import-script>\n";
in if ((builtins.length cfg.customImportJS) > 0) then ''
<virtual-layout type="js">${concatMapStrings toCustomImportScript cfg.customImportJS}</virtual-layout>
'' else ''
<virtual-layout type="builtin"><import-script>${pkg}/share/${name}/js/import.js</import-script></virtual-layout>
'';

configText = optionalString (! cfg.customCfg) ''
<?xml version="1.0" encoding="UTF-8"?>
<config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd">
Expand Down Expand Up @@ -113,9 +121,7 @@ let
<scripting script-charset="UTF-8">
<common-script>${pkg}/share/${name}/js/common.js</common-script>
<playlist-script>${pkg}/share/${name}/js/playlists.js</playlist-script>
<virtual-layout type="builtin">
<import-script>${pkg}/share/${name}/js/import.js</import-script>
</virtual-layout>
${virtualLayout}
</scripting>
<mappings>
<extension-mimetype ignore-unknown="no">
Expand Down Expand Up @@ -335,6 +341,18 @@ in {
];
};

customImportJS = mkOption {
type = with types; listOf path;
default = [];
description = ''
A list of user customized javascript files to import. If unspecified,
the default, this uses the default builtin engine.
'';
example = [
./import.js
];
};

customCfg = mkOption {
type = types.bool;
default = false;
Expand Down

0 comments on commit bf7ea83

Please sign in to comment.