forked from LnL7/nix
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Multiple choices of stdenv are handled more consistently, especially for the dev shells which were previously not done correctly. - Some stray nix code was moving into the `packaging` directory
- Loading branch information
1 parent
e1181d5
commit 8276f89
Showing
8 changed files
with
176 additions
and
172 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
{ 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.gtest | ||
pkgs.rapidcheck | ||
] | ||
++ lib.optional havePerl pkgs.perl | ||
; | ||
}) |
Oops, something went wrong.