diff --git a/modules/darwin/community-builder/default.nix b/modules/darwin/community-builder/default.nix
index cdb1bfb..e0d3067 100644
--- a/modules/darwin/community-builder/default.nix
+++ b/modules/darwin/community-builder/default.nix
@@ -13,6 +13,14 @@
 
   environment.etc.motd.text = config.nixCommunity.motd;
 
+  programs.bash.enable = true;
+
+  environment.shells = [
+    pkgs.bashInteractive
+    pkgs.fish
+    pkgs.zsh
+  ];
+
   environment.systemPackages = [
     pkgs.vim
   ];
diff --git a/modules/darwin/community-builder/users.nix b/modules/darwin/community-builder/users.nix
index 4654e38..444e065 100644
--- a/modules/darwin/community-builder/users.nix
+++ b/modules/darwin/community-builder/users.nix
@@ -1,3 +1,4 @@
+{ pkgs, ... }:
 let
   # To add yourself:
   # 1. Add an entry to this list, using the next UID.
@@ -329,7 +330,7 @@ in
         inherit (u) uid;
         home = "/Users/${u.name}";
         createHome = true;
-        shell = "/bin/zsh";
+        shell = u.shell or "/bin/zsh";
         openssh.authorizedKeys.keyFiles = [ u.keys ];
       };
     }) users
diff --git a/modules/nixos/community-builder/default.nix b/modules/nixos/community-builder/default.nix
index 8c65080..93315dc 100644
--- a/modules/nixos/community-builder/default.nix
+++ b/modules/nixos/community-builder/default.nix
@@ -26,10 +26,6 @@
     withUtempter = false;
   };
 
-  programs.fish.enable = true;
-  # disable generated completion
-  environment.etc."fish/generated_completions".text = pkgs.lib.mkForce "";
-
   systemd.services.nixpkgs-clone = {
     serviceConfig.Type = "oneshot";
     startAt = "daily";
diff --git a/modules/nixos/community-builder/users.nix b/modules/nixos/community-builder/users.nix
index cfde12f..a54b5dc 100644
--- a/modules/nixos/community-builder/users.nix
+++ b/modules/nixos/community-builder/users.nix
@@ -1,4 +1,4 @@
-{ pkgs, ... }:
+{ config, pkgs, ... }:
 let
   inherit (pkgs) lib;
 
@@ -190,6 +190,7 @@ let
     extraGroups = userGroups opts;
     createHome = true;
     home = "/home/${name}";
+    shell = opts.shell or config.users.defaultUserShell;
     hashedPassword = opts.password or null;
     openssh.authorizedKeys.keyFiles = [ opts.keys ];
   };
diff --git a/modules/shared/community-builder.nix b/modules/shared/community-builder.nix
index 63a352e..7aeba95 100644
--- a/modules/shared/community-builder.nix
+++ b/modules/shared/community-builder.nix
@@ -30,6 +30,8 @@
 
     programs.nix-index-database.comma.enable = true;
 
+    programs.fish.enable = true;
+
     programs.zsh = {
       enable = true;
       # https://grml.org/zsh/grmlzshrc.html