diff options
Diffstat (limited to 'unmaintained_templates/python/flake.nix')
-rw-r--r-- | unmaintained_templates/python/flake.nix | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/unmaintained_templates/python/flake.nix b/unmaintained_templates/python/flake.nix new file mode 100644 index 0000000..36c7478 --- /dev/null +++ b/unmaintained_templates/python/flake.nix @@ -0,0 +1,67 @@ +{ + description = ""; # TODO: fill this out + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + + mach-nix.url = "github:davhau/mach-nix"; + }; + + outputs = { + self, + nixpkgs, + mach-nix, + flake-utils, + ... + }: let + pythonVersion = "python39"; # TODO: update if necessary + in + flake-utils.lib.eachDefaultSystem ( + system: let + pkgs = nixpkgs.legacyPackages.${system}; + mach = mach-nix.lib.${system}; + + pythonApp = mach.buildPythonApplication ./.; + pythonAppEnv = mach.mkPython { + python = pythonVersion; + requirements = builtins.readFile ./requirements.txt; + }; + pythonAppImage = pkgs.dockerTools.buildLayeredImage { + name = pythonApp.pname; + contents = [pythonApp]; + config.Cmd = ["${pythonApp}/bin/main"]; + }; + in { + packages = { + image = pythonAppImage; + pythonPkg = pythonApp; + + default = self.packages.pythonPkg; + }; + + apps.default = { + type = "app"; + program = "${self.packages.pythonPkg}/bin/main"; + }; + + devShells.default = pkgs.mkShell { + packages = with pkgs; [ + pythonAppEnv + black + ruff + python310Packages.python-lsp-server + gnat + ]; + + env = { + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ + pkgs.stdenv.cc.cc + ]; + + PYTHONPATH = "${pythonAppEnv}/bin/python"; + }; + }; + } + ); +} |