forked from mirrors/nixpkgs
1f70f3801b
Originially, `programs.zsh` sets default values for some initialisation scripts. Nix resolves the case of multiple values by concatenating them all. It is however impossible to predict where the default script will be inserted; but we never want the default value to override the user-specified ones. Now, it doesn't set default values; almost everything is hardcoded at the begining of the file.
71 lines
1.6 KiB
Nix
71 lines
1.6 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.programs.zsh.ohMyZsh;
|
|
in
|
|
{
|
|
options = {
|
|
programs.zsh.ohMyZsh = {
|
|
enable = mkOption {
|
|
default = false;
|
|
description = ''
|
|
Enable oh-my-zsh.
|
|
'';
|
|
};
|
|
|
|
plugins = mkOption {
|
|
default = [];
|
|
type = types.listOf(types.str);
|
|
description = ''
|
|
List of oh-my-zsh plugins
|
|
'';
|
|
};
|
|
|
|
custom = mkOption {
|
|
default = "";
|
|
type = types.str;
|
|
description = ''
|
|
Path to a custom oh-my-zsh package to override config of oh-my-zsh.
|
|
'';
|
|
};
|
|
|
|
theme = mkOption {
|
|
default = "";
|
|
type = types.str;
|
|
description = ''
|
|
Name of the theme to be used by oh-my-zsh.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
# Prevent zsh from overwriting oh-my-zsh's prompt
|
|
programs.zsh.promptInit = mkDefault "";
|
|
|
|
environment.systemPackages = with pkgs; [ oh-my-zsh ];
|
|
|
|
programs.zsh.interactiveShellInit = with pkgs; with builtins; ''
|
|
# oh-my-zsh configuration generated by NixOS
|
|
export ZSH=${oh-my-zsh}/share/oh-my-zsh
|
|
|
|
${optionalString (length(cfg.plugins) > 0)
|
|
"plugins=(${concatStringsSep " " cfg.plugins})"
|
|
}
|
|
|
|
${optionalString (stringLength(cfg.custom) > 0)
|
|
"ZSH_CUSTOM=\"${cfg.custom}\""
|
|
}
|
|
|
|
${optionalString (stringLength(cfg.theme) > 0)
|
|
"ZSH_THEME=\"${cfg.theme}\""
|
|
}
|
|
|
|
source $ZSH/oh-my-zsh.sh
|
|
'';
|
|
};
|
|
}
|