Use NixNG for Radicale
This commit is contained in:
parent
a741e523a0
commit
7fdc63502a
4 changed files with 67 additions and 58 deletions
|
@ -595,16 +595,16 @@
|
||||||
"treefmt-nix": "treefmt-nix_2"
|
"treefmt-nix": "treefmt-nix_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1734195137,
|
"lastModified": 1734470616,
|
||||||
"narHash": "sha256-BO6DzwWe2U8FHSxavnFzKHZgobHf2ejI8uu9/AhbHtY=",
|
"narHash": "sha256-8pQ2ar2NVU3ehf1o9DHcn3rlsl440eOWcEv7bQfiOec=",
|
||||||
"owner": "pizzapim",
|
"owner": "pizzapim",
|
||||||
"repo": "NixNG",
|
"repo": "NixNG",
|
||||||
"rev": "b173ab68cbde3395edda3594d63de4de764f4934",
|
"rev": "fd29c877186dbb06d5593d734952baec199a5261",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "pizzapim",
|
"owner": "pizzapim",
|
||||||
"ref": "ntfy-sh",
|
"ref": "radicale",
|
||||||
"repo": "NixNG",
|
"repo": "NixNG",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
nixng = {
|
nixng = {
|
||||||
url = "github:pizzapim/NixNG/ntfy-sh";
|
url = "github:pizzapim/NixNG/radicale";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
58
images/radicale.nix
Normal file
58
images/radicale.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{
|
||||||
|
nglib,
|
||||||
|
nixpkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
nglib.makeSystem
|
||||||
|
(let
|
||||||
|
htpasswd_location = "/radicale_htpasswd";
|
||||||
|
in {
|
||||||
|
inherit nixpkgs;
|
||||||
|
system = "x86_64-linux";
|
||||||
|
name = "nixng-radicale";
|
||||||
|
|
||||||
|
config = {...}: {
|
||||||
|
dinit.enable = true;
|
||||||
|
|
||||||
|
init.services.radicale = {
|
||||||
|
shutdownOnExit = true;
|
||||||
|
|
||||||
|
tmpfiles = with nglib.nottmpfiles.dsl; [
|
||||||
|
(f htpasswd_location "-" "radicale" "radicale" _ "pim:$apr1$GUiTihkS$dDCkaUxFx/O86m6NCy/yQ.")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.radicale = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
hosts = "0.0.0.0:5232, [::]:5232";
|
||||||
|
ssl = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
encoding = {
|
||||||
|
request = "utf-8";
|
||||||
|
stock = "utf-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
auth = {
|
||||||
|
realm = "Radicale - Password Required";
|
||||||
|
type = "htpasswd";
|
||||||
|
htpasswd_filename = htpasswd_location;
|
||||||
|
htpasswd_encryption = "md5";
|
||||||
|
};
|
||||||
|
|
||||||
|
rights.type = "owner_only";
|
||||||
|
|
||||||
|
storage = {
|
||||||
|
type = "multifilesystem";
|
||||||
|
filesystem_folder = "/data";
|
||||||
|
};
|
||||||
|
|
||||||
|
logging = {};
|
||||||
|
headers = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
|
@ -1,5 +1,7 @@
|
||||||
{
|
{
|
||||||
|
self,
|
||||||
config,
|
config,
|
||||||
|
utils,
|
||||||
lib,
|
lib,
|
||||||
globals,
|
globals,
|
||||||
...
|
...
|
||||||
|
@ -8,39 +10,6 @@
|
||||||
|
|
||||||
config = lib.mkIf config.radicale.enable {
|
config = lib.mkIf config.radicale.enable {
|
||||||
kubernetes.resources = {
|
kubernetes.resources = {
|
||||||
configMaps.server.data = {
|
|
||||||
users = "pim:$apr1$GUiTihkS$dDCkaUxFx/O86m6NCy/yQ.";
|
|
||||||
|
|
||||||
config = lib.generators.toINI {} {
|
|
||||||
server = {
|
|
||||||
hosts = "0.0.0.0:5232, [::]:5232";
|
|
||||||
ssl = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
encoding = {
|
|
||||||
request = "utf-8";
|
|
||||||
stock = "utf-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
auth = {
|
|
||||||
realm = "Radicale - Password Required";
|
|
||||||
type = "htpasswd";
|
|
||||||
htpasswd_filename = "/config/users";
|
|
||||||
htpasswd_encryption = "md5";
|
|
||||||
};
|
|
||||||
|
|
||||||
rights.type = "owner_only";
|
|
||||||
|
|
||||||
storage = {
|
|
||||||
type = "multifilesystem";
|
|
||||||
filesystem_folder = "/data";
|
|
||||||
};
|
|
||||||
|
|
||||||
logging = {};
|
|
||||||
headers = {};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
deployments.server.spec = {
|
deployments.server.spec = {
|
||||||
selector.matchLabels.app = "radicale";
|
selector.matchLabels.app = "radicale";
|
||||||
|
|
||||||
|
@ -58,7 +27,7 @@
|
||||||
|
|
||||||
spec = {
|
spec = {
|
||||||
containers.radicale = {
|
containers.radicale = {
|
||||||
image = globals.images.radicale;
|
image = utils.nixSnapshotterRef (utils.mkNixNGImage "radicale" "${self}/images/radicale.nix");
|
||||||
ports.web.containerPort = 5232;
|
ports.web.containerPort = 5232;
|
||||||
imagePullPolicy = "IfNotPresent";
|
imagePullPolicy = "IfNotPresent";
|
||||||
|
|
||||||
|
@ -67,28 +36,10 @@
|
||||||
name = "data";
|
name = "data";
|
||||||
mountPath = "/data";
|
mountPath = "/data";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
name = "config";
|
|
||||||
mountPath = "/config/config";
|
|
||||||
subPath = "config";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "config";
|
|
||||||
mountPath = "/config/users";
|
|
||||||
subPath = "users";
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
volumes = {
|
volumes.data.persistentVolumeClaim.claimName = "data";
|
||||||
data.persistentVolumeClaim.claimName = "data";
|
|
||||||
config.configMap.name = "server";
|
|
||||||
};
|
|
||||||
|
|
||||||
securityContext = {
|
|
||||||
fsGroup = 2999;
|
|
||||||
fsGroupChangePolicy = "OnRootMismatch";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue