- Add PLAN.md with 40-step checklist across 10 phases - Add CLAUDE.md with project-specific instructions - Set up nix flake with FastHTML/MonsterUI dependencies - Create Python package skeleton (src/animaltrack) - Vendor FastHTML and MonsterUI documentation - Add Docker build configuration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
67 lines
1.5 KiB
Nix
67 lines
1.5 KiB
Nix
{ pkgs, pythonEnv, python }:
|
|
|
|
let
|
|
# Build animaltrack as a package
|
|
animaltrack = python.pkgs.buildPythonApplication {
|
|
pname = "animaltrack";
|
|
version = "0.1.0";
|
|
src = ./.;
|
|
format = "pyproject";
|
|
|
|
nativeBuildInputs = [ python.pkgs.setuptools ];
|
|
|
|
propagatedBuildInputs = [ pythonEnv ];
|
|
|
|
doCheck = false;
|
|
|
|
# Don't wrap, we'll handle PATH manually
|
|
dontWrapPythonPrograms = true;
|
|
};
|
|
in
|
|
pkgs.dockerTools.buildImage {
|
|
name = "gitea.v.paler.net/ppetru/animaltrack";
|
|
tag = "latest";
|
|
|
|
copyToRoot = pkgs.buildEnv {
|
|
name = "animaltrack-env";
|
|
paths = with pkgs; [
|
|
# System utilities
|
|
busybox
|
|
bash
|
|
sqlite
|
|
|
|
# Python environment with all packages
|
|
pythonEnv
|
|
|
|
# Animaltrack application
|
|
animaltrack
|
|
] ++ [
|
|
# Docker filesystem helpers
|
|
pkgs.dockerTools.usrBinEnv
|
|
pkgs.dockerTools.binSh
|
|
pkgs.dockerTools.fakeNss
|
|
pkgs.dockerTools.caCertificates
|
|
];
|
|
};
|
|
|
|
runAsRoot = ''
|
|
#!${pkgs.stdenv.shell}
|
|
mkdir -p -m 1777 /tmp
|
|
mkdir -p /var/lib/animaltrack
|
|
'';
|
|
|
|
config = {
|
|
Env = [
|
|
"DB_PATH=/var/lib/animaltrack/animaltrack.db"
|
|
"PATH=${pkgs.lib.makeBinPath [ pkgs.busybox pkgs.bash pkgs.sqlite pythonEnv ]}"
|
|
"PYTHONPATH=${pythonEnv}/${pythonEnv.sitePackages}"
|
|
"PYTHONUNBUFFERED=1"
|
|
];
|
|
ExposedPorts = {
|
|
"5000/tcp" = {};
|
|
};
|
|
Cmd = [ "sh" "-c" "animaltrack migrate && animaltrack serve" ];
|
|
WorkingDir = "/var/lib/animaltrack";
|
|
};
|
|
}
|