{ config , pkgs , ... }: { nixpkgs.overlays = [ (self: super: { darwin-zsh-completions = super.runCommand "darwin-zsh-completions-0.0.0" { preferLocalBuild = true; } '' mkdir -p $out/share/zsh/site-functions cat <<-'EOF' > $out/share/zsh/site-functions/_darwin-rebuild #compdef darwin-rebuild #autoload _nix-common-options local -a _1st_arguments _1st_arguments=( 'switch:Build, activate, and update the current generation'\ 'build:Build without activating or updating the current generation'\ 'check:Build and run the activation sanity checks'\ 'changelog:Show most recent entries in the changelog'\ ) _arguments \ '--list-generations[Print a list of all generations in the active profile]'\ '--rollback[Roll back to the previous configuration]'\ {--switch-generation,-G}'[Activate specified generation]'\ '(--profile-name -p)'{--profile-name,-p}'[Profile to use to track current and previous system configurations]:Profile:_nix_profiles'\ '1:: :->subcmds' && return 0 case $state in subcmds) _describe -t commands 'darwin-rebuild subcommands' _1st_arguments ;; esac EOF ''; }) ]; home.packages = with pkgs; [ darwin-zsh-completions ]; programs.emacs.package = pkgs.emacs; home.file.".hushlogin".text = ""; launchd.agents = { home-manager-expire-generations = { enable = true; config = { ProgramArguments = [ "${pkgs.home-manager}/bin/home-manager" "expire-generations" "-30 days" ]; KeepAlive = false; RunAtLoad = false; StartCalendarInterval = [{ Hour = 12; Minute = 00; Weekday = 6; # Saturday }]; ProcessType = "Background"; LowPriorityBackgroundIO = true; }; }; set-xdg-cache-home = { enable = true; config = { ProgramArguments = [ "/bin/launchctl" "setenv" "XDG_CACHE_HOME" config.xdg.cacheHome ]; RunAtLoad = true; StandardErrorPath = "/dev/null"; StandardOutputPath = "/dev/null"; }; }; dark-light-mode = { enable = true; config = { WatchPaths = [ "${config.home.homeDirectory}/Library/Preferences/.GlobalPreferences.plist" ]; ProgramArguments = [ "/bin/sh" ( toString ( pkgs.writeShellScript "toggle-dark-light-mode" '' if defaults read -g AppleInterfaceStyle &>/dev/null ; then MODE="dark" else MODE="light" fi emacsSwitchTheme () { if pgrep -q Emacs; then if [[ $MODE == "dark" ]]; then emacsclient --eval "(modus-themes-load-theme (cadr modus-themes-to-toggle))" elif [[ $MODE == "light" ]]; then emacsclient --eval "(modus-themes-load-theme (car modus-themes-to-toggle))" fi fi } emacsSwitchTheme $@ '' ) ) ]; }; }; }; programs.zsh.shellAliases = { da = "darwin-rebuild"; das = "darwin-rebuild switch"; drill = "command dig +noall +answer"; dig = "dig +noall +answer"; }; programs.zsh.envExtra = '' SHELL_SESSIONS_DISABLE=1 path+=($HOME/Library/Python/3.9/bin) ''; programs.ssh.extraConfig = '' IdentityAgent /Users/alan/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh ''; # Use GPG from GPGTools programs.git.signing.gpgPath = "/usr/local/bin/gpg"; }