Files
dart/flake.nix
2026-02-16 12:47:22 -07:00

166 lines
3.1 KiB
Nix

{
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
thc-hydra
john
exploitdb
rustscan
recon-ng
vectorscan
];
# 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"
"claude-code"
"flutter"
"ghostty"
"librewolf"
"ngrok"
"pearcleaner"
"zulu@17"
];
};
programs.zsh.enable = true;
system.stateVersion = 6;
}
];
};
devShells.${system} = {
default = pkgs.mkShell {
packages = allPackages;
};
};
};
}