summary refs log tree commit diff stats
path: root/user
diff options
context:
space:
mode:
Diffstat (limited to 'user')
-rw-r--r--user/config.nix2
-rw-r--r--user/mba.nix7
-rw-r--r--user/modules/eshell.nix14
-rw-r--r--user/modules/tabnine.nix38
-rw-r--r--user/overlays/extra-packages.nix2
-rw-r--r--user/packages/lumen/default.nix12
-rw-r--r--user/packages/node2nix/default.nix24
-rw-r--r--user/packages/node2nix/node-env.nix696
-rw-r--r--user/packages/node2nix/node-packages.nix144
-rw-r--r--user/prefect.nix7
-rw-r--r--user/satoshipad.nix13
-rw-r--r--user/server.nix9
-rw-r--r--user/settings/accounting.nix7
-rw-r--r--user/settings/base.nix9
-rw-r--r--user/settings/chat.nix7
-rw-r--r--user/settings/darwin.nix16
-rw-r--r--user/settings/development/base.nix11
-rw-r--r--user/settings/development/clojure.nix7
-rw-r--r--user/settings/development/javascript.nix41
-rw-r--r--user/settings/development/lisp.nix7
-rw-r--r--user/settings/development/rust.nix7
-rw-r--r--user/settings/development/web.nix7
-rw-r--r--user/settings/development/zig.nix7
-rw-r--r--user/settings/dunst.nix7
-rw-r--r--user/settings/emacs.nix17
-rw-r--r--user/settings/gaming.nix7
-rw-r--r--user/settings/git.nix7
-rw-r--r--user/settings/gnupg.nix7
-rw-r--r--user/settings/golang.nix7
-rw-r--r--user/settings/i3.nix381
-rw-r--r--user/settings/ledger.nix7
-rw-r--r--user/settings/mail.nix9
-rw-r--r--user/settings/music-management.nix7
-rw-r--r--user/settings/music.nix11
-rw-r--r--user/settings/neovim.nix9
-rw-r--r--user/settings/nix.nix7
-rw-r--r--user/settings/nixos.nix7
-rw-r--r--user/settings/nixpkgs.nix17
-rw-r--r--user/settings/passwords.nix7
-rw-r--r--user/settings/rofi.nix9
-rw-r--r--user/settings/satoshipay.nix123
-rw-r--r--user/settings/ssh.nix9
-rw-r--r--user/settings/sxhkd.nix13
-rw-r--r--user/settings/tabnine.nix27
-rw-r--r--user/settings/trezor.nix7
-rw-r--r--user/settings/user-interface.nix17
-rw-r--r--user/settings/xresources.nix7
-rw-r--r--user/settings/zsh.nix17
48 files changed, 915 insertions, 922 deletions
diff --git a/user/config.nix b/user/config.nix
index d138ff20..a910c0a2 100644
--- a/user/config.nix
+++ b/user/config.nix
@@ -1,4 +1,4 @@
-{pkgs}: {
+{ pkgs }: {
   allowUnfree = true;
   allowUnfreePredicate = pkg: true;
 }
diff --git a/user/mba.nix b/user/mba.nix
index 6bd740a9..8f052be6 100644
--- a/user/mba.nix
+++ b/user/mba.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   imports = [
     ./settings/base.nix
diff --git a/user/modules/eshell.nix b/user/modules/eshell.nix
index fd108af6..822b4262 100644
--- a/user/modules/eshell.nix
+++ b/user/modules/eshell.nix
@@ -1,15 +1,15 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
+{ config
+, lib
+, pkgs
+, ...
 }:
 with lib; let
   cfg = config.programs.emacs;
-in {
+in
+{
   options.programs.emacs.eshell = {
     aliases = mkOption {
-      default = {};
+      default = { };
       type = types.attrsOf types.str;
       example = {
         ll = "ls -l $*";
diff --git a/user/modules/tabnine.nix b/user/modules/tabnine.nix
index 261176dc..7e38e0ec 100644
--- a/user/modules/tabnine.nix
+++ b/user/modules/tabnine.nix
@@ -1,26 +1,26 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
+{ config
+, lib
+, pkgs
+, ...
 }:
 with lib; let
   inherit (pkgs) stdenv;
   cfg = config.programs.tabnine;
   lspConfigFile = config:
     pkgs.runCommand "TabNine.toml"
-    {
-      buildInputs = [pkgs.remarshal];
-      preferLocalBuild = true;
-      allowSubstitutes = false;
-    }
-    ''
-      remarshal -if json -of toml \
-      < ${pkgs.writeText "config.json" (builtins.toJSON cfg.lspConfig)} \
-      | sed  -e 's/^\["\(.*\)"\]/[\1]/' \
-      > $out
-    '';
-in {
+      {
+        buildInputs = [ pkgs.remarshal ];
+        preferLocalBuild = true;
+        allowSubstitutes = false;
+      }
+      ''
+        remarshal -if json -of toml \
+        < ${pkgs.writeText "config.json" (builtins.toJSON cfg.lspConfig)} \
+        | sed  -e 's/^\["\(.*\)"\]/[\1]/' \
+        > $out
+      '';
+in
+{
   options.programs.tabnine = {
     enable = mkEnableOption "TabNine, Smart Compose for code.";
 
@@ -37,7 +37,7 @@ in {
 
     config = mkOption {
       type = types.attrs;
-      default = {};
+      default = { };
       description = ''
         TabNine configuration written to
         <filename>\${configDir}/tabnine_config.json</filename>
@@ -53,7 +53,7 @@ in {
 
     lspConfig = mkOption {
       type = types.attrs;
-      default = {};
+      default = { };
       description = ''
         LSP Server configuration written to
         <filename>\${configDir}/TabNine.toml</filename>
diff --git a/user/overlays/extra-packages.nix b/user/overlays/extra-packages.nix
index ec315586..7566548c 100644
--- a/user/overlays/extra-packages.nix
+++ b/user/overlays/extra-packages.nix
@@ -1,3 +1,3 @@
 self: super: {
-  lumen = super.callPackage ../packages/lumen {};
+  lumen = super.callPackage ../packages/lumen { };
 }
diff --git a/user/packages/lumen/default.nix b/user/packages/lumen/default.nix
index 91e1b726..85520a2f 100644
--- a/user/packages/lumen/default.nix
+++ b/user/packages/lumen/default.nix
@@ -1,9 +1,9 @@
-{
-  stdenv,
-  lib,
-  go,
-  buildGoPackage,
-  fetchFromGitHub,
+{ stdenv
+, lib
+, go
+, buildGoPackage
+, fetchFromGitHub
+,
 }:
 buildGoPackage rec {
   pname = "lumen";
diff --git a/user/packages/node2nix/default.nix b/user/packages/node2nix/default.nix
index 09eea0fe..13d7a1e2 100644
--- a/user/packages/node2nix/default.nix
+++ b/user/packages/node2nix/default.nix
@@ -1,12 +1,12 @@
 # This file has been generated by node2nix 1.11.1. Do not edit!
-{
-  pkgs ?
-    import <nixpkgs> {
-      inherit system;
-    },
-  system ? builtins.currentSystem,
-  nodejs ? pkgs."nodejs-18_x",
-}: let
+{ pkgs ? import <nixpkgs> {
+    inherit system;
+  }
+, system ? builtins.currentSystem
+, nodejs ? pkgs."nodejs-18_x"
+,
+}:
+let
   nodeEnv = import ./node-env.nix {
     inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript;
     inherit pkgs nodejs;
@@ -16,7 +16,7 @@
       else null;
   };
 in
-  import ./node-packages.nix {
-    inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
-    inherit nodeEnv;
-  }
+import ./node-packages.nix {
+  inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
+  inherit nodeEnv;
+}
diff --git a/user/packages/node2nix/node-env.nix b/user/packages/node2nix/node-env.nix
index b81347da..16720d90 100644
--- a/user/packages/node2nix/node-env.nix
+++ b/user/packages/node2nix/node-env.nix
@@ -1,15 +1,16 @@
 # This file originates from node2nix
-{
-  lib,
-  stdenv,
-  nodejs,
-  python2,
-  pkgs,
-  libtool,
-  runCommand,
-  writeTextFile,
-  writeShellScript,
-}: let
+{ 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
   utillinux =
     if pkgs ? utillinux
@@ -22,7 +23,7 @@
     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
@@ -34,16 +35,16 @@
   '';
 
   # Function that generates a TGZ file from a NPM project
-  buildNodeSourceDist = {
-    name,
-    version,
-    src,
-    ...
-  }:
+  buildNodeSourceDist =
+    { name
+    , version
+    , src
+    , ...
+    }:
     stdenv.mkDerivation {
       name = "node-tarball-${name}-${version}";
       inherit src;
-      buildInputs = [nodejs];
+      buildInputs = [ nodejs ];
       buildPhase = ''
         export HOME=$TMPDIR
         tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
@@ -106,13 +107,14 @@
   # 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 (
+      + (lib.concatMapStrings
+        (
           dependency: ''
             if [ ! -e "${dependency.packageName}" ]; then
             ${composePackage dependency}
@@ -126,13 +128,13 @@
     );
 
   # 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;}}
@@ -140,106 +142,109 @@
       ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
     '';
 
-  pinpointDependencies = {
-    dependencies,
-    production,
-  }: let
-    pinpointDependenciesFromPackageJSON = writeTextFile {
-      name = "pinpointDependencies.js";
-      text = ''
-        var fs = require('fs');
-        var path = require('path');
-
-        function resolveDependencyVersion(location, name) {
-        if(location == process.env['NIX_STORE']) {
-        return null;
-        } else {
-        var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
-
-        if(fs.existsSync(dependencyPackageJSON)) {
-        var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
-
-        if(dependencyPackageObj.name == name) {
-        return dependencyPackageObj.version;
-        }
-        } else {
-        return resolveDependencyVersion(path.resolve(location, ".."), name);
-        }
-        }
-        }
+  pinpointDependencies =
+    { dependencies
+    , production
+    ,
+    }:
+    let
+      pinpointDependenciesFromPackageJSON = writeTextFile {
+        name = "pinpointDependencies.js";
+        text = ''
+          var fs = require('fs');
+          var path = require('path');
+
+          function resolveDependencyVersion(location, name) {
+          if(location == process.env['NIX_STORE']) {
+          return null;
+          } else {
+          var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
+
+          if(fs.existsSync(dependencyPackageJSON)) {
+          var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
+
+          if(dependencyPackageObj.name == name) {
+          return dependencyPackageObj.version;
+          }
+          } else {
+          return resolveDependencyVersion(path.resolve(location, ".."), name);
+          }
+          }
+          }
 
-        function replaceDependencies(dependencies) {
-        if(typeof dependencies == "object" && dependencies !== null) {
-        for(var dependency in dependencies) {
-        var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
+          function replaceDependencies(dependencies) {
+          if(typeof dependencies == "object" && dependencies !== null) {
+          for(var dependency in dependencies) {
+          var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
 
-        if(resolvedVersion === null) {
-        process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
-        } else {
-        dependencies[dependency] = resolvedVersion;
-        }
-        }
-        }
-        }
+          if(resolvedVersion === null) {
+          process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
+          } else {
+          dependencies[dependency] = resolvedVersion;
+          }
+          }
+          }
+          }
 
-        /* Read the package.json configuration */
-        var packageObj = JSON.parse(fs.readFileSync('./package.json'));
+          /* Read the package.json configuration */
+          var packageObj = JSON.parse(fs.readFileSync('./package.json'));
 
-        /* Pinpoint all dependencies */
-        replaceDependencies(packageObj.dependencies);
-        if(process.argv[2] == "development") {
-        replaceDependencies(packageObj.devDependencies);
-        }
-        else {
-        packageObj.devDependencies = {};
-        }
-        replaceDependencies(packageObj.optionalDependencies);
-        replaceDependencies(packageObj.peerDependencies);
+          /* Pinpoint all dependencies */
+          replaceDependencies(packageObj.dependencies);
+          if(process.argv[2] == "development") {
+          replaceDependencies(packageObj.devDependencies);
+          }
+          else {
+          packageObj.devDependencies = {};
+          }
+          replaceDependencies(packageObj.optionalDependencies);
+          replaceDependencies(packageObj.peerDependencies);
 
-        /* Write the fixed package.json file */
-        fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
-      '';
-    };
-  in ''
-    node ${pinpointDependenciesFromPackageJSON} ${
-      if production
-      then "production"
-      else "development"
-    }
+          /* Write the fixed package.json file */
+          fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
+        '';
+      };
+    in
+    ''
+      node ${pinpointDependenciesFromPackageJSON} ${
+        if production
+        then "production"
+        else "development"
+      }
 
-    ${lib.optionalString (dependencies != [])
-      ''
-        if [ -d node_modules ]
-        then
-        cd node_modules
-        ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
-        cd ..
-        fi
-      ''}
-  '';
+      ${lib.optionalString (dependencies != [])
+        ''
+          if [ -d node_modules ]
+          then
+          cd node_modules
+          ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
+          cd ..
+          fi
+        ''}
+    '';
 
   # Recursively traverses all dependencies of a package and pinpoints all
   # dependencies in the package.json file to the versions that are actually
   # being used.
 
-  pinpointDependenciesOfPackage = {
-    packageName,
-    dependencies ? [],
-    production ? true,
-    ...
-  } @ args: ''
-    if [ -d "${packageName}" ]
-    then
-    cd "${packageName}"
-    ${pinpointDependencies {inherit dependencies production;}}
-    cd ..
-    ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
-    fi
-  '';
+  pinpointDependenciesOfPackage =
+    { packageName
+    , dependencies ? [ ]
+    , production ? true
+    , ...
+    } @ args: ''
+      if [ -d "${packageName}" ]
+      then
+      cd "${packageName}"
+      ${pinpointDependencies {inherit dependencies production;}}
+      cd ..
+      ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+      fi
+    '';
 
   # 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
   '';
@@ -446,293 +451,300 @@
     '';
   };
 
-  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
-
-    # 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.
-
-    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
+  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
+
+      # 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.
+
+      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
+
+          node ${reconstructPackageLock}
+        ''}
 
-        node ${reconstructPackageLock}
+        node ${addIntegrityFieldsScript}
       ''}
 
-      node ${addIntegrityFieldsScript}
-    ''}
+      npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
 
-    npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
+      runHook postRebuild
 
-    runHook postRebuild
+      if [ "''${dontNpmInstall-}" != "1" ]
+      then
+      # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
+      rm -f npm-shrinkwrap.json
 
-    if [ "''${dontNpmInstall-}" != "1" ]
-    then
-    # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
-    rm -f npm-shrinkwrap.json
+      npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install
+      fi
 
-    npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install
-    fi
-
-    # Link executables defined in package.json
-    node ${linkBinsScript}
-  '';
+      # Link executables defined in package.json
+      node ${linkBinsScript}
+    '';
 
   # Builds and composes an NPM package including all its dependencies
-  buildNodePackage = {
-    name,
-    packageName,
-    version ? null,
-    dependencies ? [],
-    buildInputs ? [],
-    production ? true,
-    npmFlags ? "",
-    dontNpmInstall ? false,
-    bypassCache ? false,
-    reconstructLock ? false,
-    preRebuild ? "",
-    dontStrip ? true,
-    unpackPhase ? "true",
-    buildPhase ? "true",
-    meta ? {},
-    ...
-  } @ args: let
-    extraArgs = removeAttrs args ["name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta"];
-  in
+  buildNodePackage =
+    { name
+    , packageName
+    , version ? null
+    , dependencies ? [ ]
+    , buildInputs ? [ ]
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , preRebuild ? ""
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , meta ? { }
+    , ...
+    } @ args:
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
+    in
     stdenv.mkDerivation ({
-        name = "${name}${
+      name = "${name}${
           if version == null
           then ""
           else "-${version}"
         }";
-        buildInputs =
-          [tarWrapper python nodejs]
+      buildInputs =
+        [ tarWrapper python nodejs ]
           ++ lib.optional (stdenv.isLinux) utillinux
           ++ lib.optional (stdenv.isDarwin) libtool
           ++ buildInputs;
 
-        inherit nodejs;
+      inherit nodejs;
 
-        inherit dontStrip; # Stripping may fail a build for some package deployments
-        inherit dontNpmInstall preRebuild unpackPhase buildPhase;
+      inherit dontStrip; # Stripping may fail a build for some package deployments
+      inherit dontNpmInstall preRebuild unpackPhase buildPhase;
 
-        compositionScript = composePackage args;
-        pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+      compositionScript = composePackage args;
+      pinpointDependenciesScript = pinpointDependenciesOfPackage args;
 
-        passAsFile = ["compositionScript" "pinpointDependenciesScript"];
+      passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
 
-        installPhase = ''
-          source ${installPackage}
+      installPhase = ''
+        source ${installPackage}
 
-          # Create and enter a root node_modules/ folder
-          mkdir -p $out/lib/node_modules
-          cd $out/lib/node_modules
+        # Create and enter a root node_modules/ folder
+        mkdir -p $out/lib/node_modules
+        cd $out/lib/node_modules
 
-          # Compose the package and all its dependencies
-          source $compositionScriptPath
+        # Compose the package and all its dependencies
+        source $compositionScriptPath
 
-          ${prepareAndInvokeNPM {inherit packageName bypassCache reconstructLock npmFlags production;}}
+        ${prepareAndInvokeNPM {inherit packageName bypassCache reconstructLock npmFlags production;}}
 
-          # Create symlink to the deployed executable folder, if applicable
-          if [ -d "$out/lib/node_modules/.bin" ]
-          then
-          ln -s $out/lib/node_modules/.bin $out/bin
-
-          # Patch the shebang lines of all the executables
-          ls $out/bin/* | while read i
-          do
-          file="$(readlink -f "$i")"
-          chmod u+rwx "$file"
-          patchShebangs "$file"
-          done
-          fi
+        # Create symlink to the deployed executable folder, if applicable
+        if [ -d "$out/lib/node_modules/.bin" ]
+        then
+        ln -s $out/lib/node_modules/.bin $out/bin
+
+        # Patch the shebang lines of all the executables
+        ls $out/bin/* | while read i
+        do
+        file="$(readlink -f "$i")"
+        chmod u+rwx "$file"
+        patchShebangs "$file"
+        done
+        fi
 
-          # Create symlinks to the deployed manual page folders, if applicable
-          if [ -d "$out/lib/node_modules/${packageName}/man" ]
-          then
-          mkdir -p $out/share
-          for dir in "$out/lib/node_modules/${packageName}/man/"*
-          do
-          mkdir -p $out/share/man/$(basename "$dir")
-          for page in "$dir"/*
-          do
-          ln -s $page $out/share/man/$(basename "$dir")
-          done
-          done
-          fi
+        # Create symlinks to the deployed manual page folders, if applicable
+        if [ -d "$out/lib/node_modules/${packageName}/man" ]
+        then
+        mkdir -p $out/share
+        for dir in "$out/lib/node_modules/${packageName}/man/"*
+        do
+        mkdir -p $out/share/man/$(basename "$dir")
+        for page in "$dir"/*
+        do
+        ln -s $page $out/share/man/$(basename "$dir")
+        done
+        done
+        fi
 
-          # Run post install hook, if provided
-          runHook postInstall
-        '';
+        # Run post install hook, if provided
+        runHook postInstall
+      '';
 
-        meta =
-          {
-            # default to Node.js' platforms
-            platforms = nodejs.meta.platforms;
-          }
-          // meta;
-      }
-      // extraArgs);
+      meta =
+        {
+          # default to Node.js' platforms
+          platforms = nodejs.meta.platforms;
+        }
+        // meta;
+    }
+    // extraArgs);
 
   # Builds a node environment (a node_modules folder and a set of binaries)
-  buildNodeDependencies = {
-    name,
-    packageName,
-    version ? null,
-    src,
-    dependencies ? [],
-    buildInputs ? [],
-    production ? true,
-    npmFlags ? "",
-    dontNpmInstall ? false,
-    bypassCache ? false,
-    reconstructLock ? false,
-    dontStrip ? true,
-    unpackPhase ? "true",
-    buildPhase ? "true",
-    ...
-  } @ args: let
-    extraArgs = removeAttrs args ["name" "dependencies" "buildInputs"];
-  in
+  buildNodeDependencies =
+    { name
+    , packageName
+    , version ? null
+    , src
+    , dependencies ? [ ]
+    , buildInputs ? [ ]
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ...
+    } @ args:
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
+    in
     stdenv.mkDerivation ({
-        name = "node-dependencies-${name}${
+      name = "node-dependencies-${name}${
           if version == null
           then ""
           else "-${version}"
         }";
 
-        buildInputs =
-          [tarWrapper python nodejs]
+      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 = {
-    name,
-    packageName,
-    version ? null,
-    src,
-    dependencies ? [],
-    buildInputs ? [],
-    production ? true,
-    npmFlags ? "",
-    dontNpmInstall ? false,
-    bypassCache ? false,
-    reconstructLock ? false,
-    dontStrip ? true,
-    unpackPhase ? "true",
-    buildPhase ? "true",
-    ...
-  } @ args: let
-    nodeDependencies = buildNodeDependencies args;
-    extraArgs = removeAttrs args ["name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "unpackPhase" "buildPhase"];
-  in
+  buildNodeShell =
+    { name
+    , packageName
+    , version ? null
+    , src
+    , dependencies ? [ ]
+    , buildInputs ? [ ]
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ...
+    } @ args:
+    let
+      nodeDependencies = buildNodeDependencies args;
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "unpackPhase" "buildPhase" ];
+    in
     stdenv.mkDerivation ({
-        name = "node-shell-${name}${
+      name = "node-shell-${name}${
           if version == null
           then ""
           else "-${version}"
         }";
 
-        buildInputs = [python nodejs] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
-        buildCommand = ''
-          mkdir -p $out/bin
-          cat > $out/bin/shell <<EOF
-          #! ${stdenv.shell} -e
-          $shellHook
-          exec ${stdenv.shell}
-          EOF
-          chmod +x $out/bin/shell
-        '';
+      buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
+      buildCommand = ''
+        mkdir -p $out/bin
+        cat > $out/bin/shell <<EOF
+        #! ${stdenv.shell} -e
+        $shellHook
+        exec ${stdenv.shell}
+        EOF
+        chmod +x $out/bin/shell
+      '';
 
-        # Provide the dependencies in a development shell through the NODE_PATH environment variable
-        inherit nodeDependencies;
-        shellHook = lib.optionalString (dependencies != []) ''
-          export NODE_PATH=${nodeDependencies}/lib/node_modules
-          export PATH="${nodeDependencies}/bin:$PATH"
-        '';
-      }
-      // extraArgs);
-in {
+      # Provide the dependencies in a development shell through the NODE_PATH environment variable
+      inherit nodeDependencies;
+      shellHook = lib.optionalString (dependencies != [ ]) ''
+        export NODE_PATH=${nodeDependencies}/lib/node_modules
+        export PATH="${nodeDependencies}/bin:$PATH"
+      '';
+    }
+    // extraArgs);
+in
+{
   buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist;
   buildNodePackage = lib.makeOverridable buildNodePackage;
   buildNodeDependencies = lib.makeOverridable buildNodeDependencies;
diff --git a/user/packages/node2nix/node-packages.nix b/user/packages/node2nix/node-packages.nix
index 64748fe5..65622884 100644
--- a/user/packages/node2nix/node-packages.nix
+++ b/user/packages/node2nix/node-packages.nix
@@ -1,13 +1,14 @@
 # This file has been generated by node2nix 1.11.1. Do not edit!
-{
-  nodeEnv,
-  fetchurl,
-  fetchgit,
-  nix-gitignore,
-  stdenv,
-  lib,
-  globalBuildInputs ? [],
-}: let
+{ nodeEnv
+, fetchurl
+, fetchgit
+, nix-gitignore
+, stdenv
+, lib
+, globalBuildInputs ? [ ]
+,
+}:
+let
   sources = {
     "abort-controller-3.0.0" = {
       name = "abort-controller";
@@ -1063,7 +1064,8 @@
       };
     };
   };
-in {
+in
+{
   "pnpm-7.12" = nodeEnv.buildNodePackage {
     name = "pnpm";
     packageName = "pnpm";
@@ -1108,10 +1110,10 @@ in {
       sources."glob-8.0.3"
       (sources."help-me-4.1.0"
         // {
-          dependencies = [
-            sources."readable-stream-3.6.0"
-          ];
-        })
+        dependencies = [
+          sources."readable-stream-3.6.0"
+        ];
+      })
       sources."ieee754-1.2.1"
       sources."inflight-1.0.6"
       sources."inherits-2.0.4"
@@ -1190,16 +1192,16 @@ in {
     dependencies = [
       (sources."asn1.js-5.4.1"
         // {
-          dependencies = [
-            sources."bn.js-4.12.0"
-          ];
-        })
+        dependencies = [
+          sources."bn.js-4.12.0"
+        ];
+      })
       (sources."assert-1.5.0"
         // {
-          dependencies = [
-            sources."util-0.10.3"
-          ];
-        })
+        dependencies = [
+          sources."util-0.10.3"
+        ];
+      })
       sources."base64-js-1.5.1"
       sources."bn.js-5.2.1"
       sources."brorand-1.1.0"
@@ -1209,11 +1211,11 @@ in {
       sources."browserify-rsa-4.1.0"
       (sources."browserify-sign-4.2.1"
         // {
-          dependencies = [
-            sources."inherits-2.0.4"
-            sources."readable-stream-3.6.0"
-          ];
-        })
+        dependencies = [
+          sources."inherits-2.0.4"
+          sources."readable-stream-3.6.0"
+        ];
+      })
       sources."browserify-zlib-0.2.0"
       sources."buffer-4.9.2"
       sources."buffer-xor-1.0.3"
@@ -1225,43 +1227,43 @@ in {
       sources."core-util-is-1.0.3"
       (sources."create-ecdh-4.0.4"
         // {
-          dependencies = [
-            sources."bn.js-4.12.0"
-          ];
-        })
+        dependencies = [
+          sources."bn.js-4.12.0"
+        ];
+      })
       sources."create-hash-1.2.0"
       sources."create-hmac-1.1.7"
       sources."crypto-browserify-3.12.0"
       sources."des.js-1.0.1"
       (sources."diffie-hellman-5.0.3"
         // {
-          dependencies = [
-            sources."bn.js-4.12.0"
-          ];
-        })
+        dependencies = [
+          sources."bn.js-4.12.0"
+        ];
+      })
       sources."domain-browser-1.2.0"
       (sources."elliptic-6.5.4"
         // {
-          dependencies = [
-            sources."bn.js-4.12.0"
-            sources."inherits-2.0.4"
-          ];
-        })
+        dependencies = [
+          sources."bn.js-4.12.0"
+          sources."inherits-2.0.4"
+        ];
+      })
       sources."events-3.3.0"
       sources."evp_bytestokey-1.0.3"
       (sources."hash-base-3.1.0"
         // {
-          dependencies = [
-            sources."inherits-2.0.4"
-            sources."readable-stream-3.6.0"
-          ];
-        })
+        dependencies = [
+          sources."inherits-2.0.4"
+          sources."readable-stream-3.6.0"
+        ];
+      })
       (sources."hash.js-1.1.7"
         // {
-          dependencies = [
-            sources."inherits-2.0.4"
-          ];
-        })
+        dependencies = [
+          sources."inherits-2.0.4"
+        ];
+      })
       sources."hmac-drbg-1.0.1"
       sources."https-browserify-1.0.0"
       sources."ieee754-1.2.1"
@@ -1271,10 +1273,10 @@ in {
       sources."md5.js-1.3.5"
       (sources."miller-rabin-4.0.1"
         // {
-          dependencies = [
-            sources."bn.js-4.12.0"
-          ];
-        })
+        dependencies = [
+          sources."bn.js-4.12.0"
+        ];
+      })
       sources."minimalistic-assert-1.0.1"
       sources."minimalistic-crypto-utils-1.0.1"
       sources."node-gyp-build-4.5.0"
@@ -1289,10 +1291,10 @@ in {
       sources."process-nextick-args-2.0.1"
       (sources."public-encrypt-4.0.3"
         // {
-          dependencies = [
-            sources."bn.js-4.12.0"
-          ];
-        })
+        dependencies = [
+          sources."bn.js-4.12.0"
+        ];
+      })
       sources."punycode-1.4.1"
       sources."querystring-0.2.0"
       sources."querystring-es3-0.2.1"
@@ -1300,12 +1302,12 @@ in {
       sources."randomfill-1.0.4"
       (sources."readable-stream-2.3.7"
         // {
-          dependencies = [
-            sources."inherits-2.0.4"
-            sources."safe-buffer-5.1.2"
-            sources."string_decoder-1.1.1"
-          ];
-        })
+        dependencies = [
+          sources."inherits-2.0.4"
+          sources."safe-buffer-5.1.2"
+          sources."string_decoder-1.1.1"
+        ];
+      })
       sources."readline-sync-1.4.10"
       sources."ripemd160-2.0.2"
       sources."safe-buffer-5.2.1"
@@ -1323,17 +1325,17 @@ in {
       sources."tty-browserify-0.0.0"
       (sources."url-0.11.0"
         // {
-          dependencies = [
-            sources."punycode-1.3.2"
-          ];
-        })
+        dependencies = [
+          sources."punycode-1.3.2"
+        ];
+      })
       sources."utf-8-validate-5.0.9"
       (sources."util-0.11.1"
         // {
-          dependencies = [
-            sources."inherits-2.0.3"
-          ];
-        })
+        dependencies = [
+          sources."inherits-2.0.3"
+        ];
+      })
       sources."util-deprecate-1.0.2"
       sources."vm-browserify-1.1.2"
       sources."which-1.3.1"
diff --git a/user/prefect.nix b/user/prefect.nix
index 23a44ab3..e6aada55 100644
--- a/user/prefect.nix
+++ b/user/prefect.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   imports = [
     ./settings/base.nix
diff --git a/user/satoshipad.nix b/user/satoshipad.nix
index eeaf0c75..d3f24fb0 100644
--- a/user/satoshipad.nix
+++ b/user/satoshipad.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   imports = [
     ../private
@@ -37,9 +36,9 @@
   xsession.windowManager.i3 = {
     config = {
       startup = [
-        {command = "firefox-devedition";}
-        {command = "ripcord";}
-        {command = "emacs";}
+        { command = "firefox-devedition"; }
+        { command = "ripcord"; }
+        { command = "emacs"; }
       ];
     };
     extraConfig = ''
diff --git a/user/server.nix b/user/server.nix
index 61ef71e8..83c70ca0 100644
--- a/user/server.nix
+++ b/user/server.nix
@@ -1,8 +1,7 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
+{ config
+, lib
+, pkgs
+, ...
 }:
 with lib; {
   imports = [
diff --git a/user/settings/accounting.nix b/user/settings/accounting.nix
index 903d6aa9..664ca083 100644
--- a/user/settings/accounting.nix
+++ b/user/settings/accounting.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     ledger
diff --git a/user/settings/base.nix b/user/settings/base.nix
index 7c785681..b8e95425 100644
--- a/user/settings/base.nix
+++ b/user/settings/base.nix
@@ -1,8 +1,7 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
+{ config
+, lib
+, pkgs
+, ...
 }: {
   imports = [
     ./neovim.nix
diff --git a/user/settings/chat.nix b/user/settings/chat.nix
index f44b2508..cc70d9c1 100644
--- a/user/settings/chat.nix
+++ b/user/settings/chat.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     signal-desktop
diff --git a/user/settings/darwin.nix b/user/settings/darwin.nix
index c7404ee0..740b4314 100644
--- a/user/settings/darwin.nix
+++ b/user/settings/darwin.nix
@@ -1,14 +1,14 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   nixpkgs.overlays = [
     (self: super: {
       darwin-zsh-completions =
-        super.runCommand "darwin-zsh-completions-0.0.0" {
-          preferLocalBuild = true;
-        } ''
+        super.runCommand "darwin-zsh-completions-0.0.0"
+          {
+            preferLocalBuild = true;
+          } ''
           mkdir -p $out/share/zsh/site-functions
           cat <<-'EOF' > $out/share/zsh/site-functions/_darwin-rebuild
           #compdef darwin-rebuild
@@ -36,7 +36,7 @@
         '';
     })
   ];
-  home.packages = with pkgs; [darwin-zsh-completions];
+  home.packages = with pkgs; [ darwin-zsh-completions ];
 
   programs.emacs.package = pkgs.emacs;
 
diff --git a/user/settings/development/base.nix b/user/settings/development/base.nix
index 96429c1d..97658768 100644
--- a/user/settings/development/base.nix
+++ b/user/settings/development/base.nix
@@ -1,8 +1,7 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
+{ config
+, lib
+, pkgs
+, ...
 }: {
   home.packages = with pkgs;
     [
@@ -29,7 +28,7 @@
     );
   nixpkgs.overlays = [
     (self: super: {
-      ripgrep = super.ripgrep.override {withPCRE2 = true;};
+      ripgrep = super.ripgrep.override { withPCRE2 = true; };
     })
   ];
 }
diff --git a/user/settings/development/clojure.nix b/user/settings/development/clojure.nix
index a5d6ceae..0358e8da 100644
--- a/user/settings/development/clojure.nix
+++ b/user/settings/development/clojure.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     clojure
diff --git a/user/settings/development/javascript.nix b/user/settings/development/javascript.nix
index 692995e7..6421c8b3 100644
--- a/user/settings/development/javascript.nix
+++ b/user/settings/development/javascript.nix
@@ -1,10 +1,11 @@
-{
-  config,
-  pkgs,
-  ...
-}: let
+{ config
+, pkgs
+, ...
+}:
+let
   nodejs = pkgs.nodejs-18_x;
-in {
+in
+{
   nixpkgs.overlays = [
     (self: super: {
       node2nixPackages = super.callPackage ../../packages/node2nix {
@@ -14,21 +15,21 @@ in {
   ];
   home.packages =
     (with pkgs;
-      [
-        nodejs
+    [
+      nodejs
+    ]
+    ++ (
+      if stdenv.isDarwin
+      then [
+      ]
+      else [
+        # npm install may use any of these
+        binutils
+        gnumake
+        gcc
+        python2
       ]
-      ++ (
-        if stdenv.isDarwin
-        then [
-        ]
-        else [
-          # npm install may use any of these
-          binutils
-          gnumake
-          gcc
-          python2
-        ]
-      ))
+    ))
     ++ (with pkgs.nodePackages; [
       node2nix
       nodemon
diff --git a/user/settings/development/lisp.nix b/user/settings/development/lisp.nix
index 7a55c41c..9ad918d2 100644
--- a/user/settings/development/lisp.nix
+++ b/user/settings/development/lisp.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     ccl
diff --git a/user/settings/development/rust.nix b/user/settings/development/rust.nix
index 16a50b41..46f3f4f1 100644
--- a/user/settings/development/rust.nix
+++ b/user/settings/development/rust.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     cargo
diff --git a/user/settings/development/web.nix b/user/settings/development/web.nix
index 64502198..4bd6630f 100644
--- a/user/settings/development/web.nix
+++ b/user/settings/development/web.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs.nodePackages;
     [
diff --git a/user/settings/development/zig.nix b/user/settings/development/zig.nix
index 69c2ea80..e5fab030 100644
--- a/user/settings/development/zig.nix
+++ b/user/settings/development/zig.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   programs.emacs.extraPackages = epkgs: (with epkgs; [
     zig-mode
diff --git a/user/settings/dunst.nix b/user/settings/dunst.nix
index 0232d47f..ae003f1e 100644
--- a/user/settings/dunst.nix
+++ b/user/settings/dunst.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   services.dunst = {
     enable = true;
diff --git a/user/settings/emacs.nix b/user/settings/emacs.nix
index fd3909fe..73673e53 100644
--- a/user/settings/emacs.nix
+++ b/user/settings/emacs.nix
@@ -1,9 +1,9 @@
-{
-  config,
-  pkgs,
-  lib,
-  ...
-}: let
+{ config
+, pkgs
+, lib
+, ...
+}:
+let
   inherit (pkgs) stdenv;
 
   editorScript = pkgs.writeScriptBin "edit" ''
@@ -32,14 +32,15 @@
       Keywords=Text;Editor;
     '';
   };
-in {
+in
+{
   imports = [
     ../modules/eshell.nix
   ];
 
   programs.emacs = {
     enable = true;
-    package = lib.mkDefault (pkgs.emacsNativeComp.override {withGTK3 = true;});
+    package = lib.mkDefault (pkgs.emacsNativeComp.override { withGTK3 = true; });
     eshell = {
       aliases = {
         pk = "eshell-up-pk $1";
diff --git a/user/settings/gaming.nix b/user/settings/gaming.nix
index 0c5c9b58..745c1a3e 100644
--- a/user/settings/gaming.nix
+++ b/user/settings/gaming.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     wineWowPackages.stable
diff --git a/user/settings/git.nix b/user/settings/git.nix
index 7a0c35da..6936de4d 100644
--- a/user/settings/git.nix
+++ b/user/settings/git.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     gitAndTools.git-extras
diff --git a/user/settings/gnupg.nix b/user/settings/gnupg.nix
index 7f96223c..913b5d27 100644
--- a/user/settings/gnupg.nix
+++ b/user/settings/gnupg.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.file.".gnupg" = {
     recursive = true;
diff --git a/user/settings/golang.nix b/user/settings/golang.nix
index 5e84488c..a07b7559 100644
--- a/user/settings/golang.nix
+++ b/user/settings/golang.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     go
diff --git a/user/settings/i3.nix b/user/settings/i3.nix
index 5443d1d6..6265e764 100644
--- a/user/settings/i3.nix
+++ b/user/settings/i3.nix
@@ -1,202 +1,203 @@
-{
-  config,
-  pkgs,
-  lib,
-  ...
+{ config
+, pkgs
+, lib
+, ...
 }: {
   xdg.configFile.i3status = {
     recursive = true;
     source = ../i3/i3status;
   };
-  xsession.windowManager.i3 = let
-    mod = "Mod4";
-    mode_system = "System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown";
-    locker = "${pkgs.xautolock}/bin/xautolock -locknow";
-  in {
-    enable = true;
-    config = {
-      modifier = mod;
-      assigns = {
-        "1" = [{class = "^Ripcord$";}];
-        "3" = [{class = "^Firefox Developer Edition$";}];
-        "8" = [{class = "^Emacs$";}];
-        "9" = [{class = "\.exe$";}];
-        "10" = [{class = "^Barrier$";}];
-      };
-      floating = {
-        criteria = [
-          {class = "Pinentry$";}
-          # https://github.com/ValveSoftware/steam-for-linux/issues/1040
-          {
-            class = "^Steam$";
-            title = "^Friends$";
-          }
-          {
-            class = "^Steam$";
-            title = "Steam - News";
-          }
-          {
-            class = "^Steam$";
-            title = ".* - Chat";
-          }
-          {
-            class = "^Steam$";
-            title = "^Settings$";
-          }
-          {
-            class = "^Steam$";
-            title = ".* - event started";
-          }
-          {
-            class = "^Steam$";
-            title = ".* CD key";
-          }
-          {
-            class = "^Steam$";
-            title = "^Steam - Self Updater$";
-          }
-          {
-            class = "^Steam$";
-            title = "^Screenshot Uploader$";
-          }
+  xsession.windowManager.i3 =
+    let
+      mod = "Mod4";
+      mode_system = "System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown";
+      locker = "${pkgs.xautolock}/bin/xautolock -locknow";
+    in
+    {
+      enable = true;
+      config = {
+        modifier = mod;
+        assigns = {
+          "1" = [{ class = "^Ripcord$"; }];
+          "3" = [{ class = "^Firefox Developer Edition$"; }];
+          "8" = [{ class = "^Emacs$"; }];
+          "9" = [{ class = "\.exe$"; }];
+          "10" = [{ class = "^Barrier$"; }];
+        };
+        floating = {
+          criteria = [
+            { class = "Pinentry$"; }
+            # https://github.com/ValveSoftware/steam-for-linux/issues/1040
+            {
+              class = "^Steam$";
+              title = "^Friends$";
+            }
+            {
+              class = "^Steam$";
+              title = "Steam - News";
+            }
+            {
+              class = "^Steam$";
+              title = ".* - Chat";
+            }
+            {
+              class = "^Steam$";
+              title = "^Settings$";
+            }
+            {
+              class = "^Steam$";
+              title = ".* - event started";
+            }
+            {
+              class = "^Steam$";
+              title = ".* CD key";
+            }
+            {
+              class = "^Steam$";
+              title = "^Steam - Self Updater$";
+            }
+            {
+              class = "^Steam$";
+              title = "^Screenshot Uploader$";
+            }
+            {
+              class = "^Steam$";
+              title = "^Steam Guard - Computer Authorization Required$";
+            }
+            { title = "^Steam Keyboard$"; }
+          ];
+        };
+        window = {
+          titlebar = false;
+        };
+        keybindings = {
+          "${mod}+Return" = "exec --no-startup-id ${config.home.sessionVariables.TERMINAL}";
+          # kill focused window
+          "${mod}+w" = "kill";
+          "${mod}+Shift+w" = "kill";
+
+          "${mod}+Mod1+r" = "exec rofi -show run";
+          "${mod}+space" = "exec \"rofi -show drun\"";
+
+          # change focus
+          "${mod}+h" = "focus left";
+          "${mod}+j" = "focus down";
+          "${mod}+k" = "focus up";
+          "${mod}+l" = "focus right";
+
+          "${mod}+grave" = "workspace 0";
+          "${mod}+1" = "workspace 1";
+          "${mod}+2" = "workspace 2";
+          "${mod}+3" = "workspace 3";
+          "${mod}+4" = "workspace 4";
+          "${mod}+5" = "workspace 5";
+          "${mod}+6" = "workspace 6";
+          "${mod}+7" = "workspace 7";
+          "${mod}+8" = "workspace 8";
+          "${mod}+9" = "workspace 9";
+          "${mod}+0" = "workspace 10";
+
+          # move focused window
+          "${mod}+Shift+h" = "move left";
+          "${mod}+Shift+j" = "move down";
+          "${mod}+Shift+k" = "move up";
+          "${mod}+Shift+l" = "move right";
+
+          "${mod}+Shift+grave" = "move container to workspace 0";
+          "${mod}+Shift+1" = "move container to workspace 1";
+          "${mod}+Shift+2" = "move container to workspace 2";
+          "${mod}+Shift+3" = "move container to workspace 3";
+          "${mod}+Shift+4" = "move container to workspace 4";
+          "${mod}+Shift+5" = "move container to workspace 5";
+          "${mod}+Shift+6" = "move container to workspace 6";
+          "${mod}+Shift+7" = "move container to workspace 7";
+          "${mod}+Shift+8" = "move container to workspace 8";
+          "${mod}+Shift+9" = "move container to workspace 9";
+          "${mod}+Shift+0" = "move container to workspace 10";
+
+          # move workspace
+          "${mod}+Mod1+h" = "move workspace to output left";
+          "${mod}+Mod1+j" = "move workspace to output down";
+          "${mod}+Mod1+k" = "move workspace to output up";
+          "${mod}+Mod1+l" = "move workspace to output right";
+
+          # split in horizontal orientation
+          "${mod}+b" = "split h";
+
+          # split in vertical orientation
+          "${mod}+v" = "split v";
+
+          "${mod}+F11" = "fullscreen toggle";
+          "${mod}+f" = "fullscreen toggle";
+
+          # change container layout (stacked, tabbed, toggle split)
+          "${mod}+Shift+s" = "layout stacking";
+          "${mod}+Shift+t" = "layout tabbed";
+          "${mod}+Shift+v" = "layout toggle split";
+
+          # toggle tiling / floating
+          "${mod}+Shift+f" = "floating toggle";
+
+          # change focus between tiling / floating windows
+          "${mod}+Tab" = "focus mode_toggle";
+
+          # focus the parent container
+          "${mod}+a" = "focus parent";
+
+          # focus the child container
+          "${mod}+d" = "focus child";
+
+          "${mod}+Shift+c" = "reload";
+          "${mod}+Shift+p" = "restart";
+
+          "${mod}+Shift+r" = "mode resize";
+          "${mod}+Shift+o" = "exec ${locker}";
+          "${mod}+Pause" = "mode \"${mode_system}\"";
+          "${mod}+Escape" = "mode \"${mode_system}\"";
+          "${mod}+Shift+q" = "mode \"${mode_system}\"";
+        };
+
+        modes = {
+          resize = {
+            "h" = "resize shrink width 10 px or 10 ppt";
+            "j" = "resize grow height 10 px or 10 ppt";
+            "k" = "resize shrink height 10 px or 10 ppt";
+            "l" = "resize grow width 10 px or 10 ppt";
+
+            "Left" = "resize shrink width 10 px or 10 ppt";
+            "Down" = "resize grow height 10 px or 10 ppt";
+            "Up" = "resize shrink height 10 px or 10 ppt";
+            "Right" = "resize grow width 10 px or 10 ppt";
+
+            "Return" = "mode default";
+            "Escape" = "mode default";
+          };
+          "${mode_system}" = {
+            "l" = "exec --no-startup-id ${locker}, mode default";
+            "e" = "exec --no-startup-id i3-msg exit, mode default";
+            "s" = "exec --no-startup-id systemctl suspend, mode default";
+            "h" = "exec --no-startup-id systemctl hibernate, mode default";
+            "r" = "exec --no-startup-id systemctl reboot, mode default";
+            "Shift+s" = "exec --no-startup-id systemctl poweroff -i, mode default";
+            "Return" = "mode default";
+            "Escape" = "mode default";
+          };
+        };
+
+        bars = [
           {
-            class = "^Steam$";
-            title = "^Steam Guard - Computer Authorization Required$";
+            position = "top";
+            hiddenState = "show";
+            statusCommand = "${pkgs.i3status}/bin/i3status -c ~/.config/i3status/config";
+            extraConfig = ''
+              font -xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1
+            '';
           }
-          {title = "^Steam Keyboard$";}
         ];
       };
-      window = {
-        titlebar = false;
-      };
-      keybindings = {
-        "${mod}+Return" = "exec --no-startup-id ${config.home.sessionVariables.TERMINAL}";
-        # kill focused window
-        "${mod}+w" = "kill";
-        "${mod}+Shift+w" = "kill";
-
-        "${mod}+Mod1+r" = "exec rofi -show run";
-        "${mod}+space" = "exec \"rofi -show drun\"";
-
-        # change focus
-        "${mod}+h" = "focus left";
-        "${mod}+j" = "focus down";
-        "${mod}+k" = "focus up";
-        "${mod}+l" = "focus right";
-
-        "${mod}+grave" = "workspace 0";
-        "${mod}+1" = "workspace 1";
-        "${mod}+2" = "workspace 2";
-        "${mod}+3" = "workspace 3";
-        "${mod}+4" = "workspace 4";
-        "${mod}+5" = "workspace 5";
-        "${mod}+6" = "workspace 6";
-        "${mod}+7" = "workspace 7";
-        "${mod}+8" = "workspace 8";
-        "${mod}+9" = "workspace 9";
-        "${mod}+0" = "workspace 10";
-
-        # move focused window
-        "${mod}+Shift+h" = "move left";
-        "${mod}+Shift+j" = "move down";
-        "${mod}+Shift+k" = "move up";
-        "${mod}+Shift+l" = "move right";
-
-        "${mod}+Shift+grave" = "move container to workspace 0";
-        "${mod}+Shift+1" = "move container to workspace 1";
-        "${mod}+Shift+2" = "move container to workspace 2";
-        "${mod}+Shift+3" = "move container to workspace 3";
-        "${mod}+Shift+4" = "move container to workspace 4";
-        "${mod}+Shift+5" = "move container to workspace 5";
-        "${mod}+Shift+6" = "move container to workspace 6";
-        "${mod}+Shift+7" = "move container to workspace 7";
-        "${mod}+Shift+8" = "move container to workspace 8";
-        "${mod}+Shift+9" = "move container to workspace 9";
-        "${mod}+Shift+0" = "move container to workspace 10";
-
-        # move workspace
-        "${mod}+Mod1+h" = "move workspace to output left";
-        "${mod}+Mod1+j" = "move workspace to output down";
-        "${mod}+Mod1+k" = "move workspace to output up";
-        "${mod}+Mod1+l" = "move workspace to output right";
-
-        # split in horizontal orientation
-        "${mod}+b" = "split h";
-
-        # split in vertical orientation
-        "${mod}+v" = "split v";
-
-        "${mod}+F11" = "fullscreen toggle";
-        "${mod}+f" = "fullscreen toggle";
-
-        # change container layout (stacked, tabbed, toggle split)
-        "${mod}+Shift+s" = "layout stacking";
-        "${mod}+Shift+t" = "layout tabbed";
-        "${mod}+Shift+v" = "layout toggle split";
-
-        # toggle tiling / floating
-        "${mod}+Shift+f" = "floating toggle";
-
-        # change focus between tiling / floating windows
-        "${mod}+Tab" = "focus mode_toggle";
-
-        # focus the parent container
-        "${mod}+a" = "focus parent";
-
-        # focus the child container
-        "${mod}+d" = "focus child";
-
-        "${mod}+Shift+c" = "reload";
-        "${mod}+Shift+p" = "restart";
-
-        "${mod}+Shift+r" = "mode resize";
-        "${mod}+Shift+o" = "exec ${locker}";
-        "${mod}+Pause" = "mode \"${mode_system}\"";
-        "${mod}+Escape" = "mode \"${mode_system}\"";
-        "${mod}+Shift+q" = "mode \"${mode_system}\"";
-      };
 
-      modes = {
-        resize = {
-          "h" = "resize shrink width 10 px or 10 ppt";
-          "j" = "resize grow height 10 px or 10 ppt";
-          "k" = "resize shrink height 10 px or 10 ppt";
-          "l" = "resize grow width 10 px or 10 ppt";
-
-          "Left" = "resize shrink width 10 px or 10 ppt";
-          "Down" = "resize grow height 10 px or 10 ppt";
-          "Up" = "resize shrink height 10 px or 10 ppt";
-          "Right" = "resize grow width 10 px or 10 ppt";
-
-          "Return" = "mode default";
-          "Escape" = "mode default";
-        };
-        "${mode_system}" = {
-          "l" = "exec --no-startup-id ${locker}, mode default";
-          "e" = "exec --no-startup-id i3-msg exit, mode default";
-          "s" = "exec --no-startup-id systemctl suspend, mode default";
-          "h" = "exec --no-startup-id systemctl hibernate, mode default";
-          "r" = "exec --no-startup-id systemctl reboot, mode default";
-          "Shift+s" = "exec --no-startup-id systemctl poweroff -i, mode default";
-          "Return" = "mode default";
-          "Escape" = "mode default";
-        };
-      };
-
-      bars = [
-        {
-          position = "top";
-          hiddenState = "show";
-          statusCommand = "${pkgs.i3status}/bin/i3status -c ~/.config/i3status/config";
-          extraConfig = ''
-            font -xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1
-          '';
-        }
-      ];
+      extraConfig = ''
+        font -xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1
+      '';
     };
-
-    extraConfig = ''
-      font -xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1
-    '';
-  };
 }
diff --git a/user/settings/ledger.nix b/user/settings/ledger.nix
index b0fe9ef9..8d4b5632 100644
--- a/user/settings/ledger.nix
+++ b/user/settings/ledger.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.file.".ledgerrc".text = ''
     --date-format %F
diff --git a/user/settings/mail.nix b/user/settings/mail.nix
index b3f288fb..3009114c 100644
--- a/user/settings/mail.nix
+++ b/user/settings/mail.nix
@@ -1,8 +1,7 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
+{ config
+, lib
+, pkgs
+, ...
 }: {
   home.packages = [
     pkgs.html2text
diff --git a/user/settings/music-management.nix b/user/settings/music-management.nix
index 043bafe8..07e5486b 100644
--- a/user/settings/music-management.nix
+++ b/user/settings/music-management.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     (beets.override {
diff --git a/user/settings/music.nix b/user/settings/music.nix
index 43940755..340e4b90 100644
--- a/user/settings/music.nix
+++ b/user/settings/music.nix
@@ -1,18 +1,17 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     sonixd
-    (tauon.override {withDiscordRPC = true;})
+    (tauon.override { withDiscordRPC = true; })
   ];
 
   xdg.desktopEntries.sonixd = {
     name = "sonixd";
     exec = "sonixd";
     comment = "Sonixd Music Player";
-    categories = ["Audio" "AudioVideo"];
+    categories = [ "Audio" "AudioVideo" ];
     genericName = "Music Player";
   };
 }
diff --git a/user/settings/neovim.nix b/user/settings/neovim.nix
index 59c75a91..ceae1f62 100644
--- a/user/settings/neovim.nix
+++ b/user/settings/neovim.nix
@@ -1,8 +1,7 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
+{ config
+, lib
+, pkgs
+, ...
 }: {
   programs.neovim = {
     enable = true;
diff --git a/user/settings/nix.nix b/user/settings/nix.nix
index 4d313624..c0dfe9c5 100644
--- a/user/settings/nix.nix
+++ b/user/settings/nix.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   nixpkgs.config = import ../config.nix;
   home.packages = with pkgs; [
diff --git a/user/settings/nixos.nix b/user/settings/nixos.nix
index 50e38e89..62f18f96 100644
--- a/user/settings/nixos.nix
+++ b/user/settings/nixos.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   imports = [
     ./nix.nix
diff --git a/user/settings/nixpkgs.nix b/user/settings/nixpkgs.nix
index ee993bd5..9f8af5c8 100644
--- a/user/settings/nixpkgs.nix
+++ b/user/settings/nixpkgs.nix
@@ -1,18 +1,19 @@
-{
-  config,
-  pkgs,
-  ...
-}: let
+{ config
+, pkgs
+, ...
+}:
+let
   inherit (pkgs) stdenv;
   stableConfig = config.nixpkgs.config;
-in {
+in
+{
   imports = [
     ./nix.nix
   ];
   nixpkgs.overlays = [
     (self: super: {
-      firefox-bin-unwrapped = super.firefox-bin-unwrapped.override {systemLocale = "en-GB";};
-      firefox-devedition-bin-unwrapped = super.firefox-devedition-bin-unwrapped.override {systemLocale = "en-GB";};
+      firefox-bin-unwrapped = super.firefox-bin-unwrapped.override { systemLocale = "en-GB"; };
+      firefox-devedition-bin-unwrapped = super.firefox-devedition-bin-unwrapped.override { systemLocale = "en-GB"; };
     })
   ];
 }
diff --git a/user/settings/passwords.nix b/user/settings/passwords.nix
index ff78281c..cfa17287 100644
--- a/user/settings/passwords.nix
+++ b/user/settings/passwords.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.packages = with pkgs; [
     keepassxc
diff --git a/user/settings/rofi.nix b/user/settings/rofi.nix
index d62ea7cf..c0c6990d 100644
--- a/user/settings/rofi.nix
+++ b/user/settings/rofi.nix
@@ -1,8 +1,7 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
+{ config
+, lib
+, pkgs
+, ...
 }: {
   xdg.configFile."networkmanager-dmenu/config.ini".text = ''
     [dmenu]
diff --git a/user/settings/satoshipay.nix b/user/settings/satoshipay.nix
index b93d7eee..03aa1cd0 100644
--- a/user/settings/satoshipay.nix
+++ b/user/settings/satoshipay.nix
@@ -1,14 +1,15 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}: let
+{ config
+, lib
+, pkgs
+, ...
+}:
+let
   inherit (pkgs) stdenv;
   spGitConfig = {
     user.email = "alan@satoshipay.io";
   };
-in {
+in
+{
   imports = [
     ./development/javascript.nix
     ./development/web.nix
@@ -18,33 +19,33 @@ in {
     KUBECTX_IGNORE_FZF = "1";
   };
   home.packages = with pkgs; ([
-      caddy
-      openssl
-      mongodb-tools
-      pgcli
-      pgformatter
-      postgresql
-      s3cmd
-      sops
+    caddy
+    openssl
+    mongodb-tools
+    pgcli
+    pgformatter
+    postgresql
+    s3cmd
+    sops
 
-      lumen
+    lumen
 
-      mkcert
-      google-cloud-sdk
-      doctl
-      kubectl
-      kubetail
-      kubectx
-      kubernetes-helm
-      helmfile
-    ]
-    ++ (lib.optionals (!stdenv.isDarwin)
-      [
-        docker-compose
+    mkcert
+    google-cloud-sdk
+    doctl
+    kubectl
+    kubetail
+    kubectx
+    kubernetes-helm
+    helmfile
+  ]
+  ++ (lib.optionals (!stdenv.isDarwin)
+    [
+      docker-compose
 
-        ripcord
-        robo3t
-      ]));
+      ripcord
+      robo3t
+    ]));
   programs.emacs.extraPackages = epkgs: (with epkgs; [
     docker-compose-mode
     dockerfile-mode
@@ -97,36 +98,38 @@ in {
     '';
   };
 
-  accounts.email.accounts.satoshipay = let
-    address = "alan@satoshipay.io";
-  in {
-    inherit address;
-    primary = lib.mkDefault true;
-    realName = "Alan Pearce";
-    flavor = "gmail.com";
-    passwordCommand = "${pkgs.python3Packages.keyring}/bin/keyring get satoshipay-google-mail ${address}";
-    folders = {
-      inbox = "INBOX";
-      drafts = "[Gmail]/Drafts";
-      sent = "[Gmail]/Sent Mail";
-      trash = "[Gmail]/Bin";
-    };
-    imap = {
-      tls.enable = true;
-    };
-    smtp = {
-      tls.enable = true;
-    };
-    mbsync = {
-      enable = true;
-      create = "maildir";
-      remove = "maildir";
-      expunge = "both";
-    };
-    msmtp = {
-      enable = true;
+  accounts.email.accounts.satoshipay =
+    let
+      address = "alan@satoshipay.io";
+    in
+    {
+      inherit address;
+      primary = lib.mkDefault true;
+      realName = "Alan Pearce";
+      flavor = "gmail.com";
+      passwordCommand = "${pkgs.python3Packages.keyring}/bin/keyring get satoshipay-google-mail ${address}";
+      folders = {
+        inbox = "INBOX";
+        drafts = "[Gmail]/Drafts";
+        sent = "[Gmail]/Sent Mail";
+        trash = "[Gmail]/Bin";
+      };
+      imap = {
+        tls.enable = true;
+      };
+      smtp = {
+        tls.enable = true;
+      };
+      mbsync = {
+        enable = true;
+        create = "maildir";
+        remove = "maildir";
+        expunge = "both";
+      };
+      msmtp = {
+        enable = true;
+      };
     };
-  };
 
   home.file.".npmrc".text = ''
     @satoshipay:registry=https://registry.npmjs.org/
diff --git a/user/settings/ssh.nix b/user/settings/ssh.nix
index 0ccc9796..38a47fad 100644
--- a/user/settings/ssh.nix
+++ b/user/settings/ssh.nix
@@ -1,8 +1,7 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
+{ config
+, lib
+, pkgs
+, ...
 }: {
   programs.ssh = {
     enable = true;
diff --git a/user/settings/sxhkd.nix b/user/settings/sxhkd.nix
index 83033cc8..75ce0798 100644
--- a/user/settings/sxhkd.nix
+++ b/user/settings/sxhkd.nix
@@ -1,13 +1,14 @@
-{
-  config,
-  pkgs,
-  ...
-}: let
+{ config
+, pkgs
+, ...
+}:
+let
   pamixer = "${pkgs.pamixer}/bin/pamixer";
   light = "${pkgs.light}/bin/light";
   playerctl = "${pkgs.playerctl}/bin/playerctl";
   networkmanager_dmenu = "${pkgs.networkmanager_dmenu}/bin/networkmanager_dmenu";
-in {
+in
+{
   xdg.configFile."sxhkd/sxhkdrc".text = ''
     XF86AudioMute
       ${pamixer} --toggle-mute
diff --git a/user/settings/tabnine.nix b/user/settings/tabnine.nix
index 02f0e071..4b812cb6 100644
--- a/user/settings/tabnine.nix
+++ b/user/settings/tabnine.nix
@@ -1,9 +1,8 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
-  imports = [../modules/tabnine.nix];
+  imports = [ ../modules/tabnine.nix ];
   home.packages = with pkgs; [
     tabnine
   ];
@@ -28,7 +27,7 @@
       tabnine_cloud_certificate_domain = null;
       tabnine_cloud_host = null;
       tabnine_cloud_port = null;
-      cloud_whitelist = [];
+      cloud_whitelist = [ ];
       api_key = null;
       api_key_service_level = null;
       api_base_url = null;
@@ -46,35 +45,35 @@
     lspConfig = {
       "language.typescript" = {
         command = "typescript-language-server";
-        args = ["--stdio"];
+        args = [ "--stdio" ];
       };
       "language.javascript" = {
         command = "javascript-typescript-stdio";
-        args = ["--stdio"];
+        args = [ "--stdio" ];
       };
       "language.css" = {
         command = "css-languageserver";
-        args = ["--stdio"];
+        args = [ "--stdio" ];
       };
       "language.scss" = {
         command = "css-languageserver";
-        args = ["--stdio"];
+        args = [ "--stdio" ];
       };
       "language.html" = {
         command = "html-languageserver";
-        args = ["--stdio"];
+        args = [ "--stdio" ];
       };
       "language.dockerfile" = {
         command = "docker-langserver";
-        args = ["--stdio"];
+        args = [ "--stdio" ];
       };
       "language.yaml" = {
         command = "yaml-language-server";
-        args = ["--stdio"];
+        args = [ "--stdio" ];
       };
       "language.haskell" = {
         command = "hie";
-        args = ["--stdio"];
+        args = [ "--stdio" ];
       };
       "language.go" = {
         command = "go-langserver";
diff --git a/user/settings/trezor.nix b/user/settings/trezor.nix
index 3211bb42..6996d9b0 100644
--- a/user/settings/trezor.nix
+++ b/user/settings/trezor.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.file.".ssh/agent.config" = {
     text = ''
diff --git a/user/settings/user-interface.nix b/user/settings/user-interface.nix
index af432a91..4f392377 100644
--- a/user/settings/user-interface.nix
+++ b/user/settings/user-interface.nix
@@ -1,18 +1,19 @@
-{
-  config,
-  pkgs,
-  ...
-}: let
+{ config
+, pkgs
+, ...
+}:
+let
   inherit (pkgs) stdenv;
-in {
+in
+{
   home.sessionVariables = {
     TERMINAL = "xterm";
   };
 
   programs.keychain = {
     enable = true;
-    extraFlags = ["--quiet" "--systemd"];
-    keys = [];
+    extraFlags = [ "--quiet" "--systemd" ];
+    keys = [ ];
   };
 
   nixpkgs.config.librewolf = {
diff --git a/user/settings/xresources.nix b/user/settings/xresources.nix
index 3481962d..14d2b4fc 100644
--- a/user/settings/xresources.nix
+++ b/user/settings/xresources.nix
@@ -1,7 +1,6 @@
-{
-  config,
-  pkgs,
-  ...
+{ config
+, pkgs
+, ...
 }: {
   home.file.".xresources" = {
     recursive = true;
diff --git a/user/settings/zsh.nix b/user/settings/zsh.nix
index 7dffecb4..88004637 100644
--- a/user/settings/zsh.nix
+++ b/user/settings/zsh.nix
@@ -1,9 +1,9 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}: let
+{ config
+, lib
+, pkgs
+, ...
+}:
+let
   inherit (pkgs) stdenv;
   lsOptions =
     if stdenv.isDarwin
@@ -19,7 +19,7 @@
     src = stdenv.mkDerivation {
       inherit (attrs) src;
       name = "zsh-plugin-${attrs.name}";
-      buildInputs = [pkgs.zsh];
+      buildInputs = [ pkgs.zsh ];
       buildPhase = ''
         zsh -c 'for f in **/*.zsh; zcompile "$f"'
       '';
@@ -28,7 +28,8 @@
       '';
     };
   };
-in {
+in
+{
   home.packages = with pkgs; [
     fzf
     ghq