I’ve been using https://github.com/Fuuzetsu/shellcheck-nix-attributes on most of
my derivations, and attaching it to one derived from `mkShell` resulted in
```
shellcheck_buildPhase
In /nix/store/8774inwznc87dwhac90winc9b5k6gmkb-nix-shell_shellcheck_buildPhase line 1:
echo "------------------------------------------------------------" >>$out
^-- SC2129 (style): Consider using { cmd1; cmd2; } >> file instead of individual redirects.
^--^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
echo "------------------------------------------------------------" >>"$out"
In /nix/store/8774inwznc87dwhac90winc9b5k6gmkb-nix-shell_shellcheck_buildPhase line 2:
echo " WARNING: the existence of this path is not guaranteed." >>$out
^--^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
echo " WARNING: the existence of this path is not guaranteed." >>"$out"
In /nix/store/8774inwznc87dwhac90winc9b5k6gmkb-nix-shell_shellcheck_buildPhase line 3:
echo " It is an internal implementation detail for pkgs.mkShell." >>$out
^--^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
echo " It is an internal implementation detail for pkgs.mkShell." >>"$out"
In /nix/store/8774inwznc87dwhac90winc9b5k6gmkb-nix-shell_shellcheck_buildPhase line 4:
echo "------------------------------------------------------------" >>$out
^--^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
echo "------------------------------------------------------------" >>"$out"
In /nix/store/8774inwznc87dwhac90winc9b5k6gmkb-nix-shell_shellcheck_buildPhase line 5:
echo >> $out
^--^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
echo >> "$out"
In /nix/store/8774inwznc87dwhac90winc9b5k6gmkb-nix-shell_shellcheck_buildPhase line 7:
export >> $out
^--^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
export >> "$out"
For more information:
https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...
https://www.shellcheck.net/wiki/SC2129 -- Consider using { cmd1; cmd2; } >>...
```
——— https://garnix.io/build/qgxbameB
This addresses the shellcheck complaints.
btrfs-progs was installing its Python bindings as an egg, which doesn't work
with Nix. It turns out that there is no real benefit to building the Python
bindings as part of the btrfs-progs package. Instead, we can just package them
separately, and use nixpkgs' normal Python packaging support to install them as
a wheel. This fixes the bindings and reduces closure sizes.