working flake biuld
This commit is contained in:
commit
cfa54fac5d
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
.*/
|
||||
**/__pycache__/
|
||||
result
|
||||
*.egg-info
|
||||
build/
|
||||
.direnv
|
||||
jupyterlab
|
361
flake.lock
Normal file
361
flake.lock
Normal file
|
@ -0,0 +1,361 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1631705391,
|
||||
"narHash": "sha256-PzP6vikNJZiS7yANC6sZWQlIDf4E2MTckvAsJxwV0DQ=",
|
||||
"owner": "teto",
|
||||
"repo": "flake-compat",
|
||||
"rev": "8e15c6e3c0f15d0687a2ab6ae92cc7fab896bfed",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "teto",
|
||||
"ref": "support-packages",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1627913399,
|
||||
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1627913399,
|
||||
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"locked": {
|
||||
"lastModified": 1631561581,
|
||||
"narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"locked": {
|
||||
"lastModified": 1629481132,
|
||||
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "997f7efcb746a9c140ce1f13c72263189225f482",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_5": {
|
||||
"locked": {
|
||||
"lastModified": 1642700792,
|
||||
"narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "846b2ae0fc4cc943637d3d1def4454213e203cba",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1611672876,
|
||||
"narHash": "sha256-qHu3uZ/o9jBHiA3MEKHJ06k7w4heOhA+4HCSIvflRxo=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "211907489e9f198594c0eb0ca9256a1949c9d412",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-utils": "flake-utils_4",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1637213318,
|
||||
"narHash": "sha256-ZgxPwV7t4DyGYP7aXoetq+JHtd73XlOV2fYSflQmOXw=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "311107eabbf0537e0c192b2c377d282505b4eff1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ihaskell": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"hls": "hls",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1663329285,
|
||||
"narHash": "sha256-X4GJE1Ao3cMSaSyxCqYMsUp3jYOeTavQCrgYxDsBark=",
|
||||
"owner": "gibiansky",
|
||||
"repo": "IHaskell",
|
||||
"rev": "e1fc53a97f51293d8b24aa96c3280928596d414b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "gibiansky",
|
||||
"repo": "IHaskell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"jupyterWith": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"ihaskell": "ihaskell",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1663881891,
|
||||
"narHash": "sha256-280tlQA0ZwIMsyqJ4OFhfMNBzDLTBPK9mBQNZ6LxrhY=",
|
||||
"owner": "tweag",
|
||||
"repo": "jupyterWith",
|
||||
"rev": "2f89c4f64586565d8d591cfd428f5c201eb8467c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tweag",
|
||||
"repo": "jupyterWith",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mach-nix": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_5",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"pypi-deps-db": "pypi-deps-db"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1654084003,
|
||||
"narHash": "sha256-j/XrVVistvM+Ua+0tNFvO5z83isL+LBgmBi9XppxuKA=",
|
||||
"owner": "DavHau",
|
||||
"repo": "mach-nix",
|
||||
"rev": "7e14360bde07dcae32e5e24f366c83272f52923f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "mach-nix",
|
||||
"ref": "3.5.0",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1630887066,
|
||||
"narHash": "sha256-0ecIlrLsNIIa+zrNmzXXmbMBLZlmHU/aWFsa4bq99Hk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5e47a07e9f2d7ed999f2c7943b0896f5f7321ca3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1634515797,
|
||||
"narHash": "sha256-elgCUC2khtBkOSpE4gDymNvthTZAI4hGI2iNu3YEUkA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5f0194220f2402b06f7f79bba6351895facb5acb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1659446231,
|
||||
"narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "eabc38219184cc3e04a974fe31857d8e0eac098d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "release-21.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1643805626,
|
||||
"narHash": "sha256-AXLDVMG+UaAGsGSpOtQHPIKB+IZ0KSd9WS77aanGzgc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "554d2d8aa25b6e583575459c297ec23750adb6cb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-unstable",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1664191034,
|
||||
"narHash": "sha256-J8km863T/UmO0jsi58eqV/H+aua9fXMS8DjELdxwOYc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ef395e396b97462839e3f964fc8795f1c93ec904",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"jupyterWith",
|
||||
"ihaskell",
|
||||
"hls",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"jupyterWith",
|
||||
"ihaskell",
|
||||
"hls",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1624971177,
|
||||
"narHash": "sha256-Amf/nBj1E77RmbSSmV+hg6YOpR+rddCbbVgo5C7BS0I=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "397f0713d007250a2c7a745e555fa16c5dc8cadb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pypi-deps-db": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1643877077,
|
||||
"narHash": "sha256-jv8pIvRFTP919GybOxXE5TfOkrjTbdo9QiCO1TD3ZaY=",
|
||||
"owner": "DavHau",
|
||||
"repo": "pypi-deps-db",
|
||||
"rev": "da53397f0b782b0b18deb72ef8e0fb5aa7c98aa3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "DavHau",
|
||||
"repo": "pypi-deps-db",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"jupyterWith": "jupyterWith",
|
||||
"mach-nix": "mach-nix",
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
184
flake.nix
Normal file
184
flake.nix
Normal file
|
@ -0,0 +1,184 @@
|
|||
{
|
||||
description = "A Nix Flake for Cyanovision Project";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
jupyterWith.url = "github:tweag/jupyterWith";
|
||||
mach-nix.url = "mach-nix/3.5.0";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
jupyterWith,
|
||||
mach-nix,
|
||||
flake-utils,
|
||||
...
|
||||
} @ inputs:
|
||||
flake-utils.lib.eachSystem ["x86_64-linux" "aarch64-linux"] (system: let
|
||||
pkgs = import nixpkgs {
|
||||
system = system;
|
||||
overlays = nixpkgs.lib.attrValues jupyterWith.overlays;
|
||||
};
|
||||
|
||||
machNix = mach-nix.lib."${system}";
|
||||
|
||||
iPython = pkgs.kernels.iPythonWith {
|
||||
name = cyanovision.name;
|
||||
packages = p: with p; [sympy numpy];
|
||||
ignoreCollisions = true;
|
||||
};
|
||||
|
||||
jupyterEnvironment = pkgs.jupyterlabWith {
|
||||
kernels = [iPython];
|
||||
};
|
||||
|
||||
cyanovision = {
|
||||
name = "cyanovision";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "IoannouPanayiotis";
|
||||
repo = "Sensor-CDT-Team-Challenge-2021-2022";
|
||||
rev = "fd7e538b8afc2227a1100bdd42903b282fcf46bb";
|
||||
sha256 = "sha256-e4kEuvH3my4gzOhP9zWCWSUOYokJJ7JBRXSpeMQkkp0=";
|
||||
};
|
||||
requirements = {
|
||||
release = builtins.readFile ./requirements/release.txt;
|
||||
dev = builtins.readFile ./requirements/dev.txt;
|
||||
all = cyanovision.requirements.release + cyanovision.requirements.dev;
|
||||
};
|
||||
packagesExtra = with pkgs; [
|
||||
libusb1
|
||||
libsndfile
|
||||
];
|
||||
pythonPackages = with pkgs.python310Packages; [
|
||||
matplotlib
|
||||
numpy
|
||||
pathlib2
|
||||
pillow
|
||||
pycocotools
|
||||
tensorflow
|
||||
tkinter
|
||||
];
|
||||
packages = {
|
||||
# cyanovision-deps = machNix.mkPython {
|
||||
# packagesExtra = cyanovision.packagesExtra;
|
||||
# requirements = cyanovision.requirements.release;
|
||||
# providers.tensorflow = "nixpkgs";
|
||||
# };
|
||||
|
||||
cyanovision-ui = pkgs.python3Packages.buildPythonApplication rec {
|
||||
pname = "${cyanovision.name}-ui";
|
||||
version = "2022";
|
||||
src = cyanovision.src;
|
||||
|
||||
propagatedBuildInputs = cyanovision.packagesExtra;
|
||||
|
||||
pythonPath = with pkgs.python310Packages; [
|
||||
matplotlib
|
||||
numpy
|
||||
pathlib2
|
||||
pillow
|
||||
pycocotools
|
||||
tensorflow
|
||||
tkinter
|
||||
];
|
||||
|
||||
format = "other";
|
||||
doCheck = false;
|
||||
|
||||
postPatch = ''
|
||||
sed -i '1 i #!/bin/python3' Cyanovision\ UI/cyanovision_ui.py
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin \
|
||||
$out/share/applications/${pname}/images \
|
||||
$out/lib/${pkgs.python3.libPrefix}/site-packages
|
||||
cp Cyanovision\ UI/cyanovision_ui.py $out/bin/${pname}
|
||||
cp Cyanovision\ UI/*.png $out/share/applications/${pname}/images
|
||||
cp Cyanovision\ UI/object_detection_train.py \
|
||||
$out/lib/${pkgs.python3.libPrefix}/site-packages
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
substituteInPlace $out/bin/${pname} \
|
||||
--replace "sensors_cdt_logo.png" "$out/share/applications/${pname}/images/sensors_cdt_logo.png" \
|
||||
--replace "cyanovision_logo.png" "$out/share/applications/${pname}/images/cyanovision_logo.png"
|
||||
chmod +x $out/bin/${pname}
|
||||
patchShebangs --host $out/bin/${pname}
|
||||
'';
|
||||
};
|
||||
cyanovision-model = pkgs.stdenv.mkDerivation {
|
||||
name = cyanovision.name + "-model";
|
||||
src = cyanovision.src;
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/applications/${cyanovision.name}/model
|
||||
cp -R Trained\ Object\ Detection\ Model/*.tflite \
|
||||
$out/share/applications/${cyanovision.name}/model
|
||||
'';
|
||||
doCheck = false;
|
||||
};
|
||||
cyanovision-dataset = pkgs.stdenv.mkDerivation {
|
||||
name = cyanovision.name + "-dataset";
|
||||
src = cyanovision.src;
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/applications/${cyanovision.name}/dataset
|
||||
cp -R Cyanovision\ UI/dataset \
|
||||
$out/share/applications/${cyanovision.name}/dataset
|
||||
'';
|
||||
doCheck = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
venv = machNix.mkPython {
|
||||
packagesExtra = cyanovision.packagesExtra;
|
||||
requirements = cyanovision.requirements.release;
|
||||
providers.tensorflow = "nixpkgs";
|
||||
_.pytest-cov.propagatedBuildInputs.mod = pySelf: self: oldVal: oldVal ++ [pySelf.tomli];
|
||||
};
|
||||
in rec {
|
||||
apps.jupyterlab = {
|
||||
type = "app";
|
||||
program = "${jupyterEnvironment}/bin/jupyter-lab";
|
||||
};
|
||||
|
||||
defaultApp = apps.jupyterlab;
|
||||
|
||||
# packages.cyanovision-deps = cyanovision.packages.cyanovision-deps;
|
||||
packages.cyanovision-ui = cyanovision.packages.cyanovision-ui;
|
||||
packages.cyanovision-model = cyanovision.packages.cyanovision-model;
|
||||
packages.cyanovision-dataset = cyanovision.packages.cyanovision-dataset;
|
||||
packages.venv = venv;
|
||||
|
||||
packages.docker =
|
||||
(machNix.mkDockerImage {
|
||||
packagesExtra = with pkgs; [bash libusb1 libsndfile];
|
||||
requirements = builtins.readFile ./requirements/release.txt;
|
||||
_.pytest-cov.propagatedBuildInputs.mod = pySelf: self: oldVal: oldVal ++ [pySelf.tomli];
|
||||
})
|
||||
.override
|
||||
(oldAttrs: {
|
||||
name = "cyanovision";
|
||||
config.Cmd = ["jupyter" "lab" "--notebook-dir=/mnt" "--allow-root" "--ip=0.0.0.0"];
|
||||
});
|
||||
|
||||
defaultPackage = packages.cyanovision-ui;
|
||||
|
||||
# devShell = jupyterEnvironment.env;
|
||||
devShell = pkgs.mkShell {
|
||||
name = "nix-cyanovision";
|
||||
buildInputs = [
|
||||
# cyanovision-dataset
|
||||
# cyanovision-model
|
||||
# cyanovision-ui
|
||||
venv
|
||||
pkgs.git
|
||||
pkgs.libusb1
|
||||
];
|
||||
shellHook = ''
|
||||
'';
|
||||
};
|
||||
});
|
||||
}
|
12
requirements/dev.txt
Normal file
12
requirements/dev.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
autopep8
|
||||
coverage
|
||||
flake8
|
||||
pep8
|
||||
pycodestyle
|
||||
pyflakes
|
||||
pylint
|
||||
pytest
|
||||
pytest-cov
|
||||
python-dateutil
|
||||
PyYAML
|
||||
toml
|
12
requirements/release.txt
Normal file
12
requirements/release.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
matplotlib
|
||||
numpy
|
||||
pathlib
|
||||
# PIL
|
||||
pycocotools
|
||||
# tensorflow
|
||||
tflite
|
||||
# tflite-model-maker
|
||||
# tflite-support
|
||||
# tflite-model-maker==0.3.2
|
||||
# tkinter
|
||||
jupyterlab
|
Loading…
Reference in a new issue