diff --git a/internal/etherpad.nix b/internal/etherpad.nix
index 0967ef4..ffcd441 100644
--- a/internal/etherpad.nix
+++ b/internal/etherpad.nix
@@ -1 +1 @@
-{}
+{ }
diff --git a/modules/amd.nix b/modules/amd.nix
index 37b877c..dcddfd9 100644
--- a/modules/amd.nix
+++ b/modules/amd.nix
@@ -20,7 +20,7 @@
     /* services.xserver.config = lib.mkAfter '' */
     /*   Section "Device" */
     /*     Identifier "Device-radeon[1]" */
-    /*     Driver     "radeon" */ 
+    /*     Driver     "radeon" */
     /*     BusID      "PCI:06:00.0" */
     /*     Option     "AllowExternalGpus" "True" */
     /*     Option     "AllowEmptyInitialConfiguration" */
diff --git a/modules/apparmor.nix b/modules/apparmor.nix
index 64ebd34..a31e22f 100644
--- a/modules/apparmor.nix
+++ b/modules/apparmor.nix
@@ -15,7 +15,7 @@
 
         default_deny = {
           profile = ''
-          profile default_deny /** { }
+            profile default_deny /** { }
           '';
           enforce = false;
           enable = false;
@@ -23,9 +23,9 @@
 
         sudo = {
           profile = ''
-          ${pkgs.sudo}/bin/sudo {
-            file /** rwlkUx,
-          }
+            ${pkgs.sudo}/bin/sudo {
+              file /** rwlkUx,
+            }
           '';
           enforce = false;
           enable = false;
@@ -33,9 +33,9 @@
 
         nix = {
           profile = ''
-          ${pkgs.nix}/bin/nix {
-            unconfined,
-          }
+            ${pkgs.nix}/bin/nix {
+              unconfined,
+            }
           '';
           enforce = false;
           enable = false;
diff --git a/modules/calculator.nix b/modules/calculator.nix
index 8fd0f44..42c7358 100644
--- a/modules/calculator.nix
+++ b/modules/calculator.nix
@@ -13,5 +13,5 @@
   };
 in
 {
-  home.home.packages = with pkgs; [ wcalc R  ];
+  home.home.packages = with pkgs; [ wcalc R ];
 }
diff --git a/modules/davmail.nix b/modules/davmail.nix
index 60e2baf..ea8e6d2 100644
--- a/modules/davmail.nix
+++ b/modules/davmail.nix
@@ -1,6 +1,6 @@
 { pkgs, ... }: {
   home.home = {
-    packages = [pkgs.davmail];
+    packages = [ pkgs.davmail ];
     file.".davmail.properties".text = ''
       davmail.server=true
       davmail.mode=EWS
diff --git a/modules/feh.nix b/modules/feh.nix
index dafeb4a..3fe2d97 100644
--- a/modules/feh.nix
+++ b/modules/feh.nix
@@ -1,6 +1,6 @@
-{pkgs, ...}: {
+{ pkgs, ... }: {
   home.home = {
-    packages = [pkgs.feh];
+    packages = [ pkgs.feh ];
     file.".xmonad/background.png".source = ./feh/background.png;
   };
 }
diff --git a/modules/firefox.nix b/modules/firefox.nix
index 9cb12e2..8494a9b 100644
--- a/modules/firefox.nix
+++ b/modules/firefox.nix
@@ -1,3 +1,3 @@
-{ 
+{
   home.programs.firefox.enable = true;
 }
diff --git a/modules/firewall.nix b/modules/firewall.nix
index 25a9210..5c4a168 100644
--- a/modules/firewall.nix
+++ b/modules/firewall.nix
@@ -2,7 +2,7 @@
   config.networking.firewall.enable = true;
 
   config.networking.firewall.allowedTCPPorts = [
-    19000  # Expo
-    1935   # RTMP
+    19000 # Expo
+    1935 # RTMP
   ];
 }
diff --git a/modules/hosting.nix b/modules/hosting.nix
index d9d69ad..da81d46 100644
--- a/modules/hosting.nix
+++ b/modules/hosting.nix
@@ -1,6 +1,7 @@
 { pkgs, username, ... }: {
   home.home.packages = [
-    pkgs.mysql pkgs.pscale  # Planetscale cli
+    pkgs.mysql
+    pkgs.pscale # Planetscale cli
   ];
   config.environment.persistence."/large/persist".users.${username}.directories = [
     ".config/planetscale"
diff --git a/modules/input.nix b/modules/input.nix
index 3f6b1cc..bcdbf41 100644
--- a/modules/input.nix
+++ b/modules/input.nix
@@ -1,4 +1,4 @@
-{pkgs, ...}: {
+{ pkgs, ... }: {
   config.services.xserver.libinput = {
     enable = true;
     touchpad.naturalScrolling = true;
diff --git a/modules/media.nix b/modules/media.nix
index 442c1b3..2b3305c 100644
--- a/modules/media.nix
+++ b/modules/media.nix
@@ -1,3 +1,3 @@
-{pkgs, ...}: {
-  home.home.packages = with pkgs; [vlc syncplay];
+{ pkgs, ... }: {
+  home.home.packages = with pkgs; [ vlc syncplay ];
 }
diff --git a/modules/mongo.nix b/modules/mongo.nix
index 96770ee..9ee5778 100644
--- a/modules/mongo.nix
+++ b/modules/mongo.nix
@@ -6,7 +6,7 @@
       dbpath = "/tmp/mongodb";
     };
     internal.allowUnfree = [ "mongodb" "mongodb-compass" ];
-    systemd.services.mongod.wantedBy = lib.mkForce [];
+    systemd.services.mongod.wantedBy = lib.mkForce [ ];
     environment.persistence."/nix/persist".users.${username}.directories = [
       ".config/MongoDB\ Compass/Connections/"
     ];
diff --git a/modules/neovim/aaa_lateload/default.nix b/modules/neovim/aaa_lateload/default.nix
index 71de9c1..46454c9 100644
--- a/modules/neovim/aaa_lateload/default.nix
+++ b/modules/neovim/aaa_lateload/default.nix
@@ -1,5 +1,5 @@
 {
   programs.neovim.extraConfig = ''
-  ${builtins.readFile ./retheme.vim} 
+    ${builtins.readFile ./retheme.vim} 
   '';
 }
diff --git a/modules/neovim/hexokinase/default.nix b/modules/neovim/hexokinase/default.nix
index 8409f6c..c5bf1f7 100644
--- a/modules/neovim/hexokinase/default.nix
+++ b/modules/neovim/hexokinase/default.nix
@@ -2,7 +2,7 @@
   programs.neovim = {
     plugins = [ pkgs.vimPlugins.vim-hexokinase ];
     extraConfig = ''
-    let g:Hexokinase_highlighters = ['virtual']
+      let g:Hexokinase_highlighters = ['virtual']
     '';
   };
 }
diff --git a/modules/neovim/multi-cursor/default.nix b/modules/neovim/multi-cursor/default.nix
index 3c61689..d265709 100644
--- a/modules/neovim/multi-cursor/default.nix
+++ b/modules/neovim/multi-cursor/default.nix
@@ -1,6 +1,6 @@
-{pkgs, ...}: {
+{ pkgs, ... }: {
   programs.neovim = {
-    plugins = [pkgs.vimPlugins.vim-visual-multi];
+    plugins = [ pkgs.vimPlugins.vim-visual-multi ];
     extraConfig = builtins.readFile ./theme.vim;
   };
 }
diff --git a/modules/neovim/presence/default.nix b/modules/neovim/presence/default.nix
index ec874a4..e80985a 100644
--- a/modules/neovim/presence/default.nix
+++ b/modules/neovim/presence/default.nix
@@ -1,6 +1,6 @@
-{pkgs, ...}: {
+{ pkgs, ... }: {
   programs.neovim = {
-    plugins = [pkgs.vimPlugins.presence-nvim];
+    plugins = [ pkgs.vimPlugins.presence-nvim ];
 
     extraConfig = builtins.readFile ./presence.vim;
   };
diff --git a/modules/neovim/suda/default.nix b/modules/neovim/suda/default.nix
index 083203b..8c5bea8 100644
--- a/modules/neovim/suda/default.nix
+++ b/modules/neovim/suda/default.nix
@@ -1,6 +1,6 @@
-{pkgs, ...}: {
+{ pkgs, ... }: {
   programs.neovim = {
-    plugins = [pkgs.vimPlugins.suda-vim];
+    plugins = [ pkgs.vimPlugins.suda-vim ];
 
     extraConfig = builtins.readFile ./suda.vim;
   };
diff --git a/modules/neovim/surround/default.nix b/modules/neovim/surround/default.nix
index 2149cdc..fd91649 100644
--- a/modules/neovim/surround/default.nix
+++ b/modules/neovim/surround/default.nix
@@ -1,6 +1,6 @@
-{pkgs, ...}: {
+{ pkgs, ... }: {
   programs.neovim = {
-    plugins = [pkgs.vimPlugins.nvim-surround];
+    plugins = [ pkgs.vimPlugins.nvim-surround ];
 
     extraConfig = "source ${./surround.lua}";
   };
diff --git a/modules/neovim/zzz_earlyload/default.nix b/modules/neovim/zzz_earlyload/default.nix
index b8d6c57..fe31c28 100644
--- a/modules/neovim/zzz_earlyload/default.nix
+++ b/modules/neovim/zzz_earlyload/default.nix
@@ -1,8 +1,8 @@
 # The vim modules are sorted reverse alphabetically, so any extraConfig that is
 # put in here should hopefully be the first thing to be loaded. I'm using it to
 # set stuff like my mapleader
-{ lib, ...}: {
-  programs.neovim.extraConfig = lib.pipe [./settings.vim ./functions.vim] [
+{ lib, ... }: {
+  programs.neovim.extraConfig = lib.pipe [ ./settings.vim ./functions.vim ] [
     (map builtins.readFile)
     (builtins.concatStringsSep "\n")
   ];
diff --git a/modules/networking.nix b/modules/networking.nix
index 2b90ebb..1c53b60 100644
--- a/modules/networking.nix
+++ b/modules/networking.nix
@@ -31,8 +31,8 @@
         networks = {
           /* "HRSFC-LAN".psk = "@hrsfcStaffPass@"; */
           "HRSFC Wi-Fi".psk = "@hrsfcGuestPass@";
-          "UniOfCam-Guest" = {};
-          "Premier Inn Free Wi-Fi" = {};
+          "UniOfCam-Guest" = { };
+          "Premier Inn Free Wi-Fi" = { };
           adelie10 = {
             psk = "@adelie10Pass@";
             priority = 500;
diff --git a/modules/postgres.nix b/modules/postgres.nix
index 27b2b54..f88673e 100644
--- a/modules/postgres.nix
+++ b/modules/postgres.nix
@@ -16,8 +16,8 @@
         initialPasswordFile = config.sops.secrets.pgadminPassword.path;
       };
     };
