-
Notifications
You must be signed in to change notification settings - Fork 125
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
4d331f7
commit cf973c6
Showing
6 changed files
with
118 additions
and
1 deletion.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,3 +19,4 @@ trivy-results.sarif | |
Pulumi.dev.yaml | ||
lre.bazelrc | ||
rust-project.json | ||
darwin.bazelrc |
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,44 @@ | ||
{ | ||
lib, | ||
flake-parts-lib, | ||
... | ||
}: { | ||
options = { | ||
perSystem = flake-parts-lib.mkPerSystemOption ( | ||
{ | ||
config, | ||
options, | ||
pkgs, | ||
... | ||
}: let | ||
cfg = config.darwin; | ||
in { | ||
options = { | ||
darwin = { | ||
pkgs = lib.mkOption { | ||
type = lib.types.uniq (lib.types.lazyAttrsOf (lib.types.raw or lib.types.unspecified)); | ||
description = "Nixpkgs to use."; | ||
default = pkgs; | ||
defaultText = lib.literalMD "`pkgs` (module argument)"; | ||
}; | ||
settings = lib.mkOption { | ||
type = lib.types.submoduleWith { | ||
modules = [./modules/darwin.nix]; | ||
specialArgs = {inherit (cfg) pkgs;}; | ||
}; | ||
default = {}; | ||
description = "Configuration for Bazel on Darwin."; | ||
}; | ||
installationScript = lib.mkOption { | ||
type = lib.types.str; | ||
description = "Create darwin.bazelrc."; | ||
default = cfg.settings.installationScript; | ||
defaultText = lib.literalMD "bazelrc content"; | ||
readOnly = true; | ||
}; | ||
}; | ||
}; | ||
} | ||
); | ||
}; | ||
} |
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,56 @@ | ||
{ | ||
config, | ||
lib, | ||
pkgs, | ||
... | ||
}: let | ||
bazelrc = pkgs.writeText "darwin.bazelrc" '' | ||
# These flags are dynamically generated by the Darwin flake module. | ||
# | ||
# Add `try-import %%workspace%%/darwin.bazelrc` to your .bazelrc to | ||
# include these flags when running Bazel in a nix environment. | ||
# These are the libs and frameworks used by darwin. | ||
build --@rules_rust//:extra_rustc_flags=-L${pkgs.libiconv}/lib,-Lframework=${pkgs.darwin.apple_sdk.frameworks.Security}/Library/Frameworks,-Lframework=${pkgs.darwin.apple_sdk.frameworks.CoreFoundation}/Library/Frameworks | ||
build --@rules_rust//:extra_exec_rustc_flags=-L${pkgs.libiconv}/lib,-Lframework=${pkgs.darwin.apple_sdk.frameworks.Security}/Library/Frameworks,-Lframework=${pkgs.darwin.apple_sdk.frameworks.CoreFoundation}/Library/Frameworks | ||
''; | ||
in { | ||
options = { | ||
installationScript = lib.mkOption { | ||
type = lib.types.str; | ||
description = "A bash snippet which creates a darwin.bazelrc file in the | ||
repository."; | ||
}; | ||
path = lib.mkOption { | ||
type = lib.types.listOf lib.types.str; | ||
default = []; | ||
description = "List of paths to include in the Bazel environment."; | ||
}; | ||
}; | ||
config = { | ||
installationScript = '' | ||
if ! type -t git >/dev/null; then | ||
# In pure shells | ||
echo 1>&2 "WARNING: darwin: git command not found; skipping installation." | ||
elif ! ${pkgs.git}/bin/git rev-parse --git-dir &> /dev/null; then | ||
echo 1>&2 "WARNING: darwin: .git not found; skipping installation." | ||
else | ||
GIT_WC=`${pkgs.git}/bin/git rev-parse --show-toplevel` | ||
# These update procedures compare before they write, to avoid | ||
# filesystem churn. This improves performance with watch tools like | ||
# lorri and prevents installation loops by lorri. | ||
if ! readlink "''${GIT_WC}/darwin.bazelrc" >/dev/null \ | ||
|| [[ $(readlink "''${GIT_WC}/darwin.bazelrc") != ${bazelrc} ]]; then | ||
echo 1>&2 "darwin: updating $PWD repository" | ||
[ -L darwin.bazelrc ] && unlink darwin.bazelrc | ||
if [ -e "''${GIT_WC}/darwin.bazelrc" ]; then | ||
echo 1>&2 "darwin: WARNING: Refusing to install because of pre-existing darwin.bazelrc" | ||
echo 1>&2 " Remove the darwin.bazelrc file and add darwin.bazelrc to .gitignore." | ||
else | ||
ln -fs ${bazelrc} "''${GIT_WC}/darwin.bazelrc" | ||
fi | ||
fi | ||
fi | ||
''; | ||
}; | ||
} |