puzzlevision/modules/nixos/system/shell/default.nix

27 lines
652 B
Nix

{
lib,
pkgs,
self,
config,
...
}:
let
inherit (lib) mkEnableOption mkIf types;
inherit (self) namespace;
inherit (self.lib) mkOpt;
cfg = config.${namespace}.system.shell;
in
{
options.${namespace}.system.shell = {
enable = mkEnableOption "custom user shells.";
installed = mkOpt (types.listOf types.package) [ pkgs.fish ] "List of shell packages to install";
default = mkOpt types.str "fish" "Set a custom shell as the default for all users.";
};
config = mkIf cfg.enable {
environment.shells = cfg.installed;
users.defaultUserShell = pkgs.${cfg.default};
programs.${cfg.default}.enable = true;
};
}