feat(hackens-org): deploy ragb server

This commit is contained in:
sinavir 2024-10-12 17:45:41 +02:00
parent d5a8c00539
commit 8356e15211
16 changed files with 221 additions and 97 deletions

View file

@ -50,7 +50,7 @@ let
arch: p:
import p {
config.allowUnfree = true;
overlays = import ./pkgs/overlays.nix;
overlays = import ./pkgs/overlays.nix { inherit sources; };
system = arch;
};
@ -61,7 +61,7 @@ in
{
meta = {
specialArgs = {
inherit metadata;
inherit sources metadata;
};
nixpkgs = defaultNixpkgs;
nodeNixpkgs = concatAttrs (builtins.map mkNixpkgs nodes);

View file

@ -16,6 +16,7 @@
./matterbridge.nix
./nginx.nix
./orga
./ragb.nix
./snipe-it.nix
./secrets
./static-sites.nix

View file

@ -0,0 +1,78 @@
{
sources,
lib,
pkgs,
config,
...
}:
{
services.django.ragb = {
enable = true;
src = pkgs.ragb-src + "/frontend";
settings = {
DEBUG = false;
WEBSOCKET_ENDPOINT = "https://agb.hackens.org/api";
ALLOWED_HOSTS = [
"127.0.0.1"
"agb.hackens.org"
];
DATABASES = {
"default" = {
"ENGINE" = "django.db.backends.sqlite3";
"NAME" = "/var/lib/django-ragb/ragb_frontend.sqlite3";
};
};
};
processes = 2;
threads = 4;
port = 9991;
extraPackages = p: [
p.authens
p.pyjwt
];
secrets = {
SECRET_KEY = config.age.secrets.ragb.path;
JWT_SECRET = config.age.secrets.ragbJWT.path;
};
};
services.nginx.virtualHosts."agb.hackens.org" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
proxyPass = "http://localhost:9991";
};
"/api" = {
proxyPass = "http://localhost:9999";
proxyWebsockets = true;
};
"/static".root = config.services.django.ragb.staticAssets;
"= /api-docs" = {
return = "302 /api-docs/";
};
"/api-docs/" = {
alias = "${pkgs.ragb-src + "/api-docs/"}/";
extraConfig = "autoindex on;";
};
"= /api-docs/patch.json".alias = pkgs.ragb-src + "/frontend/patch.json";
};
};
systemd.services.django-ragb.serviceConfig = {
Wants = [ "ragb-backend.service" ];
};
systemd.services.ragb-backend = {
script = ''
export JWT_SECRET=$(cat $CREDENTIALS_DIRECTORY/jwt_secret)
export BK_FILE="$STATE_DIRECTORY/data.json"
# export RUST_LOG=info
${pkgs.ragb-backend}/bin/ragb-backend
'';
serviceConfig = {
LoadCredential = [
"jwt_secret:${config.age.secrets.ragbJWT.path}"
];
DynamicUser = true;
};
};
}

View file

