summary refs log tree commit diff
path: root/shell.nix
diff options
context:
space:
mode:
authorSteve Purcell <steve@sanityinc.com>2021-04-04 03:05:46 +1200
committerGitHub <noreply@github.com>2021-04-03 08:05:46 -0700
commitd91938c19dd65af88713b9deffe95794ed78e889 (patch)
tree9fdca00bdbb1a90ffc1245c173589bbaa3b780e5 /shell.nix
parenta3cd1290be8187a34e3c4e156c07531380bfecaa (diff)
[nix] Use niv and poetry2nix to more easily manage dependencies (#11181)
* [nix] Update nixpkgs to avoid issues with Big Sur

The older nixpkgs snapshot did not contain nix changes to the
compiler/linker hooks that are necessary for compatibility with MacOS
Big Sur. The fix is simply to update to a newer snapshot.

* [nix] Add a poetry manifest and use poetry to build the Python env

* [nix] Use niv to manage upstream sources like nixpkgs

* [nix] Update to newer nixpkgs snapshot

* [nix] Bump python package versions
Diffstat (limited to 'shell.nix')
-rw-r--r--shell.nix35
1 files changed, 11 insertions, 24 deletions
diff --git a/shell.nix b/shell.nix
index ab44dd8e31..e82436ae11 100644
--- a/shell.nix
+++ b/shell.nix
@@ -1,29 +1,16 @@
 { avr ? true, arm ? true, teensy ? true }:
-
 let
-  nixpkgs = builtins.fetchTarball {
-    url = "https://github.com/NixOS/nixpkgs/archive/1f77a4c8c74bbe896053994836790aa9bf6dc5ba.tar.gz";
-    sha256 = "1j62nmzz3w33dplzf1xz1pg1pfkxii7lwdqmsxmc71cs9cm3s7n1";
-  };
+  # We specify sources via Niv: use "niv update nixpkgs" to update nixpkgs, for example.
+  sources = import ./nix/sources.nix {};
+  pkgs = import sources.nixpkgs {};
 
-  pkgs = import nixpkgs { };
-
-  pythonEnv = pkgs.python3.withPackages (p: with p; [
-    # requirements.txt
-    appdirs
-    argcomplete
-    colorama
-    dotty-dict
-    hjson
-    jsonschema
-    milc
-    pygments
-    # requirements-dev.txt
-    nose2
-    flake8
-    pep8-naming
-    yapf
-  ]);
+  # Builds the python env based on nix/pyproject.toml and
+  # nix/poetry.lock Use the "poetry update --lock", "poetry add
+  # --lock" etc. in the nix folder to adjust the contents of those
+  # files if the requirements*.txt files change
+  pythonEnv = pkgs.poetry2nix.mkPoetryEnv {
+    projectDir = ./nix;
+  };
 in
 
 with pkgs;
@@ -43,7 +30,7 @@ in
 mkShell {
   name = "qmk-firmware";
 
-  buildInputs = [ clang-tools dfu-programmer dfu-util diffutils git pythonEnv ]
+  buildInputs = [ clang-tools dfu-programmer dfu-util diffutils git pythonEnv poetry niv ]
     ++ lib.optional avr [
       pkgsCross.avr.buildPackages.binutils
       pkgsCross.avr.buildPackages.gcc8