53 lines
1.8 KiB
Nix
53 lines
1.8 KiB
Nix
{
|
|
description = "Nix flake wrapper around keycloak";
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, flake-utils }:
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
keycloak-src = pkgs.fetchzip {
|
|
url = "https://github.com/keycloak/keycloak/releases/download/21.1.1/keycloak-21.1.1.tar.gz";
|
|
hash = "sha256-ZX5UKjU9BEtO/uA25WhSUmeO6jQ1FpKF1irFx2fwPBU=";
|
|
};
|
|
keycloak-build-script = ''
|
|
export JAVA_HOME=${pkgs.graalvm17-ce}
|
|
cp lib/lib/main/org.keycloak.keycloak-themes-21.1.1.jar providers
|
|
mkdir -p data/password-blacklists
|
|
mkdir -p data/tmp
|
|
echo "$(tail -n +2 bin/kc.sh)" >> bin/kc.new.sh
|
|
chmod +x bin/kc.new.sh
|
|
bin/kc.new.sh build --db dev-file
|
|
'';
|
|
keycloak-dev-build = pkgs.stdenv.mkDerivation {
|
|
name = "keycloak-dev-build";
|
|
src = keycloak-src;
|
|
buildPhase = keycloak-build-script;
|
|
installPhase = ''
|
|
cp -r . $out
|
|
'';
|
|
};
|
|
dev-server = pkgs.writeShellApplication {
|
|
name = "custom-server";
|
|
runtimeInputs = [pkgs.graalvm17-ce keycloak-dev-build];
|
|
text = "export keycloak=${keycloak-dev-build}\n" + (builtins.readFile ./dev-server.sh);
|
|
};
|
|
server = pkgs.writeShellApplication {
|
|
name = "keycloak";
|
|
runtimeInputs = [pkgs.graalvm17-ce keycloak-src];
|
|
text = "export keycloak=${keycloak-dev-build}\n" + (builtins.readFile ./server.sh);
|
|
|
|
};
|
|
|
|
in
|
|
{
|
|
packages = {
|
|
default = server;
|
|
};
|
|
}
|
|
);
|
|
}
|