summaryrefslogtreecommitdiff
path: root/shell.nix
diff options
context:
space:
mode:
authorSergey Vlasov <sigprof@gmail.com>2024-02-26 05:04:27 +0300
committerGitHub <noreply@github.com>2024-02-26 13:04:27 +1100
commit34a113c97b192fbe28d963178a4d672fb780e27f (patch)
treede3c6303912890d9b62ffbe3074c527f38224d8b /shell.nix
parent65a04ead32173b94152bfbd58f8ec30faa430013 (diff)
Nix shell updates (Nixpkgs 2024-02-23, QMK CLI 1.1.5) (#23143)
Diffstat (limited to 'shell.nix')
-rw-r--r--shell.nix44
1 files changed, 14 insertions, 30 deletions
diff --git a/shell.nix b/shell.nix
index 63e5af0525..88822b0b17 100644
--- a/shell.nix
+++ b/shell.nix
@@ -1,29 +1,9 @@
let
# We specify sources via Niv: use "niv update nixpkgs" to update nixpkgs, for example.
sources = import ./util/nix/sources.nix { };
-
- # `tomlkit` >= 0.8.0 is required to build `jsonschema` >= 4.11.0 (older
- # version do not support some valid TOML syntax: sdispater/tomlkit#148). The
- # updated `tomlkit` must be used by `makeRemoveSpecialDependenciesHook`
- # inside `poetry2nix`, therefore just providing the updated version through
- # our `nix/pyproject.toml` does not work, and using an overlay is required.
- pythonOverlay = final: prev: {
- python3 = prev.python3.override {
- packageOverrides = self: super: {
- tomlkit = super.tomlkit.overridePythonAttrs(old: rec {
- version = "0.11.4";
- src = super.fetchPypi {
- inherit (old) pname;
- inherit version;
- sha256 = "sha256-MjWpAQ+uVDI+cnw6wG+3IHUv5mNbNCbjedrsYPvUSoM=";
- };
- });
- };
- };
- };
in
# However, if you want to override Niv's inputs, this will let you do that.
-{ pkgs ? import sources.nixpkgs { overlays = [ pythonOverlay ]; }
+{ pkgs ? import sources.nixpkgs { }
, poetry2nix ? pkgs.callPackage (import sources.poetry2nix) { }
, avr ? true
, arm ? true
@@ -49,18 +29,22 @@ let
pythonEnv = poetry2nix.mkPoetryEnv {
projectDir = ./util/nix;
overrides = poetry2nix.overrides.withDefaults (self: super: {
- pillow = super.pillow.overridePythonAttrs(old: {
- # Use preConfigure from nixpkgs to fix library detection issues and
- # impurities which can break the build process; this also requires
- # adding propagatedBuildInputs and buildInputs from the same source.
- propagatedBuildInputs = (old.buildInputs or []) ++ pkgs.python3.pkgs.pillow.propagatedBuildInputs;
- buildInputs = (old.buildInputs or []) ++ pkgs.python3.pkgs.pillow.buildInputs;
- preConfigure = (old.preConfigure or "") + pkgs.python3.pkgs.pillow.preConfigure;
- });
qmk = super.qmk.overridePythonAttrs(old: {
# Allow QMK CLI to run "qmk" as a subprocess (the wrapper changes
# $PATH and breaks these invocations).
dontWrapPythonPrograms = true;
+
+ # Fix "qmk setup" to use the Python interpreter from the environment
+ # when invoking "qmk doctor" (sys.executable gets its value from
+ # $NIX_PYTHONEXECUTABLE, which is set by the "qmk" wrapper from the
+ # Python environment, so "qmk doctor" then runs with the proper
+ # $NIX_PYTHONPATH too, because sys.executable actually points to
+ # another wrapper from the same Python environment).
+ postPatch = ''
+ substituteInPlace qmk_cli/subcommands/setup.py \
+ --replace "[Path(sys.argv[0]).as_posix()" \
+ "[Path(sys.executable).as_posix(), Path(sys.argv[0]).as_posix()"
+ '';
});
});
};
@@ -68,7 +52,7 @@ in
mkShell {
name = "qmk-firmware";
- buildInputs = [ clang-tools dfu-programmer dfu-util diffutils git pythonEnv niv ]
+ buildInputs = [ clang-tools_11 dfu-programmer dfu-util diffutils git pythonEnv niv ]
++ lib.optional avr [
pkgsCross.avr.buildPackages.binutils
pkgsCross.avr.buildPackages.gcc8