45 lines
1.2 KiB
Nix
45 lines
1.2 KiB
Nix
{ lib, pkgs, config, ... }:
|
|
|
|
let
|
|
username = config.users.users.defaultUser or "henrov";
|
|
homeDir = "/home/${username}";
|
|
programName = "zsh";
|
|
programAssets = ../../../assets/system/conf/${programName};
|
|
zshInitFile = "${programAssets}/zsh.conf";
|
|
in
|
|
{
|
|
#################################
|
|
# SYSTEM-WIDE INSTALLATION ONLY #
|
|
#################################
|
|
|
|
# Install Zsh and Oh-My-Zsh globally
|
|
environment.systemPackages = [
|
|
pkgs.zsh
|
|
pkgs.oh-my-zsh # this is the Nixpkgs oh-my-zsh package
|
|
];
|
|
|
|
#######################################
|
|
# USER-SPECIFIC CONFIGURATION (henrov)#
|
|
#######################################
|
|
|
|
# Copy a pre-built .zshrc into henrov's home
|
|
environment.etc."zshrc-${username}".text = ''
|
|
# Point Zsh to the Oh-My-Zsh installation in /run/current-system/sw
|
|
export ZSH=${pkgs.oh-my-zsh}/share/oh-my-zsh
|
|
ZSH_THEME="catppuccin-mocha"
|
|
plugins=(git docker direnv zsh-completions)
|
|
|
|
# Load oh-my-zsh
|
|
source $ZSH/oh-my-zsh.sh
|
|
|
|
# Inject custom zsh.conf
|
|
${builtins.readFile zshInitFile}
|
|
'';
|
|
|
|
# Symlink it to user's ~/.zshrc
|
|
users.users."${username}".shell = pkgs.zsh;
|
|
users.users."${username}".extraHomeFiles = {
|
|
".zshrc" = "/etc/zshrc-${username}";
|
|
};
|
|
}
|