diff --git a/modules/home/browser/chromium/default.nix b/modules/home/browser/chromium/default.nix
index 16dd34e..c21f21c 100644
--- a/modules/home/browser/chromium/default.nix
+++ b/modules/home/browser/chromium/default.nix
@@ -1,4 +1,5 @@
-{ lib, config, ... }: {
+{ lib, config, ... }:
+{
   options.chimera.browser.chromium = {
     enable = lib.mkEnableOption "Use chromium browser";
     extensions = {
@@ -12,22 +13,58 @@
       ublockOrigin.enable = lib.mkEnableOption "Turn on uBlock Origin ad blocker";
     };
     extraExtensions = lib.mkOption {
-      type = lib.types.listOf (lib.types.either { id = lib.types.str; } { id = lib.types.str; crxPath = lib.types.path; version = lib.types.str; });
+      type = lib.types.listOf (
+        lib.types.either { id = lib.types.str; } {
+          id = lib.types.str;
+          crxPath = lib.types.path;
+          version = lib.types.str;
+        }
+      );
       description = "Extra extensions to add to chromium on launch";
-      default = [];
+      default = [ ];
     };
   };
   config = lib.mkIf config.chimera.browser.chromium.enable ({
     programs.chromium = {
       enable = true;
       extensions =
-        (if config.chimera.browser.chromium.extensions.bitwarden.enable then [{ id = "nngceckbapebfimnlniiiahkandclblb"; }] else []) #Bitwarden
-        ++ (if config.chimera.browser.chromium.extensions.youtube.sponsorBlock.enable then [{ id = "mnjggcdmjocbbbhaepdhchncahnbgone"; }] else []) #Sponsor Block
-        ++ (if config.chimera.browser.chromium.extensions.youtube.returnDislike.enable then [{ id = "gebbhagfogifgggkldgodflihgfeippi"; }] else []) #Return youtube dislike
-        ++ (if config.chimera.browser.chromium.extensions.youtube.deArrow.enable then [{ id = "enamippconapkdmgfgjchkhakpfinmaj"; }] else []) #DeArrow
-        ++ (if config.chimera.browser.chromium.extensions.reactDevTools.enable then [{ id = "fmkadmapgofadopljbjfkapdkoienihi"; }] else []) #React Dev Tools
-        ++ (if config.chimera.browser.chromium.extensions.ublockOrigin.enable then [{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; }] else []) #uBlock Origin
+        (
+          if config.chimera.browser.chromium.extensions.bitwarden.enable then
+            [ { id = "nngceckbapebfimnlniiiahkandclblb"; } ]
+          else
+            [ ]
+        ) # Bitwarden
+        ++ (
+          if config.chimera.browser.chromium.extensions.youtube.sponsorBlock.enable then
+            [ { id = "mnjggcdmjocbbbhaepdhchncahnbgone"; } ]
+          else
+            [ ]
+        ) # Sponsor Block
+        ++ (
+          if config.chimera.browser.chromium.extensions.youtube.returnDislike.enable then
+            [ { id = "gebbhagfogifgggkldgodflihgfeippi"; } ]
+          else
+            [ ]
+        ) # Return youtube dislike
+        ++ (
+          if config.chimera.browser.chromium.extensions.youtube.deArrow.enable then
+            [ { id = "enamippconapkdmgfgjchkhakpfinmaj"; } ]
+          else
+            [ ]
+        ) # DeArrow
+        ++ (
+          if config.chimera.browser.chromium.extensions.reactDevTools.enable then
+            [ { id = "fmkadmapgofadopljbjfkapdkoienihi"; } ]
+          else
+            [ ]
+        ) # React Dev Tools
+        ++ (
+          if config.chimera.browser.chromium.extensions.ublockOrigin.enable then
+            [ { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } ]
+          else
+            [ ]
+        ) # uBlock Origin
         ++ config.chimera.browser.chromium.extraExtensions;
     };
   });
-}
\ No newline at end of file
+}
diff --git a/modules/home/browser/firefox/default.nix b/modules/home/browser/firefox/default.nix
index d1aa88f..3fcbf06 100644
--- a/modules/home/browser/firefox/default.nix
+++ b/modules/home/browser/firefox/default.nix
@@ -1,4 +1,5 @@
-{ lib, config, ... }: {
+{ lib, config, ... }:
+{
   options.chimera.browser.firefox = {
     enable = lib.mkEnableOption "Use firefox browser";
     extensions = {
@@ -20,14 +21,50 @@
   config = lib.mkIf config.chimera.browser.firefox.enable ({
     programs.firefox = {
       enable = true;
-      profiles.chimera.extensions = (if config.chimera.browser.firefox.extensions.bitwarden.enable then [ config.nur.repos.rycee.firefox-addons.bitwarden ] else [])
-        ++ (if config.chimera.browser.firefox.extensions.youtube.sponsorBlock.enable then [ config.nur.repos.rycee.firefox-addons.sponsorblock ] else [])
-        ++ (if config.chimera.browser.firefox.extensions.youtube.returnDislike.enable then [ config.nur.repos.rycee.firefox-addons.return-youtube-dislikes ] else [])
-        ++ (if config.chimera.browser.firefox.extensions.youtube.deArrow.enable then [ config.nur.repos.rycee.firefox-addons.dearrow ] else [])
-        ++ (if config.chimera.browser.firefox.extensions.reactDevTools.enable then [ config.nur.repos.rycee.firefox-addons.react-devtools ] else [])
-        ++ (if config.chimera.browser.firefox.extensions.ublockOrigin.enable then [ config.nur.repos.rycee.firefox-addons.ublock-origin ] else [])
-        ++ (if config.chimera.browser.firefox.extensions.adnauseam.enable then [ config.nur.repos.rycee.firefox-addons.adnauseam ] else [])
+      profiles.chimera.extensions =
+        (
+          if config.chimera.browser.firefox.extensions.bitwarden.enable then
+            [ config.nur.repos.rycee.firefox-addons.bitwarden ]
+          else
+            [ ]
+        )
+        ++ (
+          if config.chimera.browser.firefox.extensions.youtube.sponsorBlock.enable then
+            [ config.nur.repos.rycee.firefox-addons.sponsorblock ]
+          else
+            [ ]
+        )
+        ++ (
+          if config.chimera.browser.firefox.extensions.youtube.returnDislike.enable then
+            [ config.nur.repos.rycee.firefox-addons.return-youtube-dislikes ]
+          else
+            [ ]
+        )
+        ++ (
+          if config.chimera.browser.firefox.extensions.youtube.deArrow.enable then
+            [ config.nur.repos.rycee.firefox-addons.dearrow ]
+          else
+            [ ]
+        )
+        ++ (
+          if config.chimera.browser.firefox.extensions.reactDevTools.enable then
+            [ config.nur.repos.rycee.firefox-addons.react-devtools ]
+          else
+            [ ]
+        )
+        ++ (
+          if config.chimera.browser.firefox.extensions.ublockOrigin.enable then
+            [ config.nur.repos.rycee.firefox-addons.ublock-origin ]
+          else
+            [ ]
+        )
+        ++ (
+          if config.chimera.browser.firefox.extensions.adnauseam.enable then
+            [ config.nur.repos.rycee.firefox-addons.adnauseam ]
+          else
+            [ ]
+        )
         ++ config.chimera.browser.firefox.extraExtensions;
     };
   });
-}
\ No newline at end of file
+}
