{ description = "dart — system configuration via nix-darwin"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nix-darwin = { url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; }; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, nix-darwin, rust-overlay }: let system = "aarch64-darwin"; pkgs = import nixpkgs { inherit system; overlays = [ rust-overlay.overlays.default ]; config.allowUnfree = true; }; rustToolchain = pkgs.rust-bin.stable.latest.default.override { extensions = [ "rust-src" "rust-analyzer" ]; targets = [ "aarch64-apple-darwin" ]; }; # CLI cliTools = with pkgs; [ # Editors helix micro lazygit ripgrep # Build/dev tools fnm cmake ninja gradle # Network netcat-gnu # Misc bitwarden-cli pwgen qrencode sl upx wakeonlan magic-wormhole httpie gh doctl qemu ]; # Languages languages = with pkgs; [ rustToolchain python313 openjdk openjdk17 lua luajit perl ruby go ]; # Media media = with pkgs; [ ffmpeg tesseract tectonic ]; # Security security = with pkgs; [ nmap nikto john rustscan ]; # Networking networking = with pkgs; [ freerdp openmpi ]; allPackages = cliTools ++ languages ++ media ++ security ++ networking; in { darwinConfigurations."dart" = nix-darwin.lib.darwinSystem { inherit system; modules = [ { nix.settings = { experimental-features = [ "nix-command" "flakes" ]; }; nixpkgs = { hostPlatform = system; config.allowUnfree = true; overlays = [ rust-overlay.overlays.default ]; }; environment.systemPackages = allPackages; homebrew = { enable = true; onActivation = { autoUpdate = true; cleanup = "zap"; }; brews = [ "gamdl" "knock" "snort" ]; casks = [ "android-platform-tools" "flutter" "ghostty" "librewolf" "ngrok" "pearcleaner" "zulu@17" ]; }; programs.zsh.enable = true; system.primaryUser = "atridad"; system.stateVersion = 6; } ]; }; devShells.${system} = { default = pkgs.mkShell { packages = allPackages; }; }; }; }