diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..0a9808a --- /dev/null +++ b/flake.lock @@ -0,0 +1,42 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1615827000, + "narHash": "sha256-IJnuZykE8k9vkUGV6n5ady4dy/3O5+qeFhCbaJ2D42s=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f19c6949b933dd81580af7ba82637a2424ae6325", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..69be57a --- /dev/null +++ b/flake.nix @@ -0,0 +1,77 @@ +{ + description = "Python package for controlling an ElGato key light"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + + outputs = { self, nixpkgs, flake-utils }: + let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + + leglight = pkgs.python38Packages.buildPythonPackage rec { + pname = "leglight"; + version = "0.2.0"; + + src = pkgs.python38Packages.fetchPypi { + inherit pname version; + sha256 = "41ab462fe12e2ec3e02ff29a00316f822b078c331c70bd36a635568bd1c4204a"; + }; + + propagatedBuildInputs = with pkgs.python38Packages; [ + zeroconf + requests + ]; + + doCheck = false; + }; + + elgato = pkgs.python38Packages.buildPythonPackage rec { + pname = "PyElgato"; + version = "1.2.0"; + + src = pkgs.python38Packages.fetchPypi { + inherit pname version; + sha256 = "7834d4c6dac7a1646b5238dcec187645d6cd4d8dc4e2f3f9e0d789a3bddd369c"; + }; + + buildInputs = with pkgs.python38Packages; [ + setuptools-scm + wheel + ]; + + propagatedBuildInputs = [ + leglight + ]; + + doCheck = false; + }; + + elgatoApp = flake-utils.lib.mkApp { + drv = elgato; + exePath = "/bin/elgato"; + }; + + in + { + pipenvDevShell = pkgs.mkShell { + buildInputs = with pkgs; [ + python38 + pipenv + ]; + }; + + overlay = final: prev: { + python = prev.python.override { + packageOverrides = p-final: p-prev: { + inherit leglight elgato; + }; + }; + }; + + defaultPackage.x86_64-linux = elgato; + + apps.x86_64-linux.elgato = elgatoApp; + + defaultApp.x86_64-linux = elgatoApp; + }; +}