Compare commits

...

7 Commits

Author SHA1 Message Date
208f792203 add CLAUDE.md
Some checks failed
build / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 02:11:53 +01:00
cace817c36 flake: include all packages in default overlay
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 02:11:31 +01:00
e20e91112f forgejo-mcp: add package
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 02:09:37 +01:00
d7005b4e1c flake: add devShell, fix overlays to use inherit
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 02:05:24 +01:00
19f42d0fa3 fix deprecation warnings in awakened-poe-trade and noita-entangled-worlds
awakened-poe-trade: replace xorg.libXtst/libXt with libxtst/libxt
noita-entangled-worlds: remove redundant useFetchCargoVendor

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 02:05:18 +01:00
a76effd096 flake: update nixpkgs, add formatter, run nix fmt
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 01:58:40 +01:00
d4c86b0417 vintagestory: replace deprecated xorg.* attrs with top-level equivalents
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 01:57:54 +01:00
8 changed files with 151 additions and 54 deletions

47
CLAUDE.md Normal file
View File

@@ -0,0 +1,47 @@
# 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
# 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` + `useFetchCargoVendor` (see `noita-entangled-worlds`)
- **Binary/.NET**: `fetchurl` + `makeWrapper` with `makeLibraryPath` (see `vintagestory`)
## Commit Style
Imperative, prefixed with package name when relevant: `poe-sidekick: add package`, `Bump entangled worlds`.

6
flake.lock generated
View File

