mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-11 15:30:38 -05:00
Use lib.makeScope for consistent package resolution
This commit is contained in:
@@ -247,7 +247,7 @@ produced by =gradle2nix=. It performs the following:
|
|||||||
|
|
||||||
- =lockFile= :: Path to the lock file generated by =gradle2nix=
|
- =lockFile= :: Path to the lock file generated by =gradle2nix=
|
||||||
(e.g. =gradle.lock=).
|
(e.g. =gradle.lock=).
|
||||||
- =gradlePackage= :: The Gradle package to use. Default is
|
- =gradle= :: The Gradle package to use. Default is
|
||||||
=pkgs.gradle=.
|
=pkgs.gradle=.
|
||||||
- =buildJdk= :: Override the default JDK used to run Gradle itself.
|
- =buildJdk= :: Override the default JDK used to run Gradle itself.
|
||||||
- =fetchers= :: Override functions which fetch dependency
|
- =fetchers= :: Override functions which fetch dependency
|
||||||
|
|||||||
63
default.nix
63
default.nix
@@ -2,62 +2,11 @@
|
|||||||
pkgs ? import <nixpkgs> { },
|
pkgs ? import <nixpkgs> { },
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with pkgs;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
buildMavenRepo = callPackage ./nix/build-maven-repo.nix { };
|
scope = pkgs.callPackage ./nix { };
|
||||||
|
|
||||||
gradleSetupHook = makeSetupHook {
|
|
||||||
name = "gradle-setup-hook";
|
|
||||||
propagatedBuildInputs = [ gradle ];
|
|
||||||
} ./nix/setup-hook.sh;
|
|
||||||
|
|
||||||
buildGradlePackage = callPackage ./nix/build-gradle-package.nix {
|
|
||||||
inherit buildMavenRepo gradleSetupHook;
|
|
||||||
};
|
|
||||||
|
|
||||||
gradle2nix = buildGradlePackage {
|
|
||||||
pname = "gradle2nix";
|
|
||||||
version = "2.0.0";
|
|
||||||
lockFile = ./gradle.lock;
|
|
||||||
|
|
||||||
src = lib.cleanSourceWith {
|
|
||||||
filter = lib.cleanSourceFilter;
|
|
||||||
src = lib.cleanSourceWith {
|
|
||||||
filter =
|
|
||||||
path: type:
|
|
||||||
let
|
|
||||||
baseName = baseNameOf path;
|
|
||||||
in
|
|
||||||
!(
|
|
||||||
(type == "directory" && (baseName == "build" || baseName == ".idea" || baseName == ".gradle"))
|
|
||||||
|| (lib.hasSuffix ".iml" baseName)
|
|
||||||
);
|
|
||||||
src = ./.;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gradleInstallFlags = [ ":app:installDist" ];
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
mkdir -p $out/{bin,/lib/gradle2nix}
|
|
||||||
cp -r app/build/install/gradle2nix/* $out/lib/gradle2nix/
|
|
||||||
rm $out/lib/gradle2nix/bin/gradle2nix.bat
|
|
||||||
ln -sf $out/lib/gradle2nix/bin/gradle2nix $out/bin
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru = {
|
|
||||||
inherit buildGradlePackage buildMavenRepo gradleSetupHook;
|
|
||||||
};
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
inherit (gradle.meta) platforms;
|
|
||||||
description = "Wrap Gradle builds with Nix";
|
|
||||||
homepage = "https://github.com/tadfisher/gradle2nix";
|
|
||||||
license = licenses.asl20;
|
|
||||||
maintainers = with maintainers; [ tadfisher ];
|
|
||||||
mainProgram = "gradle2nix";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
gradle2nix
|
scope.gradle2nix.overrideAttrs (attrs: {
|
||||||
|
passthru = (attrs.passthru or { }) // {
|
||||||
|
inherit (scope) buildGradlePackage buildMavenRepo gradleSetupHook;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|||||||
13
flake.nix
13
flake.nix
@@ -17,27 +17,26 @@
|
|||||||
system:
|
system:
|
||||||
let
|
let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
scope = pkgs.callPackage ./nix { };
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
builders = {
|
builders = {
|
||||||
inherit (self.packages.${system}.gradle2nix) buildGradlePackage buildMavenRepo;
|
inherit (scope) buildGradlePackage buildMavenRepo;
|
||||||
default = self.packages.${system}.buildGradlePackage;
|
default = self.packages.${system}.buildGradlePackage;
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = {
|
packages = {
|
||||||
inherit (self.packages.${system}.gradle2nix) gradleSetupHook;
|
inherit (scope) gradle2nix gradleSetupHook;
|
||||||
gradle2nix = pkgs.callPackage ./default.nix { };
|
|
||||||
default = self.packages.${system}.gradle2nix;
|
default = self.packages.${system}.gradle2nix;
|
||||||
};
|
};
|
||||||
|
|
||||||
apps = rec {
|
apps = {
|
||||||
gradle2nix = {
|
gradle2nix = {
|
||||||
type = "app";
|
type = "app";
|
||||||
program = lib.getExe self.packages.${system}.default;
|
program = lib.getExe self.packages.${system}.gradle2nix;
|
||||||
};
|
};
|
||||||
|
default = self.apps.${system}.gradle2nix;
|
||||||
default = gradle2nix;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
formatter = pkgs.writeShellScriptBin "gradle2nix-fmt" ''
|
formatter = pkgs.writeShellScriptBin "gradle2nix-fmt" ''
|
||||||
|
|||||||
@@ -1,28 +1,6 @@
|
|||||||
# This file is generated by gradle2nix.
|
|
||||||
#
|
|
||||||
# Example usage (e.g. in default.nix):
|
|
||||||
#
|
|
||||||
# with (import <nixpkgs> {});
|
|
||||||
# let
|
|
||||||
# buildGradle = callPackage ./gradle.nix {};
|
|
||||||
# in
|
|
||||||
# buildGradle {
|
|
||||||
# lockFile = ./gradle.lock;
|
|
||||||
#
|
|
||||||
# src = ./.;
|
|
||||||
#
|
|
||||||
# gradleFlags = [ "installDist" ];
|
|
||||||
#
|
|
||||||
# installPhase = ''
|
|
||||||
# mkdir -p $out
|
|
||||||
# cp -r app/build/install/myproject $out
|
|
||||||
# '';
|
|
||||||
# }
|
|
||||||
|
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
gradle,
|
|
||||||
buildMavenRepo,
|
buildMavenRepo,
|
||||||
gradleSetupHook,
|
gradleSetupHook,
|
||||||
writeText,
|
writeText,
|
||||||
@@ -31,10 +9,8 @@
|
|||||||
{
|
{
|
||||||
# Path to the lockfile generated by gradle2nix (e.g. gradle.lock).
|
# Path to the lockfile generated by gradle2nix (e.g. gradle.lock).
|
||||||
lockFile ? null,
|
lockFile ? null,
|
||||||
pname ? "project",
|
|
||||||
version ? null,
|
|
||||||
# The Gradle package to use. Default is 'pkgs.gradle'.
|
# The Gradle package to use. Default is 'pkgs.gradle'.
|
||||||
gradlePackage ? gradle,
|
gradle ? null,
|
||||||
# Override the default JDK used to run Gradle itself.
|
# Override the default JDK used to run Gradle itself.
|
||||||
buildJdk ? null,
|
buildJdk ? null,
|
||||||
# Override functions which fetch dependency artifacts.
|
# Override functions which fetch dependency artifacts.
|
||||||
@@ -105,24 +81,25 @@
|
|||||||
let
|
let
|
||||||
inherit (builtins) removeAttrs;
|
inherit (builtins) removeAttrs;
|
||||||
|
|
||||||
gradleSetupHook' = gradleSetupHook.overrideAttrs (_: {
|
|
||||||
propagatedBuildInputs = [ gradlePackage ];
|
|
||||||
});
|
|
||||||
|
|
||||||
offlineRepo =
|
offlineRepo =
|
||||||
if lockFile != null then buildMavenRepo { inherit lockFile fetchers overrides; } else null;
|
if lockFile != null then buildMavenRepo { inherit lockFile fetchers overrides; } else null;
|
||||||
|
|
||||||
buildGradlePackage = stdenv.mkDerivation (
|
buildGradlePackage = stdenv.mkDerivation (
|
||||||
finalAttrs:
|
finalAttrs:
|
||||||
{
|
{
|
||||||
|
inherit buildJdk gradle;
|
||||||
inherit buildJdk pname version;
|
|
||||||
|
|
||||||
inherit (offlineRepo) gradleInitScript;
|
inherit (offlineRepo) gradleInitScript;
|
||||||
|
|
||||||
dontStrip = true;
|
dontStrip = true;
|
||||||
|
|
||||||
nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ gradleSetupHook' ];
|
gradleSetupHook =
|
||||||
|
if (finalAttrs.gradle != null) then
|
||||||
|
gradleSetupHook.override { inherit (finalAttrs) gradle; }
|
||||||
|
else
|
||||||
|
gradleSetupHook;
|
||||||
|
|
||||||
|
nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ finalAttrs.gradleSetupHook ];
|
||||||
|
|
||||||
gradleFlags =
|
gradleFlags =
|
||||||
[ "--console=plain" ]
|
[ "--console=plain" ]
|
||||||
@@ -137,7 +114,7 @@ let
|
|||||||
"lockFile"
|
"lockFile"
|
||||||
"fetchers"
|
"fetchers"
|
||||||
"nativeBuildInputs"
|
"nativeBuildInputs"
|
||||||
"overlays"
|
"overrides"
|
||||||
"passthru"
|
"passthru"
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|||||||
15
nix/default.nix
Normal file
15
nix/default.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
gradle,
|
||||||
|
newScope,
|
||||||
|
}:
|
||||||
|
|
||||||
|
lib.makeScope newScope (
|
||||||
|
self: with self; {
|
||||||
|
inherit gradle;
|
||||||
|
buildGradlePackage = callPackage ./build-gradle-package.nix { };
|
||||||
|
buildMavenRepo = callPackage ./build-maven-repo.nix { };
|
||||||
|
gradleSetupHook = callPackage ./gradle-setup-hook.nix { };
|
||||||
|
gradle2nix = callPackage ./gradle2nix.nix { };
|
||||||
|
}
|
||||||
|
)
|
||||||
7
nix/gradle-setup-hook.nix
Normal file
7
nix/gradle-setup-hook.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{ makeSetupHook, gradle }:
|
||||||
|
|
||||||
|
makeSetupHook {
|
||||||
|
name = "gradle-setup-hook";
|
||||||
|
propagatedBuildInputs = [ gradle ];
|
||||||
|
passthru.gradle = gradle;
|
||||||
|
} ./setup-hook.sh
|
||||||
51
nix/gradle2nix.nix
Normal file
51
nix/gradle2nix.nix
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
buildGradlePackage,
|
||||||
|
buildMavenRepo,
|
||||||
|
gradle,
|
||||||
|
gradleSetupHook,
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGradlePackage {
|
||||||
|
pname = "gradle2nix";
|
||||||
|
version = "2.0.0";
|
||||||
|
lockFile = ../gradle.lock;
|
||||||
|
|
||||||
|
src = lib.cleanSourceWith {
|
||||||
|
filter = lib.cleanSourceFilter;
|
||||||
|
src = lib.cleanSourceWith {
|
||||||
|
filter =
|
||||||
|
path: type:
|
||||||
|
let
|
||||||
|
baseName = baseNameOf path;
|
||||||
|
in
|
||||||
|
!(
|
||||||
|
(type == "directory" && (baseName == "build" || baseName == ".idea" || baseName == ".gradle"))
|
||||||
|
|| (lib.hasSuffix ".iml" baseName)
|
||||||
|
);
|
||||||
|
src = ../.;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
gradleInstallFlags = [ ":app:installDist" ];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/{bin,/lib/gradle2nix}
|
||||||
|
cp -r app/build/install/gradle2nix/* $out/lib/gradle2nix/
|
||||||
|
rm $out/lib/gradle2nix/bin/gradle2nix.bat
|
||||||
|
ln -sf $out/lib/gradle2nix/bin/gradle2nix $out/bin
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit buildGradlePackage buildMavenRepo gradleSetupHook;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
inherit (gradle.meta) platforms;
|
||||||
|
description = "Wrap Gradle builds with Nix";
|
||||||
|
homepage = "https://github.com/tadfisher/gradle2nix";
|
||||||
|
license = licenses.asl20;
|
||||||
|
maintainers = with maintainers; [ tadfisher ];
|
||||||
|
mainProgram = "gradle2nix";
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user