let
pkgs = import <nixpkgs> {};
dms-src = (pkgs.npinsed {input=./npins.json;}).DankMaterialShell;
SPEC = pkgs.runCommand "SPEC" {} ''
awk '/^var SPEC/,/^}/' ${dms-src}/quickshell/Common/settings/SettingsSpec.js > $out
'';
configVersion = pkgs.runCommand "configVersion" {} ''
sed -n 's/.*readonly property int settingsConfigVersion: \([0-9]*\).*/\1/p' \
${dms-src}/quickshell/Common/SettingsData.qml | tr -d '\n' > $out
'';
gen-settings_js = pkgs.writeTextFile {
name = "gen-settings.js";
text = /*js*/ ''
const percentToUnit = null;
${builtins.readFile SPEC}
var root = {};
for (var k in SPEC) {
if (SPEC[k].persist === false) continue;
root[k] = SPEC[k].def;
}
root.configVersion = ${builtins.readFile configVersion};
console.log(JSON.stringify(root, null, 2));
'';
};
in pkgs.runCommand "settings.json" {} ''
${pkgs.nodejs}/bin/node ${gen-settings_js} > $out
''