Programmierbeleg/flake.nix
2022-08-13 21:04:14 +01:00

115 lines
4.3 KiB
Nix

{
description = "A very basic flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = {
self,
nixpkgs,
flake-utils,
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
config = {
android_sdk.accept_license = true;
allowUnfree = true;
};
};
texlive-env = (pkgs.texlive.combine {
inherit (pkgs.texlive) scheme-basic
xetex
float xcolor varwidth fancyvrb multirow hanging adjustbox stackengine
enumitem alphalph ulem xkeyval collectbox etoolbox wasysym sectsty
tocloft newunicodechar caption etoc psnfss metafont helvetic courier
wasy wasy-type1
;
});
in rec {
formatter = pkgs.alejandra;
devShells.default = let
androidSdk = pkgs.androidenv.androidPkgs_9_0.androidsdk;
in
pkgs.mkShell {
buildInputs = with pkgs; [
androidSdk
glibc
doxygen
graphviz
texlive-env
];
# override the aapt2 that gradle uses with the nix-shipped version
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/libexec/android-sdk/build-tools/32.0.0/aapt2";
};
packages = rec {
invtracker-deps = pkgs.stdenv.mkDerivation {
pname = "invtracker-deps";
version = self.lastModifiedDate;
src = self;
nativeBuildInputs = with pkgs; [gradle openjdk_headless perl];
buildPhase = ''
export GRADLE_USER_HOME=$(mktemp -d)
# Fetch the maven deps
gradle --no-daemon --info -Dorg.gradle.java.home=${pkgs.openjdk_headless} --write-verification-metadata sha256
'';
installPhase = ''
find $GRADLE_USER_HOME/caches/modules-2 -type f -regex '.*\.\(jar\|pom\)$' \
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/maven/$x/$3/$4/$5" #e' \
| sh
'';
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "sha256-kW9pzfqOZwwvymS9If5wubkYHXM81YwHSSgzJjgnf0c=";
};
invtracker-server = pkgs.stdenv.mkDerivation {
pname = "invtracker-server";
version = self.lastModifiedDate;
src = self;
nativeBuildInputs = with pkgs; [gradle openjdk_headless];
buildPhase = ''
sed -i 's#gradlePluginPortal..#maven { url "${invtracker-deps}/maven" }#' settings.gradle
sed -i 's#google..#maven { url "${invtracker-deps}/maven" }#' settings.gradle
export GRADLE_USER_HOME=$(mktemp -d)
gradle --offline --no-daemon --info -Dorg.gradle.java.home=${pkgs.openjdk_headless} server:installDist
'';
installPhase = ''
cp -rv server/build/install/server $out/
'';
};
invtracker-client = let
androidSdk = pkgs.androidenv.androidPkgs_9_0.androidsdk;
in
pkgs.stdenv.mkDerivation rec {
pname = "invtracker-client";
version = self.lastModifiedDate;
src = self;
nativeBuildInputs = with pkgs; [gradle openjdk_headless androidSdk ];
buildPhase = ''
sed -i 's#gradlePluginPortal..#maven { url "${invtracker-deps}/maven" }#' settings.gradle
sed -i 's#google..#maven { url "${invtracker-deps}/maven" }#' settings.gradle
export GRADLE_USER_HOME=$(mktemp -d)
export ANDROID_HOME=${androidSdk}
gradle --offline --no-daemon --info -Dorg.gradle.java.home=${pkgs.openjdk_headless} app:build
'';
installPhase = ''
mkdir $out
cp app/build/outputs/apk/release/app-release-unsigned.apk $out/app.apk
mkdir $out/nix-support
echo "file binary-dist $out/app.apk" > $out/nix-support/hydra-build-products
echo "$pname-$version" > $out/nix-support/hydra-release-name
'';
};
invtracker-docs = pkgs.callPackage ./doc.nix { inherit self texlive-env; };
};
hydraJobs =
if system == "x86_64-linux"
then devShells // packages
else {};
});
}