Some checks failed
build / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
55 lines
1.8 KiB
Markdown
55 lines
1.8 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Project Overview
|
|
|
|
Nix flake providing custom packages not available in nixpkgs. Tracks `nixos-unstable`. Uses `config.allowUnfree = true`.
|
|
|
|
## Build Commands
|
|
|
|
```bash
|
|
# Build a specific package
|
|
nix build .#packages.x86_64-linux.<package-name>
|
|
|
|
# Build all packages (x86_64-linux)
|
|
./scripts/build-all.sh
|
|
|
|
# Validate flake
|
|
nix flake check
|
|
|
|
# Format nix files
|
|
nix fmt
|
|
|
|
# Lint nix files
|
|
statix check
|
|
|
|
# Update flake inputs
|
|
nix flake update
|
|
```
|
|
|
|
## Structure
|
|
|
|
- `flake.nix` — Defines all packages and per-package overlays. Packages are registered in `packages` and exposed via `overlays`.
|
|
- `pkgs/<name>/default.nix` — Individual package definitions, called via `pkgs.callPackage` (or `pkgs.qt6Packages.callPackage` for Qt packages).
|
|
- `scripts/` — Helper scripts (`build-all.sh`, `update-pob.sh`).
|
|
|
|
## Adding a New Package
|
|
|
|
1. Create `pkgs/<name>/default.nix` with the package derivation.
|
|
2. Add the package to `packages` in `flake.nix` via `callPackage`.
|
|
3. Add a per-package overlay in `flake.nix` `overlays` and include it in the `default` overlay if appropriate.
|
|
|
|
## Packaging Patterns Used
|
|
|
|
- **AppImage**: `appimageTools.wrapType2` (see `poe-sidekick`)
|
|
- **Electron/Yarn**: `yarnConfigHook` + `yarnBuildHook` + `fetchYarnDeps` (see `awakened-poe-trade`)
|
|
- **Qt6/Meson**: `qt6Packages.callPackage` + `wrapQtAppsHook` (see `path-of-building-*`)
|
|
- **Rust/Cargo**: `rustPlatform.buildRustPackage` (see `noita-entangled-worlds`)
|
|
- **Go**: `buildGoModule` (see `forgejo-mcp`)
|
|
- **Binary/.NET**: `fetchurl` + `makeWrapper` with `makeLibraryPath` (see `vintagestory`)
|
|
|
|
## Commit Style
|
|
|
|
Imperative, prefixed with package name when relevant: `poe-sidekick: add package`, `Bump entangled worlds`.
|