@@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1743583204,
"narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
"lastModified": 1772963539,
"narHash": "sha256-9jVDGZnvCckTGdYT53d/EfznygLskyLQXYwJLKMPsZs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434",
"rev": "9dcb002ca1690658be4a04645215baea8b95f31d",
"type": "github"
},
"original": {

View File

@@ -27,30 +27,54 @@
{
overlays = {
default = final: prev: {
awakened-poe-trade = self.packages.${prev.system}.awakened-poe-trade;
path-of-building-beta = self.packages.${prev.system}.path-of-building-beta;
vintagestory-unstable = self.packages.${prev.system}.vintagestory-unstable;
inherit (self.packages.${prev.system})
awakened-poe-trade
path-of-building-beta
path-of-building-poe2
vintagestory-unstable
noita-entangled-worlds
poe-sidekick
poe-sidekick-web
forgejo-mcp
;
};
awakened-poe-trade = final: prev: {
awakened-poe-trade = self.packages.${prev.system}.awakened-poe-trade;
inherit (self.packages.${prev.system}) awakened-poe-trade;
};
path-of-building-beta = final: prev: {
awakened-poe-trade = self.packages.${prev.system}.path-of-building-beta;
inherit (self.packages.${prev.system}) path-of-building-beta;
};
vintagestory-unstable = final: prev: {
vintagestory-unstable = self.packages.${prev.system}.vintagestory-unstable;
inherit (self.packages.${prev.system}) vintagestory-unstable;
};
noita-entangled-worlds = final: prev: {
noita-entangled-worlds = self.packages.${prev.system}.noita-entangled-worlds;
inherit (self.packages.${prev.system}) noita-entangled-worlds;
};
poe-sidekick = final: prev: {
poe-sidekick = self.packages.${prev.system}.poe-sidekick;
inherit (self.packages.${prev.system}) poe-sidekick;
};
poe-sidekick-web = final: prev: {
poe-sidekick-web = self.packages.${prev.system}.poe-sidekick-web;
inherit (self.packages.${prev.system}) poe-sidekick-web;
};
forgejo-mcp = final: prev: {
inherit (self.packages.${prev.system}) forgejo-mcp;
};
};
formatter = forAllSystems ({ pkgs, ... }: pkgs.nixfmt-tree);
devShells = forAllSystems (
{ pkgs }:
{
default = pkgs.mkShell {
packages = [
pkgs.nixfmt-tree
pkgs.statix
];
};
}
);
packages = forAllSystems (
{ pkgs }:
{
@@ -61,6 +85,7 @@
noita-entangled-worlds = pkgs.callPackage ./pkgs/noita-entangled-worlds { };
poe-sidekick = pkgs.callPackage ./pkgs/poe-sidekick { };
poe-sidekick-web = pkgs.callPackage ./pkgs/poe-sidekick/web.nix { };
forgejo-mcp = pkgs.callPackage ./pkgs/forgejo-mcp { };
}
);
};

View File

@@ -10,7 +10,8 @@
libGL,
nodejs,
electron,
xorg,
libxtst,
libxt,
wayland,
libglvnd,
}:
@@ -114,8 +115,8 @@ stdenv.mkDerivation (finalAttrs: {
--set LD_LIBRARY_PATH "${
lib.makeLibraryPath [
libGL
xorg.libXtst
xorg.libXt
libxtst
libxt
wayland
libglvnd
]

View File

@@ -0,0 +1,27 @@
{
lib,
buildGoModule,
fetchFromGitea,
}:
buildGoModule rec {
pname = "forgejo-mcp";
version = "2.14.0";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "goern";
repo = "forgejo-mcp";
tag = "v${version}";
hash = "sha256-jjwzc9bnuOG5j9frOGmJYv7oOnXRpns8pknonDezHGQ=";
};
vendorHash = "sha256-j5o/FZBowQvcatw14Fvs/8CTM5ZtQR6kwlroctaeKuM=";
meta = {
description = "Model Context Protocol server and CLI for interacting with the Forgejo API";
homepage = "https://codeberg.org/goern/forgejo-mcp";
license = lib.licenses.mit;
mainProgram = "forgejo-mcp";
};
}

View File

@@ -27,7 +27,6 @@ let
sourceRoot = "${src.name}/noita-proxy";
useFetchCargoVendor = true;
cargoHash = "sha256-TzUS6d6PopgGf2i1yVaXaXdzNrvfSz+Gv67BAtxYmb4=";
buildInputs = [
gtk3

View File

@@ -64,7 +64,8 @@ stdenv.mkDerivation {
qttools
wrapQtAppsHook
icoutils
] ++ lib.optional stdenv.hostPlatform.isLinux copyDesktopItems;
]
++ lib.optional stdenv.hostPlatform.isLinux copyDesktopItems;
buildInputs = [
qtbase

View File

@@ -5,7 +5,9 @@
makeWrapper,
makeDesktopItem,
copyDesktopItems,
xorg,
libx11,
libxi,
libxcursor,
gtk2,
sqlite,
openal,
@@ -35,25 +37,21 @@ stdenv.mkDerivation rec {
buildInputs = [ dotnet-runtime_8 ];
runtimeLibs = lib.makeLibraryPath (
[
gtk2
sqlite
openal
cairo
libGLU
SDL2
freealut
libglvnd
pipewire
libpulseaudio
]
++ (with xorg; [
libX11
libXi
libXcursor
])
);
runtimeLibs = lib.makeLibraryPath [
gtk2
sqlite
openal
cairo
libGLU
SDL2
freealut
libglvnd
pipewire
libpulseaudio
libx11
libxi
libxcursor
];
desktopItems = [
(makeDesktopItem {
@@ -77,24 +75,23 @@ stdenv.mkDerivation rec {
runHook postInstall
'';
preFixup =
''
sed -i 's/net7.0/net8.0/' $out/share/vintagestory/Vintagestory.runtimeconfig.json
sed -i 's/7.0.0/8.0.11/' $out/share/vintagestory/Vintagestory.runtimeconfig.json
preFixup = ''
sed -i 's/net7.0/net8.0/' $out/share/vintagestory/Vintagestory.runtimeconfig.json
sed -i 's/7.0.0/8.0.11/' $out/share/vintagestory/Vintagestory.runtimeconfig.json
makeWrapper ${dotnet-runtime_8}/bin/dotnet $out/bin/vintagestory \
--prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
--add-flags $out/share/vintagestory/Vintagestory.dll
makeWrapper ${dotnet-runtime_8}/bin/dotnet $out/bin/vintagestory-server \
--prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
--add-flags $out/share/vintagestory/VintagestoryServer.dll
''
+ ''
find "$out/share/vintagestory/assets/" -not -path "*/fonts/*" -regex ".*/.*[A-Z].*" | while read -r file; do
local filename="$(basename -- "$file")"
ln -sf "$filename" "''${file%/*}"/"''${filename,,}"
done
'';
makeWrapper ${dotnet-runtime_8}/bin/dotnet $out/bin/vintagestory \
--prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
--add-flags $out/share/vintagestory/Vintagestory.dll
makeWrapper ${dotnet-runtime_8}/bin/dotnet $out/bin/vintagestory-server \
--prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
--add-flags $out/share/vintagestory/VintagestoryServer.dll
''
+ ''
find "$out/share/vintagestory/assets/" -not -path "*/fonts/*" -regex ".*/.*[A-Z].*" | while read -r file; do
local filename="$(basename -- "$file")"
ln -sf "$filename" "''${file%/*}"/"''${filename,,}"
done
'';
meta = with lib; {
description = "In-development indie sandbox game about innovation and exploration";