-    systemd.services.pgadmin.wantedBy = lib.mkForce [];
-    systemd.services.postgresql.wantedBy = lib.mkForce [];
+    systemd.services.pgadmin.wantedBy = lib.mkForce [ ];
+    systemd.services.postgresql.wantedBy = lib.mkForce [ ];
     sops.secrets.pgadminPassword = {
       mode = "0400";
       owner = config.users.users.pgadmin.name;
diff --git a/modules/steam.nix b/modules/steam.nix
index 97fb3db..0f89851 100644
--- a/modules/steam.nix
+++ b/modules/steam.nix
@@ -23,7 +23,8 @@
         gamescope
         gamemode
         xboxdrv
-        sfs-select /*(
+        sfs-select
+        /*(
         writeTextDir "share/applications/steam.desktop" ''
           [Desktop Entry]
           Name=Steam
diff --git a/modules/udev.nix b/modules/udev.nix
index b40a95b..e58b60c 100644
--- a/modules/udev.nix
+++ b/modules/udev.nix
@@ -1,13 +1,15 @@
 { pkgs, ... }: {
-  config.services.udev.packages = [ (pkgs.stdenv.mkDerivation {
-    pname = "udev-rules";
-    version = "2023-03-18";
+  config.services.udev.packages = [
+    (pkgs.stdenv.mkDerivation {
+      pname = "udev-rules";
+      version = "2023-03-18";
 
-    src = ./udev/rules;
+      src = ./udev/rules;
 
-    installPhase = ''
-      mkdir -p $out/etc/udev/rules.d/
-      cp $src/* $out/etc/udev/rules.d/
-    '';
-  }) ];
+      installPhase = ''
+        mkdir -p $out/etc/udev/rules.d/
+        cp $src/* $out/etc/udev/rules.d/
+      '';
+    })
+  ];
 }
diff --git a/modules/wallpaper.nix b/modules/wallpaper.nix
index cb5763e..9835283 100644
--- a/modules/wallpaper.nix
+++ b/modules/wallpaper.nix
@@ -1,6 +1,6 @@
-{pkgs, ...}: {
+{ pkgs, ... }: {
   home.home = {
-    packages = [pkgs.show];
+    packages = [ pkgs.show ];
     file.".xmonad/wallpaper.glsl".source = ./wallpaper/wallpaper.glsl;
   };
 }
diff --git a/overlays/prime-run.nix b/overlays/prime-run.nix
index d080c8a..e755ebe 100644
--- a/overlays/prime-run.nix
+++ b/overlays/prime-run.nix
@@ -1,9 +1,11 @@
-final: prev: let
+final: prev:
+let
   programs = [
     /* "steam" */
     /* "prismlauncher" */
   ];
