initial commit
This commit is contained in:
26
flake.nix
Normal file
26
flake.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
openhab-distro = {
|
||||||
|
url = "github:openhab/openhab-distro";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { flake-utils, nixpkgs, openhab-distro, ... }: flake-utils.lib.eachDefaultSystem (system: {
|
||||||
|
packages = rec {
|
||||||
|
jdk-openhab = nixpkgs.legacyPackages.${system}.jdk11;
|
||||||
|
maven-openhab = nixpkgs.legacyPackages.${system}.maven.override { jdk = jdk-openhab; };
|
||||||
|
openhab-repository = nixpkgs.legacyPackages.${system}.callPackage ./openhab-repository.nix {
|
||||||
|
inherit openhab-distro;
|
||||||
|
maven = maven-openhab;
|
||||||
|
};
|
||||||
|
openhab = nixpkgs.legacyPackages.${system}.callPackage ./openhab.nix {
|
||||||
|
inherit openhab-distro openhab-repository jdk-openhab;
|
||||||
|
maven = maven-openhab;
|
||||||
|
};
|
||||||
|
default = openhab;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
25
openhab-repository.nix
Normal file
25
openhab-repository.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Downloads various dependencies for the openhab build.
|
||||||
|
{ lib, stdenv, maven, openhab-distro }:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "openhab-repository";
|
||||||
|
version = openhab-distro.shortRev;
|
||||||
|
nativeBuildInputs = [ maven ];
|
||||||
|
src = openhab-distro;
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
mvn -B -T 128 -Drelease -Dmaven.repo.local="$out" package
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
# Delete all ephemeral files with lastModified timestamps inside
|
||||||
|
find "$out" -type f '(' \
|
||||||
|
-name '*.lastUpdated' -or \
|
||||||
|
-name 'resolver-status.properties' -or \
|
||||||
|
-name '_remote.repositories' ')' -delete
|
||||||
|
'';
|
||||||
|
|
||||||
|
dontFixup = true;
|
||||||
|
outputHashAlgo = "sha256";
|
||||||
|
outputHashMode = "recursive";
|
||||||
|
outputHash = builtins.readFile ./openhab-repository.sha256;
|
||||||
|
}
|
||||||
1
openhab-repository.sha256
Normal file
1
openhab-repository.sha256
Normal file
@@ -0,0 +1 @@
|
|||||||
|
sha256-po8EjHV8lPUOxkuOnZ5mQOODg+LAhgazfx7wW6Modqc=
|
||||||
71
openhab.nix
Normal file
71
openhab.nix
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
gawk,
|
||||||
|
bash,
|
||||||
|
coreutils,
|
||||||
|
jdk-openhab,
|
||||||
|
makeWrapper,
|
||||||
|
lib,
|
||||||
|
maven,
|
||||||
|
openhab-distro,
|
||||||
|
openhab-repository,
|
||||||
|
stdenv,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "openhab";
|
||||||
|
version = openhab-distro.shortRev;
|
||||||
|
src = openhab-distro;
|
||||||
|
nativeBuildInputs = [ makeWrapper maven ];
|
||||||
|
buildInputs = [ bash ];
|
||||||
|
outputs = [ "out" "demo" ];
|
||||||
|
extraPath = lib.makeBinPath [ jdk-openhab gawk coreutils ];
|
||||||
|
wrappedExecutables = [
|
||||||
|
"start.sh"
|
||||||
|
"start_debug.sh"
|
||||||
|
"runtime/bin/karaf"
|
||||||
|
"runtime/bin/backup"
|
||||||
|
"runtime/bin/client"
|
||||||
|
"runtime/bin/instance"
|
||||||
|
"runtime/bin/karaf"
|
||||||
|
"runtime/bin/restore"
|
||||||
|
"runtime/bin/shell"
|
||||||
|
"runtime/bin/start"
|
||||||
|
"runtime/bin/status"
|
||||||
|
"runtime/bin/stop"
|
||||||
|
"runtime/bin/update"
|
||||||
|
];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
echo "Using repository ${openhab-repository}"
|
||||||
|
cp -r ${openhab-repository} ./repository
|
||||||
|
chmod -R +rw ./repository
|
||||||
|
mvn --offline -B -T $NIX_BUILD_CORES -Drelease -Dmaven.repo.local=./repository package
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir $out
|
||||||
|
tar -C $out -xf distributions/openhab/target/openhab-3.4.2.tar.gz
|
||||||
|
mv distributions/openhab-addons/target/openhab-addons-3.4.2.kar $out/addons/
|
||||||
|
mkdir $demo
|
||||||
|
tar -C $demo -xf distributions/openhab-demo/target/openhab-demo-3.4.2.tar.gz
|
||||||
|
|
||||||
|
rm -rfv \
|
||||||
|
"$out/"*.bat \
|
||||||
|
"$out/runtime/bin/"*.bat \
|
||||||
|
"$out/runtime/bin/"*.ps1 \
|
||||||
|
"$out/runtime/bin/"*.psm1 \
|
||||||
|
"$out/runtime/bin/"*.lst
|
||||||
|
|
||||||
|
for exe in $wrappedExecutables; do
|
||||||
|
echo "Wrapping $exe…"
|
||||||
|
wrapProgram $out/$exe --prefix PATH ':' $extraPath
|
||||||
|
done
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user