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,34 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation rec {
pname = "public-sans";
version = "2.001";
src = fetchzip {
url = "https://github.com/uswds/public-sans/releases/download/v${version}/public-sans-v${version}.zip";
stripRoot = false;
hash = "sha256-XFs/UMXI/kdrW+53t8Mj26+Rn5p+LQ6KW2K2/ShoIag=";
};
installPhase = ''
runHook preInstall
install -Dm644 */*/*.otf -t $out/share/fonts/opentype
install -Dm644 */*/*.ttf -t $out/share/fonts/truetype
runHook postInstall
'';
meta = {
description = "Strong, neutral, principles-driven, open source typeface for text or display";
homepage = "https://public-sans.digital.gov/";
changelog = "https://github.com/uswds/public-sans/raw/v${version}/FONTLOG.txt";
license = lib.licenses.ofl;
maintainers = [ ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
unstableGitUpdater,
}:
stdenvNoCC.mkDerivation {
pname = "publicsuffix-list";
version = "0-unstable-2025-08-28";
src = fetchFromGitHub {
owner = "publicsuffix";
repo = "list";
rev = "4103956c4300902436b03d7da482536e757b3601";
hash = "sha256-QIjDAbPfbdV+V4RV6v8/85YTxiRbXLBlulObXpkPmxQ=";
};
dontBuild = true;
installPhase = ''
runHook preInstall
install -Dm0444 public_suffix_list.dat tests/test_psl.txt -t $out/share/publicsuffix
runHook postInstall
'';
passthru.updateScript = unstableGitUpdater { };
meta = with lib; {
homepage = "https://publicsuffix.org/";
description = "Cross-vendor public domain suffix database";
platforms = platforms.all;
license = licenses.mpl20;
maintainers = [ maintainers.c0bw3b ];
};
}

View File

@@ -0,0 +1,111 @@
{
stdenv,
lib,
fetchurl,
autoPatchelfHook,
makeShellWrapper,
wrapGAppsHook3,
alsa-lib,
at-spi2-atk,
at-spi2-core,
atk,
cairo,
cups,
dbus,
expat,
glib,
glibc,
gtk3,
libsecret,
libgbm,
musl,
nss,
pango,
udev,
xdg-utils,
xorg,
}:
stdenv.mkDerivation rec {
pname = "publii";
version = "0.46.5";
src = fetchurl {
url = "https://getpublii.com/download/Publii-${version}.deb";
hash = "sha256-VymAHQNv3N7Mqe8wiUfYawi1BooczLFClxuwaW8NetA=";
};
dontConfigure = true;
dontBuild = true;
dontWrapGApps = true;
nativeBuildInputs = [
autoPatchelfHook
makeShellWrapper
wrapGAppsHook3
];
buildInputs = [
alsa-lib
at-spi2-atk
at-spi2-core
atk
cairo
cups
dbus
expat
glib
glibc
gtk3
libsecret
libgbm
musl
nss
pango
xorg.libX11
xorg.libxcb
];
unpackPhase = ''
ar p $src data.tar.xz | tar xJ
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv usr/share $out
substituteInPlace $out/share/applications/Publii.desktop \
--replace-fail 'Exec=/opt/Publii/Publii' 'Exec=Publii'
mv opt $out
runHook postInstall
'';
preFixup = ''
makeWrapper $out/opt/Publii/Publii $out/bin/Publii \
"''${gappsWrapperArgs[@]}" \
--suffix PATH : ${lib.makeBinPath [ xdg-utils ]} \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ udev ]}
'';
meta = {
description = "Static Site CMS with GUI to build privacy-focused SEO-friendly website";
mainProgram = "Publii";
longDescription = ''
Creating a website doesn't have to be complicated or expensive. With Publii, the most
intuitive static site CMS, you can create a beautiful, safe, and privacy-friendly website
quickly and easily; perfect for anyone who wants a fast, secure website in a flash.
'';
homepage = "https://getpublii.com";
changelog = "https://github.com/getpublii/publii/releases/tag/v${version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
urandom
sebtm
];
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,85 @@
{
lib,
fetchFromGitHub,
fetchpatch,
python3,
}:
python3.pkgs.buildPythonApplication rec {
pname = "pubs";
version = "0.9.0";
pyproject = true;
src = fetchFromGitHub {
owner = "pubs";
repo = "pubs";
tag = "v${version}";
hash = "sha256-U/9MLqfXrzYVGttFSafw4pYDy26WgdsJMCxciZzO1pw=";
};
patches = [
# https://github.com/pubs/pubs/pull/278
(fetchpatch {
url = "https://github.com/pubs/pubs/commit/9623d2c3ca8ff6d2bb7f6c8d8624f9a174d831bc.patch";
hash = "sha256-6qoufKPv3k6C9BQTZ2/175Nk7zWPh89vG+zebx6ZFOk=";
})
# https://github.com/pubs/pubs/pull/279
(fetchpatch {
url = "https://github.com/pubs/pubs/commit/05e214eb406447196c77c8aa3e4658f70e505f23.patch";
hash = "sha256-UBkKiYaG6y6z8lsRpdcsaGsoklv6qj07KWdfkQcVl2g=";
})
];
build-system = with python3.pkgs; [
setuptools
];
dependencies = with python3.pkgs; [
argcomplete
beautifulsoup4
bibtexparser
configobj
feedparser
python-dateutil
pyyaml
requests
six
standard-pipes # https://github.com/pubs/pubs/issues/282
];
nativeCheckInputs = with python3.pkgs; [
ddt
mock
pyfakefs
pytestCheckHook
];
disabledTestPaths = [
# Disabling git tests because they expect git to be preconfigured
# with the user's details. See
# https://github.com/NixOS/nixpkgs/issues/94663
"tests/test_git.py"
];
disabledTests = [
# https://github.com/pubs/pubs/issues/276
"test_readme"
# AssertionError: Lists differ: ['Ini[112 chars]d to...
"test_add_non_standard"
];
pythonImportsCheck = [
"pubs"
];
meta = {
description = "Command-line bibliography manager";
mainProgram = "pubs";
homepage = "https://github.com/pubs/pubs";
changelog = "https://github.com/pubs/pubs/blob/v${version}/changelog.md";
license = lib.licenses.lgpl3Only;
maintainers = with lib.maintainers; [
dotlambda
];
};
}

View File

@@ -0,0 +1,80 @@
{
lib,
fetchFromGitHub,
python3,
libsForQt5,
}:
let
qt = libsForQt5;
in
python3.pkgs.buildPythonApplication rec {
pname = "puddletag";
version = "2.5.0";
format = "setuptools";
src = fetchFromGitHub {
owner = "puddletag";
repo = "puddletag";
tag = version;
hash = "sha256-Per+olIi2yd2cNRO22Fi6cC7/90AqRP1NpRK1XU1i0A=";
};
pythonRelaxDeps = true;
pythonRemoveDeps = [
"chromaprint"
"pyqt5-qt5"
];
postPatch = ''
substituteInPlace setup.py \
--replace-fail share/pixmaps share/icons
'';
buildInputs = with qt; [
qtbase
qtwayland
];
nativeBuildInputs = with qt; [
wrapQtAppsHook
];
dependencies = with python3.pkgs; [
configobj
levenshtein
lxml
mutagen
pyacoustid
pyparsing
pyqt5
rapidfuzz
unidecode
];
# the file should be executable but it isn't so our wrapper doesn't run
preFixup = ''
chmod 555 $out/bin/puddletag
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
'';
doCheck = false; # there are no tests
dontWrapQtApps = true; # to avoid double-wrapping
dontStrip = true; # we are not generating any binaries
meta = {
description = "Audio tag editor similar to the Windows program, Mp3tag";
mainProgram = "puddletag";
homepage = "https://docs.puddletag.net";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
peterhoeg
dschrempf
];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchFromGitHub,
installShellFiles,
libiconv,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "pueue";
version = "4.0.1";
src = fetchFromGitHub {
owner = "Nukesor";
repo = "pueue";
rev = "v${version}";
hash = "sha256-m6mXq62imJ9yVpH6M8O3I7Z4FDdnEtp9ADfMjD4RDM4=";
};
cargoHash = "sha256-E2mLpRCffFySzBZVtxS4YZPuTRhjU4LrFEfC1dbF6ug=";
nativeBuildInputs = [
installShellFiles
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
rustPlatform.bindgenHook
];
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
libiconv
];
checkFlags = [
"--test client_tests"
"--skip=test_single_huge_payload"
"--skip=test_create_unix_socket"
];
postInstall = ''
for shell in bash fish zsh; do
$out/bin/pueue completions $shell .
done
installShellCompletion pueue.{bash,fish} _pueue
'';
meta = {
homepage = "https://github.com/Nukesor/pueue";
description = "Daemon for managing long running shell commands";
longDescription = ''
Pueue is a command-line task management tool for sequential and parallel
execution of long-running tasks.
Simply put, it's a tool that processes a queue of shell commands. On top
of that, there are a lot of convenient features and abstractions.
Since Pueue is not bound to any terminal, you can control your tasks from
any terminal on the same machine. The queue will be continuously
processed, even if you no longer have any active ssh sessions.
'';
changelog = "https://github.com/Nukesor/pueue/blob/v${version}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ sarcasticadmin ];
};
}

View File

@@ -0,0 +1,146 @@
diff --git a/go.mod b/go.mod
index e7ed3367..6022e4cd 100644
--- a/go.mod
+++ b/go.mod
@@ -36,9 +36,9 @@ require (
github.com/stretchr/testify v1.8.3
github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a
github.com/swaggo/gin-swagger v1.5.3
- github.com/swaggo/swag v1.8.8
- golang.org/x/crypto v0.9.0
- golang.org/x/sys v0.8.0
+ github.com/swaggo/swag v1.16.3
+ golang.org/x/crypto v0.14.0
+ golang.org/x/sys v0.13.0
gopkg.in/go-playground/validator.v9 v9.31.0
gorm.io/driver/mysql v1.4.4
gorm.io/driver/postgres v1.4.5
@@ -132,7 +132,7 @@ require (
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
github.com/pierrec/lz4/v4 v4.1.2 // indirect
- github.com/pjbgf/sha1cd v0.2.0 // indirect
+ github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/robfig/cron/v3 v3.0.1 // indirect
github.com/rogpeppe/go-internal v1.9.0 // indirect
@@ -151,12 +151,12 @@ require (
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
github.com/yusufpapurcu/wmi v1.2.2 // indirect
golang.org/x/arch v0.3.0 // indirect
- golang.org/x/mod v0.8.0 // indirect
- golang.org/x/net v0.10.0 // indirect
+ golang.org/x/mod v0.9.0 // indirect
+ golang.org/x/net v0.17.0 // indirect
golang.org/x/sync v0.1.0 // indirect
- golang.org/x/term v0.8.0 // indirect
- golang.org/x/text v0.9.0 // indirect
- golang.org/x/tools v0.6.0 // indirect
+ golang.org/x/term v0.13.0 // indirect
+ golang.org/x/text v0.13.0 // indirect
+ golang.org/x/tools v0.7.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
diff --git a/go.sum b/go.sum
index 5be69957..b70625d4 100644
--- a/go.sum
+++ b/go.sum
@@ -497,8 +497,9 @@ github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZ
github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
github.com/pierrec/lz4/v4 v4.1.2 h1:qvY3YFXRQE/XB8MlLzJH7mSzBs74eA2gg52YTk6jUPM=
github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
-github.com/pjbgf/sha1cd v0.2.0 h1:gIsJVwjbRviE4gydidGztxH1IlJQoYBcCrwG4Dz8wvM=
github.com/pjbgf/sha1cd v0.2.0/go.mod h1:HOK9QrgzdHpbc2Kzip0Q1yi3M2MFGPADtR6HjG65m5M=
+github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
+github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ=
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -579,8 +580,8 @@ github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a/go.mod h1:lKJPbtWzJ9J
github.com/swaggo/gin-swagger v1.5.3 h1:8mWmHLolIbrhJJTflsaFoZzRBYVmEE7JZGIq08EiC0Q=
github.com/swaggo/gin-swagger v1.5.3/go.mod h1:3XJKSfHjDMB5dBo/0rrTXidPmgLeqsX89Yp4uA50HpI=
github.com/swaggo/swag v1.8.1/go.mod h1:ugemnJsPZm/kRwFUnzBlbHRd0JY9zE1M4F+uy2pAaPQ=
-github.com/swaggo/swag v1.8.8 h1:/GgJmrJ8/c0z4R4hoEPZ5UeEhVGdvsII4JbVDLbR7Xc=
-github.com/swaggo/swag v1.8.8/go.mod h1:ezQVUUhly8dludpVk+/PuwJWvLLanB13ygV5Pr9enSk=
+github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg=
+github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk=
github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM=
github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI=
github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms=
@@ -651,8 +652,8 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
-golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
-golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
+golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
+golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -688,8 +689,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
+golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -733,8 +734,8 @@ golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
-golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
-golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
+golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -828,16 +829,16 @@ golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
-golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
+golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
-golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=
+golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -847,8 +848,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -912,8 +913,8 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
+golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

View File

@@ -0,0 +1,34 @@
diff --git a/cmd/main.go b/cmd/main.go
index f9af7038..099ff2e2 100644
--- a/cmd/main.go
+++ b/cmd/main.go
@@ -24,11 +24,6 @@ import (
)
func main() {
- if !pufferpanel.UserInGroup("pufferpanel") {
- fmt.Println("You do not have permission to use this command")
- return
- }
-
defer logging.Close()
defer func() {
diff --git a/cmd/user.go b/cmd/user.go
index d4a27aaf..9bf21910 100644
--- a/cmd/user.go
+++ b/cmd/user.go
@@ -218,10 +218,9 @@ type userCreate struct {
}
func editUser(cmd *cobra.Command, args []string) {
- if !pufferpanel.UserInGroup() {
- fmt.Printf("You do not have permission to use this command")
- return
- }
+ // Keeping import to avoid merge conflicts with future updates in case
+ // PufferPanel starts using this import elsewhere in this file.
+ _ = pufferpanel.UserInGroup
db, err := database.GetConnection()
if err != nil {

View File

@@ -0,0 +1,114 @@
{
lib,
fetchFromGitHub,
buildGoModule,
buildNpmPackage,
makeWrapper,
go-swag,
nixosTests,
testers,
pufferpanel,
}:
buildGoModule rec {
pname = "pufferpanel";
version = "2.6.9";
src = fetchFromGitHub {
owner = "PufferPanel";
repo = "PufferPanel";
rev = "v${version}";
hash = "sha256-+ZZUoqCiSbrkaeYrm9X8SuX0INsGFegQNwa3WjBvgHQ=";
};
patches = [
# Bump sha1cd package, otherwise i686-linux fails to build.
# Also bump github.com/swaggo/swag for PR 257790.
./deps.patch
# Seems to be an anti-feature. Startup is the only place where user/group is
# hardcoded and checked.
#
# There is no technical reason PufferPanel cannot run as a different user,
# especially for simple commands like `pufferpanel version`.
./disable-group-checks.patch
# Some tests do not have network requests stubbed :(
./skip-network-tests.patch
];
ldflags = [
"-s"
"-w"
"-X=github.com/pufferpanel/pufferpanel/v2.Hash=none"
"-X=github.com/pufferpanel/pufferpanel/v2.Version=${version}-nixpkgs"
];
frontend = buildNpmPackage {
pname = "pufferpanel-frontend";
inherit version;
src = "${src}/client";
npmDepsHash = "sha256-oWFXtV/dxzHv3sfIi01l1lHE5tcJgpVq87XgS6Iy62g=";
NODE_OPTIONS = "--openssl-legacy-provider";
npmBuildFlags = [
"--"
"--dest=${placeholder "out"}"
];
dontNpmInstall = true;
};
nativeBuildInputs = [
makeWrapper
go-swag
];
vendorHash = "sha256-1U7l7YW1fu5M0/pPHTLamLsTQdEltesRODUn21SuP8w=";
proxyVendor = true;
# Generate code for Swagger documentation endpoints (see web/swagger/docs.go).
# Note that GOROOT embedded in go-swag is empty by default since it is built
# with -trimpath (see https://go.dev/cl/399214). It looks like go-swag skips
# file paths that start with $GOROOT, thus all files when it is empty.
preBuild = ''
GOROOT=''${GOROOT-$(go env GOROOT)} swag init --output web/swagger --generalInfo web/loader.go
'';
installPhase = ''
runHook preInstall
# Set up directory structure similar to the official PufferPanel releases.
mkdir -p $out/share/pufferpanel
cp "$GOPATH"/bin/cmd $out/share/pufferpanel/pufferpanel
cp -r $frontend $out/share/pufferpanel/www
cp -r $src/assets/email $out/share/pufferpanel/email
cp web/swagger/swagger.{json,yaml} $out/share/pufferpanel
# Wrap the binary with the path to the external files, but allow setting
# custom paths if needed.
makeWrapper $out/share/pufferpanel/pufferpanel $out/bin/pufferpanel \
--set-default GIN_MODE release \
--set-default PUFFER_PANEL_EMAIL_TEMPLATES $out/share/pufferpanel/email/emails.json \
--set-default PUFFER_PANEL_WEB_FILES $out/share/pufferpanel/www
runHook postInstall
'';
passthru.tests = {
inherit (nixosTests) pufferpanel;
version = testers.testVersion {
package = pufferpanel;
command = "${pname} version";
};
};
meta = with lib; {
description = "Free, open source game management panel";
homepage = "https://www.pufferpanel.com/";
license = with licenses; [ asl20 ];
maintainers = with maintainers; [ tie ];
mainProgram = "pufferpanel";
};
}

View File

@@ -0,0 +1,61 @@
diff --git a/operations/javadl/javadl_test.go b/operations/javadl/javadl_test.go
index 3938a58c..a51e2f4a 100644
--- a/operations/javadl/javadl_test.go
+++ b/operations/javadl/javadl_test.go
@@ -22,6 +22,8 @@ import (
)
func Test_downloadJava(t *testing.T) {
+ t.Skip("requires network access")
+
tests := []struct {
name string
wantErr bool
diff --git a/operations/spongedl/spongedl_test.go b/operations/spongedl/spongedl_test.go
index efb1665c..1b93be8c 100644
--- a/operations/spongedl/spongedl_test.go
+++ b/operations/spongedl/spongedl_test.go
@@ -5,6 +5,8 @@ import (
)
func TestSpongeDl_Run(t *testing.T) {
+ t.Skip("requires network access")
+
type fields struct {
Recommended bool
SpongeType string
diff --git a/operations/steamgamedl/dl_test.go b/operations/steamgamedl/dl_test.go
index f4df4bf3..f7cd9681 100644
--- a/operations/steamgamedl/dl_test.go
+++ b/operations/steamgamedl/dl_test.go
@@ -19,6 +19,8 @@ import (
)
func Test_downloadSteamcmd(t *testing.T) {
+ t.Skip("requires network access")
+
tests := []struct {
name string
wantErr bool
diff --git a/services/templates_test.go b/services/templates_test.go
index 5305dbc0..127efc54 100644
--- a/services/templates_test.go
+++ b/services/templates_test.go
@@ -9,6 +9,8 @@ import (
)
func TestTemplate_GetImportableTemplates(t1 *testing.T) {
+ t1.Skip("requires network access")
+
t1.Run("GetImportableTemplates", func(t1 *testing.T) {
t := &Template{}
@@ -26,6 +28,8 @@ func TestTemplate_GetImportableTemplates(t1 *testing.T) {
}
func TestTemplate_ImportTemplates(t1 *testing.T) {
+ t1.Skip("requires network access")
+
t1.Run("GetImportableTemplates", func(t1 *testing.T) {
db := prepareDatabase(t1)
if t1.Failed() {

View File

@@ -0,0 +1,26 @@
{
lib,
fetchFromGitHub,
buildGoModule,
}:
buildGoModule rec {
pname = "puffin";
version = "2.1.5";
src = fetchFromGitHub {
owner = "siddhantac";
repo = "puffin";
rev = "v${version}";
hash = "sha256-cXhnCCg5A/G/FKWfCpq130qSD1iTGpgidqzGGnIPqO8=";
};
vendorHash = "sha256-ZxAqR3D5VUtbntktrpnywPG3m9rq1utO4fdum0Qe6TU=";
meta = {
description = "Beautiful terminal dashboard for hledger";
homepage = "https://github.com/siddhantac/puffin";
license = lib.licenses.mit;
mainProgram = "puffin";
maintainers = with lib.maintainers; [ renesat ];
};
}

View File

@@ -0,0 +1,48 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
check,
validatePkgConfig,
shared ? false,
}:
stdenv.mkDerivation rec {
pname = "pugixml";
version = "1.15";
src = fetchFromGitHub {
owner = "zeux";
repo = "pugixml";
tag = "v${version}";
hash = "sha256-t/57lg32KgKPc7qRGQtO/GOwHRqoj78lllSaE/A8Z9Q=";
};
outputs = [ "out" ] ++ lib.optionals shared [ "dev" ];
nativeBuildInputs = [
cmake
validatePkgConfig
];
cmakeFlags = [
(lib.cmakeBool "BUILD_TESTS" true)
(lib.cmakeBool "BUILD_SHARED_LIBS" shared)
];
nativeCheckInputs = [ check ];
preConfigure = ''
# Enable long long support (required for filezilla)
sed -i -e '/PUGIXML_HAS_LONG_LONG/ s/^\/\///' src/pugiconfig.hpp
'';
meta = {
description = "Light-weight, simple and fast XML parser for C++ with XPath support";
homepage = "https://pugixml.org";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pSub ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,65 @@
{
stdenv,
lib,
meson,
fetchFromGitHub,
pkg-config,
xorg,
libGL,
cairo,
glslang,
python3,
doxygen,
vulkan-loader,
vulkan-headers,
sphinx,
sphinxygen,
ninja,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pugl";
version = "0-unstable-2024-10-06";
src = fetchFromGitHub {
owner = "lv2";
repo = "pugl";
rev = "edd13c1b952b16633861855fcdbdd164e87b3c0a";
hash = "sha256-s7uvA3F16VxJgaKlQWQP9rQtzzlD1NuebIgR5L3yHw4=";
};
postPatch = ''
patchShebangs .
'';
nativeBuildInputs = [
meson
ninja
python3
pkg-config
doxygen
glslang
sphinxygen
sphinx
python3.pkgs.sphinx-lv2-theme
];
buildInputs = [
xorg.libX11
xorg.libXcursor
xorg.libXrandr
libGL
vulkan-loader
vulkan-headers
xorg.libXext
cairo
];
meta = {
homepage = "https://github.com/lv2/pugl";
maintainers = with lib.maintainers; [ bot-wxt1221 ];
platforms = lib.platforms.unix;
license = lib.licenses.isc;
description = "Minimal portable API for embeddable GUIs";
};
})

View File

@@ -0,0 +1,25 @@
{
lib,
rustPlatform,
fetchCrate,
}:
rustPlatform.buildRustPackage rec {
pname = "pulldown-cmark";
version = "0.13.0";
src = fetchCrate {
inherit pname version;
hash = "sha256-lp0ywX/3phfC30QvYkO2wFZNSinP4cdm4HY744EZ02o=";
};
cargoHash = "sha256-ek6Eczqb/kxxoZFakGcwrgqXAtNCtQxDX2PHdOcIUjU=";
meta = {
description = "Pull parser for CommonMark written in Rust";
homepage = "https://github.com/raphlinus/pulldown-cmark";
license = with lib.licenses; [ mit ];
maintainers = with lib.maintainers; [ CobaltCause ];
mainProgram = "pulldown-cmark";
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
openssl,
libgit2,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "pullomatic";
version = "0.2.2";
src = fetchFromGitHub {
owner = "fooker";
repo = "pullomatic";
tag = "v${finalAttrs.version}";
hash = "sha256-qPuJ2mqbqQQxncsz5DexOYyNctIInX0Of5mdAGu/t/M=";
};
cargoHash = "sha256-+B/DzDaF3qQlPzjh97CBMAseyeUClgsgzE0EJ8kTlqg=";
nativeBuildInputs = [
pkg-config
];
buildInputs = [
openssl
libgit2
];
passthru.updateScript = nix-update-script { };
meta = {
description = "Automates Git repository syncing through pure configuration";
homepage = "https://github.com/fooker/pullomatic";
license = lib.licenses.mit;
mainProgram = "pullomatic";
maintainers = with lib.maintainers; [ fooker ];
};
})

View File

@@ -0,0 +1,261 @@
{
lib,
stdenv,
git,
git-lfs,
fetchurl,
wrapGAppsHook3,
alsa-lib,
at-spi2-atk,
cairo,
coreutils,
cups,
dbus,
expat,
gdk-pixbuf,
glib,
gtk3,
libgbm,
nss,
nspr,
xorg,
libdrm,
libsecret,
libxkbcommon,
pango,
systemd,
hunspellDicts,
useHunspell ? true,
languages ? [ "en_US" ],
withNemoAction ? true,
makeDesktopItem,
copyDesktopItems,
asar,
python3,
}:
let
pname = "pulsar";
version = "1.129.0";
sourcesPath =
{
x86_64-linux.tarname = "Linux.${pname}-${version}.tar.gz";
x86_64-linux.hash = "sha256-Iq+mYI8vldBroU/1ztVhWfbDUh9GiFjrSIzW0Qtgnvc=";
aarch64-linux.tarname = "ARM.Linux.${pname}-${version}-arm64.tar.gz";
aarch64-linux.hash = "sha256-hQBMxonnUSEoa0ATISuCoWh0scv/GPf6Tq55l+I1/n0=";
}
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
newLibpath = lib.makeLibraryPath [
alsa-lib
at-spi2-atk
cairo
cups
dbus
expat
gdk-pixbuf
glib
gtk3
libsecret
libgbm
nss
nspr
libdrm
xorg.libX11
xorg.libxcb
xorg.libXcomposite
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXrandr
xorg.libxshmfence
libxkbcommon
xorg.libxkbfile
pango
stdenv.cc.cc
systemd
];
# Hunspell
hunspellDirs = map (lang: "${hunspellDicts.${lang}}/share/hunspell") languages;
hunspellTargetDirs = "$out/opt/Pulsar/resources/app.asar.unpacked/node_modules/spellchecker/vendor/hunspell_dictionaries";
hunspellCopyCommands = lib.concatMapStringsSep "\n" (
lang: "cp -r ${lang}/* ${hunspellTargetDirs};"
) hunspellDirs;
in
stdenv.mkDerivation {
inherit pname version;
src =
with sourcesPath;
fetchurl {
url = "https://github.com/pulsar-edit/pulsar/releases/download/v${version}/${tarname}";
inherit hash;
};
nativeBuildInputs = [
wrapGAppsHook3
copyDesktopItems
asar
];
buildInputs = [
gtk3
xorg.libxkbfile
];
dontBuild = true;
dontConfigure = true;
installPhase = ''
runHook preInstall
mkdir -p $out/opt/Pulsar
mv * $out/opt/Pulsar
runHook postInstall
'';
preFixup = ''
gappsWrapperArgs+=(
# needed for gio executable to be able to delete files
--prefix "PATH" : "${lib.makeBinPath [ glib ]}"
)
''
+ lib.optionalString useHunspell ''
# On all platforms, we must inject our dictionnaries
${hunspellCopyCommands}
'';
postFixup = ''
opt=$out/opt/Pulsar
# Patch the prebuilt binaries
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${newLibpath}:$opt" \
--add-needed libffmpeg.so \
--add-needed libxshmfence.so.1 \
--add-needed libxkbcommon.so.0 \
--add-needed libxkbfile.so.1 \
--add-needed libsecret-1.so.0 \
$opt/pulsar
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${newLibpath}" \
$opt/resources/app/ppm/bin/node
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
$opt/resources/app.asar.unpacked/node_modules/symbol-provider-ctags/vendor/ctags-linux
# Replace the bundled git with the one from nixpkgs
dugite=$opt/resources/app.asar.unpacked/node_modules/dugite
rm -f $dugite/git/bin/git
ln -s ${git}/bin/git $dugite/git/bin/git
# Not only do we need to replace the git binary itself, we also need to replace
# all the symlinks in dugite/git/libexec/git-core.
for file in "$dugite/git/libexec/git-core"/*; do
if [ -x "$file" ] && file "$file" | grep -q "ELF"; then
# Remove ELF executable
rm "$file"
# Get the corresponding filename in nixpkgs's git
filename=$(basename "$file")
git_executable="${git}/libexec/git-core/$filename"
# Create symlink to $git_executable
ln -s "$git_executable" "$file"
echo "Replaced $file with symlink to $git_executable"
fi
done
# Was symlinked in previous loop, but actually, nixpkgs has a separate package for git-lfs
# Unlink to avoid a "File exists" error and relink correctly
unlink $dugite/git/libexec/git-core/git-lfs
ln -s ${git-lfs}/bin/git-lfs $dugite/git/libexec/git-core/git-lfs
''
+ lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux") ''
# We have to patch a prebuilt binary in the asar archive
# But asar complains because the node_gyp unpacked dependency uses a prebuilt Python3 itself
rm $opt/resources/app.asar.unpacked/node_modules/tree-sitter-bash/build/node_gyp_bins/python3
ln -s ${python3.interpreter} $opt/resources/app.asar.unpacked/node_modules/tree-sitter-bash/build/node_gyp_bins/python3
''
+ ''
# Patch the bundled node executables
find $opt -name "*.node" -exec patchelf --set-rpath "${newLibpath}:$opt" {} \;
# Also patch the node executable for apm
patchelf --set-rpath "${newLibpath}:$opt" $opt/resources/app/ppm/bin/node
# The pre-packaged ASAR bundle comes with prebuild binaries, expecting libstdc++.so.6
asarBundle=$TMPDIR/asarbundle
asar e $opt/resources/app.asar $asarBundle
find $asarBundle -name "*.node" -exec patchelf --set-rpath "${newLibpath}:$opt" --add-needed libstdc++.so.6 {} \;
unlink $asarBundle/node_modules/document-register-element/dre # Self referencing symlink, breaking asar rebundling
asar p $asarBundle $opt/resources/app.asar
rm -rf $asarBundle
# Pulsar uses `PULSAR_PATH` to know where it is intalled
mkdir -p $out/bin
wrapProgram $opt/resources/pulsar.sh \
--suffix "PATH" : "${lib.makeBinPath [ coreutils ]}" \
--set "PULSAR_PATH" "$opt"
ln -s $opt/resources/pulsar.sh $out/bin/pulsar
ln -s $opt/resources/app/ppm/bin/apm $out/bin/ppm
# Copy the icons
mkdir -p $out/share/icons/hicolor/scalable/apps $out/share/icons/hicolor/1024x1024/apps
cp $opt/resources/pulsar.svg $out/share/icons/hicolor/scalable/apps/pulsar.svg
cp $opt/resources/pulsar.png $out/share/icons/hicolor/1024x1024/apps/pulsar.png
''
+ lib.optionalString withNemoAction ''
# Copy the nemo action file
mkdir -p $out/share/nemo/actions
cp ${./pulsar.nemo_action} $out/share/nemo/actions/pulsar.nemo_action
'';
desktopItems = [
(makeDesktopItem {
name = "Pulsar";
desktopName = "Pulsar";
exec = "pulsar";
icon = "pulsar";
comment = "A Community-led Hyper-Hackable Text Editor";
genericName = "Text Editor";
categories = [
"Development"
"TextEditor"
"Utility"
];
mimeTypes = [ "text/plain" ];
})
];
passthru.updateScript = ./update.mjs;
meta = {
description = "Community-led Hyper-Hackable Text Editor";
longDescription = ''
A Community-led Hyper-Hackable Text Editor, Forked from Atom, built on Electron.
Designed to be deeply customizable, but still approachable using the default configuration.
'';
homepage = "https://github.com/pulsar-edit/pulsar";
changelog = "https://github.com/pulsar-edit/pulsar/blob/v${version}/CHANGELOG.md";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.mit;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
bryango
pbsds
];
knownVulnerabilities = [
# electron 12.2.3, efforts are in place to bump it
"CVE-2023-5217"
"CVE-2022-21718"
"CVE-2022-29247"
"CVE-2022-29257"
"CVE-2022-36077"
"CVE-2023-29198"
"CVE-2023-39956"
];
};
}

View File

@@ -0,0 +1,9 @@
[Nemo Action]
Active=true
Name=Open in Pulsar
Comment=Open in Pulsar
#%U is the current selected file, this will also work on current directory
Exec=pulsar -n %U
Icon-Name=pulsar
Selection=any
Extensions=any

106
pkgs/by-name/pu/pulsar/update.mjs Executable file
View File

@@ -0,0 +1,106 @@
#!/usr/bin/env nix-shell
/*
#!nix-shell -i node -p nodejs
*/
import { promises as fs } from 'node:fs';
const constants = {
githubUrl: "https://api.github.com/repos/pulsar-edit/pulsar/releases",
sha256FileURL: (newVersion) => `https://github.com/pulsar-edit/pulsar/releases/download/v${newVersion}/SHA256SUMS.txt`,
x86_64FileName: (newVersion) => `Linux.pulsar-${newVersion}.tar.gz`,
aarch64FileName: (newVersion) => `ARM.Linux.pulsar-${newVersion}-arm64.tar.gz`,
targetFile: new URL("package.nix", import.meta.url).pathname,
};
async function utf16ToUtf8(blob) {
// Sometime, upstream saves the SHA256SUMS.txt file in UTF-16, which absolutely breaks node's string handling
// So we need to convert this blob to UTF-8
// We need to skip the first 2 bytes, which are the BOM
const arrayBuffer = await blob.slice(2).arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
const utf8String = buffer.toString('utf16le');
return utf8String;
}
async function getLatestVersion() {
const requestResult = await fetch(constants.githubUrl);
if (!requestResult.ok) {
console.error("Failed to fetch releases");
console.error(requestResult);
process.exit(1);
};
let jsonResult = await requestResult.json();
jsonResult = jsonResult.filter((release) => !release.prerelease && !release.draft);
if (jsonResult.length == 0) {
console.error("No releases found");
process.exit(1);
}
return jsonResult[0].tag_name.replace(/^v/, '');
}
async function getSha256Sum(hashFileContent, targetFile) {
// The upstream file has a fomat like this:
// 0000000000000000000000000000000000000000000000000000000000000000 targetFile
let sha256 = hashFileContent.
split('\n').
map(line => line.replace("\r", "")). // Side-effect of the UTF-16 conversion, if the file was created from Windows
filter((line) => line.endsWith(targetFile))[0].
split(' ')[0];
return "sha256-" + Buffer.from(sha256, 'hex').toString('base64');
}
async function getSha256Sums(newVersion) {
// Upstream provides a file with the hashes of the files, but it's not in the SRI format, and it refers to the compressed tarball
// So let's just use nix-prefetch-url to get the hashes of the decompressed tarball, and `nix hash to-sri` to convert them to SRI format
const hashFileUrl = constants.sha256FileURL(newVersion);
const hashFileContent = await fetch(hashFileUrl).then((response) => response.blob());
const headerbuffer = await hashFileContent.slice(0, 2).arrayBuffer()
const header = Buffer.from(headerbuffer).toString('hex');
// We must detect if it's UTF-16 or UTF-8. If it's UTF-16, we must convert it to UTF-8, otherwise just use it as-is
const hashFileContentString = header == 'fffe' ?
await utf16ToUtf8(hashFileContent) :
await hashFileContent.text();
let x86_64;
let aarch64;
console.log("Getting new hashes");
let promises = [
getSha256Sum(hashFileContentString, constants.x86_64FileName(newVersion)).then((hash) => { x86_64 = hash; }),
getSha256Sum(hashFileContentString, constants.aarch64FileName(newVersion)).then((hash) => { aarch64 = hash; }),
];
await Promise.all(promises);
return { x86_64, aarch64 };
}
async function updateFile(newVersion, sha256Sums, currentFile) {
// There is some assumptions in how the file is formatted, but nothing egregious
let newFile = currentFile.replace(/version = "(.*)";/, `version = "${newVersion}";`);
newFile = newFile.replace(/x86_64-linux\.hash = "(.*)";/, `x86_64-linux.hash = "${sha256Sums.x86_64}";`);
newFile = newFile.replace(/aarch64-linux\.hash = "(.*)";/, `aarch64-linux.hash = "${sha256Sums.aarch64}";`);
await fs.writeFile(constants.targetFile, newFile);
};
let currentFile = await fs.readFile(constants.targetFile, 'utf8');
let currentVersion = currentFile.match(/version = "(.*)";/)[1];
const newVersion = await getLatestVersion();
if (currentVersion === newVersion) {
console.error("Already up to date");
process.exit(0);
}
console.log("New version: " + newVersion);
const sha256Sums = await getSha256Sums(newVersion);
console.log(sha256Sums)
if (!sha256Sums.x86_64 || !sha256Sums.aarch64) {
console.error("Failed to find sha256 sums for the 2 files");
process.exit(1);
}
updateFile(newVersion, sha256Sums, currentFile);

View File

@@ -0,0 +1,78 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
installShellFiles,
nix-update-script,
go,
testers,
pulsarctl,
}:
buildGoModule rec {
pname = "pulsarctl";
version = "4.0.4.3";
src = fetchFromGitHub {
owner = "streamnative";
repo = "pulsarctl";
rev = "v${version}";
hash = "sha256-acNd3nF1nHkYlw7tPoD01IjEc97dLvyAZ7yC1UDWN7s=";
};
vendorHash = "sha256-AruXsUIKeUMcojf0XF1ZEaZ2LlXDwCp2n82RN5e0Rj8=";
nativeBuildInputs = [ installShellFiles ];
ldflags =
let
buildVars = {
ReleaseVersion = version;
BuildTS = "None";
GitHash = src.rev;
GitBranch = "None";
GoVersion = "go${go.version}";
};
in
(lib.mapAttrsToList (
k: v: "-X github.com/streamnative/pulsarctl/pkg/cmdutils.${k}=${v}"
) buildVars);
excludedPackages = [
"./pkg/test"
"./pkg/test/bookkeeper"
"./pkg/test/bookkeeper/containers"
"./pkg/test/pulsar"
"./pkg/test/pulsar/containers"
"./site/gen-pulsarctldocs"
"./site/gen-pulsarctldocs/generators"
];
doCheck = false;
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd pulsarctl \
--bash <($out/bin/pulsarctl completion bash) \
--fish <($out/bin/pulsarctl completion fish) \
--zsh <($out/bin/pulsarctl completion zsh)
'';
passthru = {
updateScript = nix-update-script { };
tests.version = testers.testVersion {
package = pulsarctl;
command = "pulsarctl --version";
version = "v${version}";
};
};
meta = with lib; {
description = "CLI for Apache Pulsar written in Go";
homepage = "https://github.com/streamnative/pulsarctl";
license = with licenses; [ asl20 ];
platforms = platforms.unix;
maintainers = with maintainers; [ gaelreyrol ];
mainProgram = "pulsarctl";
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
bc,
dbus,
gawk,
gnused,
libnotify,
pulseaudio,
}:
let
path = lib.makeBinPath [
bc
dbus
gawk
gnused
libnotify
pulseaudio
];
pname = "pulseaudio-ctl";
in
stdenv.mkDerivation rec {
name = "${pname}-${version}";
version = "1.70";
src = fetchFromGitHub {
owner = "graysky2";
repo = "pulseaudio-ctl";
rev = "v${version}";
sha256 = "sha256-ZB1jrr31PF7+vNB+Xo5CATJmYbuDAPwewpDxCVnAowY=";
};
postPatch = ''
substituteInPlace Makefile \
--replace /usr $out
substituteInPlace common/${pname}.in \
--replace '$0' ${pname}
'';
nativeBuildInputs = [ makeWrapper ];
postFixup = ''
wrapProgram $out/bin/${pname} \
--prefix PATH : ${path}
'';
meta = with lib; {
description = "Control pulseaudio volume from the shell or mapped to keyboard shortcuts. No need for alsa-utils";
mainProgram = "pulseaudio-ctl";
homepage = "https://bbs.archlinux.org/viewtopic.php?id=124513";
license = licenses.mit;
maintainers = with maintainers; [ peterhoeg ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,25 @@
From a4bf7df795146c843696daee8c02826ba0034298 Mon Sep 17 00:00:00 2001
From: Florian Klink <flokli@flokli.de>
Date: Sun, 21 Nov 2021 12:04:48 +0100
Subject: [PATCH] setup.py: remove dbus-python from list
I wasn't able to convince setuptools to find this.
---
setup.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/setup.py b/setup.py
index 61d6831..013fff3 100644
--- a/setup.py
+++ b/setup.py
@@ -42,7 +42,6 @@ setuptools.setup(
install_requires=[
'docopt',
'chardet',
- 'dbus-python',
'docopt',
'requests',
'setproctitle',
--
2.33.1

View File

@@ -0,0 +1,80 @@
{
fetchFromGitHub,
lib,
python3Packages,
mp3Support ? true,
lame,
opusSupport ? true,
opusTools,
faacSupport ? false,
faac,
flacSupport ? true,
flac,
soxSupport ? true,
sox,
vorbisSupport ? true,
vorbis-tools,
pulseaudio,
}:
python3Packages.buildPythonApplication {
pname = "pulseaudio-dlna";
version = "unstable-2021-11-09";
format = "setuptools";
src = fetchFromGitHub {
owner = "Cygn";
repo = "pulseaudio-dlna";
rev = "637a2e7bba2277137c5f12fb58e63100dab7cbe6";
sha256 = "sha256-Oda+zQQJE2D3fiNWTzxYvI8cZVHG5JAoV2Wf5Z6IU3M=";
};
patches = [
./0001-setup.py-remove-dbus-python-from-list.patch
];
propagatedBuildInputs =
with python3Packages;
[
dbus-python
docopt
requests
setproctitle
protobuf
psutil
chardet
netifaces
notify2
pyroute2
pygobject3
pychromecast
lxml
setuptools
zeroconf
]
++ lib.optional mp3Support lame
++ lib.optional opusSupport opusTools
++ lib.optional faacSupport faac
++ lib.optional flacSupport flac
++ lib.optional soxSupport sox
++ lib.optional vorbisSupport vorbis-tools;
# pulseaudio-dlna shells out to pactl to configure sinks and sources.
# As pactl might not be in $PATH, add --suffix it (so pactl configured by the
# user get priority)
makeWrapperArgs = [ "--suffix PATH : ${lib.makeBinPath [ pulseaudio ]}" ];
# upstream has no tests
checkPhase = ''
$out/bin/pulseaudio-dlna --help > /dev/null
'';
meta = with lib; {
description = "Lightweight streaming server which brings DLNA / UPNP and Chromecast support to PulseAudio and Linux";
mainProgram = "pulseaudio-dlna";
homepage = "https://github.com/Cygn/pulseaudio-dlna";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ mog ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,65 @@
{
stdenv,
fetchFromGitHub,
lib,
pulseaudio,
autoreconfHook,
pkg-config,
nixosTests,
gitUpdater,
}:
stdenv.mkDerivation rec {
pname = "pulseaudio-module-xrdp";
version = "0.8";
src = fetchFromGitHub {
owner = "neutrinolabs";
repo = "pulseaudio-module-xrdp";
rev = "v${version}";
hash = "sha256-R1ZPifEjlueTJma6a0UiGdiNwTSa5+HnW4w9qGrauxE=";
};
preConfigure = ''
tar -xvf ${pulseaudio.src}
mv pulseaudio-* pulseaudio-src
chmod +w -Rv pulseaudio-src
cp ${pulseaudio.dev}/include/pulse/config.h pulseaudio-src
appendToVar configureFlags "PULSE_DIR=$(realpath ./pulseaudio-src)"
'';
installPhase = ''
runHook preInstall
mkdir -p $out/lib/pulseaudio/modules $out/libexec/pulsaudio-xrdp-module $out/etc/xdg/autostart
install -m 755 src/.libs/*${stdenv.hostPlatform.extensions.sharedLibrary} $out/lib/pulseaudio/modules
install -m 755 instfiles/load_pa_modules.sh $out/libexec/pulsaudio-xrdp-module/pulseaudio_xrdp_init
substituteInPlace $out/libexec/pulsaudio-xrdp-module/pulseaudio_xrdp_init \
--replace pactl ${pulseaudio}/bin/pactl
runHook postInstall
'';
nativeBuildInputs = [
autoreconfHook
pkg-config
pulseaudio.dev
];
passthru = {
updateScript = gitUpdater { rev-prefix = "v"; };
tests = {
inherit (nixosTests) xrdp-with-audio-pulseaudio;
};
};
meta = with lib; {
description = "xrdp sink/source pulseaudio modules";
homepage = "https://github.com/neutrinolabs/pulseaudio-module-xrdp";
license = licenses.lgpl21;
maintainers = with maintainers; [ lucasew ];
platforms = platforms.linux;
sourceProvenance = [ sourceTypes.fromSource ];
};
}

View File

@@ -0,0 +1,117 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
itstool,
python3,
libxml2,
desktop-file-utils,
wrapGAppsHook3,
gst_all_1,
pulseaudio,
gtk3,
glib,
glibmm,
gtkmm3,
lilv,
lv2,
serd,
sord,
sratom,
libbs2b,
libsamplerate,
libsndfile,
libebur128,
rnnoise,
boost,
dbus,
fftwFloat,
calf,
zita-convolver,
zam-plugins,
rubberband,
lsp-plugins,
}:
let
lv2Plugins = [
calf # limiter, compressor exciter, bass enhancer and others
lsp-plugins # delay
];
ladspaPlugins = [
rubberband # pitch shifting
zam-plugins # maximizer
];
in
stdenv.mkDerivation {
pname = "pulseeffects";
version = "4.8.7-unstable-2024-09-17";
src = fetchFromGitHub {
owner = "wwmm";
repo = "pulseeffects";
rev = "fbe0a724c1405cee624802f381476cf003dfcfa";
hash = "sha256-tyVUWc8w08WUnJRTjJVTIiG/YBWTETNYG+4amwEYezY=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
libxml2
itstool
python3
desktop-file-utils
wrapGAppsHook3
];
buildInputs = [
pulseaudio
glib
glibmm
gtk3
gtkmm3
gst_all_1.gstreamer
gst_all_1.gst-plugins-base # gst-fft
gst_all_1.gst-plugins-good # pulsesrc
gst_all_1.gst-plugins-bad
lilv
lv2
serd
sord
sratom
libbs2b
libebur128
libsamplerate
libsndfile
rnnoise
boost
dbus
fftwFloat
zita-convolver
];
postPatch = ''
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
'';
preFixup = ''
gappsWrapperArgs+=(
--set LV2_PATH "${lib.makeSearchPath "lib/lv2" lv2Plugins}"
--set LADSPA_PATH "${lib.makeSearchPath "lib/ladspa" ladspaPlugins}"
)
'';
meta = with lib; {
description = "Limiter, compressor, reverberation, equalizer and auto volume effects for Pulseaudio applications";
mainProgram = "pulseeffects";
homepage = "https://github.com/wwmm/pulseeffects";
license = licenses.gpl3Plus;
maintainers = [ ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,69 @@
{
lib,
python3Packages,
fetchFromGitHub,
libappindicator,
gobject-introspection,
wrapGAppsHook4,
callPackage,
bash,
pipewire,
gtk4,
}:
python3Packages.buildPythonApplication rec {
pname = "pulsemeeter";
version = "2.0.0";
pyproject = true;
src = fetchFromGitHub {
owner = "theRealCarneiro";
repo = "pulsemeeter";
tag = "v${version}";
hash = "sha256-hmQI+E6WmYOK7oN7zTmshFZgJ0UiN2KdZ6ZiXwxRpNs=";
};
build-system = with python3Packages; [
setuptools
babel
];
dependencies = with python3Packages; [
pygobject3
pydantic
pulsectl
pulsectl-asyncio
];
nativeBuildInputs = [
wrapGAppsHook4
gobject-introspection
];
buildInputs = [
libappindicator
pipewire
bash
gtk4
];
makeWrapperArgs = [
"\${gappsWrapperArgs[@]}"
];
dontWrapGApps = true;
pythonImportsCheck = [ "pulsemeeter" ];
passthru.tests.version = callPackage ./version-test.nix { inherit version; };
meta = {
description = "Pulseaudio and pipewire audio mixer inspired by voicemeeter";
license = lib.licenses.mit;
homepage = "https://github.com/theRealCarneiro/pulsemeeter";
maintainers = with lib.maintainers; [
therobot2105
];
mainProgram = "pulsemeeter";
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,33 @@
{
pkgs,
version,
}:
pkgs.testers.runNixOSTest {
name = "pulsemeeter-version";
nodes.machine =
{ config, pkgs, ... }:
{
services.pulseaudio.enable = true;
services.pulseaudio.systemWide = true;
users.users.alice = {
isNormalUser = true;
password = "foo";
extraGroups = [
"wheel"
"pulse-access"
];
packages = with pkgs; [
pulsemeeter
];
};
};
testScript = ''
machine.wait_for_unit("default.target")
machine.succeed("su -- root -c 'systemctl start pulseaudio'")
machine.succeed("su -- alice -c 'mkdir -p /home/alice/.config/pulsemeeter'")
version = machine.execute("su -- alice -c 'pulsemeeter -v'")
assert version == (0, '${version}\n')
'';
}

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchFromGitHub,
python3,
libpulseaudio,
}:
stdenv.mkDerivation rec {
pname = "pulsemixer";
version = "1.5.1";
src = fetchFromGitHub {
owner = "GeorgeFilipkin";
repo = "pulsemixer";
rev = version;
sha256 = "1jagx9zmz5pfsld8y2rj2kqg6ww9f6vqiawfy3vhqc49x3xx92p4";
};
inherit libpulseaudio;
buildInputs = [ python3 ];
installPhase = ''
mkdir -p $out/bin
install pulsemixer $out/bin/
'';
postFixup = ''
substituteInPlace "$out/bin/pulsemixer" \
--replace-fail "libpulse.so.0" "$libpulseaudio/lib/libpulse${stdenv.hostPlatform.extensions.sharedLibrary}"
'';
meta = with lib; {
description = "Cli and curses mixer for pulseaudio";
homepage = "https://github.com/GeorgeFilipkin/pulsemixer";
license = licenses.mit;
maintainers = [ maintainers.woffs ];
platforms = platforms.all;
mainProgram = "pulsemixer";
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "pulumi-esc";
version = "0.18.0";
src = fetchFromGitHub {
owner = "pulumi";
repo = "esc";
rev = "v${version}";
hash = "sha256-oxeH7SF2ANCTSdD8GnGmhbB37UOpBSOFo5p81lIw+zU=";
};
subPackages = "cmd/esc";
vendorHash = "sha256-IcQaWo5/EoPJjn5pDKwHjd56JeareznE7iSansJIfso=";
ldflags = [
"-s"
"-w"
"-X=github.com/pulumi/esc/cmd/esc/cli/version.Version=${src.rev}"
];
meta = with lib; {
description = "Pulumi ESC (Environments, Secrets, and Configuration) for cloud applications and infrastructure";
homepage = "https://github.com/pulumi/esc/tree/main";
changelog = "https://github.com/pulumi/esc/blob/${src.rev}/CHANGELOG.md";
license = licenses.asl20;
maintainers = with maintainers; [ yomaq ];
mainProgram = "esc";
};
}

View File

@@ -0,0 +1,188 @@
{
buildGoModule,
fetchFromGitHub,
python3Packages,
}:
let
mkBasePackage =
{
pname,
src,
version,
vendorHash,
cmd,
extraLdflags,
env,
...
}@args:
buildGoModule (
rec {
inherit
pname
src
vendorHash
version
env
;
sourceRoot = "${src.name}/provider";
subPackages = [ "cmd/${cmd}" ];
doCheck = false;
ldflags = [
"-s"
"-w"
]
++ extraLdflags;
}
// args
);
mkPythonPackage =
{
meta,
pname,
src,
version,
...
}:
python3Packages.callPackage (
{
buildPythonPackage,
pythonOlder,
parver,
pip,
pulumi,
semver,
setuptools,
}:
buildPythonPackage {
inherit
pname
meta
src
version
;
format = "pyproject";
disabled = pythonOlder "3.7";
sourceRoot = "${src.name}/sdk/python";
propagatedBuildInputs = [
parver
pulumi
semver
setuptools
];
postPatch = ''
if [[ -e "pyproject.toml" ]]; then
sed -i \
-e 's/^ version = .*/ version = "${version}"/g' \
pyproject.toml
else
sed -i \
-e 's/^VERSION = .*/VERSION = "${version}"/g' \
-e 's/^PLUGIN_VERSION = .*/PLUGIN_VERSION = "${version}"/g' \
setup.py
fi
'';
# Auto-generated; upstream does not have any tests.
# Verify that the version substitution works
checkPhase = ''
runHook preCheck
${pip}/bin/pip show "${pname}" | grep "Version: ${version}" > /dev/null \
|| (echo "ERROR: Version substitution seems to be broken"; exit 1)
runHook postCheck
'';
pythonImportsCheck = [
(builtins.replaceStrings [ "-" ] [ "_" ] pname)
];
}
) { };
in
{
owner,
repo,
rev,
version,
hash,
vendorHash,
cmdGen,
cmdRes,
extraLdflags,
env ? { },
meta,
fetchSubmodules ? false,
...
}@args:
let
src = fetchFromGitHub {
name = "source-${repo}-${rev}";
inherit
owner
repo
rev
hash
fetchSubmodules
;
};
pulumi-gen = mkBasePackage {
inherit
src
version
vendorHash
extraLdflags
env
;
cmd = cmdGen;
pname = cmdGen;
};
in
mkBasePackage (
{
inherit
meta
src
version
vendorHash
extraLdflags
env
;
pname = repo;
nativeBuildInputs = [
pulumi-gen
];
cmd = cmdRes;
postConfigure = ''
pushd ..
chmod +w sdk/
${cmdGen} schema
popd
VERSION=v${version} go generate cmd/${cmdRes}/main.go
'';
passthru.sdks.python = mkPythonPackage {
inherit meta src version;
pname = repo;
};
}
// args
)

View File

@@ -0,0 +1,15 @@
# shellcheck shell=bash
appendToVar preCheckHooks pulumiTestHook
pulumiTestHook() {
local tmpdir
tmpdir=$(mktemp -d)
export USER=${USER-nixbld} HOME=${HOME-$tmpdir}
export PULUMI_HOME=$tmpdir/.pulumi
export PULUMI_CONFIG_PASSPHRASE=5up3r53cr37
export PULUMI_SKIP_UPDATE_CHECK=1
export PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION=1
pulumi login "file://$tmpdir"
pulumi stack init -- "${pulumiStackName-nixpkgs}"
}

View File

@@ -0,0 +1,35 @@
{
lib,
runCommand,
pulumi,
jq,
}:
{
package,
name ? lib.removePrefix "pulumi-" (lib.getName package),
version ? lib.getVersion package,
}:
runCommand "pulumi-resource-${name}-schema-version-check"
{
resourceName = name;
expectedVersion = if version != null then version else "null";
nativeBuildInputs = [
jq
pulumi
package
];
env = {
PULUMI_SKIP_UPDATE_CHECK = "1";
PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "1";
};
__darwinAllowLocalNetworking = true;
meta.timeout = 120;
}
''
actualVersion=$(pulumi package get-schema -- "$resourceName" | jq -j .version)
if [[ $expectedVersion != "$actualVersion" ]]; then
echo "Expected schema version $expectedVersion, but got $actualVersion" >&2
false
fi
mkdir -p "$out"
''

View File

@@ -0,0 +1,195 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
installShellFiles,
git,
buildPackages,
# passthru
callPackage,
testers,
pulumi,
pulumiPackages,
python3Packages,
nix-update-script,
_experimental-update-script-combinators,
}:
buildGoModule rec {
pname = "pulumi";
version = "3.192.0";
src = fetchFromGitHub {
owner = "pulumi";
repo = "pulumi";
tag = "v${version}";
hash = "sha256-rcDXC+xlUa67afuXvmEv8UNsYWBvQQ0P4httdtdcrh4=";
# Some tests rely on checkout directory name
name = "pulumi";
};
vendorHash = "sha256-BaFw8EnPd2GPA/p9wm8XpVy/iE8gqbteRnMQC8Z4NHQ=";
sourceRoot = "${src.name}/pkg";
nativeBuildInputs = [ installShellFiles ];
nativeCheckInputs = [ git ];
# https://github.com/pulumi/pulumi/blob/3ec1aa75d5bf7103b283f46297321a9a4b1a8a33/.goreleaser.yml#L20-L26
tags = [ "osusergo" ];
ldflags = [
"-s"
"-w"
"-X=github.com/pulumi/pulumi/sdk/v3/go/common/version.Version=v${version}"
];
excludedPackages = [
"util/generate"
"codegen/gen_program_test"
];
# Required for user.Current implementation with osusergo on Darwin.
preCheck = ''
export HOME=$TMPDIR USER=nixbld
'';
checkFlags = [
# The tests require `version.Version` (i.e. ldflags) to be unset.
"-ldflags="
# Skip tests that fail in Nix sandbox.
"-skip=^${
lib.concatStringsSep "$|^" [
# Concurrent map modification in test case.
# TODO: remove after the fix is merged and released.
# https://github.com/pulumi/pulumi/pull/19200
"TestGetDocLinkForPulumiType"
# Seems to require TTY.
"TestProgressEvents"
# Flaky; upstream “fixed” it by increasing timeout.
# https://github.com/pulumi/pulumi/pull/20116
"TestAnalyzerCancellation"
# Tries to clone repo: https://github.com/pulumi/test-repo.git
"TestValidateRelativeDirectory"
"TestRepoLookup"
"TestDSConfigureGit"
# Tries to clone repo: github.com/pulumi/templates.git
"TestGenerateOnlyProjectCheck"
"TestPulumiNewSetsTemplateTag"
"TestPulumiPromptRuntimeOptions"
"TestPulumiNewOrgTemplate"
"TestPulumiNewWithOrgTemplates"
"TestPulumiNewWithoutPulumiAccessToken"
"TestPulumiNewWithoutTemplateSupport"
"TestGeneratingProjectWithAIPromptSucceeds"
"TestPulumiNewWithRegistryTemplates"
"TestRunNewYesNoTemplate"
"TestRunNewYesWithTemplate"
# Connects to https://api.pulumi.com/…
"TestGetLatestPluginIncludedVersion"
# Connects to https://pulumi-testing.vault.azure.net/…
"TestAzureCloudManager"
"TestAzureKeyEditProjectStack"
"TestAzureKeyVaultAutoFix15329"
"TestAzureKeyVaultExistingKey"
"TestAzureKeyVaultExistingKeyState"
"TestAzureKeyVaultExistingState"
# Requires pulumi-yaml
"TestProjectNameDefaults"
"TestProjectNameOverrides"
# Downloads pulumi-resource-random from Pulumi plugin registry.
"TestPluginInstallCancellation"
# Requires language-specific tooling and/or Internet access.
"TestGenerateProgram"
"TestGenerateProgramVersionSelection"
"TestGeneratePackage"
"TestGeneratePackageOne"
"TestGeneratePackageThree"
"TestGeneratePackageTwo"
"TestParseAndRenderDocs"
"TestImportResourceRef"
]
}$"
];
# Allow tests that bind or connect to localhost on macOS.
__darwinAllowLocalNetworking = true;
# Use pulumi from the previous stage if we cant execute compiled binary.
pulumiExe =
if stdenv.buildPlatform.canExecute stdenv.hostPlatform then
"${placeholder "out"}/bin/pulumi"
else
"${buildPackages.pulumi}/bin/pulumi";
postInstall = ''
for shell in bash fish zsh; do
"$pulumiExe" gen-completion $shell >pulumi.$shell
installShellCompletion pulumi.$shell
done
'';
passthru = {
pkgs = callPackage ./plugins.nix { };
withPackages = callPackage ./with-packages.nix { };
updateScript = _experimental-update-script-combinators.sequence [
(nix-update-script { })
(nix-update-script {
attrPath = "pulumiPackages.pulumi-go";
extraArgs = [ "--version=skip" ];
})
(nix-update-script {
attrPath = "pulumiPackages.pulumi-nodejs";
extraArgs = [ "--version=skip" ];
})
(nix-update-script {
attrPath = "pulumiPackages.pulumi-python";
extraArgs = [ "--version=skip" ];
})
];
tests = {
version = testers.testVersion {
package = pulumi;
version = "v${version}";
command = "PULUMI_SKIP_UPDATE_CHECK=1 pulumi version";
};
# Test building packages that reuse our version and src.
inherit (pulumiPackages) pulumi-go pulumi-nodejs pulumi-python;
pythonPackage = python3Packages.pulumi;
pythonPackageProtobuf5 =
(python3Packages.overrideScope (
final: _: {
protobuf = final.protobuf5;
}
)).pulumi;
pulumiTestHookShellcheck = testers.shellcheck {
name = "pulumi-test-hook-shellcheck";
src = ./extra/pulumi-test-hook.sh;
};
};
};
meta = {
homepage = "https://www.pulumi.com";
description = "Cloud development platform that makes creating cloud programs easy and productive";
sourceProvenance = [ lib.sourceTypes.fromSource ];
license = lib.licenses.asl20;
mainProgram = "pulumi";
maintainers = with lib.maintainers; [
trundle
veehaitch
tie
];
};
}

View File

@@ -0,0 +1,26 @@
{
lib,
config,
generateSplicesForMkScope,
makeScopeWithSplicing',
attributePathToSplice ? [ "pulumiPackages" ],
}:
makeScopeWithSplicing' {
otherSplices = generateSplicesForMkScope attributePathToSplice;
extra = self: {
mkPulumiPackage = self.callPackage ./extra/mk-pulumi-package.nix { };
testResourceSchema = self.callPackage ./extra/test-resource-schema.nix { };
pulumiTestHook = ./extra/pulumi-test-hook.sh;
};
f =
self:
lib.packagesFromDirectoryRecursive {
inherit (self) callPackage;
directory = ./plugins;
}
// lib.optionalAttrs config.allowAliases {
pulumi-language-go = lib.warnOnInstantiate "pulumi-language-go has been renamed to pulumi-go" self.pulumi-go;
pulumi-language-nodejs = lib.warnOnInstantiate "pulumi-language-nodejs has been renamed to pulumi-nodejs" self.pulumi-nodejs;
pulumi-language-python = lib.warnOnInstantiate "pulumi-language-python has been renamed to pulumi-python" self.pulumi-python;
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
mkPulumiPackage,
}:
mkPulumiPackage rec {
owner = "pulumi";
repo = "pulumi-aws-native";
version = "0.38.0";
rev = "v${version}";
hash = "sha256-v7jNPCrjtfi9KYD4RhiphMIpV23g/CBV/sKPBkMulu0=";
vendorHash = "sha256-Yu9tNakwXWYdrjzI6/MFRzVBhJAEOjsmq9iBAQlR0AI=";
cmdGen = "pulumi-gen-aws-native";
cmdRes = "pulumi-resource-aws-native";
extraLdflags = [
"-X github.com/pulumi/${repo}/provider/pkg/version.Version=v${version}"
];
fetchSubmodules = true;
postConfigure = ''
pushd ..
${cmdGen} schema aws-cloudformation-schema ${version}
popd
'';
__darwinAllowLocalNetworking = true;
meta = with lib; {
description = "Native AWS Pulumi Provider";
mainProgram = "pulumi-resource-aws-native";
homepage = "https://github.com/pulumi/pulumi-aws-native";
license = licenses.asl20;
maintainers = with maintainers; [
veehaitch
trundle
];
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
mkPulumiPackage,
}:
mkPulumiPackage rec {
owner = "pulumi";
repo = "pulumi-azure-native";
version = "2.13.0";
rev = "v${version}";
hash = "sha256-YyJxACeXyY7hZkTbLXT/ASNWa1uv9h3cvPoItR183fU=";
vendorHash = "sha256-20wHbNE/fenxP9wgTSzAnx6b1UYlw4i1fi6SesTs0sc=";
cmdGen = "pulumi-gen-azure-native";
cmdRes = "pulumi-resource-azure-native";
extraLdflags = [
"-X github.com/pulumi/${repo}/v2/provider/pkg/version.Version=${version}"
];
postConfigure = ''
pushd ..
chmod +w . provider/cmd/${cmdRes} sdk/
chmod -R +w reports/ versions/
mkdir bin
${cmdGen} schema ${version}
cp bin/schema-full.json provider/cmd/${cmdRes}
cp bin/metadata-compact.json provider/cmd/${cmdRes}
popd
VERSION=v${version} go generate cmd/${cmdRes}/main.go
'';
fetchSubmodules = true;
__darwinAllowLocalNetworking = true;
meta = with lib; {
description = "Native Azure Pulumi Provider";
mainProgram = "pulumi-resource-azure-native";
homepage = "https://github.com/pulumi/pulumi-azure-native";
license = licenses.asl20;
maintainers = with maintainers; [
veehaitch
trundle
];
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
mkPulumiPackage,
}:
mkPulumiPackage rec {
owner = "pulumi";
repo = "pulumi-command";
version = "0.9.0";
rev = "v${version}";
hash = "sha256-VnbtPhMyTZ4Oy+whOK6Itr2vqUagwZUODONL13fjMaU=";
vendorHash = "sha256-MBWDEVA29uzHD3B/iPe68ntGjMM1SCTDq/TL+NgMc6c=";
cmdGen = "pulumi-gen-command";
cmdRes = "pulumi-resource-command";
extraLdflags = [
"-X github.com/pulumi/${repo}/provider/pkg/version.Version=v${version}"
];
postConfigure = ''
pushd ..
${cmdGen} provider/cmd/pulumi-resource-command/schema.json --version ${version}
popd
'';
__darwinAllowLocalNetworking = true;
meta = with lib; {
description = "Pulumi provider to execute commands and scripts either locally or remotely as part of the Pulumi resource model";
mainProgram = "pulumi-resource-command";
homepage = "https://github.com/pulumi/pulumi-command";
license = licenses.asl20;
maintainers = with maintainers; [
veehaitch
trundle
];
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
buildGoModule,
pulumi,
}:
buildGoModule rec {
pname = "pulumi-go";
inherit (pulumi) version src;
sourceRoot = "${src.name}/sdk/go/pulumi-language-go";
vendorHash = "sha256-jwsdMSLDn2PNJFIIVhqwBLH7acFTOFLPgVNMKbI5DZE=";
ldflags = [
"-s"
"-w"
"-X=github.com/pulumi/pulumi/sdk/v3/go/common/version.Version=${version}"
];
checkFlags = [
"-skip=^${
lib.concatStringsSep "$|^" [
"TestLanguage"
"TestPluginsAndDependencies_vendored"
"TestPluginsAndDependencies_subdir"
"TestPluginsAndDependencies_moduleMode"
]
}$"
];
meta = {
homepage = "https://www.pulumi.com/docs/iac/languages-sdks/go/";
description = "Language host for Pulumi programs written in Go";
license = lib.licenses.asl20;
mainProgram = "pulumi-language-go";
maintainers = with lib.maintainers; [
tie
];
};
}

View File

@@ -0,0 +1,25 @@
{
lib,
mkPulumiPackage,
}:
mkPulumiPackage rec {
owner = "pulumi";
repo = "pulumi-hcloud";
version = "1.20.4";
rev = "v${version}";
hash = "sha256-m9MRXDTSC0K1raoH9gKPuxdwvUEnZ/ulp32xlY1Hsdo=";
vendorHash = "sha256-u3mxaOEXQod1MDFxo85YdOb6Bx/9G5uaa3ykhnmcqCg=";
cmdGen = "pulumi-tfgen-hcloud";
cmdRes = "pulumi-resource-hcloud";
extraLdflags = [
"-X=github.com/pulumi/${repo}/provider/pkg/version.Version=v${version}"
];
__darwinAllowLocalNetworking = true;
meta = with lib; {
description = "Hetzner Cloud Pulumi resource package, providing multi-language access to Hetzner Cloud";
mainProgram = "pulumi-resource-hcloud";
homepage = "https://github.com/pulumi/pulumi-hcloud";
license = licenses.asl20;
maintainers = with maintainers; [ tie ];
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
buildGoModule,
pulumi,
bash,
nodejs,
python3,
}:
buildGoModule rec {
pname = "pulumi-nodejs";
inherit (pulumi) version src;
sourceRoot = "${src.name}/sdk/nodejs/cmd/pulumi-language-nodejs";
vendorHash = "sha256-Q5Pk2f3EAiM4oit1vhc+PMEuMxdbrKAue3e0pnrZw2c=";
ldflags = [
"-s"
"-w"
"-X=github.com/pulumi/pulumi/sdk/v3/go/common/version.Version=${version}"
];
checkFlags = [
"-skip=^${
lib.concatStringsSep "$|^" [
"TestLanguage"
"TestGetProgramDependencies"
]
}$"
];
nativeCheckInputs = [
python3 # for TestNonblockingStdout
nodejs
];
# For patchShebangsAuto (see scripts copied in postInstall).
buildInputs = [
bash
];
postInstall = ''
cp -t "$out/bin" \
../../dist/pulumi-resource-pulumi-nodejs \
../../dist/pulumi-analyzer-policy
'';
meta = {
homepage = "https://www.pulumi.com/docs/iac/languages-sdks/javascript/";
description = "Language host for Pulumi programs written in TypeScript & JavaScript (Node.js)";
license = lib.licenses.asl20;
mainProgram = "pulumi-language-nodejs";
maintainers = with lib.maintainers; [
tie
];
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
buildGoModule,
callPackage,
pulumi,
bash,
python3,
}:
buildGoModule rec {
pname = "pulumi-python";
inherit (pulumi) version src;
sourceRoot = "${src.name}/sdk/python/cmd/pulumi-language-python";
vendorHash = "sha256-BfkjDesPdPDV2uILYaMJFIvaEBKT15ukwaReAL3yziw=";
ldflags = [
"-s"
"-w"
"-X=github.com/pulumi/pulumi/sdk/v3/go/common/version.Version=${version}"
];
checkFlags = [
"-skip=^${
lib.concatStringsSep "$|^" [
"TestLanguage"
"TestDeterminePulumiPackages"
]
}$"
];
nativeCheckInputs = [
python3
];
# For patchShebangsAuto (see scripts copied in postInstall).
buildInputs = [
bash
python3
];
postInstall = ''
cp -t "$out/bin" \
../pulumi-language-python-exec \
../../dist/pulumi-resource-pulumi-python \
../../dist/pulumi-analyzer-policy-python
'';
passthru.tests.smokeTest = callPackage ./smoke-test/default.nix { };
meta = {
homepage = "https://www.pulumi.com/docs/iac/languages-sdks/python/";
description = "Language host for Pulumi programs written in Python";
license = lib.licenses.asl20;
mainProgram = "pulumi-language-python";
maintainers = with lib.maintainers; [
tie
];
};
}

View File

@@ -0,0 +1,2 @@
name: smoke-test
runtime: python

View File

@@ -0,0 +1,18 @@
from binascii import b2a_hex
from os import urandom
from pulumi import export, ResourceOptions
from pulumi.dynamic import Resource, ResourceProvider, CreateResult
class RandomProvider(ResourceProvider):
def create(self, inputs):
return CreateResult(b2a_hex(urandom(16)), outs={})
class Random(Resource):
def __init__(self, name, opts = None):
super().__init__(RandomProvider(), name, {}, opts)
export("out", Random(name="random_test").id)

View File

@@ -0,0 +1,37 @@
{
lib,
stdenvNoCC,
pulumiTestHook,
pulumi,
pulumi-python,
python3Packages,
}:
stdenvNoCC.mkDerivation {
name = "pulumi-python-smoke-test";
src = builtins.filterSource (name: _: !(lib.hasSuffix ".nix" name)) ./.;
doCheck = true;
nativeCheckInputs = [
pulumiTestHook
pulumi
pulumi-python
python3Packages.pulumi
];
__darwinAllowLocalNetworking = true;
checkPhase = ''
runHook preCheck
pulumi update --skip-preview
stackOutput=$(pulumi stack output out)
[[ $stackOutput =~ ^[0-9a-f]{32}$ ]]
runHook postCheck
'';
installPhase = ''
runHook preInstall
mkdir -p "$out"
runHook postInstall
'';
}

View File

@@ -0,0 +1,28 @@
{
lib,
mkPulumiPackage,
}:
mkPulumiPackage rec {
owner = "pulumi";
repo = "pulumi-random";
version = "4.14.0";
rev = "v${version}";
hash = "sha256-1MR7zWNBDbAUoRed7IU80PQxeH18x95MKJKejW5m2Rs=";
vendorHash = "sha256-YDuF89F9+pxVq4TNe5l3JlbcqpnJwSTPAP4TwWTriWA=";
cmdGen = "pulumi-tfgen-random";
cmdRes = "pulumi-resource-random";
extraLdflags = [
"-X github.com/pulumi/${repo}/provider/v4/pkg/version.Version=v${version}"
];
__darwinAllowLocalNetworking = true;
meta = with lib; {
description = "Pulumi provider that safely enables randomness for resources";
mainProgram = "pulumi-resource-random";
homepage = "https://github.com/pulumi/pulumi-random";
license = licenses.asl20;
maintainers = with maintainers; [
veehaitch
trundle
];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "pulumi-scala";
version = "0.5.0";
src = fetchFromGitHub {
owner = "VirtusLab";
repo = "besom";
tag = "v${version}";
hash = "sha256-iJLIwc8yVURz7YdL42hJBfvYNpaehJbPIAB51umsLEE=";
};
sourceRoot = "source/language-plugin/pulumi-language-scala";
vendorHash = "sha256-GGkHKLKtcx/uW9CvrFIFKr2sZD3Mx0RYQM3lI9HvMXY=";
postInstall = ''
mv $out/bin/language-host $out/bin/${meta.mainProgram}
'';
meta = {
description = "Besom - a Pulumi SDK for Scala. Also, incidentally, a broom made of twigs tied round a stick. Brooms and besoms are used for protection, to ward off evil spirits, and cleansing of ritual spaces";
homepage = "https://github.com/VirtusLab/besom";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ nikolaiser ];
mainProgram = "pulumi-language-scala";
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
mkPulumiPackage,
}:
# Note that we are not using https://github.com/pulumi/pulumi-yandex because
# it has been archived in 2022.
mkPulumiPackage rec {
owner = "Regrau";
repo = "pulumi-yandex";
version = "0.98.0";
rev = "v${version}";
hash = "sha256-Olwl4JNrJUiJaGha7ZT0Qb0+6hRKxOOy06eKMJfYf0I=";
vendorHash = "sha256-8mu0msSq59f5GZNo7YIGuNTYealGyEL9kwk0jCcSO68=";
cmdGen = "pulumi-tfgen-yandex";
cmdRes = "pulumi-resource-yandex";
extraLdflags = [
"-X github.com/regrau/${repo}/provider/pkg/version.Version=v${version}"
];
__darwinAllowLocalNetworking = true;
env.GOWORK = "off";
meta = with lib; {
description = "Unofficial Yandex Cloud Resource Provider";
homepage = "https://github.com/Regrau/pulumi-yandex";
license = licenses.asl20;
maintainers = with maintainers; [
tie
veehaitch
trundle
];
mainProgram = cmdRes;
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
runCommand,
pulumi,
pulumiPackages,
makeBinaryWrapper,
}:
f:
# Note that Pulumi prints a warning for “ambient” plugins (i.e. from PATH). E.g.
# warning: using pulumi-resource-* from $PATH at /nix/store/*
# See also https://github.com/pulumi/pulumi/issues/14525
#
# We can install packages alongside pulumi executable, but that would only
# suppress the warning for packages that are bundled with the official
# distribution. Refer to the implementation of workspace.IsPluginBundled:
# https://pkg.go.dev/github.com/pulumi/pulumi/sdk/v3@v3.150.0/go/common/workspace#IsPluginBundled
# https://github.com/pulumi/pulumi/blob/v3.150.0/sdk/go/common/workspace/plugins.go#L2202-L2210
runCommand "pulumi-with-packages"
{
inherit pulumi;
makeWrapperArgs = [
"--suffix"
"PATH"
":"
(lib.makeBinPath (f pulumiPackages))
];
__structuredAttrs = true;
nativeBuildInputs = [ makeBinaryWrapper ];
meta.mainProgram = "pulumi";
}
''
mkdir -p "$out/bin"
ln -s -t "$out" "$pulumi/share"
makeWrapper "$pulumi/bin/pulumi" "$out/bin/pulumi" "''${makeWrapperArgs[@]}"
''

View File

@@ -0,0 +1,35 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "pulumictl";
version = "0.0.50";
src = fetchFromGitHub {
owner = "pulumi";
repo = "pulumictl";
rev = "v${version}";
sha256 = "sha256-Jq7H2lM5Vu/cb+mgoUP6p8MQxJ3w0Pgt+adWey2mPKk=";
};
vendorHash = "sha256-sgI6kpmVofG1yCVH6rWtb7Owoxlypp4we/gPfIGa6sM=";
ldflags = [
"-s"
"-w"
"-X=github.com/pulumi/pulumictl/pkg/version.Version=${src.rev}"
];
subPackages = [ "cmd/pulumictl" ];
meta = with lib; {
description = "Swiss Army Knife for Pulumi Development";
mainProgram = "pulumictl";
homepage = "https://github.com/pulumi/pulumictl";
license = licenses.asl20;
maintainers = with maintainers; [ vincentbernat ];
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
fetchFromGitHub,
python3,
}:
python3.pkgs.buildPythonApplication rec {
pname = "puncia";
version = "0.30";
pyproject = true;
src = fetchFromGitHub {
owner = "ARPSyndicate";
repo = "puncia";
tag = "v${version}";
hash = "sha256-woy8JL+yFOYUsAhYWxyskUj/hT3JmwrhKHg3JHyWzNY=";
};
build-system = with python3.pkgs; [ setuptools ];
dependencies = with python3.pkgs; [ requests ];
# Project has no tests
doCheck = false;
pythonImportsCheck = [ "puncia" ];
meta = with lib; {
description = "CLI utility for Subdomain Center & Exploit Observer";
homepage = "https://github.com/ARPSyndicate/puncia";
changelog = "https://github.com/ARPSyndicate/puncia/releases/tag/${src.tag}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
mainProgram = "puncia";
};
}

View File

@@ -0,0 +1,7 @@
{
punes,
}:
punes.override {
withQt6 = true;
}

View File

@@ -0,0 +1,99 @@
{
stdenv,
lib,
fetchFromGitHub,
fetchpatch,
gitUpdater,
cmake,
pkg-config,
ffmpeg,
libGLU,
alsa-lib,
libX11,
libXrandr,
sndio,
libsForQt5,
qt6Packages,
withQt6 ? false,
}:
let
qtPackages = if withQt6 then qt6Packages else libsForQt5;
in
stdenv.mkDerivation (finalAttrs: {
pname = "punes";
version = "0.111";
src = fetchFromGitHub {
owner = "punesemu";
repo = "puNES";
tag = "v${finalAttrs.version}";
hash = "sha256-TIXjYkInWV3yVnvXrdHcmeWYeps5TcvkG2Xjg4roIds=";
};
patches = [
# Fix FTBFS with Qt 6.7.1
# Remove when version > 0.111
(fetchpatch {
name = "0001-punes-Fix-compatibility-with-Qt-6.7.1.patch";
url = "https://github.com/punesemu/puNES/commit/6e51b1a6107ad3de97edd40ae4ec2d41b32d804f.patch";
hash = "sha256-xRalKIOb1qWgqJsFLcm7uUOblEfHDYbkukmcr4/+4Qc=";
})
# Fix FTBFS with Qt 6.9
# Remove when version > 0.111
(fetchpatch {
name = "0002-punes-Updated-code-for-Qt-6.9.0-compatibility.patch";
url = "https://github.com/punesemu/puNES/commit/ff906e0a79eeac9a2d16783e0accf65748bb275e.patch";
hash = "sha256-+s7AdaUBgCseQs6Mxat/cDmQ77s6K6J0fUfyihP82jM=";
})
];
nativeBuildInputs = [
cmake
pkg-config
]
++ (with qtPackages; [
qttools
wrapQtAppsHook
]);
buildInputs = [
ffmpeg
libGLU
]
++ (with qtPackages; [
qtbase
qtsvg
])
++ lib.optionals stdenv.hostPlatform.isLinux [
alsa-lib
libX11
libXrandr
]
++ lib.optionals stdenv.hostPlatform.isBSD [
sndio
];
cmakeFlags = [
"-DENABLE_GIT_INFO=OFF"
"-DENABLE_RELEASE=ON"
"-DENABLE_FFMPEG=ON"
"-DENABLE_OPENGL=ON"
(lib.strings.cmakeBool "ENABLE_QT6_LIBS" withQt6)
];
passthru.updateScript = gitUpdater {
rev-prefix = "v";
};
meta = {
description = "Qt-based Nintendo Entertainment System emulator and NSF/NSFe Music Player";
mainProgram = "punes";
homepage = "https://github.com/punesemu/puNES";
changelog = "https://github.com/punesemu/puNES/blob/v${finalAttrs.version}/ChangeLog";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ OPNA2608 ];
platforms = with lib.platforms; linux ++ freebsd ++ openbsd ++ windows;
};
})

View File

@@ -0,0 +1,27 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule {
pname = "pup";
version = "unstable-2022-03-06";
src = fetchFromGitHub {
owner = "ericchiang";
repo = "pup";
rev = "5a57cf111366c7c08999a34b2afd7ba36d58a96d";
hash = "sha256-Ledg3xPbu71L5qUY033bru/lw03jws3s4YlAarIuqaA=";
};
vendorHash = "sha256-/MDSWIuSYNxKbTslqIooI2qKA8Pye0yJF2dY8g8qbWI=";
meta = with lib; {
description = "Parsing HTML at the command line";
mainProgram = "pup";
homepage = "https://github.com/ericchiang/pup";
license = licenses.mit;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,23 @@
From 84d8c110882fe23bdd05d9007225b71d4395bbaa Mon Sep 17 00:00:00 2001
From: Philipp Rintz <git@rintz.net>
Date: Sun, 3 Mar 2024 18:05:40 +0100
Subject: [PATCH] uncommited
---
pupdate.csproj | 1 +
1 file changed, 1 insertion(+)
diff --git a/pupdate.csproj b/pupdate.csproj
index 04fe5e0..962682f 100644
--- a/pupdate.csproj
+++ b/pupdate.csproj
@@ -12,6 +12,7 @@
<Authors>Matt Pannella</Authors>
<Product>Pupdate</Product>
<RepositoryUrl>https://github.com/mattpannella/pupdate</RepositoryUrl>
+ <RuntimeIdentifier>@RuntimeIdentifier@</RuntimeIdentifier>
<RootNamespace>Pannella</RootNamespace>
</PropertyGroup>
<ItemGroup>
--
2.42.0

942
pkgs/by-name/pu/pupdate/deps.json generated Normal file
View File

@@ -0,0 +1,942 @@
[
{
"pname": "CommandLineParser",
"version": "2.9.1",
"hash": "sha256-ApU9y1yX60daSjPk3KYDBeJ7XZByKW8hse9NRZGcjeo="
},
{
"pname": "ConsoleMenu-simple",
"version": "2.6.1",
"hash": "sha256-1bMCCWLnJ7rCtaLyz+AF8YOZK9qktqy0HZhqyPQ5ce0="
},
{
"pname": "Crc32.NET",
"version": "1.2.0",
"hash": "sha256-sMQNIppJXHU2mULn5b//uRbbPMyguH9QlG6HKVIYUmE="
},
{
"pname": "Libuv",
"version": "1.9.1",
"hash": "sha256-bQdVn50eId1GzSQa9CFth0meKAQMYCFQ98zLN9pqL0k="
},
{
"pname": "Microsoft.AspNetCore.App.Ref",
"version": "7.0.20",
"hash": "sha256-OEDXXjQ1HDRPiA4Y1zPr1xUeH6wlzTCJpts+DZL61wI="
},
{
"pname": "Microsoft.AspNetCore.App.Runtime.linux-arm64",
"version": "7.0.20",
"hash": "sha256-ewal9R6o20GV0R02ylSijVFdWZAbdN8TK1PCc/ltHBQ="
},
{
"pname": "Microsoft.AspNetCore.App.Runtime.linux-x64",
"version": "7.0.20",
"hash": "sha256-vq59xMfrET8InzUhkAsbs2xp3ML+SO9POsbwAiYKzkA="
},
{
"pname": "Microsoft.CodeAnalysis.Analyzers",
"version": "1.1.0",
"hash": "sha256-7KrZfK3kUbmeT82eVadvHurZcaFq3FDj4qkIIeExJiM="
},
{
"pname": "Microsoft.CodeAnalysis.Common",
"version": "1.3.0",
"hash": "sha256-Jcw54WWyfPKdkeqRAG4xjihiGP/djjAkvpR6KM2I+CQ="
},
{
"pname": "Microsoft.CodeAnalysis.CSharp",
"version": "1.3.0",
"hash": "sha256-OqqvMHNj9Xql4YTEPMlzoGXXELoLC7JkRGjS0pil+m4="
},
{
"pname": "Microsoft.CodeAnalysis.VisualBasic",
"version": "1.3.0",
"hash": "sha256-lIKN1dG59aY8zeYgkY8Kdnv4UBgSwVbghz5ngPyEzKA="
},
{
"pname": "Microsoft.CSharp",
"version": "4.0.1",
"hash": "sha256-0huoqR2CJ3Z9Q2peaKD09TV3E6saYSqDGZ290K8CrH8="
},
{
"pname": "Microsoft.NET.ILLink.Analyzers",
"version": "7.0.100-1.23401.1",
"hash": "sha256-jGyhmj7DZxTv9Hir6YonkpL+SDsRore8Ph4RNN+2q94="
},
{
"pname": "Microsoft.NET.ILLink.Tasks",
"version": "7.0.100-1.23401.1",
"hash": "sha256-n95rHugj0BOtCBvv5209zJ5ttPX0A2+RWLjEwwtxgRA="
},
{
"pname": "Microsoft.NETCore.App",
"version": "1.0.4",
"hash": "sha256-NqJEOTW98eO0UlbiZcIVrsZCY4MUa+CkSmtAx3e2g3k="
},
{
"pname": "Microsoft.NETCore.App.Host.linux-arm64",
"version": "7.0.20",
"hash": "sha256-/20dMbO1Ft0WVhl+Lv1916Thvr4kPP9LuuX4bKE+czE="
},
{
"pname": "Microsoft.NETCore.App.Host.linux-x64",
"version": "7.0.20",
"hash": "sha256-Y1Dg8Sqhya86xD+9aJOuznT4mJUyFmoF/YZc0+5LBdc="
},
{
"pname": "Microsoft.NETCore.App.Ref",
"version": "7.0.20",
"hash": "sha256-W9RU3bja4BQLAbsaIhANQPJJh6DycDiBR+WZ3mK6Zrs="
},
{
"pname": "Microsoft.NETCore.App.Runtime.linux-arm64",
"version": "7.0.20",
"hash": "sha256-TemMvbNrDzJVHWwxVgnNN2CnTyI6TcvvZDpF4ts6IAw="
},
{
"pname": "Microsoft.NETCore.App.Runtime.linux-x64",
"version": "7.0.20",
"hash": "sha256-L+WaGvoXVMT3tZ7R5xFE06zaLcC3SI7LEf4ATBkUAGQ="
},
{
"pname": "Microsoft.NETCore.DotNetHost",
"version": "1.0.1",
"hash": "sha256-yiyZ4KGVRDZRgAuoSl4ZNWnRR3ityniyRPvzS799JOM="
},
{
"pname": "Microsoft.NETCore.DotNetHostPolicy",
"version": "1.0.3",
"hash": "sha256-doP+2c5SFVldt/EzgWW3nqKK+NNZKvBnanJbn2SKr2Q="
},
{
"pname": "Microsoft.NETCore.DotNetHostResolver",
"version": "1.0.1",
"hash": "sha256-hGJLA8Q6R+up9zHzk+Up2KF1a+fXZeEWrAZ+iNfQP4E="
},
{
"pname": "Microsoft.NETCore.Jit",
"version": "1.0.6",
"hash": "sha256-MuphzrzUdSpgyB3ZU2Ly3DwaGSRuLUvonovIzBasB6o="
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.0.2",
"hash": "sha256-YLJ2+BONtCWb0lY4Rttdqzbcm4z+5N5uNr3byRWQOZ8="
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.1.0",
"hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="
},
{
"pname": "Microsoft.NETCore.Runtime.CoreCLR",
"version": "1.0.6",
"hash": "sha256-iZnxpUpUJDoEE/NjktTFfOYmi25RwC32NMu/OKXG3gA="
},
{
"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.NETCore.Windows.ApiSets",
"version": "1.0.1",
"hash": "sha256-6PR4o/wQxBaJ5eRdt/awSO80EP3QqpWIk0XkCR9kaJo="
},
{
"pname": "Microsoft.VisualBasic",
"version": "10.0.1",
"hash": "sha256-7HHzZcWLVTTQ1K1rCIyoB+UxLHMvOIz+O5av6XDa22A="
},
{
"pname": "Microsoft.Win32.Primitives",
"version": "4.0.1",
"hash": "sha256-B4t5El/ViBdxALMcpZulewc4j/3SIXf71HhJWhm4Ctk="
},
{
"pname": "Microsoft.Win32.Primitives",
"version": "4.3.0",
"hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg="
},
{
"pname": "Microsoft.Win32.Registry",
"version": "4.0.0",
"hash": "sha256-M/06F/Z2wTHCh4pZOgtCjUGLD1FJXEJKCmzOeFMl7uo="
},
{
"pname": "NETStandard.Library",
"version": "1.6.0",
"hash": "sha256-ExWI1EKDCRishcfAeHVS/RoJphqSqohmJIC/wz3ZtVo="
},
{
"pname": "NETStandard.Library",
"version": "2.0.0",
"hash": "sha256-Pp7fRylai8JrE1O+9TGfIEJrAOmnWTJRLWE+qJBahK0="
},
{
"pname": "Newtonsoft.Json",
"version": "13.0.3",
"hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
},
{
"pname": "runtime.any.System.Collections",
"version": "4.3.0",
"hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="
},
{
"pname": "runtime.any.System.Diagnostics.Tools",
"version": "4.3.0",
"hash": "sha256-8yLKFt2wQxkEf7fNfzB+cPUCjYn2qbqNgQ1+EeY2h/I="
},
{
"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.Extensions",
"version": "4.3.0",
"hash": "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8="
},
{
"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.any.System.Threading.Timer",
"version": "4.3.0",
"hash": "sha256-BgHxXCIbicVZtpgMimSXixhFC3V+p5ODqeljDjO8hCs="
},
{
"pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps="
},
{
"pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I="
},
{
"pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA="
},
{
"pname": "runtime.native.System",
"version": "4.0.0",
"hash": "sha256-bmaM0ovT4X4aqDJOR255Yda/u3fmHZskU++lMnsy894="
},
{
"pname": "runtime.native.System",
"version": "4.3.0",
"hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="
},
{
"pname": "runtime.native.System.IO.Compression",
"version": "4.1.0",
"hash": "sha256-085JrZxNEwIHdBWKKKFsh1JzpF0AblvrUsz5T8kH4jQ="
},
{
"pname": "runtime.native.System.IO.Compression",
"version": "4.3.0",
"hash": "sha256-DWnXs4vlKoU6WxxvCArTJupV6sX3iBbZh8SbqfHace8="
},
{
"pname": "runtime.native.System.Net.Http",
"version": "4.0.1",
"hash": "sha256-5nWnTQrA1T6t9r8MqIiV4yTNu+IH0of2OX1qteoS+8E="
},
{
"pname": "runtime.native.System.Net.Security",
"version": "4.0.1",
"hash": "sha256-E64W+qCHZGYbhzQOEeToCob/4K8cTg3uOO7ltZG7ZNo="
},
{
"pname": "runtime.native.System.Security.Cryptography",
"version": "4.0.0",
"hash": "sha256-6Q8eYzC32BbGIiTHoQaE6B3cD81vYQcH5SCswYRSp0w="
},
{
"pname": "runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="
},
{
"pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM="
},
{
"pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4="
},
{
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0="
},
{
"pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4="
},
{
"pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g="
},
{
"pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc="
},
{
"pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw="
},
{
"pname": "runtime.unix.Microsoft.Win32.Primitives",
"version": "4.3.0",
"hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg="
},
{
"pname": "runtime.unix.System.Console",
"version": "4.3.0",
"hash": "sha256-AHkdKShTRHttqfMjmi+lPpTuCrM5vd/WRy6Kbtie190="
},
{
"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.Net.Sockets",
"version": "4.3.0",
"hash": "sha256-IvgOeA2JuBjKl5yAVGjPYMPDzs9phb3KANs95H9v1w4="
},
{
"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": "System.AppContext",
"version": "4.1.0",
"hash": "sha256-v6YfyfrKmhww+EYHUq6cwYUMj00MQ6SOfJtcGVRlYzs="
},
{
"pname": "System.Buffers",
"version": "4.0.0",
"hash": "sha256-+YUymoyS0O+xVyF2+LiAdZlMww8nofPN4ja9ylYqRo8="
},
{
"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.Immutable",
"version": "1.2.0",
"hash": "sha256-FQ3l+ulbLSPhQ0JcQCC4D4SzjTnHsRqcOj56Ywy7pMo="
},
{
"pname": "System.ComponentModel",
"version": "4.0.1",
"hash": "sha256-X5T36S49q1odsn6wAET6EGNlsxOyd66naMr5T3G9mGw="
},
{
"pname": "System.ComponentModel.Annotations",
"version": "4.1.0",
"hash": "sha256-jhvr6zS+iC4OXBkdXr+S8rPy/5nfhZtDVVJiAc0f1VA="
},
{
"pname": "System.Console",
"version": "4.0.0",
"hash": "sha256-jtZfT/TpJtLisV/y5Mk3IfCpE79zwhBYXtyGP9jC3Xo="
},
{
"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.0.0",
"hash": "sha256-dYh9UoFesuGcHY+ewsI+z2WnNy+bwHPsHQ3t85cbzNg="
},
{
"pname": "System.Diagnostics.FileVersionInfo",
"version": "4.0.0",
"hash": "sha256-Yy94jPhDXF2QHOF7qTmqKkn1048K9xkKryuBeDzsu+g="
},
{
"pname": "System.Diagnostics.Process",
"version": "4.1.0",
"hash": "sha256-OgW6ogQ+oYADYS0PHmwXdhrOKQJpqXlwzSvmfjTLNBg="
},
{
"pname": "System.Diagnostics.StackTrace",
"version": "4.0.1",
"hash": "sha256-gqqCAwpDsca242nli+fejgqwPAuwROv3NoNeOnFXSWA="
},
{
"pname": "System.Diagnostics.Tools",
"version": "4.0.1",
"hash": "sha256-vSBqTbmWXylvRa37aWyktym+gOpsvH43mwr6A962k6U="
},
{
"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.Dynamic.Runtime",
"version": "4.0.11",
"hash": "sha256-qWqFVxuXioesVftv2RVJZOnmojUvRjb7cS3Oh3oTit4="
},
{
"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.0.1",
"hash": "sha256-EJN3LbN+b0O9Dr2eg7kfThCYpne0iJ/H/GIyUTNVYC8="
},
{
"pname": "System.Globalization.Extensions",
"version": "4.0.1",
"hash": "sha256-zLtkPryJwqTGcJqMC6zoMMvMrT+aAL5GoumjmMtqUEI="
},
{
"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.Compression",
"version": "4.1.0",
"hash": "sha256-UT4KEfJNZOk7b4X0AqLFUsqfHu6myVH/BhbRKYc+1Uc="
},
{
"pname": "System.IO.Compression",
"version": "4.3.0",
"hash": "sha256-f5PrQlQgj5Xj2ZnHxXW8XiOivaBvfqDao9Sb6AVinyA="
},
{
"pname": "System.IO.Compression.ZipFile",
"version": "4.3.0",
"hash": "sha256-WQl+JgWs+GaRMeiahTFUbrhlXIHapzcpTFXbRvAtvvs="
},
{
"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.IO.FileSystem.Watcher",
"version": "4.0.0",
"hash": "sha256-OcLhbiHvn453sJsZBHe6RmtDlCaaarcqRB439HGU7mU="
},
{
"pname": "System.IO.MemoryMappedFiles",
"version": "4.0.0",
"hash": "sha256-1VQa8FoMUNAsja31OvOn7ungif+IPusAe9YcR+kRF6o="
},
{
"pname": "System.IO.UnmanagedMemoryStream",
"version": "4.0.1",
"hash": "sha256-Sx60QjHjvXQMAL7O4aN81321gu13LE0XzCRtt7hFTwQ="
},
{
"pname": "System.Linq",
"version": "4.1.0",
"hash": "sha256-ZQpFtYw5N1F1aX0jUK3Tw+XvM5tnlnshkTCNtfVA794="
},
{
"pname": "System.Linq.Expressions",
"version": "4.1.1",
"hash": "sha256-nwRmq03bvyYhohaDJtCYj4Z6hHsp0AlhjFJzuw7fsdk="
},
{
"pname": "System.Linq.Parallel",
"version": "4.0.1",
"hash": "sha256-TV1F3KYFipPmPnWFjX6hOZQNFsG2m729EdgPSFzqY0Q="
},
{
"pname": "System.Linq.Queryable",
"version": "4.0.1",
"hash": "sha256-XOFRO+lyoxsWtIUJfg5JCqv9Gx35ASOc94WIR8ZMVoY="
},
{
"pname": "System.Net.Http",
"version": "4.1.1",
"hash": "sha256-+JTAbEt2BicpnP3ooKXludoS5nClzBOnUyI9C/XxyyM="
},
{
"pname": "System.Net.NameResolution",
"version": "4.0.0",
"hash": "sha256-EAO67qEDqrtxEa+J3xccA5/lgCJ0PiRU9DYZsO++QzY="
},
{
"pname": "System.Net.Primitives",
"version": "4.0.11",
"hash": "sha256-2YSijNhCdw/ZU2yfH7vE+ReA8pgxRCXPnWr+ab36v4M="
},
{
"pname": "System.Net.Requests",
"version": "4.0.11",
"hash": "sha256-MLXxaUhHQC3pId/6r4q0EF37CIExt0+4Na8ZpUtRs44="
},
{
"pname": "System.Net.Security",
"version": "4.0.0",
"hash": "sha256-65Vqr/B5B336KEW69aM95+f7s5u2Q7/OiJmBarV2fnk="
},
{
"pname": "System.Net.Sockets",
"version": "4.1.0",
"hash": "sha256-muK7oXIX7ykqhXskuUt0KX6Hzg5VogJhUS0JiOB2BY0="
},
{
"pname": "System.Net.WebHeaderCollection",
"version": "4.0.1",
"hash": "sha256-uJSV6kmL+V/9/ot1LhHXGCd8Ndcu6zk+AJ8wgGS/fYE="
},
{
"pname": "System.Numerics.Vectors",
"version": "4.1.1",
"hash": "sha256-Kv4FrStml5+X7hGDCLhJJaIwJDvdJdYMBfcCcOjNf/Y="
},
{
"pname": "System.ObjectModel",
"version": "4.0.12",
"hash": "sha256-MudZ/KYcvYsn2cST3EE049mLikrNkmE7QoUoYKKby+s="
},
{
"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.DispatchProxy",
"version": "4.0.1",
"hash": "sha256-GdjA81UywW1yeAyNi+MR5agmOXl859GrWwiOui2jT9U="
},
{
"pname": "System.Reflection.Emit",
"version": "4.0.1",
"hash": "sha256-F1MvYoQWHCY89/O4JBwswogitqVvKuVfILFqA7dmuHk="
},
{
"pname": "System.Reflection.Emit.ILGeneration",
"version": "4.0.1",
"hash": "sha256-YG+eJBG5P+5adsHiw/lhJwvREnvdHw6CJyS8ZV4Ujd0="
},
{
"pname": "System.Reflection.Emit.Lightweight",
"version": "4.0.1",
"hash": "sha256-uVvNOnL64CPqsgZP2OLqNmxdkZl6Q0fTmKmv9gcBi+g="
},
{
"pname": "System.Reflection.Extensions",
"version": "4.0.1",
"hash": "sha256-NsfmzM9G/sN3H8X2cdnheTGRsh7zbRzvegnjDzDH/FQ="
},
{
"pname": "System.Reflection.Metadata",
"version": "1.3.0",
"hash": "sha256-a/RQr++mSsziWaOTknicfIQX/zJrwPFExfhK6PM0tfg="
},
{
"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.Reflection.TypeExtensions",
"version": "4.1.0",
"hash": "sha256-R0YZowmFda+xzKNR4kKg7neFoE30KfZwp/IwfRSKVK4="
},
{
"pname": "System.Resources.Reader",
"version": "4.0.0",
"hash": "sha256-NOax26EYc/L4bfedL2a33fg4sFXVkBwzVTQ41saJTsk="
},
{
"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.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.InteropServices.RuntimeInformation",
"version": "4.0.0",
"hash": "sha256-5j53amb76A3SPiE3B0llT2XPx058+CgE7OXL4bLalT4="
},
{
"pname": "System.Runtime.Loader",
"version": "4.0.0",
"hash": "sha256-gE5/ehU3Qq5phhSxGuPmSv1DFVQeiyl1/+YyrO+I7lI="
},
{
"pname": "System.Runtime.Numerics",
"version": "4.0.1",
"hash": "sha256-1pJt5ZGxLPTX1mjOi8qZPXyyOMkYV0NstoUCv91HYPg="
},
{
"pname": "System.Security.Claims",
"version": "4.0.1",
"hash": "sha256-xqI0HHahNAd9g3jqgnLKH4P/pIueef6cy3qvRDQFvA0="
},
{
"pname": "System.Security.Cryptography.Algorithms",
"version": "4.2.0",
"hash": "sha256-BelNIpEyToEp/VYKnje/q1P7KNEpQNtOzGPU18pLGpE="
},
{
"pname": "System.Security.Cryptography.Cng",
"version": "4.2.0",
"hash": "sha256-7F+m3HnmBsgE4xWF8FeCGlaEgQM3drqA6HEaQr6MEoU="
},
{
"pname": "System.Security.Cryptography.Csp",
"version": "4.0.0",
"hash": "sha256-WHyR6vVK3zaT4De7jgQFUar1P5fiX9ECwiVkJDFFm7M="
},
{
"pname": "System.Security.Cryptography.Encoding",
"version": "4.0.0",
"hash": "sha256-ZO7ha39J5uHkIF2RoEKv/bW/bLbVvYMO4+rWyYsKHik="
},
{
"pname": "System.Security.Cryptography.OpenSsl",
"version": "4.0.0",
"hash": "sha256-mLijAozynzjiOMyh2P5BHcfVq3Ovd0T/phG08SIbXZs="
},
{
"pname": "System.Security.Cryptography.Primitives",
"version": "4.0.0",
"hash": "sha256-sEdPftfTxQd/8DpdpqUZC2XWC0SjVCPqAkEleLl17EQ="
},
{
"pname": "System.Security.Cryptography.X509Certificates",
"version": "4.1.0",
"hash": "sha256-sBUUhJP+yYDXvcjNMKqNpn8yzGUpVABwK9vVUvYKjzI="
},
{
"pname": "System.Security.Principal",
"version": "4.0.1",
"hash": "sha256-9wBgPnJfFOtrhKZ7wDXZ4q12GklQ49Ka02/9v7Frf9k="
},
{
"pname": "System.Security.Principal.Windows",
"version": "4.0.0",
"hash": "sha256-38wEUCB889Mpm4WgRFEQBB+4HtE0X0wu+knrDyJie7Q="
},
{
"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.CodePages",
"version": "4.0.1",
"hash": "sha256-wxtwWQSTv5tuFP79KhUAhaL6bL4d8lSzSWkCn9aolwM="
},
{
"pname": "System.Text.Encoding.Extensions",
"version": "4.0.11",
"hash": "sha256-+kf7J3dEhgCbnCM5vHYlsTm5/R/Ud0Jr6elpHm922iI="
},
{
"pname": "System.Text.Encoding.Extensions",
"version": "4.3.0",
"hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc="
},
{
"pname": "System.Text.RegularExpressions",
"version": "4.1.0",
"hash": "sha256-x6OQN6MCN7S0fJ6EFTfv4rczdUWjwuWE9QQ0P6fbh9c="
},
{
"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.Overlapped",
"version": "4.0.1",
"hash": "sha256-CAWZlavcuBQHs+kaSX9CmkpHF7wC8rFrug3XPb5KJzo="
},
{
"pname": "System.Threading.Tasks",
"version": "4.0.11",
"hash": "sha256-5SLxzFg1df6bTm2t09xeI01wa5qQglqUwwJNlQPJIVs="
},
{
"pname": "System.Threading.Tasks",
"version": "4.3.0",
"hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="
},
{
"pname": "System.Threading.Tasks.Dataflow",
"version": "4.6.0",
"hash": "sha256-YYrT3GRzVBdendxt8FUDCnOBJi0nw/CJ9VrzcPJWLSg="
},
{
"pname": "System.Threading.Tasks.Extensions",
"version": "4.0.0",
"hash": "sha256-+YdcPkMhZhRbMZHnfsDwpNbUkr31X7pQFGxXYcAPZbE="
},
{
"pname": "System.Threading.Tasks.Parallel",
"version": "4.0.1",
"hash": "sha256-5VyRZ97Fug4reK/cQ6wsCrJ5jH53aGu1a4ZkKMZrnIQ="
},
{
"pname": "System.Threading.Thread",
"version": "4.0.0",
"hash": "sha256-7EtSJuKqcW107FYA5Ko9NFXEWUPIzNDtlfKaQV2pvb8="
},
{
"pname": "System.Threading.ThreadPool",
"version": "4.0.10",
"hash": "sha256-/fowWjM/0ZZFC1Rwu0i5N71iRxV2JOd3jQV2Jn0wuTk="
},
{
"pname": "System.Threading.Timer",
"version": "4.0.1",
"hash": "sha256-5lU6zt1O9JDSPr2KAHw4BYgysHnt0yyZrMNa5IIjxZY="
},
{
"pname": "System.Xml.ReaderWriter",
"version": "4.0.11",
"hash": "sha256-haZAFFQ9Sl2DhfvEbdx2YRqKEoxNMU5STaqpMmXw0zA="
},
{
"pname": "System.Xml.XDocument",
"version": "4.0.11",
"hash": "sha256-KPz1kxe0RUBM+aoktJ/f9p51GudMERU8Pmwm//HdlFg="
},
{
"pname": "System.Xml.XmlDocument",
"version": "4.0.1",
"hash": "sha256-gdoFrPo54v1LjkBF79f8EvtltVVjHz9ZI9kc5ve0GkY="
},
{
"pname": "System.Xml.XPath",
"version": "4.0.1",
"hash": "sha256-lQCoK2M51SGRuGjfiuIW26Y2goABY2RLE6cZ4816WDo="
},
{
"pname": "System.Xml.XPath.XDocument",
"version": "4.0.1",
"hash": "sha256-H/zyMMB1YB8vd+StYJr99KLqWmSHhaP7RHDLRcFhzbo="
},
{
"pname": "UrlCombine",
"version": "2.0.0",
"hash": "sha256-yvBqXgZsqre+JIyxY/e8y+oBs2+K7PtJkITR3YEtHlU="
}
]

View File

@@ -0,0 +1,63 @@
{
stdenv,
lib,
fetchFromGitHub,
buildDotnetModule,
dotnetCorePackages,
openssl,
zlib,
nix-update-script,
}:
buildDotnetModule rec {
pname = "pupdate";
version = "3.20.0";
src = fetchFromGitHub {
owner = "mattpannella";
repo = "pupdate";
rev = "${version}";
hash = "sha256-kdxqG1Vw6jRT/YyRLi60APpayYyLG73KqAFga8N9G2A=";
};
buildInputs = [
(lib.getLib stdenv.cc.cc)
zlib
openssl
];
# See https://github.com/NixOS/nixpkgs/pull/196648/commits/0fb17c04fe34ac45247d35a1e4e0521652d9c494
patches = [ ./add-runtime-identifier.patch ];
postPatch = ''
substituteInPlace pupdate.csproj \
--replace @RuntimeIdentifier@ "${dotnetCorePackages.systemToDotnetRid stdenv.hostPlatform.system}"
'';
projectFile = "pupdate.csproj";
nugetDeps = ./deps.json;
selfContainedBuild = true;
executables = [ "pupdate" ];
dotnetFlags = [
"-p:PackageRuntime=${dotnetCorePackages.systemToDotnetRid stdenv.hostPlatform.system} -p:TrimMode=partial"
];
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.runtime_8_0;
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
homepage = "https://github.com/mattpannella/pupdate";
description = "Update utility for the openFPGA cores, firmware, and other stuff on your Analogue Pocket";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ p-rintz ];
mainProgram = "pupdate";
};
}

View File

@@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem 'bolt'

View File

@@ -0,0 +1,225 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.7)
base64
nkf
rexml
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
aws-eventstream (1.3.0)
aws-partitions (1.968.0)
aws-sdk-core (3.201.5)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.9)
jmespath (~> 1, >= 1.6.1)
aws-sdk-ec2 (1.470.0)
aws-sdk-core (~> 3, >= 3.201.0)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.9.1)
aws-eventstream (~> 1, >= 1.0.2)
base64 (0.2.0)
bigdecimal (3.1.8)
bindata (2.5.0)
bolt (3.30.0)
CFPropertyList (>= 2.2)
addressable (~> 2.5)
aws-sdk-ec2 (~> 1)
concurrent-ruby (~> 1.0)
ffi (>= 1.9.25, < 2.0.0)
hiera-eyaml (~> 3)
jwt (~> 2.2)
logging (~> 2.2)
minitar (~> 0.6)
net-scp (>= 1.2, < 5.0)
net-ssh (>= 4.0, < 8.0)
net-ssh-krb (~> 0.5)
orchestrator_client (~> 0.5)
puppet (>= 6.18.0)
puppet-resource_api (>= 1.8.1)
puppet-strings (>= 2.3.0, < 5.0)
puppetfile-resolver (>= 0.6.2, < 1.0)
r10k (~> 3.10)
ruby_smb (~> 1.0)
terminal-table (~> 3.0)
winrm (~> 2.0)
winrm-fs (~> 1.3)
builder (3.3.0)
colored2 (3.1.2)
concurrent-ruby (1.3.4)
connection_pool (2.4.1)
cri (2.15.12)
deep_merge (1.2.2)
erubi (1.13.0)
facter (4.6.1)
hocon (~> 1.3)
thor (>= 1.0.1, < 2.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fast_gettext (2.4.0)
prime
ffi (1.17.0)
forwardable (1.3.3)
getoptlong (0.2.1)
gettext (3.4.9)
erubi
locale (>= 2.0.5)
prime
racc
text (>= 1.3.0)
gettext-setup (1.1.0)
fast_gettext (~> 2.1)
gettext (~> 3.4)
locale
gssapi (1.3.1)
ffi (>= 1.0.1)
gyoku (1.4.0)
builder (>= 2.1.2)
rexml (~> 3.0)
hiera-eyaml (3.4.0)
highline
optimist
highline (3.1.0)
reline
hocon (1.4.0)
httpclient (2.8.3)
io-console (0.7.2)
jmespath (1.6.2)
jwt (2.7.1)
little-plugger (1.1.4)
locale (2.1.4)
log4r (1.1.10)
logging (2.4.0)
little-plugger (~> 1.1)
multi_json (~> 1.14)
minitar (0.12.1)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.4.1)
net-http-persistent (4.0.2)
connection_pool (~> 2.2)
net-scp (4.0.0)
net-ssh (>= 2.6.5, < 8.0.0)
net-ssh (7.2.3)
net-ssh-krb (0.5.1)
gssapi (~> 1.3.0)
net-ssh (>= 2.0)
nkf (0.2.0)
nori (2.7.1)
bigdecimal
optimist (3.1.0)
orchestrator_client (0.7.0)
faraday (~> 1.4)
net-http-persistent (~> 4.0)
prime (0.1.2)
forwardable
singleton
public_suffix (6.0.1)
puppet (8.8.1)
concurrent-ruby (~> 1.0)
deep_merge (~> 1.0)
facter (>= 4.3.0, < 5)
fast_gettext (>= 2.1, < 4)
getoptlong (~> 0.2.0)
locale (~> 2.1)
multi_json (~> 1.13)
puppet-resource_api (~> 1.5)
scanf (~> 1.0)
semantic_puppet (~> 1.0)
puppet-resource_api (1.9.0)
hocon (>= 1.0)
puppet-strings (4.1.2)
rgen (~> 0.9)
yard (~> 0.9)
puppet_forge (3.2.0)
faraday (~> 1.3)
faraday_middleware (~> 1.0)
minitar
semantic_puppet (~> 1.0)
puppetfile-resolver (0.6.3)
molinillo (~> 0.6)
semantic_puppet (~> 1.0)
r10k (3.16.2)
colored2 (= 3.1.2)
cri (>= 2.15.10)
fast_gettext (>= 1.1.0, < 3.0.0)
gettext (>= 3.0.2, < 4.0.0)
gettext-setup (>= 0.24, < 2.0.0)
jwt (>= 2.2.3, < 2.8.0)
log4r (= 1.1.10)
minitar (~> 0.9)
multi_json (~> 1.10)
puppet_forge (>= 2.3.0, < 4.0.0)
racc (1.8.1)
reline (0.5.9)
io-console (~> 0.5)
rexml (3.3.6)
strscan
rgen (0.9.1)
ruby2_keywords (0.0.5)
ruby_smb (1.1.0)
bindata
rubyntlm
windows_error
rubyntlm (0.6.5)
base64
rubyzip (2.3.2)
scanf (1.0.0)
semantic_puppet (1.1.0)
singleton (0.2.0)
strscan (3.1.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
text (1.3.1)
thor (1.3.1)
unicode-display_width (2.5.0)
windows_error (0.1.5)
winrm (2.3.9)
builder (>= 2.1.2)
erubi (~> 1.8)
gssapi (~> 1.2)
gyoku (~> 1.0)
httpclient (~> 2.2, >= 2.2.0.2)
logging (>= 1.6.1, < 3.0)
nori (~> 2.0, >= 2.7.1)
rexml (~> 3.0)
rubyntlm (~> 0.6.0, >= 0.6.3)
winrm-fs (1.3.5)
erubi (~> 1.8)
logging (>= 1.6.1, < 3.0)
rubyzip (~> 2.0)
winrm (~> 2.0)
yard (0.9.36)
PLATFORMS
ruby
DEPENDENCIES
bolt
BUNDLED WITH
2.5.16

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,54 @@
{
bundlerApp,
defaultGemConfig,
bundlerUpdateScript,
lib,
makeWrapper,
puppet-bolt,
testers,
}:
(bundlerApp {
pname = "bolt";
gemdir = ./.;
exes = [ "bolt" ];
nativeBuildInputs = [ makeWrapper ];
gemConfig = defaultGemConfig // {
bolt = attrs: {
# scripts in libexec will be executed by remote host,
# so shebangs should remain unchanged
dontPatchShebangs = true;
};
};
postBuild = ''
# Set BOLT_GEM=1 to remove warning
wrapProgram $out/bin/bolt --set BOLT_GEM 1
'';
passthru = {
tests.version = testers.testVersion {
package = puppet-bolt;
version = (import ./gemset.nix).bolt.version;
};
updateScript = bundlerUpdateScript "puppet-bolt";
};
meta = {
description = "Execute commands remotely over SSH and WinRM";
homepage = "https://github.com/puppetlabs/bolt";
changelog = "https://github.com/puppetlabs/bolt/blob/main/CHANGELOG.md";
license = lib.licenses.asl20;
mainProgram = "bolt";
maintainers = with lib.maintainers; [
uvnikita
anthonyroussel
];
platforms = lib.platforms.unix;
};
}).overrideAttrs
(old: {
name = "puppet-bolt-${(import ./gemset.nix).bolt.version}";
})

View File

@@ -0,0 +1,5 @@
# frozen_string_literal: true
source "https://rubygems.org"
gem "puppet-lint"

View File

@@ -0,0 +1,13 @@
GEM
remote: https://rubygems.org/
specs:
puppet-lint (4.2.4)
PLATFORMS
ruby
DEPENDENCIES
puppet-lint
BUNDLED WITH
2.5.6

View File

@@ -0,0 +1,12 @@
{
puppet-lint = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1n2pffwxj1n33hc7aw74g6a4gn5v7rawcs7rglidbdq1g4kzd829";
type = "gem";
};
version = "4.2.4";
};
}

View File

@@ -0,0 +1,30 @@
{
bundlerApp,
bundlerUpdateScript,
lib,
puppet-lint,
testers,
}:
bundlerApp {
pname = "puppet-lint";
gemdir = ./.;
exes = [ "puppet-lint" ];
passthru = {
tests.version = testers.testVersion {
package = puppet-lint;
version = (import ./gemset.nix).puppet-lint.version;
};
updateScript = bundlerUpdateScript "puppet-lint";
};
meta = {
description = "Checks Puppet code against the recommended Puppet language style guide";
homepage = "https://github.com/puppetlabs/puppet-lint";
changelog = "https://github.com/puppetlabs/puppet-lint/blob/main/CHANGELOG.md";
license = lib.licenses.mit;
mainProgram = "puppet-lint";
maintainers = with lib.maintainers; [ anthonyroussel ];
};
}

View File

@@ -0,0 +1,12 @@
# frozen_string_literal: true
source "https://rubygems.org"
gem "puppet"
# ruby used to provide these in stdlib but now they must be defined
gem "base64"
gem "syslog"
gem "ostruct"
gem "benchmark"
gem "racc"

View File

@@ -0,0 +1,57 @@
GEM
remote: https://rubygems.org/
specs:
base64 (0.3.0)
benchmark (0.4.1)
concurrent-ruby (1.3.5)
deep_merge (1.2.2)
facter (4.10.0)
hocon (~> 1.3)
thor (>= 1.0.1, < 1.3)
fast_gettext (3.1.0)
prime
forwardable (1.3.3)
getoptlong (0.2.1)
hocon (1.4.0)
locale (2.1.4)
logger (1.7.0)
multi_json (1.17.0)
ostruct (0.6.3)
prime (0.1.4)
forwardable
singleton
puppet (8.10.0)
concurrent-ruby (~> 1.0)
deep_merge (~> 1.0)
facter (>= 4.3.0, < 5)
fast_gettext (>= 2.1, < 4)
getoptlong (~> 0.2.0)
locale (~> 2.1)
multi_json (~> 1.13)
puppet-resource_api (~> 1.5)
scanf (~> 1.0)
semantic_puppet (~> 1.0)
puppet-resource_api (1.9.0)
hocon (>= 1.0)
racc (1.8.1)
scanf (1.0.0)
semantic_puppet (1.1.1)
singleton (0.3.0)
syslog (0.3.0)
logger
thor (1.2.2)
PLATFORMS
aarch64-linux
ruby
DEPENDENCIES
base64
benchmark
ostruct
puppet
racc
syslog
BUNDLED WITH
2.6.9

View File

@@ -0,0 +1,245 @@
{
base64 = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0yx9yn47a8lkfcjmigk79fykxvr80r4m1i35q82sxzynpbm7lcr7";
type = "gem";
};
version = "0.3.0";
};
benchmark = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1kicilpma5l0lwayqjb5577bm0hbjndj2gh150xz09xsgc1l1vyl";
type = "gem";
};
version = "0.4.1";
};
concurrent-ruby = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1ipbrgvf0pp6zxdk5ascp6i29aybz2bx9wdrlchjmpx6mhvkwfw1";
type = "gem";
};
version = "1.3.5";
};
deep_merge = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0fjn4civid68a3zxnbgyjj6krs3l30dy8b4djpg6fpzrsyix7kl3";
type = "gem";
};
version = "1.2.2";
};
facter = {
dependencies = [
"hocon"
"thor"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "17d561xf4s5016fm9jkfkkafn6660g04fz1yp5xfvkb0j4xj32mp";
type = "gem";
};
version = "4.10.0";
};
fast_gettext = {
dependencies = [ "prime" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1i9anyxdsz3lxlg9cg2dcad1fwykz4lr45v2q3nwjp477b1q8k4w";
type = "gem";
};
version = "3.1.0";
};
forwardable = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1b5g1i3xdvmxxpq4qp0z4v78ivqnazz26w110fh4cvzsdayz8zgi";
type = "gem";
};
version = "1.3.3";
};
getoptlong = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "198vy9dxyzibqdbw9jg8p2ljj9iknkyiqlyl229vz55rjxrz08zx";
type = "gem";
};
version = "0.2.1";
};
hocon = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "106dmzsl1bxkqw5xaif012nwwfr3k9wff32cqc77ibjngknj6477";
type = "gem";
};
version = "1.4.0";
};
locale = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "107pm4ccmla23z963kyjldgngfigvchnv85wr6m69viyxxrrjbsj";
type = "gem";
};
version = "2.1.4";
};
logger = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "00q2zznygpbls8asz5knjvvj2brr3ghmqxgr83xnrdj4rk3xwvhr";
type = "gem";
};
version = "1.7.0";
};
multi_json = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "06sabsvnw0x1aqdcswc6bqrqz6705548bfd8z22jxgxfjrn1yn3n";
type = "gem";
};
version = "1.17.0";
};
ostruct = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "04nrir9wdpc4izqwqbysxyly8y7hsfr4fsv69rw91lfi9d5fv8lm";
type = "gem";
};
version = "0.6.3";
};
prime = {
dependencies = [
"forwardable"
"singleton"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0pi2g9sd9ssyrpvbybh4skrgzqrv0rrd1q7ylgrsd519gjzmwxad";
type = "gem";
};
version = "0.1.4";
};
puppet = {
dependencies = [
"concurrent-ruby"
"deep_merge"
"facter"
"fast_gettext"
"getoptlong"
"locale"
"multi_json"
"puppet-resource_api"
"scanf"
"semantic_puppet"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0fia3ji6isnqz4a31aq8k4nd8p7vkxn80hhgqfdc8kkrba7xxxgj";
type = "gem";
};
version = "8.10.0";
};
puppet-resource_api = {
dependencies = [ "hocon" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0rxy5s7hl707x4sc1b4v2yqyii6pkym2gmsam3ri0f0xmmzyg0jb";
type = "gem";
};
version = "1.9.0";
};
racc = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa";
type = "gem";
};
version = "1.8.1";
};
scanf = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "000vxsci3zq8m1wl7mmppj7sarznrqlm6v2x2hdfmbxcwpvvfgak";
type = "gem";
};
version = "1.0.0";
};
semantic_puppet = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "15ksbizvakfx0zfdgjbh34hqnrnkjj47m4kbnsg58mpqsx45pzqm";
type = "gem";
};
version = "1.1.1";
};
singleton = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0y2pc7lr979pab5n5lvk3jhsi99fhskl5f2s6004v8sabz51psl3";
type = "gem";
};
version = "0.3.0";
};
syslog = {
dependencies = [ "logger" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "023lbh48fcn72gwyh1x52ycs1wx1bnhdajmv0qvkidmdsmxnxzjd";
type = "gem";
};
version = "0.3.0";
};
thor = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0k7j2wn14h1pl4smibasw0bp66kg626drxb59z7rzflch99cd4rg";
type = "gem";
};
version = "1.2.2";
};
}

