at 17.09-beta 2.9 kB view raw
1{ config, lib, ... }: 2 3with lib; 4 5let 6 cfg = config.programs.chromium; 7 8 defaultProfile = filterAttrs (k: v: v != null) { 9 HomepageLocation = cfg.homepageLocation; 10 DefaultSearchProviderSearchURL = cfg.defaultSearchProviderSearchURL; 11 DefaultSearchProviderSuggestURL = cfg.defaultSearchProviderSuggestURL; 12 ExtensionInstallForcelist = map (extension: 13 "${extension};https://clients2.google.com/service/update2/crx" 14 ) cfg.extensions; 15 }; 16in 17 18{ 19 ###### interface 20 21 options = { 22 programs.chromium = { 23 enable = mkEnableOption "<command>chromium</command> policies"; 24 25 extensions = mkOption { 26 type = types.listOf types.str; 27 description = '' 28 List of chromium extensions to install. 29 For list of plugins ids see id in url of extensions on 30 <link xlink:href="https://chrome.google.com/webstore/category/extensions">chrome web store</link> 31 page. 32 ''; 33 default = []; 34 example = literalExample '' 35 [ 36 "chlffgpmiacpedhhbkiomidkjlcfhogd" # pushbullet 37 "mbniclmhobmnbdlbpiphghaielnnpgdp" # lightshot 38 "gcbommkclmclpchllfjekcdonpmejbdp" # https everywhere 39 ] 40 ''; 41 }; 42 43 homepageLocation = mkOption { 44 type = types.nullOr types.str; 45 description = "Chromium default homepage"; 46 default = null; 47 example = "https://nixos.org"; 48 }; 49 50 defaultSearchProviderSearchURL = mkOption { 51 type = types.nullOr types.str; 52 description = "Chromium default search provider url."; 53 default = null; 54 example = 55 "https://encrypted.google.com/search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google: 56 searchClient}{google:sourceId}{google:instantExtendedEnabledParameter}ie={inputEncoding}"; 57 }; 58 59 defaultSearchProviderSuggestURL = mkOption { 60 type = types.nullOr types.str; 61 description = "Chromium default search provider url for suggestions."; 62 default = null; 63 example = 64 "https://encrypted.google.com/complete/search?output=chrome&q={searchTerms}"; 65 }; 66 67 extraOpts = mkOption { 68 type = types.attrs; 69 description = '' 70 Extra chromium policy options, see 71 <link xlink:href="https://www.chromium.org/administrators/policy-list-3">https://www.chromium.org/administrators/policy-list-3</link> 72 for a list of avalible options 73 ''; 74 default = {}; 75 }; 76 }; 77 }; 78 79 ###### implementation 80 81 config = lib.mkIf cfg.enable { 82 environment.etc."chromium/policies/managed/default.json".text = builtins.toJSON defaultProfile; 83 environment.etc."chromium/policies/managed/extra.json".text = builtins.toJSON cfg.extraOpts; 84 }; 85}