pingvin-share: drop (#459713)

This commit is contained in:
Gergő Gutyina
2025-12-13 18:37:15 +00:00
committed by GitHub
14 changed files with 7 additions and 420 deletions
-9
View File
@@ -674,15 +674,6 @@
"module-services-plausible-basic-usage": [
"index.html#module-services-plausible-basic-usage"
],
"module-services-pingvin-share": [
"index.html#module-services-pingvin-share"
],
"module-services-pingvin-share-basic-usage": [
"index.html#module-services-pingvin-share-basic-usage"
],
"module-services-pingvin-share-reverse-proxy-configuration": [
"index.html#module-services-pingvin-share-reverse-proxy-configuration"
],
"module-services-pict-rs": [
"index.html#module-services-pict-rs"
],
@@ -163,7 +163,7 @@
- [wg-access-server](https://github.com/freifunkMUC/wg-access-server/), an all-in-one WireGuard VPN solution with a WebUI for connecting devices. Available as [services.wg-access-server](#opt-services.wg-access-server.enable).
- [Pingvin Share](https://github.com/stonith404/pingvin-share), a self-hosted file sharing platform and an alternative for WeTransfer. Available as [services.pingvin-share](#opt-services.pingvin-share.enable).
- [Pingvin Share](https://github.com/stonith404/pingvin-share), a self-hosted file sharing platform and an alternative for WeTransfer. Available as `services.pingvin-share`.
- [Envision](https://gitlab.com/gabmus/envision), a UI for building, configuring and running Monado, the open source OpenXR runtime. Available as [programs.envision](#opt-programs.envision.enable).
@@ -45,6 +45,8 @@ of pulling the upstream container image from Docker Hub. If you want the old beh
- The Bash implementation of the `nixos-rebuild` program is removed. All switchable systems now use the Python rewrite. Any prior usage of `system.rebuild.enableNg` must now be removed. If you have any outstanding issues with the new implementation, please open an issue on GitHub.
- `services.pingvin-share` has been removed as the `pingvin-share.backend` package was broken and the project was archived upstream.
## Other Notable Changes {#sec-release-26.05-notable-changes}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
-1
View File
@@ -1705,7 +1705,6 @@
./services/web-apps/phylactery.nix
./services/web-apps/pict-rs.nix
./services/web-apps/pihole-web.nix
./services/web-apps/pingvin-share.nix
./services/web-apps/pixelfed.nix
./services/web-apps/plantuml-server.nix
./services/web-apps/plausible.nix
+3
View File
@@ -255,6 +255,9 @@ in
The Javascript version of Parsoid configured through this module does not work with modern MediaWiki versions,
and has been deprecated by upstream, so it has been removed. MediaWiki comes with a new PHP-based parser built-in, so there is no need for this module.
'')
(mkRemovedOptionModule [ "services" "pingvin-share" ] ''
The `pingvin-share.backend` package was broken and the project was archived upstream, so it was removed from nixpkgs.
'')
(mkRemovedOptionModule [ "services" "polipo" ] ''
The polipo project is unmaintained and archived upstream.
'')
@@ -1,43 +0,0 @@
# Pingvin Share {#module-services-pingvin-share}
A self-hosted file sharing platform and an alternative for WeTransfer.
## Configuration {#module-services-pingvin-share-basic-usage}
By default, the module will execute Pingvin Share backend and frontend on the ports 8080 and 3000.
I will run two systemd services named `pingvin-share-backend` and `pingvin-share-frontend` in the specified data directory.
Here is a basic configuration:
```nix
{
services-pingvin-share = {
enable = true;
openFirewall = true;
backend.port = 9010;
frontend.port = 9011;
};
}
```
## Reverse proxy configuration {#module-services-pingvin-share-reverse-proxy-configuration}
The preferred method to run this service is behind a reverse proxy not to expose an open port. This, you can configure Nginx such like this:
```nix
{
services-pingvin-share = {
enable = true;
hostname = "pingvin-share.domain.tld";
https = true;
nginx.enable = true;
};
}
```
Furthermore, you can increase the maximal size of an uploaded file with the option [services.nginx.clientMaxBodySize](#opt-services.nginx.clientMaxBodySize).
@@ -1,226 +0,0 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.services.pingvin-share;
inherit (lib)
mkOption
mkEnableOption
mkIf
mkPackageOption
types
;
in
{
options = {
services.pingvin-share = {
enable = mkEnableOption "Pingvin Share, a self-hosted file sharing platform";
user = mkOption {
type = types.str;
default = "pingvin";
description = ''
User account under which Pingvin Share runs.
'';
};
group = mkOption {
type = types.str;
default = "pingvin";
description = ''
Group under which Pingvin Share runs.
'';
};
openFirewall = mkOption {
type = types.bool;
default = false;
description = ''
Whether to open the firewall for the port in {option}`services.pingvin-share.frontend.port`.
'';
};
dataDir = mkOption {
type = types.path;
default = "/var/lib/pingvin-share";
example = "/var/lib/pingvin";
description = ''
The path to the data directory in which Pingvin Share will store its data.
'';
};
hostname = mkOption {
type = types.str;
default = "localhost:${toString cfg.backend.port}";
defaultText = lib.literalExpression "localhost:\${options.services.pingvin-share.backend.port}";
example = "pingvin-share.domain.tdl";
description = ''
The domain name of your instance. If null, the redirections will be made to localhost.
'';
};
https = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether to enable HTTPS for the domain.
'';
};
backend = {
package = mkPackageOption pkgs [
"pingvin-share"
"backend"
] { };
port = mkOption {
type = types.port;
default = 8080;
example = 9000;
description = ''
The port that the backend service of Pingvin Share will listen to.
'';
};
};
frontend = {
package = mkPackageOption pkgs [
"pingvin-share"
"frontend"
] { };
port = mkOption {
type = types.port;
default = 3000;
example = 8000;
description = ''
The port that the frontend service of Pingvin Share will listen to.
'';
};
};
nginx = {
enable = mkEnableOption "a Nginx reverse proxy for Pingvin Share.";
};
};
};
config = mkIf cfg.enable {
users.groups = mkIf (cfg.group == "pingvin") { pingvin = { }; };
users.users = mkIf (cfg.user == "pingvin") {
pingvin = {
group = cfg.group;
description = "Pingvin Share daemon user";
isSystemUser = true;
};
};
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.frontend.port ];
systemd.services.pingvin-share-backend = {
description = "Backend service of Pingvin Share, a self-hosted file sharing platform.";
wantedBy = [
"multi-user.target"
"pingvin-share-frontend.service"
];
before = [ "pingvin-share-frontend.service" ];
after = [
"network.target"
"network-online.target"
];
wants = [ "network-online.target" ];
environment = {
PRISMA_SCHEMA_ENGINE_BINARY = "${pkgs.prisma-engines}/bin/schema-engine";
PRISMA_QUERY_ENGINE_BINARY = "${pkgs.prisma-engines}/bin/query-engine";
PRISMA_QUERY_ENGINE_LIBRARY = "${pkgs.prisma-engines}/lib/libquery_engine.node";
PRISMA_INTROSPECTION_ENGINE_BINARY = "${pkgs.prisma-engines}/bin/introspection-engine";
PRISMA_FMT_BINARY = "${pkgs.prisma-engines}/bin/prisma-fmt";
BACKEND_PORT = toString cfg.backend.port;
DATABASE_URL = "file:${cfg.dataDir}/pingvin-share.db?connection_limit=1";
DATA_DIRECTORY = cfg.dataDir;
};
path = with pkgs; [
cfg.backend.package
openssl
prisma-engines
];
serviceConfig = {
User = cfg.user;
Group = cfg.group;
Type = "simple";
Restart = "on-failure";
ExecStartPre = [
"${cfg.backend.package}/node_modules/.bin/prisma migrate deploy"
"${cfg.backend.package}/node_modules/.bin/prisma db seed"
];
ExecStart = "${cfg.backend.package}/node_modules/.bin/ts-node dist/src/main";
StateDirectory = mkIf (cfg.dataDir == "/var/lib/pingvin-share") "pingvin-share";
WorkingDirectory = cfg.backend.package;
};
};
systemd.services.pingvin-share-frontend = {
description = "Frontend service of Pingvin Share, a self-hosted file sharing platform.";
wantedBy = [ "multi-user.target" ];
wants = [
"network-online.target"
"pingvin-share-backend.service"
];
after = [
"network-online.target"
"pingvin-share-backend.service"
];
environment = {
PORT = toString cfg.frontend.port;
API_URL = "${if cfg.https then "https" else "http"}://${cfg.hostname}";
};
path = [ cfg.frontend.package ];
serviceConfig = {
User = cfg.user;
Group = cfg.group;
Type = "simple";
Restart = "on-failure";
ExecStart = "${cfg.frontend.package}/node_modules/.bin/next start";
StateDirectory = mkIf (cfg.dataDir == "/var/lib/pingvin-share") "pingvin-share";
WorkingDirectory = cfg.frontend.package;
};
};
services.nginx = mkIf cfg.nginx.enable {
enable = lib.mkDefault true;
virtualHosts."${cfg.hostname}" = {
enableACME = cfg.https;
forceSSL = cfg.https;
locations."/" = {
proxyPass = "http://localhost:${toString cfg.frontend.port}";
recommendedProxySettings = true;
};
locations."/api" = {
proxyPass = "http://localhost:${toString cfg.backend.port}";
recommendedProxySettings = true;
};
};
};
};
meta = {
maintainers = with lib.maintainers; [ ratcornu ];
doc = ./pingvin-share.md;
};
}
-1
View File
@@ -1227,7 +1227,6 @@ in
phylactery = runTest ./web-apps/phylactery.nix;
pict-rs = runTest ./pict-rs.nix;
pihole-ftl = import ./pihole-ftl { inherit runTest; };
pingvin-share = runTest ./pingvin-share.nix;
pinnwand = runTest ./pinnwand.nix;
pixelfed = import ./web-apps/pixelfed { inherit runTestOn; };
plantuml-server = runTest ./plantuml-server.nix;
-24
View File
@@ -1,24 +0,0 @@
{ lib, ... }:
{
name = "pingvin-share";
meta.maintainers = with lib.maintainers; [ ratcornu ];
nodes.machine =
{ ... }:
{
services.pingvin-share = {
enable = true;
backend.port = 9010;
frontend.port = 9011;
};
};
testScript = ''
machine.wait_for_unit("pingvin-share-frontend.service")
machine.wait_for_open_port(9010)
machine.wait_for_open_port(9011)
machine.succeed("curl --fail http://127.0.0.1:9010/api/configs")
machine.succeed("curl --fail http://127.0.0.1:9011/")
'';
}
@@ -1,50 +0,0 @@
{
lib,
buildNpmPackage,
vips,
pkg-config,
prisma,
src,
version,
nixosTests,
}:
buildNpmPackage {
pname = "pingvin-share-backend";
inherit version;
src = "${src}/backend";
npmInstallFlags = [ "--build-from-source" ];
installPhase = ''
cp -r . $out
ln -s $out/node_modules/.bin $out/bin
'';
preBuild = ''
prisma generate
'';
buildInputs = [ vips ];
nativeBuildInputs = [
pkg-config
prisma
];
npmDepsHash = "sha256-bc2suSGa7YTonIhUxEtNzdIUeUBubwJ6upW2tydVCnU=";
makeCacheWritable = true;
npmFlags = [ "--legacy-peer-deps" ];
passthru.tests = {
pingvin-share = nixosTests.pingvin-share;
};
meta = {
description = "Backend of pingvin-share, a self-hosted file sharing platform";
homepage = "https://github.com/stonith404/pingvin-share";
downloadPage = "https://github.com/stonith404/pingvin-share/releases";
changelog = "https://github.com/stonith404/pingvin-share/releases/tag/v${version}";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ ratcornu ];
};
}
@@ -1,21 +0,0 @@
{
lib,
callPackage,
fetchFromGitHub,
}:
let
version = "1.13.0";
src = fetchFromGitHub {
owner = "stonith404";
repo = "pingvin-share";
rev = "v${version}";
hash = "sha256-FWc0Yo2Phh8ee5izHj0ol1pwLSVJgIqyeaJo1o4drsM=";
};
in
lib.recurseIntoAttrs {
backend = callPackage ./backend.nix { inherit src version; };
frontend = callPackage ./frontend.nix { inherit src version; };
}
@@ -1,42 +0,0 @@
{
lib,
buildNpmPackage,
vips,
pkg-config,
src,
version,
nixosTests,
}:
buildNpmPackage {
pname = "pingvin-share-frontend";
inherit version;
src = "${src}/frontend";
npmInstallFlags = [ "--build-from-source" ];
installPhase = ''
cp -r . $out
ln -s $out/node_modules/.bin $out/bin
'';
buildInputs = [ vips ];
nativeBuildInputs = [ pkg-config ];
npmDepsHash = "sha256-ykq98Bd67TY/t8JYraii7XnCIoSLk454decdHpQGorw=";
makeCacheWritable = true;
npmFlags = [ "--legacy-peer-deps" ];
passthru.tests = {
pingvin-share = nixosTests.pingvin-share;
};
meta = {
description = "Frontend of pingvin-share, a self-hosted file sharing platform";
homepage = "https://github.com/stonith404/pingvin-share";
downloadPage = "https://github.com/stonith404/pingvin-share/releases";
changelog = "https://github.com/stonith404/pingvin-share/releases/tag/v${version}";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ ratcornu ];
};
}
+1
View File
@@ -1288,6 +1288,7 @@ mapAliases {
pidgin-xmpp-receipts = throw "'pidgin-xmpp-receipts' has been renamed to/replaced by 'pidginPackages.pidgin-xmpp-receipts'"; # Converted to throw 2025-10-27
pilipalax = throw "'pilipalax' has been removed from nixpkgs due to it not being maintained"; # Added 2025-07-25
pinentry = throw "'pinentry' has been removed. Pick an appropriate variant like 'pinentry-curses' or 'pinentry-gnome3'"; # Converted to throw 2025-10-26
pingvin-share = throw "'pingvin-share' has been removed as it was broken and archived upstream"; # Added 2025-11-08
piper-train = throw "piper-train is now part of the piper package using the `withTrain` override"; # Added 2025-09-03
plasma-applet-volumewin7mixer = throw "'plasma-applet-volumewin7mixer' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20
plasma-pass = throw "'plasma-pass' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20
-2
View File
@@ -8129,8 +8129,6 @@ with pkgs;
physfs
;
pingvin-share = callPackage ../servers/web-apps/pingvin-share { };
pipelight = callPackage ../tools/misc/pipelight {
stdenv = stdenv_32bit;
wine-staging = pkgsi686Linux.wine-staging;