flake.nix 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. {
  2. description = "SuperTux 0.4.0 level editor";
  3. inputs = {
  4. nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.05";
  5. flake-utils.url = "github:numtide/flake-utils";
  6. };
  7. outputs = { self, nixpkgs, flake-utils }:
  8. flake-utils.lib.eachDefaultSystem (system:
  9. let
  10. pkgs = nixpkgs.legacyPackages.${system};
  11. pythonPackages = pkgs.python310Packages;
  12. in rec {
  13. packages = flake-utils.lib.flattenTree rec {
  14. PyQt5-stubs = pythonPackages.buildPythonPackage rec {
  15. pname = "PyQt5-stubs";
  16. version = "5.15.6.0";
  17. src = pythonPackages.fetchPypi {
  18. inherit pname version;
  19. sha256 = "sha256-kScKwj6/OKHcBM2XqoUs0Ir4Lcg5EA5Tla8UR+Pplwc=";
  20. };
  21. };
  22. flexlay = pythonPackages.buildPythonPackage rec {
  23. pname = "flexlay";
  24. version = "0.2.0";
  25. src = ./.;
  26. nativeBuildInputs = [ pkgs.qt5.wrapQtAppsHook ];
  27. makeWrapperArgs = [
  28. "\${qtWrapperArgs[@]}"
  29. "--set" "LIBGL_DRIVERS_PATH" "${pkgs.mesa.drivers}/lib/dri"
  30. "--prefix" "LD_LIBRARY_PATH" ":" "${pkgs.mesa.drivers}/lib"
  31. ];
  32. preCheck = ''
  33. export QT_QPA_PLATFORM_PLUGIN_PATH="${pkgs.qt5.qtbase.bin}/lib/qt-${pkgs.qt5.qtbase.version}/plugins";
  34. # export QT_QPA_PLATFORM=offscreen
  35. '';
  36. checkPhase = ''
  37. runHook preCheck
  38. flake8 flexlay supertux tests
  39. # pyright flexlay supertux tests
  40. # mypy flexlay supertux tests
  41. # pylint flexlay supertux tests
  42. # HOME=$TMP python3 -m unittest discover -v -s tests/
  43. runHook postCheck
  44. '';
  45. propagatedBuildInputs = [
  46. pkgs.xorg.libxcb
  47. pythonPackages.setuptools
  48. pythonPackages.numpy
  49. pythonPackages.pyqt5
  50. pythonPackages.pyqt5_sip
  51. pythonPackages.pyxdg
  52. ];
  53. checkInputs = (with pkgs; [
  54. pyright
  55. ]) ++ (with pythonPackages; [
  56. flake8
  57. mypy
  58. pylint
  59. types-setuptools
  60. pyannotate
  61. ]) ++ [
  62. PyQt5-stubs
  63. ];
  64. };
  65. flexlay-nocheck = flexlay.override {
  66. doCheck = false;
  67. };
  68. default = flexlay;
  69. };
  70. devShells = rec {
  71. flexlay-dev = pkgs.mkShell {
  72. inputsFrom = [ packages.flexlay ];
  73. shellHook = packages.flexlay.preCheck + ''
  74. # runHook setuptoolsShellHook
  75. '';
  76. };
  77. default = flexlay-dev;
  78. };
  79. }
  80. );
  81. }