protestswap/flake.nix

108 lines
3.3 KiB
Nix
Raw Permalink Normal View History

2025-10-13 17:32:48 +02:00
{
description = "Flake using pyproject.toml metadata";
2025-10-14 00:01:19 +02:00
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
2025-10-15 21:41:56 +02:00
pyproject-nix = {
url = "github:pyproject-nix/pyproject.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
2025-10-14 00:01:19 +02:00
flake-utils.url = "github:numtide/flake-utils";
};
2025-10-13 17:32:48 +02:00
2025-10-14 00:01:19 +02:00
outputs = {
self,
nixpkgs,
flake-utils,
...
2025-10-15 21:41:56 +02:00
}@inputs: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
project = inputs.pyproject-nix.lib.project.loadPyproject {
projectRoot = ./.;
};
projectName = project.pyproject.project.name;
python = pkgs.python3;
2025-10-13 17:32:48 +02:00
2025-10-19 22:31:59 +02:00
inswapperModel = pkgs.stdenv.mkDerivation {
name = "inswapper_128";
2025-10-15 21:41:56 +02:00
src = pkgs.fetchurl {
url = "https://huggingface.co/thebiglaskowski/inswapper_128.onnx/resolve/main/inswapper_128.onnx";
hash = "sha256-5KPwjHU8ty0E4Qqg99vj3uu/OVZ9Tq1tzgjpiqSeFq8=";
2025-10-13 17:32:48 +02:00
};
2025-10-19 22:31:59 +02:00
phases = [ "installPhase" ];
2025-10-15 21:41:56 +02:00
2025-10-19 22:31:59 +02:00
installPhase = ''
mkdir -p "$out/var/lib/insightface/models/"
cp $src "$out/var/lib/insightface/models/inswapper_128.onnx"
2025-10-15 21:41:56 +02:00
'';
};
2025-10-19 22:31:59 +02:00
buffaloModel = pkgs.stdenv.mkDerivation {
name = "buffalo_l_Model";
src = pkgs.fetchurl {
url = "https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip";
hash = "sha256-gP/jfYpZQNWac4TCAaKjjUdB8vPFHu9G67KCGKewyi8=";
};
2025-10-15 21:41:56 +02:00
2025-10-19 22:31:59 +02:00
unpackPhase = /*shell*/''
ls -l $src
echo $src
2025-10-19 22:41:57 +02:00
mkdir -p "$out/var/lib/insightface/models/"
unar -D -o $out/var/lib/insightface/models/buffalo_l/ $src
2025-10-19 22:31:59 +02:00
'';
nativeBuildInputs = [ pkgs.unar ];
};
postInstall = /*shell*/''
mkdir -p $out/var/lib/insightface/models/buffalo_l
cp ${inswapperModel} $out/var/lib/insightface/models/inswapper_128.onnx
'';
# ${pkgs.unar}/bin/unar -D -o $out/var/lib/insightface/models/buffalo_l ${buffaloModel}
# '';
packageAttrs = project.renderers.buildPythonPackage {
inherit python;
};
packageAttrsLive = project.renderers.mkPythonEditablePackage {
inherit python;
};
protestswap = python.pkgs.buildPythonPackage ( packageAttrs # // { inherit postInstall; }
);
2025-10-15 21:41:56 +02:00
in {
devShells.${system}.default = let
2025-10-19 22:31:59 +02:00
arg = project.renderers.mkPythonEditablePackage { inherit python; };
pythonEnv = python.pkgs.mkPythonEditablePackage ( arg );
2025-10-15 21:41:56 +02:00
in pkgs.mkShell {
2026-03-26 13:00:27 +01:00
packages = with pkgs; [
python3
uv
gcc14
python3Packages.fastapi
] ++ [protestswap];
2025-10-19 22:31:59 +02:00
shellHook = /*shell*/
''
ls -l ${buffaloModel}
INSIGHTFACE_ROOT_DIR=$(mktemp -d /tmp/insightface.XXXXXXXX)
export INSIGHTFACE_ROOT_DIR
2025-10-19 22:41:57 +02:00
mkdir -p "$INSIGHTFACE_ROOT_DIR/models/"
2025-10-19 22:31:59 +02:00
2025-10-19 22:41:57 +02:00
ln -s ${inswapperModel}/var/lib/insightface/models/inswapper_128.onnx "$INSIGHTFACE_ROOT_DIR/models/"
ln -s ${buffaloModel}/var/lib/insightface/models/buffalo_l "$INSIGHTFACE_ROOT_DIR/models/buffalo_l"
2025-10-19 22:31:59 +02:00
# export PROTESTSWAP_ROOT="/tmp/protestswap_models"
# mkdir -p "$PROTESTSWAP_ROOT/buffalo_l"
#
# cp ${inswapperModel} "$PROTESTSWAP_ROOT/inswapper_128.onnx"
unset PYTHONPATH
uv sync
. .venv/bin/activate
2025-10-15 21:41:56 +02:00
'';
};
2025-10-19 22:31:59 +02:00
packages.${system}.default = protestswap;
2025-10-15 21:41:56 +02:00
};
2025-10-13 17:32:48 +02:00
}