Skip to content

Commit

Permalink
Update the nix-shell environment (qmk#13316)
Browse files Browse the repository at this point in the history
* Nix: Allow calls to `bin/qmk` even when the build was started by `qmk`

The `$PATH` modifications performed by the Nix wrapper for the `qmk`
executable prevent `bin/qmk` from working properly (the changed `$PATH`
contains a wrong `python3` executable which does not have the needed
Python modules in its module path).  As a workaround, disable the
generation of that wrapper for the `qmk` Python package (there is yet
another wrapper generated while building the Python environment, which
would still set the Python module path properly when running `qmk`).

Although `bin/qmk` is officially deprecated, QMK CLI still invokes it in
some cases (at least `qmk doctor` and `qmk pytest`), therefore keeping
these invocations working is useful.

* Nix: Update `util/nix/pyproject.toml` to match `requirements*.txt`

Update the Python dependency information used by Poetry to match the
current state of the qmk_firmware code.

* Nix: Bump QMK CLI dependency to 1.0.0; bump other Python deps

Update Python dependencies for nix-shell to the most recent releases:

 - dotty-dict: 1.3.0 -> no longer used
 - milc: 1.4.2 -> 1.6.2
 - pep8-naming: 0.11.1 -> 0.12.1
 - pygments: 2.9.0 -> 2.10.0
 - pyrsistent: 0.17.3 -> 0.18.0
 - pyusb: 1.1.1 -> 1.2.1
 - setuptools-scm: 6.0.1 -> no longer used
 - qmk: 0.1.0 -> 1.0.0
 - qmk-dotty-dict: not used -> 1.3.0.post1
 - yapf: 0.30.0 -> 0.31.0

Note to self: The command to update Python dependencies changed to:

    ( cd util/nix && nix run 'nixpkgs#poetry' -- update --lock )
  • Loading branch information
sigprof committed Aug 29, 2021
1 parent ef7fdee commit a1866a9
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 74 deletions.
7 changes: 7 additions & 0 deletions shell.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ let
# files if the requirements*.txt files change
pythonEnv = poetry2nix.mkPoetryEnv {
projectDir = ./util/nix;
overrides = poetry2nix.overrides.withDefaults (self: super: {
qmk = super.qmk.overridePythonAttrs(old: {
# Allow QMK CLI to run "bin/qmk" as a subprocess (the wrapper changes
# $PATH and breaks these invocations).
dontWrapPythonPrograms = true;
});
});
};
in

Expand Down
121 changes: 61 additions & 60 deletions util/nix/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 18 additions & 14 deletions util/nix/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,27 @@ authors = []

[tool.poetry.dependencies]
python = "^3.8"
appdirs = "^1.4.4"
argcomplete = "^1.12.2"
colorama = "^0.4.4"
dotty-dict = "^1.3.0"
hjson = "^3.0.2"
jsonschema = "^3.2.0"
milc = "^1.3.0"
Pygments = "^2.8.0"
appdirs = "*"
argcomplete = "*"
colorama = "*"
hid = "*"
hjson = "*"
jsonschema = ">=3"
milc = ">=1.4.2"
Pygments = "*"
pyusb = "*"
qmk-dotty-dict = "*"

# This dependency is not mentioned in requirements.txt (QMK CLI is not a
# library package that is required by the Python code in qmk_firmware), but is
# required to build a proper nix-shell environment.
qmk = "*"

[tool.poetry.dev-dependencies]
nose2 = "^0.10.0"
flake8 = "^3.8.4"
hid = "^1.0.4"
pep8-naming = "^0.11.1"
pyusb = "^1.1.1"
yapf = "^0.30.0"
nose2 = "*"
flake8 = "*"
pep8-naming = "*"
yapf = "*"

[build-system]
requires = ["poetry-core>=1.0.0"]
Expand Down

0 comments on commit a1866a9

Please sign in to comment.