From d91938c19dd65af88713b9deffe95794ed78e889 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Apr 2021 03:05:46 +1200 Subject: [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 --- shell.nix | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) (limited to 'shell.nix') 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 -- cgit v1.2.3