at 18.09-beta 3.2 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 "cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin 40 ] 41 ''; 42 }; 43 44 homepageLocation = mkOption { 45 type = types.nullOr types.str; 46 description = "Chromium default homepage"; 47 default = null; 48 example = "https://nixos.org"; 49 }; 50 51 defaultSearchProviderSearchURL = mkOption { 52 type = types.nullOr types.str; 53 description = "Chromium default search provider url."; 54 default = null; 55 example = 56 "https://encrypted.google.com/search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google: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 # for chromium 83 environment.etc."chromium/policies/managed/default.json".text = builtins.toJSON defaultProfile; 84 environment.etc."chromium/policies/managed/extra.json".text = builtins.toJSON cfg.extraOpts; 85 # for google-chrome https://www.chromium.org/administrators/linux-quick-start 86 environment.etc."opt/chrome/policies/managed/default.json".text = builtins.toJSON defaultProfile; 87 environment.etc."opt/chrome/policies/managed/extra.json".text = builtins.toJSON cfg.extraOpts; 88 }; 89}