{ 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}"; }; }