From ba6d6ba7b4a0e8021a19f70b40044966c7e259fd Mon Sep 17 00:00:00 2001 From: Roni Choudhury Date: Mon, 15 Mar 2021 13:13:57 -0400 Subject: [PATCH 1/7] Add a flake setup with devShell --- flake.lock | 26 ++++++++++++++++++++++++++ flake.nix | 17 +++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..5addc63 --- /dev/null +++ b/flake.lock @@ -0,0 +1,26 @@ +{ + "nodes": { + "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": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..0b7ab5d --- /dev/null +++ b/flake.nix @@ -0,0 +1,17 @@ +{ + description = "Python package for controlling an ElGato key light"; + + inputs.nixpkgs.url = "github:NixOS/nixpkgs"; + + outputs = { self, nixpkgs }: + let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + in { + devShell.x86_64-linux = pkgs.mkShell { + buildInputs = with pkgs; [ + python38 + pipenv + ]; + }; + }; +} From ef7fd547432daf1034c913c5aeeeee490a4d5bc3 Mon Sep 17 00:00:00 2001 From: Roni Choudhury Date: Sun, 11 Apr 2021 22:41:20 -0400 Subject: [PATCH 2/7] Add a package output --- flake.nix | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/flake.nix b/flake.nix index 0b7ab5d..3887d0f 100644 --- a/flake.nix +++ b/flake.nix @@ -6,6 +6,23 @@ outputs = { self, nixpkgs }: 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; + }; in { devShell.x86_64-linux = pkgs.mkShell { buildInputs = with pkgs; [ @@ -13,5 +30,26 @@ pipenv ]; }; + + defaultPackage.x86_64-linux = 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; + }; }; } From 374b18079bbda3cc66d45e4c80c7acc698d1a6d7 Mon Sep 17 00:00:00 2001 From: Roni Choudhury Date: Sun, 9 May 2021 19:00:41 -0400 Subject: [PATCH 3/7] Differentiate the weird pipenv shell env from the standard shell env --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 3887d0f..83fd5d3 100644 --- a/flake.nix +++ b/flake.nix @@ -24,7 +24,7 @@ doCheck = false; }; in { - devShell.x86_64-linux = pkgs.mkShell { + pipenvDevShell = pkgs.mkShell { buildInputs = with pkgs; [ python38 pipenv From 0dba23d4e30c932520d55ded46ba826b4e658467 Mon Sep 17 00:00:00 2001 From: Roni Choudhury Date: Sun, 9 May 2021 19:03:03 -0400 Subject: [PATCH 4/7] Factor elgato package into let binding --- flake.nix | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/flake.nix b/flake.nix index 83fd5d3..bd6b02a 100644 --- a/flake.nix +++ b/flake.nix @@ -23,15 +23,8 @@ doCheck = false; }; - in { - pipenvDevShell = pkgs.mkShell { - buildInputs = with pkgs; [ - python38 - pipenv - ]; - }; - defaultPackage.x86_64-linux = pkgs.python38Packages.buildPythonPackage rec { + elgato = pkgs.python38Packages.buildPythonPackage rec { pname = "PyElgato"; version = "1.2.0"; @@ -51,5 +44,15 @@ doCheck = false; }; + + in { + pipenvDevShell = pkgs.mkShell { + buildInputs = with pkgs; [ + python38 + pipenv + ]; + }; + + defaultPackage.x86_64-linux = elgato; }; } From c1595efde1684a9a08c6110a79064b1431c43075 Mon Sep 17 00:00:00 2001 From: Roni Choudhury Date: Sun, 9 May 2021 19:04:29 -0400 Subject: [PATCH 5/7] Add an overlay for the leglight and elgato packages --- flake.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/flake.nix b/flake.nix index bd6b02a..8f8b997 100644 --- a/flake.nix +++ b/flake.nix @@ -53,6 +53,14 @@ ]; }; + overlay = final: prev: { + python = prev.python.override { + packageOverrides = p-final: p-prev: { + inherit leglight elgato; + }; + }; + }; + defaultPackage.x86_64-linux = elgato; }; } From cceffedc4164d91fc6b6f86d1d45c59bfd4a1ff1 Mon Sep 17 00:00:00 2001 From: Roni Choudhury Date: Sun, 9 May 2021 19:16:20 -0400 Subject: [PATCH 6/7] Add app definitions for elgato --- flake.lock | 16 ++++++++++++++++ flake.nix | 12 +++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/flake.lock b/flake.lock index 5addc63..0a9808a 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,20 @@ { "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, @@ -17,6 +32,7 @@ }, "root": { "inputs": { + "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" } } diff --git a/flake.nix b/flake.nix index 8f8b997..2f51ec6 100644 --- a/flake.nix +++ b/flake.nix @@ -2,8 +2,9 @@ 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 }: + outputs = { self, nixpkgs, flake-utils }: let pkgs = nixpkgs.legacyPackages.x86_64-linux; @@ -45,6 +46,11 @@ doCheck = false; }; + elgatoApp = flake-utils.lib.mkApp { + drv = elgato; + exePath = "/bin/elgato"; + }; + in { pipenvDevShell = pkgs.mkShell { buildInputs = with pkgs; [ @@ -62,5 +68,9 @@ }; defaultPackage.x86_64-linux = elgato; + + apps.x86_64-linux.elgato = elgatoApp; + + defaultApp.x86_64-linux = elgatoApp; }; } From 79d5989bf0fb696c3ad4d1c68f82e2ec038eb4de Mon Sep 17 00:00:00 2001 From: Roni Choudhury Date: Sun, 9 May 2021 19:30:13 -0400 Subject: [PATCH 7/7] Run nixpkgs-fmt --- flake.nix | 103 +++++++++++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/flake.nix b/flake.nix index 2f51ec6..69be57a 100644 --- a/flake.nix +++ b/flake.nix @@ -5,72 +5,73 @@ inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { self, nixpkgs, flake-utils }: - let - pkgs = nixpkgs.legacyPackages.x86_64-linux; + let + pkgs = nixpkgs.legacyPackages.x86_64-linux; - leglight = pkgs.python38Packages.buildPythonPackage rec { - pname = "leglight"; - version = "0.2.0"; + leglight = pkgs.python38Packages.buildPythonPackage rec { + pname = "leglight"; + version = "0.2.0"; - src = pkgs.python38Packages.fetchPypi { - inherit pname version; - sha256 = "41ab462fe12e2ec3e02ff29a00316f822b078c331c70bd36a635568bd1c4204a"; - }; + src = pkgs.python38Packages.fetchPypi { + inherit pname version; + sha256 = "41ab462fe12e2ec3e02ff29a00316f822b078c331c70bd36a635568bd1c4204a"; + }; - propagatedBuildInputs = with pkgs.python38Packages; [ - zeroconf - requests - ]; + propagatedBuildInputs = with pkgs.python38Packages; [ + zeroconf + requests + ]; - doCheck = false; - }; + doCheck = false; + }; - elgato = pkgs.python38Packages.buildPythonPackage rec { - pname = "PyElgato"; - version = "1.2.0"; + elgato = pkgs.python38Packages.buildPythonPackage rec { + pname = "PyElgato"; + version = "1.2.0"; - src = pkgs.python38Packages.fetchPypi { - inherit pname version; - sha256 = "7834d4c6dac7a1646b5238dcec187645d6cd4d8dc4e2f3f9e0d789a3bddd369c"; - }; + src = pkgs.python38Packages.fetchPypi { + inherit pname version; + sha256 = "7834d4c6dac7a1646b5238dcec187645d6cd4d8dc4e2f3f9e0d789a3bddd369c"; + }; - buildInputs = with pkgs.python38Packages; [ - setuptools-scm - wheel - ]; + buildInputs = with pkgs.python38Packages; [ + setuptools-scm + wheel + ]; - propagatedBuildInputs = [ - leglight - ]; + propagatedBuildInputs = [ + leglight + ]; - doCheck = false; - }; + doCheck = false; + }; - elgatoApp = flake-utils.lib.mkApp { - drv = elgato; - exePath = "/bin/elgato"; - }; + elgatoApp = flake-utils.lib.mkApp { + drv = elgato; + exePath = "/bin/elgato"; + }; - in { - pipenvDevShell = pkgs.mkShell { - buildInputs = with pkgs; [ - python38 - pipenv - ]; - }; + in + { + pipenvDevShell = pkgs.mkShell { + buildInputs = with pkgs; [ + python38 + pipenv + ]; + }; - overlay = final: prev: { - python = prev.python.override { - packageOverrides = p-final: p-prev: { - inherit leglight elgato; + overlay = final: prev: { + python = prev.python.override { + packageOverrides = p-final: p-prev: { + inherit leglight elgato; + }; }; }; - }; - defaultPackage.x86_64-linux = elgato; + defaultPackage.x86_64-linux = elgato; - apps.x86_64-linux.elgato = elgatoApp; + apps.x86_64-linux.elgato = elgatoApp; - defaultApp.x86_64-linux = elgatoApp; - }; + defaultApp.x86_64-linux = elgatoApp; + }; }