Files
affinity-nix/packages/runner/package.nix
T

89 lines
1.9 KiB
Nix

{
pkgs,
lib,
inputs,
registry-patches,
wine-packages,
prefixBase,
name,
...
}:
let
craneLib = inputs.crane.mkLib pkgs;
src = craneLib.cleanCargoSource ../..;
commonArgs = {
inherit src;
strictDeps = true;
};
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
fileSetForCrate =
crate:
lib.fileset.toSource {
root = ../..;
fileset = lib.fileset.unions [
../../Cargo.toml
../../Cargo.lock
(craneLib.fileset.commonCargoSources crate)
];
};
env = {
WINE = lib.getExe wine-packages.wine;
WINESERVER = lib.getExe wine-packages.wineserver;
WINETRICKS = lib.getExe wine-packages.winetricks;
FUSE_OVERLAYFS = lib.getExe pkgs.fuse-overlayfs;
GNUTAR = lib.getExe pkgs.gnutar;
ZENITY = lib.getExe pkgs.zenity;
RSYNC = lib.getExe pkgs.rsync;
REGISTRY_PATCHES = registry-patches;
ON_LINUX = inputs.on-linux.outPath;
};
executableName = "affinity-${lib.toLower name}";
executable = craneLib.buildPackage (
commonArgs
// {
inherit cargoArtifacts env;
pname = executableName;
cargoExtraArgs = "-p runner --no-default-features --features ${lib.toLower name}";
src = fileSetForCrate ../../crates/runner;
meta.mainProgram = executableName;
postInstall = ''
mv $out/bin/runner $out/bin/affinity-${lib.toLower name}
'';
}
);
in
{
package =
pkgs.runCommand executableName
{
nativeBuildInputs = [ pkgs.makeWrapper ];
}
''
mkdir -p $out/bin
cp ${lib.getExe executable} $out/bin/${executableName}
wrapProgram $out/bin/${executableName} \
--set "LOWER_DIR" "${prefixBase}" \
'';
package-clippy = craneLib.cargoClippy (
commonArgs
// {
inherit cargoArtifacts env;
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
}
);
package-artifacts = cargoArtifacts;
}