{ 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"; }; }; } ); }