diff --git a/modules/programs/firefox/mkFirefoxModule.nix b/modules/programs/firefox/mkFirefoxModule.nix index 07df1cf4c..782ced931 100644 --- a/modules/programs/firefox/mkFirefoxModule.nix +++ b/modules/programs/firefox/mkFirefoxModule.nix @@ -397,19 +397,12 @@ in }; userChrome = mkOption { - type = types.nullOr ( - types.oneOf [ - types.lines - types.path - ] - ); - default = null; - description = '' - Custom ${appName} user chrome CSS. - - This can be a path to a file or directory in the Nix store, - or a derivation, or a verbatim multi-line string. - ''; + type = types.oneOf [ + types.lines + types.path + ]; + default = ""; + description = "Custom ${appName} user chrome CSS."; example = '' /* Hide tab bar in FF Quantum */ @-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) { @@ -868,35 +861,21 @@ in ] ++ lib.flip mapAttrsToList cfg.profiles ( _: profile: - let - chromePath = - if ((i: (lib.isPath i && lib.pathIsDirectory i) || lib.isDerivation i) profile.userChrome) then - "chrome" - else - "chrome/userChrome.css"; - sourcePath = - if ((i: (lib.isPath i && lib.types.path.check i) || lib.isDerivation i) profile.userChrome) then - profile.userChrome - else - null; - in # Merge the regular profile settings with extension settings mkMerge ( [ - (mkIf (profile.userChrome != null) { - "${profilesPath}/${profile.path}/${chromePath}" = - if sourcePath == null then - { - text = profile.userChrome; - } - else - { - source = sourcePath; - }; - }) { "${profilesPath}/${profile.path}/.keep".text = ""; + "${profilesPath}/${profile.path}/chrome/userChrome.css" = mkIf (profile.userChrome != "") ( + let + key = if builtins.isString profile.userChrome then "text" else "source"; + in + { + "${key}" = profile.userChrome; + } + ); + "${profilesPath}/${profile.path}/chrome/userContent.css" = mkIf (profile.userContent != "") ( let key = if builtins.isString profile.userContent then "text" else "source"; diff --git a/tests/modules/programs/firefox/profiles/userchrome/default.nix b/tests/modules/programs/firefox/profiles/userchrome/default.nix index 02c68219f..91563a472 100644 --- a/tests/modules/programs/firefox/profiles/userchrome/default.nix +++ b/tests/modules/programs/firefox/profiles/userchrome/default.nix @@ -1,12 +1,15 @@ modulePath: -{ config, lib, ... }: - +{ + config, + lib, + pkgs, + ... +}: let cfg = lib.getAttrFromPath modulePath config; firefoxMockOverlay = import ../../setup-firefox-mock-overlay.nix modulePath; - in { imports = [ firefoxMockOverlay ]; @@ -18,36 +21,15 @@ in basic.isDefault = true; lines = { id = 1; - userChrome = '' - /* - This is a simple comment that should be written inside the `chrome/userChrome.css` - */ - - #urlbar { - min-width: none !important; - border: none !important; - outline: none !important; - } - ''; + userChrome = builtins.readFile ./chrome/userChrome.css; }; - path = { + file = { id = 2; userChrome = ./chrome/userChrome.css; }; - folder = { - id = 3; - userChrome = ./chrome; - }; - derivation = { + derivation-file = { id = 4; - userChrome = config.lib.test.mkStubPackage { - name = "wavefox"; - buildScript = '' - mkdir -p $out - ln -s ${./chrome/userChrome.css} $out/userChrome.css - echo test > $out/README.md - ''; - }; + userChrome = pkgs.writeText "userChrome.css" (builtins.readFile ./chrome/userChrome.css); }; }; } @@ -59,28 +41,18 @@ in assertDirectoryExists home-files/${cfg.configPath}/basic - assertPathNotExists \ - home-files/${cfg.configPath}/lines/chrome/extraFile.css assertFileContent \ home-files/${cfg.configPath}/lines/chrome/userChrome.css \ ${./chrome/userChrome.css} + assertFileContent \ + home-files/${cfg.configPath}/file/chrome/userChrome.css \ + ${./chrome/userChrome.css} + assertPathNotExists \ - home-files/${cfg.configPath}/path/chrome/extraFile.css + home-files/${cfg.configPath}/derivation-file/chrome/extraFile.css assertFileContent \ - home-files/${cfg.configPath}/path/chrome/userChrome.css \ - ${./chrome/userChrome.css} - - assertFileExists \ - home-files/${cfg.configPath}/folder/chrome/extraFile.css - assertFileContent \ - home-files/${cfg.configPath}/folder/chrome/userChrome.css \ - ${./chrome/userChrome.css} - - assertFileExists \ - home-files/${cfg.configPath}/derivation/chrome/README.md - assertFileContent \ - home-files/${cfg.configPath}/derivation/chrome/userChrome.css \ + home-files/${cfg.configPath}/derivation-file/chrome/userChrome.css \ ${./chrome/userChrome.css} ''; }