View File

@@ -0,0 +1,32 @@
{
bundlerApp,
bundlerUpdateScript,
lib,
puppet,
ruby_3_4,
testers,
}:
(bundlerApp.override { ruby = ruby_3_4; }) {
pname = "puppet";
gemdir = ./.;
exes = [ "puppet" ];
passthru = {
tests.version = testers.testVersion {
package = puppet;
command = "HOME=$(mktemp -d) puppet --version";
inherit ((import ./gemset.nix).puppet) version;
};
updateScript = bundlerUpdateScript "puppet";
};
meta = {
description = "Server automation framework and application";
homepage = "https://github.com/puppetlabs/puppet";
changelog = "https://github.com/puppetlabs/puppet/blob/main/CHANGELOG.md";
license = lib.licenses.asl20;
mainProgram = "puppet";
maintainers = with lib.maintainers; [ baloo ];
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
makeWrapper,
chromium,
}:
buildNpmPackage rec {
pname = "puppeteer-cli";
version = "1.5.1";
src = fetchFromGitHub {
owner = "JarvusInnovations";
repo = "puppeteer-cli";
rev = "v${version}";
sha256 = "0xrb8r4qc9ds7wmfd30nslnkqylxqfwr4gqf7b30v651sjyds29x";
};
npmDepsHash = "sha256-R22lXQuYNQ+TQ7U2l4wZeBmAl8AXHUPG/3qVQBi3Ezo=";
env = {
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = true;
};
dontNpmBuild = true;
nativeBuildInputs = [ makeWrapper ];
postInstall = ''
wrapProgram $out/bin/puppeteer \
--set PUPPETEER_EXECUTABLE_PATH ${chromium}/bin/chromium
'';
meta = {
description = "Command-line wrapper for generating PDF prints and PNG screenshots with Puppeteer";
homepage = "https://github.com/JarvusInnovations/puppeteer-cli";
license = lib.licenses.mit;
mainProgram = "puppeteer";
maintainers = with lib.maintainers; [ chessai ];
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
python3,
fetchFromGitHub,
}:
python3.pkgs.buildPythonApplication rec {
pname = "pur";
version = "7.3.3";
pyproject = true;
src = fetchFromGitHub {
owner = "alanhamlett";
repo = "pip-update-requirements";
tag = version;
hash = "sha256-zSEzYYpDmu3fennTZNvQjAoMekzxoMDUEqvSjN6hNUk=";
};
build-system = with python3.pkgs; [ setuptools ];
dependencies = with python3.pkgs; [ click ];
nativeCheckInputs = with python3.pkgs; [ pytestCheckHook ];
pythonImportsCheck = [ "pur" ];
disabledTests = [
# Tests are failing after the last mass update
"test_missing_requirements_file"
"test_no_arguments_and_no_requirements_file"
];
meta = {
description = "Python library for update and track the requirements";
homepage = "https://github.com/alanhamlett/pip-update-requirements";
changelog = "https://github.com/alanhamlett/pip-update-requirements/blob/${version}/HISTORY.rst";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "pur";
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchurl,
openssl,
pam,
libxcrypt,
}:
stdenv.mkDerivation rec {
pname = "pure-ftpd";
version = "1.0.52";
src = fetchurl {
url = "https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-${version}.tar.gz";
sha256 = "sha256-ESbzqVhW0IiJ/4lwPLGqnsmSTZOdFU6WkEySDwXcPHQ=";
};
buildInputs = [
openssl
pam
libxcrypt
];
configureFlags = [ "--with-tls" ];
meta = with lib; {
description = "Free, secure, production-quality and standard-conformant FTP server";
homepage = "https://www.pureftpd.org";
license = licenses.isc; # with some parts covered by BSD3(?)
maintainers = [ ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "pure-prompt";
version = "1.23.0";
src = fetchFromGitHub {
owner = "sindresorhus";
repo = "pure";
rev = "v${version}";
sha256 = "sha256-BmQO4xqd/3QnpLUitD2obVxL0UulpboT8jGNEh4ri8k=";
};
strictDeps = true;
installPhase = ''
OUTDIR="$out/share/zsh/site-functions"
mkdir -p "$OUTDIR"
cp pure.zsh "$OUTDIR/prompt_pure_setup"
cp async.zsh "$OUTDIR/async"
'';
meta = with lib; {
description = "Pretty, minimal and fast ZSH prompt";
homepage = "https://github.com/sindresorhus/pure";
license = licenses.mit;
platforms = platforms.all;
maintainers = with maintainers; [
euxane
pablovsky
];
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchurl,
unzip,
puredata,
}:
stdenv.mkDerivation rec {
pname = "puremapping";
version = "20160130";
src = fetchurl {
url = "https://www.chnry.net/data/puremapping-${version}-generic.zip";
name = "puremapping";
sha256 = "1h7qgqd8srrxw2y1rkdw5js4k6f5vc8x6nlm2mq9mq9vjck7n1j7";
};
nativeBuildInputs = [ unzip ];
buildInputs = [ puredata ];
unpackPhase = ''
unzip $src
'';
installPhase = ''
mkdir -p $out/puremapping
mv puremapping/ $out
'';
meta = {
description = "Set of externals to facilitate the use of sensors within Pure Data and to create complex relations between input and output of a dynamic system";
homepage = "http://www.chnry.net/ch/?090-Pure-Mapping&lang=en";
license = lib.licenses.gpl1Only;
maintainers = [ lib.maintainers.magnetophon ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,58 @@
{
lib,
appimageTools,
makeWrapper,
runCommand,
curl,
gnugrep,
cacert,
dpkg,
}:
let
version = "2.0.3";
deb =
runCommand "PureRef-${version}_x64"
{
nativeBuildInputs = [
curl
gnugrep
cacert
dpkg
];
outputHash = "sha256-VdKu1YQa+//FbNWqgTPoUhY4pSekgVohI53D4i5hVkQ=";
outputHashMode = "recursive";
}
''
key="$(curl -A 'nixpkgs/Please contact maintainer if there is an issue' "https://www.pureref.com/download.php" --silent | grep '%3D%3D' | cut -d '"' -f2)"
curl -L "https://www.pureref.com/files/build.php?build=LINUX64.deb&version=${version}&downloadKey=$key" --output $name.deb
dpkg-deb -x $name.deb $out
chmod 755 $out
'';
in
appimageTools.wrapType1 {
pname = "pureref";
inherit version;
nativeBuildInputs = [ makeWrapper ];
src = "${deb}/usr/bin/PureRef";
extraInstallCommands = ''
mv $out/bin/pureref $out/bin/PureRef
cp -r ${deb}/usr/share $out
wrapProgram $out/bin/PureRef --set QT_QPA_PLATFORM xcb
'';
meta = with lib; {
description = "Reference Image Viewer";
homepage = "https://www.pureref.com";
license = licenses.unfree;
maintainers = with maintainers; [
elnudev
husjon
];
platforms = [ "x86_64-linux" ];
mainProgram = "PureRef";
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
};
}

View File

@@ -0,0 +1,19 @@
========================================================================
purescm
========================================================================
Suggested additional ``buildInputs``
====================================
``chez-racket``
Upstream is using the Racket fork of Chez Scheme to execute the
generated Scheme output.
To update this package
======================
#. Bump the ``./manifests/package.json`` version pin
#. Run ``(cd manifests && nix-shell -p nodejs --command "npm i --package-lock-only")``
#. Update ``npmDeps.hash`` in the ``package.nix``

View File

@@ -0,0 +1 @@
node_modules/

View File

@@ -0,0 +1,20 @@
{
"name": "purescm",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"purescm": "1.8.2"
}
},
"node_modules/purescm": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/purescm/-/purescm-1.8.2.tgz",
"integrity": "sha512-r+iaiRagOO2rHxGIke391l+pMlpE85vOVpQA32pdftJTdKeUVGIYy0UAs1nOkQSNxdHMXsNIkrskAwOSiyX3PA==",
"bin": {
"purescm": "index.js"
}
}
}
}

View File

@@ -0,0 +1,5 @@
{
"dependencies": {
"purescm": "1.8.2"
}
}

View File

@@ -0,0 +1,46 @@
{
lib,
buildNpmPackage,
fetchNpmDeps,
testers,
}:
let
inherit (lib) fileset;
packageLock = builtins.fromJSON (builtins.readFile ./manifests/package-lock.json);
pname = "purescm";
version = packageLock.packages."node_modules/${pname}".version;
package = buildNpmPackage {
inherit pname version;
src = ./manifests;
dontNpmBuild = true;
npmDeps = fetchNpmDeps {
src = ./manifests;
hash = "sha256-ljeFcLvIET77Q0OR6O5Ok1fGnaxaKaoywpcy2aHq/6o=";
};
installPhase = ''
mkdir -p $out/share/${pname}
cp -r node_modules/ $out/share/${pname}
ln -s $out/share/${pname}/node_modules/.bin $out/bin
'';
passthru.tests = {
version = testers.testVersion { inherit package; };
};
meta = {
description = "Chez Scheme back-end for PureScript";
homepage = "https://github.com/purescm/purescm";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ toastal ];
mainProgram = "purescm";
};
};
in
package

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
fetchurl,
nixosTests,
jre_headless,
makeWrapper,
}:
stdenv.mkDerivation rec {
pname = "purpur";
version = "1.21.3r2358";
src = fetchurl {
url = "https://api.purpurmc.org/v2/purpur/${
builtins.replaceStrings [ "r" ] [ "/" ] version
}/download";
sha256 = "sha256-RFrP7q1jgKUztF518HA6Jmj1qXa51l1HegMH1wMr5W4=";
};
nativeBuildInputs = [ makeWrapper ];
preferLocalBuild = true;
installPhase = ''
mkdir -p $out/bin $out/lib/minecraft
cp -v $src $out/lib/minecraft/server.jar
makeWrapper ${jre_headless}/bin/java $out/bin/minecraft-server \
--add-flags "-jar $out/lib/minecraft/server.jar nogui"
'';
dontUnpack = true;
passthru = {
tests = { inherit (nixosTests) minecraft-server; };
};
meta = with lib; {
description = "Drop-in replacement for Minecraft Paper servers";
longDescription = ''
Purpur is a drop-in replacement for Minecraft Paper servers designed for configurability, new fun and exciting
gameplay features, and performance built on top of Airplane.
'';
homepage = "https://purpurmc.org/";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.mit;
platforms = platforms.unix;
maintainers = [ ];
mainProgram = "minecraft-server";
};
}

View File

@@ -0,0 +1,43 @@
{
fetchFromGitHub,
buildGoModule,
lib,
go,
makeWrapper,
}:
buildGoModule rec {
pname = "pushup";
version = "0.2";
src = fetchFromGitHub {
owner = "adhocteam";
repo = "pushup";
rev = "v${version}";
hash = "sha256-9ENXeVON2/Bt8oXnyVw+Vl0bPVPP7iFSyhxwc091ZIs=";
};
vendorHash = null;
subPackages = ".";
# Pushup doesn't need CGO so disable it.
env.CGO_ENABLED = 0;
ldflags = [
"-s"
"-w"
];
nativeBuildInputs = [ makeWrapper ];
# The Go compiler is a runtime dependency of Pushup.
allowGoReference = true;
postInstall = ''
wrapProgram $out/bin/${meta.mainProgram} --prefix PATH : ${lib.makeBinPath [ go ]}
'';
meta = with lib; {
description = "Web framework for Go";
homepage = "https://pushup.adhoc.dev/";
license = licenses.mit;
changelog = "https://github.com/adhocteam/pushup/blob/${src.rev}/CHANGELOG.md";
mainProgram = "pushup";
maintainers = with maintainers; [ paulsmith ];
};
}