Add configs for a new kubernetes cluster on NixOS.
This commit is contained in:
117
nix/kubernetes/roles/zsh/default.nix
Normal file
117
nix/kubernetes/roles/zsh/default.nix
Normal file
@@ -0,0 +1,117 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
zshrc = pkgs.writeTextFile {
|
||||
name = ".zshrc";
|
||||
text = ''
|
||||
# Lines configured by zsh-newuser-install
|
||||
HISTFILE=~/.zhistory
|
||||
HISTSIZE=100000
|
||||
SAVEHIST=100000
|
||||
setopt appendhistory notify
|
||||
unsetopt beep
|
||||
bindkey -e
|
||||
# End of lines configured by zsh-newuser-install
|
||||
# The following lines were added by compinstall
|
||||
#
|
||||
|
||||
# Use menu complete immediately instead of after the first tab
|
||||
setopt MENU_COMPLETE
|
||||
|
||||
zstyle :compinstall filename "$HOME/.zshrc"
|
||||
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
# End of lines added by compinstall
|
||||
|
||||
# Enable the 2d menu for tab completion
|
||||
zstyle ':completion:*' menu select
|
||||
|
||||
autoload colors zsh/terminfo
|
||||
if [[ "$terminfo[colors]" -ge 8 ]]; then
|
||||
colors
|
||||
fi
|
||||
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
|
||||
eval PR_$color='%{$terminfo[bold]$fg[''${(L)color}]%}'
|
||||
eval PR_LIGHT_$color='%{$fg[''${(L)color}]%}'
|
||||
(( count = $count + 1 ))
|
||||
done
|
||||
PR_NO_COLOR="%{$terminfo[sgr0]%}"
|
||||
PS1="[$PR_BLUE%n$PR_WHITE@$PR_GREEN%U%m%u$PR_NO_COLOR:$PR_RED%2c$PR_NO_COLOR]%(!.#.$) "
|
||||
|
||||
source ${pkgs.zsh-histdb}/share/zsh/plugins/zsh-histdb/sqlite-history.zsh
|
||||
autoload -Uz add-zsh-hook
|
||||
|
||||
source ${pkgs.zsh-histdb}/share/zsh/plugins/zsh-histdb/histdb-interactive.zsh
|
||||
bindkey '^r' _histdb-isearch
|
||||
|
||||
${lib.concatMapStringsSep "\n" (item: "source ${item}") config.me.zsh.includes}
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [ ];
|
||||
|
||||
options.me = {
|
||||
zsh.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
example = true;
|
||||
description = "Whether we want to install zsh.";
|
||||
};
|
||||
zsh.includes = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [ ];
|
||||
example = lib.literalExpression ''
|
||||
[ (pkgs.writeTextFile {
|
||||
name = "launch-kanshi.conf";
|
||||
text = "exec kanshi";
|
||||
}) ]'';
|
||||
description = "List of zshrc files to import.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.me.zsh.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
zsh
|
||||
];
|
||||
|
||||
users.users.talexander.shell = pkgs.zsh;
|
||||
environment.shells = with pkgs; [ zsh ];
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
me.install.user.talexander.file = {
|
||||
".zshrc" = {
|
||||
source = "${zshrc}";
|
||||
};
|
||||
};
|
||||
|
||||
environment.persistence."/persist" = lib.mkIf (config.me.mountPersistence) {
|
||||
hideMounts = true;
|
||||
users.talexander = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".histdb";
|
||||
user = "talexander";
|
||||
group = "talexander";
|
||||
mode = "0700";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
zsh-histdb = (final.callPackage ./package/zsh-histdb/package.nix { });
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user