push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
{
stdenv,
lib,
buildGoModule,
fetchFromGitHub,
fuse,
}:
buildGoModule (finalAttrs: {
pname = "plakar";
version = "1.0.4";
src = fetchFromGitHub {
owner = "PlakarKorp";
repo = "plakar";
tag = "v${finalAttrs.version}";
hash = "sha256-gClQiXZEPui7g3Ps6yhB2tN36PnkqADo9iD4Gm6DpD4=";
};
vendorHash = "sha256-JVk8wiuuicwWgEbqIjp7ryC4k3uc4DiXnJ5FxYbXV5M=";
buildInputs = [
fuse
];
checkFlags =
let
skippedTests = [
# mount: fusermount: exec: "fusermount": executable file not found in $PATH
"TestExecuteCmdMountDefault"
]
++ lib.optionals stdenv.isDarwin [
"TestBTreeScanMemory"
"TestBTreeScanPebble"
];
in
[ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ];
meta = {
mainProgram = "plakar";
description = "Encrypted, queryable backups for engineers based on an immutable data store and portable archives";
homepage = "https://www.plakar.io";
license = lib.licenses.isc;
maintainers = with lib.maintainers; [
heph2
qbit
];
};
})

View File

@@ -0,0 +1,39 @@
{
lib,
python3Packages,
fetchPypi,
guiSupport ? true,
}:
let
pname = "plakativ";
version = "0.5.3";
in
python3Packages.buildPythonApplication {
pyproject = true;
inherit pname version;
src = fetchPypi {
inherit pname version;
hash = "sha256-6TvMznd5obkn/gsQTyZ6Pc/dF55I53987EbuSNAlY58=";
};
build-system = with python3Packages; [ setuptools ];
dependencies =
with python3Packages;
[
pymupdf
img2pdf
]
++ lib.optional guiSupport tkinter;
pythonImportsCheck = [ "plakativ" ];
meta = {
description = "Convert a PDF into a large poster that can be printed on multiple smaller pages";
mainProgram = "plakativ";
homepage = "https://gitlab.mister-muffin.de/josch/plakativ";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ marcin-serwin ];
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
fetchFromGitHub,
buildGoModule,
nix-update-script,
}:
buildGoModule rec {
pname = "plan-exporter";
version = "0.0.6";
src = fetchFromGitHub {
owner = "agneum";
repo = "plan-exporter";
tag = "v${version}";
hash = "sha256-Csp57wmkDA8b05hmKbk1+bGtORFgNls7I01A0irTKao=";
};
vendorHash = null;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Query plan exporter for psql";
homepage = "https://github.com/agneum/plan-exporter";
changelog = "https://github.com/agneum/plan-exporter/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ autra ];
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "planarity";
version = "4.0.0.0";
src = fetchFromGitHub {
owner = "graph-algorithms";
repo = "edge-addition-planarity-suite";
rev = "Version_${version}";
sha256 = "sha256-A7huHvMgUyvw2zM9qA7Ax/1Ai5VZ6A1PZIo3eiCpu44=";
};
nativeBuildInputs = [
autoreconfHook
pkg-config
];
doCheck = true;
meta = with lib; {
homepage = "https://github.com/graph-algorithms/edge-addition-planarity-suite";
description = "Library for implementing graph algorithms";
mainProgram = "planarity";
license = licenses.bsd3;
teams = [ teams.sage ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
buildGoModule,
fetchFromGitHub,
makeWrapper,
git,
}:
buildGoModule rec {
pname = "plandex-server";
version = "1.1.1";
src = fetchFromGitHub {
owner = "plandex-ai";
repo = "plandex";
rev = "server/v${version}";
hash = "sha256-RVvgnQtb/asOjVpSZ3WndimsJ6foERMWS/YD20sghVE=";
};
postPatch = ''
substituteInPlace db/db.go \
--replace-fail "file://migrations" "file://$out/migrations"
'';
postInstall = ''
cp -r migrations $out/migrations
'';
postFixup = ''
wrapProgram $out/bin/plandex-server \
--prefix PATH : ${lib.makeBinPath [ git ]}
'';
nativeBuildInputs = [ makeWrapper ];
nativeCheckInputs = [ git ];
sourceRoot = "${src.name}/app/server";
vendorHash = "sha256-uarTWteOoAjzEHSnbZo+fEPELerpuL7UNA5pdGP5CMY=";
meta = {
mainProgram = "plandex-server";
description = "AI driven development in your terminal. Designed for large, real-world tasks. The server part";
homepage = "https://plandex.ai/";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ viraptor ];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "plandex";
version = "2.1.2";
src = fetchFromGitHub {
owner = "plandex-ai";
repo = "plandex";
rev = "cli/v${version}";
hash = "sha256-mNNL1K+gNhYDuKpGt3FP/L4JxO/bHyebhABOpFjLLLI=";
};
ldflags = [
"-X plandex-cli/version.Version=${version}"
];
sourceRoot = "${src.name}/app/cli";
vendorHash = "sha256-0wYlCxg0CPPizdhJ1VfZEEcauy2rJeeTqPiiqsExBu8=";
meta = {
mainProgram = "plandex";
description = "AI driven development in your terminal. Designed for large, real-world tasks. The cli part";
homepage = "https://plandex.ai/";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ viraptor ];
};
}

View File

@@ -0,0 +1,113 @@
{
lib,
stdenv,
patchelf,
makeWrapper,
gtk2,
glib,
udev,
alsa-lib,
atk,
nspr,
fontconfig,
cairo,
pango,
nss,
freetype,
gnome2,
gdk-pixbuf,
curl,
systemd,
xorg,
requireFile,
}:
stdenv.mkDerivation rec {
pname = "planetary-annihalation";
version = "62857";
src = requireFile {
message = "This file has to be downloaded manually via nix-prefetch-url.";
name = "PA_Linux_${version}.tar.bz2";
sha256 = "0imi3k5144dsn3ka9khx3dj76klkw46ga7m6rddqjk4yslwabh3k";
};
nativeBuildInputs = [
patchelf
makeWrapper
];
installPhase = ''
mkdir -p $out/{bin,lib}
cp -R * $out/
mv $out/*.so $out/lib
ln -s $out/PA $out/bin/PA
ln -s ${systemd}/lib/libudev.so.1 $out/lib/libudev.so.0
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$out/PA"
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${
lib.makeLibraryPath [
stdenv.cc.cc
xorg.libXdamage
xorg.libXfixes
gtk2
glib
stdenv.cc.libc
"$out"
xorg.libXext
pango
udev
xorg.libX11
xorg.libXcomposite
alsa-lib
atk
nspr
fontconfig
cairo
pango
nss
freetype
gnome2.GConf
gdk-pixbuf
xorg.libXrender
]
}:${lib.getLib stdenv.cc.cc}/lib64:${stdenv.cc.libc}/lib64" "$out/host/CoherentUI_Host"
wrapProgram $out/PA --prefix LD_LIBRARY_PATH : "${
lib.makeLibraryPath [
stdenv.cc.cc
stdenv.cc.libc
xorg.libX11
xorg.libXcursor
gtk2
glib
curl
"$out"
]
}:${lib.getLib stdenv.cc.cc}/lib64:${stdenv.cc.libc}/lib64"
for f in $out/lib/*; do
patchelf --set-rpath "${
lib.makeLibraryPath [
stdenv.cc.cc
curl
xorg.libX11
stdenv.cc.libc
xorg.libXcursor
"$out"
]
}:${lib.getLib stdenv.cc.cc}/lib64:${stdenv.cc.libc}/lib64" $f
done
'';
meta = with lib; {
homepage = "http://www.uberent.com/pa/";
description = "Next-generation RTS that takes the genre to a planetary scale";
license = lib.licenses.unfree;
platforms = platforms.linux;
maintainers = [ ];
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
};
}

View File

@@ -0,0 +1,80 @@
{
stdenv,
lib,
fetchFromGitHub,
desktop-file-utils,
meson,
ninja,
pkg-config,
vala,
wrapGAppsHook4,
evolution-data-server-gtk4,
glib,
glib-networking,
gst_all_1,
gtk4,
gtksourceview5,
gxml,
json-glib,
libadwaita,
libgee,
libical,
libportal-gtk4,
libsecret,
libsoup_3,
libspelling,
sqlite,
webkitgtk_6_0,
}:
stdenv.mkDerivation rec {
pname = "planify";
version = "4.14.1";
src = fetchFromGitHub {
owner = "alainm23";
repo = "planify";
rev = version;
hash = "sha256-4N+2DWOriuxQJX5hfDmGy066ypSn1HkkildBIJjOXhc=";
};
nativeBuildInputs = [
desktop-file-utils
meson
ninja
pkg-config
vala
wrapGAppsHook4
];
buildInputs = [
evolution-data-server-gtk4
glib
glib-networking
# Needed for GtkMediaStream creation with success.ogg, see #311295.
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gtk4
gtksourceview5
gxml
json-glib
libadwaita
libgee
libical
libportal-gtk4
libsecret
libsoup_3
libspelling
sqlite
webkitgtk_6_0
];
meta = with lib; {
description = "Task manager with Todoist support designed for GNU/Linux";
homepage = "https://github.com/alainm23/planify";
license = licenses.gpl3Plus;
teams = [ teams.pantheon ];
platforms = platforms.linux;
mainProgram = "io.github.alainm23.planify";
};
}

View File

@@ -0,0 +1,9 @@
diff --git a/data/plank.desktop.in b/data/plank.desktop.in
index 330c3a4..e1bdf5f 100644
--- a/data/plank.desktop.in
+++ b/data/plank.desktop.in
@@ -8,3 +8,4 @@ Exec=plank
Icon=plank
Terminal=false
NoDisplay=false
+NotShowIn=Pantheon;

View File

@@ -0,0 +1,92 @@
{
lib,
stdenv,
fetchurl,
vala,
atk,
cairo,
dconf,
glib,
gnome-common,
gtk3,
libwnck,
libX11,
libXfixes,
libXi,
pango,
gettext,
pkg-config,
libxml2,
bamf,
gdk-pixbuf,
libdbusmenu-gtk3,
file,
gnome-menus,
libgee,
wrapGAppsHook3,
autoreconfHook,
}:
stdenv.mkDerivation rec {
pname = "plank";
version = "0.11.89";
src = fetchurl {
url = "https://launchpad.net/${pname}/1.0/${version}/+download/${pname}-${version}.tar.xz";
sha256 = "17cxlmy7n13jp1v8i4abxyx9hylzb39andhz3mk41ggzmrpa8qm6";
};
nativeBuildInputs = [
autoreconfHook
gettext
gnome-common
libxml2 # xmllint
pkg-config
vala
wrapGAppsHook3
];
buildInputs = [
atk
bamf
cairo
gdk-pixbuf
glib
gnome-menus
dconf
gtk3
libX11
libXfixes
libXi
libdbusmenu-gtk3
libgee
libwnck
pango
];
# fix paths
makeFlags = [
"INTROSPECTION_GIRDIR=${placeholder "out"}/share/gir-1.0/"
"INTROSPECTION_TYPELIBDIR=${placeholder "out"}/lib/girepository-1.0"
];
# Make plank's application launcher hidden in Pantheon
patches = [
./hide-in-pantheon.patch
];
postPatch = ''
substituteInPlace ./configure \
--replace "/usr/bin/file" "${file}/bin/file"
'';
meta = with lib; {
description = "Elegant, simple, clean dock";
mainProgram = "plank";
homepage = "https://launchpad.net/plank";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ davidak ];
teams = [ teams.pantheon ];
};
}

View File

@@ -0,0 +1,69 @@
{
lib,
stdenv,
fetchFromGitLab,
desktop-file-utils,
gsettings-desktop-schemas,
glib,
gtk3,
libgda5,
libxml2,
libxslt,
makeWrapper,
meson,
ninja,
pkg-config,
shared-mime-info,
}:
stdenv.mkDerivation rec {
pname = "planner";
version = "0.14.92";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "planner";
rev = version;
hash = "sha256-2LmNeyZURVtA52Vosyn44wT8zSaJn8tR+8sPM9atAwM=";
};
postPatch = ''
patchShebangs \
meson_post_install.sh \
tools/strip_trailing_white_space.sh \
tests/python/task-test.py
'';
nativeBuildInputs = [
desktop-file-utils
makeWrapper
meson
ninja
pkg-config
shared-mime-info
];
buildInputs = [
libgda5
libxml2
libxslt
glib
gsettings-desktop-schemas
gtk3
];
postInstall = ''
wrapProgram $out/bin/planner \
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:$out/share/gsettings-schemas/planner-${version}"
'';
meta = {
description = "Project management tool for the GNOME desktop";
mainProgram = "planner";
homepage = "https://gitlab.gnome.org/World/planner";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ amiloradovsky ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
gdk-pixbuf,
gtk_engines,
gtk-engine-murrine,
librsvg,
sassc,
}:
stdenv.mkDerivation rec {
pname = "plano-theme";
version = "4.0";
src = fetchFromGitHub {
owner = "lassekongo83";
repo = "plano-theme";
rev = "v${version}";
sha256 = "sha256-slGr2nsdKng6zaVDeXWFAWKIxZbcnOLU6RH6wM0293E=";
};
nativeBuildInputs = [
meson
ninja
sassc
];
buildInputs = [
gdk-pixbuf
gtk_engines
librsvg
];
propagatedUserEnvPkgs = [
gtk-engine-murrine
];
meta = with lib; {
description = "Flat theme for GNOME and Xfce";
homepage = "https://github.com/lassekongo83/plano-theme";
license = licenses.gpl3Only;
platforms = platforms.unix;
maintainers = [ maintainers.romildo ];
};
}

View File

@@ -0,0 +1,21 @@
{
lib,
flutter329,
plant-it,
}:
flutter329.buildFlutterApplication {
pname = "plant-it-frontend";
inherit (plant-it) version src;
sourceRoot = "${plant-it.src.name}/frontend";
targetFlutterPlatform = "web";
pubspecLock = lib.importJSON ./pubspec.lock.json;
meta = plant-it.meta // {
description = "Frontend for Plant It";
platforms = lib.platforms.linux;
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
--- backend/src/test/resources/features/plants-and-species.feature
+++ backend/src/test/resources/features/plants-and-species.feature
@@ -199,11 +199,8 @@
Then response is ok
* species "foo" is
| scientific_name | synonyms | family | genus | species | creator | externalId |
| foo | synonym1 | fam | gen | foo | USER | |
- * species "foo" has this image
- | image_id | image_url | image_content |
- | | https://dummyimage.com/1 | |
* species "foo" has this care
| light | humidity | minTemp | maxTemp | phMax | phMin |
| 6 | 5 | | | 2 | 1 |
When user updates botanical info "foo"

View File

@@ -0,0 +1,49 @@
{
maven,
jdk21_headless,
makeBinaryWrapper,
lib,
fetchFromGitHub,
}:
let
version = "0.10.0";
in
maven.buildMavenPackage {
pname = "plant-it";
inherit version;
src = fetchFromGitHub {
owner = "MDeLuise";
repo = "plant-it";
tag = version;
hash = "sha256-QnujZecUu7bzllSsrLH6hSZMaWeOUXBrSZ5rbT56pDM=";
};
sourceRoot = "source/backend";
mvnHash = "sha256-3YQOZMXMI6BrHkqud2OKColJWbDXfwnAwRifYxbleqI=";
nativeBuildInputs = [
makeBinaryWrapper
];
patches = [ ./Remove-test-needing-internet-connection.patch ];
installPhase = ''
runHook preInstall
install -Dm644 target/plant-it-*.jar $out/share/plant-it/plant-it.jar
makeBinaryWrapper ${jdk21_headless}/bin/java $out/bin/plant-it --add-flags "-jar $out/share/plant-it/plant-it.jar"
runHook postInstall
'';
meta = {
changelog = "https://github.com/MDeLuise/plant-it/releases/tag/${version}";
description = "Self-hosted gardening companion application";
homepage = "https://plant-it.org";
maintainers = with lib.maintainers; [ epireyn ];
license = lib.licenses.gpl3;
platforms = lib.platforms.unix;
mainProgram = "plant-it";
};
}

View File

@@ -0,0 +1,89 @@
{
lib,
stdenv,
fetchzip,
jre,
makeWrapper,
plantuml-c4,
plantuml,
runCommand,
}:
# The C4-PlantUML docs say that it suffices to run plantuml with the
# -DRELATIVE_INCLUDE="..." arg to make plantuml find the C4 templates
# when included like "!include C4_Container.puml".
# Unfortunately, this is not sufficient in practise, when the path is not ".".
# What helps is setting -Dplantuml.include.path="..." *before* the jar
# parameter.
# The -DRELATIVE_INCLUDE param then *still* needs to be set (*after* the jar
# argument), because the C4 template vars check for existence of this variable
# and if it is not set, reference paths in the internet.
let
c4-lib = fetchzip {
url = "https://github.com/plantuml-stdlib/C4-PlantUML/archive/refs/tags/v2.10.0.zip";
hash = "sha256-p9Njb7VauXVf6yOBDQrO9mS+za9NntFUCK5tig0mH3U=";
};
sprites = fetchzip {
url = "https://github.com/tupadr3/plantuml-icon-font-sprites/archive/refs/tags/v3.0.0.zip";
hash = "sha256-I/cR1VPR7aKyTZF9X/4GkgcxV9+sLgNpTZugvCy0Dvs=";
};
# In order to pre-fix the plantuml.jar parameter with the argument
# -Dplantuml.include.path=..., we post-fix the java command using a wrapper.
# This way the plantuml derivation can remain unchanged.
plantumlWithExtraPath =
let
plantumlIncludePath = lib.concatStringsSep ":" [
c4-lib
sprites
];
includeFlag = "-Dplantuml.include.path=${lib.escapeShellArg plantumlIncludePath}";
postFixedJre = runCommand "jre-postfixed" { nativeBuildInputs = [ makeWrapper ]; } ''
mkdir -p $out/bin
makeWrapper ${jre}/bin/java $out/bin/java \
--add-flags ${lib.escapeShellArg includeFlag}
'';
in
plantuml.override { jre = postFixedJre; };
in
stdenv.mkDerivation {
pname = "plantuml-c4";
version = "2.10.0";
nativeBuildInputs = [ makeWrapper ];
buildCommand = ''
mkdir -p $out/bin
makeWrapper ${plantumlWithExtraPath}/bin/plantuml $out/bin/plantuml \
--add-flags "-DRELATIVE_INCLUDE=\"${c4-lib}\""
$out/bin/plantuml -help
'';
passthru.tests.example-c4-diagram =
runCommand "c4-plantuml-sample.png" { nativeBuildInputs = [ plantuml-c4 ]; }
''
sed 's/https:.*\///' "${c4-lib}/samples/C4_Context Diagram Sample - enterprise.puml" > sample.puml
plantuml sample.puml -o $out
sed 's/!include ..\//!include /' ${sprites}/examples/complex-example.puml > sprites.puml
plantuml sprites.puml -o $out
'';
meta = with lib; {
description = "PlantUML bundled with C4-Plantuml and plantuml sprites library";
mainProgram = "plantuml";
homepage = "https://github.com/plantuml-stdlib/C4-PlantUML";
license = licenses.mit;
maintainers = with maintainers; [
tfc
anthonyroussel
];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchurl,
nixosTests,
}:
stdenv.mkDerivation rec {
pname = "plantuml-server";
version = "1.2025.8";
src = fetchurl {
url = "https://github.com/plantuml/plantuml-server/releases/download/v${version}/plantuml-v${version}.war";
hash = "sha256-O0hH2cWf8V5RwcdUlzNO8HLSghhTbdC/1mAenxrXB6s=";
};
dontUnpack = true;
postInstall = ''
mkdir -p "$out/webapps"
cp "$src" "$out/webapps/plantuml.war"
'';
passthru.tests = {
inherit (nixosTests) plantuml-server;
};
meta = with lib; {
description = "Web application to generate UML diagrams on-the-fly";
homepage = "https://plantuml.com/";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.gpl3Plus;
platforms = platforms.all;
maintainers = with maintainers; [
truh
anthonyroussel
];
};
}

View File

@@ -0,0 +1,68 @@
{
lib,
stdenvNoCC,
fetchurl,
graphviz,
gitUpdater,
jre,
makeBinaryWrapper,
testers,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "plantuml";
version = "1.2025.7";
src = fetchurl {
url = "https://github.com/plantuml/plantuml/releases/download/v${finalAttrs.version}/plantuml-pdf-${finalAttrs.version}.jar";
hash = "sha256-iimzT6g/W+E4V6AxiQtRDuPJhfmXLR6qx9gkB31N6H8=";
};
nativeBuildInputs = [
makeBinaryWrapper
];
buildCommand = ''
install -Dm644 $src $out/lib/plantuml.jar
mkdir -p $out/bin
makeWrapper ${jre}/bin/java $out/bin/plantuml \
--argv0 plantuml \
--set GRAPHVIZ_DOT ${graphviz}/bin/dot \
--add-flags "-jar $out/lib/plantuml.jar"
'';
doInstallCheck = true;
postCheckInstall = ''
$out/bin/plantuml -help
$out/bin/plantuml -testdot
'';
passthru = {
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "plantuml --version";
};
updateScript = gitUpdater {
url = "https://github.com/plantuml/plantuml.git";
allowedVersions = "^1\\.[0-9\\.]+$";
rev-prefix = "v";
};
};
meta = {
description = "Draw UML diagrams using a simple and human readable text description";
homepage = "https://plantuml.com/";
# "plantuml -license" says GPLv3 or later
license = lib.licenses.gpl3Plus;
mainProgram = "plantuml";
maintainers = with lib.maintainers; [
bjornfor
Mogria
anthonyroussel
];
platforms = lib.platforms.unix;
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
rustPlatform,
fetchCrate,
installShellFiles,
stdenv,
}:
rustPlatform.buildRustPackage rec {
pname = "planus";
version = "1.2.0";
src = fetchCrate {
pname = "planus-cli";
inherit version;
hash = "sha256-z1fXLXSk9xprKMCsbkvJfDB3qz9aR6Bslf517TyQ7qI=";
};
cargoHash = "sha256-igja5/FaYBrJSBc9Gw3091UorEV+UmlxPzfk5FYaWXo=";
nativeBuildInputs = [
installShellFiles
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd planus \
--bash <($out/bin/planus generate-completions bash) \
--fish <($out/bin/planus generate-completions fish) \
--zsh <($out/bin/planus generate-completions zsh)
'';
meta = {
description = "Alternative compiler for flatbuffers";
mainProgram = "planus";
homepage = "https://github.com/planus-org/planus";
changelog = "https://github.com/planus-org/planus/blob/v${version}/CHANGELOG.md";
license = with lib.licenses; [
asl20
mit
];
maintainers = with lib.maintainers; [ figsoda ];
};
}

View File

@@ -0,0 +1,40 @@
{
fetchFromGitHub,
lib,
stdenv,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "plasma-applet-commandoutput";
version = "13";
src = fetchFromGitHub {
owner = "Zren";
repo = "plasma-applet-commandoutput";
tag = "v${finalAttrs.version}";
hash = "sha256-Tjnm26EYKXtBM9JBHKI73AMvOW/rQ3qOw2JDYey7EfQ=";
};
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/plasma/plasmoids
cp -r package $out/share/plasma/plasmoids/com.github.zren.commandoutput
runHook postInstall
'';
meta = {
changelog = "https://github.com/Zren/plasma-applet-commandoutput/blob/${finalAttrs.src.rev}/Changelog.md";
description = "Run a command periodically and render its output";
homepage = "https://github.com/Zren/plasma-applet-commandoutput";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [
matthiasbeyer
oliver-ni
];
};
})

View File

@@ -0,0 +1,57 @@
{
wrapGAppsHook3,
lib,
python3Packages,
fetchFromGitHub,
rofi,
gobject-introspection,
}:
python3Packages.buildPythonApplication rec {
pname = "plasma-hud";
version = "22.01.0";
format = "other";
src = fetchFromGitHub {
owner = "Zren";
repo = "plasma-hud";
rev = version;
hash = "sha256-HEAvwQSROQtJAZdiDObu9qbpgJlkJdks2v95Xjh5520=";
};
nativeBuildInputs = [
gobject-introspection
wrapGAppsHook3
];
propagatedBuildInputs =
(with python3Packages; [
dbus-python
pygobject3
setproctitle
xlib
])
++ [ rofi ];
postPatch = ''
sed -i "s:/usr/lib/plasma-hud:$out/bin:" etc/xdg/autostart/plasma-hud.desktop
'';
installPhase = ''
runHook preInstall
install -Dm555 usr/lib/plasma-hud/plasma-hud -t $out/bin
cp -r etc -t $out
runHook postInstall
'';
meta = {
license = lib.licenses.gpl2Only;
homepage = "https://github.com/Zren/plasma-hud";
platforms = lib.platforms.unix;
description = "Run menubar commands, much like the Unity 7 Heads-Up Display (HUD)";
maintainers = with lib.maintainers; [ pasqui23 ];
mainProgram = "plasma-hud";
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation {
pname = "plasma-overdose-kde-theme";
version = "0-unstable-2022-05-30";
src = fetchFromGitHub {
owner = "Notify-ctrl";
repo = "Plasma-Overdose";
rev = "d8bf078b4819885d590db27cd1d25d8f4f08fe4c";
sha256 = "187f6rlvb2wf5sj3mgr69mfwh9fpqchw4yg6nzv54l98msmxc4h0";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share
mv colorschemes $out/share/color-schemes
mv plasma $out/share/plasma
mkdir -p $out/share/aurorae
mv aurorae $out/share/aurorae/themes
mkdir -p $out/share/icons/Plasma-Overdose
mv cursors/index.theme $out/share/icons/Plasma-Overdose/cursor.theme
mv cursors/cursors $out/share/icons/Plasma-Overdose/cursors
runHook postInstall
'';
meta = with lib; {
description = "Cute KDE theme inspired by the game Needy Girl Overdose";
homepage = "https://github.com/Notify-ctrl/Plasma-Overdose";
license = licenses.gpl3;
platforms = platforms.all;
maintainers = with maintainers; [ takagiy ];
};
}

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
kdePackages,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "plasma-panel-colorizer";
version = "5.0.1";
src = fetchFromGitHub {
owner = "luisbocanegra";
repo = "plasma-panel-colorizer";
tag = "v${finalAttrs.version}";
hash = "sha256-E6VX2naAS2xof5sdnuaSuKueIKecW0fi9SycgLVRQVU=";
};
nativeBuildInputs = [
cmake
kdePackages.extra-cmake-modules
];
buildInputs = [
kdePackages.plasma-desktop
];
strictDeps = true;
cmakeFlags = [
(lib.cmakeBool "INSTALL_PLASMOID" true)
(lib.cmakeBool "BUILD_PLUGIN" true)
(lib.cmakeFeature "Qt6_DIR" "${kdePackages.qtbase}/lib/cmake/Qt6")
];
dontWrapQtApps = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Fully-featured widget to bring Latte-Dock and WM status bar customization features to the default KDE Plasma panel";
homepage = "https://github.com/luisbocanegra/plasma-panel-colorizer";
changelog = "https://github.com/luisbocanegra/plasma-panel-colorizer/blob/main/CHANGELOG.md";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ HeitorAugustoLN ];
inherit (kdePackages.kwindowsystem.meta) platforms;
};
})

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
kdePackages,
glib,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "plasma-panel-spacer-extended";
version = "1.11.1";
src = fetchFromGitHub {
owner = "luisbocanegra";
repo = "plasma-panel-spacer-extended";
tag = "v${finalAttrs.version}";
hash = "sha256-TQx9J10qfjCaolq/mpSjhV13uYxK/wBGIXH1sQFaLRA=";
};
nativeBuildInputs = [
cmake
kdePackages.extra-cmake-modules
];
buildInputs = [
kdePackages.kdeplasma-addons
kdePackages.plasma-desktop
];
strictDeps = true;
cmakeFlags = [ (lib.cmakeFeature "Qt6_DIR" "${kdePackages.qtbase}/lib/cmake/Qt6") ];
propagatedUserEnvPkgs = [ glib ];
dontWrapQtApps = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Spacer with mouse gestures for the KDE Plasma Panel";
homepage = "https://github.com/luisbocanegra/plasma-panel-spacer-extended";
changelog = "https://github.com/luisbocanegra/plasma-panel-spacer-extended/blob/main/CHANGELOG.md";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ HeitorAugustoLN ];
inherit (kdePackages.kwindowsystem.meta) platforms;
};
})

View File

@@ -0,0 +1,39 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
nix-update-script,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "plasma-plugin-blurredwallpaper";
version = "3.4.0";
src = fetchFromGitHub {
owner = "bouteillerAlan";
repo = "blurredwallpaper";
rev = "v${finalAttrs.version}";
hash = "sha256-pklqYT8o1AfOAjQTl3rVm+XWXoL+pGChpjx40ywr8Xs=";
};
installPhase = ''
runHook preInstall
install -d $out/share/plasma/wallpapers/a2n.blur{,.plasma5}
cp -r a2n.blur{,.plasma5} $out/share/plasma/wallpapers/
runHook postInstall
'';
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Plasma 6 wallpaper plugin to blur the wallpaper of active window";
homepage = "https://github.com/bouteillerAlan/blurredwallpaper";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [
dr460nf1r3
johnrtitor
];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,36 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
kdePackages,
nix-update-script,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "plasmusic-toolbar";
version = "3.5.0";
src = fetchFromGitHub {
owner = "ccatterina";
repo = "plasmusic-toolbar";
tag = "v${finalAttrs.version}";
hash = "sha256-vP5wBhj5YFJedxwIMSaNhOST+6vbwsAS5YLzyUEAdJQ=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/plasma/plasmoids/plasmusic-toolbar
cp -r src/* $out/share/plasma/plasmoids/plasmusic-toolbar
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "KDE Plasma widget that shows currently playing song information and provide playback controls";
homepage = "https://github.com/ccatterina/plasmusic-toolbar";
changelog = "https://github.com/ccatterina/plasmusic-toolbar/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ HeitorAugustoLN ];
inherit (kdePackages.kwindowsystem.meta) platforms;
};
})

View File

@@ -0,0 +1,132 @@
{
alsa-lib,
at-spi2-atk,
autoPatchelfHook,
cairo,
cups,
dbus,
desktop-file-utils,
expat,
fetchurl,
gdk-pixbuf,
gtk3,
gvfs,
hicolor-icon-theme,
lib,
libdrm,
libglvnd,
libnotify,
libxkbcommon,
libgbm,
nspr,
nss,
openssl,
pango,
rpmextract,
stdenv,
systemd,
trash-cli,
vulkan-loader,
wrapGAppsHook3,
xdg-utils,
xorg,
}:
stdenv.mkDerivation rec {
pname = "plasticity";
version = "25.2.11";
src = fetchurl {
url = "https://github.com/nkallen/plasticity/releases/download/v${version}/Plasticity-${version}-1.x86_64.rpm";
hash = "sha256-aqc6CDR3yBOGaRr+VjXQrTXZKvr9kqzaqcu5y30clCA=";
};
passthru.updateScript = ./update.sh;
nativeBuildInputs = [
wrapGAppsHook3
autoPatchelfHook
rpmextract
libgbm
];
buildInputs = [
alsa-lib
at-spi2-atk
cairo
cups
dbus
desktop-file-utils
expat
gdk-pixbuf
gtk3
gvfs
hicolor-icon-theme
libdrm
libnotify
libxkbcommon
nspr
nss
openssl
pango
(lib.getLib stdenv.cc.cc)
trash-cli
xdg-utils
];
runtimeDependencies = [
systemd
libglvnd
vulkan-loader # may help with nvidia users
xorg.libX11
xorg.libxcb
xorg.libXcomposite
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXrandr
xorg.libXtst
];
dontUnpack = true;
# can't find anything on the internet about these files, no clue what they do
autoPatchelfIgnoreMissingDeps = [
"ACCAMERA.tx"
"AcMPolygonObj15.tx"
"ATEXT.tx"
"ISM.tx"
"RText.tx"
"SCENEOE.tx"
"TD_DbEntities.tx"
"TD_DbIO.tx"
"WipeOut.tx"
];
installPhase = ''
runHook preInstall
mkdir $out
cd $out
rpmextract $src
mv $out/usr/* $out
rm -r $out/usr
rm -r $out/lib/.build-id
runHook postInstall
'';
#--use-gl=egl for it to use hardware rendering it seems. Otherwise there are terrible framerates
preFixup = ''
gappsWrapperArgs+=(--add-flags "--use-gl=egl")
'';
meta = with lib; {
description = "CAD for artists";
homepage = "https://www.plasticity.xyz";
license = licenses.unfree;
mainProgram = "Plasticity";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
maintainers = with maintainers; [ imadnyc ];
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,17 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq common-updater-scripts
#shellcheck shell=bash
set -eu -o pipefail
version=$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
https://api.github.com/repos/nkallen/plasticity/releases/latest | jq -e -r ".tag_name | .[1:]")
old_version=$(nix-instantiate --eval -A plasticity.version | jq -e -r)
if [[ $version == "$old_version" ]]; then
echo "New version same as old version, nothing to do." >&2
exit 0
fi
update-source-version plasticity "$version"

View File

@@ -0,0 +1,56 @@
{
stdenv,
cmake,
fetchFromGitHub,
lib,
libGLU,
makeDesktopItem,
qt5,
}:
stdenv.mkDerivation rec {
pname = "plater";
version = "1.0.0-unstable-2025-03-24";
src = fetchFromGitHub {
owner = "Rhoban";
repo = "Plater";
rev = "6c4f924504979095b1b45cf8fd81b1e38f0f8642";
hash = "sha256-+iL5Gl7k4lPikRwkyhaXSEcFYmhXV4ubAvP3iTBXDO8=";
};
nativeBuildInputs = [
cmake
qt5.wrapQtAppsHook
];
buildInputs = [
libGLU
qt5.qtbase
];
desktopItem = makeDesktopItem {
name = "plater";
exec = "plater";
icon = "plater";
desktopName = "Ideamaker";
genericName = meta.description;
categories = [
"Utility"
"Engineering"
];
};
postInstall = ''
mkdir -p $out/share/pixmaps
ln -s ${desktopItem}/share/applications $out/share/
cp $src/gui/img/plater.png $out/share/pixmaps/${pname}.png
'';
meta = {
description = "3D-printer parts placer and plate generator";
homepage = "https://github.com/Rhoban/Plater";
maintainers = with lib.maintainers; [ lovesegfault ];
platforms = lib.platforms.linux;
license = lib.licenses.cc-by-nc-30;
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
gitUpdater,
}:
stdenv.mkDerivation rec {
pname = "platform-folders";
version = "4.3.0";
src = fetchFromGitHub {
owner = "sago007";
repo = "PlatformFolders";
rev = version;
hash = "sha256-8dKW9nmxiqt47Z9RBNuHjFRyOhwmi+9mR7prUOxXIRE=";
};
nativeBuildInputs = [ cmake ];
cmakeFlags = [
"-DBUILD_SHARED_LIBS=${if stdenv.hostPlatform.isStatic then "OFF" else "ON"}"
];
passthru.updateScript = gitUpdater { };
meta = with lib; {
description = "C++ library to look for standard platform directories so that you do not need to write platform-specific code";
homepage = "https://github.com/sago007/PlatformFolders";
license = licenses.mit;
maintainers = [ ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
buildFHSEnv,
platformio-core,
}:
let
pio-pkgs =
pkgs:
let
inherit (platformio-core) python;
in
(with pkgs; [
platformio-core
zlib
git
xdg-user-dirs
ncurses
udev
])
++ (with python.pkgs; [
python
setuptools
pip
bottle
]);
in
buildFHSEnv {
pname = "platformio";
inherit (platformio-core) version;
targetPkgs = pio-pkgs;
# disabled temporarily because fastdiff no longer support 32bit
# multiPkgs = pio-pkgs;
meta = with lib; {
description = "Open source ecosystem for IoT development";
homepage = "https://platformio.org";
maintainers = with maintainers; [ mog ];
license = licenses.asl20;
platforms = with platforms; linux;
};
extraInstallCommands = ''
ln -s $out/bin/platformio $out/bin/pio
ln -s ${platformio-core.udev}/lib $out/lib
'';
runScript = "platformio";
}

View File

@@ -0,0 +1,11 @@
--- a/platformio/builder/main.py
+++ b/platformio/builder/main.py
@@ -46,6 +46,8 @@ clivars.AddVariables(
("PROGRAM_ARGS",),
)
+os.environ["PATH"] = os.pathsep.join([os.path.dirname(get_pythonexe_path()), os.environ.get("PATH")])
+
DEFAULT_ENV_OPTIONS = dict(
tools=[
"ar",

View File

@@ -0,0 +1,22 @@
diff --git a/platformio/proc.py b/platformio/proc.py
index 707245a1..cae17a29 100644
--- a/platformio/proc.py
+++ b/platformio/proc.py
@@ -165,7 +165,7 @@ def is_container():
def get_pythonexe_path():
- return os.environ.get("PYTHONEXEPATH", os.path.normpath(sys.executable))
+ return "@interpreter@"
def copy_pythonpath_to_osenv():
@@ -181,7 +181,7 @@ def copy_pythonpath_to_osenv():
)
if all(conditions):
_PYTHONPATH.append(p)
- os.environ["PYTHONPATH"] = os.pathsep.join(_PYTHONPATH)
+ os.environ["PYTHONPATH"] = os.pathsep.join(sys.path)
def where_is_program(program, envpath=None):

View File

@@ -0,0 +1,12 @@
diff --git a/platformio/exception.py b/platformio/exception.py
index 80ffb496..ea064f97 100644
--- a/platformio/exception.py
+++ b/platformio/exception.py
@@ -49,6 +49,7 @@ class MissedUdevRules(InvalidUdevRules):
MESSAGE = (
"Warning! Please install `99-platformio-udev.rules`. \nMore details: "
"https://docs.platformio.org/en/latest/core/installation/udev-rules.html"
+ "On NixOS set `services.udev.packages = with pkgs; [ platformio-core.udev ];`."
)

View File

@@ -0,0 +1,230 @@
{
lib,
python3Packages,
fetchFromGitHub,
fetchpatch,
installShellFiles,
git,
spdx-license-list-data,
replaceVars,
writableTmpDirAsHomeHook,
udevCheckHook,
}:
with python3Packages;
buildPythonApplication rec {
pname = "platformio";
version = "6.1.18";
pyproject = true;
# pypi tarballs don't contain tests - https://github.com/platformio/platformio-core/issues/1964
src = fetchFromGitHub {
owner = "platformio";
repo = "platformio-core";
tag = "v${version}";
hash = "sha256-h9/xDWXCoGHQ9r2f/ZzAtwTAs4qzDrvVAQ2kuLS9Lk8=";
};
outputs = [
"out"
"udev"
];
patches = [
(replaceVars ./interpreter.patch {
interpreter = (python3Packages.python.withPackages (_: dependencies)).interpreter;
})
(replaceVars ./use-local-spdx-license-list.patch {
spdx_license_list_data = spdx-license-list-data.json;
})
./missing-udev-rules-nixos.patch
(fetchpatch {
# restore PYTHONPATH when calling scons
# https://github.com/platformio/platformio-core/commit/097de2be98af533578671baa903a3ae825d90b94
url = "https://github.com/platformio/platformio-core/commit/097de2be98af533578671baa903a3ae825d90b94.patch";
hash = "sha256-yq+/QHCkhAkFND11MbKFiiWT3oF1cHhgWj5JkYjwuY0=";
revert = true;
})
./builder-prioritize-python-env-in-path.patch
];
postPatch = ''
# Disable update checks at runtime
substituteInPlace platformio/maintenance.py --replace-fail ' check_platformio_upgrade()' ""
# Remove filterwarnings which fails on new deprecations in Python 3.12 for 3.14
rm tox.ini
'';
nativeBuildInputs = [
installShellFiles
udevCheckHook
];
build-system = [ setuptools ];
pythonRelaxDeps = true;
dependencies = [
aiofiles
ajsonrpc
bottle
click
click-completion
colorama
esp-idf-size
git
intelhex
lockfile
marshmallow
pip
pyelftools
pyserial
pyyaml
requests
rich-click
semantic-version
setuptools
spdx-license-list-data.json
starlette
tabulate
uvicorn
wheel
wsproto
zeroconf
]
++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
chardet
];
preCheck = ''
export PATH=$PATH:$out/bin
'';
nativeCheckInputs = [
jsondiff
pytestCheckHook
writableTmpDirAsHomeHook
];
# Install udev rules into a separate output so all of platformio-core is not a dependency if
# you want to use the udev rules on NixOS but not install platformio in your system packages.
postInstall = ''
mkdir -p $udev/lib/udev/rules.d
cp platformio/assets/system/99-platformio-udev.rules $udev/lib/udev/rules.d/99-platformio-udev.rules
installShellCompletion --cmd platformio \
--bash <(_PLATFORMIO_COMPLETE=bash_source $out/bin/platformio) \
--zsh <(_PLATFORMIO_COMPLETE=zsh_source $out/bin/platformio) \
--fish <(_PLATFORMIO_COMPLETE=fish_source $out/bin/platformio)
installShellCompletion --cmd pio \
--bash <(_PIO_COMPLETE=bash_source $out/bin/pio) \
--zsh <(_PIO_COMPLETE=zsh_source $out/bin/pio) \
--fish <(_PIO_COMPLETE=fish_source $out/bin/pio)
'';
enabledTestPaths = [
"tests"
];
disabledTestPaths = [
"tests/commands/pkg/test_install.py"
"tests/commands/pkg/test_list.py"
"tests/commands/pkg/test_outdated.py"
"tests/commands/pkg/test_search.py"
"tests/commands/pkg/test_show.py"
"tests/commands/pkg/test_uninstall.py"
"tests/commands/pkg/test_update.py"
"tests/commands/test_boards.py"
"tests/commands/test_check.py"
"tests/commands/test_platform.py"
"tests/commands/test_run.py"
"tests/commands/test_test.py"
"tests/misc/test_maintenance.py"
# requires internet connection
"tests/misc/ino2cpp/test_ino2cpp.py"
"tests/commands/pkg/test_exec.py::test_pkg_specified"
"tests/commands/pkg/test_exec.py::test_unrecognized_options"
"tests/commands/test_ci.py::test_ci_boards"
"tests/commands/test_ci.py::test_ci_build_dir"
"tests/commands/test_ci.py::test_ci_keep_build_dir"
"tests/commands/test_ci.py::test_ci_lib_and_board"
"tests/commands/test_ci.py::test_ci_project_conf"
"tests/commands/test_init.py::test_init_custom_framework"
"tests/commands/test_init.py::test_init_duplicated_boards"
"tests/commands/test_init.py::test_init_enable_auto_uploading"
"tests/commands/test_init.py::test_init_ide_atom"
"tests/commands/test_init.py::test_init_ide_clion"
"tests/commands/test_init.py::test_init_ide_eclipse"
"tests/commands/test_init.py::test_init_ide_vscode"
"tests/commands/test_init.py::test_init_incorrect_board"
"tests/commands/test_init.py::test_init_special_board"
"tests/commands/test_lib.py::test_global_install_archive"
"tests/commands/test_lib.py::test_global_install_registry"
"tests/commands/test_lib.py::test_global_install_repository"
"tests/commands/test_lib.py::test_global_lib_list"
"tests/commands/test_lib.py::test_global_lib_uninstall"
"tests/commands/test_lib.py::test_global_lib_update"
"tests/commands/test_lib.py::test_global_lib_update_check"
"tests/commands/test_lib.py::test_install_duplicates"
"tests/commands/test_lib.py::test_lib_show"
"tests/commands/test_lib.py::test_lib_stats"
"tests/commands/test_lib.py::test_saving_deps"
"tests/commands/test_lib.py::test_search"
"tests/commands/test_lib.py::test_update"
"tests/commands/test_lib_complex.py::test_global_install_archive"
"tests/commands/test_lib_complex.py::test_global_install_registry"
"tests/commands/test_lib_complex.py::test_global_install_repository"
"tests/commands/test_lib_complex.py::test_global_lib_list"
"tests/commands/test_lib_complex.py::test_global_lib_uninstall"
"tests/commands/test_lib_complex.py::test_global_lib_update"
"tests/commands/test_lib_complex.py::test_global_lib_update_check"
"tests/commands/test_lib_complex.py::test_install_duplicates"
"tests/commands/test_lib_complex.py::test_lib_show"
"tests/commands/test_lib_complex.py::test_lib_stats"
"tests/commands/test_lib_complex.py::test_search"
"tests/package/test_manager.py::test_download"
"tests/package/test_manager.py::test_install_force"
"tests/package/test_manager.py::test_install_from_registry"
"tests/package/test_manager.py::test_install_lib_depndencies"
"tests/package/test_manager.py::test_registry"
"tests/package/test_manager.py::test_uninstall"
"tests/package/test_manager.py::test_update_with_metadata"
"tests/package/test_manager.py::test_update_without_metadata"
"tests/test_builder.py::test_build_flags"
"tests/test_builder.py::test_build_unflags"
"tests/test_builder.py::test_debug_custom_build_flags"
"tests/test_builder.py::test_debug_default_build_flags"
"tests/test_misc.py::test_api_cache"
"tests/test_misc.py::test_ping_internet_ips"
"tests/test_misc.py::test_platformio_cli"
"tests/test_pkgmanifest.py::test_packages"
];
disabledTests = [
# requires internet connection
"test_api_cache"
"test_ping_internet_ips"
"test_metadata_dump"
];
passthru = {
python = python3Packages.python;
};
meta = with lib; {
changelog = "https://github.com/platformio/platformio-core/releases/tag/${src.tag}";
description = "Open source ecosystem for IoT development";
downloadPage = "https://github.com/platformio/platformio-core";
homepage = "https://platformio.org";
license = licenses.asl20;
maintainers = with maintainers; [
mog
makefu
];
mainProgram = "platformio";
};
}

View File

@@ -0,0 +1,17 @@
diff --git a/platformio/package/manifest/schema.py b/platformio/package/manifest/schema.py
index 47efae59..6c2cfaed 100644
--- a/platformio/package/manifest/schema.py
+++ b/platformio/package/manifest/schema.py
@@ -276,9 +276,6 @@ class ManifestSchema(BaseSchema):
@staticmethod
@memoized(expire="1h")
def load_spdx_licenses():
- version = "3.26.0"
- spdx_data_url = (
- "https://raw.githubusercontent.com/spdx/license-list-data/"
- f"v{version}/json/licenses.json"
- )
- return json.loads(fetch_remote_content(spdx_data_url))
+ with open("@spdx_license_list_data@/json/licenses.json") as fd:
+ spdx = json.load(fd)
+ return spdx

View File

@@ -0,0 +1,78 @@
{
stdenvNoCC,
lib,
fetchurl,
testers,
installShellFiles,
platformsh,
}:
let
versions = lib.importJSON ./versions.json;
arch =
if stdenvNoCC.hostPlatform.isx86_64 then
"amd64"
else if stdenvNoCC.hostPlatform.isAarch64 then
"arm64"
else
throw "Unsupported architecture";
os =
if stdenvNoCC.hostPlatform.isLinux then
"linux"
else if stdenvNoCC.hostPlatform.isDarwin then
"darwin"
else
throw "Unsupported os";
versionInfo = versions."${os}-${arch}";
inherit (versionInfo) hash url;
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "platformsh";
inherit (versions) version;
nativeBuildInputs = [ installShellFiles ];
# run ./update
src = fetchurl { inherit hash url; };
dontConfigure = true;
dontBuild = true;
sourceRoot = ".";
installPhase = ''
runHook preInstall
install -Dm755 platform $out/bin/platform
installShellCompletion completion/bash/platform.bash \
completion/zsh/_platform
runHook postInstall
'';
passthru = {
updateScript = ./update.sh;
tests.version = testers.testVersion {
inherit (finalAttrs) version;
package = platformsh;
};
};
meta = {
description = "Unified tool for managing your Platform.sh services from the command line";
homepage = "https://github.com/platformsh/cli";
license = lib.licenses.mit;
mainProgram = "platform";
maintainers = with lib.maintainers; [
spk
];
platforms = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})

View File

@@ -0,0 +1,29 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq
#shellcheck shell=bash
set -eu -o pipefail
version=$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
https://api.github.com/repos/platformsh/cli/releases/latest | jq -e -r ".tag_name")
linux_arm64_url=https://github.com/platformsh/cli/releases/download/$version/platform_${version}_linux_arm64.tar.gz
linux_amd64_url=https://github.com/platformsh/cli/releases/download/$version/platform_${version}_linux_amd64.tar.gz
darwin_all_url=https://github.com/platformsh/cli/releases/download/$version/platform_${version}_darwin_all.tar.gz
linux_arm64_hash=$(nix --extra-experimental-features nix-command hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "$linux_arm64_url"))
linux_amd64_hash=$(nix --extra-experimental-features nix-command hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "$linux_amd64_url"))
darwin_all_hash=$(nix --extra-experimental-features nix-command hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "$darwin_all_url"))
jq -n \
--arg version "$version" \
--arg darwin_all_hash "$darwin_all_hash" \
--arg darwin_all_url "$darwin_all_url" \
--arg linux_amd64_hash "$linux_amd64_hash" \
--arg linux_amd64_url "$linux_amd64_url" \
--arg linux_arm64_hash "$linux_arm64_hash" \
--arg linux_arm64_url "$linux_arm64_url" \
'{ "version": $version,
"darwin-amd64": { "hash": $darwin_all_hash, "url": $darwin_all_url },
"darwin-arm64": { "hash": $darwin_all_hash, "url": $darwin_all_url },
"linux-amd64": { "hash": $linux_amd64_hash, "url": $linux_amd64_url },
"linux-arm64": { "hash": $linux_arm64_hash, "url": $linux_arm64_url }
}' > pkgs/by-name/pl/platformsh/versions.json

View File

@@ -0,0 +1,19 @@
{
"version": "5.5.0",
"darwin-amd64": {
"hash": "sha256-cuLDYW0kr6D2qMhVW+avwbnqq6KI4zRyNBbNSNOpY2o=",
"url": "https://github.com/platformsh/cli/releases/download/5.5.0/platform_5.5.0_darwin_all.tar.gz"
},
"darwin-arm64": {
"hash": "sha256-cuLDYW0kr6D2qMhVW+avwbnqq6KI4zRyNBbNSNOpY2o=",
"url": "https://github.com/platformsh/cli/releases/download/5.5.0/platform_5.5.0_darwin_all.tar.gz"
},
"linux-amd64": {
"hash": "sha256-7WUjkF8u8AvCFT1MtNjYQI3jlmoABmmEUyg4pctCrGo=",
"url": "https://github.com/platformsh/cli/releases/download/5.5.0/platform_5.5.0_linux_amd64.tar.gz"
},
"linux-arm64": {
"hash": "sha256-WTATvnvCF1GDObO14wHWN290/qz24f3gOKgnjNW0xF8=",
"url": "https://github.com/platformsh/cli/releases/download/5.5.0/platform_5.5.0_linux_arm64.tar.gz"
}
}

View File

@@ -0,0 +1,40 @@
{
lib,
buildGoModule,
fetchFromGitHub,
fetchpatch,
}:
buildGoModule rec {
pname = "the_platinum_searcher";
version = "2.2.0";
src = fetchFromGitHub {
owner = "monochromegane";
repo = "the_platinum_searcher";
rev = "v${version}";
hash = "sha256-FNHlALFwMbajaHWOehdSFeQmvZSuCZLdqGqLZ7DF+pI=";
};
vendorHash = "sha256-GIjPgu0e+duN5MeWcRaF5xUFCkqe2aZJCwGbLUMko08=";
patches = [
# Add Go Modules support. See https://github.com/monochromegane/the_platinum_searcher/pull/217.
(fetchpatch {
url = "https://github.com/monochromegane/the_platinum_searcher/pull/217/commits/69064d11c57d5fd5f66ddd95f0e789786183d3c6.patch";
hash = "sha256-qQ7kZYb2MWSUV6T1frIPT9nMfb20SI7lbG8YhqyQEi8=";
})
];
ldflags = [
"-s"
"-w"
];
meta = with lib; {
homepage = "https://github.com/monochromegane/the_platinum_searcher";
description = "Code search tool similar to ack and the_silver_searcher(ag)";
mainProgram = "pt";
license = licenses.mit;
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
python3Packages,
fetchFromGitHub,
meson,
ninja,
pkg-config,
gobject-introspection,
wrapGAppsHook4,
desktop-file-utils,
libadwaita,
}:
python3Packages.buildPythonApplication rec {
pname = "plattenalbum";
version = "2.3.1";
pyproject = false;
src = fetchFromGitHub {
owner = "SoongNoonien";
repo = "plattenalbum";
tag = "v${version}";
hash = "sha256-8Oa/tFow+rW96AUQEQXaI4ybBFce0QDiRFt2V0X/uuo=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gobject-introspection
wrapGAppsHook4
desktop-file-utils
];
buildInputs = [ libadwaita ];
dependencies = with python3Packages; [
pygobject3
mpd2
];
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=(''${gappsWrapperArgs[@]})
'';
meta = {
description = "Client for the Music Player Daemon (originally named mpdevil)";
homepage = "https://github.com/SoongNoonien/plattenalbum";
changelog = "https://github.com/SoongNoonien/plattenalbum/releases/tag/${src.tag}";
license = with lib.licenses; [
gpl3Only
cc0
];
mainProgram = "plattenalbum";
maintainers = with lib.maintainers; [ aleksana ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,185 @@
{
lib,
beamPackages,
buildNpmPackage,
rustPlatform,
fetchFromGitHub,
nodejs,
runCommand,
nixosTests,
npm-lockfile-fix,
nix-update-script,
brotli,
tailwindcss_3,
esbuild,
}:
let
pname = "plausible";
version = "3.0.1";
mixEnv = "ce";
src = fetchFromGitHub {
owner = "plausible";
repo = "analytics";
rev = "v${version}";
hash = "sha256-DQIRsqkH2zgIkb3yezuJEKJ99PS031GJ+bDAeHMLNUY=";
postFetch = ''
${lib.getExe npm-lockfile-fix} $out/assets/package-lock.json
sed -ie '
/defp deps do/ {
n
/\[/ a\
\{:rustler, ">= 0.0.0", optional: true \},
}
' $out/mix.exs
cat >> $out/config/config.exs <<EOF
config :mjml, Mjml.Native,
crate: :mjml_nif,
skip_compilation?: true
EOF
'';
};
assets = buildNpmPackage {
pname = "${pname}-assets";
inherit version;
src = "${src}/assets";
npmDepsHash = "sha256-hPbKEC8DE/gb483COG/ZbTuEP8Y44Fs7ppHMpXphCjg=";
dontNpmBuild = true;
installPhase = ''
runHook preInstall
cp -r . "$out"
runHook postInstall
'';
};
tracker = buildNpmPackage {
pname = "${pname}-tracker";
inherit version;
src = "${src}/tracker";
npmDepsHash = "sha256-kfqJVUw3xnMT0sOkc5O42CwBxPQXiYnOQ5WpdZwzxfE";
dontNpmBuild = true;
installPhase = ''
runHook preInstall
cp -r . "$out"
runHook postInstall
'';
};
mixFodDeps = beamPackages.fetchMixDeps {
inherit
pname
version
src
mixEnv
;
hash = "sha256-caCbuMEDsLcxm8xehWEJiaTfgl435crBfnQFQpzGsLY";
};
mjmlNif = rustPlatform.buildRustPackage {
pname = "mjml-native";
version = "";
src = "${mixFodDeps}/mjml/native/mjml_nif";
cargoHash = "sha256-zDWOik65PWAMpIDDcG+DibprPVW/k+Q83+fjFI5vWaY=";
doCheck = false;
env = {
RUSTLER_PRECOMPILED_FORCE_BUILD_ALL = "true";
RUSTLER_PRECOMPILED_GLOBAL_CACHE_PATH = "unused-but-required";
};
};
patchedMixFodDeps =
runCommand mixFodDeps.name
{
inherit (mixFodDeps) hash;
}
''
mkdir $out
cp -r --no-preserve=mode ${mixFodDeps}/. $out
mkdir -p $out/mjml/priv/native
for lib in ${mjmlNif}/lib/*
do
# normalies suffix to .so, otherswise build would fail on darwin
file=''${lib##*/}
base=''${file%.*}
ln -s "$lib" $out/mjml/priv/native/$base.so
done
'';
in
beamPackages.mixRelease rec {
inherit
pname
version
src
mixEnv
;
nativeBuildInputs = [
nodejs
brotli
];
mixFodDeps = patchedMixFodDeps;
passthru = {
tests = {
inherit (nixosTests) plausible;
};
updateScript = nix-update-script {
extraArgs = [
"-s"
"tracker"
"-s"
"assets"
"-s"
"mjmlNif"
];
};
inherit
assets
tracker
mjmlNif
;
};
env = {
APP_VERSION = version;
RUSTLER_PRECOMPILED_FORCE_BUILD_ALL = "true";
RUSTLER_PRECOMPILED_GLOBAL_CACHE_PATH = "unused-but-required";
};
preBuild = ''
rm -r assets tracker
cp --no-preserve=mode -r ${assets} assets
cp -r ${tracker} tracker
cat >> config/config.exs <<EOF
config :tailwind, path: "${lib.getExe tailwindcss_3}"
config :esbuild, path: "${lib.getExe esbuild}"
EOF
'';
postBuild = ''
npm run deploy --prefix ./tracker
# for external task you need a workaround for the no deps check flag
# https://github.com/phoenixframework/phoenix/issues/2690
mix do deps.loadpaths --no-deps-check, assets.deploy
mix do deps.loadpaths --no-deps-check, phx.digest priv/static
'';
meta = {
license = lib.licenses.agpl3Plus;
homepage = "https://plausible.io/";
changelog = "https://github.com/plausible/analytics/blob/${src.rev}/CHANGELOG.md";
description = "Simple, open-source, lightweight (< 1 KB) and privacy-friendly web analytics alternative to Google Analytics";
mainProgram = "plausible";
teams = with lib.teams; [ cyberus ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,63 @@
{
lib,
python3Packages,
fetchFromGitHub,
fetchurl,
youtube-dl,
}:
let
install-freedesktop = python3Packages.buildPythonPackage rec {
pname = "install-freedesktop";
version = "0.1.2-1-g2673e8d";
format = "setuptools";
src = fetchurl {
name = "Thann-install_freedesktop-${version}.tar.gz";
url = "https://github.com/thann/install_freedesktop/tarball/2673e8da4a67bee0ffc52a0ea381a541b4becdd4";
hash = "sha256-O08G0iMGsF1DSyliXOHTIsOxDdJPBabNLXRhz5osDUk=";
};
# package has no tests
doCheck = false;
};
in
python3Packages.buildPythonApplication {
pname = "play-with-mpv";
version = "unstable-2021-04-02";
format = "setuptools";
src = fetchFromGitHub {
owner = "thann";
repo = "play-with-mpv";
rev = "07a9c1dd57d9e16538991b13fd3e2ed54d6e3a2d";
hash = "sha256-ZtUFzgYGNa9+g2xDONW8B5bbsbXmyY3IeT1GQH0AVIw=";
};
postPatch = ''
substituteInPlace setup.py --replace \
'"https://github.com/thann/install_freedesktop/tarball/master#egg=install_freedesktop-0.2.0"' \
'"file://${install-freedesktop}#egg=install_freedesktop-0.2.0"' \
--replace 'version = get_version()' 'version = "0.1.0.post9"'
'';
nativeBuildInputs = with python3Packages; [
install-freedesktop
wheel
];
propagatedBuildInputs = [
youtube-dl
];
# package has no tests
doCheck = false;
meta = with lib; {
description = "Chrome extension and python server that allows you to play videos in webpages with MPV instead";
homepage = "https://github.com/Thann/play-with-mpv";
license = licenses.mit;
maintainers = with maintainers; [ dawidsowa ];
mainProgram = "play-with-mpv";
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
nix-update-script,
}:
buildGoModule rec {
pname = "play";
version = "0.4.0";
src = fetchFromGitHub {
owner = "paololazzari";
repo = "play";
tag = "v${version}";
hash = "sha256-0ew8iYpNzSsE4fhAIB7NZYDIJitmpS5npJ74Hp6l0E0=";
};
vendorHash = "sha256-9eP0rhsgpTttYrBG/BNk/ICtaM+zKNBz2H2cHuTSt30=";
modRoot = ".";
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "version";
doInstallCheck = true;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "TUI playground for programs like grep, sed and awk";
homepage = "https://github.com/paololazzari/play";
changelog = "https://github.com/paololazzari/play/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ liberodark ];
mainProgram = "play";
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
stdenv,
buildPackages,
docbook_xsl,
fetchFromGitHub,
glib,
gobject-introspection,
gtk-doc,
meson,
mesonEmulatorHook,
ninja,
pkg-config,
withDocs ? stdenv.hostPlatform.emulatorAvailable buildPackages,
}:
stdenv.mkDerivation rec {
pname = "playerctl";
version = "2.4.1";
src = fetchFromGitHub {
owner = "acrisci";
repo = "playerctl";
rev = "v${version}";
sha256 = "sha256-OiGKUnsKX0ihDRceZoNkcZcEAnz17h2j2QUOSVcxQEY=";
};
nativeBuildInputs = [
docbook_xsl
gobject-introspection
gtk-doc
meson
ninja
pkg-config
]
++ lib.optionals (withDocs && !stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
mesonEmulatorHook
];
buildInputs = [ glib ];
mesonFlags = [
(lib.mesonBool "bash-completions" true)
(lib.mesonBool "zsh-completions" true)
(lib.mesonBool "gtk-doc" withDocs)
];
meta = with lib; {
description = "Command-line utility and library for controlling media players that implement MPRIS";
homepage = "https://github.com/acrisci/playerctl";
license = licenses.lgpl3;
platforms = platforms.unix;
maintainers = with maintainers; [ puffnfresh ];
broken = stdenv.hostPlatform.isDarwin;
mainProgram = "playerctl";
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
playwright-driver,
playwright-test,
}:
buildNpmPackage rec {
pname = "playwright-mcp";
version = "0.0.34";
src = fetchFromGitHub {
owner = "Microsoft";
repo = "playwright-mcp";
tag = "v${version}";
hash = "sha256-SGSzX41D9nOTsGiU16tRFXgarWgePRsNWIcEnNGH0lQ=";
};
npmDepsHash = "sha256-+6HmuR1Z5cJkoZq/vsFq6wNsYpZeDS42wwmh3hEgJhM=";
postInstall = ''
rm -r $out/lib/node_modules/@playwright/mcp/node_modules/playwright
rm -r $out/lib/node_modules/@playwright/mcp/node_modules/playwright-core
ln -s ${playwright-test}/lib/node_modules/playwright $out/lib/node_modules/@playwright/mcp/node_modules/playwright
ln -s ${playwright-test}/lib/node_modules/playwright-core $out/lib/node_modules/@playwright/mcp/node_modules/playwright-core
wrapProgram $out/bin/mcp-server-playwright \
--set PLAYWRIGHT_BROWSERS_PATH ${playwright-driver.browsers}
'';
passthru = {
# Package and playwright driver versions are tightly coupled.
skipBulkUpdate = true;
};
meta = {
changelog = "https://github.com/Microsoft/playwright-mcp/releases/tag/v${version}";
description = "Playwright MCP server";
homepage = "https://github.com/Microsoft/playwright-mcp";
license = lib.licenses.asl20;
mainProgram = "mcp-server-playwright";
maintainers = [ lib.maintainers.kalekseev ];
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
curl,
fetchFromGitHub,
jq,
makeBinaryWrapper,
please-cli,
stdenv,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "please-cli";
version = "0.4.3";
src = fetchFromGitHub {
owner = "TNG";
repo = "please-cli";
rev = "v${finalAttrs.version}";
hash = "sha256-Kpb36Fm49Cxr3PMlSoUfTNEMNmWFktgEoej1904DmEE=";
};
nativeBuildInputs = [ makeBinaryWrapper ];
installPhase = ''
runHook preInstall
install -Dm555 please.sh "$out/bin/please"
wrapProgram $out/bin/please \
--prefix PATH : ${
lib.makeBinPath [
curl
jq
]
}
runHook postInstall
'';
passthru.tests = testers.testVersion {
package = please-cli;
version = "v${finalAttrs.version}";
};
meta = with lib; {
description = "AI helper script to create CLI commands based on GPT prompts";
homepage = "https://github.com/TNG/please-cli";
license = licenses.asl20;
maintainers = with maintainers; [ _8-bit-fox ];
mainProgram = "please";
platforms = platforms.all;
};
})

View File

@@ -0,0 +1,13 @@
diff --git i/src/lib.rs w/src/lib.rs
index 5e98cfa..539434f 100644
--- i/src/lib.rs
+++ w/src/lib.rs
@@ -1755,7 +1755,7 @@ pub fn search_path(ro: &mut RunOptions, item: &EnvOptions) -> Option<String> {
let dirs = if item.search_path.is_some() {
item.search_path.as_ref().unwrap()
} else {
- "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+ "/run/wrappers/bin:/run/current-system/sw/sbin:/run/current-system/sw/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
};
for dir in dirs.split(':') {

View File

@@ -0,0 +1,54 @@
{
lib,
rustPlatform,
fetchFromGitLab,
installShellFiles,
pam,
nixosTests,
}:
rustPlatform.buildRustPackage rec {
pname = "please";
version = "0.5.5";
src = fetchFromGitLab {
owner = "edneville";
repo = "please";
rev = "v${version}";
hash = "sha256-bQ91uCDA2HKuiBmHZ9QP4V6tM6c7hRvECqXzfC6EEnI=";
};
cargoHash = "sha256-iKRLq2G0XYZFM/k0V6GVtx/Pl4rdfGaD4EVN34FLlOg=";
nativeBuildInputs = [ installShellFiles ];
buildInputs = [ pam ];
patches = [ ./nixos-specific.patch ];
postInstall = ''
installManPage man/*
'';
# Unit tests are broken on NixOS.
doCheck = false;
passthru.tests = { inherit (nixosTests) please; };
meta = with lib; {
description = "Polite regex-first sudo alternative";
longDescription = ''
Delegate accurate least privilege access with ease. Express easily with a
regex and expose only what is needed and nothing more. Or validate file
edits with pleaseedit.
Please is written with memory safe rust. Traditional C memory unsafety is
avoided, logic problems may exist but this codebase is relatively small.
'';
homepage = "https://www.usenix.org.uk/content/please.html";
changelog = "https://github.com/edneville/please/blob/${src.rev}/CHANGELOG.md";
license = licenses.gpl3Only;
maintainers = [ ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
python3Packages,
fetchFromGitHub,
fetchpatch,
unstableGitUpdater,
}:
python3Packages.buildPythonApplication {
pname = "plecost";
version = "0-unstable-2022-08-03";
pyproject = true;
src = fetchFromGitHub {
owner = "iniqua";
repo = "plecost";
# Release is untagged
rev = "4895e345d71bffe956be43530632e303dd379a5f";
hash = "sha256-cXXFLoiLZpo3qiAPztavns4EkOG2aC6UKMf0N4Eun/w=";
};
build-system = with python3Packages; [ setuptools ];
dependencies = with python3Packages; [
aiohttp
async-timeout
termcolor
lxml
];
# Project has no tests
doCheck = false;
pythonImportsCheck = [ "plecost_lib" ];
passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
meta = with lib; {
description = "Vulnerability fingerprinting and vulnerability finder for Wordpress blog engine";
mainProgram = "plecost";
homepage = "https://github.com/iniqua/plecost";
license = licenses.bsd3;
maintainers = with maintainers; [ emilytrau ];
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation rec {
pname = "plemoljp-hs";
version = "3.0.0";
src = fetchzip {
url = "https://github.com/yuru7/PlemolJP/releases/download/v${version}/PlemolJP_HS_v${version}.zip";
hash = "sha256-V21T8ktNZE4nq3SH6aN9iIJHmGTkZuMsvT84yHbwSqI=";
};
installPhase = ''
runHook preInstall
install -Dm444 PlemolJP_HS/*.ttf -t $out/share/fonts/truetype/plemoljp-hs
install -Dm444 PlemolJP35_HS/*.ttf -t $out/share/fonts/truetype/plemoljp-hs-35
install -Dm444 PlemolJPConsole_HS/*.ttf -t $out/share/fonts/truetype/plemoljp-hs-console
install -Dm444 PlemolJP35Console_HS/*.ttf -t $out/share/fonts/truetype/plemoljp-hs-35console
runHook postInstall
'';
meta = {
description = "Composite font of IBM Plex Mono, IBM Plex Sans JP and hidden full-width space";
homepage = "https://github.com/yuru7/PlemolJP";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ kachick ];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation rec {
pname = "plemoljp-nf";
version = "3.0.0";
src = fetchzip {
url = "https://github.com/yuru7/PlemolJP/releases/download/v${version}/PlemolJP_NF_v${version}.zip";
hash = "sha256-m8zR9ySl88DnVzG4fKJtc9WjSLDMLU4YDX+KXhcP2WU=";
};
installPhase = ''
runHook preInstall
install -Dm444 PlemolJPConsole_NF/*.ttf -t $out/share/fonts/truetype/plemoljp-nf-console
install -Dm444 PlemolJP35Console_NF/*.ttf -t $out/share/fonts/truetype/plemoljp-nf-35console
runHook postInstall
'';
meta = {
description = "Composite font of IBM Plex Mono, IBM Plex Sans JP and nerd-fonts";
homepage = "https://github.com/yuru7/PlemolJP";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ kachick ];
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation rec {
pname = "plemoljp";
version = "3.0.0";
src = fetchzip {
url = "https://github.com/yuru7/PlemolJP/releases/download/v${version}/PlemolJP_v${version}.zip";
hash = "sha256-R4zC1pnM72FVqBQ5d03z8vyVccsM163BE15m2hdEnSA=";
};
installPhase = ''
runHook preInstall
install -Dm444 PlemolJP/*.ttf -t $out/share/fonts/truetype/plemoljp
install -Dm444 PlemolJP35/*.ttf -t $out/share/fonts/truetype/plemoljp-35
install -Dm444 PlemolJPConsole/*.ttf -t $out/share/fonts/truetype/plemoljp-console
install -Dm444 PlemolJP35Console/*.ttf -t $out/share/fonts/truetype/plemoljp-35console
runHook postInstall
'';
meta = {
description = "Composite font of IBM Plex Mono and IBM Plex Sans JP";
homepage = "https://github.com/yuru7/PlemolJP";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ kachick ];
};
}

View File

@@ -0,0 +1,165 @@
{
alsa-lib,
autoPatchelfHook,
buildFHSEnv,
elfutils,
extraEnv ? { },
fetchurl,
ffmpeg_6-headless,
lib,
libdrm,
libedit,
libpulseaudio,
libva,
libxkbcommon,
libxml2_13,
makeShellWrapper,
minizip,
nss,
squashfsTools,
stdenv,
writeShellScript,
xkeyboard_config,
xorg,
}:
let
pname = "plex-desktop";
version = "1.109.0";
rev = "85";
meta = {
homepage = "https://plex.tv/";
description = "Streaming media player for Plex";
longDescription = ''
Plex for Linux is your client for playback on the Linux
desktop. It features the point and click interface you see in your browser
but uses a more powerful playback engine as well as
some other advance features.
'';
maintainers = with lib.maintainers; [ detroyejr ];
license = lib.licenses.unfree;
platforms = [ "x86_64-linux" ];
mainProgram = "plex-desktop";
};
plex-desktop = stdenv.mkDerivation {
inherit pname version meta;
src = fetchurl {
url = "https://api.snapcraft.io/api/v1/snaps/download/qc6MFRM433ZhI1XjVzErdHivhSOhlpf0_${rev}.snap";
hash = "sha512-BSnA84purHv6qIVELp+AJI2m6erTngnupbuoCZTaje6LCd2+5+U+7gqWdahmO1mxJEGvuBwzetdDrp1Ibz5a6A==";
};
nativeBuildInputs = [
autoPatchelfHook
makeShellWrapper
squashfsTools
];
buildInputs = [
elfutils
ffmpeg_6-headless
libedit
libpulseaudio
libva
libxkbcommon
libxml2_13
minizip
nss
stdenv.cc.cc
xorg.libXcomposite
xorg.libXdamage
xorg.libXinerama
xorg.libXrandr
xorg.libXrender
xorg.libXtst
xorg.libxshmfence
xorg.xcbutilimage
xorg.xcbutilkeysyms
xorg.xcbutilrenderutil
xorg.xcbutilwm
xorg.xrandr
];
strictDeps = true;
unpackPhase = ''
runHook preUnpack
unsquashfs "$src"
cd squashfs-root
runHook postUnpack
'';
dontWrapQtApps = true;
installPhase = ''
runHook preInstall
cp -r . $out
rm -r $out/etc
rm -r $out/usr
# flatpak removes these during installation.
rm -r $out/lib/dri
rm $out/lib/libpciaccess.so*
rm $out/lib/libswresample.so*
rm $out/lib/libva-*.so*
rm $out/lib/libva.so*
rm $out/lib/libEGL.so*
rm $out/lib/libdrm.so*
rm $out/lib/libdrm*
# Keep dependencies where the version from nixpkgs is higher.
cp usr/lib/x86_64-linux-gnu/libasound.so.2 $out/lib/libasound.so.2
cp usr/lib/x86_64-linux-gnu/libjbig.so.0 $out/lib/libjbig.so.0
cp usr/lib/x86_64-linux-gnu/libjpeg.so.8 $out/lib/libjpeg.so.8
cp usr/lib/x86_64-linux-gnu/liblcms2.so.2 $out/lib/liblcms2.so.2
cp usr/lib/x86_64-linux-gnu/libpci.so.3.6.4 $out/lib/libpci.so.3
cp usr/lib/x86_64-linux-gnu/libsnappy.so.1.1.8 $out/lib/libsnappy.so.1
cp usr/lib/x86_64-linux-gnu/libtiff.so.5 $out/lib/libtiff.so.5
cp usr/lib/x86_64-linux-gnu/libwebp.so.6 $out/lib/libwebp.so.6
cp usr/lib/x86_64-linux-gnu/libxkbfile.so.1.0.2 $out/lib/libxkbfile.so.1
cp usr/lib/x86_64-linux-gnu/libxslt.so.1.1.34 $out/lib/libxslt.so.1
runHook postInstall
'';
};
in
buildFHSEnv {
inherit pname version meta;
targetPkgs = pkgs: [
alsa-lib
libdrm
xkeyboard_config
];
extraInstallCommands = ''
mkdir -p $out/share/applications $out/share/icons/hicolor/scalable/apps
install -m 444 -D ${plex-desktop}/meta/gui/plex-desktop.desktop $out/share/applications/plex-desktop.desktop
substituteInPlace $out/share/applications/plex-desktop.desktop \
--replace-fail \
'Icon=''${SNAP}/meta/gui/icon.png' \
'Icon=${plex-desktop}/meta/gui/icon.png'
'';
runScript = writeShellScript "plex-desktop.sh" ''
# Widevine won't download unless this directory exists.
mkdir -p $HOME/.cache/plex/
# Copy the sqlite plugin database on first run.
PLEX_DB="$HOME/.local/share/plex/Plex Media Server/Plug-in Support/Databases"
if [[ ! -d "$PLEX_DB" ]]; then
mkdir -p "$PLEX_DB"
cp "${plex-desktop}/resources/com.plexapp.plugins.library.db" "$PLEX_DB"
fi
# db files should have write access.
chmod --recursive 750 "$PLEX_DB"
# These environment variables sometimes silently cause plex to crash.
unset QT_QPA_PLATFORM QT_STYLE_OVERRIDE
set -o allexport
${lib.toShellVars extraEnv}
exec ${plex-desktop}/Plex.sh
'';
passthru.updateScript = ./update.sh;
}

View File

@@ -0,0 +1,71 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p curl jq git gnused gnugrep
# executing this script without arguments will
# - find the newest stable plex-desktop version avaiable on snapcraft (https://snapcraft.io/plex-desktop)
# - read the current plex-desktop version from the current nix expression
# - update the nix expression if the versions differ
# - try to build the updated version, exit if that fails
# - give instructions for upstreaming
# As an optional argument you can specify the snapcraft channel to update to.
# Default is `stable` and only stable updates should be pushed to nixpkgs. For
# testing you may specify `candidate` or `edge`.
channel="${1:-stable}" # stable/candidate/edge
nixpkgs="$(git rev-parse --show-toplevel)"
plex_nix="$nixpkgs/pkgs/by-name/pl/plex-desktop/package.nix"
#
# find the newest stable plex-desktop version avaiable on snapcraft
#
# create bash array from snap info
snap_info=($(
curl -s -H 'X-Ubuntu-Series: 16' \
"https://api.snapcraft.io/api/v1/snaps/details/plex-desktop?channel=$channel" \
| jq --raw-output \
'.revision,.download_sha512,.version,.last_updated'
))
# "revision" is the actual version identifier on snapcraft, the "version" is
# just for human consumption. Revision is just an integer that gets increased
# by one every (stable or unstable) release.
revision="${snap_info[0]}"
# We need to escape the slashes
hash="$(nix-hash --to-sri --type sha512 ${snap_info[1]} | sed 's|/|\\/|g')"
upstream_version="${snap_info[2]}"
last_updated="${snap_info[3]}"
echo "Latest $channel release is $upstream_version from $last_updated."
#
# read the current plex-desktop version from the currently *committed* nix expression
#
current_version=$(
grep 'version\s*=' "$plex_nix" \
| sed -Ene 's/.*"(.*)".*/\1/p'
)
echo "Current version: $current_version"
#
# update the nix expression if the versions differ
#
if [[ "$current_version" == "$upstream_version" ]]; then
echo "Plex is already up-to-date"
exit 0
fi
echo "Updating from ${current_version} to ${upstream_version}, released on ${last_updated}"
# search-and-replace revision, hash and version
sed --regexp-extended \
-e 's/rev\s*=\s*"[0-9]+"\s*;/rev = "'"${revision}"'";/' \
-e 's/hash\s*=\s*"[^"]*"\s*;/hash = "'"${hash}"'";/' \
-e 's/version\s*=\s*".*"\s*;/version = "'"${upstream_version}"'";/' \
-i "$plex_nix"

View File

@@ -0,0 +1,166 @@
{
alsa-lib,
autoPatchelfHook,
buildFHSEnv,
elfutils,
extraEnv ? { },
fetchurl,
ffmpeg_6-headless,
lib,
libdrm,
libgbm,
libpulseaudio,
libva,
libxkbcommon,
libxml2_13,
makeShellWrapper,
minizip,
nss,
squashfsTools,
stdenv,
writeShellScript,
xkeyboard_config,
xorg,
}:
let
pname = "plex-htpc";
version = "1.71.1";
rev = "73";
meta = {
homepage = "https://plex.tv/";
description = "Plex HTPC client for the big screen";
longDescription = ''
Plex HTPC for Linux is your client for playing on your Linux computer
connected to the big screen. It features a 10-foot interface with a
powerful playback engine.
'';
maintainers = with lib.maintainers; [ detroyejr ];
license = lib.licenses.unfree;
platforms = [ "x86_64-linux" ];
mainProgram = "plex-htpc";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
plex-htpc = stdenv.mkDerivation {
inherit pname version meta;
src = fetchurl {
url = "https://api.snapcraft.io/api/v1/snaps/download/81OP06hEXlwmMrpMAhe5hyLy5bQ9q6Kz_${rev}.snap";
hash = "sha512-n9pXRx8s6AwhIJm7PmUIOB8pXqzyNFzdmwJMonQ4WzWvA5tPI27x0slQ6WUxRBQJoLScGckyGAFxIGWRylNr3g==";
};
nativeBuildInputs = [
autoPatchelfHook
makeShellWrapper
squashfsTools
];
buildInputs = [
elfutils
ffmpeg_6-headless
libgbm
libpulseaudio
libva
libxkbcommon
libxml2_13
minizip
nss
stdenv.cc.cc
xorg.libXcomposite
xorg.libXdamage
xorg.libXinerama
xorg.libXrandr
xorg.libXrender
xorg.libXtst
xorg.libxshmfence
xorg.xcbutilimage
xorg.xcbutilkeysyms
xorg.xcbutilrenderutil
xorg.xcbutilwm
xorg.xrandr
];
strictDeps = true;
unpackPhase = ''
runHook preUnpack
unsquashfs "$src"
cd squashfs-root
runHook postUnpack
'';
dontStrip = true;
dontWrapQtApps = true;
installPhase = ''
runHook preInstall
cp -r . $out
rm -r $out/etc
rm -r $out/usr
# flatpak removes these during installation.
rm -r $out/lib/dri
rm $out/lib/libpciaccess.so*
rm $out/lib/libswresample.so*
rm $out/lib/libva-*.so*
rm $out/lib/libva.so*
rm $out/lib/libEGL.so*
rm $out/lib/libdrm.so*
rm $out/lib/libdrm*
# Keep some dependencies from the snap.
cp usr/lib/x86_64-linux-gnu/liblcms2.so.2 $out/lib/liblcms2.so.2
cp usr/lib/x86_64-linux-gnu/libjbig.so.0 $out/lib/libjbig.so.0
cp usr/lib/x86_64-linux-gnu/libjpeg.so.8 $out/lib/libjpeg.so.8
cp usr/lib/x86_64-linux-gnu/libpci.so.3 $out/lib/libpci.so.3
cp usr/lib/x86_64-linux-gnu/libsnappy.so.1 $out/lib/libsnappy.so.1
cp usr/lib/x86_64-linux-gnu/libtiff.so.5 $out/lib/libtiff.so.5
cp usr/lib/x86_64-linux-gnu/libwebp.so.6 $out/lib/libwebp.so.6
cp usr/lib/x86_64-linux-gnu/libxkbfile.so.1 $out/lib/libxkbfile.so.1
cp usr/lib/x86_64-linux-gnu/libxslt.so.1 $out/lib/libxslt.so.1
runHook postInstall
'';
};
in
buildFHSEnv {
inherit pname version meta;
targetPkgs = pkgs: [
alsa-lib
libdrm
xkeyboard_config
];
extraInstallCommands = ''
mkdir -p $out/share/applications $out/share/icons/hicolor/scalable/apps
install -m 444 -D ${plex-htpc}/meta/gui/plex-htpc.desktop $out/share/applications/plex-htpc.desktop
substituteInPlace $out/share/applications/plex-htpc.desktop \
--replace-fail \
'Icon=''${SNAP}/meta/gui/icon.png' \
'Icon=${plex-htpc}/meta/gui/icon.png'
'';
runScript = writeShellScript "plex-htpc.sh" ''
# Widevine won't download unless this directory exists.
mkdir -p $HOME/.cache/plex/
# Copy the sqlite plugin database on first run.
PLEX_DB="$HOME/.local/share/plex/Plex Media Server/Plug-in Support/Databases"
if [[ ! -d "$PLEX_DB" ]]; then
mkdir -p "$PLEX_DB"
cp "${plex-htpc}/resources/com.plexapp.plugins.library.db" "$PLEX_DB"
fi
# db files should have write access.
chmod --recursive 750 "$PLEX_DB"
# These environment variables sometimes silently cause plex to crash.
unset QT_QPA_PLATFORM QT_STYLE_OVERRIDE
set -o allexport
${lib.toShellVars extraEnv}
set +o allexport
exec ${plex-htpc}/Plex.sh
'';
passthru.updateScript = ./update.sh;
}

View File

@@ -0,0 +1,71 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p curl jq git gnused gnugrep
# executing this script without arguments will
# - find the newest stable plex-htpc version avaiable on snapcraft (https://snapcraft.io/plex-htpc)
# - read the current plex-htpc version from the current nix expression
# - update the nix expression if the versions differ
# - try to build the updated version, exit if that fails
# - give instructions for upstreaming
# As an optional argument you can specify the snapcraft channel to update to.
# Default is `stable` and only stable updates should be pushed to nixpkgs. For
# testing you may specify `candidate` or `edge`.
channel="${1:-stable}" # stable/candidate/edge
nixpkgs="$(git rev-parse --show-toplevel)"
plex_nix="$nixpkgs/pkgs/by-name/pl/plex-htpc/package.nix"
#
# find the newest stable plex-htpc version avaiable on snapcraft
#
# create bash array from snap info
snap_info=($(
curl -s -H 'X-Ubuntu-Series: 16' \
"https://api.snapcraft.io/api/v1/snaps/details/plex-htpc?channel=$channel" \
| jq --raw-output \
'.revision,.download_sha512,.version,.last_updated'
))
# "revision" is the actual version identifier on snapcraft, the "version" is
# just for human consumption. Revision is just an integer that gets increased
# by one every (stable or unstable) release.
revision="${snap_info[0]}"
# We need to escape the slashes
hash="$(nix-hash --to-sri --type sha512 ${snap_info[1]} | sed 's|/|\\/|g')"
upstream_version="${snap_info[2]}"
last_updated="${snap_info[3]}"
echo "Latest $channel release is $upstream_version from $last_updated."
#
# read the current plex-htpc version from the currently *committed* nix expression
#
current_version=$(
grep 'version\s*=' "$plex_nix" \
| sed -Ene 's/.*"(.*)".*/\1/p'
)
echo "Current version: $current_version"
#
# update the nix expression if the versions differ
#
if [[ "$current_version" == "$upstream_version" ]]; then
echo "Plex is already up-to-date"
exit 0
fi
echo "Updating from ${current_version} to ${upstream_version}, released on ${last_updated}"
# search-and-replace revision, hash and version
sed --regexp-extended \
-e 's/rev\s*=\s*"[0-9]+"\s*;/rev = "'"${revision}"'";/' \
-e 's/hash\s*=\s*"[^"]*"\s*;/hash = "'"${hash}"'";/' \
-e 's/version\s*=\s*".*"\s*;/version = "'"${upstream_version}"'";/' \
-i "$plex_nix"

View File

@@ -0,0 +1,56 @@
{
cmake,
fetchFromGitHub,
lib,
llvmPackages,
python ? null,
stdenv,
swig,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "plfit";
version = "1.0.1";
src = fetchFromGitHub {
owner = "ntamas";
repo = "plfit";
rev = finalAttrs.version;
hash = "sha256-0JrPAq/4yzr7XbxvcnFj8CKmMyZT05PkSdGprNdAsJA=";
};
postPatch = lib.optionalString (python != null) ''
substituteInPlace src/CMakeLists.txt \
--replace-fail ' ''${Python3_SITEARCH}' ' ${placeholder "out"}/${python.sitePackages}' \
--replace-fail ' ''${Python3_SITELIB}' ' ${placeholder "out"}/${python.sitePackages}'
'';
nativeBuildInputs = [
cmake
]
++ lib.optionals (python != null) [
python
swig
];
cmakeFlags = [
"-DPLFIT_USE_OPENMP=ON"
]
++ lib.optionals (python != null) [
"-DPLFIT_COMPILE_PYTHON_MODULE=ON"
];
buildInputs = lib.optionals stdenv.cc.isClang [
llvmPackages.openmp
];
doCheck = true;
meta = {
description = "Fitting power-law distributions to empirical data";
homepage = "https://github.com/ntamas/plfit";
changelog = "https://github.com/ntamas/plfit/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ dotlambda ];
};
})

View File

@@ -0,0 +1,75 @@
{
fetchurl,
fetchpatch,
lib,
stdenv,
libGLU,
libGL,
libglut,
SDL,
libXi,
libSM,
libXmu,
libXext,
libX11,
}:
stdenv.mkDerivation rec {
pname = "plib";
version = "1.8.5";
src = fetchurl {
# XXX: The author doesn't use the orthodox SF way to store tarballs.
url = "https://plib.sourceforge.net/dist/${pname}-${version}.tar.gz";
sha256 = "0cha71mflpa10vh2l7ipyqk67dq2y0k5xbafwdks03fwdyzj4ns8";
};
patches = [
(fetchpatch {
url = "https://sources.debian.net/data/main/p/plib/1.8.5-7/debian/patches/04_CVE-2011-4620.diff";
sha256 = "1b7y0vqqdzd48q68ldlzw0zzqy9mg4c10a754r4hi3ldjmcplf0j";
})
(fetchpatch {
url = "https://sources.debian.net/data/main/p/plib/1.8.5-7/debian/patches/05_CVE-2012-4552.diff";
sha256 = "0b6cwdwii5b5vy78sbw5cw1s96l4jyzr4dk69v63pa0wwi2b5dki";
})
(fetchpatch {
url = "https://sources.debian.org/data/main/p/plib/1.8.5-13/debian/patches/08_CVE-2021-38714.patch";
sha256 = "sha256-3f1wZn0QqK/hPWCg1KEzbB95IGoxBjLZoCOFlW98t5w=";
})
];
propagatedBuildInputs = [
libGLU
libGL
libglut
SDL
# The following libs ought to be propagated build inputs of Mesa.
libXi
libSM
libXmu
libXext
libX11
];
meta = {
description = "Suite of portable game libraries";
longDescription = ''
PLIB includes sound effects, music, a complete 3D engine, font
rendering, a simple Windowing library, a game scripting
language, a GUI, networking, 3D math library and a collection of
handy utility functions. All are 100% portable across nearly
all modern computing platforms. What's more, it's all available
on line - and completely free. Each library component is fairly
independent of the others - so if you want to use SDL, GTK,
GLUT, or FLTK instead of PLIB's 'PW' windowing library, you can.
'';
license = lib.licenses.lgpl2Plus;
homepage = "https://plib.sourceforge.net/";
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,54 @@
{
lib,
stdenv,
fetchFromGitHub,
zlib,
blas,
lapack,
}:
stdenv.mkDerivation rec {
pname = "plink-ng";
version = "1.90b3";
src = fetchFromGitHub {
owner = "chrchang";
repo = "plink-ng";
rev = "v${version}";
sha256 = "1zhffjbwpd50dxywccbnv1rxy9njwz73l4awc5j7i28rgj3davcq";
};
buildInputs = [
zlib
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
blas
lapack
];
preBuild = ''
sed -i 's|zlib-1.2.8/zlib.h|zlib.h|g' *.c *.h
${lib.optionalString stdenv.cc.isClang "sed -i 's|g++|clang++|g' Makefile.std"}
makeFlagsArray+=(
ZLIB=-lz
BLASFLAGS="-lblas -lcblas -llapack"
);
'';
makefile = "Makefile.std";
installPhase = ''
mkdir -p $out/bin
cp plink $out/bin
'';
meta = {
broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
description = "Comprehensive update to the PLINK association analysis toolset";
mainProgram = "plink";
homepage = "https://www.cog-genomics.org/plink2";
license = lib.licenses.gpl3;
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
boost,
nsplist,
pugixml,
}:
stdenv.mkDerivation {
pname = "plistcpp";
version = "0-unstable-2017-04-11";
src = fetchFromGitHub {
owner = "matthewbauer";
repo = "PlistCpp";
rev = "11615deab3369356a182dabbf5bae30574967264";
hash = "sha256-+3uw1XgYZMRdp+PhWRmjBJZNxGlX9PhFIsbuVPcyVoI=";
};
postPatch = ''
sed -i "1i #include <algorithm>" src/Plist.cpp
'';
nativeBuildInputs = [
cmake
];
buildInputs = [
boost
nsplist
pugixml
];
meta = with lib; {
maintainers = with maintainers; [ matthewbauer ];
description = "CPP bindings for Plist";
license = licenses.mit;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,19 @@
--- a/go.mod
+++ b/go.mod
@@ -3,1 +3,6 @@
go 1.14
+ require(
+ github.com/jessevdk/go-flags v1.5.0
+ howett.net/plist v0.0.0-20200419221736-3b63eb3a43b5
+ gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0 // indirect
+ )
--- a/go.sum
+++ b/go.sum
@@ -9,1 +9,7 @@
howett.net/plist v0.0.0-20200419221736-3b63eb3a43b5/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
+ gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0 h1:POO/ycCATvegFmVuPpQzZFJ+pGZeX22Ufu6fibxDVjU=
+ gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg=
+ github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
+ github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
+ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 h1:EZ2mChiOa8udjfp6rRmswTbtZN/QzUQp4ptM4rnjHvc=
+ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=

View File

@@ -0,0 +1,32 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule {
pname = "plistwatch";
version = "0-unstable-2023-06-22";
src = fetchFromGitHub {
owner = "catilac";
repo = "plistwatch";
rev = "34d808c1509eea22fe88a2dbb6f0a1669a2a5b23";
hash = "sha256-kMHi5xKbiwO+/6Eb8oJz7ECoUybFE+IUDz7VfJueB3g=";
};
vendorHash = "sha256-Layg1axFN86OFgxEyNFtIlm6Jtx317jZb/KH6IjJ8e4=";
#add missing dependencies and hashes
patches = [ ./go-modules.patch ];
doCheck = false;
meta = with lib; {
description = "Monitors and prints changes to MacOS plists in real time";
homepage = "https://github.com/catilac/plistwatch";
maintainers = with maintainers; [ gdinh ];
license = licenses.mit;
platforms = platforms.darwin;
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
stdenv,
fetchurl,
makeWrapper,
jre,
gcc,
valgrind,
}:
# gcc and valgrind are not strict dependencies, they could be made
# optional. They are here because plm can only help you learn C if you
# have them installed.
stdenv.mkDerivation rec {
pname = "plm";
version = "2.9.3";
src = fetchurl {
url = "https://github.com/BuggleInc/PLM/releases/download/v${version}/plm-${version}.jar";
sha256 = "0i9ghx9pm3kpn9x9n1hl10zdr36v5mv3drx8lvhsqwhlsvz42p5i";
name = "${pname}-${version}.jar";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
jre
gcc
valgrind
];
dontUnpack = true;
installPhase = ''
runHook preInstall
mkdir -p "$prefix/bin"
makeWrapper ${jre}/bin/java $out/bin/plm \
--add-flags "-jar $src" \
--prefix PATH : "$PATH"
runHook postInstall
'';
meta = with lib; {
description = "Free cross-platform programming exerciser";
mainProgram = "plm";
homepage = "https://people.irisa.fr/Martin.Quinson/Teaching/PLM/";
license = licenses.gpl3;
sourceProvenance = with sourceTypes; [ binaryBytecode ];
maintainers = [ ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,55 @@
{
stdenv,
lib,
fetchgit,
pkg-config,
meson,
ninja,
systemd,
liburing,
zstd,
}:
stdenv.mkDerivation rec {
pname = "plocate";
version = "1.1.23";
src = fetchgit {
url = "https://git.sesse.net/plocate";
rev = version;
sha256 = "sha256-TWQ2mVzosB6sGNUXI2D9GGqgaRZcmiL9GSGrrusck5Q=";
};
postPatch = ''
sed -i meson.build \
-e '/mkdir\.sh/d'
'';
nativeBuildInputs = [
meson
ninja
pkg-config
];
buildInputs = [
systemd
liburing
zstd
];
mesonFlags = [
"-Dsystemunitdir=${placeholder "out"}/etc/systemd/system"
"-Dsharedstatedir=/var/cache"
"-Ddbpath=locatedb"
];
meta = with lib; {
description = "Much faster locate";
homepage = "https://plocate.sesse.net/";
license = licenses.mit;
maintainers = with maintainers; [
peterhoeg
SuperSandro2000
];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
}:
stdenv.mkDerivation rec {
pname = "plog";
version = "1.1.11";
outputs = [
"out"
"dev"
];
src = fetchFromGitHub {
owner = "SergiusTheBest";
repo = "plog";
rev = version;
hash = "sha256-/H7qNL6aPjmFYk0X1sx4CCSZWrAMQgPo8I9X/P50ln0=";
};
strictDeps = true;
nativeBuildInputs = [
cmake
];
cmakeFlags = [
"-DPLOG_BUILD_SAMPLES=NO"
];
meta = with lib; {
description = "Portable, simple and extensible C++ logging library";
homepage = "https://github.com/SergiusTheBest/plog";
license = licenses.mit;
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [
raphaelr
erdnaxe
];
};
}

View File

@@ -0,0 +1,28 @@
Index: src/svg.c
===================================================================
--- a/src/svg.c
+++ b/src/svg.c
@@ -676,9 +676,9 @@
double x1, y1, x2, y2;
{
char *buf;
#ifdef WZ
- FILE *outfp;
+ gzFile outfp;
#endif
if (svg_style_in_prog) fprintf( svg_fp, "</g>");
fprintf( svg_fp, "</g>\n" ); /* close default style */
@@ -731,10 +731,10 @@
svg_fp = fopen( svg_tmpfilename, "r" );
if( svg_fp == NULL ) return( Eerr( 2487, "cannot reopen temp file", svg_tmpfilename ) );
#ifdef WZ
if( svg_compress ) {
- if( svg_stdout ) outfp = (FILE *) gzdopen( 1, svg_compressmode ); /* stdout = 1 */
- else outfp = (FILE *) gzopen( svg_filename, svg_compressmode );
+ if( svg_stdout ) outfp = gzdopen( 1, svg_compressmode ); /* stdout = 1 */
+ else outfp = gzopen( svg_filename, svg_compressmode );
if( outfp == NULL ) return( Eerr( 2488, "cannot open output file", svg_filename ) );
}
#endif
buf = svg_style; /* reuse */

View File

@@ -0,0 +1,109 @@
{
lib,
stdenv,
fetchurl,
zlib,
libX11,
libpng,
libjpeg,
gd,
freetype,
runCommand,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "ploticus";
version = "2.42";
src = fetchurl {
url = "mirror://sourceforge/ploticus/ploticus/${finalAttrs.version}/ploticus${
lib.replaceStrings [ "." ] [ "" ] finalAttrs.version
}_src.tar.gz";
hash = "sha256-PynkufQFIDqT7+yQDlgW2eG0OBghiB4kHAjKt91m4LA=";
};
patches = [
# Replace hardcoded FHS path with $out.
./ploticus-install.patch
# Set the location of the PREFABS directory.
./set-prefabs-dir.patch
# Use gd from Nixpkgs instead of the vendored one.
# This is required for non-ASCII fonts to work:
# https://ploticus.sourceforge.net/doc/fonts.html
./use-gd-package.patch
# svg.c:752:26: error: passing argument 1 of 'gzclose' from incompatible pointer type []
# 752 | gzclose( outfp );
# note: expected 'gzFile' {aka 'struct gzFile_s *'} but argument is of type 'FILE *'
./fix-zlib-file-type.patch
];
buildInputs = [
zlib
libX11
libpng
gd
freetype
libjpeg
];
hardeningDisable = [ "format" ];
postPatch = ''
substituteInPlace src/pl.h --subst-var out
'';
preBuild = ''
cd src
'';
makeFlags = [ "CC:=$(CC)" ];
enableParallelBuilding = true;
preInstall = ''
mkdir -p "$out/bin"
'';
postInstall = ''
cd ..
# Install the prefabs.
mkdir -p "$out/share/ploticus/prefabs"
cp -rv prefabs/* "$out/share/ploticus/prefabs"
# Add aliases for backwards compatibility.
ln -s "pl" "$out/bin/ploticus"
'';
passthru.tests = {
prefab =
runCommand "ploticus-prefab-test"
{
nativeBuildInputs = [ finalAttrs.finalPackage ];
}
''
# trivial test to see if the prefab path munging works
mkdir $out/
pl -prefab scat inlinedata="A 1 2" x=2 y=3 -png -o $out/out.png
'';
};
meta = {
description = "Non-interactive software package for producing plots and charts";
longDescription = ''
Ploticus is a free, GPL'd, non-interactive
software package for producing plots, charts, and graphics from
data. Ploticus is good for automated or just-in-time graph
generation, handles date and time data nicely, and has basic
statistical capabilities. It allows significant user control
over colors, styles, options and details.
'';
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ pSub ];
homepage = "https://ploticus.sourceforge.net/";
platforms = with lib.platforms; linux ++ darwin;
};
})

View File

@@ -0,0 +1,12 @@
--- pl240src/src/Makefile 2008-01-15 21:05:14.000000000 +0100
+++ pl240src/src/Makefile 2008-03-26 23:51:53.000000000 +0100
@@ -131,7 +131,7 @@ ZFLAG = -DWZ
#### If you do a "make install", where do you want the executable(s) to be moved to?
-INSTALLBIN = /usr/local/bin
+INSTALLBIN = $(out)/bin
#### For LOCALE support (non-roman alphabets & collation), uncomment the following..

View File

@@ -0,0 +1,11 @@
--- a/src/pl.h
+++ b/src/pl.h
@@ -8,7 +8,7 @@
#include <stdlib.h>
#include "plg.h"
-#define PREFABS_DIR "" /* INSTALLERS can set this to a valid pathname, so that users don't need to set PLOTICUS_PREFABS env var */
+#define PREFABS_DIR "@out@/share/ploticus/prefabs" /* INSTALLERS can set this to a valid pathname, so that users don't need to set PLOTICUS_PREFABS env var */
#define PLVERSION "2.42-May2013" /* see also the Copyright page, and page headers and footers */

View File

@@ -0,0 +1,34 @@
--- a/src/Makefile
+++ b/src/Makefile
@@ -91,10 +91,10 @@
########### Option 1: use bundled GD16 (PNG only). Requires libpng and zlib.
-exetarget: plpng
-GD16LIBS = -lpng -lz
-GD16H = -I/usr/local/include
-ZFLAG = -DWZ
+# exetarget: plpng
+# GD16LIBS = -lpng -lz
+# GD16H = -I/usr/local/include
+# ZFLAG = -DWZ
### These should remain commented unless your libs are not in usual places, then alter to suit...
### GD16LIBS = /home/scg/lib/libpng.a /home/scg/lib/libz.a
### GD16H = -I/home/scg/lib
@@ -111,11 +111,11 @@
########### Option 4: use your own GD resource with FreeType2 (ttf) fonts enabled.
########### Requires GD 1.84+, libpng, zlib, libjpeg and libfreetype
-# exetarget: plgd18
-# GD18LIBS = -lgd -lpng -lz -ljpeg -lfreetype
-# GD18H =
-# GDFREETYPE = -DGDFREETYPE
-# ZFLAG = -DWZ
+exetarget: plgd18
+GD18LIBS = -lgd -lpng -lz -ljpeg -lfreetype
+GD18H =
+GDFREETYPE = -DGDFREETYPE
+ZFLAG = -DWZ
########### Option 5: don't use GD at all.
# exetarget: plnogd

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
fetchFromGitHub,
gettext,
libxml2,
pkg-config,
gtk3,
cmake,
ninja,
vala,
nixosTests,
wrapGAppsHook3,
}:
stdenv.mkDerivation rec {
pname = "plotinus";
version = "0.2.0";
src = fetchFromGitHub {
owner = "p-e-w";
repo = "plotinus";
rev = "v${version}";
sha256 = "19k6f6ivg4ab57m62g6fkg85q9sv049snmzq1fyqnqijggwshxfz";
};
nativeBuildInputs = [
pkg-config
wrapGAppsHook3
vala
cmake
ninja
gettext
libxml2
];
buildInputs = [
gtk3
];
passthru.tests = { inherit (nixosTests) plotinus; };
meta = with lib; {
description = "Searchable command palette in every modern GTK application";
homepage = "https://github.com/p-e-w/plotinus";
maintainers = with maintainers; [ samdroid-apps ];
platforms = platforms.linux;
# No COPYING file, but headers in the source code
license = licenses.gpl3;
};
}

View File

@@ -0,0 +1,44 @@
diff -ur a/pic2plot/gram.cc b/pic2plot/gram.cc
--- a/pic2plot/gram.cc 2000-06-28 00:23:21.000000000 -0400
+++ b/pic2plot/gram.cc 2023-09-07 22:59:47.004460065 -0400
@@ -1229,9 +1229,9 @@
char *from;
unsigned int count;
{
- register char *f = from;
- register char *t = to;
- register int i = count;
+ char *f = from;
+ char *t = to;
+ int i = count;
while (i-- > 0)
*t++ = *f++;
@@ -1244,9 +1244,9 @@
static void
__yy_memcpy (char *to, char *from, unsigned int count)
{
- register char *t = to;
- register char *f = from;
- register int i = count;
+ char *t = to;
+ char *f = from;
+ int i = count;
while (i-- > 0)
*t++ = *f++;
@@ -1289,10 +1289,10 @@
yyparse(YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
{
- register int yystate;
- register int yyn;
- register short *yyssp;
- register YYSTYPE *yyvsp;
+ int yystate;
+ int yyn;
+ short *yyssp;
+ YYSTYPE *yyvsp;
int yyerrstatus; /* number of tokens to shift before error messages enabled */
int yychar1 = 0; /* lookahead token as an internal (translated) token number */

View File

@@ -0,0 +1,42 @@
# Generated by debian-patches.sh from debian-patches.txt
let
prefix = "https://sources.debian.org/data/main/p/plotutils/2.6-9/debian/patches";
in
[
{
url = "${prefix}/01_AC_PROG_CXX.diff";
sha256 = "0r7xgwbk2yqs7b29gwhr8pnbqvy3a3x698j17s4yg501ragw1gqv";
}
{
url = "${prefix}/10_repair_postscript";
sha256 = "01v4a8mdhgsjxbf9a2xppx2lb05lp818v8afp5x2njv64wpgla8p";
}
{
url = "${prefix}/11_manpages_sb_macro";
sha256 = "01vvhznw5z7lb7afwgw53cwg8w676s4v30kychlrl8kn5yks94qs";
}
{
url = "${prefix}/14_manpage_spline";
sha256 = "1xp3cx9y9njp5wp40dkp7rwd2flkiik2gb08nh4516vkm73avfrd";
}
{
url = "${prefix}/20_svg_attribute_syntax";
sha256 = "0vy089w00x2zh87igv3dcqq7kggqxpc4javb694pa5xl5bvddnqk";
}
{
url = "${prefix}/21_plot2svg_test.diff";
sha256 = "0lv8hj9fiqj6z72pnaw3imk3164n1kcy5ym0j9jl2pn3a19p1jmb";
}
{
url = "${prefix}/25_libpng15";
sha256 = "0l640rcsgc2mwpk7iqm0cf3b0gfcdgcn9wg4x88gaqxzx9rriph0";
}
{
url = "${prefix}/30_hershey_glyphs";
sha256 = "0n7rn6ln9ikzq2dialif58ag5pch7q7zqd5zcsxxdyyasx4s5gm2";
}
{
url = "${prefix}/35_spline.test.error.diff";
sha256 = "1kqj1n8myk8xmglj6qcybj34zm4kpn6aw320jbpqhblkgp7m0fb1";
}
]

View File

@@ -0,0 +1,10 @@
plotutils/2.6-9
01_AC_PROG_CXX.diff
10_repair_postscript
11_manpages_sb_macro
14_manpage_spline
20_svg_attribute_syntax
21_plot2svg_test.diff
25_libpng15
30_hershey_glyphs
35_spline.test.error.diff

View File

@@ -0,0 +1,69 @@
{
fetchurl,
lib,
stdenv,
libpng,
autoreconfHook,
}:
# debian splits this package into plotutils and libplot2c2
# gentoo passes X, this package contains fonts
# I'm only interested in making pstoedit convert to svg
stdenv.mkDerivation rec {
pname = "plotutils";
version = "2.6";
src = fetchurl {
url = "mirror://gnu/plotutils/plotutils-${version}.tar.gz";
sha256 = "1arkyizn5wbgvbh53aziv3s6lmd3wm9lqzkhxb3hijlp1y124hjg";
};
nativeBuildInputs = [ autoreconfHook ];
buildInputs = [ libpng ];
patches =
map fetchurl (import ./debian-patches.nix)
# `pic2plot/gram.cc` uses the register storage class specifier, which is not supported in C++17.
# This prevents clang 16 from building plotutils because it defaults to C++17.
++ [ ./c++17-register-usage-fix.patch ];
preBuild = ''
# Fix parallel building.
make -C libplot xmi.h
'';
configureFlags = [ "--enable-libplotter" ]; # required for pstoedit
hardeningDisable = [ "format" ];
doCheck = true;
enableParallelBuilding = true;
meta = {
description = "Powerful C/C++ library for exporting 2D vector graphics";
longDescription = ''
The GNU plotutils package contains software for both programmers and
technical users. Its centerpiece is libplot, a powerful C/C++
function library for exporting 2-D vector graphics in many file
formats, both vector and raster. It can also do vector graphics
animations.
libplot is device-independent in the sense that its API (application
programming interface) does not depend on the type of graphics file
to be exported.
Besides libplot, the package contains command-line programs for
plotting scientific data. Many of them use libplot to export
graphics.
'';
homepage = "https://www.gnu.org/software/plotutils/";
license = lib.licenses.gpl2Plus;
maintainers = [ lib.maintainers.marcweber ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
buildGoModule,
fetchFromGitHub,
testers,
plow,
}:
buildGoModule rec {
pname = "plow";
version = "1.3.2";
src = fetchFromGitHub {
owner = "six-ddc";
repo = "plow";
tag = "v${version}";
hash = "sha256-q9k5GzhYPOP8p8VKrqpoHc3B9Qak+4DtZAZZuFlkED0=";
};
vendorHash = "sha256-KfnDJI6M6tzfoI7krKId5FXUw27eV6cEoz3UaNrlXWk=";
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
];
passthru.tests.version = testers.testVersion {
package = plow;
};
meta = {
description = "High-performance HTTP benchmarking tool that includes a real-time web UI and terminal display";
homepage = "https://github.com/six-ddc/plow";
changelog = "https://github.com/six-ddc/plow/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ ecklf ];
mainProgram = "plow";
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitHub,
makeBinaryWrapper,
curl,
recode,
spidermonkey_140,
}:
stdenv.mkDerivation rec {
pname = "plowshare";
version = "2.1.7";
src = fetchFromGitHub {
owner = "mcrapet";
repo = "plowshare";
rev = "v${version}";
hash = "sha256-6fQgJZF5IxRSalB6rUpIVqlwhgbhSG8AuI2qTxswGt0=";
};
nativeBuildInputs = [ makeBinaryWrapper ];
dontBuild = true;
installPhase = ''
make PREFIX="$out" install
for fn in plow{del,down,list,mod,probe,up}; do
wrapProgram "$out/bin/$fn" --prefix PATH : "${
lib.makeBinPath [
curl
recode
spidermonkey_140
]
}"
done
'';
meta = {
description = "Command-line download/upload tool for popular file sharing websites";
homepage = "https://github.com/mcrapet/plowshare";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ aforemny ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchurl,
cmake,
pkg-config,
enableWX ? false,
wxGTK32,
enableXWin ? false,
xorg,
enablePNG ? false,
cairo,
pango,
}:
stdenv.mkDerivation rec {
pname = "plplot";
version = "5.15.0";
src = fetchurl {
url = "mirror://sourceforge/project/${pname}/${pname}/${version}%20Source/${pname}-${version}.tar.gz";
sha256 = "0ywccb6bs1389zjfmc9zwdvdsvlpm7vg957whh6b5a96yvcf8bdr";
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs =
lib.optional enableWX wxGTK32
++ lib.optional enableXWin xorg.libX11
++ lib.optionals enablePNG [
cairo
pango
];
passthru = {
inherit (xorg) libX11;
inherit
enableWX
enableXWin
;
};
cmakeFlags = [
"-DBUILD_TEST=ON"
];
doCheck = true;
meta = with lib; {
description = "Cross-platform scientific graphics plotting library";
mainProgram = "pltek";
homepage = "https://plplot.org";
maintainers = with maintainers; [ bcdarwin ];
platforms = platforms.unix;
license = licenses.lgpl2;
};
}

View File

@@ -0,0 +1,28 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "pls";
version = "0.0.1-beta.9";
src = fetchFromGitHub {
owner = "pls-rs";
repo = "pls";
tag = "v${version}";
hash = "sha256-ofwdhGpqYlADDY2BLe0SkoHWqSeRNtQaXK61zWVFXzw=";
};
cargoHash = "sha256-P+4jRuakDUPaICJPsNJ6nXfhm09K/GC/VA9bsTXIMvc=";
meta = {
changelog = "https://github.com/pls-rs/pls/releases/tag/${src.tag}";
description = "Prettier and powerful ls";
homepage = "http://pls.cli.rs";
license = lib.licenses.gpl3Plus;
mainProgram = "pls";
maintainers = with lib.maintainers; [ tomasajt ];
};
}

View File

@@ -0,0 +1,159 @@
{
lib,
stdenv,
fetchFromGitHub,
ensureNewerSourcesForZipFilesHook,
makeDesktopItem,
copyDesktopItems,
cmake,
pkg-config,
alsa-lib,
freetype,
webkitgtk_4_1,
zenity,
curl,
xorg,
python3,
libsysprof-capture,
pcre2,
util-linux,
libselinux,
libsepol,
libthai,
libxkbcommon,
libdatrie,
libepoxy,
libGL,
libjack2,
lerc,
sqlite,
expat,
makeWrapper,
nix-update-script,
}:
let
version = "0.9.1";
in
stdenv.mkDerivation {
pname = "plugdata";
inherit version;
src = fetchFromGitHub {
owner = "plugdata-team";
repo = "plugdata";
tag = "v${version}";
hash = "sha256-dcggq455lZiwl1lps11fuKX6sx0A8UtFwFoiBJWtwFQ=";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
pkg-config
ensureNewerSourcesForZipFilesHook
copyDesktopItems
python3
makeWrapper
];
buildInputs = [
alsa-lib
curl
freetype
webkitgtk_4_1
xorg.libX11
xorg.libXcursor
xorg.libXext
xorg.libXinerama
xorg.libXrender
xorg.libXrandr
xorg.libXdmcp
xorg.libXtst
xorg.xvfb
libsysprof-capture
pcre2
util-linux
libGL
libselinux
libsepol
libthai
libxkbcommon
libdatrie
libepoxy
lerc
libjack2
expat
sqlite
];
desktopItems = [
(makeDesktopItem {
name = "PlugData";
desktopName = "PlugData";
exec = "plugdata";
icon = "plugdata_logo";
comment = "Pure Data as a plugin, with a new GUI";
type = "Application";
categories = [
"AudioVideo"
"Music"
];
})
];
NIX_LDFLAGS = (
toString [
"-lX11"
"-lXext"
"-lXcomposite"
"-lXcursor"
"-lXinerama"
"-lXrandr"
"-lXtst"
"-lXdmcp"
]
);
preBuild = ''
# fix LV2 build
HOME=$(mktemp -d)
'';
installPhase = ''
runHook preInstall
cd .. # build artifacts are placed inside the source directory for some reason
mkdir -p $out/bin $out/lib/clap $out/lib/lv2 $out/lib/vst3
cp Plugins/Standalone/plugdata $out/bin
cp -r Plugins/CLAP/plugdata{,-fx}.clap $out/lib/clap
cp -r Plugins/VST3/plugdata{,-fx}.vst3 $out/lib/vst3
cp -r Plugins/LV2/plugdata{,-fx}.lv2 $out/lib/lv2
install -Dm444 $src/Resources/Icons/plugdata_logo_linux.png $out/share/pixmaps/plugdata_logo.png
runHook postInstall
'';
postInstall = ''
# Ensure zenity is available, or it won't be able to open new files.
wrapProgram $out/bin/plugdata \
--prefix PATH : '${
lib.makeBinPath [
zenity
]
}'
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Plugin wrapper around Pure Data to allow patching in a wide selection of DAWs";
mainProgram = "plugdata";
homepage = "https://plugdata.org/";
license = lib.licenses.gpl3;
platforms = lib.platforms.linux;
maintainers = [
lib.maintainers.PowerUser64
lib.maintainers.l1npengtul
];
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchFromGitHub,
boost,
ladspaH,
lilv,
lv2,
pkg-config,
serd,
sord,
sratom,
}:
stdenv.mkDerivation {
pname = "plugin-torture";
version = "2016-07-25";
src = fetchFromGitHub {
owner = "cth103";
repo = "plugin-torture";
rev = "8b9c43197dca372da6b9c8212224ec86b5f16b4a";
sha256 = "1xyhvhm85d9z0kw716cjllrrzksn4s4bw34layg8hf4m5m31sp2p";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
boost
ladspaH
lilv
lv2
serd
sord
sratom
];
installPhase = ''
mkdir -p $out/bin
cp plugin-torture $out/bin/
cp find-safe-plugins $out/bin/
'';
meta = with lib; {
broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
homepage = "https://github.com/cth103/plugin-torture";
description = "Tool to test LADSPA and LV2 plugins";
license = licenses.gpl2;
maintainers = [ maintainers.magnetophon ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,70 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
alsa-lib,
fontconfig,
freetype,
libX11,
libXcomposite,
libXcursor,
libXdmcp,
libXext,
libXinerama,
libXrandr,
libXtst,
ladspaH,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pluginval";
version = "1.0.4";
src = fetchFromGitHub {
owner = "Tracktion";
repo = "pluginval";
tag = "v${finalAttrs.version}";
hash = "sha256-j4Lb3pcw0931o63OvTTaIm2UzvYDIjmnaCXGvKB4gwM=";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
alsa-lib
fontconfig
freetype
libX11
libXcomposite
libXcursor
libXdmcp
libXext
libXinerama
libXrandr
libXtst
ladspaH
];
cmakeFlags = [
(lib.cmakeFeature "CMAKE_BUILD_TYPE" "Debug")
];
installPhase = ''
runHook preInstall
install -Dm755 pluginval_artefacts/Debug/pluginval $out/bin/pluginval
runHook postInstall
'';
meta = {
description = "Cross-platform plugin validator and tester for AU/VST2/VST3 plugins";
homepage = "https://github.com/Tracktion/pluginval";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ magnetophon ];
platforms = lib.platforms.linux;
mainProgram = "pluginval";
};
})

View File

@@ -0,0 +1,32 @@
{
lib,
stdenv,
fetchFromGitHub,
lv2,
}:
stdenv.mkDerivation {
version = "1.1.3";
pname = "plujain-ramp";
src = fetchFromGitHub {
owner = "Houston4444";
repo = "plujain-ramp";
rev = "1bc1fed211e140c7330d6035122234afe78e5257";
sha256 = "1k7qpr8c15d623c4zqxwdklp98amildh03cqsnqq5ia9ba8z3016";
};
buildInputs = [
lv2
];
installFlags = [ "INSTALL_PATH=$(out)/lib/lv2" ];
meta = with lib; {
description = "Mono rhythmic tremolo LV2 Audio Plugin";
homepage = "https://github.com/Houston4444/plujain-ramp";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = [ maintainers.hirenashah ];
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "plumber";
version = "2.9.0";
src = fetchFromGitHub {
owner = "streamdal";
repo = "plumber";
rev = "v${version}";
hash = "sha256-0pyeCTkmS7gG51Xm4Gc62p+I5DRUA2F9tPHaZjO+/WE=";
};
vendorHash = null;
# connection tests create a config file in user home directory
preCheck = ''
export HOME="$(mktemp -d)"
'';
subPackages = [ "." ];
ldflags = [
"-s"
"-w"
"-X github.com/streamdal/plumber/options.VERSION=${version}"
];
meta = with lib; {
description = "CLI devtool for interacting with data in message systems like Kafka, RabbitMQ, GCP PubSub and more";
mainProgram = "plumber";
homepage = "https://github.com/streamdal/plumber";
license = licenses.mit;
maintainers = with maintainers; [ svrana ];
};
}

View File

@@ -0,0 +1,35 @@
{
stdenv,
lib,
fetchFromGitHub,
blas,
}:
assert !blas.isILP64;
stdenv.mkDerivation rec {
pname = "plumed";
version = "2.10.0";
src = fetchFromGitHub {
owner = "plumed";
repo = "plumed2";
rev = "v${version}";
hash = "sha256-aFX8u+XNb7LARm1jtzWzIvZE5qHFaudtp45Om1Fridg=";
};
postPatch = ''
patchShebangs .
'';
buildInputs = [ blas ];
enableParallelBuilding = true;
meta = with lib; {
description = "Molecular metadynamics library";
homepage = "https://github.com/plumed/plumed2";
license = licenses.lgpl3Only;
maintainers = [ maintainers.sheepforce ];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "plus-jakarta-sans";
version = "2.7.1";
src = fetchzip {
url = "https://github.com/tokotype/PlusJakartaSans/releases/download/${finalAttrs.version}/PlusJakartaSans-${finalAttrs.version}.zip";
stripRoot = false;
hash = "sha256-+ghkQ4/wxou3FB68ceCwBeGrSCaHJhb16MybvN6mCSc=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/truetype
cp PlusJakartaSans-$version/*/PlusJakartaSans*.ttf $out/share/fonts/truetype
runHook postInstall
'';
meta = {
homepage = "https://www.tokotype.com/custom-fonts/plusjakarta";
description = "Typeface designed for Jakarta 'City of collaboration' program in 2020";
license = lib.licenses.ofl;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ gavink97 ];
};
})

View File

@@ -0,0 +1,38 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "pluto";
version = "5.22.5";
src = fetchFromGitHub {
owner = "FairwindsOps";
repo = "pluto";
rev = "v${version}";
hash = "sha256-MserKZcOkif56XeTLRzHDDk6HYeVhgKsnOjsfv0vPeQ=";
};
vendorHash = "sha256-59mRVfQ2rduTvIJE1l/j3K+PY3OEMfNpjjYg3hqNUhs=";
ldflags = [
"-w"
"-s"
"-X main.version=v${version}"
];
__darwinAllowLocalNetworking = true; # for tests
meta = with lib; {
homepage = "https://github.com/FairwindsOps/pluto";
description = "Find deprecated Kubernetes apiVersions";
mainProgram = "pluto";
license = licenses.asl20;
maintainers = with maintainers; [
peterromfeldhk
kashw2
];
};
}

View File

@@ -0,0 +1,50 @@
From 31e8aae418a1af681e389f27d3ad57b5fd7e1ba8 Mon Sep 17 00:00:00 2001
From: Marcin Serwin <marcin@serwin.dev>
Date: Sun, 25 May 2025 01:16:37 +0200
Subject: [PATCH] Emit correct pkg-config file if paths are absolute
CMAKE_INSTALL_INCLUDEDIR and CMAKE_INSTALL_LIBDIR may be defined to be
absolute paths. In this situation they should not be appended to the
prefix.
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
---
CMakeLists.txt | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e84761..f2219e0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -107,6 +107,17 @@ file(RELATIVE_PATH plutosvg_pc_prefix_relative
set(plutosvg_pc_cflags "")
set(plutosvg_pc_libs_private "")
set(plutosvg_pc_requires "")
+set(plutosvg_pc_requires "")
+if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
+ set(plutosvg_pc_includedir "${CMAKE_INSTALL_INCLUDEDIR}")
+else()
+ set(plutosvg_pc_includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
+endif()
+if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
+ set(plutosvg_pc_libdir "${CMAKE_INSTALL_LIBDIR}")
+else()
+ set(plutosvg_pc_libdir "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
+endif()
if(MATH_LIBRARY)
string(APPEND plutosvg_pc_libs_private " -lm")
@@ -123,8 +134,8 @@ endif()
string(CONFIGURE [[
prefix=${pcfiledir}/@plutosvg_pc_prefix_relative@
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
+includedir=@plutosvg_pc_includedir@
+libdir=@plutosvg_pc_libdir@
Name: PlutoSVG
Description: Tiny SVG rendering library in C
--
2.49.0

View File

@@ -0,0 +1,76 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
nix-update-script,
validatePkgConfig,
testers,
cmake,
ninja,
plutovg,
enableFreetype ? false,
freetype,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "plutosvg";
version = "0.0.7";
src = fetchFromGitHub {
owner = "sammycage";
repo = "plutosvg";
tag = "v${finalAttrs.version}";
hash = "sha256-4JLk4+O9Tf8CGxMP0aDN70ak/8teZH3GWBWlrIkPQm4=";
};
outputs = [
"out"
"dev"
];
patches = [
# https://github.com/sammycage/plutosvg/pull/29
./0001-Emit-correct-pkg-config-file-if-paths-are-absolute.patch
# https://github.com/sammycage/plutosvg/pull/31
(fetchpatch {
url = "https://github.com/sammycage/plutosvg/commit/17d60020e0b24299fae0e7df37637448b3b51488.patch";
hash = "sha256-hY25ttsLQwvtQmDeOGSoCVDy34GUA0tNai/L3wpmPUo=";
})
];
nativeBuildInputs = [
cmake
ninja
validatePkgConfig
];
propagatedBuildInputs = [
plutovg
]
++ lib.optional enableFreetype freetype;
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
(lib.cmakeBool "PLUTOSVG_ENABLE_FREETYPE" enableFreetype)
];
passthru.tests = {
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
cmake-config = testers.hasCmakeConfigModules {
package = finalAttrs.finalPackage;
moduleNames = [ "plutosvg" ];
versionCheck = true;
};
};
passthru.updateScript = nix-update-script { };
meta = {
homepage = "https://github.com/sammycage/plutosvg";
changelog = "https://github.com/sammycage/plutosvg/releases/tag/${finalAttrs.src.tag}";
description = "Tiny SVG rendering library in C";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ marcin-serwin ];
pkgConfigModules = [ "plutosvg" ];
};
})

View File

@@ -0,0 +1,54 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
testers,
fontFaceCache ? true,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "plutovg";
version = "1.3.1";
src = fetchFromGitHub {
owner = "sammycage";
repo = "plutovg";
tag = "v${finalAttrs.version}";
hash = "sha256-6UW+laVxTYvg+5qC12yA6U6gPKdFQeb7sdDunZ6gcd4=";
};
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
(lib.cmakeBool "PLUTOVG_DISABLE_FONT_FACE_CACHE_LOAD" (!fontFaceCache))
# the cmake package does not handle absolute CMAKE_INSTALL_INCLUDEDIR correctly
# (setting it to an absolute path causes include files to go to $out/$out/include,
# because the absolute path is interpreted with root at $out).
"-DCMAKE_INSTALL_INCLUDEDIR=include"
"-DCMAKE_INSTALL_LIBDIR=lib"
];
nativeBuildInputs = [
cmake
];
passthru.tests = {
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
versionCheck = true;
};
cmake-config = testers.hasCmakeConfigModules {
package = finalAttrs.finalPackage;
moduleNames = [ "plutovg" ];
versionCheck = true;
};
};
meta = {
homepage = "https://github.com/sammycage/plutovg/";
changelog = "https://github.com/sammycage/plutovg/releases/tag/v${finalAttrs.version}";
description = "Tiny 2D vector graphics library in C";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.eymeric ];
pkgConfigModules = [ "plutovg" ];
};
})

View File

@@ -0,0 +1,48 @@
{
stdenvNoCC,
fetchurl,
lib,
}:
stdenvNoCC.mkDerivation rec {
pname = "plymouth-blahaj-theme";
version = "1.0.0";
src = fetchurl {
url = "https://github.com/190n/plymouth-blahaj/releases/download/v${version}/blahaj.tar.gz";
sha256 = "sha256-JSCu/3SK1FlSiRwxnjQvHtPGGkPc6u/YjaoIvw0PU8A=";
};
patchPhase = ''
runHook prePatch
shopt -s extglob
# deal with all the non ascii stuff
mv !(*([[:graph:]])) blahaj.plymouth
sed -i 's/\xc3\xa5/a/g' blahaj.plymouth
sed -i 's/\xc3\x85/A/g' blahaj.plymouth
runHook postPatch
'';
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/plymouth/themes/blahaj
cp * $out/share/plymouth/themes/blahaj
find $out/share/plymouth/themes/ -name \*.plymouth -exec sed -i "s@\/usr\/@$out\/@" {} \;
runHook postInstall
'';
meta = {
description = "Plymouth theme featuring IKEA's 1m soft toy shark";
homepage = "https://github.com/190n/plymouth-blahaj";
license = lib.licenses.mit;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ miampf ];
};
}

View File

@@ -0,0 +1,48 @@
{
stdenvNoCC,
fetchFromGitHub,
lib,
unstableGitUpdater,
}:
stdenvNoCC.mkDerivation {
pname = "plymouth-matrix-theme";
version = "0.1.0-unstable-2017-02-19";
src = fetchFromGitHub {
owner = "storax";
repo = "plymouth-matrix-theme";
rev = "b2268f25dea7537ed5709b00d5a83b3600265c54";
hash = "sha256-JmMmpw1By5U6OTaSPnJOZZxrieSnXivMmdt/JPazjpI=";
};
postPatch = ''
# Remove not needed files
rm README.rst LICENSE Makefile
'';
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/plymouth/themes/matrix
cp * $out/share/plymouth/themes/matrix
find $out/share/plymouth/themes/ -name \*.plymouth -exec sed -i "s@\/usr\/@$out\/@" {} \;
runHook postInstall
'';
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Plymouth boot theme inspired by Matrix";
longDescription = ''
A very simple boot animation that emulates
Trinity hacking Neo's computer at the
beginning of The Matrix (1999).
'';
homepage = "https://github.com/storax/plymouth-matrix-theme";
license = lib.licenses.gpl3;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ johnrtitor ];
};
}

View File

@@ -0,0 +1,39 @@
{
stdenvNoCC,
fetchFromGitHub,
lib,
unstableGitUpdater,
}:
stdenvNoCC.mkDerivation {
pname = "plymouth-proxzima-theme";
version = "0-unstable-2023-01-30";
src = fetchFromGitHub {
owner = "PROxZIMA";
repo = "proxzima-plymouth";
rev = "b6e335a631e057942700de5c523198a5b8061d9c";
hash = "sha256-f4CtXKsZPc/gZMVD+MJrHMrMw7TTFUndhUT4YLpfORU=";
};
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/plymouth/themes/proxzima
cp proxzima/* $out/share/plymouth/themes/proxzima
substituteInPlace $out/share/plymouth/themes/proxzima/proxzima.plymouth \
--replace-fail "/usr/" "$out/"
runHook postInstall
'';
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Techno Plymouth theme with crazy animation";
homepage = "https://github.com/PROxZIMA/proxzima-plymouth";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ johnrtitor ];
};
}

View File

@@ -0,0 +1,43 @@
{
stdenvNoCC,
fetchFromGitHub,
lib,
unstableGitUpdater,
}:
stdenvNoCC.mkDerivation {
pname = "plymouth-vortex-ubuntu-theme";
version = "0-unstable-2025-06-20";
src = fetchFromGitHub {
owner = "emanuele-scarsella";
repo = "vortex-ubuntu-plymouth-theme";
rev = "3072445ee35f10a0268baa9aaa326c0abd54af3e";
hash = "sha256-RBV5g1ccDw7O6MnrLb2yCga/ASjVo7GOE5CIoJcku4w=";
};
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/plymouth/themes/vortex-ubuntu
cp vortex-ubuntu/* $out/share/plymouth/themes/vortex-ubuntu
substituteInPlace $out/share/plymouth/themes/vortex-ubuntu/vortex-ubuntu.plymouth \
--replace-fail "/usr/" "$out/"
runHook postInstall
'';
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Animated Plymouth boot theme with rotating Ubuntu logo";
longDescription = ''
Animated Plymouth theme with the Ubuntu logo and a futuristic and elegant look.
Disk encryption password prompt is supported.
'';
homepage = "https://github.com/emanuele-scarsella/vortex-ubuntu-plymouth-theme";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ johnrtitor ];
};
}

View File

@@ -0,0 +1,67 @@
diff --git a/meson.build b/meson.build
index 650ad189..1e1ebe1d 100644
--- a/meson.build
+++ b/meson.build
@@ -18,6 +18,11 @@ plymouth_time_dir = get_option('prefix') / get_option('localstatedir') / 'lib' /
plymouth_runtime_dir = get_option('runstatedir') / 'plymouth'
plymouth_runtime_theme_path = plymouth_runtime_dir / 'themes/'
+if get_option('runtime-plugins')
+ plymouth_runtime_plugin_path = plymouth_runtime_dir / 'plugins/'
+else
+ plymouth_runtime_plugin_path = plymouth_plugin_path
+endif
# Dependencies
cc = meson.get_compiler('c')
@@ -76,7 +81,7 @@ conf.set('PLY_ENABLE_TRACING', get_option('tracing'))
conf.set_quoted('PLYMOUTH_RUNTIME_DIR', plymouth_runtime_dir)
conf.set_quoted('PLYMOUTH_THEME_PATH', plymouth_theme_path)
conf.set_quoted('PLYMOUTH_RUNTIME_THEME_PATH', plymouth_runtime_theme_path)
-conf.set_quoted('PLYMOUTH_PLUGIN_PATH', plymouth_plugin_path)
+conf.set_quoted('PLYMOUTH_PLUGIN_PATH', plymouth_runtime_plugin_path)
conf.set_quoted('PLYMOUTH_POLICY_DIR', plymouth_policy_dir)
conf.set_quoted('PLYMOUTH_CONF_DIR', plymouth_conf_dir)
conf.set_quoted('PLYMOUTH_TIME_DIRECTORY', plymouth_time_dir)
diff --git a/meson_options.txt b/meson_options.txt
index 4f601bb0..61fccc12 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -28,6 +28,11 @@ option('runstatedir',
value: '/run',
description: 'runstatedir',
)
+option('runtime-plugins',
+ type: 'boolean',
+ value: false,
+ description: 'Use runstatedir for loading theme plugins',
+)
option('boot-tty',
type: 'string',
value: '/dev/tty1',
diff --git a/src/libply-splash-core/meson.build b/src/libply-splash-core/meson.build
index 69636b13..02bd5cbd 100644
--- a/src/libply-splash-core/meson.build
+++ b/src/libply-splash-core/meson.build
@@ -31,7 +31,7 @@ libply_splash_core_cflags = [
'-DPLYMOUTH_BACKGROUND_COLOR=@0@'.format(get_option('background-color')),
'-DPLYMOUTH_BACKGROUND_START_COLOR=@0@'.format(get_option('background-start-color-stop')),
'-DPLYMOUTH_BACKGROUND_END_COLOR=@0@'.format(get_option('background-end-color-stop')),
- '-DPLYMOUTH_PLUGIN_PATH="@0@"'.format(plymouth_plugin_path),
+ '-DPLYMOUTH_PLUGIN_PATH="@0@"'.format(plymouth_runtime_plugin_path),
]
libply_splash_core = library('ply-splash-core',
diff --git a/src/libply-splash-graphics/meson.build b/src/libply-splash-graphics/meson.build
index 32fad963..02b8440b 100644
--- a/src/libply-splash-graphics/meson.build
+++ b/src/libply-splash-graphics/meson.build
@@ -20,7 +20,7 @@ libply_splash_graphics_cflags = [
'-DPLYMOUTH_BACKGROUND_COLOR=@0@'.format(get_option('background-color')),
'-DPLYMOUTH_BACKGROUND_START_COLOR=@0@'.format(get_option('background-start-color-stop')),
'-DPLYMOUTH_BACKGROUND_END_COLOR=@0@'.format(get_option('background-end-color-stop')),
- '-DPLYMOUTH_PLUGIN_PATH="@0@"'.format(plymouth_plugin_path),
+ '-DPLYMOUTH_PLUGIN_PATH="@0@"'.format(plymouth_runtime_plugin_path),
]
libply_splash_graphics = library('ply-splash-graphics',

View File

@@ -0,0 +1,13 @@
diff --git a/themes/spinfinity/meson.build b/themes/spinfinity/meson.build
index f48e8e55..5a2050c8 100644
--- a/themes/spinfinity/meson.build
+++ b/themes/spinfinity/meson.build
@@ -53,8 +53,3 @@ install_data(
'throbber-33.png',
install_dir: plymouth_theme_path / 'spinfinity',
)
-
-install_symlink('header-image.png',
- install_dir: plymouth_theme_path / 'spinfinity',
- pointing_to: plymouth_logo_file,
-)

View File

@@ -0,0 +1,21 @@
diff --git a/src/plugins/controls/label-freetype/plugin.c b/src/plugins/controls/label-freetype/plugin.c
index 917b04c0..83f2bec2 100644
--- a/src/plugins/controls/label-freetype/plugin.c
+++ b/src/plugins/controls/label-freetype/plugin.c
@@ -127,7 +127,7 @@ find_default_font_path (void)
FILE *fp;
static char fc_match_out[PATH_MAX];
- fp = popen ("/usr/bin/fc-match -f %{file}", "r");
+ fp = popen ("@fcmatch@ -f %{file}", "r");
if (!fp)
return FONT_FALLBACK;
@@ -144,7 +144,7 @@ find_default_monospace_font_path (void)
FILE *fp;
static char fc_match_out[PATH_MAX];
- fp = popen ("/usr/bin/fc-match -f %{file} monospace", "r");
+ fp = popen ("@fcmatch@ -f %{file} monospace", "r");
if (!fp)
return MONOSPACE_FONT_FALLBACK;

View File

@@ -0,0 +1,132 @@
{
lib,
stdenv,
fetchFromGitLab,
writeText,
replaceVars,
meson,
pkg-config,
ninja,
docbook-xsl-nons,
gettext,
libxslt,
gtk3,
libdrm,
libevdev,
libpng,
libxkbcommon,
pango,
systemd,
xorg,
fontconfig,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "plymouth";
version = "24.004.60";
outputs = [
"out"
"dev"
];
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "plymouth";
repo = "plymouth";
rev = finalAttrs.version;
hash = "sha256-9JmZCm8bjteJTQrMSJeL4x2CAI6RpKowFUDSCcMS4MM=";
};
patches = [
# do not create unnecessary symlink to non-existent header-image.png
./dont-create-broken-symlink.patch
# add support for loading plugins from /run to assist NixOS module
./add-runtime-plugin-path.patch
# fix FHS hardcoded paths
(replaceVars ./fix-paths.patch {
fcmatch = "${fontconfig}/bin/fc-match";
})
];
strictDeps = true;
nativeBuildInputs = [
meson
pkg-config
ninja
docbook-xsl-nons
gettext
libxslt
];
buildInputs = [
gtk3
libdrm
libevdev
libpng
libxkbcommon
pango
systemd
xorg.xkeyboardconfig
];
mesonFlags =
let
# https://gitlab.freedesktop.org/plymouth/plymouth/-/blob/a5eda165689864cc9a25ec14fd8c6da458598f42/meson.build#L47
crossFile = writeText "cross-file.conf" ''
[binaries]
systemd-tty-ask-password-agent = '${lib.getBin systemd}/bin/systemd-tty-ask-password-agent'
'';
in
[
"--sysconfdir=/etc"
"--localstatedir=/var"
"-Dlogo=/etc/plymouth/logo.png"
"-Dbackground-color=0x000000"
"-Dbackground-start-color-stop=0x000000"
"-Dbackground-end-color-stop=0x000000"
"-Drelease-file=/etc/os-release"
"-Dudev=enabled"
"-Drunstatedir=/run"
"-Druntime-plugins=true"
"--cross-file=${crossFile}"
];
postPatch = ''
substituteInPlace meson.build \
--replace "run_command(['scripts/generate-version.sh'], check: true).stdout().strip()" "'${finalAttrs.version}'"
# prevent installing unused non-$out dirs to DESTDIR
sed -i '/^install_emptydir/d' src/meson.build
'';
postInstall = ''
# Move stuff from DESTDIR to proper location.
cp -a "$DESTDIR/etc" "$out"
rm -r "$DESTDIR/etc"
for o in $(getAllOutputNames); do
if [[ "$o" = "debug" ]]; then continue; fi
cp -a "$DESTDIR/''${!o}" "$(dirname "''${!o}")"
rm -r "$DESTDIR/''${!o}"
done
# Ensure the DESTDIR is removed.
rmdir "$DESTDIR/${builtins.storeDir}" "$DESTDIR/${dirOf builtins.storeDir}" "$DESTDIR"
'';
# HACK: We want to install configuration files to $out/etc
# but Plymouth should read them from /etc on a NixOS system.
# With autotools, it was possible to override Make variables
# at install time but Meson does not support this
# so we need to convince it to install all files to a temporary
# location using DESTDIR and then move it to proper one in postInstall.
env.DESTDIR = "${placeholder "out"}/dest";
meta = with lib; {
homepage = "https://www.freedesktop.org/wiki/Software/Plymouth/";
description = "Boot splash and boot logger";
license = licenses.gpl2Plus;
teams = [ teams.gnome ];
platforms = platforms.linux;
};
})

Some files were not shown because too many files have changed in this diff Show More