My Nix Configuration

[marvin.services] pingvin-share: enable

pyrox.dev 35e02480 31a6380d

verified
Changed files
+129
lib
packages
anubis-files
src
pingvin-share-config
systems
x86_64-linux
marvin
prefect
services
mailserver
+8
lib/data/services.toml
···
host = "marvin"
tsHost = "yt"
+
[pingvin-share]
+
port = 6933
+
host = "marvin"
+
extUrl = "share.pyrox.dev"
+
anubis = 8410
+
be-port = 30104
+
be-anubis = 30105
+
[planka]
port = 6929
host = "marvin"
+7
packages/anubis-files/src/policies/pingvin-share.yaml
···
+
bots:
+
- import: (data)/bots/ai-robots-txt.yaml
+
- import: CUSTOM/block/alibaba-cloud.yaml
+
- import: (data)/common/keep-internet-working.yaml
+
- import: CUSTOM/challenge/generic-browser.yaml
+
+
dnsbl: false
+19
packages/pingvin-share-config/default.nix
···
+
{
+
pkgs,
+
stdenv,
+
settings ? { },
+
...
+
}:
+
let
+
format = pkgs.formats.yaml { };
+
file = format.generate "config.yaml" settings;
+
in
+
stdenv.mkDerivation {
+
pname = "pingvin-share-config";
+
version = "1.0.0";
+
+
installPhase = ''
+
mkdir $out
+
cp ${file} $out/config.yaml
+
'';
+
}
+1
systems/x86_64-linux/marvin/default.nix
···
./services/nginx.nix
./services/nextcloud
./services/pinchflat.nix
+
./services/pingvin-share.nix
./services/planka.nix
./services/pocket-id.nix
./services/podman.nix
+89
systems/x86_64-linux/marvin/services/pingvin-share.nix
···
+
{
+
lib,
+
config,
+
pkgs,
+
...
+
}:
+
let
+
d = lib.py.data.services.pingvin-share;
+
cfg = config.services.pingvin-share;
+
configFile = pkgs.py.pingvin-share-config.overrideAttrs {
+
settings = {
+
general = {
+
appName = "dishNet Files";
+
secureCookies = "true";
+
};
+
share = {
+
allowRegistration = "false";
+
allowUnauthenticatedShares = "false";
+
};
+
email.enableShareEmailRecipients = "true";
+
smtp = {
+
enabled = "true";
+
host = "mail.pyrox.dev";
+
port = "465";
+
email = "share@pyrox.dev";
+
username = "share@pyrox.dev";
+
password = "SMTP_PASSWORD";
+
};
+
ldap.enabled = "false";
+
legal.enabled = "false";
+
s3.enabled = "false";
+
initUser = {
+
enabled = true;
+
username = "dish";
+
email = "pyrox@pyrox.dev";
+
password = "ADMIN_PASSWORD";
+
isAdmin = true;
+
};
+
};
+
};
+
in
+
{
+
services = {
+
pingvin-share = {
+
enable = true;
+
backend.port = d.be-port;
+
frontend.port = d.port;
+
hostname = "share.pyrox.dev";
+
https = true;
+
};
+
anubis.instances = lib.mkIf cfg.enable {
+
pingvin-share-be = {
+
settings = {
+
BIND = ":${toString d.be-anubis}";
+
POLICY_FNAME = "${pkgs.py.anubis-files}/policies/pingvin-share.yaml";
+
TARGET = "http://localhost:${toString d.be-port}";
+
};
+
};
+
pingvin-share-fe = {
+
settings = {
+
BIND = ":${toString d.anubis}";
+
POLICY_FNAME = "${pkgs.py.anubis-files}/policies/pingvin-share.yaml";
+
TARGET = "http://localhost:${toString d.port}";
+
};
+
};
+
};
+
};
+
systemd.services.init-pingvin-config = {
+
enable = cfg.enable;
+
description = "Pingvin Share configuration setup";
+
wantedBy = [ "multi-user.target" ];
+
before = [ "pingvin-share.service" ];
+
path = [ pkgs.gnused ];
+
script = ''
+
rm ${cfg.dataDir}/config.yaml
+
chmod o-rwx ${cfg.dataDir}/config.yaml
+
chmod ug-x ${cfg.dataDir}/config.yaml
+
cp ${configFile}/config.yaml ${cfg.dataDir}/config.yaml
+
sed -i "s/SMTP_PASSWORD/$SMTP_PASSWORD/" ${cfg.dataDir}/config.yaml
+
sed -i "s/ADMIN_PASSWORD/$ADMIN_PASSWORD/" ${cfg.dataDir}/config.yaml
+
'';
+
serviceConfig = {
+
EnvironmentFile = config.age.secrets.pingvin-secrets.path;
+
User = cfg.user;
+
Group = cfg.group;
+
ReadWritePaths = [ "${cfg.dataDir}/config.yaml" ];
+
};
+
};
+
}
systems/x86_64-linux/marvin/services/secrets/pingvin-secrets.age

This is a binary file and will not be displayed.

+1
systems/x86_64-linux/marvin/services/secrets/secrets.nix
···
"../nextcloud/nextcloud-admin-pw.age".publicKeys = marvinDefault;
"nix-serve-priv.age".publicKeys = marvinDefault;
"pinchflat-secrets.age".publicKeys = marvinDefault;
+
"pingvin-secrets.age".publicKeys = marvinDefault;
"planka-env.age".publicKeys = marvinDefault;
"pocket-id-secrets.age".publicKeys = marvinDefault;
"vaultwarden-vars.age".publicKeys = marvinDefault;
+4
systems/x86_64-linux/prefect/services/mailserver/logins.nix
···
hashedPassword = "$2b$05$uZoLVdCo48rLVBFdG0.UXua8a.84w1PzmLYOpJ1qTNo25KCdQlflm";
sendOnly = true;
};
+
"share@pyrox.dev" = {
+
hashedPassword = "$2b$05$GTK7WRECM2FKlpqUWhsE1e9QaXX5fQ41id.W/PV2TZnOwNtrKJZHe";
+
sendOnly = true;
+
};
};
}