-in prev.lib.pipe programs [
+in
+prev.lib.pipe programs [
   (map (name: {
     inherit name;
     value = prev.${name}.overrideAttrs (prevAttrs: {
diff --git a/packages/codeium-vim.nix b/packages/codeium-vim.nix
index 53abe4e..0cbd1db 100644
--- a/packages/codeium-vim.nix
+++ b/packages/codeium-vim.nix
@@ -1,6 +1,6 @@
 { vimUtils
 , fetchFromGitHub
-}: vimUtils.buildVimPluginFrom2Nix { 
+}: vimUtils.buildVimPluginFrom2Nix {
   name = "codeium.vim";
   src = fetchFromGitHub {
     owner = "Exafunction";
diff --git a/packages/etherpad/default.nix b/packages/etherpad/default.nix
index 08f947e..9782cbb 100644
--- a/packages/etherpad/default.nix
+++ b/packages/etherpad/default.nix
@@ -1,8 +1,11 @@
 # This file has been generated by node2nix 1.11.1. Do not edit!
 
-{pkgs ? import <nixpkgs> {
+{ pkgs ? import <nixpkgs> {
     inherit system;
-  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-14_x"}:
+  }
+, system ? builtins.currentSystem
+, nodejs ? pkgs."nodejs-14_x"
+}:
 
 let
   nodeEnv = import ./node-env.nix {
diff --git a/packages/etherpad/node-env.nix b/packages/etherpad/node-env.nix
index 5dad9ec..d5bf407 100644
--- a/packages/etherpad/node-env.nix
+++ b/packages/etherpad/node-env.nix
@@ -1,6 +1,6 @@
 # This file originates from node2nix
 
-{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile, writeShellScript}:
+{ lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile, writeShellScript }:
 
 let
   # Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master
@@ -9,7 +9,7 @@
   python = if nodejs ? python then nodejs.python else python2;
 
   # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
-  tarWrapper = runCommand "tarWrapper" {} ''
+  tarWrapper = runCommand "tarWrapper" { } ''
     mkdir -p $out/bin
 
     cat > $out/bin/tar <<EOF
@@ -90,26 +90,28 @@
   # Bundle the dependencies of the package
   #
   # Only include dependencies if they don't exist. They may also be bundled in the package.
-  includeDependencies = {dependencies}:
-    lib.optionalString (dependencies != []) (
+  includeDependencies = { dependencies }:
+    lib.optionalString (dependencies != [ ]) (
       ''
         mkdir -p node_modules
         cd node_modules
       ''
-      + (lib.concatMapStrings (dependency:
-        ''
-          if [ ! -e "${dependency.packageName}" ]; then
-              ${composePackage dependency}
-          fi
-        ''
-      ) dependencies)
+      + (lib.concatMapStrings
+        (dependency:
+          ''
+            if [ ! -e "${dependency.packageName}" ]; then
+                ${composePackage dependency}
+            fi
+          ''
+        )
+        dependencies)
       + ''
         cd ..
       ''
     );
 
   # Recursively composes the dependencies of a package
-  composePackage = { name, packageName, src, dependencies ? [], ... }@args:
+  composePackage = { name, packageName, src, dependencies ? [ ], ... }@args:
     builtins.addErrorContext "while evaluating node package '${packageName}'" ''
       installPackage "${packageName}" "${src}"
       ${includeDependencies { inherit dependencies; }}
@@ -117,7 +119,7 @@
       ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
     '';
 
-  pinpointDependencies = {dependencies, production}:
+  pinpointDependencies = { dependencies, production }:
     let
       pinpointDependenciesFromPackageJSON = writeTextFile {
         name = "pinpointDependencies.js";
@@ -194,7 +196,7 @@
   # dependencies in the package.json file to the versions that are actually
   # being used.
 
-  pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
+  pinpointDependenciesOfPackage = { packageName, dependencies ? [ ], production ? true, ... }@args:
     ''
       if [ -d "${packageName}" ]
       then
@@ -207,7 +209,7 @@
 
   # Extract the Node.js source code which is used to compile packages with
   # native bindings
-  nodeSources = runCommand "node-sources" {} ''
+  nodeSources = runCommand "node-sources" { } ''
     tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
     mv node-* $out
   '';
@@ -414,64 +416,64 @@
     '';
   };
 
-  prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
+  prepareAndInvokeNPM = { packageName, bypassCache, reconstructLock, npmFlags, production }:
     let
       forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
     in
     ''
-        # Pinpoint the versions of all dependencies to the ones that are actually being used
-        echo "pinpointing versions of dependencies..."
-        source $pinpointDependenciesScriptPath
+      # Pinpoint the versions of all dependencies to the ones that are actually being used
+      echo "pinpointing versions of dependencies..."
+      source $pinpointDependenciesScriptPath
 
-        # Patch the shebangs of the bundled modules to prevent them from
-        # calling executables outside the Nix store as much as possible
-        patchShebangs .
+      # Patch the shebangs of the bundled modules to prevent them from
+      # calling executables outside the Nix store as much as possible
+      patchShebangs .
 
-        # Deploy the Node.js package by running npm install. Since the
-        # dependencies have been provided already by ourselves, it should not
-        # attempt to install them again, which is good, because we want to make
-        # it Nix's responsibility. If it needs to install any dependencies
-        # anyway (e.g. because the dependency parameters are
-        # incomplete/incorrect), it fails.
-        #
-        # The other responsibilities of NPM are kept -- version checks, build
-        # steps, postprocessing etc.
+      # Deploy the Node.js package by running npm install. Since the
+      # dependencies have been provided already by ourselves, it should not
+      # attempt to install them again, which is good, because we want to make
+      # it Nix's responsibility. If it needs to install any dependencies
+      # anyway (e.g. because the dependency parameters are
+      # incomplete/incorrect), it fails.
+      #
+      # The other responsibilities of NPM are kept -- version checks, build
+      # steps, postprocessing etc.
 
-        export HOME=$TMPDIR
-        cd "${packageName}"
-        runHook preRebuild
+      export HOME=$TMPDIR
+      cd "${packageName}"
+      runHook preRebuild
 
-        ${lib.optionalString bypassCache ''
-          ${lib.optionalString reconstructLock ''
-            if [ -f package-lock.json ]
-            then
-                echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
-                echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
-                rm package-lock.json
-            else
-                echo "No package-lock.json file found, reconstructing..."
-            fi
+      ${lib.optionalString bypassCache ''
+        ${lib.optionalString reconstructLock ''
+          if [ -f package-lock.json ]
+          then
+              echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
+              echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
+              rm package-lock.json
+          else
+              echo "No package-lock.json file found, reconstructing..."
+          fi
 
-            node ${reconstructPackageLock}
-          ''}
-
-          node ${addIntegrityFieldsScript}
+          node ${reconstructPackageLock}
         ''}
 
-        npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
+        node ${addIntegrityFieldsScript}
+      ''}
 
-        runHook postRebuild
+      npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
 
-        if [ "''${dontNpmInstall-}" != "1" ]
-        then
-            # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
-            rm -f npm-shrinkwrap.json
+      runHook postRebuild
 
-            npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install
-        fi
+      if [ "''${dontNpmInstall-}" != "1" ]
+      then
+          # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
+          rm -f npm-shrinkwrap.json
 
-        # Link executables defined in package.json
-        node ${linkBinsScript}
+          npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install
+      fi
+
+      # Link executables defined in package.json
+      node ${linkBinsScript}
     '';
 
   # Builds and composes an NPM package including all its dependencies
@@ -479,8 +481,8 @@
     { name
     , packageName
     , version ? null
-    , dependencies ? []
-    , buildInputs ? []
+    , dependencies ? [ ]
+    , buildInputs ? [ ]
     , production ? true
     , npmFlags ? ""
     , dontNpmInstall ? false
@@ -490,8 +492,9 @@
     , dontStrip ? true
     , unpackPhase ? "true"
     , buildPhase ? "true"
-    , meta ? {}
-    , ... }@args:
+    , meta ? { }
+    , ...
+    }@args:
 
     let
       extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
@@ -569,8 +572,8 @@
     , packageName
     , version ? null
     , src
-    , dependencies ? []
-    , buildInputs ? []
+    , dependencies ? [ ]
+    , buildInputs ? [ ]
     , production ? true
     , npmFlags ? ""
     , dontNpmInstall ? false
@@ -579,60 +582,61 @@
     , dontStrip ? true
     , unpackPhase ? "true"
     , buildPhase ? "true"
-    , ... }@args:
+    , ...
+    }@args:
 
     let
       extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
     in
-      stdenv.mkDerivation ({
-        name = "node-dependencies-${name}${if version == null then "" else "-${version}"}";
+    stdenv.mkDerivation ({
+      name = "node-dependencies-${name}${if version == null then "" else "-${version}"}";
 
-        buildInputs = [ tarWrapper python nodejs ]
-          ++ lib.optional (stdenv.isLinux) utillinux
-          ++ lib.optional (stdenv.isDarwin) libtool
-          ++ buildInputs;
+      buildInputs = [ tarWrapper python nodejs ]
+        ++ lib.optional (stdenv.isLinux) utillinux
+        ++ lib.optional (stdenv.isDarwin) libtool
+        ++ buildInputs;
 
-        inherit dontStrip; # Stripping may fail a build for some package deployments
-        inherit dontNpmInstall unpackPhase buildPhase;
+      inherit dontStrip; # Stripping may fail a build for some package deployments
+      inherit dontNpmInstall unpackPhase buildPhase;
 
-        includeScript = includeDependencies { inherit dependencies; };
-        pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+      includeScript = includeDependencies { inherit dependencies; };
+      pinpointDependenciesScript = pinpointDependenciesOfPackage args;
 
-        passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
+      passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
 
-        installPhase = ''
-          source ${installPackage}
+      installPhase = ''
+        source ${installPackage}
 
-          mkdir -p $out/${packageName}
-          cd $out/${packageName}
+        mkdir -p $out/${packageName}
+        cd $out/${packageName}
 
-          source $includeScriptPath
+        source $includeScriptPath
 
-          # Create fake package.json to make the npm commands work properly
-          cp ${src}/package.json .
-          chmod 644 package.json
-          ${lib.optionalString bypassCache ''
-            if [ -f ${src}/package-lock.json ]
-            then
-                cp ${src}/package-lock.json .
-                chmod 644 package-lock.json
-            fi
-          ''}
+        # Create fake package.json to make the npm commands work properly
+        cp ${src}/package.json .
+        chmod 644 package.json
+        ${lib.optionalString bypassCache ''
+          if [ -f ${src}/package-lock.json ]
+          then
+              cp ${src}/package-lock.json .
+              chmod 644 package-lock.json
+          fi
+        ''}
 
-          # Go to the parent folder to make sure that all packages are pinpointed
-          cd ..
-          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+        # Go to the parent folder to make sure that all packages are pinpointed
+        cd ..
+        ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
 
-          ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+        ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
 
-          # Expose the executables that were installed
-          cd ..
-          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+        # Expose the executables that were installed
+        cd ..
+        ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
 
-          mv ${packageName} lib
-          ln -s $out/lib/node_modules/.bin $out/bin
-        '';
-      } // extraArgs);
+        mv ${packageName} lib
+        ln -s $out/lib/node_modules/.bin $out/bin
+      '';
+    } // extraArgs);
 
   # Builds a development shell
   buildNodeShell =
@@ -640,8 +644,8 @@
     , packageName
     , version ? null
     , src
-    , dependencies ? []
-    , buildInputs ? []
+    , dependencies ? [ ]
+    , buildInputs ? [ ]
     , production ? true
     , npmFlags ? ""
     , dontNpmInstall ? false
@@ -650,7 +654,8 @@
     , dontStrip ? true
     , unpackPhase ? "true"
     , buildPhase ? "true"
-    , ... }@args:
+    , ...
+    }@args:
 
     let
       nodeDependencies = buildNodeDependencies args;
@@ -672,7 +677,7 @@
 
       # Provide the dependencies in a development shell through the NODE_PATH environment variable
       inherit nodeDependencies;
-      shellHook = lib.optionalString (dependencies != []) ''
+      shellHook = lib.optionalString (dependencies != [ ]) ''
         export NODE_PATH=${nodeDependencies}/lib/node_modules
         export PATH="${nodeDependencies}/bin:$PATH"
       '';
diff --git a/packages/etherpad/node-packages.nix b/packages/etherpad/node-packages.nix
index 26a251c..70f7d49 100644
--- a/packages/etherpad/node-packages.nix
+++ b/packages/etherpad/node-packages.nix
@@ -1,6 +1,6 @@
 # This file has been generated by node2nix 1.11.1. Do not edit!
 
-{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
+{ nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? [ ] }:
 
 let
   sources = {
@@ -5617,7 +5617,8 @@
         "*"
         "!package.json"
         "!package-lock.json"
-      ] args.src;
+      ]
+        args.src;
       dontBuild = true;
       installPhase = "mkdir -p $out; cp -r ./* $out;";
     };
diff --git a/packages/sfs-select.nix b/packages/sfs-select.nix
index 0682df4..2492d8f 100644
--- a/packages/sfs-select.nix
+++ b/packages/sfs-select.nix
@@ -1,14 +1,16 @@
-{ stdenv, p7zip, zip, python3, qt5 }: let
+{ stdenv, p7zip, zip, python3, qt5 }:
+let
   preExec = ''
-  import os
-  sfs_select_dir = os.path.expanduser('~/.local/share/Steam/sfs-select/runtime')
-  os.makedirs(sfs_select_dir, exist_ok=True)
-  os.chdir(sfs_select_dir)
+    import os
+    sfs_select_dir = os.path.expanduser('~/.local/share/Steam/sfs-select/runtime')
+    os.makedirs(sfs_select_dir, exist_ok=True)
+    os.chdir(sfs_select_dir)
 
 
   '';
-  preExecBash = builtins.replaceStrings ["\n"] ["\\n"] preExec;
-in stdenv.mkDerivation {
+  preExecBash = builtins.replaceStrings [ "\n" ] [ "\\n" ] preExec;
+in
+stdenv.mkDerivation {
   pname = "sfs-select";
   version = "0.5.0";
 
diff --git a/packages/tcount.nix b/packages/tcount.nix
index bb96c12..72c21d5 100644
--- a/packages/tcount.nix
+++ b/packages/tcount.nix
@@ -5,10 +5,12 @@
 , system
 , _tooling
 ,
-}: let
+}:
+let
   craneLib = _tooling.crane.lib.${system};
   rev = "71638e6540e2fc30bd609f8f78131ec10217f906";
-in craneLib.buildPackage {
+in
+craneLib.buildPackage {
   pname = "tcount";
   version = builtins.substring 0 7 rev;
 
diff --git a/utils/default.nix b/utils/default.nix
index 4be13b9..04a7376 100644
--- a/utils/default.nix
+++ b/utils/default.nix
@@ -24,4 +24,5 @@
     (builtins.filter (utility: utility.include))
     builtins.listToAttrs
   ];
-in utils
+in
+utils
