packaging: split derivations correctly to avoid Rust rebuilds for module
changes
This commit is contained in:
parent
26397ccf37
commit
da509d97c7
1 changed files with 67 additions and 25 deletions
92
package.nix
92
package.nix
|
|
@ -27,18 +27,69 @@ in {
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
doInstallCheck = true;
|
doInstallCheck = true;
|
||||||
|
|
||||||
src = lib.fileset.toSource {
|
phases = [ "unpackPhase" "patchPhase" "installPhase" ];
|
||||||
root = ./.;
|
|
||||||
fileset = lib.fileset.unions [
|
src = linkFarm "dynix-source" {
|
||||||
./Cargo.toml
|
inherit (self) dynixCommand dynixModules;
|
||||||
./Cargo.lock
|
|
||||||
./src
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
dynixModules = stdenv.mkDerivation (modulesSelf: {
|
installPhase = lib.dedent ''
|
||||||
pname = "dynix-modules";
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p "$out"
|
||||||
|
cp -r --reflink=auto "$dynixCommand/"* "$out/"
|
||||||
|
mkdir -p "$modules"
|
||||||
|
cp -r --reflink=auto "$dynixModules/"* "$modules/"
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
#
|
||||||
|
# SUB-DERIVATONS
|
||||||
|
#
|
||||||
|
|
||||||
|
dynixCommand = stdenv.mkDerivation (finalAttrs: let
|
||||||
|
commandSelf = finalAttrs.finalPackage;
|
||||||
|
in {
|
||||||
|
pname = "${self.pname}-command";
|
||||||
inherit (self) version;
|
inherit (self) version;
|
||||||
|
inherit (self) strictDeps __structuredAttrs;
|
||||||
|
inherit (self) doCheck doInstallCheck;
|
||||||
|
|
||||||
|
src = lib.fileset.toSource {
|
||||||
|
root = ./.;
|
||||||
|
fileset = lib.fileset.unions [
|
||||||
|
./Cargo.toml
|
||||||
|
./Cargo.lock
|
||||||
|
./src
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoDeps = rustPlatform.importCargoLock {
|
||||||
|
lockFile = ./Cargo.lock;
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = rustHooks.asList ++ [
|
||||||
|
cargo
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeInstallCheckInputs = [
|
||||||
|
versionCheckHook
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
mainProgram = "dynix";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
dynixModules = stdenv.mkDerivation (finalAttrs: let
|
||||||
|
modulesSelf = finalAttrs.finalPackage;
|
||||||
|
in {
|
||||||
|
pname = "${self.pname}-modules";
|
||||||
|
inherit (self) version;
|
||||||
|
inherit (self) strictDeps __structuredAttrs;
|
||||||
|
inherit (self) doCheck doInstallCheck;
|
||||||
|
|
||||||
src = lib.fileset.toSource {
|
src = lib.fileset.toSource {
|
||||||
root = ./modules/dynamicism;
|
root = ./modules/dynamicism;
|
||||||
fileset = lib.fileset.unions [
|
fileset = lib.fileset.unions [
|
||||||
|
|
@ -51,27 +102,18 @@ in {
|
||||||
modulesOut = "${placeholder "out"}/share/nixos/modules/dynix";
|
modulesOut = "${placeholder "out"}/share/nixos/modules/dynix";
|
||||||
|
|
||||||
installPhase = lib.dedent ''
|
installPhase = lib.dedent ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
mkdir -p "$modulesOut"
|
mkdir -p "$modulesOut"
|
||||||
cp -r "$src/"* "$modulesOut/"
|
cp -r "$src/"* "$modulesOut/"
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
||||||
cargoDeps = rustPlatform.importCargoLock {
|
#
|
||||||
lockFile = ./Cargo.lock;
|
# ----------------------------------------------------------------------------
|
||||||
};
|
#
|
||||||
|
|
||||||
nativeBuildInputs = rustHooks.asList ++ [
|
|
||||||
cargo
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeInstallCheckInputs = [
|
|
||||||
versionCheckHook
|
|
||||||
];
|
|
||||||
|
|
||||||
postFixup = lib.dedent ''
|
|
||||||
mkdir -p "$modules"
|
|
||||||
cp -r --reflink=auto "$dynixModules/"* "$modules/"
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru.mkDevShell = {
|
passthru.mkDevShell = {
|
||||||
path,
|
path,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue