mirror of
https://github.com/NixOS/nix.git
synced 2024-11-25 08:12:29 +00:00
26ea905312
When we get rid of the make build system, we would be missing things. Incuding these packages' deps ensure we don't miss things.
97 lines
4.2 KiB
Nix
97 lines
4.2 KiB
Nix
{ lib, devFlake }:
|
|
|
|
{ pkgs }:
|
|
|
|
(pkgs.nix.override { forDevShell = true; }).overrideAttrs (attrs:
|
|
|
|
let
|
|
stdenv = pkgs.nixDependencies.stdenv;
|
|
buildCanExecuteHost = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
|
modular = devFlake.getSystem stdenv.buildPlatform.system;
|
|
transformFlag = prefix: flag:
|
|
assert builtins.isString flag;
|
|
let
|
|
rest = builtins.substring 2 (builtins.stringLength flag) flag;
|
|
in
|
|
"-D${prefix}:${rest}";
|
|
havePerl = stdenv.buildPlatform == stdenv.hostPlatform && stdenv.hostPlatform.isUnix;
|
|
ignoreCrossFile = flags: builtins.filter (flag: !(lib.strings.hasInfix "cross-file" flag)) flags;
|
|
in {
|
|
pname = "shell-for-" + attrs.pname;
|
|
|
|
# Remove the version suffix to avoid unnecessary attempts to substitute in nix develop
|
|
version = lib.fileContents ../.version;
|
|
name = attrs.pname;
|
|
|
|
installFlags = "sysconfdir=$(out)/etc";
|
|
shellHook = ''
|
|
PATH=$prefix/bin:$PATH
|
|
unset PYTHONPATH
|
|
export MANPATH=$out/share/man:$MANPATH
|
|
|
|
# Make bash completion work.
|
|
XDG_DATA_DIRS+=:$out/share
|
|
'';
|
|
|
|
# We use this shell with the local checkout, not unpackPhase.
|
|
src = null;
|
|
|
|
env = {
|
|
# Needed for Meson to find Boost.
|
|
# https://github.com/NixOS/nixpkgs/issues/86131.
|
|
BOOST_INCLUDEDIR = "${lib.getDev pkgs.nixDependencies.boost}/include";
|
|
BOOST_LIBRARYDIR = "${lib.getLib pkgs.nixDependencies.boost}/lib";
|
|
# For `make format`, to work without installing pre-commit
|
|
_NIX_PRE_COMMIT_HOOKS_CONFIG =
|
|
"${(pkgs.formats.yaml { }).generate "pre-commit-config.yaml" modular.pre-commit.settings.rawConfig}";
|
|
};
|
|
|
|
mesonFlags =
|
|
map (transformFlag "libutil") (ignoreCrossFile pkgs.nixComponents.nix-util.mesonFlags)
|
|
++ map (transformFlag "libstore") (ignoreCrossFile pkgs.nixComponents.nix-store.mesonFlags)
|
|
++ map (transformFlag "libfetchers") (ignoreCrossFile pkgs.nixComponents.nix-fetchers.mesonFlags)
|
|
++ lib.optionals havePerl (map (transformFlag "perl") (ignoreCrossFile pkgs.nixComponents.nix-perl-bindings.mesonFlags))
|
|
++ map (transformFlag "libexpr") (ignoreCrossFile pkgs.nixComponents.nix-expr.mesonFlags)
|
|
++ map (transformFlag "libcmd") (ignoreCrossFile pkgs.nixComponents.nix-cmd.mesonFlags)
|
|
;
|
|
|
|
nativeBuildInputs = attrs.nativeBuildInputs or []
|
|
++ pkgs.nixComponents.nix-util.nativeBuildInputs
|
|
++ pkgs.nixComponents.nix-store.nativeBuildInputs
|
|
++ pkgs.nixComponents.nix-fetchers.nativeBuildInputs
|
|
++ pkgs.nixComponents.nix-expr.nativeBuildInputs
|
|
++ lib.optionals havePerl pkgs.nixComponents.nix-perl-bindings.nativeBuildInputs
|
|
++ lib.optionals buildCanExecuteHost pkgs.nixComponents.nix-manual.externalNativeBuildInputs
|
|
++ pkgs.nixComponents.nix-internal-api-docs.nativeBuildInputs
|
|
++ pkgs.nixComponents.nix-external-api-docs.nativeBuildInputs
|
|
++ pkgs.nixComponents.nix-functional-tests.externalNativeBuildInputs
|
|
++ lib.optional
|
|
(!buildCanExecuteHost
|
|
# Hack around https://github.com/nixos/nixpkgs/commit/bf7ad8cfbfa102a90463433e2c5027573b462479
|
|
&& !(stdenv.hostPlatform.isWindows && stdenv.buildPlatform.isDarwin)
|
|
&& stdenv.hostPlatform.emulatorAvailable pkgs.buildPackages
|
|
&& lib.meta.availableOn stdenv.buildPlatform (stdenv.hostPlatform.emulator pkgs.buildPackages))
|
|
pkgs.buildPackages.mesonEmulatorHook
|
|
++ [
|
|
pkgs.buildPackages.cmake
|
|
pkgs.buildPackages.shellcheck
|
|
pkgs.buildPackages.changelog-d
|
|
modular.pre-commit.settings.package
|
|
(pkgs.writeScriptBin "pre-commit-hooks-install"
|
|
modular.pre-commit.settings.installationScript)
|
|
]
|
|
# TODO: Remove the darwin check once
|
|
# https://github.com/NixOS/nixpkgs/pull/291814 is available
|
|
++ lib.optional (stdenv.cc.isClang && !stdenv.buildPlatform.isDarwin) pkgs.buildPackages.bear
|
|
++ lib.optional (stdenv.cc.isClang && stdenv.hostPlatform == stdenv.buildPlatform) (lib.hiPrio pkgs.buildPackages.clang-tools);
|
|
|
|
buildInputs = attrs.buildInputs or []
|
|
++ pkgs.nixComponents.nix-util.buildInputs
|
|
++ pkgs.nixComponents.nix-store.buildInputs
|
|
++ pkgs.nixComponents.nix-fetchers.buildInputs
|
|
++ pkgs.nixComponents.nix-expr.buildInputs
|
|
++ pkgs.nixComponents.nix-store-tests.externalBuildInputs
|
|
++ lib.optional havePerl pkgs.perl
|
|
;
|
|
})
|