@ -3,6 +3,12 @@
age.secrets."django" = {
file = ./django.age;
};
age.secrets."ragbJWT" = {
file = ./ragbJWT.age;
};
age.secrets."ragb" = {
file = ./ragb.age;
};
age.secrets."snipeit" = {
file = ./snipeit.age;
owner = "snipeit";

View file

@ -1,31 +1,30 @@
age-encryption.org/v1
-> ssh-ed25519 JGx7Ng WteJXpTnBzKZpognUrmY7vJkwvgxG2JlqPOkJ1BnoU0
Hn44BN9Sb0BhgWBDZR7Xm4AAeRY2LE7ILgtBi8D/QTA
-> ssh-ed25519 kXobKQ H0VlX0C2BfZWzA+c7tGaokBTGR855cTlE2qlZkKyZXg
9cTALIMwuoLyfjQ6AwzM+DWE1jLmxzoKuQ0NsGud+Ik
-> ssh-ed25519 7hZk0g XYW9TFHZ2ule9rmiOeTGPLEGEEhkTGvV946UwV1XVwQ
eOlzfpFFROTb2zni2A0cKwmnjvaUsZpSvDqW8E9mMZg
-> ssh-ed25519 JGx7Ng UMbo24t6bweWPSYr1MUpjW96t3+usu+M3+WmLkJpSTc
vW8wOX/E6p3YEh8rRObScdcKB+uCtVIEOQ58HXSHYRU
-> ssh-ed25519 kXobKQ wEsnzLjnW+tdNvBHYBL+pLQh0GsAviTiD7tODc+5nSc
gW8TEewhh4N0ed6KNe+PYBQuEmuL8iO+KxLQt2imbbo
-> ssh-ed25519 7hZk0g 2Y9Y3DSR9Zt5N1XXckNMlHEpczvsyruqBue54fC4lQY
1UTRMGuN4uXR2ljP+3h7y58dU9C4GCkfKMY6l6GgRas
-> ssh-ed25519 5rrg4g 6ILvq1I6OlTmvxhgo145YUdpNxZomFvCYl7nguL10kI
7DPETzO4s3J4+lHIlkWvo4M0zH2792NttKBIJ09xii4
-> ssh-rsa krWCLQ
1JcEgjO1//IKYtTSj6bwhjudrpcYuaHAa62lhIL0m6ScSaMcZhGIy8SWU+LvlgM4
eGYvzinsVhxCAgSJnD81yKSOjU0U+BoY1egx6DTAD59YR+IJ299yM1kjqjJhP3lc
fomOiDbr7mz0UoD2/Pe1Q2ps49rYkVH+ms7Dt9jKyYh7TwsyWitsvHEoXHjhG/u3
PjLCVe3ngJtPagl42g3otOpmiZ1ycx/HP9ppJvQYoH6VUt9x9nPjUqtUQf66jwSn
87lfDXpGoyPO/pKX+IR45zGE4mVHfYsGzfNJMHyE2AImqxfAoZxqmRdQiQLCVihy
4xuHqWeuHN+Q6KAvhlnhRA
-> ssh-ed25519 /vwQcQ ShQtj+r8CjS6zB2T4IYps21Wt8psIzrrff9NmibGQRI
dGBMjJfL11Asv+w5FrTJo1iknZZQNekcxoaLxmzAJAI
-> ssh-ed25519 0R97PA hhRQZ7ddcQtQfwLHADUz6LI3lofzMxNfsLBSsN+keUA
sMKxjsYj+f75tMsM6d4dqLgTozzRcCzZQf9rgjRi4Wk
-> ssh-ed25519 5rrg4g OETtCVypHjgLnenHGL6inIhhestIUEF0LVfJVu6HBSY
4GWYGsrHaCQURF6ffwN67Sz0DSwBWJ+cBn4WsA9+bm4
-> ssh-ed25519 cvTB5g 5QS4yEkwZDcRKx5w9ip/XW2RUKuDoR9hjT2rITG9bj0
a6uP4DJZuOEy5wFnCoM1pUd5p1ySSNXBd8WINORz314
-> ssh-ed25519 Wu8JLQ 4/ETnzSAyvb1rm30ZXxBvWrCVvYzmvEjjai4W+nfEmU
8YpBxgtgNASRGABkPIWV19iQdcK5OI2toSefifCJi6A
-> ssh-ed25519 EIt1vA pKBHFdt17ruSWarLGRMv9Jg5p4owmb05Chqi1waUlEM
21pDqeyKGbmkoHblA6LujvYNMo1DQ6u+0KjASPp88L4
-> ssh-ed25519 X51wxg p7PTrP8g6+85BCyujUAI6h8D5dQOWV4n72Cu2wQzBls
X9Sz+dmsnWfVn7RfdQoNdK9ifDKuyqa4QnIz+OfK1xY
--- JD+a9OJUT/rKwLe2m4naby7JV5VE/d4fDaeg2Edyl5I
]=Ë
<EFBFBD>ÄÓÝ»÷â<C3B7>8Ltømrœ]e-\Q=: ¿óYx×6—ÕÚýNôäîÉnIÓï©<C3AF>dc<64>€0YË0¥ŒC ]M ôD—
LdJzAaTTOSSxXTjLEv2n3pRjDJ8Cv/rLZZCsadK2vIK/2swax5loeprUzx60xRUt
3qLZuXocsE1S8sUq4E0lzyQXmJj3DtgjWFvvhDhsx+UnUPB/S7yojlNPLsqSxJkO
r5p6dvXsngF78BDDlFU/DnDI/tMnH6wL5PqV7iZiosSmASWxHMAQYcWGNZqdV1xl
9q2txZF7LxvE1S2eUOFcXTC7r8Z/kBt7XqPfGyBWI1wYPG2r2Zw+tbO8S04iZExT
Lj2YGnrNGGwNbREoqhMwAxDM6fLVoNnhHXoVQvCkr/wxk+sh2/Lt1ivcTT7Ua2YG
ApaavUan7cEs3ghnanM+6A
-> ssh-ed25519 /vwQcQ oaIOirE4++Kx76xSCoQ8EKmnI3Zh8rzou0XACYVY3Gw
H9DsHQPdKaN/5bz4kf224NiJ8W1ykGx9tARd5UUrMbc
-> ssh-ed25519 0R97PA SujU6d2DMDGX4zxsQwQTLFM2ap/3ni2y7zpU8BksTw0
zLuD8EwORd5aDOFBpE0Nm5gHpi8ChRobg6v7r1sNfMU
-> ssh-ed25519 cvTB5g t62LJ9atiYi5K+CBXXLB9obIZRWBKxrC896q6iCz/mA
WYkA2muGBMuXlO5ebnul3NkidNcyIWecAdNTo03trf0
-> ssh-ed25519 Wu8JLQ 3gzrf2TLDbG3YtMmO0qKVKiEPw+arN8DJvNiC09/4wg
bYCCgA0ve55hKEjGFa+nAelWiYWy6WFHss9R6uEjiUI
-> ssh-ed25519 EIt1vA kKs5NcxlLTt3iGD8stN7nOgOfomKEv2aZZ969dZNFlg
IQT3Fx9Egd4kJ6Q3gsbiymu8EHSrjG1F7T5Uz76Z6Bo
-> ssh-ed25519 X51wxg GU838E9JPhdAkYgRRcYi+gMsFFUTvY4iciFi9b43WhY
vsHQ70mCsW0NUzMKjgRq6czFD8FwIFj6uo/jklPzI68
--- axO8MoSOSkcp2HcVpAz9tQuuf0Unh2Ri20S60/Yq6xA
i¸0ä<36,Û{àu$apG7¢—Ú10Y•&«Øf7(&{3Û]àƒcÝ“ ¶>l¶P"$`ÝU(9¨ì5+°îJî^¼æé‚Ï»|†Õ:~

View file

@ -1,30 +1,31 @@
age-encryption.org/v1
-> ssh-ed25519 JGx7Ng eXYZhPOAu5XuLnLyVZEWG0yGReNd1NrYoZaYWk03rAw
rMmxeUr95ruA24E5rchZ7dWCaJOerRmulpjwbAtqqCA
-> ssh-ed25519 kXobKQ rJXA+IoLwVLV/EUlDBQztg1jDIj36u5k7C0wDEfR+UQ
2vWEQ52uMZ+cQvXIdMelvgzeUZ/8bENDJCQDHDuKLaU
-> ssh-ed25519 7hZk0g O9G401J2twPY8gB6uYTLkpDSMQRZB3ScmlS91WzWfjU
7piYGZj0UbyS+KnSVfZthI3HfaNcc0eadRAORtyTd0o
-> ssh-ed25519 JGx7Ng IWxk65t5YAq/Sg+0CCcLGJyDhvPydKm1D9rYAfCDjUc
ckB1V+J7Qddbt9EILraMge9RrThyTU2al5Eg6ffD7C4
-> ssh-ed25519 kXobKQ ZEECnMHvZL3+JfkQpSjuzIuGfcLIIcudeiMlanUUBhc
pBWa6DxVrinuv6urFDKPW2kSaa95FVFCXOFwMQ/X1RY
-> ssh-ed25519 7hZk0g la8ZgkcqYQgFzYoqgkZrdSuaK+89mPx9UbiSWGOVXjQ
4NWbJtWRUnZGMMLyDLArvZktfVfhXmgtn7h5oghH5Ms
-> ssh-ed25519 5rrg4g KC9SOs8NJ18pbE4/HwHmX8W5XSeu528dFl2tEt3JfW0
at+D2BMK1UAPsA2fkhMW5uHUjJSK2p+BPeFcfqyD/LA
-> ssh-rsa krWCLQ
bFQHI2oqIXEor7qbt4QJfPC0q4PanQ3lUp/sNJbsA54OZAW5b6yC2HOeYjbv1KQZ
JdOeKZEruUlxPkNBEUpvz777THUnwlTHNxRxO//mDyHGU9PwgyIQS0aMf4Vkpfn7
OZMJrCmyYh1Hx2olnJjioMC0H3hBeuAbm4hJYu1EEfhCzhyNc8jbgn8s0VTWBeDo
w8+Nxo3/IOimSI2qaZGBFl/3yE73KfuiYw68vRYkrPWGviDeyCEBJpYcmBsiu81s
e0mTkZdMBMwVwceaYakDc7fK8ij9s3fpKXvJ4EJ2qqUG6ThsHN4eHNNRbau10Zvs
YNKk3d6TpoyPl37eqy9i5w
-> ssh-ed25519 /vwQcQ DkKWQydhpA7Lu0NZH6VWG9Jxs8TdfpvV+eHLc8S82Xs
fvDQQntMZHrLNBxHWsR7R4hb5gnCzCVqPeHFTOrrBKg
-> ssh-ed25519 0R97PA 5Z29MXm0pPIkEihLzGI/hB82keRx+OoVwgHL+pTd1m4
l+FnUyvBzeeNT2dlbXJQQn5QNd+2za58BwPCqE1rTWw
-> ssh-ed25519 5rrg4g 2uDRtM8kUl/Vhws4ibsZiw4Fo7pmgx4MyJtNjyKLTRY
ZOuKQfrs1d4hzvwur8BCPd3BXOP0vGewpgfkUKahEU4
-> ssh-ed25519 cvTB5g gOS3PUBQlBWqmKIq99lT10hqEEmCKg2xlxfbWSAtxFM
i63Ilu0tzXEtUlJ8jKlCW9SM+un+KePGXbaBr96rb54
-> ssh-ed25519 Wu8JLQ 2nRMfMlSNQVOdZGklQfgkH2jv8ECmRKML99H1iPbNys
bLxntIPxKRBqEu+ovCU2NJklH1UEQr7miSg83Pfrskk
-> ssh-ed25519 EIt1vA 9MwmTDKECbLsFwQYfQaF6RlOmYdlu3iLOCFQopifuiQ
GZl2HMbgI+u6oAVFSa6zV+d3ra9QbmJcITsrMbxU/pk
-> ssh-ed25519 X51wxg qRnN1ZKEBckkixg7wgAqDphIRULurzrd+dj8l2u6RRQ
gfdYoCOppQ/ztSY9tEa8PYEbyx5rzu3Qu7Ba/OvcA78
--- q31//bFmbqBhs9r8hy21qyVIwqSy7sYXRn1a/XIrfJc
íËÁî†*R·ÿªTÎRÅÅtÄr˜ÿCóAÏ_j]DpÏnö•÷w ÕJ`jž_fýgO¹Ðö¨ÁO®<4F>XˆªŠ1¬wÌ€v<>Ê
U0DpCXNugnsPlWvDJZIwlFA3lCg/uihhLmLFYsdpwpx7kdyRF3KGn9p4X0kfjNQa
PjT7akh+xaCC9a3GRDEsc3B4L6M/91YdiIX5kCtWccT3fFkdC8xrHnVblE0h6vYM
+I4ay5PR9etittiMIb3coanBU5gZpAhCFvSNjWIV3YvchpOtWO2PL8rR9fRqDfmT
BdTZMUOm01vuFuPFKmzKNbQS5ydwydv8BGc1MktqoyhafYVBirnVcwtsTQKZKDEL
CBNgH81down+UFaCi/FTSffkBtBfnl1mzCF3TJ0CrSeEMgyY5yxvtWHUksDzznfJ
C2ev+95nbRYUSM+OOBABHQ
-> ssh-ed25519 /vwQcQ C7TusZYxTvR03xbxEmUf8+ePmdTRBbi4eAeg2+kbAAY
3YpLUT5mmGLSel0vPpDUwPyFav1z/HCAsPsYA7woQas
-> ssh-ed25519 0R97PA iQRH2sRnDsNoWuom8fVt8naGMrVAX3JAPmwnU/pZ3m8
CipYmklGkMXYlWyhatEj7cGk51RNdfkkwlKPz26Q220
-> ssh-ed25519 cvTB5g 05g8kd7yu1+4JzFCrqMEZ6QNsO8VE2egXOUR73fo/hM
AY/8cMfVTyOY4z08Hz6cLnKrM1GYZbbgpwPVnwnJ3NU
-> ssh-ed25519 Wu8JLQ Bn0shD1/Uzb3VdAOuyNeHSzLaboxhAUsqQWXycZYDFc
V2EHtwK0CUdLYCzia43m4WmBxFy8frfR0hkdIkARnl4
-> ssh-ed25519 EIt1vA FmznskIDNtFkD6HD64uL5OS2rwPwT1S5lCirtYFW0Rk
3TKTCN45ygLTcrfSRdsXJZKdoz+A3tP7lXbNn2NOhvk
-> ssh-ed25519 X51wxg X3KyzjW97PF8CFcb0NWW5F6JNMZslmP22d0+r0FRvlo
mZq7lSEnD3Ui7hcloSCdTH/q4mB2q6lFTvzMRS+BCb4
--- 4u64XNKKDMEaWeL4wLdkOgugYTkrqpfoFeG/BW4/zK8
)Éé9çèñ”ÖÙ
È.kâùô}O<>0Š«6ï'¥áJ¼}ŒýW(„ÖÖ·V>dè$ö8icjw hÂ<aöÞ¿43Ð5NŒUºÎÎègYÃ

View file

@ -0,0 +1,30 @@
age-encryption.org/v1
-> ssh-ed25519 JGx7Ng 6s1XuhN3TFuW433ZrghssoyScvjqG6tg+ZSvHBwYOjQ
54ijsvv7CO/1L9ib4fgiRAQHmlU2r3j/fbc79qiAo38
-> ssh-ed25519 kXobKQ WMApvaovS/ddPbz7Eh9bCF3SzmUJN1NQGMKzWCJ6jQc
3NehvO3X7uMU/H7g7d4nFsmHk0PhXrRT1XetWUBHAnY
-> ssh-ed25519 7hZk0g RqNPzJqoSY1umAJE/FPZ+MR0R9eCDdxonzuh3uMBRhI
Cfou0mqV4gHGP7OJbgPm8VotU4cM5YVX3iUkd6myU+E
-> ssh-ed25519 5rrg4g mSZUVF9y4vYfBbjgP0UnSfgaGTC3/Yx+fAFquA5022E
1yiri7+CZTSUhPpJlo9f1EraRVl3Ihw4wtjgXJPMRqY
-> ssh-rsa krWCLQ
gMc7ogvibqMuboKqSgqfedIxqyhhljJFp5zI2bK6D5rdcV5CIPVz2xQdk4h678Qg
8pYlg1+UDu+JyXvJgtWZHYMGSs17woIYZmw9UQh+IYMo4Qn89tn4QN4exYwB+7gm
dWEqo7GggWG0Mu2w2OVu2oB1D5aUvF940hUCyl40V7hIkMpJwFfMfvvD04XsScXV
GLpWNYcWIQNaBAxTWRGkpt9jvD1W/DjsOUhOk0BP5hnSPm39awfLFRo3wWFBiaDq
yPRi6P8AJdVWS2n+KdQ1j5dLo19DngkUAmepIR+oiNvgIFKqDAvIB5y30d3guGdP
7zCS7IEOOMLQvBiq99DU2Q
-> ssh-ed25519 /vwQcQ GWEth3AXh2blSPzXzyqaHdRlA+Qmopvdk9DfL69PVlk
sVq7EbVmJ0SnYLueCHB5zOr/aR9QurTqtMIXGdL22cY
-> ssh-ed25519 0R97PA gZLoe8C+FTOXM0i4VWBwBSNSxZhfxG6U3pakRBDwZ0k
LKxzJofqUfdY1swAbRNcOcWfZJ1lbp7S20y+dfjKvUU
-> ssh-ed25519 cvTB5g GbEB6Z/6A/ntU8truri+tshuy5tqYSSo5SF0Brt0VgI
DOkGd68tE85ajEBmKUx9HXiKLjCdUf/tKME6+Ems/RA
-> ssh-ed25519 Wu8JLQ tOF/Dc72uMnmQy4rNjPoRzVhQEuwiYLrmmdCsmJ5wEk
RS5erkX1HIvTDw6g8qrOtZy1zpCphnGw/bqT4F0Q6/8
-> ssh-ed25519 EIt1vA tSBgk0ljTD1pLRsw7axRh2zl+vIMISjrw7zrr01TBB0
hb3kb12kRHCxMeBlxjg6tJpgQpHzJkovH5ncuM4MzNA
-> ssh-ed25519 X51wxg Gy0QJbua5ZoNYDnuQXlPVFxQvm7SSOMUR0uDRI719gk
VEYU1qazlM62F2xsXIFhIAEL4ssWW8o2/e07NguMp88
--- VwkrST6cm5HpWtRWBM4tkk14C/NwtxpBbXHVj6ouyxk
(`WÊ;+u'oÓj Ý<> —õ{ïMÄP0žDèÈ™J}Å<>¯»È{ìætˆ°ïj`ÂK:׸ŠI;™çA2ÿCÕ+ ö\Nú

Binary file not shown.

View file

@ -5,48 +5,28 @@ let
builtins.filter (k: k != "") (
lib.splitString "\n" (builtins.readFile (../../../pubkeys + "/${user}.keys"))
);
keys =
(readpubkeys "sinavir")
++ (readpubkeys "hackens-host")
++ (readpubkeys "catvayor")
++ (readpubkeys "raito")
++ (readpubkeys "gdd")
++ (readpubkeys "backslash");
in
{
"matterbridge-env.age".publicKeys =
(readpubkeys "sinavir")
++ (readpubkeys "hackens-host")
++ (readpubkeys "catvayor")
++ (readpubkeys "raito")
++ (readpubkeys "gdd")
++ (readpubkeys "backslash");
"matterbridge-env.age".publicKeys = keys;
"snipeit.age".publicKeys =
(readpubkeys "sinavir")
++ (readpubkeys "hackens-host")
++ (readpubkeys "raito")
++ (readpubkeys "catvayor")
++ (readpubkeys "gdd")
++ (readpubkeys "backslash");
keys;
"ragbJWT.age".publicKeys =
keys;
"ragb.age".publicKeys =
keys;
"django.age".publicKeys =
(readpubkeys "sinavir")
++ (readpubkeys "hackens-host")
++ (readpubkeys "raito")
++ (readpubkeys "catvayor")
++ (readpubkeys "gdd")
++ (readpubkeys "backslash");
keys;
"django-gestiohackens.age".publicKeys =
(readpubkeys "sinavir")
++ (readpubkeys "hackens-host")
++ (readpubkeys "raito")
++ (readpubkeys "catvayor")
++ (readpubkeys "gdd")
++ (readpubkeys "backslash");
keys;
"wg-key.age".publicKeys =
(readpubkeys "sinavir")
++ (readpubkeys "hackens-host")
++ (readpubkeys "raito")
++ (readpubkeys "gdd")
++ (readpubkeys "catvayor")
++ (readpubkeys "backslash");
keys;
"prometheus-webconf".publicKeys =
(readpubkeys "sinavir")
++ (readpubkeys "hackens-host")
++ (readpubkeys "raito")
++ (readpubkeys "gdd")
++ (readpubkeys "catvayor")
++ (readpubkeys "backslash");
keys;
}

View file

@ -61,6 +61,17 @@
"revision": "06cf0e1da4208d3766d898b7fdab6513366d45b9",
"url": "https://github.com/NixOS/nixpkgs/archive/06cf0e1da4208d3766d898b7fdab6513366d45b9.tar.gz",
"hash": "0l68zz8mn2kvp9wvc6rgw7dns8vkl7w9y6z92blvgn1wnm9ib6ab"
},
"ragb": {
"type": "Git",
"repository": {
"type": "Git",
"url": "https://git.dgnum.eu/HackENS/ragb"
},
"branch": "main",
"revision": "dfbaf2fd65fe16f5a66b5b16afef83502ea4b237",
"url": null,
"hash": "0vjs8cm2q2f2s8a8zqjj159rg1m7q6fzrg269gfpmrmgwpp3wh52"
}
},
"version": 3

View file

@ -1,5 +1,6 @@
{ sources }:
[
(import ((import ../npins).agenix + "/overlay.nix"))
(import (sources.agenix + "/overlay.nix"))
(final: prev: {
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [(self: _: {
loadcredential = self.callPackage ./loadcredential { };
@ -11,4 +12,8 @@
markdown-icons = self.callPackage ./markdown-icons { };
})];
})
(final: prev: {
ragb-backend = final.callPackage ./ragb-backend.nix { src = final.ragb-src; };
ragb-src = sources.ragb;
})
]

13
pkgs/ragb-backend.nix Normal file
View file

@ -0,0 +1,13 @@
{ lib
, rustPlatform
, src
}:
rustPlatform.buildRustPackage {
pname = "ragb-backend";
version = "0.3";
src = src + "/backend";
cargoHash = "sha256-lyYCXjmsm12xYHk30g5PDBpQb10xaB6zpoEi2xpjeiM=";
}