{ config, pkgs, ... }: { users.users.michael = { home = "/Users/michael"; shell = pkgs.zsh; }; networking = { computerName = "neptune"; hostName = "neptune"; }; environment = { shells = with pkgs; [zsh]; variables = { EDITOR = "nvim"; VISUAL = "nvim"; }; systemPackages = with pkgs; [ # Containers colima unstable.docker-client unstable.docker-compose # Video ffmpeg # Spotify unstable.spicetify-cli # Java checkstyle # XCode cocoapods ]; }; programs = { zsh = { enable = true; # Make zsh installation work properly with macOS path loginShellInit = '' if [ -x /usr/libexec/path_helper ]; then eval `/usr/libexec/path_helper -s` fi ''; }; }; security.pam.enableSudoTouchIdAuth = true; services = { nix-daemon.enable = true; }; homebrew = { enable = true; onActivation = { # Auto update packages autoUpdate = true; # Uninstall not listed packages and casks cleanup = "zap"; # Upgrade outdated formulae on activation upgrade = true; }; casks = [ "hiddenbar" "android-platform-tools" ]; }; nixpkgs = { # Workaround for pyopenssl being marked broken config.allowBroken = true; }; nix = { package = pkgs.nix; gc = { automatic = true; interval.Day = 7; options = "--delete-older-than 7d"; }; extraOptions = '' auto-optimise-store = true experimental-features = nix-command flakes ''; settings.auto-optimise-store = false; }; system = { # Since it's not possible to declare default shell, run this command after build activationScripts.postActivation.text = ''sudo chsh -s ${pkgs.zsh}/bin/zsh''; stateVersion = 4; }; }