auth: selfprivacy.sso.useKanidm_1_4
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
nixos-unstable: { config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
domain = config.selfprivacy.domain;
|
domain = config.selfprivacy.domain;
|
||||||
subdomain = "auth";
|
subdomain = "auth";
|
||||||
@@ -82,17 +82,6 @@ let
|
|||||||
lua_path = "${lua_core_path};${lua_lrucache_path};";
|
lua_path = "${lua_core_path};${lua_lrucache_path};";
|
||||||
in
|
in
|
||||||
lib.mkIf config.selfprivacy.sso.enable {
|
lib.mkIf config.selfprivacy.sso.enable {
|
||||||
nixpkgs.overlays = [
|
|
||||||
(
|
|
||||||
_final: prev: {
|
|
||||||
inherit (nixos-unstable.legacyPackages.${prev.system})
|
|
||||||
kanidm
|
|
||||||
kanidm-provision
|
|
||||||
;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
];
|
|
||||||
|
|
||||||
networking.hosts = {
|
networking.hosts = {
|
||||||
# Allow the services to communicate with kanidm even if
|
# Allow the services to communicate with kanidm even if
|
||||||
# there is no DNS record yet
|
# there is no DNS record yet
|
||||||
|
52
auth/kanidm-provision.nix
Normal file
52
auth/kanidm-provision.nix
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
rustPlatform,
|
||||||
|
fetchFromGitHub,
|
||||||
|
yq,
|
||||||
|
versionCheckHook,
|
||||||
|
nix-update-script,
|
||||||
|
nixosTests,
|
||||||
|
}:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "kanidm-provision";
|
||||||
|
version = "1.2.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "oddlama";
|
||||||
|
repo = "kanidm-provision";
|
||||||
|
tag = "v${version}";
|
||||||
|
hash = "sha256-+NQJEAJ0DqKEV1cYZN7CLzGoBJNUL3SQAMmxRQG5DMI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
tomlq -ti '.package.version = "${version}"' Cargo.toml
|
||||||
|
'';
|
||||||
|
|
||||||
|
useFetchCargoVendor = true;
|
||||||
|
cargoHash = "sha256-uo/TGyfNChq/t6Dah0HhXhAwktyQk0V/wewezZuftNk=";
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
yq # for `tomlq`
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||||
|
versionCheckProgramArg = "--version";
|
||||||
|
doInstallCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
tests = { inherit (nixosTests) kanidm-provisioning; };
|
||||||
|
updateScript = nix-update-script { };
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A small utility to help with kanidm provisioning";
|
||||||
|
homepage = "https://github.com/oddlama/kanidm-provision";
|
||||||
|
license = with lib.licenses; [
|
||||||
|
asl20
|
||||||
|
mit
|
||||||
|
];
|
||||||
|
maintainers = with lib.maintainers; [ oddlama ];
|
||||||
|
mainProgram = "kanidm-provision";
|
||||||
|
};
|
||||||
|
}
|
17
flake.lock
generated
17
flake.lock
generated
@@ -31,10 +31,27 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-2411": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1744440957,
|
||||||
|
"narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-24.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixos-unstable": "nixos-unstable",
|
"nixos-unstable": "nixos-unstable",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixpkgs-2411": "nixpkgs-2411",
|
||||||
"selfprivacy-api": "selfprivacy-api"
|
"selfprivacy-api": "selfprivacy-api"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
32
flake.nix
32
flake.nix
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = github:nixos/nixpkgs;
|
nixpkgs.url = github:nixos/nixpkgs;
|
||||||
|
nixpkgs-2411.url = github:nixos/nixpkgs/f6687779bf4c396250831aa5a32cbfeb85bb07a3;
|
||||||
nixos-unstable.url = github:nixos/nixpkgs/nixos-unstable;
|
nixos-unstable.url = github:nixos/nixpkgs/nixos-unstable;
|
||||||
|
|
||||||
selfprivacy-api.url =
|
selfprivacy-api.url =
|
||||||
@@ -11,7 +12,7 @@
|
|||||||
selfprivacy-api.inputs.nixpkgs.follows = "nixpkgs";
|
selfprivacy-api.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixos-unstable, selfprivacy-api }: {
|
outputs = { self, nixpkgs, nixpkgs-2411, nixos-unstable, selfprivacy-api }: {
|
||||||
nixosConfigurations-fun =
|
nixosConfigurations-fun =
|
||||||
{ hardware-configuration
|
{ hardware-configuration
|
||||||
, deployment
|
, deployment
|
||||||
@@ -25,11 +26,34 @@
|
|||||||
hardware-configuration
|
hardware-configuration
|
||||||
deployment
|
deployment
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
(import ./auth/auth.nix nixos-unstable)
|
./auth/auth.nix
|
||||||
{
|
({ config, ... }: {
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(
|
||||||
|
_final: prev:
|
||||||
|
let
|
||||||
|
pkgs2411 =
|
||||||
|
nixpkgs-2411.legacyPackages.${prev.system};
|
||||||
|
pkgs-unstable =
|
||||||
|
nixos-unstable.legacyPackages.${prev.system};
|
||||||
|
in
|
||||||
|
if config.selfprivacy.sso.useKanidm_1_4 or false
|
||||||
|
then
|
||||||
|
{
|
||||||
|
inherit (pkgs2411) kanidm;
|
||||||
|
kanidm-provision =
|
||||||
|
pkgs2411.callPackage ./auth/kanidm-provision.nix { };
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
inherit (pkgs-unstable) kanidm kanidm-provision;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
disabledModules = [ "services/security/kanidm.nix" ];
|
disabledModules = [ "services/security/kanidm.nix" ];
|
||||||
imports = [ ./auth/kanidm.nix ];
|
imports = [ ./auth/kanidm.nix ];
|
||||||
}
|
})
|
||||||
selfprivacy-api.nixosModules.default
|
selfprivacy-api.nixosModules.default
|
||||||
({ pkgs, lib, ... }: {
|
({ pkgs, lib, ... }: {
|
||||||
environment.etc = (lib.attrsets.mapAttrs'
|
environment.etc = (lib.attrsets.mapAttrs'
|
||||||
|
@@ -45,6 +45,11 @@ with lib;
|
|||||||
default = false;
|
default = false;
|
||||||
type = types.nullOr types.bool;
|
type = types.nullOr types.bool;
|
||||||
};
|
};
|
||||||
|
useKanidm_1_4 = mkOption {
|
||||||
|
description = "Whether to use Kanidm v1.4 (instead of upstream).";
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
stateVersion = mkOption {
|
stateVersion = mkOption {
|
||||||
description = "State version of the server";
|
description = "State version of the server";
|
||||||
|
Reference in New Issue
Block a user