106 lines
2.9 KiB
Nix
106 lines
2.9 KiB
Nix
{
|
|
description = "My Nix flake for cross-platform development environment";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
snowfall-lib = {
|
|
url = "github:snowfallorg/lib";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
tmux = {
|
|
url = "github:jakehamilton/tmux";
|
|
};
|
|
};
|
|
|
|
outputs = inputs:
|
|
inputs.snowfall-lib.mkFlake {
|
|
inherit inputs;
|
|
src = ./.;
|
|
|
|
overlays = with inputs; [
|
|
tmux.overlay
|
|
];
|
|
|
|
# Build the package set for the homies environment
|
|
packages = {
|
|
homies = let
|
|
pkgs = import inputs.nixpkgs {
|
|
system = "aarch64-darwin"; # Default, will be overridden by system-specific builds
|
|
};
|
|
in
|
|
pkgs.buildEnv {
|
|
name = "homies";
|
|
paths = with pkgs; [
|
|
# Core tools
|
|
tmux
|
|
helix
|
|
zsh
|
|
git
|
|
openssh
|
|
|
|
# Terminal applications
|
|
alacritty
|
|
starship
|
|
htop
|
|
|
|
# Docker support
|
|
docker-client
|
|
docker-compose
|
|
|
|
# Programming languages and language servers (default always included)
|
|
odin
|
|
ols # Odin Language Server
|
|
harper # Harper Language Server
|
|
|
|
# Additional dev tools
|
|
gcc
|
|
gnumake
|
|
curl
|
|
wget
|
|
jq
|
|
ripgrep
|
|
findutils
|
|
|
|
# Language support packages (optional ones you can enable conditionally)
|
|
rustc # For enabling Rust support
|
|
rust-analyzer # For Rust LSP
|
|
python3 # For Python support
|
|
#python3Packages.pyright # For Python LSP
|
|
#nodejs # For JavaScript/TypeScript support
|
|
#nodePackages.typescript-language-server # For TS LSP
|
|
go # For Go support
|
|
gopls # For Go LSP
|
|
#openjdk # For Java support
|
|
#jdt.ls # For Java LSP
|
|
];
|
|
};
|
|
};
|
|
|
|
# System-specific configuration
|
|
systemConfigs = {
|
|
# x86_64-linux system config
|
|
"x86_64-linux" = { pkgs, ... }: {
|
|
# This is where you'd define system-specific configurations
|
|
# But in pure Nix, packages are handled through the packages attribute above
|
|
};
|
|
|
|
# aarch64-linux system config (ARM Mac/Linux)
|
|
"aarch64-linux" = { pkgs, ... }: {
|
|
};
|
|
|
|
# darwin (MacOS) system config
|
|
"aarch64-darwin" = { pkgs, ... }: {
|
|
};
|
|
|
|
# x86_64-darwin (Intel Mac) system config
|
|
"x86_64-darwin" = { pkgs, ... }: {
|
|
};
|
|
};
|
|
|
|
# Make the packages available in the flake
|
|
# This is what users will run to build/install homies
|
|
# nix build .#homies
|
|
# nix profile install .#homies
|
|
};
|
|
}
|