Tom Hubrecht
ecbad0a638
All checks were successful
Check workflows / check_workflows (push) Successful in 21s
Run pre-commit on all files / check (push) Successful in 24s
Check meta / check_dns (pull_request) Successful in 19s
Check meta / check_meta (pull_request) Successful in 18s
Check workflows / check_workflows (pull_request) Successful in 19s
Build all the nodes / bridge01 (pull_request) Successful in 1m13s
Build all the nodes / geo01 (pull_request) Successful in 1m14s
Build all the nodes / compute01 (pull_request) Successful in 1m44s
Build all the nodes / geo02 (pull_request) Successful in 1m12s
Build all the nodes / rescue01 (pull_request) Successful in 1m30s
Build all the nodes / storage01 (pull_request) Successful in 1m29s
Build all the nodes / vault01 (pull_request) Successful in 1m26s
Build all the nodes / web02 (pull_request) Successful in 1m19s
Run pre-commit on all files / check (pull_request) Successful in 24s
Build all the nodes / web01 (pull_request) Successful in 1m56s
Build all the nodes / web03 (pull_request) Successful in 1m25s
This adds subdirectories for the different types of systems, for the modules and the machines
152 lines
3.3 KiB
Nix
152 lines
3.3 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
sources,
|
|
...
|
|
}:
|
|
|
|
let
|
|
inherit (lib) mapAttrsToList;
|
|
|
|
host = "cas.eleves.ens.fr";
|
|
port = 9889;
|
|
|
|
python3 =
|
|
let
|
|
nix-pkgs = import sources.nix-pkgs {
|
|
inherit pkgs;
|
|
python3 = pkgs.python312;
|
|
};
|
|
in
|
|
pkgs.python312.override {
|
|
packageOverrides = _: _: {
|
|
inherit (nix-pkgs) django-browser-reload django-bulma-forms loadcredential;
|
|
|
|
django-cas-server = nix-pkgs.django-cas-server.overridePythonAttrs (_: {
|
|
patches = [ ./01-pytest-cas.patch ];
|
|
});
|
|
};
|
|
};
|
|
|
|
pythonEnv = python3.withPackages (ps: [
|
|
ps.django
|
|
ps.ldap3
|
|
ps.gunicorn
|
|
ps.psycopg
|
|
|
|
# Local packages
|
|
ps.django-browser-reload
|
|
ps.django-bulma-forms
|
|
ps.django-cas-server
|
|
ps.loadcredential
|
|
]);
|
|
|
|
staticDrv = pkgs.stdenv.mkDerivation {
|
|
name = "cas_eleves-static";
|
|
|
|
src = sources.cas-eleves;
|
|
|
|
nativeBuildInputs = [ pythonEnv ];
|
|
|
|
configurePhase = ''
|
|
export CE_STATIC_ROOT=$out/static
|
|
export CE_DEBUG=true
|
|
export CREDENTIALS_DIRECTORY=$(pwd)/.credentials
|
|
'';
|
|
|
|
doBuild = false;
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/static
|
|
python3 manage.py collectstatic
|
|
'';
|
|
};
|
|
in
|
|
|
|
{
|
|
systemd.services = {
|
|
django-cas-eleves = {
|
|
description = "ENS CAS server";
|
|
wantedBy = [ "multi-user.target" ];
|
|
after = [
|
|
"network.target"
|
|
"postgresql.service"
|
|
];
|
|
|
|
serviceConfig = {
|
|
DynamicUser = true;
|
|
LoadCredential = mapAttrsToList (name: value: "${name}:${value}") {
|
|
SECRET_KEY = config.age.secrets."cas_eleves-secret_key_file".path;
|
|
};
|
|
StateDirectory = "django-cas-eleves";
|
|
User = "cas_server";
|
|
WorkingDirectory = sources.cas-eleves;
|
|
};
|
|
|
|
environment = {
|
|
CE_ALLOWED_HOSTS = builtins.toJSON [
|
|
"cas-eleves.dgnum.eu"
|
|
"cas.eleves.ens.fr"
|
|
];
|
|
CE_STATIC_ROOT = staticDrv;
|
|
};
|
|
|
|
path = [ pythonEnv ];
|
|
|
|
script = ''
|
|
python3 manage.py loaddata patterns
|
|
python3 manage.py migrate
|
|
gunicorn app.wsgi --pythonpath ${sources.cas-eleves} -b 127.0.0.1:${builtins.toString port} --workers=2 --threads=4
|
|
'';
|
|
};
|
|
|
|
cas-eleves-cleanup = {
|
|
description = "Periodic cleanup of cas_server database";
|
|
|
|
startAt = "daily";
|
|
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
|
|
LoadCredential = mapAttrsToList (name: value: "${name}:${value}") {
|
|
SECRET_KEY = config.age.secrets."cas_eleves-secret_key_file".path;
|
|
};
|
|
StateDirectory = "django-cas-eleves";
|
|
User = "cas_server";
|
|
WorkingDirectory = sources.cas-eleves;
|
|
};
|
|
|
|
path = [ pythonEnv ];
|
|
|
|
script = ''
|
|
python3 manage.py clearsessions
|
|
python3 manage.py cas_clean_sessions
|
|
python3 manage.py cas_clean_tickets
|
|
'';
|
|
};
|
|
};
|
|
|
|
dgn-redirections.permanent."cas-eleves.dgnum.eu" = "cas.eleves.ens.fr";
|
|
|
|
dgn-web.simpleProxies.cas-eleves = {
|
|
inherit host port;
|
|
vhostConfig = {
|
|
serverAliases = [ "cas-eleves.dgnum.eu" ];
|
|
locations = {
|
|
"/static/".root = staticDrv;
|
|
"= /robots.txt".root = "${staticDrv}/static";
|
|
};
|
|
};
|
|
};
|
|
|
|
services.postgresql = {
|
|
ensureDatabases = [ "cas_server" ];
|
|
ensureUsers = [
|
|
{
|
|
name = "cas_server";
|
|
ensureDBOwnership = true;
|
|
}
|
|
];
|
|
};
|
|
}
|