aboutsummaryrefslogtreecommitdiff
path: root/nix/lib.nix
diff options
context:
space:
mode:
authortilpner2020-03-06 16:05:01 +0100
committertilpner2020-03-06 16:05:01 +0100
commit5014c0ed2160393fb787b585127bce8f27fda722 (patch)
treeb01c547725982c5ed866683c1b865381736653f8 /nix/lib.nix
parentedd25555261c17f74580245b8305cf7edefa4267 (diff)
downloadfirefox-profiles-5014c0ed2160393fb787b585127bce8f27fda722.tar.gz
firefox-profiles-5014c0ed2160393fb787b585127bce8f27fda722.tar.xz
firefox-profiles-5014c0ed2160393fb787b585127bce8f27fda722.zip
Separate policy into smaller modules
Diffstat (limited to 'nix/lib.nix')
-rw-r--r--nix/lib.nix29
1 files changed, 22 insertions, 7 deletions
diff --git a/nix/lib.nix b/nix/lib.nix
index df1097f..12940b1 100644
--- a/nix/lib.nix
+++ b/nix/lib.nix
@@ -18,10 +18,11 @@ rec {
else if false == v then "false"
else abort "unsupported value type: ${builtins.typeOf v}";
- toUserPrefs = settings: pkgs.writeText "user.js"
+ mkPrefs = settings: pkgs.writeText "prefs.js"
+ ("// dummy line\n" +
(lib.concatStringsSep "\n"
- (lib.mapAttrsToList (k: v: "user_pref(\"${k}\", ${mkValueString v});")
- (flattenAttrs settings)));
+ (lib.mapAttrsToList (k: v: "pref(\"${k}\", ${mkValueString v}, locked);")
+ (flattenAttrs settings))));
toSearchConfig = settings: pkgs.runCommand "search.json.mozlz4" {} ''
${mozlz4.compress} < ${pkgs.writeText "search.json" (builtins.toJSON settings)} > $out
@@ -38,25 +39,39 @@ rec {
inherit policies;
});
- bundle = { policies }:
+ mergeProfiles = profiles:
+ let
+ sanitise = args: {
+ policies = args.policies or {};
+ preferences = args.preferences or {};
+ };
+ sanitised = map sanitise profiles;
+ final = lib.foldl lib.recursiveUpdate {} sanitised;
+ in final;
+
+ bundle = { policies ? {}, preferences ? {} }:
let
firefox = pkgs.firefox-unwrapped;
+ policies' = mkPolicies policies;
+ preferences' = mkPrefs preferences;
patched = pkgs.runCommand "firefox-bundle" {
nativeBuildInputs = [ pkgs.nix ];
disallowedReferences = [ firefox ];
} ''
cp -r ${firefox} $out
chmod -R +w $out
+ # correct argv[0], which is used to locate distribution and defaults
substituteInPlace $out/bin/firefox \
--replace ${firefox} $out
mkdir $out/lib/firefox/distribution
- cp ${mkPolicies policies} $out/lib/firefox/distribution/policies.json
+ cp ${policies'} $out/lib/firefox/distribution/policies.json
+ cp ${preferences'} $out/lib/firefox/defaults/pref/99-custom.js
'';
- wrapped = pkgs.wrapFirefox patched {
+ wrapped = (pkgs.wrapFirefox patched {
browserName = "firefox";
version = "custom";
- };
+ }) // { inherit policies preferences; };
in wrapped;
launcher = firefox: pkgs.writeShellScriptBin "firefox" ''