Keycloak: Difference between revisions

imported>Nix
m Fix category
imported>Edelagnier
add guide to create a theme
Line 99: Line 99:


}
}
</nowiki>}}
== Keycloak themes on NixOS ==
You need to create a package for your custom theme and configure the keycloak service to use it
Here is a what a basic theme will look like :
    - configuration.nix
    - keycloak
        - custom_theme
            - login
                - resources
                    - css
                        - custom.css
                  - theme.properties
        - default.nix <- set of packages to be imported in your configuration.nix
        - keycloak_custom_theme.nix <- package for your theme
=== Create a theme ===
{{file|custom.css|css|<nowiki>
    body {
    background: red;
        color: blue;
    }
</nowiki>}}
{{file|theme.properties|bash|<nowiki>
    parent=base
    import=common/keycloak
    styles=css/custom.css
</nowiki>}}
=== Create a package ===
{{file|keycloak_custom_theme.nix|nix|<nowiki>
    { stdenv }:
    stdenv.mkDerivation rec {
      name = "keycloak_custom_theme";
      version = "1.0";
      src = ./keycloak_custom_theme;
      nativeBuildInputs = [ ];
      buildInputs = [ ];
      installPhase = ''
        mkdir -p $out
        cp -a login $out
      '';
    }
</nowiki>}}
=== Create a packages set ===
{{file|default.nix|nix|<nowiki>
    {pkgs, ...}: let
      callPackage = pkgs.callPackage;
    in {
      nixpkgs.overlays = [(final: prev: {
        custom_keycloak_themes = {
          custom = callPackage ./keycloak_custom_theme.nix {};
        };
      })];
    }
</nowiki>}}
=== Configure your keycloak service ===
{{file|configuration.nix|nix|<nowiki>
    { config, pkgs, lib, ... }:
    {
    imports =
    [ # Include the results of the hardware scan.
    ./hardware-configuration.nix
    ./keycloak
    ];
    ...
    environment.systemPackages = with pkgs; [
    ...
            # authentication requires
    keycloak
    custom_keycloak_themes.agatha
    ];
    ...
    services.keycloak = {
    enable = true;
    themes = with pkgs ; {
    custom = custom_keycloak_themes.custom;
    };
    ...
    }
</nowiki>}}
</nowiki>}}


[[Category: Applications]]
[[Category: Applications]]