{ config, lib, pkgs, ... }: with lib; let cfg = config.programs.zsh.oh-my-zsh; in { options = { programs.zsh.oh-my-zsh = { enable = mkEnableOption "oh-my-zsh"; plugins = mkOption { default = []; example = [ "git" "sudo" ]; type = types.listOf types.str; description = '' List of oh-my-zsh plugins ''; }; custom = mkOption { default = ""; type = types.str; example = "$HOME/my_customizations"; description = '' Path to a custom oh-my-zsh package to override config of oh-my-zsh. See: https://github.com/robbyrussell/oh-my-zsh/wiki/Customization ''; }; theme = mkOption { default = ""; example = "robbyrussell"; type = types.str; description = '' Name of the theme to be used by oh-my-zsh. ''; }; }; }; config = mkIf cfg.enable { home.packages = [ pkgs.oh-my-zsh ]; programs.zsh.initExtra = with pkgs; '' # oh-my-zsh configuration generated by NixOS export ZSH=${oh-my-zsh}/share/oh-my-zsh ${optionalString (cfg.plugins != []) "plugins=(${concatStringsSep " " cfg.plugins})" } ${optionalString (cfg.custom != "") "ZSH_CUSTOM=\"${cfg.custom}\"" } ${optionalString (cfg.theme != "") "ZSH_THEME=\"${cfg.theme}\"" } source $ZSH/oh-my-zsh.sh ''; }; }