diff --git a/hosts/zilch/default.nix b/hosts/zilch/default.nix
index b04731de..1637499a 100755
--- a/hosts/zilch/default.nix
+++ b/hosts/zilch/default.nix
@@ -90,6 +90,7 @@
       fonts.enable = true;
       files.enable = true;
       graphics = {
+        enable = true;
         raster.enable = true;
         vector.enable = true;
         _3d.enable = true;
@@ -123,6 +124,10 @@
       };
       math.enable = true;
       perl.enable = true;
+      perl = {
+        enable = true;
+        raku.enable = true;
+      };
       python = {
         enable = true;
         math.enable = true;
diff --git a/modules/desktop/audio.nix b/modules/desktop/audio.nix
index 64b64554..35c29281 100755
--- a/modules/desktop/audio.nix
+++ b/modules/desktop/audio.nix
@@ -5,7 +5,8 @@
 
 with lib;
 
-let cfg = config.modules.desktop.audio;
+let
+  cfg = config.modules.desktop.audio;
 in {
   options.modules.desktop.audio = let
     mkBoolDefault = bool:
diff --git a/modules/desktop/browsers.nix b/modules/desktop/browsers.nix
index d6022dd2..f8c6a12d 100755
--- a/modules/desktop/browsers.nix
+++ b/modules/desktop/browsers.nix
@@ -3,7 +3,8 @@
 
 with lib;
 
-let cfg = config.modules.desktop.browsers;
+let
+  cfg = config.modules.desktop.browsers;
 in {
   options.modules.desktop.browsers = let
     mkBoolDefault = bool:
diff --git a/modules/desktop/cad.nix b/modules/desktop/cad.nix
index 5d3b8865..363a0e55 100755
--- a/modules/desktop/cad.nix
+++ b/modules/desktop/cad.nix
@@ -1,7 +1,11 @@
 # Even if my designs are computer-aided, it's still horrible. :(
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.desktop.cad;
+in {
   options.modules.desktop.cad = {
     enable = mkOption {
       type = types.bool;
@@ -9,7 +13,7 @@ with lib; {
     };
   };
 
-  config = mkIf config.modules.desktop.cad.enable {
+  config = mkIf cfg.enable {
     my.packages = with pkgs; [
       freecad # FREE AS A BIRD, FREE AS A ALL-YOU-CAN-EAT BUFFER!
       #kicad         # The CAD for ki which is a form of energy found everywhere.
diff --git a/modules/desktop/files.nix b/modules/desktop/files.nix
index 1e693d62..bae64d22 100755
--- a/modules/desktop/files.nix
+++ b/modules/desktop/files.nix
@@ -3,7 +3,8 @@
 
 with lib;
 
-let cfg = config.modules.desktop.files;
+let
+  cfg = config.modules.desktop.files;
 in {
   options.modules.desktop.files = {
     enable = mkOption {
diff --git a/modules/desktop/fonts.nix b/modules/desktop/fonts.nix
index 0d3a5cbf..7a9269bd 100755
--- a/modules/desktop/fonts.nix
+++ b/modules/desktop/fonts.nix
@@ -1,7 +1,11 @@
 # My selection of fonts for this setup.
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.desktop.fonts;
+in {
   options.modules.desktop.fonts = {
     enable = mkOption {
       type = types.bool;
@@ -9,7 +13,7 @@ with lib; {
     };
   };
 
-  config = mkIf config.modules.desktop.fonts.enable {
+  config = mkIf cfg.enable {
     # Enable fontconfig to easily discover fonts installed from home-manager.
     fonts = {
       fontDir.enable = true;
diff --git a/modules/desktop/graphics.nix b/modules/desktop/graphics.nix
index 817c53c1..a47d85db 100755
--- a/modules/desktop/graphics.nix
+++ b/modules/desktop/graphics.nix
@@ -4,7 +4,8 @@
 
 with lib;
 
-let cfg = config.modules.desktop.graphics;
+let
+  cfg = config.modules.desktop.graphics;
 in {
   options.modules.desktop.graphics = let
     mkBoolDefault = bool:
@@ -13,13 +14,14 @@ in {
         default = bool;
       };
   in {
+    enable = mkBoolDefault false;
     programmable.enable = mkBoolDefault false;
     raster.enable = mkBoolDefault false;
     vector.enable = mkBoolDefault false;
     _3d.enable = mkBoolDefault false;
   };
 
-  config = {
+  config = mkIf cfg.enable {
     my.packages = with pkgs;
       [
         font-manager # Self-explanatory name is self-explanatory.
diff --git a/modules/desktop/multimedia.nix b/modules/desktop/multimedia.nix
index 592934d1..07b07e96 100755
--- a/modules/desktop/multimedia.nix
+++ b/modules/desktop/multimedia.nix
@@ -1,7 +1,11 @@
 # Muh consumer applications...
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.desktop.multimedia;
+in {
   options.modules.desktop.multimedia = {
     enable = mkOption {
       type = types.bool;
@@ -9,7 +13,7 @@ with lib; {
     };
   };
 
-  config = mkIf config.modules.desktop.multimedia.enable {
+  config = mkIf cfg.enable {
     my.packages = with pkgs; [
       ffmpeg # The ultimate multimedia toolkit for everybody!
       hexchat # The ultimate IRC client for neckbeards.
diff --git a/modules/desktop/research.nix b/modules/desktop/research.nix
index 6f5e24ac..b41f4e35 100755
--- a/modules/desktop/research.nix
+++ b/modules/desktop/research.nix
@@ -1,7 +1,11 @@
 # I'm not in academia but I like managing my library resources.
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.desktop.research;
+in {
   options.modules.desktop.research = {
     enable = mkOption {
       type = types.bool;
@@ -9,7 +13,7 @@ with lib; {
     };
   };
 
-  config = mkIf config.modules.desktop.research.enable {
+  config = mkIf cfg.enable {
     my.packages = with pkgs; [
       exiftool # A file metadata reader/writer/helicopter.
       zotero # An academic's best friend.
diff --git a/modules/dev/android.nix b/modules/dev/android.nix
index 9f376519..3513c038 100755
--- a/modules/dev/android.nix
+++ b/modules/dev/android.nix
@@ -1,7 +1,11 @@
 # Android is the mobile version of Linux.
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.dev.android;
+in {
   options.modules.dev.android = {
     enable = mkOption {
       type = types.bool;
@@ -9,7 +13,7 @@ with lib; {
     };
   };
 
-  config = mkIf config.modules.dev.android.enable {
+  config = mkIf cfg.enable {
     my.packages = with pkgs; [
       android-studio # The apartment for Android development.
       dart # It's JavaScript except saner and slimmer.
@@ -21,6 +25,9 @@ with lib; {
     # Enable Android Debug Bridge for some device debugging.
     programs.adb.enable = true;
 
+    # Install Anbox emulation.
+    virtualisation.anbox.enable = true;
+
     my.user.extraGroups = [ "adbusers" ];
   };
 }
diff --git a/modules/dev/base.nix b/modules/dev/base.nix
index 95ac859a..1bd330f4 100755
--- a/modules/dev/base.nix
+++ b/modules/dev/base.nix
@@ -1,7 +1,11 @@
 # The utmost requirements for a development workflow.
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.dev.base;
+in {
   options.modules.dev.base = {
     enable = mkOption {
       type = types.bool;
@@ -9,7 +13,7 @@ with lib; {
     };
   };
 
-  config = mkIf config.modules.dev.base.enable {
+  config = mkIf cfg.enable {
     my.packages = with pkgs; [
       caddy # THE ULTIMATE HTTPS/2 SERVER FOR 'YER GOLFIN' SESSIONS!!!
       cmake # Yo, I heard you like Makefiles.
diff --git a/modules/dev/cc.nix b/modules/dev/cc.nix
index b73d5396..3860bffd 100755
--- a/modules/dev/cc.nix
+++ b/modules/dev/cc.nix
@@ -1,7 +1,11 @@
 # My stuff for C and C++.
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.dev.cc;
+in {
   options.modules.dev.cc = {
     enable = mkOption {
       type = types.bool;
@@ -9,7 +13,7 @@ with lib; {
     };
   };
 
-  config = mkIf config.modules.dev.cc.enable {
+  config = mkIf cfg.enable {
     my.packages = with pkgs; [
       cmake # Yo dawg, I heard you like Make.
       # clang     # A C compiler frontend for LLVM.
diff --git a/modules/dev/data.nix b/modules/dev/data.nix
index 3a164c61..62b6d79a 100755
--- a/modules/dev/data.nix
+++ b/modules/dev/data.nix
@@ -2,6 +2,7 @@
 { config, options, lib, pkgs, ... }:
 
 with lib;
+
 let
   cfg = config.modules.dev.data;
 in {
diff --git a/modules/dev/documentation.nix b/modules/dev/documentation.nix
index 22452a97..eb68e21c 100755
--- a/modules/dev/documentation.nix
+++ b/modules/dev/documentation.nix
@@ -5,7 +5,8 @@
 
 with lib;
 
-let cfg = config.modules.dev.documentation;
+let
+  cfg = config.modules.dev.documentation;
 in {
   options.modules.dev.documentation = let
     mkBoolOption = bool:
diff --git a/modules/dev/gamedev.nix b/modules/dev/gamedev.nix
index 423d63f9..fe0f646f 100755
--- a/modules/dev/gamedev.nix
+++ b/modules/dev/gamedev.nix
@@ -4,7 +4,8 @@
 
 with lib;
 
-let cfg = config.modules.dev.game-dev;
+let
+  cfg = config.modules.dev.game-dev;
 in {
   options.modules.dev.game-dev = let
     mkBoolOption = bool:
diff --git a/modules/dev/go.nix b/modules/dev/go.nix
index e2e81b1e..29ec15d7 100755
--- a/modules/dev/go.nix
+++ b/modules/dev/go.nix
@@ -3,7 +3,8 @@
 
 with lib;
 
-let cfg = config.modules.dev.go;
+let
+  cfg = config.modules.dev.go;
 in {
   options.modules.dev.go = {
     enable = mkOption {
diff --git a/modules/dev/java.nix b/modules/dev/java.nix
index a654a731..bfce3796 100755
--- a/modules/dev/java.nix
+++ b/modules/dev/java.nix
@@ -4,7 +4,8 @@
 
 with lib;
 
-let cfg = config.modules.dev.java;
+let
+  cfg = config.modules.dev.java;
 in {
   options.modules.dev.java = {
     enable = mkOption {
diff --git a/modules/dev/lisp.nix b/modules/dev/lisp.nix
index 773222cc..64ceca60 100755
--- a/modules/dev/lisp.nix
+++ b/modules/dev/lisp.nix
@@ -5,7 +5,8 @@
 
 with lib;
 
-let cfg = config.modules.dev.lisp;
+let
+  cfg = config.modules.dev.lisp;
 in {
   options.modules.dev.lisp = let
     mkBoolDefault = bool:
diff --git a/modules/dev/math.nix b/modules/dev/math.nix
index 21c130c2..63af244c 100755
--- a/modules/dev/math.nix
+++ b/modules/dev/math.nix
@@ -3,7 +3,8 @@
 
 with lib;
 
-let cfg = config.modules.dev.math;
+let
+  cfg = config.modules.dev.math;
 in {
   options.modules.dev.math = let
     mkEnableOption = mkOption {
diff --git a/modules/dev/perl.nix b/modules/dev/perl.nix
index d7ff6647..55904fdd 100755
--- a/modules/dev/perl.nix
+++ b/modules/dev/perl.nix
@@ -3,6 +3,7 @@
 
 with lib;
 let
+  cfg = config.modules.dev.perl;
   perlWithPackages = pkgs.perl.withPackages (p:
     with pkgs.perlPackages; [
       ModuleBuild
@@ -16,8 +17,16 @@ in {
       type = types.bool;
       default = false;
     };
+
+    raku.enable = mkOption {
+      type = types.bool;
+      default = false;
+    };
   };
 
-  config =
-    mkIf config.modules.dev.perl.enable { my.packages = [ perlWithPackages ]; };
+  config = mkIf cfg.enable {
+    my.packages = [ perlWithPackages ]
+    ++ (if cfg.raku.enable then [
+      rakudo
+    ] else []); };
 }
diff --git a/modules/dev/python.nix b/modules/dev/python.nix
index 187fd574..b277b0f6 100755
--- a/modules/dev/python.nix
+++ b/modules/dev/python.nix
@@ -5,7 +5,8 @@
 
 with lib;
 
-let cfg = config.modules.dev.python;
+let
+  cfg = config.modules.dev.python;
 in {
   options.modules.dev.python = let
     mkBoolOption = bool:
diff --git a/modules/dev/rust.nix b/modules/dev/rust.nix
index f8884caa..3c36b69d 100755
--- a/modules/dev/rust.nix
+++ b/modules/dev/rust.nix
@@ -4,7 +4,8 @@
 
 with lib;
 
-let cfg = config.modules.dev.rust;
+let
+  cfg = config.modules.dev.rust;
 in {
   options.modules.dev.rust = {
     enable = mkOption {
diff --git a/modules/dev/vcs.nix b/modules/dev/vcs.nix
index 4dfed03d..f00d911e 100755
--- a/modules/dev/vcs.nix
+++ b/modules/dev/vcs.nix
@@ -3,7 +3,8 @@
 
 with lib;
 
-let cfg = config.modules.dev.vcs;
+let
+  cfg = config.modules.dev.vcs;
 in {
   options.modules.dev.vcs = {
     enable = mkOption {
diff --git a/modules/dev/web.nix b/modules/dev/web.nix
index 9e02fbe7..a5b26556 100755
--- a/modules/dev/web.nix
+++ b/modules/dev/web.nix
@@ -5,7 +5,9 @@
 { config, options, lib, pkgs, ... }:
 
 with lib;
-let cfg = config.modules.dev.web;
+
+let
+  cfg = config.modules.dev.web;
 in {
   options.modules.dev.web = let
     mkBoolOption = bool:
diff --git a/modules/shell/base.nix b/modules/shell/base.nix
index 24584f3f..1dbc6750 100755
--- a/modules/shell/base.nix
+++ b/modules/shell/base.nix
@@ -1,7 +1,11 @@
 # Here are the base packages for my shell workflow.
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.shell.base;
+in {
   options.modules.shell.base = {
     enable = mkOption {
       type = types.bool;
@@ -9,7 +13,7 @@ with lib; {
     };
   };
 
-  config = mkIf config.modules.shell.base.enable {
+  config = mkIf cfg.enable {
     my.packages = with pkgs; [
       aria2 # The sequel to aria(1).
       aspell # Hunt down a spelling bee champion to come to your shell.
diff --git a/modules/shell/lf.nix b/modules/shell/lf.nix
index b21293de..fd45cdc5 100755
--- a/modules/shell/lf.nix
+++ b/modules/shell/lf.nix
@@ -1,7 +1,11 @@
 # A file manager for hipsters.
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.shell.lf;
+in {
   options.modules.shell.lf = {
     enable = mkOption {
       type = types.bool;
@@ -9,7 +13,7 @@ with lib; {
     };
   };
 
-  config = mkIf config.modules.shell.lf.enable {
+  config = mkIf cfg.enable {
     my.packages = with pkgs; [ lf ];
 
     my.home.xdg.configFile."lf" = {
diff --git a/modules/shell/zsh.nix b/modules/shell/zsh.nix
index b0018589..12a74801 100755
--- a/modules/shell/zsh.nix
+++ b/modules/shell/zsh.nix
@@ -1,7 +1,11 @@
 # The Zoomer shell is cool for them prompts.
 { config, options, lib, pkgs, ... }:
 
-with lib; {
+with lib;
+
+let
+  cfg = config.modules.shell.zsh;
+in {
   options.modules.shell.zsh = {
     enable = mkOption {
       type = types.bool;
@@ -10,7 +14,7 @@ with lib; {
   };
 
   # Going to use the home-manager module for zsh since it is cool.
-  config = mkIf config.modules.shell.zsh.enable {
+  config = mkIf cfg.enable {
     programs.zsh = {
       enable = true;
       enableCompletion = true;