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,47 @@
{
lib,
rustPlatform,
fetchFromGitHub,
makeBinaryWrapper,
pkg-config,
alsa-lib,
}:
rustPlatform.buildRustPackage rec {
pname = "piano-rs";
version = "0.2.0";
src = fetchFromGitHub {
owner = "ritiek";
repo = "piano-rs";
rev = "v${version}";
hash = "sha256-qZeH9xXQPIOJ87mvLahnJB3DuEgLX0EAXPvECgxNlq0=";
};
cargoHash = "sha256-ygRyYFLNBCLnRhmO6DoK8fwvy/Y9jrOjWChzxc3CRPo=";
nativeBuildInputs = [
makeBinaryWrapper
pkg-config
];
buildInputs = [
alsa-lib
];
postInstall = ''
mkdir -p "$out"/share/piano-rs
cp -r assets "$out"/share/piano-rs
wrapProgram "$out"/bin/piano-rs \
--set ASSETS "$out"/share/piano-rs/assets
'';
meta = with lib; {
description = "Multiplayer piano using UDP sockets that can be played using computer keyboard, in the terminal";
homepage = "https://github.com/ritiek/piano-rs";
license = licenses.mit;
mainProgram = "piano-rs";
maintainers = with maintainers; [ ritiek ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,45 @@
{
fetchFromGitHub,
lib,
stdenv,
pkg-config,
libao,
json_c,
libgcrypt,
ffmpeg,
curl,
}:
stdenv.mkDerivation {
pname = "pianobar";
version = "2022.04.01-unstable-2024-08-16";
src = fetchFromGitHub {
owner = "PromyLOPh";
repo = "pianobar";
rev = "41ac06c8585dc535c4b1737b4c2943bb3fe7beb0";
hash = "sha256-5LTZ6J9bvfsnpD/bGuojekutFVdH9feWLF+nLFvkeOA=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
libao
json_c
libgcrypt
ffmpeg
curl
];
makeFlags = [ "PREFIX=$(out)" ];
CC = "gcc";
CFLAGS = "-std=c99";
meta = with lib; {
description = "Console front-end for Pandora.com";
homepage = "https://6xq.net/pianobar/";
platforms = platforms.unix;
license = licenses.mit; # expat version
mainProgram = "pianobar";
};
}

View File

@@ -0,0 +1,73 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
alsa-lib,
ftgl,
libGLU,
rtmidi,
libjack2,
fluidsynth,
soundfont-fluid,
unzip,
libsForQt5,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pianobooster";
version = "1.0.0";
src = fetchFromGitHub {
owner = "pianobooster";
repo = "PianoBooster";
tag = "v${finalAttrs.version}";
hash = "sha256-1WOlAm/HXSL6QK0Kd1mnFEZxxpMseTG+6WzgMNWt+RA=";
};
postPatch = ''
substituteInPlace src/Settings.cpp src/GuiMidiSetupDialog.cpp \
--replace "/usr/share/soundfonts" "${soundfont-fluid}/share/soundfonts" \
--replace "FluidR3_GM.sf2" "FluidR3_GM2-2.sf2"
'';
nativeBuildInputs = [
cmake
pkg-config
]
++ (with libsForQt5; [
qttools
wrapQtAppsHook
]);
buildInputs = [
alsa-lib
ftgl
libGLU
libsForQt5.qtbase
rtmidi
libjack2
fluidsynth
];
cmakeFlags = [
"-DOpenGL_GL_PREFERENCE=GLVND"
"-DUSE_JACK=ON"
];
postInstall = ''
qtWrapperArgs+=(
--prefix PATH : "${lib.makeBinPath [ unzip ]}"
)
'';
meta = {
description = "MIDI file player that teaches you how to play the piano";
mainProgram = "pianobooster";
homepage = "https://github.com/pianobooster/PianoBooster";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ orivej ];
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
fetchFromGitHub,
python3,
ffmpeg,
}:
python3.pkgs.buildPythonApplication rec {
pname = "pianotrans";
version = "1.0.1";
pyproject = true;
src = fetchFromGitHub {
owner = "azuwis";
repo = "pianotrans";
rev = "v${version}";
hash = "sha256-gRbyUQmPtGvx5QKAyrmeJl0stp7hwLBWwjSbJajihdE=";
};
build-system = with python3.pkgs; [ setuptools ];
dependencies = with python3.pkgs; [
piano-transcription-inference
resampy
tkinter
torch
];
# Project has no tests
doCheck = false;
makeWrapperArgs = [
''--prefix PATH : "${lib.makeBinPath [ ffmpeg ]}"''
];
meta = with lib; {
description = "Simple GUI for ByteDance's Piano Transcription with Pedals";
mainProgram = "pianotrans";
homepage = "https://github.com/azuwis/pianotrans";
license = licenses.mit;
maintainers = with maintainers; [ azuwis ];
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchurl,
jre,
makeWrapper,
}:
stdenv.mkDerivation rec {
pname = "picard-tools";
version = "3.4.0";
src = fetchurl {
url = "https://github.com/broadinstitute/picard/releases/download/${version}/picard.jar";
sha256 = "sha256-52EowoOIn8WDyd6jOjt0SJdMBn0QLJ41vhUmQtTV+QE=";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ jre ];
dontUnpack = true;
installPhase = ''
mkdir -p $out/libexec/picard
cp $src $out/libexec/picard/picard.jar
mkdir -p $out/bin
makeWrapper ${jre}/bin/java $out/bin/picard --add-flags "-jar $out/libexec/picard/picard.jar"
'';
meta = with lib; {
description = "Tools for high-throughput sequencing (HTS) data and formats such as SAM/BAM/CRAM and VCF";
license = licenses.mit;
homepage = "https://broadinstitute.github.io/picard/";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
maintainers = with maintainers; [ jbedo ];
mainProgram = "picard";
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,92 @@
{
lib,
python312Packages,
fetchFromGitHub,
chromaprint,
gettext,
qt5,
enablePlayback ? true,
gst_all_1,
}:
let
pythonPackages = python312Packages;
pyqt5 = if enablePlayback then pythonPackages.pyqt5-multimedia else pythonPackages.pyqt5;
in
pythonPackages.buildPythonApplication rec {
pname = "picard";
# nix-update --commit picard --version-regex 'release-(.*)'
version = "2.13.3";
format = "setuptools";
src = fetchFromGitHub {
owner = "metabrainz";
repo = "picard";
tag = "release-${version}";
hash = "sha256-Q0W5Q1+PbN+yneh98jx0/UNHVfD6okX92hxNzCE+Ibc=";
};
nativeBuildInputs = [
gettext
qt5.wrapQtAppsHook
pythonPackages.pytestCheckHook
]
++ lib.optionals (pyqt5.multimediaEnabled) [
gst_all_1.gst-libav
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-vaapi
gst_all_1.gstreamer
];
buildInputs = [
qt5.qtbase
qt5.qtwayland
]
++ lib.optionals (pyqt5.multimediaEnabled) [
qt5.qtmultimedia.bin
];
propagatedBuildInputs = with pythonPackages; [
chromaprint
discid
fasteners
markdown
mutagen
pyjwt
pyqt5
python-dateutil
pyyaml
];
setupPyGlobalFlags = [
"build"
"--disable-autoupdate"
"--localedir=${placeholder "out"}/share/locale"
];
preCheck = ''
export HOME=$(mktemp -d)
'';
doCheck = true;
# In order to spare double wrapping, we use:
preFixup = ''
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
''
+ lib.optionalString (pyqt5.multimediaEnabled) ''
makeWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
'';
meta = {
homepage = "https://picard.musicbrainz.org";
changelog = "https://picard.musicbrainz.org/changelog";
description = "Official MusicBrainz tagger";
mainProgram = "picard";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ doronbehar ];
};
}

View File

@@ -0,0 +1,70 @@
{
lib,
stdenv,
fetchurl,
zlib,
}:
stdenv.mkDerivation {
pname = "picat";
version = "3.8#7";
src = fetchurl {
url = "https://picat-lang.org/download/picat387_src.tar.gz";
hash = "sha256-H+aFmagdb7jU4LZCYrNPa4ZWVB1ziiJHrUe4b1ImWks=";
};
buildInputs = [ zlib ];
env.ARCH =
{
x86_64-linux = "linux64";
aarch64-linux = "linux64";
x86_64-cygwin = "cygwin64";
x86_64-darwin = "mac64";
aarch64-darwin = "mac64";
}
."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
hardeningDisable = [ "format" ];
enableParallelBuilding = true;
buildPhase = ''
runHook preBuild
cd emu
make -j $NIX_BUILD_CORES -f Makefile.$ARCH
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share
cp picat $out/bin/
cp -r ../doc $out/share/doc
cp -r ../exs $out/share/examples
runHook postInstall
'';
meta = {
description = "Logic-based programming language";
mainProgram = "picat";
homepage = "http://picat-lang.org/";
license = lib.licenses.mpl20;
platforms = [
"x86_64-linux"
"aarch64-linux"
"x86_64-cygwin"
"x86_64-darwin"
"aarch64-darwin"
];
maintainers = with lib.maintainers; [
earldouglas
thoughtpolice
];
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
fetchFromGitHub,
nix-update-script,
python3Packages,
glib,
gtk3,
gobject-introspection,
wrapGAppsHook3,
}:
python3Packages.buildPythonPackage {
pname = "pick-colour-picker";
version = "1.5.0-unstable-2022-05-08";
pyproject = true;
src = fetchFromGitHub {
owner = "stuartlangridge";
repo = "ColourPicker";
rev = "e3e4c2bcec5d7285425582b92bb564c74be2cf77";
hash = "sha256-vW8mZiB3JFQtbOCWauhJGfZMlGsA/nNcljNNPtJtgGw=";
};
postPatch = ''
sed "s|sys\.prefix|'\.'|g" -i setup.py
sed "s|os.environ.get(\"SNAP\")|'$out'|g" -i pick/__main__.py
sed "s|os.environ.get('SNAP'), \"usr\"|'$out'|g" -i pick/__main__.py
'';
nativeBuildInputs = [
gobject-introspection
wrapGAppsHook3
];
build-system = with python3Packages; [ setuptools ];
pythonPath = with python3Packages; [
pygobject3
pycairo
];
buildInputs = [
glib
gtk3
];
pythonImportsCheck = [ "pick" ];
passthru.updateScript = nix-update-script {
extraArgs = [ "--version=branch" ];
};
meta = with lib; {
homepage = "https://kryogenix.org/code/pick/";
license = licenses.mit;
platforms = platforms.linux;
description = "Colour picker that remembers where you picked colours from";
mainProgram = "pick-colour-picker";
maintainers = [ maintainers.mkg20001 ];
longDescription = ''
Pick lets you pick colours from anywhere on your screen. Choose the colour you want and Pick remembers it, names it, and shows you a screenshot so you can remember where you got it from.
Zoom all the way in to pixels to pick just the right one. Show your colours in your choice of format: rgba() or hex, CSS or Gdk or Qt, whichever you prefer. Copy to the clipboard ready for pasting into code or graphics apps.
'';
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenv,
fetchFromGitHub,
ncurses,
}:
stdenv.mkDerivation rec {
pname = "pick";
version = "4.0.0";
src = fetchFromGitHub {
owner = "mptre";
repo = "pick";
rev = "v${version}";
sha256 = "8cgt5KpLfnLwhucn4DQYC/7ot1u24ahJxWG+/1SL584=";
};
buildInputs = [ ncurses ];
PREFIX = placeholder "out";
meta = with lib; {
inherit (src.meta) homepage;
description = "Fuzzy text selection utility";
license = licenses.mit;
maintainers = [ maintainers.womfoo ];
platforms = platforms.linux ++ platforms.darwin;
mainProgram = "pick";
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
versionCheckHook,
nix-update-script,
pico-sdk,
# Options
# The submodules in the pico-sdk contain important additional functionality
# such as tinyusb, but not all these libraries might be bsd3.
# Off by default.
withSubmodules ? false,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pico-sdk";
version = "2.2.0";
src = fetchFromGitHub {
owner = "raspberrypi";
repo = "pico-sdk";
tag = finalAttrs.version;
fetchSubmodules = withSubmodules;
hash =
if withSubmodules then
"sha256-8ubZW6yQnUTYxQqYI6hi7s3kFVQhe5EaxVvHmo93vgk="
else
"sha256-hQdEZD84/cnLSzP5Xr9vbOGROQz4BjeVOnvbyhe6rfM=";
};
cmakeFlags = [
(lib.cmakeFeature "PIOASM_VERSION_STRING" finalAttrs.version)
];
nativeBuildInputs = [ cmake ];
# SDK contains libraries and build-system to develop projects for RP2040 chip
# We only need to compile pioasm binary
sourceRoot = "${finalAttrs.src.name}/tools/pioasm";
installPhase = ''
runHook preInstall
mkdir -p $out/lib/pico-sdk
cp -a ../../../* $out/lib/pico-sdk/
chmod 755 $out/lib/pico-sdk/tools/pioasm/build/pioasm
runHook postInstall
'';
passthru = {
updateScript = nix-update-script { };
tests = {
withSubmodules = pico-sdk.override { withSubmodules = true; };
};
};
meta = {
description = "SDK provides the headers, libraries and build system necessary to write programs for the RP2040-based devices";
homepage = "https://github.com/raspberrypi/pico-sdk";
changelog = "https://github.com/raspberrypi/pico-sdk/releases/tag/${finalAttrs.version}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ muscaln ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchFromGitLab,
readline,
}:
stdenv.mkDerivation {
pname = "picoc";
version = "2.1-unstable-2018-06-05";
src = fetchFromGitLab {
owner = "zsaleeba";
repo = "picoc";
rev = "dc85a51e9211cfb644f0a85ea9546e15dc1141c3";
hash = "sha256-yWPRbJLT09E7pqqs9E2k48ECoRR2nhcgTgK5pumkrxo=";
};
buildInputs = [ readline ];
makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
env.NIX_CFLAGS_COMPILE = toString (
lib.optionals stdenv.hostPlatform.isDarwin [
"-Wno-error=implicit-function-declaration"
]
);
enableParallelBuilding = true;
# Tests are currently broken on i686 see
# https://hydra.nixos.org/build/24003763/nixlog/1
doCheck = !stdenv.hostPlatform.isi686 && !stdenv.hostPlatform.isAarch64;
checkTarget = "test";
installPhase = ''
runHook preInstall
install -Dm755 picoc $out/bin/picoc
mkdir -p $out/include
install -m644 *.h $out/include
runHook postInstall
'';
meta = with lib; {
description = "Very small C interpreter for scripting";
mainProgram = "picoc";
longDescription = ''
PicoC is a very small C interpreter for scripting. It was originally
written as a script language for a UAV's on-board flight system. It's
also very suitable for other robotic, embedded and non-embedded
applications. The core C source code is around 3500 lines of code. It's
not intended to be a complete implementation of ISO C but it has all the
essentials. When compiled it only takes a few k of code space and is also
very sparing of data space. This means it can work well in small embedded
devices.
'';
homepage = "https://gitlab.com/zsaleeba/picoc";
downloadPage = "https://code.google.com/p/picoc/downloads/list";
license = licenses.bsd3;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,15 @@
diff --git a/picocom.c b/picocom.c
index ba2f9bd666..d4df60f2d3 100644
--- a/picocom.c
+++ b/picocom.c
@@ -243,8 +243,8 @@
.send_cmd = "",
.receive_cmd = "",
#else
- .send_cmd = "sz -vv",
- .receive_cmd = "rz -vv -E",
+ .send_cmd = "@lrzsz@/bin/sz -vv",
+ .receive_cmd = "@lrzsz@/bin/rz -vv -E",
#endif
.imap = M_I_DFL,
.omap = M_O_DFL,

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchFromGitLab,
replaceVars,
pkg-config,
go-md2man,
installShellFiles,
linenoise,
lrzsz,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "picocom";
version = "2024-07";
src = fetchFromGitLab {
owner = "wsakernel";
repo = "picocom";
rev = finalAttrs.version;
hash = "sha256-cQoEfi75iltjeAm26NvXgfrL7d1Hm+1veQ4dVe0S1q8=";
};
patches = [
./use-system-linenoise.patch
(replaceVars ./lrzsz-path.patch { inherit lrzsz; })
];
nativeBuildInputs = [
pkg-config
go-md2man
installShellFiles
];
buildInputs = [
linenoise
];
makeFlags = [
"HISTFILE=.cache/picocom_history"
"all"
"doc"
];
enableParallelBuilding = true;
installPhase = ''
runHook preInstall
install -Dm555 -t $out/bin picocom
installManPage picocom.1
installShellCompletion --bash bash_completion/picocom
runHook postInstall
'';
meta = {
description = "Minimal dumb-terminal emulation program";
homepage = "https://gitlab.com/wsakernel/picocom";
changelog = "https://gitlab.com/wsakernel/picocom/-/releases";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.unix;
mainProgram = "picocom";
};
})

View File

@@ -0,0 +1,30 @@
diff --git a/Makefile b/Makefile
index 8fca24ee38..33b59b5b96 100644
--- a/Makefile
+++ b/Makefile
@@ -39,9 +39,9 @@
## Comment these out to disable "linenoise"-library support
HISTFILE = .picocom_history
CPPFLAGS += -DHISTFILE=\"$(HISTFILE)\" \
- -DLINENOISE
-OBJS += linenoise-1.0/linenoise.o
-linenoise-1.0/linenoise.o : linenoise-1.0/linenoise.c linenoise-1.0/linenoise.h
+ -DLINENOISE \
+ $(shell $(PKG_CONFIG) --cflags linenoise)
+LDFLAGS += $(shell $(PKG_CONFIG) --libs linenoise)
## Comment this in to enable (force) custom baudrate support
## even on systems not enabled by default.
diff --git a/picocom.c b/picocom.c
index 775ee9c3bb..ba2f9bd666 100644
--- a/picocom.c
+++ b/picocom.c
@@ -48,7 +48,7 @@
#include "split.h"
#include "term.h"
#ifdef LINENOISE
-#include "linenoise-1.0/linenoise.h"
+#include <linenoise.h>
#endif
#include "custbaud.h"

View File

@@ -0,0 +1,38 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule (finalAttrs: {
pname = "picocrypt-cli";
version = "1.49";
src = fetchFromGitHub {
owner = "Picocrypt";
repo = "CLI";
tag = finalAttrs.version;
hash = "sha256-r+ySKCVRPYHY+8s6uCj2ZQyMArccPjpa4d4lvYjrmmU=";
};
sourceRoot = "${finalAttrs.src.name}/picocrypt";
vendorHash = "sha256-HscCZ6z/tGLNlm6AjYmAG156LS3VGeye12eyeqYVGtw=";
ldflags = [
"-s"
"-w"
];
env.CGO_ENABLED = 1;
meta = {
description = "Command-line interface for Picocrypt";
homepage = "https://github.com/Picocrypt/CLI";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
arthsmn
ryand56
];
mainProgram = "picocrypt";
};
})

View File

@@ -0,0 +1,77 @@
{
lib,
buildGoModule,
fetchFromGitHub,
stdenv,
copyDesktopItems,
makeDesktopItem,
xorg,
glfw,
gtk3,
pkg-config,
wrapGAppsHook3,
}:
buildGoModule (finalAttrs: {
pname = "picocrypt-ng";
version = "2.00";
src = fetchFromGitHub {
owner = "Picocrypt-NG";
repo = "Picocrypt-NG";
tag = finalAttrs.version;
hash = "sha256-+Ecvy4h0aC9Gra9BcN8L/vgpnflq6W7KcnYCVr8uaQQ=";
};
sourceRoot = "${finalAttrs.src.name}/src";
vendorHash = "sha256-0fEy/YuZa7dENfL3y+NN4SLWYwOLmXqHHJEiU37AkX4=";
ldflags = [
"-s"
"-w"
];
buildInputs =
# Depends on a vendored, patched GLFW.
glfw.buildInputs or [ ]
++ glfw.propagatedBuildInputs or [ ]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
gtk3
xorg.libXxf86vm
];
nativeBuildInputs = [
copyDesktopItems
pkg-config
wrapGAppsHook3
];
env.CGO_ENABLED = 1;
postInstall = ''
mv $out/bin/Picocrypt $out/bin/picocrypt-ng-gui
install -Dm644 $src/images/key.svg $out/share/icons/hicolor/scalable/apps/picocrypt-ng.svg
'';
desktopItems = [
(makeDesktopItem {
name = "Picocrypt-NG";
exec = "picocrypt-ng-gui";
icon = "picocrypt-ng";
comment = finalAttrs.meta.description;
desktopName = "Picocrypt-NG";
categories = [ "Utility" ];
})
];
meta = {
description = "Very small, very simple, yet very secure encryption tool";
homepage = "https://github.com/Picocrypt-NG/Picocrypt-NG";
changelog = "https://github.com/Picocrypt-NG/Picocrypt-NG/blob/${finalAttrs.version}/Changelog.md";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ arthsmn ];
mainProgram = "picocrypt-ng-gui";
};
})

View File

@@ -0,0 +1,77 @@
{
lib,
buildGoModule,
fetchFromGitHub,
stdenv,
copyDesktopItems,
makeDesktopItem,
xorg,
glfw,
gtk3,
pkg-config,
wrapGAppsHook3,
}:
buildGoModule (finalAttrs: {
pname = "picocrypt";
version = "1.49";
src = fetchFromGitHub {
owner = "Picocrypt";
repo = "Picocrypt";
tag = finalAttrs.version;
hash = "sha256-B10PP/V8xvYbA6rQHWdav/KtQKecNUmwvj9qMYqml8E=";
};
sourceRoot = "${finalAttrs.src.name}/src";
vendorHash = "sha256-0fEy/YuZa7dENfL3y+NN4SLWYwOLmXqHHJEiU37AkX4=";
ldflags = [
"-s"
"-w"
];
buildInputs =
# Depends on a vendored, patched GLFW.
glfw.buildInputs or [ ]
++ glfw.propagatedBuildInputs or [ ]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
gtk3
xorg.libXxf86vm
];
nativeBuildInputs = [
copyDesktopItems
pkg-config
wrapGAppsHook3
];
env.CGO_ENABLED = 1;
postInstall = ''
mv $out/bin/Picocrypt $out/bin/picocrypt-gui
install -Dm644 $src/images/key.svg $out/share/icons/hicolor/scalable/apps/picocrypt.svg
'';
desktopItems = [
(makeDesktopItem {
name = "Picocrypt";
exec = "picocrypt-gui";
icon = "picocrypt";
comment = finalAttrs.meta.description;
desktopName = "Picocrypt";
categories = [ "Utility" ];
})
];
meta = {
description = "Very small, very simple, yet very secure encryption tool, written in Go";
homepage = "https://github.com/Picocrypt/Picocrypt";
changelog = "https://github.com/Picocrypt/Picocrypt/blob/${finalAttrs.version}/Changelog.md";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ ryand56 ];
mainProgram = "picocrypt-gui";
};
})

View File

@@ -0,0 +1,225 @@
{
stdenv,
fetchFromGitHub,
lib,
meson,
ninja,
nix-update-script,
pkgsCross,
# General Build Options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L40-L57
multilib ? true,
sanitize-bounds ? false,
sanitize-trap-on-error ? false,
profile ? false,
analyzer ? false,
assert-verbose ? true,
fast-strcmp ? true,
# Testing options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L75
picolib ? stdenv.hostPlatform.isNone,
semihost ? stdenv.hostPlatform.isNone,
# Stdio Options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L114
tinystdio ? true,
io-c99-formats ? true,
io-long-long ? false,
io-pos-args ? false,
io-long-double ? false,
# Tinystdio options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L129
io-float-exact ? true,
atomic-ungetc ? true,
posix-console ? !stdenv.hostPlatform.isNone,
format-default ? "double",
printf-aliases ? true,
io-percent-b ? false,
printf-small-ultoa ? true,
printf-percent-n ? false,
minimal-io-long-long ? false,
fast-bufio ? false,
io-wchar ? false,
# Internaltionalization options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L181
mb-capable ? false,
mb-extended-charsets ? false,
mb-ucs-charsets ? "auto",
mb-iso-charsets ? "auto",
mb-jis-charsets ? "auto",
mb-windows-charsets ? "auto",
# Startup/shutdown options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L198
picocrt ? stdenv.hostPlatform.isNone,
picocrt-enable-mmu ? true,
picocrt-lib ? true,
picoexit ? true,
initfini-array ? true,
crt-runtime-size ? false,
# Legacy (non-picoexit) startup/shutdown options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L217
newlib-atexit-dynamic-alloc ? false,
newlib-global-atexit ? !stdenv.hostPlatform.isNone,
newlib-register-fini ? false,
# Malloc options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L228
newlib-nano-malloc ? true,
nano-malloc-clear-freed ? false,
# Locking options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L237
single-thread ? false,
# TLS storage options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L244
thread-local-storage ? "picolibc",
tls-model ? if stdenv.hostPlatform.isNone then "local-exec" else "global-dynamic",
newlib-global-errno ? false,
errno-function ? if stdenv.hostPlatform.isNone then "false" else "auto",
tls-rp2040 ? false,
# Math options
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/meson_options.txt#L261
want-math-errno ? false,
}:
let
inherit (lib.strings) mesonBool mesonOption;
canExecute = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
in
stdenv.mkDerivation (finalAttrs: {
pname = "picolibc";
version = "1.8.9-2";
strictDeps = true;
outputs = [
"out"
"dev"
];
src = fetchFromGitHub {
owner = "picolibc";
repo = "picolibc";
tag = finalAttrs.version;
hash = "sha256-djOZKkinsaaYD4tUEA6mKdo+5em0GP1/+rI0mIm7Vs8=";
};
nativeBuildInputs = [
meson
ninja
];
# Default values taken from
# Build fails without using them.
# https://github.com/picolibc/picolibc/blob/e57b766cb5d80f23c20d05ab067001d85910f927/doc/os.md?plain=1#L183
mesonFlags = [
(mesonBool "multilib" multilib)
(mesonBool "sanitize-bounds" sanitize-bounds)
(mesonBool "sanitize-trap-on-error" sanitize-trap-on-error)
(mesonBool "profile" profile)
(mesonBool "analyzer" analyzer)
(mesonBool "assert-verbose" assert-verbose)
(mesonBool "fast-strcmp" fast-strcmp)
# Testing options
(mesonBool "picolib" picolib)
(mesonBool "semihost" semihost)
(mesonBool "use-stdlib" true)
# Install options
(mesonOption "specsdir" "${placeholder "dev"}/lib")
(mesonBool "tinystdio" tinystdio)
(mesonBool "io-c99-formats" io-c99-formats)
(mesonBool "io-long-long" io-long-long)
(mesonBool "io-pos-args" io-pos-args)
(mesonBool "io-long-double" io-long-double)
(mesonBool "io-float-exact" io-float-exact)
(mesonBool "atomic-ungetc" atomic-ungetc)
(mesonBool "posix-console" posix-console)
(mesonOption "format-default" format-default)
(mesonBool "printf-aliases" printf-aliases)
(mesonBool "io-percent-b" io-percent-b)
(mesonBool "printf-small-ultoa" printf-small-ultoa)
(mesonBool "printf-percent-n" printf-percent-n)
(mesonBool "minimal-io-long-long" minimal-io-long-long)
(mesonBool "fast-bufio" fast-bufio)
(mesonBool "io-wchar" io-wchar)
(mesonBool "mb-capable" mb-capable)
(mesonBool "mb-extended-charsets" mb-extended-charsets)
(mesonOption "mb-ucs-charsets" mb-ucs-charsets)
(mesonOption "mb-iso-charsets" mb-iso-charsets)
(mesonOption "mb-jis-charsets" mb-jis-charsets)
(mesonOption "mb-windows-charsets" mb-windows-charsets)
(mesonBool "picocrt" picocrt)
(mesonBool "picocrt-enable-mmu" picocrt-enable-mmu)
(mesonBool "picocrt-lib" picocrt-lib)
(mesonBool "picoexit" picoexit)
(mesonBool "newlib-initfini-array" initfini-array)
(mesonBool "crt-runtime-size" crt-runtime-size)
(mesonBool "newlib-atexit-dynamic-alloc" newlib-atexit-dynamic-alloc)
(mesonBool "newlib-global-atexit" newlib-global-atexit)
(mesonBool "newlib-register-fini" newlib-register-fini)
(mesonBool "newlib-nano-malloc" newlib-nano-malloc)
(mesonBool "nano-malloc-clear-freed" nano-malloc-clear-freed)
(mesonBool "newlib-multithread" (!single-thread))
(mesonOption "thread-local-storage" thread-local-storage)
(mesonOption "tls-model" tls-model)
(mesonBool "newlib-global-errno" newlib-global-errno)
(mesonOption "errno-function" errno-function)
(mesonBool "tls-rp2040" tls-rp2040)
(mesonBool "want-math-errno" want-math-errno)
]
++ lib.optionals finalAttrs.doCheck [
(mesonBool "tests" true)
# Something is broken with this and I'm not sure what.
(mesonOption "tests-cdefs" "false")
];
doCheck = canExecute;
passthru = {
updateScript = nix-update-script { };
tests = {
arm = pkgsCross.arm-embedded.picolibc;
};
};
meta =
let
inherit (lib) licenses maintainers;
in
{
description = "C library designed for embedded 32- and 64- bit systems";
longDescription = ''
Picolibc is library offering standard C library APIs that targets
small embedded systems with limited RAM. Picolibc was formed by blending
code from [Newlib](http://sourceware.org/newlib/) and
[AVR Libc](https://www.nongnu.org/avr-libc/).
'';
homepage = "https://keithp.com/picolibc/";
changelog = "https://github.com/picolibc/picolibc/releases/tag/${finalAttrs.version}";
license = [
licenses.bsd2
licenses.bsd3
];
maintainers = [ maintainers.RossSmyth ];
# https://github.com/picolibc/picolibc/tree/db4d0fe5952d5ecd714781e3212d4086d970735a?tab=readme-ov-file#supported-architectures
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,60 @@
{
clang,
fetchurl,
lib,
libffi,
llvm,
makeWrapper,
openssl,
pkg-config,
readline,
stdenv,
}:
stdenv.mkDerivation {
pname = "PicoLisp";
version = "24.3.30";
src = fetchurl {
url = "https://www.software-lab.de/picoLisp-24.3.tgz";
sha256 = "sha256-FB43DAjHBFgxdysoLzBXLxii52a2CCh1skZP/RTzfdc=";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
clang
libffi
llvm
openssl
pkg-config
readline
];
sourceRoot = ''pil21'';
preBuild = ''
cd src
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
# Flags taken from instructions at: https://picolisp.com/wiki/?alternativeMacOSRepository
makeFlagsArray+=(
SHARED='-dynamiclib -undefined dynamic_lookup'
)
'';
installPhase = ''
cd ..
mkdir -p "$out/lib" "$out/bin" "$out/man"
cp -r . "$out/lib/picolisp/"
ln -s "$out/lib/picolisp/bin/picolisp" "$out/bin/picolisp"
ln -s "$out/lib/picolisp/bin/pil" "$out/bin/pil"
ln -s "$out/lib/picolisp/man/man1/pil.1" "$out/man/pil.1"
ln -s "$out/lib/picolisp/man/man1/picolisp.1" "$out/man/picolisp.1"
substituteInPlace $out/bin/pil --replace-fail /usr $out
'';
meta = with lib; {
description = "Pragmatic programming language";
homepage = "https://picolisp.com/";
license = licenses.mit;
maintainers = with maintainers; [ nat-418 ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,61 @@
{
lib,
stdenv,
fetchFromGitHub,
libpulseaudio,
SDL2,
SDL2_image,
SDL2_ttf,
alsa-lib,
libjack2,
}:
stdenv.mkDerivation rec {
pname = "picoloop";
version = "0.77e";
src = fetchFromGitHub {
repo = "picoloop";
owner = "yoyz";
rev = "picoloop-${version}";
sha256 = "0i8j8rgyha3ara6d4iis3wcimszf2csxdwrm5yq0wyhg74g7cvjd";
};
buildInputs = [
libpulseaudio
SDL2
(lib.getDev SDL2)
SDL2_image
SDL2_ttf
alsa-lib
libjack2
];
sourceRoot = "${src.name}/picoloop";
makeFlags = [ "-f Makefile.PatternPlayer_debian_RtAudio_sdl20" ];
env.NIX_CFLAGS_COMPILE = toString [ "-I${lib.getInclude SDL2}/include/SDL2" ];
hardeningDisable = [ "format" ];
patchPhase = ''
substituteInPlace SDL_GUI.cpp \
--replace "\"font.ttf\"" "\"$out/share/font.ttf\"" \
--replace "\"font.bmp\"" "\"$out/share/font.bmp\""
'';
installPhase = ''
mkdir -p $out/{bin,share}
cp PatternPlayer_debian_RtAudio_sdl20 $out/bin/picoloop
cp {font.*,LICENSE} $out/share
'';
meta = with lib; {
description = "Synth and a stepsequencer (a clone of the famous nanoloop)";
homepage = "https://github.com/yoyz/picoloop";
platforms = platforms.linux;
license = licenses.bsd3;
mainProgram = "picoloop";
};
}

View File

@@ -0,0 +1,43 @@
{
picom,
lib,
writeShellScript,
fetchFromGitHub,
unstableGitUpdater,
}:
picom.overrideAttrs (previousAttrs: {
pname = "picom-pijulius";
version = "8.2-unstable-2025-08-25";
src = fetchFromGitHub {
owner = "pijulius";
repo = "picom";
rev = "8efe4707c7bc4e0baccd51166ea8e0d08d96bd85";
hash = "sha256-KCK6/gmcs2VFd64veL9w27LWjCWoA7WT221dv89dGZc=";
};
dontVersionCheck = true;
passthru.updateScript = unstableGitUpdater {
tagFormat = "v([A-Z]+)([a-z]+)|v([1-9]).([1-9])|v([1-9])-rc([1-9])";
tagConverter = writeShellScript "picom-pijulius-tag-converter.sh" ''
sed -e 's/v//g' -e 's/([A-Z])([a-z])+/8.2/g' -e 's/-rc([1-9])|-rc//g' -e 's/0/8.2/g'
'';
};
meta = {
inherit (previousAttrs.meta)
license
longDescription
mainProgram
platforms
;
description = "Pijulius's picom fork with extensive animation support";
homepage = "https://github.com/pijulius/picom";
maintainers = with lib.maintainers; [
YvesStraten
];
};
})

View File

@@ -0,0 +1,140 @@
{
asciidoctor,
dbus,
docbook_xml_dtd_45,
docbook_xsl,
fetchFromGitHub,
lib,
libconfig,
libdrm,
libev,
libGL,
libepoxy,
libX11,
libxcb,
libxdg_basedir,
libXext,
libxml2,
libxslt,
makeWrapper,
meson,
ninja,
pcre2,
pixman,
pkg-config,
stdenv,
uthash,
xcbutil,
xcbutilimage,
xcbutilrenderutil,
xorgproto,
xwininfo,
withDebug ? false,
versionCheckHook,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "picom";
version = "12.5";
src = fetchFromGitHub {
owner = "yshui";
repo = "picom";
tag = "v${finalAttrs.version}";
hash = "sha256-H8IbzzrzF1c63MXbw5mqoll3H+vgcSVpijrlSDNkc+o=";
fetchSubmodules = true;
};
strictDeps = true;
nativeBuildInputs = [
asciidoctor
docbook_xml_dtd_45
docbook_xsl
makeWrapper
meson
ninja
pkg-config
];
buildInputs = [
dbus
libconfig
libdrm
libev
libGL
libepoxy
libX11
libxcb
libxdg_basedir
libXext
libxml2
libxslt
pcre2
pixman
uthash
xcbutil
xcbutilimage
xcbutilrenderutil
xorgproto
];
# Use "debugoptimized" instead of "debug" so perhaps picom works better in
# normal usage too, not just temporary debugging.
mesonBuildType = if withDebug then "debugoptimized" else "release";
dontStrip = withDebug;
mesonFlags = [
"-Dwith_docs=true"
];
installFlags = [ "PREFIX=$(out)" ];
# In debug mode, also copy src directory to store. If you then run `gdb picom`
# in the bin directory of picom store path, gdb finds the source files.
postInstall = ''
wrapProgram $out/bin/picom-trans \
--prefix PATH : ${lib.makeBinPath [ xwininfo ]}
''
+ lib.optionalString withDebug ''
cp -r ../src $out/
'';
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Fork of XCompMgr, a sample compositing manager for X servers";
license = lib.licenses.mit;
longDescription = ''
A fork of XCompMgr, which is a sample compositing manager for X
servers supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE
extensions. It enables basic eye-candy effects. This fork adds
additional features, such as additional effects, and a fork at a
well-defined and proper place.
The package can be installed in debug mode as:
picom.override { withDebug = true; }
For gdb to find the source files, you need to run gdb in the bin directory
of picom package in the nix store.
'';
homepage = "https://github.com/yshui/picom";
mainProgram = "picom";
maintainers = with lib.maintainers; [
gepbird
thiagokokada
twey
];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchurl,
udevCheckHook,
}:
## Usage
# In NixOS, simply add this package to services.udev.packages:
# services.udev.packages = [ pkgs.picoprobe-udev-rules ];
stdenv.mkDerivation {
pname = "picoprobe-udev-rules";
version = "unstable-2023-01-31";
src = fetchurl {
url = "https://raw.githubusercontent.com/probe-rs/webpage/1cba61acc6ecb5ff96f74641269844ad88ad8ad5/static/files/69-probe-rs.rules";
sha256 = "sha256-vQMPX3Amttja0u03KWGnPDAVTGM9ekJ+IBTjW+xlJS0=";
};
nativeBuildInputs = [
udevCheckHook
];
doInstallCheck = true;
dontUnpack = true;
dontBuild = true;
installPhase = ''
runHook preInstall
install -D $src $out/lib/udev/rules.d/69-probe-rs.rules
runHook postInstall
'';
meta = with lib; {
homepage = "https://probe.rs/docs/getting-started/probe-setup/#udev-rules";
description = "Picoprobe udev rules list";
platforms = platforms.linux;
license = licenses.gpl2Only;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "picosat";
version = "965";
src = fetchurl {
url = "https://fmv.jku.at/picosat/${pname}-${version}.tar.gz";
sha256 = "0m578rpa5rdn08d10kr4lbsdwp4402hpavrz6n7n53xs517rn5hm";
};
prePatch = ''
substituteInPlace picosat.c --replace "sys/unistd.h" "unistd.h"
substituteInPlace makefile.in \
--replace 'ar rc' '$(AR) rc' \
--replace 'ranlib' '$(RANLIB)'
'';
configurePhase = "./configure.sh --shared --trace";
makeFlags = lib.optional stdenv.hostPlatform.isDarwin "SONAME=-Wl,-install_name,$(out)/lib/libpicosat.so";
installPhase = ''
mkdir -p $out/bin $out/lib $out/share $out/include/picosat
cp picomus picomcs picosat picogcnf "$out"/bin
cp VERSION "$out"/share/picosat.version
cp picosat.o "$out"/lib
cp libpicosat.a "$out"/lib
cp libpicosat.so "$out"/lib
cp picosat.h "$out"/include/picosat
'';
meta = {
description = "SAT solver with proof and core support";
homepage = "https://fmv.jku.at/picosat/";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
roconnor
thoughtpolice
];
};
}

View File

@@ -0,0 +1,128 @@
{
cacert,
dpkg,
fetchurl,
gdk-pixbuf,
glib,
glibc,
gtk3,
icu,
lib,
libcap,
librsvg,
libusb1,
makeWrapper,
openssl,
patchelf,
stdenv,
systemdMinimal,
onetbb,
writeTextDir,
}:
let
sources =
(lib.importJSON ./sources.json).${stdenv.system} or (throw "unsupported system ${stdenv.system}");
libraryPath = lib.makeLibraryPath libraries;
libraries = [
gdk-pixbuf
glibc
gtk3
icu
libcap
librsvg
libusb1
openssl
stdenv.cc.cc.lib
systemdMinimal
onetbb
];
gdkLoadersCache = "${gdk-pixbuf.out}/${gdk-pixbuf.moduleDir}.cache";
in
stdenv.mkDerivation {
pname = "picoscope";
inherit (sources.picoscope) version;
srcs = lib.mapAttrsToList (_: src: fetchurl { inherit (src) url sha256; }) sources;
unpackPhase = ''
for src in $srcs; do
dpkg-deb -x "$src" .
done
'';
nativeBuildInputs = [
dpkg
makeWrapper
];
buildInputs = libraries;
installPhase = ''
runHook preInstall
mkdir -p $out/
cp -dr opt/picoscope/* $out/
chmod +x $out/lib/PicoScope.GTK
# Patch all ELF files to prefer Pico libs then our curated runtime
# Set dynamic loader to Nix's glibc ld.so
for f in $out/lib/{PicoScope.GTK,CrashReporter} $(find $out/lib -type f -name 'lib*.so*'); do
${patchelf}/bin/patchelf \
--set-interpreter ${glibc.out}/lib/ld-linux-x86-64.so.2 \
--set-rpath "$out/lib:${libraryPath}" \
"$f" || true
done
# LD_LIBRARY_PATH: not strictly needed for the main exe (rpath already covers it), but required
# for dlopened plugins that ignore rpath or use absolute sonames.
# GDK_PIXBUF_MODULE_FILE: points gdk-pixbuf to Nixs loader cache so image loaders (gif/svg/png)
# come from our matched version, not the host. This fixes the g_module_* symbol errors.
# GIO_MODULE_DIR: restricts GIO to GLibs core modules only (no dconf/gvfs host bleed-through).
# SSL_CERT_DIR/SSL_CERT_FILE: Gives OpenSSL a known CA bundle so any HTTPS inside the app works
# without querying host paths.
makeWrapper $out/lib/PicoScope.GTK $out/bin/picoscope \
--set LD_LIBRARY_PATH "$out/lib:${libraryPath}" \
--set GDK_PIXBUF_MODULE_FILE "${gdkLoadersCache}" \
--set GIO_MODULE_DIR "${glib.out}/lib/gio/modules" \
--set SSL_CERT_DIR "${cacert}/etc/ssl/certs" \
--set SSL_CERT_FILE "${cacert}/etc/ssl/certs/ca-bundle.crt"
runHook postInstall
'';
# Stripping causes the following error:
# Failure processing application bundle; possible file corruption.
# Arithmetic overflow while reading bundle.
# A fatal error occurred while processing application bundle
dontStrip = true;
# usage:
# services.udev.packages = [ pkgs.picoscope.rules ];
# users.groups.pico = {};
# users.users.you.extraGroups = [ "pico" ];
passthru.rules = writeTextDir "lib/udev/rules.d/95-pico.rules" ''
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ce9", MODE="664",GROUP="pico"
'';
meta = {
homepage = "https://www.picotech.com/downloads/linux";
maintainers = with lib.maintainers; [ wirew0rm ] ++ lib.teams.lumiguide.members;
platforms = [ "x86_64-linux" ];
license = lib.licenses.unfree;
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
description = "Oscilloscope application that works with all PicoScope models";
longDescription = ''
PicoScope for Linux is a powerful oscilloscope application that works
with all PicoScope models. The most important features from PicoScope
for Windows are includedscope, spectrum analyzer, advanced triggers,
automated measurements, interactive zoom, persistence modes and signal
generator control. More features are being added all the time.
Waveform captures can be saved for off-line analysis, and shared with
PicoScope for Linux, PicoScope for macOS and PicoScope for Windows
users, or exported in text, CSV and MathWorks MATLAB 4 formats.
'';
};
}

View File

@@ -0,0 +1,104 @@
{
"x86_64-linux": {
"libpicocv": {
"sha256": "cff2f4b4460ce58d97a8e4dfde55386cd1836b463b551c17928757493089e475",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libpicocv/libpicocv_1.1.43-1r443_amd64.deb",
"version": "1.1.43-1r443"
},
"libpicohrdl": {
"sha256": "920c529b8f49cfff3d1050f45753fa8bfca3f2d8e87c9712447c8f4fc766d60a",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libpicohrdl/libpicohrdl_2.0.150-1r6187_amd64.deb",
"version": "2.0.150-1r6187"
},
"libpicoipp": {
"sha256": "4a84f0af7f4e8cba91fad620eac0cd23c36b2fdda4637904be564286b10ffe1d",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libpicoipp/libpicoipp_1.4.0-4r161_amd64.deb",
"version": "1.4.0-4r161"
},
"libpl1000": {
"sha256": "5f81971fb54dc12ddb3654c95b085cc6d750e932b759cdfaae47d8ad1a1bcaaf",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libpl1000/libpl1000_2.0.150-1r6187_amd64.deb",
"version": "2.0.150-1r6187"
},
"libplcm3": {
"sha256": "82a962c4a1a3049b4c258cf419e8468326f7931bdd3d5288af697271ed39a261",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libplcm3/libplcm3_2.0.150-1r6187_amd64.deb",
"version": "2.0.150-1r6187"
},
"libps2000": {
"sha256": "e51a2870450b9921c9b4a2a26d579b9d44047cf015ef0c51d8a19c9f26309983",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps2000/libps2000_3.0.150-3r6187_amd64.deb",
"version": "3.0.150-3r6187"
},
"libps2000a": {
"sha256": "19be0c046dbd2725e236f3508af45141a6723ec51b0fcf9a2d7bcd818d53a0b1",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps2000a/libps2000a_2.2.154-5r6530_amd64.deb",
"version": "2.2.154-5r6530"
},
"libps3000": {
"sha256": "41bbabe8abc39245612996cbc10053dfe06275b819ab57f9fbf48ef798c18a1a",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps3000/libps3000_4.0.149-3r6187_amd64.deb",
"version": "4.0.149-3r6187"
},
"libps3000a": {
"sha256": "7a01aedb064c366405e9b5d9af5b1adfc27b6b782bda1d0bd3b3bee3e595a41a",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps3000a/libps3000a_2.2.157-6r7555_amd64.deb",
"version": "2.2.157-6r7555"
},
"libps4000": {
"sha256": "0d1dff842e806e8f193ee319f88203b8fbb0391d53188e77fa9601bbbf8d2ef6",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps4000/libps4000_2.1.151-2r6187_amd64.deb",
"version": "2.1.151-2r6187"
},
"libps4000a": {
"sha256": "1d2ab448ed2b92f305410dbea452268071cb096edb88855e60dd627be7faed45",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps4000a/libps4000a_2.2.206-2r7757_amd64.deb",
"version": "2.2.206-2r7757"
},
"libps5000": {
"sha256": "e3dbd0534d1acf5c81b5170d276dcb8d0b612c3fd55f5cc212581d51734079cd",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps5000/libps5000_2.1.151-3r6187_amd64.deb",
"version": "2.1.151-3r6187"
},
"libps5000a": {
"sha256": "f17ab24eb77df24d4957b848f64815a47227d5eb246c31a111d7eadb43d04cf4",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps5000a/libps5000a_2.2.11-5r5086_amd64.deb",
"version": "2.2.11-5r5086"
},
"libps6000": {
"sha256": "01716b5d24f670ca709ca6e0947f3ca1cebb225d3b1037eee692ef049dc1946c",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps6000/libps6000_2.1.151-6r6187_amd64.deb",
"version": "2.1.151-6r6187"
},
"libps6000a": {
"sha256": "4ecf9543d388c6b972e78d3b2caa09f9a314e9cb6fd54b24c1e227fcaa3f8f12",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libps6000a/libps6000a_2.0.156-0r167_amd64.deb",
"version": "2.0.156-0r167"
},
"libpsospa": {
"sha256": "adaf1f555b8b6f0950731cd642488bd8707a09291e0f1fb7a79ed22867203eb4",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libp/libpsospa/libpsospa_1.0.149-0r5787_amd64.deb",
"version": "1.0.149-0r5787"
},
"libusbdrdaq": {
"sha256": "0906429cd32b34aaaaa41ae9f60f6b47ecbdc0b53e49275a3349141f2e79d806",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libu/libusbdrdaq/libusbdrdaq_2.0.150-1r6187_amd64.deb",
"version": "2.0.150-1r6187"
},
"libusbpt104": {
"sha256": "a73a175dcced17e59ade58edb760c8e11551300841e5c30c16cbd7c1bfe6c540",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libu/libusbpt104/libusbpt104_2.0.150-1r6187_amd64.deb",
"version": "2.0.150-1r6187"
},
"libusbtc08": {
"sha256": "551f3f290d7ee672a4e0533ffebeab746ba552c3a4d0c857edaf7c2494a96659",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/libu/libusbtc08/libusbtc08_2.0.150-1r6187_amd64.deb",
"version": "2.0.150-1r6187"
},
"picoscope": {
"sha256": "ab4a0db634b93bd5dcf7cb7fca52591c03130d57451d3ddb3942a0e663c4ffd7",
"url": "https://labs.picotech.com/rc/picoscope7/debian/pool/main/p/picoscope/picoscope_7.2.6.7136_amd64.deb",
"version": "7.2.6.7136"
}
}
}

View File

@@ -0,0 +1,44 @@
#!/usr/bin/env nix-shell
#!nix-shell --pure -i python3 -p "python3.withPackages (ps: with ps; [ requests ])"
import json
import os
import requests
import sys
def parse_packages(text):
res = []
for package in resp.text.split("\n\n"):
if not package: continue
pkg = {}
for field in package.split("\n"):
if field.startswith(" "): # multiline string
pkg[k] += "\n" + field[1:]
else:
[k, v] = field.split(": ", 1)
pkg[k] = v
res.append(pkg)
return res
def generate_sources(packages):
sources_spec = {}
for pkg in pkgs:
sources_spec[pkg['Package']] = {
"url": "https://labs.picotech.com/rc/picoscope7/debian/" + pkg["Filename"],
"sha256": pkg["SHA256"],
"version": pkg["Version"]
}
return sources_spec
out = {}
for nix_system, release in {"x86_64-linux": "amd64"}.items():
resp = requests.get("https://labs.picotech.com/rc/picoscope7/debian//dists/picoscope/main/binary-"+release+"/Packages")
if resp.status_code != 200:
print("error: could not fetch data for release {} (code {})".format(release, resp.code), file=sys.stderr)
sys.exit(1)
pkgs = parse_packages(resp.text)
out[nix_system] = generate_sources(pkgs)
with open(os.path.dirname(__file__) + "/sources.json", "w") as f:
json.dump(out, f, indent=2, sort_keys=True)
f.write('\n')

View File

@@ -0,0 +1,48 @@
{
lib,
python3,
fetchPypi,
bcc,
}:
python3.pkgs.buildPythonApplication rec {
pname = "picosnitch";
version = "1.0.3";
format = "setuptools";
src = fetchPypi {
inherit pname version;
sha256 = "78285e91b5c4d8e07529a34a7c3fe606acb6f950ee3cc78bb6c346bc2195b68a";
};
propagatedBuildInputs = with python3.pkgs; [
setuptools
bcc
psutil
dbus-python
requests
pandas
plotly
dash
geoip2
];
postInstall = ''
substituteInPlace $out/${python3.sitePackages}/picosnitch.py --replace '/run/picosnitch.pid' '/run/picosnitch/picosnitch.pid'
'';
pythonImportsCheck = [ "picosnitch" ];
meta = with lib; {
description = "Monitor network traffic per executable with hashing";
mainProgram = "picosnitch";
homepage = "https://github.com/elesiuta/picosnitch";
changelog = "https://github.com/elesiuta/picosnitch/releases";
license = licenses.gpl3Plus;
maintainers = [ maintainers.elesiuta ];
platforms = platforms.linux;
knownVulnerabilities = [
"Allows an unprivileged user to write to arbitrary files as root; see https://github.com/elesiuta/picosnitch/issues/40"
];
};
}

View File

@@ -0,0 +1,66 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
libusb1,
pico-sdk,
mbedtls_2,
versionCheckHook,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "picotool";
version = "2.1.1";
src = fetchFromGitHub {
owner = "raspberrypi";
repo = "picotool";
tag = finalAttrs.version;
hash = "sha256-WA17FXSUGylzUcbvzgAGCeds+XeuSvDlgFBJD10ERVY=";
};
postPatch = ''
# necessary for signing/hashing support. our pico-sdk does not come with
# it by default, and it shouldn't due to submodule size. pico-sdk uses
# an upstream version of mbedtls 2.x so we patch ours in directly.
substituteInPlace lib/CMakeLists.txt \
--replace-fail "''$"'{PICO_SDK_PATH}/lib/mbedtls' '${mbedtls_2.src}'
'';
buildInputs = [
libusb1
pico-sdk
];
nativeBuildInputs = [
cmake
pkg-config
];
cmakeFlags = [ "-DPICO_SDK_PATH=${pico-sdk}/lib/pico-sdk" ];
postInstall = ''
install -Dm444 ../udev/99-picotool.rules -t $out/etc/udev/rules.d
'';
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "version";
doInstallCheck = true;
passthru = {
updateScript = gitUpdater { };
};
meta = {
description = "Tool for interacting with RP2040/RP2350 device(s) in BOOTSEL mode, or with an RP2040/RP2350 binary";
homepage = "https://github.com/raspberrypi/picotool";
changelog = "https://github.com/raspberrypi/picotool/releases/tag/${finalAttrs.version}";
mainProgram = "picotool";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ muscaln ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchFromGitHub,
autoconf,
automake,
libtool,
popt,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "picotts";
version = "0-unstable-2018-10-19";
src = fetchFromGitHub {
repo = "picotts";
owner = "naggety";
rev = "2f86050dc5da9ab68fc61510b594d8e6975c4d2d";
sha256 = "1k2mdv9llkh77jr4qr68yf0zgjqk87np35fgfmnc3rpdp538sccl";
};
nativeBuildInputs = [
autoconf
automake
];
buildInputs = [
libtool
popt
];
sourceRoot = "${finalAttrs.src.name}/pico";
preConfigure = "./autogen.sh";
meta = {
description = "Text to speech voice sinthesizer from SVox";
homepage = "https://github.com/naggety/picotts";
license = lib.licenses.asl20;
maintainers = [ lib.maintainers.canndrew ];
platforms = lib.platforms.linux;
mainProgram = "pico2wave";
};
})

View File

@@ -0,0 +1,55 @@
{
stdenv,
lib,
fetchFromGitea,
rustPlatform,
makeWrapper,
protobuf,
imagemagick,
ffmpeg,
exiftool,
nixosTests,
}:
rustPlatform.buildRustPackage rec {
pname = "pict-rs";
version = "0.5.19";
src = fetchFromGitea {
domain = "git.asonix.dog";
owner = "asonix";
repo = "pict-rs";
rev = "v${version}";
sha256 = "sha256-ifuN3Kb7Hhq8H/eoZcumO5yyrxOCA+nWQQvAdFk7w2Q=";
};
cargoHash = "sha256-wZRWusETLl32BJy5lza4Bvix500VkpXLUpQb5aO8yJ0=";
# needed for internal protobuf c wrapper library
PROTOC = "${protobuf}/bin/protoc";
PROTOC_INCLUDE = "${protobuf}/include";
nativeBuildInputs = [ makeWrapper ];
postInstall = ''
wrapProgram "$out/bin/pict-rs" \
--prefix PATH : "${
lib.makeBinPath [
imagemagick
ffmpeg
exiftool
]
}"
'';
passthru.tests = { inherit (nixosTests) pict-rs; };
meta = with lib; {
broken = stdenv.hostPlatform.isDarwin;
description = "Simple image hosting service";
mainProgram = "pict-rs";
homepage = "https://git.asonix.dog/asonix/pict-rs";
license = with licenses; [ agpl3Plus ];
maintainers = with maintainers; [ happysalada ];
};
}

View File

@@ -0,0 +1,29 @@
{
rustPlatform,
fetchFromGitHub,
lib,
}:
let
version = "0.1.1";
in
rustPlatform.buildRustPackage {
pname = "pid-fan-controller";
inherit version;
src = fetchFromGitHub {
owner = "zimward";
repo = "pid-fan-controller";
rev = version;
hash = "sha256-ALR9Qa0AhcGyc3+7x5CEG/72+bJzhaEoIvQNL+QjldY=";
};
cargoHash = "sha256-Y57VSheI94b43SwNCDdFvcNxzkA16KObBvzZ6ywYAyU=";
meta = {
description = "Service to provide closed-loop PID fan control";
homepage = "https://github.com/zimward/pid-fan-controller";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ zimward ];
platforms = lib.platforms.linux;
mainProgram = "pid-fan-controller";
};
}

View File

@@ -0,0 +1,27 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "pid1";
version = "0.1.3";
src = fetchFromGitHub {
owner = "fpco";
repo = "pid1-rs";
rev = "v${version}";
hash = "sha256-2dnQj3AQxedyq1YvHKt+lVXNEtuB5sMRSCqX9YeifzI=";
};
cargoHash = "sha256-ldHtmbLoSFVxb0B3Oj21UOFNSXwu8xAPhpE8jBqOwr4=";
meta = with lib; {
description = "Signal handling and zombie reaping for PID1 process";
homepage = "https://github.com/fpco/pid1-rs";
license = licenses.mit;
maintainers = with maintainers; [ psibi ];
mainProgram = "pid1";
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
rustPlatform,
fetchFromGitHub,
nix-update-script,
}:
rustPlatform.buildRustPackage {
pname = "piday25";
version = "0-unstable-2025-03-13";
src = fetchFromGitHub {
owner = "elkasztano";
repo = "piday25";
rev = "68b417a3016c58a2948cb3b39c9bde985d82bdb8";
hash = "sha256-58ZBRmB990Tp+/nkuRZA+8cjCRFUBzdzu93Sk5uvKOE=";
};
cargoHash = "sha256-3uztB5/VevFyEz3S+VlAUPgDrNDJcwaTnHuXXYAX+MY=";
# upstream does not have any tests
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
$out/bin/piday25 > result
diff -U3 --color=auto <(head -c12 result) <(echo -n 3.1415926535)
runHook postInstallCheck
'';
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch=main" ]; };
meta = {
description = "Multithreaded implementation of the Chudnovsky algorithm to calculate Pi";
homepage = "https://github.com/elkasztano/piday25";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ defelo ];
mainProgram = "piday25";
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
fetchFromGitHub,
stdenv,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pie-cli";
version = "2.0.1";
src = fetchFromGitHub {
owner = "Falconerd";
repo = "pie";
tag = finalAttrs.version;
hash = "sha256-qJaQyet6pjvPhBg6p0wxSIJtZE+P7A7XVqzAnvGn12E=";
};
buildPhase = ''
runHook preBuild
${stdenv.cc.targetPrefix}cc -o pie pie_cli/pie.c -lm
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm 755 pie $out/bin/pie
runHook postInstall
'';
meta = {
description = "Simple image format optimised for pixel art";
homepage = "https://github.com/Falconerd/pie";
maintainers = with lib.maintainers; [ sigmanificient ];
license = lib.licenses.mit;
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,47 @@
{
lib,
fetchFromGitHub,
flutter327,
gst_all_1,
}:
flutter327.buildFlutterApplication rec {
pname = "pied";
version = "0.3.1";
src = fetchFromGitHub {
owner = "Elleo";
repo = "pied";
tag = "v${version}";
hash = "sha256-STeSpto70b4m03ExikUrIwsHCqj1QH2jvVZ8G/ybw28=";
};
pubspecLock = lib.importJSON ./pubspec.lock.json;
patches = [ ./patches/add_piper_tts-path.patch ];
strictDeps = true;
buildInputs = [
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
];
postInstall = ''
install -D flatpak/com.mikeasoft.pied.desktop -t $out/share/applications
install -D flatpak/com.mikeasoft.pied.png -t $out/share/pixmaps
'';
meta = {
description = "Piper text-to-speech voice manager for use with Speech Dispatcher";
homepage = "https://github.com/Elleo/pied";
changelog = "https://github.com/Elleo/pied/releases/tag/${src.tag}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ genga898 ];
mainProgram = "pied";
badPlatforms = [
# Silently fails in dartConfigHook
lib.systems.inspect.patterns.isDarwin
];
};
}

View File

@@ -0,0 +1,29 @@
diff --git a/lib/main.dart b/lib/main.dart
index d677fc3..14c6fd9 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -52,9 +52,8 @@ class _MainPageState extends State<MainPage> {
void checkForPiper() async {
final Directory appDir = await getDataDir();
- Directory piperDir = Directory(path.join(appDir.path, "piper"));
setState(() {
- piperPresent = piperDir.existsSync();
+ piperPresent = true;
if (piperPresent) {
title = "Voice Selection";
}
diff --git a/lib/voice_selector.dart b/lib/voice_selector.dart
index 33944ed..66949e3 100644
--- a/lib/voice_selector.dart
+++ b/lib/voice_selector.dart
@@ -363,8 +363,7 @@ class _VoiceSelectorState extends State<VoiceSelector> {
configString =
configString.replaceAll(
"PIPER_PATH",
- path.join(appDir.path,
- "piper", "piper"));
+ "piper");
configString =
configString.replaceAll(
"MODEL_PATH",

View File

@@ -0,0 +1,922 @@
{
"packages": {
"archive": {
"dependency": "direct main",
"description": {
"name": "archive",
"sha256": "cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.6.1"
},
"args": {
"dependency": "transitive",
"description": {
"name": "args",
"sha256": "eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.4.2"
},
"async": {
"dependency": "transitive",
"description": {
"name": "async",
"sha256": "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.11.0"
},
"audioplayers": {
"dependency": "direct main",
"description": {
"name": "audioplayers",
"sha256": "c05c6147124cd63e725e861335a8b4d57300b80e6e92cea7c145c739223bbaef",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "5.2.1"
},
"audioplayers_android": {
"dependency": "transitive",
"description": {
"name": "audioplayers_android",
"sha256": "b00e1a0e11365d88576320ec2d8c192bc21f1afb6c0e5995d1c57ae63156acb5",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "4.0.3"
},
"audioplayers_darwin": {
"dependency": "transitive",
"description": {
"name": "audioplayers_darwin",
"sha256": "3034e99a6df8d101da0f5082dcca0a2a99db62ab1d4ddb3277bed3f6f81afe08",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "5.0.2"
},
"audioplayers_linux": {
"dependency": "transitive",
"description": {
"name": "audioplayers_linux",
"sha256": "60787e73fefc4d2e0b9c02c69885402177e818e4e27ef087074cf27c02246c9e",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.1.0"
},
"audioplayers_platform_interface": {
"dependency": "transitive",
"description": {
"name": "audioplayers_platform_interface",
"sha256": "365c547f1bb9e77d94dd1687903a668d8f7ac3409e48e6e6a3668a1ac2982adb",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "6.1.0"
},
"audioplayers_web": {
"dependency": "transitive",
"description": {
"name": "audioplayers_web",
"sha256": "22cd0173e54d92bd9b2c80b1204eb1eb159ece87475ab58c9788a70ec43c2a62",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "4.1.0"
},
"audioplayers_windows": {
"dependency": "transitive",
"description": {
"name": "audioplayers_windows",
"sha256": "9536812c9103563644ada2ef45ae523806b0745f7a78e89d1b5fb1951de90e1a",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.1.0"
},
"boolean_selector": {
"dependency": "transitive",
"description": {
"name": "boolean_selector",
"sha256": "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.1"
},
"characters": {
"dependency": "transitive",
"description": {
"name": "characters",
"sha256": "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.3.0"
},
"clock": {
"dependency": "transitive",
"description": {
"name": "clock",
"sha256": "cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.1.1"
},
"collection": {
"dependency": "transitive",
"description": {
"name": "collection",
"sha256": "ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.18.0"
},
"crypto": {
"dependency": "transitive",
"description": {
"name": "crypto",
"sha256": "ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.0.3"
},
"cupertino_icons": {
"dependency": "direct main",
"description": {
"name": "cupertino_icons",
"sha256": "d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.0.6"
},
"dbus": {
"dependency": "transitive",
"description": {
"name": "dbus",
"sha256": "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.7.10"
},
"fake_async": {
"dependency": "transitive",
"description": {
"name": "fake_async",
"sha256": "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.3.1"
},
"ffi": {
"dependency": "transitive",
"description": {
"name": "ffi",
"sha256": "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.3"
},
"file": {
"dependency": "transitive",
"description": {
"name": "file",
"sha256": "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "7.0.0"
},
"flutter": {
"dependency": "direct main",
"description": "flutter",
"source": "sdk",
"version": "0.0.0"
},
"flutter_highlight": {
"dependency": "transitive",
"description": {
"name": "flutter_highlight",
"sha256": "7b96333867aa07e122e245c033b8ad622e4e3a42a1a2372cbb098a2541d8782c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.7.0"
},
"flutter_lints": {
"dependency": "direct dev",
"description": {
"name": "flutter_lints",
"sha256": "a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.0.3"
},
"flutter_local_notifications": {
"dependency": "direct main",
"description": {
"name": "flutter_local_notifications",
"sha256": "6d11ea777496061e583623aaf31923f93a9409ef8fcaeeefdd6cd78bf4fe5bb3",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "16.1.0"
},
"flutter_local_notifications_linux": {
"dependency": "transitive",
"description": {
"name": "flutter_local_notifications_linux",
"sha256": "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "4.0.0+1"
},
"flutter_local_notifications_platform_interface": {
"dependency": "transitive",
"description": {
"name": "flutter_local_notifications_platform_interface",
"sha256": "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "7.0.0+1"
},
"flutter_test": {
"dependency": "direct dev",
"description": "flutter",
"source": "sdk",
"version": "0.0.0"
},
"flutter_web_plugins": {
"dependency": "transitive",
"description": "flutter",
"source": "sdk",
"version": "0.0.0"
},
"globbing": {
"dependency": "transitive",
"description": {
"name": "globbing",
"sha256": "4f89cfaf6fa74c9c1740a96259da06bd45411ede56744e28017cc534a12b6e2d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.0.0"
},
"gtk": {
"dependency": "transitive",
"description": {
"name": "gtk",
"sha256": "e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.0"
},
"highlight": {
"dependency": "transitive",
"description": {
"name": "highlight",
"sha256": "5353a83ffe3e3eca7df0abfb72dcf3fa66cc56b953728e7113ad4ad88497cf21",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.7.0"
},
"http": {
"dependency": "direct main",
"description": {
"name": "http",
"sha256": "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.1.0"
},
"http_parser": {
"dependency": "transitive",
"description": {
"name": "http_parser",
"sha256": "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "4.0.2"
},
"js": {
"dependency": "transitive",
"description": {
"name": "js",
"sha256": "f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.6.7"
},
"leak_tracker": {
"dependency": "transitive",
"description": {
"name": "leak_tracker",
"sha256": "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "10.0.5"
},
"leak_tracker_flutter_testing": {
"dependency": "transitive",
"description": {
"name": "leak_tracker_flutter_testing",
"sha256": "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.0.5"
},
"leak_tracker_testing": {
"dependency": "transitive",
"description": {
"name": "leak_tracker_testing",
"sha256": "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.0.1"
},
"lints": {
"dependency": "transitive",
"description": {
"name": "lints",
"sha256": "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.1"
},
"markdown": {
"dependency": "transitive",
"description": {
"name": "markdown",
"sha256": "acf35edccc0463a9d7384e437c015a3535772e09714cf60e07eeef3a15870dcd",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "7.1.1"
},
"markdown_widget": {
"dependency": "direct main",
"description": {
"name": "markdown_widget",
"sha256": "b69334a1dd633c32d688735d771ebaf5490f713cd00917cb52b53c14c2c09d81",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.3.1"
},
"matcher": {
"dependency": "transitive",
"description": {
"name": "matcher",
"sha256": "d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.12.16+1"
},
"material_color_utilities": {
"dependency": "transitive",
"description": {
"name": "material_color_utilities",
"sha256": "f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.11.1"
},
"meta": {
"dependency": "transitive",
"description": {
"name": "meta",
"sha256": "bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.15.0"
},
"path": {
"dependency": "direct main",
"description": {
"name": "path",
"sha256": "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.9.0"
},
"path_provider": {
"dependency": "direct main",
"description": {
"name": "path_provider",
"sha256": "a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.1"
},
"path_provider_android": {
"dependency": "transitive",
"description": {
"name": "path_provider_android",
"sha256": "e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.2.1"
},
"path_provider_foundation": {
"dependency": "transitive",
"description": {
"name": "path_provider_foundation",
"sha256": "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.3.1"
},
"path_provider_linux": {
"dependency": "transitive",
"description": {
"name": "path_provider_linux",
"sha256": "f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.2.1"
},
"path_provider_platform_interface": {
"dependency": "transitive",
"description": {
"name": "path_provider_platform_interface",
"sha256": "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.1"
},
"path_provider_windows": {
"dependency": "transitive",
"description": {
"name": "path_provider_windows",
"sha256": "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.2.1"
},
"petitparser": {
"dependency": "transitive",
"description": {
"name": "petitparser",
"sha256": "cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "5.4.0"
},
"platform": {
"dependency": "transitive",
"description": {
"name": "platform",
"sha256": "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.1.3"
},
"plugin_platform_interface": {
"dependency": "transitive",
"description": {
"name": "plugin_platform_interface",
"sha256": "f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.7"
},
"posix": {
"dependency": "direct main",
"description": {
"name": "posix",
"sha256": "3ad26924254fd2354b0e2b95fc8b45ac392ad87434f8e64807b3a1ac077f2256",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "5.0.0"
},
"quiver": {
"dependency": "transitive",
"description": {
"name": "quiver",
"sha256": "b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.2.1"
},
"scroll_to_index": {
"dependency": "transitive",
"description": {
"name": "scroll_to_index",
"sha256": "b707546e7500d9f070d63e5acf74fd437ec7eeeb68d3412ef7b0afada0b4f176",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.0.1"
},
"shared_preferences": {
"dependency": "direct main",
"description": {
"name": "shared_preferences",
"sha256": "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.3.2"
},
"shared_preferences_android": {
"dependency": "transitive",
"description": {
"name": "shared_preferences_android",
"sha256": "3b9febd815c9ca29c9e3520d50ec32f49157711e143b7a4ca039eb87e8ade5ab",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.3.3"
},
"shared_preferences_foundation": {
"dependency": "transitive",
"description": {
"name": "shared_preferences_foundation",
"sha256": "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.5.3"
},
"shared_preferences_linux": {
"dependency": "transitive",
"description": {
"name": "shared_preferences_linux",
"sha256": "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.4.1"
},
"shared_preferences_platform_interface": {
"dependency": "transitive",
"description": {
"name": "shared_preferences_platform_interface",
"sha256": "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.4.1"
},
"shared_preferences_web": {
"dependency": "transitive",
"description": {
"name": "shared_preferences_web",
"sha256": "d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.4.2"
},
"shared_preferences_windows": {
"dependency": "transitive",
"description": {
"name": "shared_preferences_windows",
"sha256": "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.4.1"
},
"sky_engine": {
"dependency": "transitive",
"description": "flutter",
"source": "sdk",
"version": "0.0.99"
},
"source_span": {
"dependency": "transitive",
"description": {
"name": "source_span",
"sha256": "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.10.0"
},
"sprintf": {
"dependency": "transitive",
"description": {
"name": "sprintf",
"sha256": "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "7.0.0"
},
"stack_trace": {
"dependency": "transitive",
"description": {
"name": "stack_trace",
"sha256": "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.11.1"
},
"stream_channel": {
"dependency": "transitive",
"description": {
"name": "stream_channel",
"sha256": "ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.2"
},
"string_scanner": {
"dependency": "transitive",
"description": {
"name": "string_scanner",
"sha256": "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.2.0"
},
"synchronized": {
"dependency": "transitive",
"description": {
"name": "synchronized",
"sha256": "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.1.0"
},
"system_info2": {
"dependency": "direct main",
"description": {
"name": "system_info2",
"sha256": "65206bbef475217008b5827374767550a5420ce70a04d2d7e94d1d2253f3efc9",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "4.0.0"
},
"term_glyph": {
"dependency": "transitive",
"description": {
"name": "term_glyph",
"sha256": "a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.2.1"
},
"test_api": {
"dependency": "transitive",
"description": {
"name": "test_api",
"sha256": "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.7.2"
},
"timezone": {
"dependency": "transitive",
"description": {
"name": "timezone",
"sha256": "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.9.2"
},
"typed_data": {
"dependency": "transitive",
"description": {
"name": "typed_data",
"sha256": "facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.3.2"
},
"url_launcher": {
"dependency": "direct main",
"description": {
"name": "url_launcher",
"sha256": "47e208a6711459d813ba18af120d9663c20bdf6985d6ad39fe165d2538378d27",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "6.1.14"
},
"url_launcher_android": {
"dependency": "transitive",
"description": {
"name": "url_launcher_android",
"sha256": "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "6.2.0"
},
"url_launcher_ios": {
"dependency": "transitive",
"description": {
"name": "url_launcher_ios",
"sha256": "bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "6.2.1"
},
"url_launcher_linux": {
"dependency": "transitive",
"description": {
"name": "url_launcher_linux",
"sha256": "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.1.0"
},
"url_launcher_macos": {
"dependency": "transitive",
"description": {
"name": "url_launcher_macos",
"sha256": "b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.1.0"
},
"url_launcher_platform_interface": {
"dependency": "transitive",
"description": {
"name": "url_launcher_platform_interface",
"sha256": "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.2.0"
},
"url_launcher_web": {
"dependency": "transitive",
"description": {
"name": "url_launcher_web",
"sha256": "ba140138558fcc3eead51a1c42e92a9fb074a1b1149ed3c73e66035b2ccd94f2",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.0.19"
},
"url_launcher_windows": {
"dependency": "transitive",
"description": {
"name": "url_launcher_windows",
"sha256": "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "3.1.0"
},
"uuid": {
"dependency": "transitive",
"description": {
"name": "uuid",
"sha256": "df5a4d8f22ee4ccd77f8839ac7cb274ebc11ef9adcce8b92be14b797fe889921",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "4.2.1"
},
"vector_math": {
"dependency": "transitive",
"description": {
"name": "vector_math",
"sha256": "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "2.1.4"
},
"visibility_detector": {
"dependency": "transitive",
"description": {
"name": "visibility_detector",
"sha256": "dd5cc11e13494f432d15939c3aa8ae76844c42b723398643ce9addb88a5ed420",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.4.0+2"
},
"vm_service": {
"dependency": "transitive",
"description": {
"name": "vm_service",
"sha256": "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "14.2.5"
},
"web": {
"dependency": "transitive",
"description": {
"name": "web",
"sha256": "cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.1.0"
},
"win32": {
"dependency": "direct overridden",
"description": {
"name": "win32",
"sha256": "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "5.5.4"
},
"xdg_desktop_portal": {
"dependency": "direct main",
"description": {
"name": "xdg_desktop_portal",
"sha256": "8a630ea1ebb7d1a9733d0cf6d159839f427d10322776de0c93e7951f62975c8d",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "0.1.12"
},
"xdg_directories": {
"dependency": "transitive",
"description": {
"name": "xdg_directories",
"sha256": "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.0.3"
},
"xml": {
"dependency": "transitive",
"description": {
"name": "xml",
"sha256": "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "6.3.0"
},
"yaru": {
"dependency": "direct main",
"description": {
"name": "yaru",
"sha256": "037219db9ffe757eae0d929cb9dc1a8b27af9850dc6c0d89ecf597dc4f78a5b6",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "1.2.0"
}
},
"sdks": {
"dart": ">=3.5.0 <4.0.0",
"flutter": ">=3.24.0"
}
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchurl,
libxcrypt,
versionCheckHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pies";
version = "1.8";
src = fetchurl {
url = "mirror://gnu/pies/pies-${finalAttrs.version}.tar.bz2";
hash = "sha256-ZSi00WmC6il4+aSohqFKrKjtp6xFXYE7IIRGVwFmHWw=";
};
buildInputs = [ libxcrypt ];
patches = [ ./stdlib.patch ];
postPatch = ''
substituteInPlace configure \
--replace-fail "gl_cv_func_memchr_works=\"guessing no\"" "gl_cv_func_memchr_works=yes"
'';
configureFlags = [ "--sysconfdir=/etc" ];
hardeningDisable = [ "format" ];
doCheck = true;
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
meta = {
description = "Program invocation and execution supervisor";
longDescription = ''
The name Pies (pronounced "p-yes") stands for Program Invocation and
Execution Supervisor. This utility starts and controls execution of
external programs, called components. Each component is a
stand-alone program, which is executed in the foreground. Upon
startup, pies reads the list of components from its configuration
file, starts them, and remains in the background, controlling their
execution. If any of the components terminates, the default action
of Pies is to restart it. However, it can also be programmed to
perform a variety of another actions such as, e.g., sending mail
notifications to the system administrator, invoking another external
program, etc.
Pies can be used for a wide variety of tasks. Its most obious use
is to put in backgound a program which normally cannot detach itself
from the controlling terminal, such as, e.g., minicom. It can
launch and control components of some complex system, such as
Jabberd or MeTA1 (and it offers much more control over them than the
native utilities). Finally, it can replace the inetd utility!
'';
homepage = "https://www.gnu.org/software/pies/";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.gnu ++ lib.platforms.linux;
broken = stdenv.hostPlatform.system == "aarch64-linux";
maintainers = [ ];
};
})

View File

@@ -0,0 +1,24 @@
diff --git a/src/pies.c b/src/pies.c
index 9355d50..9fe6109 100644
--- a/src/pies.c
+++ b/src/pies.c
@@ -19,6 +19,7 @@
#include <configmake.h>
#include "meta1parse.h"
#include "grecsasrt.h"
+#include <stdlib.h>
int preprocess_only; /* Preprocess config, do nothing more */
int lint_mode; /* Test configuration syntax and exit */
diff --git a/src/piesctl.c b/src/piesctl.c
index a0ac967..fd6c3e2 100644
--- a/src/piesctl.c
+++ b/src/piesctl.c
@@ -14,6 +14,7 @@
You should have received a copy of the GNU General Public License
along with GNU Pies. If not, see <http://www.gnu.org/licenses/>. */
+#include <stdlib.h>
#include <config.h>
#include <sys/types.h>
#include <sys/socket.h>

View File

@@ -0,0 +1,45 @@
{
lib,
fetchFromGitHub,
unstableGitUpdater,
stdenv,
openssl,
}:
stdenv.mkDerivation rec {
pname = "pietrasanta-traceroute";
version = "0.0.5-unstable-2024-09-06";
src = fetchFromGitHub {
owner = "catchpoint";
repo = "Networking.traceroute";
rev = "e4a5cf94dccd646e03b9b75a762e9b014e3a3128";
hash = "sha256-5FbuITewgSh6UFUU1vttkokk8uZ2IrzkDwsCuWJPKlM=";
};
passthru.updateScript = unstableGitUpdater { };
buildInputs = [ openssl ];
makeFlags = [ "prefix=$(out)" ];
meta = with lib; {
description = "ECN-aware version of traceroute";
longDescription = ''
An enhanced version of Dmitry Butskoy's traceroute, developed by Catchpoint.
- Support for "TCP InSession": opens a TCP connection with the destination and sends TCP probes with
increasing TTL values, to prevent false packet loss introduced by firewalls, and ensure packets
follow a single flow, akin to a normal TCP session.
- Similar QUIC-based traceroute.
- Enhanced ToS (DSCP/ECN) field report.
'';
homepage = "https://github.com/catchpoint/Networking.traceroute/";
changelog = "https://github.com/catchpoint/Networking.traceroute/blob/${src.rev}/ChangeLog";
license = with licenses; [
gpl2Only
lgpl21Only
];
mainProgram = "traceroute";
maintainers = with maintainers; [ nicoo ];
platforms = platforms.all;
broken = stdenv.hostPlatform.isDarwin;
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
python3Packages,
fetchPypi,
addBinToPathHook,
}:
python3Packages.buildPythonApplication rec {
pname = "pifpaf";
version = "3.3.0";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-xXkMj1sP1xXf6Ad/71BFbq8SHz/uHcaSqv6RQN0Ca1o=";
};
build-system = with python3Packages; [
setuptools
setuptools-scm
];
dependencies = with python3Packages; [
click
daiquiri
fixtures
jinja2
pbr
psutil
xattr
];
nativeCheckInputs =
with python3Packages;
[
requests
testtools
]
++ [
addBinToPathHook
];
pythonImportsCheck = [ "pifpaf" ];
meta = with lib; {
description = "Suite of tools and fixtures to manage daemons for testing";
mainProgram = "pifpaf";
homepage = "https://github.com/jd/pifpaf";
license = licenses.asl20;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchurl,
makeWrapper,
hadoop,
jre,
bash,
}:
stdenv.mkDerivation rec {
pname = "pig";
version = "0.17.0";
src = fetchurl {
url = "mirror://apache/pig/${pname}-${version}/${pname}-${version}.tar.gz";
sha256 = "1wwpg0w47f49rnivn2d26vrxgyfl9gpqx3vmzbl5lhx6x5l3fqbd";
};
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
mkdir -p $out
mv * $out
# no need for the windows batch script
rm $out/bin/pig.cmd $out/bin/pig.py
for n in $out/{bin,sbin}"/"*; do
wrapProgram $n \
--prefix PATH : "${
lib.makeBinPath [
jre
bash
]
}" \
--set JAVA_HOME "${jre}" --set HADOOP_PREFIX "${hadoop}"
done
'';
meta = with lib; {
homepage = "https://pig.apache.org/";
description = "High-level language for Apache Hadoop";
mainProgram = "pig";
license = licenses.asl20;
longDescription = ''
Apache Pig is a platform for analyzing large data sets that consists of a
high-level language for expressing data analysis programs, coupled with
infrastructure for evaluating these programs. The salient property of Pig
programs is that their structure is amenable to substantial parallelization,
which in turns enables them to handle very large data sets.
'';
platforms = platforms.linux;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "pigeon";
version = "1.3.0";
src = fetchFromGitHub {
owner = "mna";
repo = "pigeon";
rev = "v${version}";
hash = "sha256-rEkeB5NI51dsLOxd9RnJWmfUP78owOJl6j9t3nz277s=";
};
vendorHash = "sha256-vaCgvj/n8MuktaZ2+tQVlQW0LrptQkEQK2qM+YwXXhg=";
proxyVendor = true;
subPackages = [ "." ];
doCheck = false;
meta = {
homepage = "https://github.com/mna/pigeon";
description = "PEG parser generator for Go";
mainProgram = "pigeon";
maintainers = with lib.maintainers; [ zimbatm ];
license = with lib.licenses; [ bsd3 ];
};
}

View File

@@ -0,0 +1,101 @@
{
stdenv,
fetchFromGitLab,
lib,
cmake,
glslang,
libffi,
libgbm,
libglut,
libGL,
libGLU,
libglvnd,
makeWrapper,
ninja,
pkg-config,
python3,
vulkan-loader,
waffle,
wayland,
wayland-protocols,
wayland-scanner,
libXau,
libX11,
libXrender,
libxcb,
libxkbcommon,
mesa,
}:
stdenv.mkDerivation {
pname = "piglit";
version = "unstable-2025-04-15";
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "mesa";
repo = "piglit";
rev = "d06f7bac988e67db53cbc05dc0b096b00856ab93";
hash = "sha256-bH9NjLEldlZwylq7S0q2vC5IQhUej0xZ6wD+mrWBK5A=";
};
buildInputs = [
glslang
libffi
libgbm
libglut
libGL
libGLU
libglvnd
libXau
libX11
libXrender
libxcb
libxkbcommon
(python3.withPackages (
ps: with ps; [
mako
numpy
]
))
vulkan-loader
waffle
wayland
wayland-protocols
wayland-scanner
];
nativeBuildInputs = [
cmake
makeWrapper
ninja
pkg-config
];
# Find data dir: piglit searches for the data directory in some places, however as it is wrapped,
# it search in ../lib/.piglit-wrapped, we just replace the script name with "piglit" again.
prePatch = ''
substituteInPlace piglit \
--replace 'script_basename_noext = os.path.splitext(os.path.basename(__file__))[0]' 'script_basename_noext = "piglit"'
'';
postInstall = ''
wrapProgram $out/bin/piglit \
--prefix LD_LIBRARY_PATH : ${
lib.makeLibraryPath [
libGL
libglvnd
]
} \
--prefix PATH : "${waffle}/bin"
'';
meta = with lib; {
description = "OpenGL test suite, and test-suite runner";
homepage = "https://gitlab.freedesktop.org/mesa/piglit";
license = licenses.free; # custom license. See COPYING in the source repo.
inherit (mesa.meta) platforms;
maintainers = with maintainers; [ Flakebi ];
mainProgram = "piglit";
};
}

View File

@@ -0,0 +1,69 @@
{
lib,
python3Packages,
fetchFromGitHub,
ninja,
meson,
pkg-config,
wrapGAppsHook4,
glib,
desktop-file-utils,
appstream-glib,
gobject-introspection,
gtk4,
libadwaita,
nix-update-script,
}:
let
version = "0.5.1";
in
python3Packages.buildPythonApplication {
pname = "pigment";
inherit version;
pyproject = false;
src = fetchFromGitHub {
owner = "Jeffser";
repo = "Pigment";
tag = version;
hash = "sha256-tWWDX1njnI1FOZhTUE1i+5pqZeLZFzHBrfoGFHCKnX0=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook4
glib
desktop-file-utils
appstream-glib
gobject-introspection
];
pythonPath = with python3Packages; [
pygobject3
colorthief
pydbus
];
buildInputs = [
gtk4
libadwaita
];
dontWrapGApps = true;
makeWrapperArgs = [ "\${gappsWrapperArgs[@]}" ];
passthru.updateScript = nix-update-script { };
meta = {
description = "Extract color palettes from your images";
homepage = "https://jeffser.com/pigment/";
downloadPage = "https://github.com/Jeffser/Pigment";
changelog = "https://github.com/Jeffser/Pigment/releases/tag/${version}";
license = lib.licenses.gpl3Plus;
mainProgram = "pigment";
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.awwpotato ];
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
buildPythonPackage ? null,
}:
let
mkDerivation = if isNull buildPythonPackage then stdenv.mkDerivation else buildPythonPackage;
in
mkDerivation rec {
pname = "pigpio";
version = "79";
format = if buildPythonPackage == null then null else "setuptools";
src = fetchFromGitHub {
owner = "joan2937";
repo = "pigpio";
tag = "v${version}";
hash = "sha256-Z+SwUlBbtWtnbjTe0IghR3gIKS43ZziN0amYtmXy7HE=";
};
nativeBuildInputs = [
cmake
];
meta = {
description = "C library for the Raspberry which allows control of the General Purpose Input Outputs (GPIO)";
homepage = "https://github.com/joan2937/pigpio";
license = lib.licenses.unlicense;
maintainers = with lib.maintainers; [ doronbehar ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitHub,
zlib,
util-linux,
}:
stdenv.mkDerivation rec {
pname = "pigz";
version = "2.8";
src = fetchFromGitHub {
owner = "madler";
repo = "pigz";
tag = "v${version}";
sha256 = "sha256-PzdxyO4mCg2jE/oBk1MH+NUdWM95wIIIbncBg71BkmQ=";
};
enableParallelBuilding = true;
buildInputs = [ zlib ] ++ lib.optional stdenv.hostPlatform.isLinux util-linux;
makeFlags = [ "CC=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc" ];
doCheck = stdenv.hostPlatform.isLinux;
checkTarget = "tests";
installPhase = ''
runHook preInstall
install -Dm755 pigz "$out/bin/pigz"
ln -s pigz "$out/bin/unpigz"
install -Dm755 pigz.1 "$out/share/man/man1/pigz.1"
ln -s pigz.1 "$out/share/man/man1/unpigz.1"
install -Dm755 pigz.pdf "$out/share/doc/pigz/pigz.pdf"
runHook postInstall
'';
meta = with lib; {
homepage = "https://www.zlib.net/pigz/";
description = "Parallel implementation of gzip for multi-core machines";
mainProgram = "pigz";
maintainers = [ ];
license = licenses.zlib;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,45 @@
From 14311f18ae9427a0baa1e0cb67198580d9d2dc69 Mon Sep 17 00:00:00 2001
From: averyvigolo <avery@averyv.me>
Date: Sun, 24 Aug 2025 18:35:37 +0100
Subject: [PATCH] Only use redirect_root_handler if webhome is set (fixes
#2518)
This fixes an infinite redirect on the home page when authentication is enabled.
The redirects are caused by XHR calls to the API, which receive a 401 response, and
the error handlers simply reload the page.
If webhome is not set, the default request handler should be used to properly
handle authentication. So, conditionally enable redirect_root_handler, if
webhome is not empty or `/`. This fixes the problem, as there's an immediate
redirect to /login, before any XHR calls.
Remove the initial fix in https://github.com/pi-hole/FTL/pull/2521, as it is no
longer necessary. That fix involved checking in redirect_root_handler, if the
redirect destination is the same as the request URI.
Signed-off-by: averyvigolo <avery@averyv.me>
---
src/webserver/webserver.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/webserver/webserver.c b/src/webserver/webserver.c
index e0999d230..c3e32a35c 100644
--- a/src/webserver/webserver.c
+++ b/src/webserver/webserver.c
@@ -720,7 +714,14 @@ void http_init(void)
// prefix should be stripped away by the reverse proxy
mg_set_request_handler(ctx, "/api", api_handler, NULL);
- mg_set_request_handler(ctx, "/$", redirect_root_handler, NULL);
+ if(strcmp(prefix_webhome, "/") == 0 || strlen(prefix_webhome) == 0)
+ {
+ log_debug(DEBUG_API, "Not redirecting root since webhome is '%s'",
+ prefix_webhome);
+ } else {
+ // Redirect requests to / to the webhome path.
+ mg_set_request_handler(ctx, "/$", redirect_root_handler, NULL);
+ }
if(strcmp(config.webserver.paths.webhome.v.s, "/") == 0 &&
config.dns.blocking.mode.v.blocking_mode == MODE_IP)

View File

@@ -0,0 +1,92 @@
{
lib,
stdenv,
nixosTests,
fetchFromGitHub,
cmake,
gmp,
libidn2,
libunistring,
mbedtls,
ncurses,
nettle,
readline,
xxd,
iproute2,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pihole-ftl";
version = "6.2.3";
src = fetchFromGitHub {
owner = "pi-hole";
repo = "FTL";
tag = "v${finalAttrs.version}";
hash = "sha256-d1kpkBKuc30oIT1dRac8gkzh36Yyg80cizNRbyZ4424=";
};
patches = [
# https://github.com/pi-hole/FTL/pull/2610: Fix authentication redirect when webhome is /
./disable-redirect-root.patch
];
nativeBuildInputs = [
cmake
xxd
];
buildInputs = [
gmp
libidn2
libunistring
mbedtls
ncurses
nettle
readline
];
cmakeFlags = [
(lib.cmakeBool "STATIC" stdenv.hostPlatform.isStatic)
];
postPatch = ''
substituteInPlace src/version.c.in \
--replace-quiet "@GIT_VERSION@" "v${finalAttrs.version}" \
--replace-quiet "@GIT_DATE@" "1970-01-01" \
--replace-quiet "@GIT_BRANCH@" "master" \
--replace-quiet "@GIT_TAG@" "v${finalAttrs.version}" \
--replace-quiet "@GIT_HASH@" "builtfromreleasetarball"
# Remove hard-coded absolute path to the pihole script, rely on it being provided by $PATH
# Use execvp instead of execv so PATH is followed
substituteInPlace src/api/action.c \
--replace-fail "/usr/local/bin/pihole" "pihole" \
--replace-fail "execv" "execvp"
substituteInPlace src/database/network-table.c \
--replace-fail "ip neigh show" "${lib.getExe' iproute2 "ip"} neigh show" \
--replace-fail "ip address show" "${lib.getExe' iproute2 "ip"} address show"
'';
installPhase = ''
runHook preInstall
install -Dm 555 -t $out/bin pihole-FTL
runHook postInstall
'';
passthru.settingsTemplate = ./pihole.toml;
passthru.tests = nixosTests.pihole-ftl;
meta = {
description = "Pi-hole FTL engine";
homepage = "https://github.com/pi-hole/FTL";
changelog = "https://github.com/pi-hole/FTL/releases/tag/v${finalAttrs.version}";
license = lib.licenses.eupl12;
maintainers = with lib.maintainers; [ averyvigolo ];
platforms = lib.platforms.linux;
mainProgram = "pihole-FTL";
};
})

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,55 @@
{
stdenv,
lib,
nixosTests,
fetchFromGitHub,
pihole,
pihole-ftl,
procps,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pihole-web";
version = "6.2.1";
src = fetchFromGitHub {
owner = "pi-hole";
repo = "web";
tag = "v${finalAttrs.version}";
hash = "sha256-pfKWOb+DJSRy9r2igx8voRpAPHKshVqYMoxOwoBWZLA=";
};
propagatedBuildInputs = [
pihole
pihole-ftl
procps
];
installPhase = ''
runHook preInstall
mkdir -p $out/share
cp -r -t $out/share *.lp img/ scripts/ style/ vendor/
mkdir -p $out/share/doc/$name/
cp README.md $out/share/doc/$name/
runHook postInstall
'';
passthru.tests = nixosTests.pihole-ftl;
meta = {
description = "Pi-hole web dashboard displaying stats and more";
homepage = "https://github.com/pi-hole/web";
changelog = "https://github.com/pi-hole/FTL/releases/tag/v${finalAttrs.version}";
longDescription = ''
Pi-hole's Web interface (based off of AdminLTE) provides a central
location to manage your Pi-hole and review the statistics generated by
FTLDNS.
'';
license = lib.licenses.eupl12;
maintainers = with lib.maintainers; [ averyvigolo ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,32 @@
From 833856bd77dc6ea77557ab0659c1459bee393653 Mon Sep 17 00:00:00 2001
From: averyv <avery@averyv.me>
Date: Sat, 6 Sep 2025 17:51:48 +0100
Subject: [PATCH 1/2] Remove sudo
Rely on polkit and sensible permissions
---
pihole | 8 --------
1 file changed, 8 deletions(-)
diff --git a/pihole b/pihole
index 7b5e3eb..b00617e 100755
--- a/pihole
+++ b/pihole
@@ -570,14 +570,6 @@ if [[ -z ${USER} ]]; then
USER=$(whoami)
fi
-# Check if the current user is not root and if the command
-# requires root. If so, exit with an error message.
-if [[ $EUID -ne 0 && need_root -eq 1 ]];then
- echo -e " ${CROSS} The Pi-hole command requires root privileges, try:"
- echo -e " ${COL_GREEN}sudo pihole $*${COL_NC}"
- exit 1
-fi
-
# Handle redirecting to specific functions based on arguments
case "${1}" in
"allow" | "allowlist" ) listFunc "$@";;
--
2.50.1

View File

@@ -0,0 +1,67 @@
From d72475d713a8eecd1476bc5bb4acfb0448d5abad Mon Sep 17 00:00:00 2001
From: averyv <avery@averyv.me>
Date: Sat, 6 Sep 2025 18:04:11 +0100
Subject: [PATCH 2/2] Remove unsupported commands
Remove some unsupported maintenance commands, particularly the ones which
reinstall, update, and uninstall pihole. This is managed by NixOS, after all.
---
pihole | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/pihole b/pihole
index b00617e..a3c2e20 100755
--- a/pihole
+++ b/pihole
@@ -92,6 +92,7 @@ debugFunc() {
}
flushFunc() {
+ unsupportedFunc
"${PI_HOLE_SCRIPT_DIR}"/piholeLogFlush.sh "$@"
exit 0
}
@@ -102,6 +103,7 @@ arpFunc() {
}
updatePiholeFunc() {
+ unsupportedFunc
if [ -n "${DOCKER_VERSION}" ]; then
unsupportedFunc
else
@@ -137,6 +139,7 @@ chronometerFunc() {
uninstallFunc() {
+ unsupportedFunc
if [ -n "${DOCKER_VERSION}" ]; then
unsupportedFunc
else
@@ -405,6 +408,7 @@ tailFunc() {
}
piholeCheckoutFunc() {
+ unsupportedFunc
if [ -n "${DOCKER_VERSION}" ]; then
echo -e "${CROSS} Function not supported in Docker images"
echo "Please build a custom image following the steps at"
@@ -460,13 +464,14 @@ tricorderFunc() {
}
updateCheckFunc() {
+ unsupportedFunc
"${PI_HOLE_SCRIPT_DIR}"/updatecheck.sh "$@"
exit 0
}
unsupportedFunc(){
- echo "Function not supported in Docker images"
- exit 0
+ echo "Function not supported in NixOS"
+ exit 1
}
helpFunc() {
--
2.50.1

View File

@@ -0,0 +1,258 @@
{
lib,
nixosTests,
fetchFromGitHub,
makeBinaryWrapper,
installShellFiles,
bash,
coreutils,
curl,
dig,
gawk,
getent,
glibc,
gnugrep,
gnused,
iproute2,
jq,
killall,
libidn2,
locale,
ncurses,
netcat,
net-tools,
pihole-ftl,
procps,
resholve,
sqlite,
systemd,
util-linux,
stateDir ? "/etc/pihole",
}:
(resholve.mkDerivation rec {
pname = "pihole";
version = "6.1.4";
src = fetchFromGitHub {
owner = "pi-hole";
repo = "pi-hole";
tag = "v${version}";
hash = "sha256-2B2GUJKt4jHEjQLBx96FRuHpnLCTzE4UPDaeQvnDONc=";
};
patches = [
# Remove use of sudo in the original script, prefer to use a wrapper
./0001-Remove-sudo.patch
# Disable unsupported subcommands, particularly those for imperatively installing/upgrading Pi-hole
./0002-Remove-unsupported-commands.patch
];
nativeBuildInputs = [
makeBinaryWrapper
installShellFiles
];
installPhase = ''
runHook preInstall
readonly scriptsDir=$out/share/pihole
install -Dm 555 -t $out/bin pihole
install -Dm 555 -t $scriptsDir/advanced/Scripts gravity.sh
# The installation script is sourced by advanced/Scripts/piholeARPTable.sh etc
cp --parents -r -t $scriptsDir/ 'automated install/' advanced/{Scripts,Templates}/
installShellCompletion --bash --name pihole.bash \
advanced/bash-completion/pihole
runHook postInstall
'';
solutions.default =
let
out = placeholder "out";
scriptsDir = "${out}/share/pihole/advanced/Scripts";
in
{
scripts =
let
relativeScripts = "share/pihole/advanced/Scripts";
in
[
"bin/pihole"
"${relativeScripts}/api.sh"
"${relativeScripts}/database_migration/gravity-db.sh"
"${relativeScripts}/gravity.sh"
"${relativeScripts}/list.sh"
"${relativeScripts}/piholeARPTable.sh"
"${relativeScripts}/piholeCheckout.sh"
"${relativeScripts}/piholeDebug.sh"
"${relativeScripts}/piholeLogFlush.sh"
"${relativeScripts}/query.sh"
"${relativeScripts}/update.sh"
"${relativeScripts}/updatecheck.sh"
"${relativeScripts}/utils.sh"
"${relativeScripts}/version.sh"
];
interpreter = lib.getExe bash;
inputs = [
# TODO: see if these inputs can help resholving
"bin"
"share/pihole/advanced/Scripts"
bash
coreutils
curl
dig
gawk
getent
gnugrep
gnused
iproute2
jq
killall
libidn2
locale
ncurses
netcat
net-tools
pihole-ftl
procps
sqlite
systemd
util-linux
];
fake = {
source = [
"/etc/os-release"
"/etc/pihole/versions"
"/etc/pihole/setupVars.conf"
];
external = [
# Used by chronometer.sh to get GPU information on Raspberry Pis
"sudo"
"vcgencmd"
# used by the checkout and update scripts, which are patched out
"git"
"getenforce"
"firewall-cmd"
# Conditionally used in Docker builds
"service"
"lighttpd"
# Used in piholeLogFlush.sh
"/usr/sbin/logrotate"
# Used by teleporter in webpage.sh
"php"
];
};
fix = {
"$PI_HOLE_BIN_DIR" = [ "${out}/bin" ];
"$PI_HOLE_FILES_DIR" = [ "${out}/share/pihole" ];
"$PI_HOLE_INSTALL_DIR" = [ scriptsDir ];
"$PI_HOLE_LOCAL_REPO" = [ "${out}/share/pihole" ];
"$PI_HOLE_SCRIPT_DIR" = [ scriptsDir ];
"$colfile" = [ "${scriptsDir}/COL_TABLE" ];
"$coltable" = [ "${scriptsDir}/COL_TABLE" ];
"$PIHOLE_COLTABLE_FILE" = [ "${scriptsDir}/COL_TABLE" ];
"$utilsfile" = [ "${scriptsDir}/utils.sh" ];
"$apifile" = [ "${scriptsDir}/api.sh" ];
"$piholeGitDir" = [ "${out}/share/pihole" ];
"$PIHOLE_COMMAND" = [ "pihole" ];
};
keep = {
source = [
"$pihole_FTL" # Global config file
"$setupVars" # Global config file
"$PIHOLE_SETUP_VARS_FILE"
"$versionsfile" # configuration file, doesn't exist on NixOS
"${out}/share/pihole/automated install/basic-install.sh"
"${scriptsDir}/COL_TABLE"
"${scriptsDir}/database_migration/gravity-db.sh"
"${scriptsDir}/gravity.sh"
"${scriptsDir}/piholeCheckout.sh"
"${scriptsDir}/utils.sh"
"${scriptsDir}/api.sh"
"/etc/os-release"
"/etc/pihole/versions"
"/etc/pihole/setupVars.conf"
"$cachedVersions"
];
"$PIHOLE_SETUP_VARS_FILE" = true;
"$PKG_INSTALL" = true; # System package manager, patched out
"$PKG_MANAGER" = true; # System package manager, patched out
"$cmd" = true; # ping or ping6
"$program_name" = true; # alias for $1
"$svc" = true; # dynamic restart command
"${out}/bin/pihole" = true;
"${scriptsDir}/api.sh" = true;
"${scriptsDir}/gravity.sh" = true;
"${scriptsDir}/list.sh" = true;
"${scriptsDir}/piholeARPTable.sh" = true;
"${scriptsDir}/piholeDebug.sh" = true;
"${scriptsDir}/piholeLogFlush.sh" = true;
"${scriptsDir}/query.sh" = true;
"${scriptsDir}/uninstall.sh" = true;
"${scriptsDir}/update.sh" = true;
"${scriptsDir}/updatecheck.sh" = true;
"${scriptsDir}/version.sh" = true;
# boolean variables
"$addmode" = true;
"$noReloadRequested" = true;
"$oldAvail" = true;
"$verbose" = true;
"$web" = true;
"$wildcard" = true;
# Note that this path needs to be quoted due to the whitespace.
# TODO: raise upstream resholve issue. pihole scripts specify this path
# both quoted and escaped. Resholve apparently requires matching the
# literal path, so we need to provide a version with and without the
# backslash.
"'${out}/share/pihole/automated\\ install/basic-install.sh'" = true;
"'${out}/share/pihole/automated install/basic-install.sh'" = true;
"/etc/.pihole" = true; # Patched with an override
"/etc/os-release" = true;
"/etc/pihole/versions" = true;
"/etc/pihole/setupVars.conf" = true;
};
execer = [
"cannot:${pihole-ftl}/bin/pihole-FTL"
"cannot:${iproute2}/bin/ip"
"cannot:${systemd}/bin/systemctl"
"cannot:${glibc.bin}/bin/ldd"
"cannot:${out}/bin/pihole"
];
};
meta = {
description = "Black hole for Internet advertisements";
homepage = "https://pi-hole.net";
changelog = "https://github.com/pi-hole/pi-hole/releases/tag/v${version}";
license = lib.licenses.eupl12;
maintainers = with lib.maintainers; [ averyvigolo ];
platforms = lib.platforms.linux;
mainProgram = "pihole";
};
passthru.tests = nixosTests.pihole-ftl;
passthru = {
inherit stateDir;
};
}).overrideAttrs
(old: {
# Resholve can't fix the hardcoded absolute paths, so substitute them before resholving
preFixup = ''
scriptsDir=$out/share/pihole
substituteInPlace $out/bin/pihole $scriptsDir/advanced/Scripts/*.sh \
--replace-quiet /etc/.pihole $scriptsDir \
--replace-quiet /opt/pihole $scriptsDir/advanced/Scripts
''
+ old.preFixup;
})

View File

@@ -0,0 +1,58 @@
{
lib,
stdenv,
fetchCrate,
rustPlatform,
installShellFiles,
pkg-config,
libsodium,
openssl,
xxHash,
gitImportSupport ? true,
libgit2 ? null,
}:
rustPlatform.buildRustPackage rec {
pname = "pijul";
version = "1.0.0-beta.9";
src = fetchCrate {
inherit version pname;
hash = "sha256-jy0mzgLw9iWuoWe2ictMTL3cHnjJ5kzs6TAK+pdm28g=";
};
cargoHash = "sha256-d2IlBtR3j6SF8AAagUQftCOqTqN70rDMlHkA9byxXyk=";
doCheck = false;
nativeBuildInputs = [
installShellFiles
pkg-config
];
buildInputs = [
openssl
libsodium
xxHash
]
++ (lib.optionals gitImportSupport [ libgit2 ]);
buildFeatures = lib.optional gitImportSupport "git";
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd pijul \
--bash <($out/bin/pijul completion bash) \
--fish <($out/bin/pijul completion fish) \
--zsh <($out/bin/pijul completion zsh)
'';
meta = with lib; {
description = "Distributed version control system";
homepage = "https://pijul.org";
license = with licenses; [ gpl2Plus ];
maintainers = with maintainers; [
gal_bolle
dywedir
fabianhjr
];
mainProgram = "pijul";
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
rustPlatform,
fetchFromGitHub,
testers,
pik,
}:
rustPlatform.buildRustPackage rec {
pname = "pik";
version = "0.26.1";
src = fetchFromGitHub {
owner = "jacek-kurlit";
repo = "pik";
rev = version;
hash = "sha256-qpSQ920nAWqta3aPxl9dVHFRBtgETtUye+D2yU33ZFw=";
};
cargoHash = "sha256-5/ympn4z1R7dYG4jR+0zEgvaYr0AbcIbUIrMac5Tj7A=";
passthru.tests.version = testers.testVersion { package = pik; };
meta = {
description = "Process Interactive Kill";
longDescription = ''
Process Interactive Kill is a command line tool that helps to find and kill process.
It works like pkill command but search is interactive.
'';
homepage = "https://github.com/jacek-kurlit/pik";
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ bew ];
mainProgram = "pik";
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/src/borg/process.rs b/src/borg/process.rs
index 9af8da7..85bcbf8 100644
--- a/src/borg/process.rs
+++ b/src/borg/process.rs
@@ -278,7 +278,7 @@ impl BorgCall {
}
pub(super) fn command(&self) -> Result<(async_process::Command, UnixStream)> {
- let mut cmd = async_process::Command::new("borg");
+ let mut cmd = async_process::Command::new("@borg@");
let unix_stream = self.stream_password(&mut cmd)?;

View File

@@ -0,0 +1,84 @@
{
lib,
stdenv,
fetchFromGitLab,
rustPlatform,
replaceVars,
cargo,
desktop-file-utils,
git,
itstool,
meson,
ninja,
pkg-config,
python3,
rustc,
wrapGAppsHook4,
borgbackup,
gtk4,
libadwaita,
libsecret,
nix-update-script,
}:
stdenv.mkDerivation rec {
pname = "pika-backup";
version = "0.7.4";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "pika-backup";
rev = "v${version}";
hash = "sha256-DtLGD7+Ydj2fvEHU+bDQDMC/E/9VgrlVNMCG6OlPmfg=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
hash = "sha256-1JFXSVs9HPPzh+IjH4RGugrZEifPVcQho9B3hLSTL6s=";
};
patches = [
(replaceVars ./borg-path.patch {
borg = lib.getExe borgbackup;
})
];
postPatch = ''
patchShebangs build-aux
'';
nativeBuildInputs = [
desktop-file-utils
git
itstool
meson
ninja
pkg-config
python3
wrapGAppsHook4
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
gtk4
libadwaita
libsecret
];
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Simple backups based on borg";
homepage = "https://apps.gnome.org/app/org.gnome.World.PikaBackup";
changelog = "https://gitlab.gnome.org/World/pika-backup/-/blob/v${version}/CHANGELOG.md";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ dotlambda ];
teams = [ lib.teams.gnome-circle ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
fetchurl,
stdenv,
undmg,
}:
stdenv.mkDerivation rec {
pname = "pika";
version = "0.0.12";
src = fetchurl {
url = "https://github.com/superhighfives/${pname}/releases/download/${version}/Pika-${version}.dmg";
sha256 = "sha256-hcP2bETEx9RQW43I9nvdRPi9lbWwKW6mhRx5H6RxhjM=";
};
nativeBuildInputs = [ undmg ];
sourceRoot = "Pika.app";
installPhase = ''
mkdir -p "$out/Applications/Pika.app"
cp -R . "$out/Applications/Pika.app"
'';
meta = with lib; {
homepage = "https://superhighfives.com/pika";
description = "Open-source colour picker app for macOS";
platforms = platforms.darwin;
license = licenses.mit;
maintainers = with maintainers; [ arkivm ];
};
}

View File

@@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchfossil,
tcl,
enableTcl ? true,
}:
stdenv.mkDerivation {
pname = "pikchr";
# To update, use the last check-in in https://pikchr.org/home/timeline?r=trunk
version = "0-unstable-2025-02-28";
src = fetchfossil {
url = "https://pikchr.org/home";
rev = "b7fbd56c4eb82ab9";
hash = "sha256-7oW1IYYk3YKPjOUPP6qYIdR0oGo9pRDDlyu30J4B3bI=";
};
# can't open generated html files
postPatch = ''
substituteInPlace Makefile --replace open "test -f"
'';
nativeBuildInputs = lib.optional enableTcl tcl.tclPackageHook;
buildInputs = lib.optional enableTcl tcl;
makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
buildFlags = [ "pikchr" ] ++ lib.optional enableTcl "piktcl";
installPhase = ''
runHook preInstall
install -Dm755 pikchr $out/bin/pikchr
install -Dm755 pikchr.out $out/lib/pikchr.o
install -Dm644 pikchr.h $out/include/pikchr.h
''
+ lib.optionalString enableTcl ''
cp -r piktcl $out/lib/piktcl
''
+ ''
runHook postInstall
'';
dontWrapTclBinaries = true;
doCheck = true;
meta = with lib; {
description = "PIC-like markup language for diagrams in technical documentation";
homepage = "https://pikchr.org";
license = licenses.bsd0;
maintainers = with maintainers; [ fgaz ];
platforms = platforms.all;
mainProgram = "pikchr";
};
}

View File

@@ -0,0 +1,214 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchurl,
pkg-config,
autoconf,
automake,
libtool,
bison,
flex,
gmp,
pcre,
nettle,
libjpeg,
libpng,
libtiff,
freetype,
sqlite,
libmysqlclient,
postgresql,
openssl,
zlib,
bzip2,
gdbm,
libffi,
expat,
libxml2,
libxslt,
gtk3,
pango,
cairo,
glib,
SDL2,
libGL,
dpkg,
autoPatchelfHook,
ncurses,
libnsl,
libxcrypt-legacy,
nix-update-script,
makeBinaryWrapper,
}:
let
# Pre-built Pike binary from Debian for bootstrapping
pike-bootstrap = stdenv.mkDerivation (finalAttrs: {
pname = "pike-bootstrap";
version = "8.0.1956";
src = fetchurl {
# Using Debian's pike8.0-core package
url = "http://deb.debian.org/debian/pool/main/p/pike8.0/pike8.0-core_${finalAttrs.version}-1_amd64.deb";
hash = "sha256-kDaP7GZOW9Wlzg9dSxi+Q8IYduIZneWSsFqRfNh1NFQ=";
};
nativeBuildInputs = [
autoPatchelfHook
dpkg
makeBinaryWrapper
];
buildInputs = [
gmp
zlib
ncurses
libxcrypt-legacy # for libcrypt.so.1
nettle # for libnettle and libhogweed
libnsl # for libnsl.so
];
# Ignore missing dependencies since this is just for bootstrapping
autoPatchelfIgnoreMissingDeps = [
"libcrypt.so.1"
"libnsl.so.2"
];
dontBuild = true;
dontConfigure = true;
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r usr/* $out/
# The binary should be in bin/pike8.0
if [ -f $out/bin/pike8.0 ]; then
ln -s pike8.0 $out/bin/pike
fi
# Fix broken symlinks to Debian license files
rm -f $out/lib/pike8.0/modules/Tools.pmod/Legal.pmod/License.pmod/*.txt || true
# Create wrapper to set proper paths
wrapProgram $out/bin/pike8.0 \
--set PIKE_MODULE_PATH "$out/lib/pike8.0/modules" \
--add-flags "-m$out/lib/pike8.0/master.pike"
runHook postInstall
'';
meta = {
description = "Pike programming language bootstrap";
longDescription = ''
Pike is a dynamic programming language with a syntax similar to Java and C.
It is simple to learn, does not require long compilation passes and has
powerful built-in data types allowing simple and really fast data manipulation.
'';
homepage = "https://pike.lysator.liu.se/";
license = with lib.licenses; [
gpl2Only
# or
lgpl2Plus
# or
mpl20
];
maintainers = with lib.maintainers; [ siraben ];
platforms = with lib.platforms; unix ++ windows;
mainProgram = "pike";
};
});
in
stdenv.mkDerivation (finalAttrs: {
pname = "pike";
version = "8.0.2026";
src = fetchFromGitHub {
owner = "pikelang";
repo = "Pike";
tag = "v${finalAttrs.version}";
hash = "sha256-ttEEY1l2Bfz8Qfi6x3CDeJOxEajzookd8WfnFbN/vro=";
};
nativeBuildInputs = [
pkg-config
bison
flex
autoconf
automake
libtool
pike-bootstrap # built above
];
buildInputs = [
gmp
pcre
nettle
libjpeg
libpng
libtiff
freetype
sqlite
libmysqlclient
postgresql
openssl
zlib
bzip2
gdbm
libffi
expat
libxml2
libxslt
gtk3
pango
cairo
glib
SDL2
libGL
];
# Pike uses a custom build system
preConfigure = ''
patchShebangs .
cd src
./run_autoconfig
'';
env = {
RUNPIKE = "${pike-bootstrap}/bin/pike";
PIKE = "${pike-bootstrap}/bin/pike";
};
configureFlags = [
"--with-gmp"
"--with-nettle"
"--with-mysql=${libmysqlclient}"
"--with-postgres"
"--with-gtk"
"--with-sdl"
"--with-gl"
];
makeFlags = [ "INSTALLARGS=--traditional" ];
passthru.updateScript = nix-update-script { };
meta = {
description = "Pike programming language";
longDescription = ''
Pike is a dynamic programming language with a syntax similar to Java and C.
It is simple to learn, does not require long compilation passes and has
powerful built-in data types allowing simple and really fast data manipulation.
'';
homepage = "https://pike.lysator.liu.se/";
license = with lib.licenses; [
gpl2Only
# or
lgpl2Plus
# or
mpl20
];
maintainers = with lib.maintainers; [ siraben ];
platforms = with lib.platforms; unix ++ windows;
mainProgram = "pike";
};
})

View File

@@ -0,0 +1,42 @@
{
lib,
buildGoModule,
fetchFromGitHub,
testers,
piknik,
}:
buildGoModule rec {
pname = "piknik";
version = "0.10.2";
src = fetchFromGitHub {
owner = "jedisct1";
repo = "piknik";
rev = version;
hash = "sha256-Kdqh3sQuO0iT0RW2hU+nrmBltxCFiqOSL00cbDHZJjc=";
};
vendorHash = "sha256-t7w8uKYda6gT08ymAJqS38JgY70kuKNkQvjHFK91j8s=";
ldflags = [
"-s"
"-w"
];
passthru.tests = {
version = testers.testVersion {
package = piknik;
version = "v${version}";
};
};
meta = with lib; {
description = "Copy/paste anything over the network";
homepage = "https://github.com/jedisct1/piknik";
changelog = "https://github.com/jedisct1/piknik/blob/${src.rev}/ChangeLog";
license = licenses.bsd2;
maintainers = with maintainers; [ figsoda ];
mainProgram = "piknik";
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
clangStdenv,
fetchurl,
gnustep-back,
wrapGNUstepAppsHook,
}:
clangStdenv.mkDerivation rec {
pname = "pikopixel";
version = "1.0-b10";
src = fetchurl {
url = "https://twilightedge.com/downloads/PikoPixel.Sources.${version}.tar.gz";
sha256 = "1b27npgsan2nx1p581b9q2krx4506yyd6s34r4sf1r9x9adshm77";
};
sourceRoot = "PikoPixel.Sources.${version}/PikoPixel";
nativeBuildInputs = [
wrapGNUstepAppsHook
];
buildInputs = [
gnustep-back
];
# Fix the Exec and Icon paths in the .desktop file, and save the file in the
# correct place.
# postInstall gets redefined in gnustep.make's builder.sh, so we use preFixup
preFixup = ''
mkdir -p $out/share/applications
sed \
-e "s@^Exec=.*\$@Exec=$out/bin/PikoPixel %F@" \
-e "s@^Icon=.*/local@Icon=$out@" \
PikoPixel.app/Resources/PikoPixel.desktop > $out/share/applications/PikoPixel.desktop
'';
meta = with lib; {
description = "Application for drawing and editing pixel-art images";
mainProgram = "PikoPixel";
homepage = "https://twilightedge.com/mac/pikopixel/";
downloadPage = "https://twilightedge.com/mac/pikopixel/";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ fgaz ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,12 @@
{
"auto_orientation": "sha256-0QOEW8+0PpBIELmzilZ8+z7ozNRxKgI0BzuBS8c1Fng=",
"canvas_danmaku": "sha256-3cBsQCvXuc5XvSRNY4QX33+t8aF2AfOQhRt+MCQWdOA=",
"chat_bottom_container": "sha256-um9KwZUDxWBhFsGHfv00TjPzxDHmp43TLRF0GwuV1xs=",
"extended_nested_scroll_view": "sha256-5X8ghUlEO/lvz/3PmYuipCjcs+QrIciaH5wgWp9i+24=",
"floating": "sha256-TJ2i3hTOQ4euHWr+lfQU44L3vVehmWVdZuAzNyVaEfA=",
"flutter_sortable_wrap": "sha256-Qj9Lzh+pJy+vHznGt5M3xwoJtaVtt00fxm4JJXL4bFI=",
"material_design_icons_flutter": "sha256-KMwjnzJJj8nemCqUCSwYafPOwTYbtoHNenxstocJtz4=",
"media_kit_libs_android_video": "sha256-o5qsqJe4TjOhwtgnc20Ga1y4IyxdhC/VmeAsFMDoHuo=",
"media_kit_video": "sha256-TPYmT5Muv98wuZUO9evd40uIWp/XDk0+GIfEgd/m4mg=",
"webdav_client": "sha256-euNF7HdDtZ68BqSEq9BvO10BK09MxX2wWGoElFS0yeE="
}

View File

@@ -0,0 +1,104 @@
{
lib,
fetchFromGitHub,
flutter335,
makeShellWrapper,
makeDesktopItem,
copyDesktopItems,
alsa-lib,
mpv-unwrapped,
libplacebo,
}:
let
version = "1.1.4.4";
rev = "f0f52246777f2640025048f561e908cf1d3c3ead";
description = "Third-party Bilibili client developed in Flutter";
in
flutter335.buildFlutterApplication.override
{
# makeBinaryWrapper does not support `--run`.
makeWrapper = makeShellWrapper;
}
{
pname = "piliplus";
inherit version;
src = fetchFromGitHub {
owner = "bggRGjQaUbCoE";
repo = "PiliPlus";
inherit rev;
hash = "sha256-5ISSlYMbP0SaSP0SLIHXC3VRXrVZ78kfl07ekgzFhNA=";
};
# Disable update check.
postPatch = ''
substituteInPlace lib/utils/update.dart \
--replace-fail "if (kDebugMode) " ""
'';
pubspecLock = lib.importJSON ./pubspec.lock.json;
gitHashes = lib.importJSON ./git-hashes.json;
nativeBuildInputs = [ copyDesktopItems ];
buildInputs = [
alsa-lib
mpv-unwrapped
libplacebo
];
# See lib/scripts/build.sh.
preBuild = ''
cat <<EOL > lib/build_config.dart
class BuildConfig {
static const int buildTime = $SOURCE_DATE_EPOCH;
static const String commitHash = '${rev}';
}
EOL
'';
# The app attempts to get the total size of TMPDIR at startup.
extraWrapProgramArgs = ''
--run 'export TMPDIR="$(mktemp -d)"'
'';
postInstall = ''
declare -A sizes=(
[mdpi]=128
[hdpi]=192
[xhdpi]=256
[xxhdpi]=384
[xxxhdpi]=512
)
for var in "''${!sizes[@]}"; do
width=''${sizes[$var]}
install -Dm644 "android/app/src/main/res/drawable-$var/splash.png" \
"$out/share/icons/hicolor/$widthx$width/apps/piliplus.png"
done
'';
desktopItems = [
(makeDesktopItem {
name = "piliplus";
exec = "piliplus";
icon = "piliplus";
desktopName = "PiliPlus";
categories = [ "Video" ];
comment = description;
})
];
passthru.updateScript = ./update.rb;
meta = {
inherit description;
homepage = "https://github.com/bggRGjQaUbCoE/PiliPlus";
changelog = "https://github.com/bggRGjQaUbCoE/PiliPlus/releases/tag/${version}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ ulysseszhan ];
platforms = lib.platforms.linux;
mainProgram = "piliplus";
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,93 @@
#! /usr/bin/env nix-shell
#! nix-shell -i ruby -p ruby nix-prefetch-git
require 'net/http'
require 'json'
require 'open3'
require 'yaml'
PACKAGE = 'piliplus'
def log(...) = $stderr.puts(...)
def finish(...) = log(...) || exit
def package_attr attr_path
stdout, status = Open3.capture2 'nix-instantiate', '--eval', '--json', '--attr', "#{PACKAGE}.#{attr_path}"
abort "nix-instantiate failed with exit code #{status.exitstatus} when reading attr #{attr_path}" unless status.success?
JSON.parse stdout rescue abort "Failed to parse JSON output from nix-instantiate when reading attr #{attr_path}"
end
def github_api path, token: ENV['GITHUB_TOKEN']
uri = URI.join 'https://api.github.com', path
res = Net::HTTP.start uri.host, uri.port, use_ssl: true do |http|
req = Net::HTTP::Get.new uri
req['Authorization'] = "Bearer #{token}" if token
http.request req
end
abort "Failed to fetch #{path}: #{res.code} #{res.message}" unless res.is_a? Net::HTTPSuccess
JSON.parse res.body rescue abort "Failed to parse JSON response from GitHub"
end
def prefetch_git url, rev
stdout, status = Open3.capture2 'nix-prefetch-git', '--url', url, '--rev', rev
abort "nix-prefetch-git failed with exit code #{status.exitstatus}" unless status.success?
JSON.parse stdout rescue abort "Failed to parse JSON output from nix-prefetch-git"
end
def replace_in_file filename, searches, replacements
contents = File.read filename
searches.zip replacements do |search, replacement|
contents.sub! search, replacement or abort "Failed to replace #{search} -> #{replacement} in #{filename}"
end
File.write filename, contents
end
def json_write filename, object
File.open(filename, 'w') { _1.puts JSON.pretty_generate object }
end
owner = package_attr 'src.owner'
repo = package_attr 'src.repo'
git_url = "https://github.com/#{owner}/#{repo}.git"
old_version = package_attr 'version'
old_rev = package_attr 'src.rev'
old_hash = package_attr 'src.outputHash'
log "Current version: #{old_version} #{old_rev} #{old_hash}"
new_version = github_api("/repos/#{owner}/#{repo}/releases/latest")['tag_name'] or abort "No `tag_name` field in GitHub response"
finish "Already up-to-date" if new_version == old_version
new_rev, new_hash, src_path = prefetch_git(git_url, new_version).values_at 'rev', 'hash', 'path'
log "New version: #{new_version} #{new_rev} #{new_hash}"
nix_filename = package_attr('meta.position')[/([^:]+):\d+/, 1] or abort "Failed to find the Nix file to be updated"
nix_dir = File.dirname nix_filename
replace_in_file nix_filename, [old_version, old_rev, old_hash], [new_version, new_rev, new_hash]
log "Updated #{nix_filename}"
pubspec_lock_path = File.join nix_dir, 'pubspec.lock.json'
old_pubspec_lock = JSON.load_file pubspec_lock_path rescue abort "Failed to read #{pubspec_lock_path}"
new_pubspec_lock = YAML.load_file File.join src_path, 'pubspec.lock' rescue abort "Failed to read pubspec.lock"
json_write pubspec_lock_path, new_pubspec_lock
log "Updated #{pubspec_lock_path}"
git_hashes_path = File.join nix_dir, 'git-hashes.json'
old_git_hashes = JSON.load_file git_hashes_path rescue abort "Failed to read #{git_hashes_path}"
new_git_hashes = {}
new_pubspec_lock['packages'].each do |name, info|
next unless info['source'] == 'git'
old_description = old_pubspec_lock.dig 'packages', name, 'description'
new_description = info['description']
if old_description == new_description
new_git_hashes[name] = old_git_hashes[name]
log "Reused existing git hash for dependency #{name}"
next
end
log "Updating git hash for dependency #{name}..."
url, rev = new_description.values_at 'url', 'resolved-ref'
new_git_hashes[name] = prefetch_git(url, rev)['hash']
end
json_write git_hashes_path, new_git_hashes
log "Updated #{git_hashes_path}"
finish "All done"

View File

@@ -0,0 +1,27 @@
--- pilot-link/configure.ac
+++ pilot-link/configure.ac
@@ -63,8 +63,8 @@
dnl Eat -Werror so configure will run properly, if the user provided it
enable_werror=no
save_CFLAGS="$CFLAGS"
-CFLAGS=$(echo $save_CFLAGS | sed -e s/-Werror//g)
-CXXFLAGS=$(echo $save_CXXFLAGS | sed -e s/-Werror//g)
+CFLAGS=$(echo "$save_CFLAGS" | sed -e 's/-Werror[^=]//g')
+CXXFLAGS=$(echo "$save_CXXFLAGS" | sed -e 's/-Werror[^=]//g')
if test "x$CFLAGS" != "x$save_CFLAGS"; then
dnl -Werror was set; treat it as implicit --enable-werror below
enable_werror="yes"
@@ -392,11 +392,8 @@
dnl Determine if system popt is good enough
save_LIBS="$LIBS"
AC_CHECK_HEADER(popt.h,
- AC_CHECK_DECL(POPT_BIT_SET,
- AC_CHECK_LIB(popt, poptStrippedArgv,,
- [with_included_popt="yes"]),
- [with_included_popt="yes"],
- [#include <popt.h>]),
+ AC_CHECK_LIB(popt, poptStrippedArgv,,
+ [with_included_popt="yes"]),
[with_included_popt="yes"]
)
LIBS="$save_LIBS"

View File

@@ -0,0 +1,53 @@
--- pilot-link/src/pilot-dlpsh.c
+++ pilot-link/src/pilot-dlpsh.c
@@ -389,7 +389,7 @@
strftime(timebuf, 80, "Now setting Palm time from desktop to: "
"%a %b %d %H:%M:%S %Z %Y\n", tm_ptr);
- printf(timebuf);
+ printf("%s", timebuf);
gettimeofday(&tv, 0);
ltime = tv.tv_sec + 1;
usleep(1000000 - tv.tv_usec);
--- pilot-link/src/pilot-hinotes.c
+++ pilot-link/src/pilot-hinotes.c
@@ -79,9 +79,7 @@
printf("...\n");
else
printf("\n");
- printf("\n");
- printf(m.text);
- printf("\n");
+ printf("\n%s\n", m.text);
}
void write_memo_in_directory(char *dirname, struct HiNoteNote m,
--- pilot-link/src/pilot-xfer.c
+++ pilot-link/src/pilot-xfer.c
@@ -2477,8 +2477,7 @@
{
fprintf(stderr, " ERROR: '%s' is not a directory or does not exist.\n"
" Please supply a directory name when performing a "
- "backup or restore and try again.\n\n", dirname);
- fprintf(stderr,gracias);
+ "backup or restore and try again.\n\n%s", dirname, gracias);
return 1;
}
}
@@ -2487,14 +2486,12 @@
case palm_op_list:
if (rargc > 0)
{
- fprintf(stderr," ERROR: Do not pass additional arguments to -busrlLC.\n");
- fprintf(stderr,gracias);
+ fprintf(stderr," ERROR: Do not pass additional arguments to -busrlLC.\n%s", gracias);
return 1;
}
break;
case palm_op_noop:
- fprintf(stderr," ERROR: Must specify one of -bursimfdlC.\n");
- fprintf(stderr,gracias);
+ fprintf(stderr," ERROR: Must specify one of -bursimfdlC.\n%s", gracias);
return 1;
break;
case palm_op_merge:

View File

@@ -0,0 +1,15 @@
Index: pilot-link/src/pilot-read-todos.c
===================================================================
--- pilot-link/src/pilot-read-todos.c
+++ pilot-link/src/pilot-read-todos.c
@@ -216,9 +216,9 @@
break;
}
else {
if (pi_file_read_record
- (pif, i, (void *) &ptr, &len, &attr, &category,
+ (pif, i, (void *) &ptr, (size_t *) &len, &attr, &category,
0))
break;
pi_buffer_clear(recbuf);

View File

@@ -0,0 +1,70 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
popt,
bluezSupport ? stdenv.hostPlatform.isLinux,
bluez,
readlineSupport ? true,
readline,
enableConduits ? true,
bison,
enableLibpng ? true,
libpng,
enableLibusb ? true,
libusb-compat-0_1,
}:
stdenv.mkDerivation {
pname = "pilot-link";
version = "0.13.0-unstable-2022-09-26";
src = fetchFromGitHub {
owner = "desrod";
repo = "pilot-link";
rev = "14338868111ce592c7ca7918a1f8a32ceecb7caf";
hash = "sha256-3b5T/QnRZawnjTgwvQKUbJTE/NiJ93eU2+qbRFuI13I";
};
# Resolve build issues on modern systems.
# https://github.com/desrod/pilot-link/issues/16
# https://aur.archlinux.org/packages/pilot-link-git
patches = [
./configure-checks.patch
./incompatible-pointer-type.patch
]
++ lib.optionals enableConduits [ ./format-string-literals.patch ]
++ lib.optionals enableLibpng [ ./pilot-link-png14.patch ];
nativeBuildInputs = [
autoreconfHook
pkg-config
]
++ lib.optionals enableConduits [ bison ];
buildInputs = [
popt
]
++ lib.optionals bluezSupport [ bluez ]
++ lib.optionals enableLibpng [ libpng ]
++ lib.optionals enableLibusb [ libusb-compat-0_1 ]
++ lib.optionals readlineSupport [ readline ];
configureFlags = [
"--with-libiconv"
]
++ lib.optionals enableConduits [ "--enable-conduits" ]
++ lib.optionals enableLibpng [ "--enable-libpng" ]
++ lib.optionals enableLibusb [ "--enable-libusb" ];
enableParallelBuilding = true;
meta = {
description = "Suite of tools for connecting to PalmOS handheld devices";
homepage = "https://github.com/desrod/pilot-link";
license = lib.licenses.gpl2;
maintainers = with lib.maintainers; [ PapayaJackal ];
};
}

View File

@@ -0,0 +1,100 @@
diff -ru pilot-link-0.12.4/src/pilot-read-notepad.c pilot-link-0.12.4.png14/src/pilot-read-notepad.c
--- pilot-link-0.12.4/src/pilot-read-notepad.c 2007-02-05 00:06:02.000000000 +0100
+++ pilot-link-0.12.4.png14/src/pilot-read-notepad.c 2010-01-17 15:04:33.000000000 +0100
@@ -39,10 +39,6 @@
#ifdef HAVE_PNG
#include "png.h"
-#if (PNG_LIBPNG_VER < 10201)
- #define png_voidp_NULL (png_voidp)NULL
- #define png_error_ptr_NULL (png_error_ptr)NULL
-#endif
#endif
const char *progname;
@@ -166,8 +162,8 @@
width = n->body.width + 8;
png_ptr = png_create_write_struct
- ( PNG_LIBPNG_VER_STRING, png_voidp_NULL,
- png_error_ptr_NULL, png_error_ptr_NULL);
+ ( PNG_LIBPNG_VER_STRING, NULL,
+ NULL, NULL);
if(!png_ptr)
return;
diff -ru pilot-link-0.12.4/src/pilot-read-palmpix.c pilot-link-0.12.4.png14/src/pilot-read-palmpix.c
--- pilot-link-0.12.4/src/pilot-read-palmpix.c 2007-02-05 00:06:03.000000000 +0100
+++ pilot-link-0.12.4.png14/src/pilot-read-palmpix.c 2010-01-17 15:03:20.000000000 +0100
@@ -42,10 +42,6 @@
#ifdef HAVE_PNG
#include "png.h"
-#if (PNG_LIBPNG_VER < 10201)
- #define png_voidp_NULL (png_voidp)NULL
- #define png_error_ptr_NULL (png_error_ptr)NULL
-#endif
#endif
const char *progname;
@@ -223,8 +219,8 @@
png_infop info_ptr;
png_ptr = png_create_write_struct
- ( PNG_LIBPNG_VER_STRING, png_voidp_NULL,
- png_error_ptr_NULL, png_error_ptr_NULL);
+ ( PNG_LIBPNG_VER_STRING, NULL,
+ NULL, NULL);
if(!png_ptr)
return;
diff -ru pilot-link-0.12.4/src/pilot-read-screenshot.c pilot-link-0.12.4.png14/src/pilot-read-screenshot.c
--- pilot-link-0.12.4/src/pilot-read-screenshot.c 2006-11-02 15:54:31.000000000 +0100
+++ pilot-link-0.12.4.png14/src/pilot-read-screenshot.c 2010-01-17 15:03:52.000000000 +0100
@@ -40,10 +40,6 @@
#ifdef HAVE_PNG
# include "png.h"
-# if (PNG_LIBPNG_VER < 10201)
-# define png_voidp_NULL (png_voidp)NULL
-# define png_error_ptr_NULL (png_error_ptr)NULL
-# endif
#endif
#define pi_mktag(c1,c2,c3,c4) (((c1)<<24)|((c2)<<16)|((c3)<<8)|(c4))
@@ -87,8 +83,8 @@
gray_buf = malloc( state->w );
png_ptr = png_create_write_struct
- (PNG_LIBPNG_VER_STRING, png_voidp_NULL,
- png_error_ptr_NULL, png_error_ptr_NULL);
+ (PNG_LIBPNG_VER_STRING, NULL,
+ NULL, NULL);
if (!png_ptr)
return;
diff -ru pilot-link-0.12.4/src/pilot-read-veo.c pilot-link-0.12.4.png14/src/pilot-read-veo.c
--- pilot-link-0.12.4/src/pilot-read-veo.c 2007-02-05 00:06:03.000000000 +0100
+++ pilot-link-0.12.4.png14/src/pilot-read-veo.c 2010-01-17 15:04:14.000000000 +0100
@@ -41,10 +41,6 @@
#ifdef HAVE_PNG
# include "png.h"
-# if (PNG_LIBPNG_VER < 10201)
-# define png_voidp_NULL (png_voidp)NULL
-# define png_error_ptr_NULL (png_error_ptr)NULL
-# endif
#endif
#define pi_mktag(c1,c2,c3,c4) (((c1)<<24)|((c2)<<16)|((c3)<<8)|(c4))
@@ -856,8 +852,8 @@
png_infop info_ptr;
png_ptr = png_create_write_struct
- (PNG_LIBPNG_VER_STRING, png_voidp_NULL,
- png_error_ptr_NULL, png_error_ptr_NULL);
+ (PNG_LIBPNG_VER_STRING, NULL,
+ NULL, NULL);
if (!png_ptr)
return;

View File

@@ -0,0 +1,35 @@
{
stdenv,
fetchFromGitHub,
lib,
autoreconfHook,
bison,
flex,
}:
stdenv.mkDerivation {
pname = "pim6sd";
version = "0-unstable-2024-12-14";
src = fetchFromGitHub {
owner = "troglobit";
repo = "pim6sd";
rev = "9fd332d92af4fe8c92a70c1b6c2048ffddb0e48a";
hash = "sha256-iTukxjo63Smk6wX8SQsi49iNLpmxeN9JSkBZB5aBMaQ=";
};
nativeBuildInputs = [
autoreconfHook
bison
flex
];
meta = {
description = "PIM for IPv6 sparse mode daemon";
homepage = "https://github.com/troglobit/pim6sd";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ hexa ];
platforms = lib.platforms.unix;
broken = stdenv.hostPlatform.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/pim6sd.x86_64-darwin
};
}

View File

@@ -0,0 +1,58 @@
{
lib,
rustPlatform,
fetchFromSourcehut,
pkg-config,
sqlite,
installShellFiles,
makeWrapper,
versionCheckHook,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "pimsync";
version = "0.4.4";
src = fetchFromSourcehut {
owner = "~whynothugo";
repo = "pimsync";
rev = "v${finalAttrs.version}";
hash = "sha256-M29kqvvNfs4zF1epurXGEas1phPdrEAFDnYKqyCzzfE=";
};
cargoHash = "sha256-HQObvolih9nOn0epu7tWkLa0ibkNarXy2pNNzllQtMg=";
PIMSYNC_VERSION = finalAttrs.version;
nativeBuildInputs = [
pkg-config
makeWrapper
installShellFiles
];
buildInputs = [
sqlite
];
postInstall = ''
installManPage pimsync.1 pimsync.conf.5 pimsync-migration.7
'';
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "version";
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Synchronise calendars and contacts";
homepage = "https://git.sr.ht/~whynothugo/pimsync";
license = lib.licenses.eupl12;
platforms = lib.platforms.unix;
maintainers = [ lib.maintainers.qxrein ];
mainProgram = "pimsync";
};
})

View File

@@ -0,0 +1,75 @@
{
lib,
stdenv,
fetchFromGitHub,
buildGoModule,
installShellFiles,
versionCheckHook,
nix-update-script,
}:
let
mainProgram = "pinact";
in
buildGoModule (finalAttrs: {
pname = "pinact";
version = "3.4.2";
src = fetchFromGitHub {
owner = "suzuki-shunsuke";
repo = "pinact";
tag = "v${finalAttrs.version}";
hash = "sha256-O+yLhvkF84uCrgb5MPvk8i/YJ4tLR7YQvBAYbpnxwEM=";
};
vendorHash = "sha256-A9bMAGaNvCKfSozBwhrJLgQUrCLN78Og3eCmezsJ6c8=";
env.CGO_ENABLED = 0;
doCheck = true;
nativeBuildInputs = [
installShellFiles
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd '${mainProgram}' \
--bash <("$out/bin/${mainProgram}" completion bash) \
--zsh <("$out/bin/${mainProgram}" completion zsh) \
--fish <("$out/bin/${mainProgram}" completion fish)
'';
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgram = "${placeholder "out"}/bin/${mainProgram}";
versionCheckProgramArg = "version";
passthru = {
updateScript = nix-update-script {
extraArgs = [
"--version-regex=^v([\\d\\.]+)$"
];
};
};
ldflags = [
"-s"
"-w"
"-X main.version=${finalAttrs.version} -X main.commit=v${finalAttrs.version}"
];
subPackages = [
"cmd/pinact"
];
meta = {
inherit mainProgram;
description = "Pin GitHub Actions versions";
homepage = "https://github.com/suzuki-shunsuke/pinact";
changelog = "https://github.com/suzuki-shunsuke/pinact/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ kachick ];
};
})

View File

@@ -0,0 +1,58 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
libglvnd,
libtool,
SDL2,
SDL2_image,
SDL2_mixer,
xorg,
}:
stdenv.mkDerivation {
pname = "pinball";
version = "0.3.20201218-unstable-2024-11-14";
src = fetchFromGitHub {
owner = "adoptware";
repo = "pinball";
rev = "7f6887d8912340c0eee7f96b4c4bb84c8d889246";
hash = "sha256-8wuux7eC0OkgL/m20eyRGRrAF1lBGAbd7Gmid9cNPto=";
};
postPatch = ''
sed -i 's/^AUTOMAKE_OPTIONS = gnu$/AUTOMAKE_OPTIONS = foreign/' Makefile.am
'';
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
libglvnd
libtool
SDL2
SDL2_image
SDL2_mixer
xorg.libSM
];
strictDeps = true;
env.NIX_CFLAGS_COMPILE = toString [
"-I${lib.getDev SDL2_image}/include/SDL2"
"-I${lib.getDev SDL2_mixer}/include/SDL2"
];
enableParallelBuilding = true;
meta = with lib; {
homepage = "https://github.com/adoptware/pinball";
description = "Emilia Pinball simulator";
license = licenses.gpl2Only;
maintainers = with maintainers; [ qyliss ];
platforms = platforms.linux;
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,83 @@
{
lib,
fetchFromGitHub,
fetchYarnDeps,
beamPackages,
yarn,
nodejs,
esbuild,
tailwindcss,
fixup-yarn-lock,
apprise,
yt-dlp,
}:
beamPackages.mixRelease rec {
pname = "pinchflat";
version = "2025.6.6";
src = fetchFromGitHub {
owner = "kieraneglin";
repo = "pinchflat";
rev = "v${version}";
hash = "sha256-5hHueaA0QGTDr4wViZMBpBFhPnl8uAaxy72LMHgZdWU=";
};
mixNixDeps = import ./mix.nix {
inherit beamPackages lib;
overrides = _: super: {
exqlite = super.exqlite.overrideAttrs (_: {
preConfigure = ''
export ELIXIR_MAKE_CACHE_DIR="$TMPDIR/.cache"
'';
});
};
};
removeCookie = false;
yarnOfflineCache = fetchYarnDeps {
yarnLock = "${src}/assets/yarn.lock";
sha256 = "sha256-xJL+qcohtu+OmZ31E1QU9uqBWAFGejKIO3XRd+R6z/4=";
};
nativeBuildInputs = [
fixup-yarn-lock
tailwindcss
yarn
];
buildInputs = [ nodejs ];
postBuild = ''
export HOME=$PWD
fixup-yarn-lock ~/assets/yarn.lock
yarn --cwd assets config --offline set yarn-offline-mirror $yarnOfflineCache
yarn --cwd assets install --offline --frozen-lockfile --ignore-engines --ignore-scripts --no-progress
patchShebangs ~/assets/node_modules
# phoenixframework expects platform-specific tailwind/esbuild binaries in a specific location:
# https://github.com/phoenixframework/tailwind/blob/194ab0f979782e4ccf2fe796042bf8e20967df93/lib/tailwind.ex#L243-L251
targets="linux-x64 linux-arm64 macos-x64 macos-arm64"
for target in $targets; do
ln -s "${tailwindcss}/bin/tailwindcss" "_build/tailwind-$target"
ln -s "${esbuild}/bin/esbuild" "_build/esbuild-$target"
done
mix do deps.loadpaths --no-deps-check, tailwind default --minify + esbuild default --minify + phx.digest
'';
postInstall = ''
wrapProgram $out/bin/pinchflat --prefix PATH : ${
lib.makeBinPath [
apprise
yt-dlp
]
}
'';
meta = {
description = "Your next YouTube media manager";
homepage = "https://github.com/kieraneglin/pinchflat";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ charludo ];
platforms = lib.platforms.unix;
mainProgram = "pinchflat";
};
}

View File

@@ -0,0 +1,27 @@
{
lib,
buildGo124Module,
fetchFromGitHub,
}:
buildGo124Module {
pname = "pinecone";
version = "0.11.0-unstable-2025-03-04";
src = fetchFromGitHub {
owner = "matrix-org";
repo = "pinecone";
rev = "b35aec69f59eb9bb8bd5a8c6be30fc276d3cce96";
hash = "sha256-0jqvWdFjN4Kzhkv4Oe1obsKGW0i/MGEMX3ZhcxpsdxA=";
};
vendorHash = "sha256-+P10K7G0UwkbCGEi6sYTQSqO7LzIf/xmaHIr7v110Ao=";
meta = with lib; {
description = "Peer-to-peer overlay routing for the Matrix ecosystem";
homepage = "https://matrix-org.github.io/pinecone/";
license = licenses.asl20;
maintainers = with maintainers; [ networkexception ];
mainProgram = "pinecone";
};
}

View File

@@ -0,0 +1,90 @@
{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
pkg-config,
autoPatchelfHook,
blisp,
dfu-util,
fontconfig,
glib,
gtk3,
openssl,
systemd,
libGL,
libxkbcommon,
nix-update-script,
wayland,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "pineflash";
version = "0.5.5";
src = fetchFromGitHub {
owner = "Spagett1";
repo = "pineflash";
tag = finalAttrs.version;
hash = "sha256-4tcwEok36vuXbtlZNUkLNw1kHFQPBEJM/gWRhRWNLPg=";
};
cargoHash = "sha256-OgUWOtqgGCRNYCrdMa8IAfxbbYqv+1WwubvfYybuAQU=";
nativeBuildInputs = [
pkg-config
]
++ lib.optional stdenv.hostPlatform.isLinux autoPatchelfHook;
buildInputs = [
blisp
dfu-util
fontconfig
glib
gtk3
openssl
systemd
];
runtimeDependencies = [
libGL
libxkbcommon
wayland
];
postPatch = ''
substituteInPlace src/submodules/flash.rs \
--replace-fail 'let command = Command::new("pkexec")' 'let command = Command::new("/run/wrappers/bin/pkexec")'
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
substituteInPlace src/submodules/flash.rs \
--replace-fail 'let blisppath = "blisp";' 'let blisppath = "${lib.getExe blisp}";' \
--replace-fail 'let dfupath = "dfu-util";' 'let dfupath = "${lib.getExe' dfu-util "dfu-util"}";'
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace src/submodules/flash.rs \
--replace-fail 'Command::new("blisp")' 'Command::new("${lib.getExe blisp}")' \
--replace-fail 'Command::new("dfu-util")' 'Command::new("${lib.getExe' dfu-util "dfu-util"}")'
'';
postInstall = ''
mkdir -p "$out/share/applications"
cp ./assets/Pineflash.desktop "$out/share/applications/Pineflash.desktop"
mkdir -p "$out/share/pixmaps"
cp ./assets/pine64logo.png "$out/share/pixmaps/pine64logo.png"
'';
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "GUI tool to flash IronOS to the Pinecil V1 and V2";
homepage = "https://github.com/Spagett1/pineflash";
changelog = "https://github.com/Spagett1/pineflash/releases/tag/${finalAttrs.version}";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [
acuteaangle
];
mainProgram = "pineflash";
};
})

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
libassuan,
libgpg-error,
popt,
bemenu,
}:
stdenv.mkDerivation rec {
pname = "pinentry-bemenu";
version = "0.14.0";
src = fetchFromGitHub {
owner = "t-8ch";
repo = "pinentry-bemenu";
rev = "v${version}";
sha256 = "sha256-kiGUCcQIS58XjE4r0yiK4hJ85Sg5wrtBqeSYcgUKAmo=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
];
buildInputs = [
libassuan
libgpg-error
popt
bemenu
];
meta = with lib; {
description = "Pinentry implementation based on bemenu";
homepage = "https://github.com/t-8ch/pinentry-bemenu";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ jc ];
platforms = with platforms; linux;
mainProgram = "pinentry-bemenu";
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchFromGitHub,
fontconfig,
gpgme,
libX11,
libXinerama,
libXft,
pkg-config,
zlib,
writeText,
libassuan,
libconfig,
libgpg-error,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pinentry-dmenu";
version = "0.2.2";
src = fetchFromGitHub {
owner = "ritze";
repo = "pinentry-dmenu";
tag = finalAttrs.version;
hash = "sha256-FmP9tI/oU7VM8x+Wu6bbeg1CVopZc6oOWnd4qUptVV8=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
fontconfig
gpgme
libassuan
libconfig
libgpg-error
libX11
libXinerama
libXft
];
preConfigure = ''
makeFlagsArray+=(
PREFIX="$out"
CC="$CC"
# default config.mk hardcodes dependent libraries and include paths
INCS="`$PKG_CONFIG --cflags fontconfig x11 xft xinerama`"
LIBS="`$PKG_CONFIG --libs fontconfig x11 xft xinerama`"
)
'';
meta = {
description = "Pinentry implementation based on dmenu";
homepage = "https://github.com/ritze/pinentry-dmenu";
changelog = "https://github.com/ritze/pinentry-dmenu/releases/tag/${finalAttrs.version}";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ sweiglbosker ];
mainProgram = "pinentry-dmenu";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,55 @@
{
stdenv,
lib,
fetchFromGitHub,
pkg-config,
autoreconfHook,
autoconf-archive,
guile,
texinfo,
makeWrapper,
rofi,
coreutils,
}:
stdenv.mkDerivation rec {
pname = "pinentry-rofi";
version = "3.0.0";
src = fetchFromGitHub {
owner = "plattfot";
repo = "pinentry-rofi";
rev = version;
sha256 = "sha256-GHpVO8FRphVW0+In7TtB39ewwVLU1EHOeVL05pnZdFQ=";
};
nativeBuildInputs = [
autoconf-archive
autoreconfHook
guile
pkg-config
texinfo
makeWrapper
];
buildInputs = [ guile ];
# pinentry-rofi wants to call `env rofi` (https://github.com/plattfot/pinentry-rofi/blob/fde8e32b8380512e2ba02961ccc99765575e2c89/pinentry-rofi.scm#L338)
postInstall = ''
wrapProgram $out/bin/pinentry-rofi --prefix PATH : ${
lib.makeBinPath [
rofi
coreutils
]
}
'';
meta = with lib; {
description = "Rofi frontend to pinentry";
homepage = "https://github.com/plattfot/pinentry-rofi";
license = licenses.gpl3Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ seqizz ];
mainProgram = "pinentry-rofi";
};
}

View File

@@ -0,0 +1,73 @@
{
lib,
autoreconfHook,
fetchFromGitHub,
fetchpatch,
gettext,
ncurses,
readline,
stdenv,
texinfo,
}:
stdenv.mkDerivation rec {
pname = "pinfo";
version = "0.6.13";
src = fetchFromGitHub {
owner = "baszoetekouw";
repo = "pinfo";
rev = "v${version}";
sha256 = "173d2p22irwiabvr4z6qvr6zpr6ysfkhmadjlyhyiwd7z62larvy";
};
patches = [
# Pull upstream fix for -fno-common toolchains
(fetchpatch {
name = "fno-common.patch";
url = "https://github.com/baszoetekouw/pinfo/commit/16dba5978146b6d3a540ac7c8f415eda49280847.patch";
sha256 = "148fm32chvq8x9ayq9cnhgszh10g5v0cv0xph67fa7sp341p09wy";
})
# Fix pending upstream inclusion for build on ncurses-6.3:
# https://github.com/baszoetekouw/pinfo/pull/27
(fetchpatch {
name = "ncurses-6.3.patch";
url = "https://github.com/baszoetekouw/pinfo/commit/fc67ceacd81f0c74fcab85447c23a532ae482827.patch";
sha256 = "08phmng8vgfqjjazys05acpd5gh110malhw3sx29dg86nsrg2khs";
})
# Fix pending upstream inclusion for build on gcc-11:
# https://github.com/baszoetekouw/pinfo/pull/27
(fetchpatch {
name = "gcc-11.patch";
url = "https://github.com/baszoetekouw/pinfo/commit/ab604fdb67296dad27f3a25f3c9aabdd2fb8c3fa.patch";
sha256 = "09g8msgan2x48hxcbm7l6j3av6n8i0bsd4g0vf5xd8bxwzynb13m";
})
];
nativeBuildInputs = [
autoreconfHook
];
buildInputs = [
gettext
texinfo
ncurses
readline
];
configureFlags = [
"--with-curses=${ncurses.dev}"
"--with-readline=${readline.dev}"
];
meta = with lib; {
description = "Viewer for info files";
homepage = "https://github.com/baszoetekouw/pinfo";
license = licenses.gpl2Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ fab ];
mainProgram = "pinfo";
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "pingme";
version = "0.2.6";
src = fetchFromGitHub {
owner = "kha7iq";
repo = "pingme";
rev = "v${version}";
hash = "sha256-i+EZ3HfuxHSuZDe0+nfZVvoNZN5XcdQFwfgOg4OLBOs=";
};
vendorHash = "sha256-fEJII8qSDIbMNhRfuYUsRA1AmOXR27iHpBPNCDFI4xQ=";
# bump go version
preBuild = ''
substituteInPlace go.mod \
--replace-fail 'go 1.16' 'go 1.21'
go mod tidy
'';
proxyVendor = true;
ldflags = [
"-s"
"-w"
"-X=main.Version=${version}"
];
meta = {
changelog = "https://github.com/kha7iq/pingme/releases/tag/${src.rev}";
description = "Send messages or alerts to multiple messaging platforms & email";
homepage = "https://pingme.lmno.pk";
license = lib.licenses.mit;
mainProgram = "pingme";
maintainers = with lib.maintainers; [ emilytrau ];
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pingtcp";
version = "0.0.3";
src = fetchFromGitHub {
owner = "LanetNetwork";
repo = "pingtcp";
hash = "sha256-yGKW/3/smzVvdhkqzf0NWpcthfW9XzXQCnoAD4YlaLM=";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
};
nativeBuildInputs = [ cmake ];
cmakeFlags = [
# fix compatibility with CMake (https://cmake.org/cmake/help/v4.0/command/cmake_minimum_required.html)
(lib.cmakeFeature "CMAKE_POLICY_VERSION_MINIMUM" "4.0")
];
doCheck = false;
postInstall = ''
install -Dm644 {..,$out/share/doc/pingtcp}/README.md
'';
meta = {
description = "Measure TCP handshake time";
homepage = "https://github.com/LanetNetwork/pingtcp";
license = lib.licenses.gpl3;
platforms = lib.platforms.linux;
mainProgram = "pingtcp";
};
})

View File

@@ -0,0 +1,36 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "pingtunnel";
version = "2.8";
src = fetchFromGitHub {
owner = "esrrhs";
repo = "pingtunnel";
rev = version;
hash = "sha256-qkIeE6gNBUUd5/IhcKhDmXZbzeSTR0r6qCAK/Nz7Kew=";
};
vendorHash = "sha256-SkBHFvQn3Q6fl/d1npEspTYhq1YrnusXNWr/Ky4bv64=";
ldflags = [
"-s"
"-w"
];
postInstall = ''
mv $out/bin/cmd $out/bin/pingtunnel
'';
meta = with lib; {
description = "Tool that send TCP/UDP traffic over ICMP";
homepage = "https://github.com/esrrhs/pingtunnel";
license = licenses.mit;
maintainers = with maintainers; [ oluceps ];
mainProgram = "pingtunnel";
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "pingu";
version = "0.0.5";
src = fetchFromGitHub {
owner = "sheepla";
repo = "pingu";
rev = "v${version}";
sha256 = "sha256-iAHj6/qaZgpTfrUZZ9qdsjiNMJ2zH0CzhR4TVSC9oLE=";
};
vendorHash = "sha256-xn6la6E0C5QASXxNee1Py/rBs4ls9X/ePeg4Q1e2UyU=";
meta = with lib; {
description = "Ping command implementation in Go but with colorful output and pingu ascii art";
homepage = "https://github.com/sheepla/pingu/";
license = licenses.mit;
maintainers = with maintainers; [ CactiChameleon9 ];
mainProgram = "pingu";
# Doesn't build with Go toolchain >1.22, build error:
# 'link: golang.org/x/net/internal/socket: invalid reference to syscall.recvmsg'.
broken = true;
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
stdenv,
fetchgit,
cmake,
SDL2,
SDL2_image,
boost,
libpng,
SDL2_mixer,
pkg-config,
libGLU,
libGL,
git,
jsoncpp,
}:
stdenv.mkDerivation {
pname = "pingus";
version = "unstable-0.7.6.0.20191104";
nativeBuildInputs = [
cmake
pkg-config
git
];
buildInputs = [
SDL2
SDL2_image
boost
libpng
SDL2_mixer
libGLU
libGL
jsoncpp
];
src = fetchgit {
url = "https://gitlab.com/pingus/pingus/";
rev = "709546d9b9c4d6d5f45fc9112b45ac10c7f9417d";
sha256 = "11mmzk0766riaw5qyd1r5i7s7vczbbzfccm92bvgrm99iy1sj022";
fetchSubmodules = true;
};
postPatch = ''
# Fix missing gcc-13 headers
sed -e '1i #include <cstdint>' -i src/util/pathname.hpp
'';
meta = {
description = "Puzzle game with mechanics similar to Lemmings";
mainProgram = "pingus";
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.raskin ];
license = lib.licenses.gpl3;
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
vala,
blueprint-compiler,
wrapGAppsHook4,
libadwaita,
libgee,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pinit";
version = "2.2.0";
src = fetchFromGitHub {
owner = "ryonakano";
repo = "pinit";
rev = finalAttrs.version;
hash = "sha256-v/GFgEStQPQxwnPiTCa8gSDj8jZqJkUqLRV/WfBx3Tc=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
vala
blueprint-compiler
wrapGAppsHook4
];
buildInputs = [
libadwaita
libgee
];
meta = {
description = "Pin portable apps to the launcher";
homepage = "https://github.com/ryonakano/pinit";
license = with lib.licenses; [
gpl3Plus
cc0
];
mainProgram = "com.github.ryonakano.pinit";
maintainers = with lib.maintainers; [ aleksana ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,45 @@
{
lib,
stdenv,
fetchFromGitHub,
buildGoModule,
installShellFiles,
}:
buildGoModule rec {
pname = "pinniped";
version = "0.41.0";
src = fetchFromGitHub {
owner = "vmware-tanzu";
repo = "pinniped";
rev = "v${version}";
sha256 = "sha256-PCSRT3oYqfIsB5vWDIBV1tzRovDfrZOjLrINzos1RL0=";
};
subPackages = "cmd/pinniped";
vendorHash = "sha256-UYDmTwbT5odLMthGRqWuSr4G4oAU8zuWWRrMclIaY8g=";
ldflags = [
"-s"
"-w"
];
nativeBuildInputs = [ installShellFiles ];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd pinniped \
--bash <($out/bin/pinniped completion bash) \
--fish <($out/bin/pinniped completion fish) \
--zsh <($out/bin/pinniped completion zsh)
'';
meta = with lib; {
description = "Tool to securely log in to your Kubernetes clusters";
mainProgram = "pinniped";
homepage = "https://pinniped.dev/";
license = licenses.asl20;
maintainers = with maintainers; [ bpaulin ];
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
python3,
fetchFromGitHub,
nixosTests,
}:
with python3.pkgs;
buildPythonApplication rec {
pname = "pinnwand";
version = "1.6.0";
pyproject = true;
src = fetchFromGitHub {
owner = "supakeen";
repo = "pinnwand";
tag = "v${version}";
hash = "sha256-oB7Dd1iVzGqr+5nG7BfZuwOQUgUnmg6ptQDZPGH7P5E=";
};
build-system = [ pdm-pep517 ];
dependencies = [
click
docutils
pygments
pygments-better-html
python-dotenv
sqlalchemy
token-bucket
tomli
tornado
];
nativeCheckInputs = [
gitpython
pytest-asyncio
pytest-cov-stub
pytest-html
pytest-playwright
pytestCheckHook
toml
urllib3
];
disabledTestPaths = [
# out-of-date browser tests
"test/e2e"
];
__darwinAllowLocalNetworking = true;
passthru.tests = nixosTests.pinnwand;
meta = with lib; {
changelog = "https://github.com/supakeen/pinnwand/releases/tag/v${version}";
description = "Python pastebin that tries to keep it simple";
homepage = "https://github.com/supakeen/pinnwand";
license = licenses.mit;
maintainers = with maintainers; [ hexa ];
mainProgram = "pinnwand";
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,115 @@
{
boost,
casadi,
casadiSupport ? true,
cmake,
collisionSupport ? true,
console-bridge,
doxygen,
eigen,
example-robot-data,
fetchFromGitHub,
coal,
jrl-cmakemodules,
lib,
pkg-config,
pythonSupport ? false,
python3Packages,
stdenv,
urdfdom,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pinocchio";
version = "3.7.0";
src = fetchFromGitHub {
owner = "stack-of-tasks";
repo = "pinocchio";
rev = "v${finalAttrs.version}";
hash = "sha256-MykHbHSXY/eJ1+8v0hptiXeVmglU9/wImimiuByw0tE=";
};
outputs = [
"out"
"doc"
];
# test failure, ref https://github.com/stack-of-tasks/pinocchio/issues/2277
prePatch = lib.optionalString (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) ''
substituteInPlace unittest/algorithm/utils/CMakeLists.txt \
--replace-fail "add_pinocchio_unit_test(force)" ""
'';
postPatch = ''
# example-robot-data models are used in checks.
# Upstream provide them as git submodule, but we can use our own version instead.
test -d models/example-robot-data && rmdir models/example-robot-data
ln -s ${example-robot-data.src} models/example-robot-data
# allow package:// uri use in examples
export ROS_PACKAGE_PATH=${example-robot-data}/share
# silence matplotlib warning
export MPLCONFIGDIR=$(mktemp -d)
'';
strictDeps = true;
nativeBuildInputs = [
cmake
doxygen
pkg-config
]
++ lib.optionals pythonSupport [
python3Packages.python
python3Packages.pythonImportsCheckHook
];
propagatedBuildInputs = [
console-bridge
jrl-cmakemodules
urdfdom
]
++ lib.optionals (!pythonSupport) [
boost
eigen
]
++ lib.optionals (!pythonSupport && collisionSupport) [ coal ]
++ lib.optionals pythonSupport [
python3Packages.boost
python3Packages.eigenpy
]
++ lib.optionals (pythonSupport && collisionSupport) [ python3Packages.coal ]
++ lib.optionals (!pythonSupport && casadiSupport) [ casadi ]
++ lib.optionals (pythonSupport && casadiSupport) [ python3Packages.casadi ];
checkInputs = lib.optionals (pythonSupport && casadiSupport) [ python3Packages.matplotlib ];
cmakeFlags = [
(lib.cmakeBool "BUILD_PYTHON_INTERFACE" pythonSupport)
(lib.cmakeBool "BUILD_WITH_LIBPYTHON" pythonSupport)
(lib.cmakeBool "BUILD_WITH_CASADI_SUPPORT" casadiSupport)
(lib.cmakeBool "BUILD_WITH_COLLISION_SUPPORT" collisionSupport)
(lib.cmakeBool "INSTALL_DOCUMENTATION" true)
# Disable test that fails on darwin
# https://github.com/stack-of-tasks/pinocchio/blob/42306ed023b301aafef91e2e76cb070c5e9c3f7d/flake.nix#L24C1-L27C17
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
(lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" "--exclude-regex;pinocchio-example-py-casadi-quadrotor-ocp")
];
doCheck = true;
pythonImportsCheck = [ "pinocchio" ];
meta = {
description = "Fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives";
homepage = "https://github.com/stack-of-tasks/pinocchio";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [
nim65s
wegank
];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,77 @@
{
lib,
stdenv,
fetchurl,
pkgs,
appimageTools,
}:
let
pname = "pinokio";
version = "1.3.4";
src =
fetchurl
{
x86_64-darwin = {
url = "https://github.com/pinokiocomputer/pinokio/releases/download/${version}/Pinokio-${version}.dmg";
hash = "sha256-Il5zaVWu4icSsKmMjU9u1/Mih34fd+xNpF1nkFAFFGo=";
};
x86_64-linux = {
url = "https://github.com/pinokiocomputer/pinokio/releases/download/${version}/Pinokio-${version}.AppImage";
hash = "sha256-/E/IAOUgxH9RWpE2/vLlQy92LOgwpHF79K/1XEtSpXI=";
};
}
.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
appimageContents = appimageTools.extractType2 { inherit pname version src; };
meta = {
homepage = "https://pinokio.computer";
description = "Browser to install, run, and programmatically control ANY application automatically";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ByteSudoer ];
platforms = [
"x86_64-darwin"
"x86_64-linux"
];
mainProgram = "pinokio";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
in
if stdenv.hostPlatform.isDarwin then
stdenv.mkDerivation {
inherit
pname
version
src
meta
;
sourceRoot = ".";
nativeBuildInputs = with pkgs; [ undmg ];
installPhase = ''
runHook preInstall
mkdir -p "$out/Applications"
mv Pinokio.app $out/Applications/
runHook postInstall
'';
}
else
appimageTools.wrapType2 {
inherit
pname
version
src
meta
;
extraInstallCommands = ''
mkdir -p $out/share/pinokio
cp -a ${appimageContents}/{locales,resources} $out/share/pinokio
cp -a ${appimageContents}/usr/share/icons $out/share/
install -Dm 444 ${appimageContents}/pinokio.desktop -t $out/share/applications
'';
}

View File

@@ -0,0 +1,43 @@
{
fetchurl,
lib,
stdenv,
pkg-config,
autoconf,
automake,
clutter,
clutter-gst,
gdk-pixbuf,
cairo,
clutter-gtk,
}:
stdenv.mkDerivation rec {
pname = "pinpoint";
version = "0.1.8";
src = fetchurl {
url = "http://ftp.gnome.org/pub/GNOME/sources/pinpoint/0.1/${pname}-${version}.tar.xz";
sha256 = "1jp8chr9vjlpb5lybwp5cg6g90ak5jdzz9baiqkbg0anlg8ps82s";
};
nativeBuildInputs = [
pkg-config
autoconf
automake
];
buildInputs = [
clutter
clutter-gst
gdk-pixbuf
cairo
clutter-gtk
];
meta = with lib; {
homepage = "https://gitlab.gnome.org/Archive/pinpoint";
description = "Tool for making hackers do excellent presentations";
license = licenses.lgpl21;
platforms = platforms.linux;
maintainers = with maintainers; [ pSub ];
mainProgram = "pinpoint";
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
gtk3,
lua,
glib,
}:
stdenv.mkDerivation {
pname = "pinsel";
version = "unstable-2021-09-13";
src = fetchFromGitHub {
owner = "Nooo37";
repo = "pinsel";
rev = "24b0205ca041511b3efb2a75ef296539442f9f54";
sha256 = "sha256-w+jiKypZODsmZq3uWGNd8PZhe1SowHj0thcQTX8WHfQ=";
};
strictDeps = true;
nativeBuildInputs = [
pkg-config
glib
];
buildInputs = [
lua
gtk3
];
makeFlags = [ "INSTALLDIR=${placeholder "out"}/bin" ];
preInstall = ''
mkdir -p $out/bin
'';
meta = with lib; {
description = "Minimal screenshot annotation tool with lua config";
homepage = "https://github.com/Nooo37/pinsel";
# no license
license = licenses.unfree;
maintainers = with maintainers; [ lom ];
mainProgram = "pinsel";
};
}

732
pkgs/by-name/pi/pinta/deps.json generated Normal file
View File

@@ -0,0 +1,732 @@
[
{
"pname": "GirCore.Adw-1",
"version": "0.6.3",
"hash": "sha256-wV4zTybD7yJldzQORBK2iI/77Fv3C9kjZvtj/S6v48k="
},
{
"pname": "GirCore.Cairo-1.0",
"version": "0.6.3",
"hash": "sha256-IJLzVmWkuCzdyiIqlzXyl8/ZDC6hmnh/bf4+i2HOpLw="
},
{
"pname": "GirCore.FreeType2-2.0",
"version": "0.6.3",
"hash": "sha256-CsH4zQkZukyVw653sphDf5eveuvzY3HVphoO6fvjZiA="
},
{
"pname": "GirCore.Gdk-4.0",
"version": "0.6.3",
"hash": "sha256-3R7ikDBuQJ1iaVb8yuewdLggZ1IVecLuhmjaw1Hzm0s="
},
{
"pname": "GirCore.GdkPixbuf-2.0",
"version": "0.6.3",
"hash": "sha256-HZr3YmNLumXTGIN2CvxYZS9mHzvOvpMhUVJ1/DJlWN4="
},
{
"pname": "GirCore.Gio-2.0",
"version": "0.6.3",
"hash": "sha256-pYc13vCSAH9Or7plQYffBzB/9b83oPNRBf5+HDeT/7w="
},
{
"pname": "GirCore.GLib-2.0",
"version": "0.6.3",
"hash": "sha256-Lsl44qroh+ENO7yBFoySrNgxs8FBeT0nH6PKJ5u+LAI="
},
{
"pname": "GirCore.GObject-2.0",
"version": "0.6.3",
"hash": "sha256-+gerXQbv8HNcFjA76AvtzAG3d+CRb7pPYDaAL+iUPz4="
},
{
"pname": "GirCore.GObject-2.0.Integration",
"version": "0.6.3",
"hash": "sha256-ujkhIzrqeKOcwdwjgzMh3eTcZ2N5PfgvItfyNj7Kc3s="
},
{
"pname": "GirCore.Graphene-1.0",
"version": "0.6.3",
"hash": "sha256-+pDFEj94WNbXD7Fso1xuxkkETjej/O/d1JNW8eV6UPA="
},
{
"pname": "GirCore.Gsk-4.0",
"version": "0.6.3",
"hash": "sha256-vV66rP1vVloB+DA1xPL2iSrJwEmdUDdl209RcRpNP9Q="
},
{
"pname": "GirCore.Gtk-4.0",
"version": "0.6.3",
"hash": "sha256-unQkwxnaoIihD+FWKnJgJNAR4i99qcTcN78SG8WhrZk="
},
{
"pname": "GirCore.HarfBuzz-0.0",
"version": "0.6.3",
"hash": "sha256-8I7+SMTeXBNe6Q/rE7R6WiAYRPuLjfSeDjwllP/n9tM="
},
{
"pname": "GirCore.Pango-1.0",
"version": "0.6.3",
"hash": "sha256-4qPtnqcd1gjt/bz6vyq7L4iA8TyDYTlqkkDD6H150Hs="
},
{
"pname": "GirCore.PangoCairo-1.0",
"version": "0.6.3",
"hash": "sha256-O8SVg5F8OBazisAwxDB66zlup2hB6hvmO7ubdpSJXpI="
},
{
"pname": "Microsoft.CodeAnalysis.Analyzers",
"version": "3.3.4",
"hash": "sha256-qDzTfZBSCvAUu9gzq2k+LOvh6/eRvJ9++VCNck/ZpnE="
},
{
"pname": "Microsoft.CodeAnalysis.Common",
"version": "4.8.0",
"hash": "sha256-3IEinVTZq6/aajMVA8XTRO3LTIEt0PuhGyITGJLtqz4="
},
{
"pname": "Microsoft.CodeAnalysis.CSharp",
"version": "4.8.0",
"hash": "sha256-MmOnXJvd/ezs5UPcqyGLnbZz5m+VedpRfB+kFZeeqkU="
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.0.1",
"hash": "sha256-mZotlGZqtrqDSoBrZhsxFe6fuOv5/BIo0w2Z2x0zVAU="
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.1.0",
"hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.1.1",
"hash": "sha256-8hLiUKvy/YirCWlFwzdejD2Db3DaXhHxT7GSZx/znJg="
},
{
"pname": "Microsoft.NETCore.Targets",
"version": "1.0.1",
"hash": "sha256-lxxw/Gy32xHi0fLgFWNj4YTFBSBkjx5l6ucmbTyf7V4="
},
{
"pname": "Microsoft.NETCore.Targets",
"version": "1.1.0",
"hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="
},
{
"pname": "Microsoft.Win32.Primitives",
"version": "4.3.0",
"hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg="
},
{
"pname": "Mono.Addins",
"version": "1.4.2-alpha.4",
"hash": "sha256-RZk63v41ByKGmv0wT57MfX77+ao8KcWEWtkWogucHYM="
},
{
"pname": "Mono.Addins.CecilReflector",
"version": "1.4.2-alpha.4",
"hash": "sha256-VPVhTWLKJDhOThuu3Z0Yv1DlOFXp+H7olqwY/YpZE2Q="
},
{
"pname": "Mono.Addins.Setup",
"version": "1.4.2-alpha.4",
"hash": "sha256-oPpISiP20NQLlBjkG9fyH0qdgDwl6vxaaykTxVgG9rY="
},
{
"pname": "Mono.Cecil",
"version": "0.10.1",
"hash": "sha256-JlELZujFtdTky8wt4k5lmLbY+hxLSzbAWJN0AHq41/4="
},
{
"pname": "NGettext",
"version": "0.6.7",
"hash": "sha256-fmIODwPZkNJsnoNJG+EL1J5mpbuxYI4BsrgD1B4N2NI="
},
{
"pname": "ParagonClipper",
"version": "6.4.2",
"hash": "sha256-jCT6rkghEqMuGwiVeiIAspHW+kuiB2jRl9ireBwhVV0="
},
{
"pname": "runtime.any.System.Collections",
"version": "4.3.0",
"hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="
},
{
"pname": "runtime.any.System.Diagnostics.Tracing",
"version": "4.3.0",
"hash": "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI="
},
{
"pname": "runtime.any.System.Globalization",
"version": "4.3.0",
"hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="
},
{
"pname": "runtime.any.System.Globalization.Calendars",
"version": "4.3.0",
"hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4="
},
{
"pname": "runtime.any.System.IO",
"version": "4.3.0",
"hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE="
},
{
"pname": "runtime.any.System.Reflection",
"version": "4.3.0",
"hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk="
},
{
"pname": "runtime.any.System.Reflection.Primitives",
"version": "4.3.0",
"hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ="
},
{
"pname": "runtime.any.System.Resources.ResourceManager",
"version": "4.3.0",
"hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4="
},
{
"pname": "runtime.any.System.Runtime",
"version": "4.3.0",
"hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="
},
{
"pname": "runtime.any.System.Runtime.Handles",
"version": "4.3.0",
"hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4="
},
{
"pname": "runtime.any.System.Runtime.InteropServices",
"version": "4.3.0",
"hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA="
},
{
"pname": "runtime.any.System.Text.Encoding",
"version": "4.3.0",
"hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs="
},
{
"pname": "runtime.any.System.Text.Encoding.Extensions",
"version": "4.3.0",
"hash": "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM="
},
{
"pname": "runtime.any.System.Threading.Tasks",
"version": "4.3.0",
"hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="
},
{
"pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps="
},
{
"pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-EbnOqPOrAgI9eNheXLR++VnY4pHzMsEKw1dFPJ/Fl2c="
},
{
"pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I="
},
{
"pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-mVg02TNvJc1BuHU03q3fH3M6cMgkKaQPBxraSHl/Btg="
},
{
"pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA="
},
{
"pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-g9Uiikrl+M40hYe0JMlGHe/lrR0+nN05YF64wzLmBBA="
},
{
"pname": "runtime.native.System",
"version": "4.3.0",
"hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="
},
{
"pname": "runtime.native.System.Net.Http",
"version": "4.3.0",
"hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg="
},
{
"pname": "runtime.native.System.Security.Cryptography",
"version": "4.0.0",
"hash": "sha256-6Q8eYzC32BbGIiTHoQaE6B3cD81vYQcH5SCswYRSp0w="
},
{
"pname": "runtime.native.System.Security.Cryptography.Apple",
"version": "4.3.0",
"hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw="
},
{
"pname": "runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="
},
{
"pname": "runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-xqF6LbbtpzNC9n1Ua16PnYgXHU0LvblEROTfK4vIxX8="
},
{
"pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM="
},
{
"pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-aJBu6Frcg6webvzVcKNoUP1b462OAqReF2giTSyBzCQ="
},
{
"pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4="
},
{
"pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-Mpt7KN2Kq51QYOEVesEjhWcCGTqWckuPf8HlQ110qLY="
},
{
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple",
"version": "4.3.0",
"hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM="
},
{
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0="
},
{
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-JvMltmfVC53mCZtKDHE69G3RT6Id28hnskntP9MMP9U="
},
{
"pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4="
},
{
"pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-QfFxWTVRNBhN4Dm1XRbCf+soNQpy81PsZed3x6op/bI="
},
{
"pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g="
},
{
"pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-EaJHVc9aDZ6F7ltM2JwlIuiJvqM67CKRq682iVSo+pU="
},
{
"pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc="
},
{
"pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-PHR0+6rIjJswn89eoiWYY1DuU8u6xRJLrtjykAMuFmA="
},
{
"pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw="
},
{
"pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.2",
"hash": "sha256-LFkh7ua7R4rI5w2KGjcHlGXLecsncCy6kDXLuy4qD/Q="
},
{
"pname": "runtime.unix.Microsoft.Win32.Primitives",
"version": "4.3.0",
"hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg="
},
{
"pname": "runtime.unix.System.Diagnostics.Debug",
"version": "4.3.0",
"hash": "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI="
},
{
"pname": "runtime.unix.System.IO.FileSystem",
"version": "4.3.0",
"hash": "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I="
},
{
"pname": "runtime.unix.System.Net.Primitives",
"version": "4.3.0",
"hash": "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0="
},
{
"pname": "runtime.unix.System.Private.Uri",
"version": "4.3.0",
"hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="
},
{
"pname": "runtime.unix.System.Runtime.Extensions",
"version": "4.3.0",
"hash": "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4="
},
{
"pname": "SharpZipLib",
"version": "1.3.3",
"hash": "sha256-HWEQTKh9Ktwg/zIl079dAiH+ob2ShWFAqLgG6XgIMr4="
},
{
"pname": "System.Buffers",
"version": "4.3.0",
"hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk="
},
{
"pname": "System.Collections",
"version": "4.0.11",
"hash": "sha256-puoFMkx4Z55C1XPxNw3np8nzNGjH+G24j43yTIsDRL0="
},
{
"pname": "System.Collections",
"version": "4.3.0",
"hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="
},
{
"pname": "System.Collections.Concurrent",
"version": "4.0.12",
"hash": "sha256-zIEM7AB4SyE9u6G8+o+gCLLwkgi6+3rHQVPdn/dEwB8="
},
{
"pname": "System.Collections.Concurrent",
"version": "4.3.0",
"hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI="
},
{
"pname": "System.Collections.Immutable",
"version": "6.0.0",
"hash": "sha256-DKEbpFqXCIEfqp9p3ezqadn5b/S1YTk32/EQK+tEScs="
},
{
"pname": "System.Collections.Immutable",
"version": "7.0.0",
"hash": "sha256-9an2wbxue2qrtugYES9awshQg+KfJqajhnhs45kQIdk="
},
{
"pname": "System.Collections.NonGeneric",
"version": "4.3.0",
"hash": "sha256-8/yZmD4jjvq7m68SPkJZLBQ79jOTOyT5lyzX4SCYAx8="
},
{
"pname": "System.Collections.Specialized",
"version": "4.3.0",
"hash": "sha256-QNg0JJNx+zXMQ26MJRPzH7THdtqjrNtGLUgaR1SdvOk="
},
{
"pname": "System.CommandLine",
"version": "2.0.0-beta4.22272.1",
"hash": "sha256-zSO+CYnMH8deBHDI9DHhCPj79Ce3GOzHCyH1/TiHxcc="
},
{
"pname": "System.Diagnostics.Debug",
"version": "4.0.11",
"hash": "sha256-P+rSQJVoN6M56jQbs76kZ9G3mAWFdtF27P/RijN8sj4="
},
{
"pname": "System.Diagnostics.Debug",
"version": "4.3.0",
"hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM="
},
{
"pname": "System.Diagnostics.DiagnosticSource",
"version": "4.3.0",
"hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw="
},
{
"pname": "System.Diagnostics.Tracing",
"version": "4.1.0",
"hash": "sha256-JA0jJcLbU3zh52ub3zweob2EVHvxOqiC6SCYHrY5WbQ="
},
{
"pname": "System.Diagnostics.Tracing",
"version": "4.3.0",
"hash": "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q="
},
{
"pname": "System.Globalization",
"version": "4.0.11",
"hash": "sha256-rbSgc2PIEc2c2rN6LK3qCREAX3DqA2Nq1WcLrZYsDBw="
},
{
"pname": "System.Globalization",
"version": "4.3.0",
"hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="
},
{
"pname": "System.Globalization.Calendars",
"version": "4.3.0",
"hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc="
},
{
"pname": "System.Globalization.Extensions",
"version": "4.3.0",
"hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk="
},
{
"pname": "System.IO",
"version": "4.1.0",
"hash": "sha256-V6oyQFwWb8NvGxAwvzWnhPxy9dKOfj/XBM3tEC5aHrw="
},
{
"pname": "System.IO",
"version": "4.3.0",
"hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="
},
{
"pname": "System.IO.FileSystem",
"version": "4.0.1",
"hash": "sha256-4VKXFgcGYCTWVXjAlniAVq0dO3o5s8KHylg2wg2/7k0="
},
{
"pname": "System.IO.FileSystem",
"version": "4.3.0",
"hash": "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw="
},
{
"pname": "System.IO.FileSystem.Primitives",
"version": "4.0.1",
"hash": "sha256-IpigKMomqb6pmYWkrlf0ZdpILtRluX2cX5sOKVW0Feg="
},
{
"pname": "System.IO.FileSystem.Primitives",
"version": "4.3.0",
"hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg="
},
{
"pname": "System.Linq",
"version": "4.1.0",
"hash": "sha256-ZQpFtYw5N1F1aX0jUK3Tw+XvM5tnlnshkTCNtfVA794="
},
{
"pname": "System.Linq",
"version": "4.3.0",
"hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A="
},
{
"pname": "System.Net.Http",
"version": "4.3.4",
"hash": "sha256-FMoU0K7nlPLxoDju0NL21Wjlga9GpnAoQjsFhFYYt00="
},
{
"pname": "System.Net.Primitives",
"version": "4.3.0",
"hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE="
},
{
"pname": "System.Private.Uri",
"version": "4.3.0",
"hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="
},
{
"pname": "System.Reflection",
"version": "4.1.0",
"hash": "sha256-idZHGH2Yl/hha1CM4VzLhsaR8Ljo/rV7TYe7mwRJSMs="
},
{
"pname": "System.Reflection",
"version": "4.3.0",
"hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY="
},
{
"pname": "System.Reflection.Emit",
"version": "4.7.0",
"hash": "sha256-Fw/CSRD+wajH1MqfKS3Q/sIrUH7GN4K+F+Dx68UPNIg="
},
{
"pname": "System.Reflection.Metadata",
"version": "7.0.0",
"hash": "sha256-GwAKQhkhPBYTqmRdG9c9taqrKSKDwyUgOEhWLKxWNPI="
},
{
"pname": "System.Reflection.Primitives",
"version": "4.0.1",
"hash": "sha256-SFSfpWEyCBMAOerrMCOiKnpT+UAWTvRcmoRquJR6Vq0="
},
{
"pname": "System.Reflection.Primitives",
"version": "4.3.0",
"hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM="
},
{
"pname": "System.Resources.ResourceManager",
"version": "4.0.1",
"hash": "sha256-cZ2/3/fczLjEpn6j3xkgQV9ouOVjy4Kisgw5xWw9kSw="
},
{
"pname": "System.Resources.ResourceManager",
"version": "4.3.0",
"hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo="
},
{
"pname": "System.Runtime",
"version": "4.1.0",
"hash": "sha256-FViNGM/4oWtlP6w0JC0vJU+k9efLKZ+yaXrnEeabDQo="
},
{
"pname": "System.Runtime",
"version": "4.3.0",
"hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg="
},
{
"pname": "System.Runtime.CompilerServices.Unsafe",
"version": "6.0.0",
"hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="
},
{
"pname": "System.Runtime.Extensions",
"version": "4.1.0",
"hash": "sha256-X7DZ5CbPY7jHs20YZ7bmcXs9B5Mxptu/HnBUvUnNhGc="
},
{
"pname": "System.Runtime.Extensions",
"version": "4.3.0",
"hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o="
},
{
"pname": "System.Runtime.Handles",
"version": "4.0.1",
"hash": "sha256-j2QgVO9ZOjv7D1het98CoFpjoYgxjupuIhuBUmLLH7w="
},
{
"pname": "System.Runtime.Handles",
"version": "4.3.0",
"hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms="
},
{
"pname": "System.Runtime.InteropServices",
"version": "4.1.0",
"hash": "sha256-QceAYlJvkPRJc/+5jR+wQpNNI3aqGySWWSO30e/FfQY="
},
{
"pname": "System.Runtime.InteropServices",
"version": "4.3.0",
"hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="
},
{
"pname": "System.Runtime.Numerics",
"version": "4.0.1",
"hash": "sha256-1pJt5ZGxLPTX1mjOi8qZPXyyOMkYV0NstoUCv91HYPg="
},
{
"pname": "System.Runtime.Numerics",
"version": "4.3.0",
"hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc="
},
{
"pname": "System.Security.Cryptography.Algorithms",
"version": "4.2.0",
"hash": "sha256-BelNIpEyToEp/VYKnje/q1P7KNEpQNtOzGPU18pLGpE="
},
{
"pname": "System.Security.Cryptography.Algorithms",
"version": "4.3.0",
"hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8="
},
{
"pname": "System.Security.Cryptography.Cng",
"version": "4.3.0",
"hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw="
},
{
"pname": "System.Security.Cryptography.Csp",
"version": "4.0.0",
"hash": "sha256-WHyR6vVK3zaT4De7jgQFUar1P5fiX9ECwiVkJDFFm7M="
},
{
"pname": "System.Security.Cryptography.Csp",
"version": "4.3.0",
"hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ="
},
{
"pname": "System.Security.Cryptography.Encoding",
"version": "4.0.0",
"hash": "sha256-ZO7ha39J5uHkIF2RoEKv/bW/bLbVvYMO4+rWyYsKHik="
},
{
"pname": "System.Security.Cryptography.Encoding",
"version": "4.3.0",
"hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss="
},
{
"pname": "System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4="
},
{
"pname": "System.Security.Cryptography.Primitives",
"version": "4.0.0",
"hash": "sha256-sEdPftfTxQd/8DpdpqUZC2XWC0SjVCPqAkEleLl17EQ="
},
{
"pname": "System.Security.Cryptography.Primitives",
"version": "4.3.0",
"hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318="
},
{
"pname": "System.Security.Cryptography.X509Certificates",
"version": "4.3.0",
"hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0="
},
{
"pname": "System.Text.Encoding",
"version": "4.0.11",
"hash": "sha256-PEailOvG05CVgPTyKLtpAgRydlSHmtd5K0Y8GSHY2Lc="
},
{
"pname": "System.Text.Encoding",
"version": "4.3.0",
"hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg="
},
{
"pname": "System.Text.Encoding.Extensions",
"version": "4.3.0",
"hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc="
},
{
"pname": "System.Threading",
"version": "4.0.11",
"hash": "sha256-mob1Zv3qLQhQ1/xOLXZmYqpniNUMCfn02n8ZkaAhqac="
},
{
"pname": "System.Threading",
"version": "4.3.0",
"hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc="
},
{
"pname": "System.Threading.Tasks",
"version": "4.0.11",
"hash": "sha256-5SLxzFg1df6bTm2t09xeI01wa5qQglqUwwJNlQPJIVs="
},
{
"pname": "System.Threading.Tasks",
"version": "4.3.0",
"hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="
},
{
"pname": "Tmds.DBus",
"version": "0.21.2",
"hash": "sha256-1rxUexOuj0raH8FvvUKeGdcWr3u8KmuAySe/4isy6S0="
}
]

View File

@@ -0,0 +1,98 @@
{
lib,
buildDotnetModule,
dotnetCorePackages,
fetchFromGitHub,
glibcLocales,
gtk4,
intltool,
libadwaita,
wrapGAppsHook4,
}:
buildDotnetModule rec {
pname = "Pinta";
version = "3.0.4";
src = fetchFromGitHub {
owner = "PintaProject";
repo = "Pinta";
rev = version;
hash = "sha256-enCVn52wy42a1cXM2YYCg7RHpkzZoDHc52L6xlxQOo0=";
};
nativeBuildInputs = [
intltool
wrapGAppsHook4
];
runtimeDeps = [
gtk4
libadwaita
];
buildInputs = runtimeDeps;
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.runtime_8_0;
# How-to update deps:
# $ nix-build -A pinta.fetch-deps
# $ ./result
# TODO: create update script
nugetDeps = ./deps.json;
projectFile = "Pinta";
# https://github.com/NixOS/nixpkgs/issues/38991
# bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
env.LOCALE_ARCHIVE = "${glibcLocales}/lib/locale/locale-archive";
# Do the autoreconf/Makefile job manually
# TODO: use upstream build system
postBuild = ''
# Substitute translation placeholders
intltool-merge -x po/ xdg/pinta.appdata.xml.in xdg/pinta.appdata.xml
intltool-merge -d po/ xdg/pinta.desktop.in xdg/pinta.desktop
# Build translations
dotnet build Pinta \
--no-restore \
-p:ContinuousIntegrationBuild=true \
-p:Deterministic=true \
-target:CompileTranslations,PublishTranslations \
-p:BuildTranslations=true \
-p:PublishDir="$NIX_BUILD_TOP/source/publish"
'';
postFixup = ''
# Rename the binary
mv "$out/bin/Pinta" "$out/bin/pinta"
# Copy runtime icons
for i in "Pinta.Resources/icons/hicolor/"*; do
res="$(basename $i)"
mkdir -p "$out/share/icons/hicolor/$res"
cp -rv "Pinta.Resources/icons/hicolor/$res/"* "$out/share/icons/hicolor/$res/"
done
# Install
dotnet build installer/linux/install.proj \
-target:Install \
-p:ContinuousIntegrationBuild=true \
-p:Deterministic=true \
-p:SourceDir="$NIX_BUILD_TOP/source" \
-p:PublishDir="$NIX_BUILD_TOP/source/publish" \
-p:InstallPrefix="$out"
'';
meta = {
homepage = "https://www.pinta-project.com/";
description = "Drawing/editing program modeled after Paint.NET";
changelog = "https://github.com/PintaProject/Pinta/releases/tag/${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ thiagokokada ];
platforms = lib.platforms.linux;
mainProgram = "pinta";
};
}

View File

@@ -0,0 +1,26 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "pinyin-tool";
version = "0.1.3";
src = fetchFromGitHub {
owner = "briankung";
repo = "pinyin-tool";
rev = version;
sha256 = "1gwqwxlvdrm4sdyqkvpvvfi6jh6qqn6qybn0z66wm06k62f8zj5b";
};
cargoHash = "sha256-SOeyk2uWCdO99ooQc2L1eXlV77lR4DLBK6PnV6Ur49A=";
meta = with lib; {
description = "Simple command line tool for converting Chinese characters to space-separate pinyin words";
mainProgram = "pinyin-tool";
homepage = "https://github.com/briankung/pinyin-tool";
license = licenses.mit;
};
}

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