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;
|
||||
doInstallCheck = true;
|
||||
|
||||
src = lib.fileset.toSource {
|
||||
root = ./.;
|
||||
fileset = lib.fileset.unions [
|
||||
./Cargo.toml
|
||||
./Cargo.lock
|
||||
./src
|
||||
];
|
||||
phases = [ "unpackPhase" "patchPhase" "installPhase" ];
|
||||
|
||||
src = linkFarm "dynix-source" {
|
||||
inherit (self) dynixCommand dynixModules;
|
||||
};
|
||||
|
||||
dynixModules = stdenv.mkDerivation (modulesSelf: {
|
||||
pname = "dynix-modules";
|
||||
installPhase = lib.dedent ''
|
||||
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) 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 {
|
||||
root = ./modules/dynamicism;
|
||||
fileset = lib.fileset.unions [
|
||||
|
|
@ -51,27 +102,18 @@ in {
|
|||
modulesOut = "${placeholder "out"}/share/nixos/modules/dynix";
|
||||
|
||||
installPhase = lib.dedent ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p "$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 = {
|
||||
path,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue