{ config, lib, pkgs, ... }: { home.packages = with pkgs; [ darwin.trash coreutils-prefixed less ]; targets.darwin.linkApps.enable = false; targets.darwin.copyApps = { enable = true; }; home.file.".hushlogin".text = ""; programs.emacs = let useMacPort = false; in { package = if useMacPort then pkgs.emacs-macport else pkgs.emacs; extraPackages = ( epkgs: lib.lists.optionals useMacPort [ epkgs.ultra-scroll ] ); extraConfig = '' (with-eval-after-load 'dired (setq insert-directory-program "gls" dired-use-ls-dired t)) '' + ( if useMacPort then '' (use-package ultra-scroll :config (progn (setq scroll-conservatively 3 scroll-margin 0) (ultra-scroll-mode +1))) '' else '' (use-package pixel-scroll :config (progn (setq pixel-scroll-precision-use-momentum t) (pixel-scroll-precision-mode 1))) '' ); }; programs.fish.plugins = map (lib.getAttrs [ "name" "src" ]) [ pkgs.fishPlugins.macos ]; launchd.agents = { home-manager-expire-generations = { enable = true; config = { ProgramArguments = [ "${pkgs.home-manager}/bin/home-manager" "expire-generations" "-14 days" ]; KeepAlive = false; RunAtLoad = false; StartCalendarInterval = [ { Hour = 12; Minute = 0; Weekday = 6; # Saturday } ]; ProcessType = "Background"; LowPriorityBackgroundIO = true; }; }; setenv = { enable = true; config = { ProgramArguments = [ "/bin/launchctl" "setenv" "XDG_CACHE_HOME" config.xdg.cacheHome "SSH_AUTH_SOCK" config.home.sessionVariables.SSH_AUTH_SOCK ]; RunAtLoad = true; StandardErrorPath = "/dev/null"; StandardOutputPath = "/dev/null"; }; }; set-terminal-theme = { enable = true; config = { WatchPaths = [ "${config.home.homeDirectory}/Library/Preferences/.GlobalPreferences.plist" ]; RunAtLoad = true; KeepAlive = false; ProgramArguments = [ "/usr/bin/osascript" (toString ../../scripts/terminal/set-terminal-theme.applescript) ]; }; }; }; home.shellAliases = { rb = "darwin-rebuild"; srb = "sudo darwin-rebuild"; rbs = "sudo darwin-rebuild switch --flake '.?submodules=1'"; dig = "dig +noall +answer"; stat = "/usr/bin/stat -x"; # avoids breakage when in a nix shell (which implicitly adds coreutils) }; home.sessionVariables = { SSH_AUTH_SOCK = "${config.home.homeDirectory}/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh"; }; programs.ssh.extraConfig = '' IdentityAgent ~/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh ''; }