{ pkgs, ... }: { imports = [ ./apps.nix ./system.nix ]; networking.hostName = "poppy"; # Локальное короткое имя pi -> 127.0.0.1 для pi-web. # Запуск: npm exec @agegr/pi-web@latest --hostname 0.0.0.0 --port 30141 # Ссылка: http://pi:30141 # (networking.hosts в nix-darwin отсутствует; /etc/hosts правится # идемпотентно через extraActivation — один из хуков, реально # вызываемых в activate-скрипте.) system.activationScripts.extraActivation.text = '' if ! grep -qE '^[0-9.]+[[:space:]]+pi($|[[:space:]])' /etc/hosts; then printf '127.0.0.1\tpi # pi-web local alias\n' >> /etc/hosts fi ''; system.primaryUser = "mikl"; system.stateVersion = 7; nixpkgs.config.allowUnfree = true; nix.enable = false; # Автоматический сбор мусора: удалять пути старше 14 дней, по ночам в 3:00. # nix.gc не работает с nix.enable=false, поэтому launchd-агент напрямую. launchd.user.agents.nix-gc = { serviceConfig = { Label = "local.nix.gc"; ProgramArguments = [ "/nix/var/nix/profiles/default/bin/nix-collect-garbage" "--delete-older-than" "14d" ]; StartCalendarInterval = { Weekday = 0; Hour = 3; }; StandardOutPath = "/tmp/nix-gc.log"; StandardErrorPath = "/tmp/nix-gc.log"; }; }; users.users.mikl = { home = "/Users/mikl"; shell = pkgs.zsh; }; environment.systemPackages = [ pkgs.vim pkgs.android-tools ]; # Apply default apps via duti on activation system.activationScripts.defaultApps.text = '' if [ -f "/Users/mikl/.config/duti/config" ]; then ${pkgs.duti}/bin/duti -d /Users/mikl/.config/duti/config || true fi ''; home-manager.users.mikl = { imports = [ ../../home/kitty.nix ../../home/duti.nix ]; programs.zsh.shellAliases = { switch = "darwin-rebuild switch --flake .#poppy"; update = "nix flake update && darwin-rebuild switch --flake .#poppy"; cleanup = "nix-collect-garbage -d"; }; }; }