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,55 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
ncurses,
libvorbis,
SDL,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mp3blaster";
version = "3.2.6";
src = fetchFromGitHub {
owner = "stragulus";
repo = "mp3blaster";
tag = "v${finalAttrs.version}";
hash = "sha256-Gke6OjcrDlF3CceSVyfu8SGd0004cef8RlZ76Aet/F8=";
};
patches = [
# Fix pending upstream inclusion for ncurses-6.3 support:
# https://github.com/stragulus/mp3blaster/pull/8
(fetchpatch {
name = "ncurses-6.3.patch";
url = "https://github.com/stragulus/mp3blaster/commit/62168cba5eaba6ffe56943552837cf033cfa96ed.patch";
hash = "sha256-4Xcg7/7nKc7iiBZe5otIXjZNjBW9cOs6p6jQQOcRFCE=";
})
];
buildInputs = [
ncurses
libvorbis
]
++ lib.optional stdenv.hostPlatform.isDarwin SDL;
env.NIX_CFLAGS_COMPILE = toString (
[
"-Wno-narrowing"
]
++ lib.optionals stdenv.cc.isClang [
"-Wno-reserved-user-defined-literal"
"-Wno-register"
]
);
meta = {
description = "Audio player for the text console";
homepage = "http://www.mp3blaster.org/";
license = lib.licenses.gpl2;
maintainers = with lib.maintainers; [ earldouglas ];
platforms = with lib.platforms; linux ++ darwin;
};
})

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "mp3cat";
version = "0.5";
src = fetchFromGitHub {
owner = "tomclegg";
repo = "mp3cat";
rev = version;
sha256 = "0n6hjg2wgd06m561zc3ib5w2m3pwpf74njv2b2w4sqqh5md2ymfr";
};
makeFlags = [
"PREFIX=${placeholder "out"}"
];
installTargets = [
"install_bin"
];
meta = with lib; {
description = "Command line program which concatenates MP3 files";
longDescription = ''
A command line program which concatenates MP3 files, mp3cat
only outputs MP3 frames with valid headers, even if there is extra garbage
in its input stream
'';
homepage = "https://github.com/tomclegg/mp3cat";
license = licenses.gpl2Plus;
maintainers = [ maintainers.omnipotententity ];
platforms = platforms.all;
mainProgram = "mp3cat";
};
}

View File

@@ -0,0 +1,65 @@
{
lib,
stdenv,
fetchFromGitHub,
flac,
fuse,
lame,
libid3tag,
libvorbis,
autoreconfHook,
pkg-config,
pandoc,
zlib,
}:
stdenv.mkDerivation rec {
pname = "mp3fs";
version = "1.1.1";
src = fetchFromGitHub {
owner = "khenriks";
repo = "mp3fs";
rev = "v${version}";
sha256 = "sha256-dF+DfkNKvYOucS6KjYR1MMGxayM+1HVS8mbmaavmgKM=";
};
postPatch = ''
substituteInPlace src/mp3fs.cc \
--replace-fail "#include <fuse_darwin.h>" "" \
--replace-fail "osxfuse_version()" "fuse_version()"
'';
nativeBuildInputs = [
autoreconfHook
pkg-config
pandoc
];
buildInputs = [
flac
fuse
lame
libid3tag
libvorbis
zlib
];
enableParallelBuilding = true;
meta = with lib; {
description = "FUSE file system that transparently transcodes to MP3";
longDescription = ''
A read-only FUSE filesystem which transcodes between audio formats
(currently FLAC and Ogg Vorbis to MP3) on the fly when opened and read.
This can let you use a FLAC or Ogg Vorbis collection with software
and/or hardware which only understands the MP3 format, or transcode
files through simple drag-and-drop in a file browser.
'';
homepage = "https://khenriks.github.io/mp3fs/";
license = licenses.gpl3Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ Luflosi ];
mainProgram = "mp3fs";
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
unzip,
mpg123,
}:
stdenv.mkDerivation rec {
pname = "mp3gain";
version = "1.6.2";
src = fetchurl {
url = "mirror://sourceforge/${pname}/${pname}-${
lib.replaceStrings [ "." ] [ "_" ] version
}-src.zip";
sha256 = "0varr6y7k8zarr56b42r0ad9g3brhn5vv3xjg1c0v19jxwr4gh2w";
};
nativeBuildInputs = [ unzip ];
buildInputs = [ mpg123 ];
sourceRoot = ".";
patches = [
(fetchpatch {
name = "0001-fix-security-bugs.patch";
url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-sound/mp3gain/files/mp3gain-1.6.2-CVE-2019-18359-plus.patch?id=36f8689f7903548f5d89827a6e7bdf70a9882cee";
sha256 = "10n53wm0xynlcxqlnaqfgamjzcpfz41q1jlg0bhw4kq1kzhs4yyw";
})
];
buildFlags = [ "OSTYPE=linux" ];
installPhase = ''
install -vD mp3gain "$out/bin/mp3gain"
'';
meta = with lib; {
description = "Lossless mp3 normalizer with statistical analysis";
homepage = "https://mp3gain.sourceforge.net/";
license = licenses.lgpl21;
platforms = platforms.unix;
maintainers = with maintainers; [ devhell ];
mainProgram = "mp3gain";
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "mp3val";
version = "0.1.8";
src = fetchurl {
url = "mirror://sourceforge/mp3val/${pname}-${version}-src.tar.gz";
sha256 = "17y3646ghr38r620vkrxin3dksxqig5yb3nn4cfv6arm7kz6x8cm";
};
makefile = "Makefile.linux";
installPhase = ''
install -Dv mp3val "$out/bin/mp3val"
'';
hardeningDisable = [ "fortify" ];
meta = {
description = "Tool for validating and repairing MPEG audio streams";
longDescription = ''
MP3val is a small, high-speed, free software tool for checking MPEG audio
files' integrity. It can be useful for finding corrupted files (e.g.
incompletely downloaded, truncated, containing garbage). MP3val is
also able to fix most of the problems. Being a multiplatform application,
MP3val can be run both under Windows and under Linux (or BSD). The most
common MPEG audio file type is MPEG 1 Layer III (mp3), but MP3val supports
also other MPEG versions and layers. The tool is also aware of the most
common types of tags (ID3v1, ID3v2, APEv2).
'';
homepage = "https://mp3val.sourceforge.net/index.shtml";
license = lib.licenses.gpl2;
platforms = lib.platforms.unix;
maintainers = [ lib.maintainers.devhell ];
mainProgram = "mp3val";
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
}:
stdenv.mkDerivation rec {
pname = "mp4fpsmod";
version = "0.27-unstable-2023-12-30";
src = fetchFromGitHub {
owner = "nu774";
repo = "mp4fpsmod";
rev = "e2dd065012f4d2c7e42d4acdefee2ffdc50d3d86";
hash = "sha256-54pkjlvLLi4pLlQA/l+v4Mx5HlloR6GiB2GP71A0x/g=";
};
nativeBuildInputs = [ autoreconfHook ];
enableParallelBuilding = true;
preConfigure = ''
./bootstrap.sh
'';
meta = with lib; {
description = "Tiny mp4 time code editor";
longDescription = ''
Tiny mp4 time code editor. You can use this for changing fps,
delaying audio tracks, executing DTS compression, extracting
time codes of mp4.
'';
inherit (src.meta) homepage;
license = with licenses; [
# All files are distributed as Public Domain, except for the followings:
publicDomain
mpl11 # mp4v2
boost # Boost
bsd2 # FreeBSD CVS
];
platforms = platforms.unix;
maintainers = with maintainers; [ huggy ];
mainProgram = "mp4fpsmod";
};
}

View File

@@ -0,0 +1,38 @@
{
stdenv,
lib,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "mp4v2";
version = "5.0.1";
src = fetchFromGitHub {
# 2020-06-20: THE current upstream, maintained and used in distros fork.
owner = "TechSmith";
repo = "mp4v2";
rev = "Release-ThirdParty-MP4v2-${version}";
sha256 = "sha256-OP+oVTH9pqYfHtYL1Kjrs1qey/J40ijLi5Gu8GJnvSY=";
};
env.NIX_CFLAGS_COMPILE = "-Wno-error=narrowing";
# `faac' expects `mp4.h'.
postInstall = "ln -s mp4v2/mp4v2.h $out/include/mp4.h";
enableParallelBuilding = true;
meta = {
description = "Provides functions to read, create, and modify mp4 files";
longDescription = ''
MP4v2 library provides an API to work with mp4 files
as defined by ISO-IEC:14496-1:2001 MPEG-4 Systems.
This container format is derived from Apple's QuickTime format.
'';
homepage = "https://github.com/TechSmith/mp4v2";
maintainers = [ lib.maintainers.Anton-Latukha ];
platforms = lib.platforms.unix;
license = lib.licenses.mpl11;
};
}

View File

@@ -0,0 +1,99 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
autoreconfHook,
testers,
mpack,
}:
stdenv.mkDerivation rec {
pname = "mpack";
version = "1.6";
src = fetchurl {
url = "http://ftp.andrew.cmu.edu/pub/mpack/mpack-${version}.tar.gz";
hash = "sha256-J0EIuzo5mCpO/BT7OmUpjmbI5xNnw9q/STOBYtIHqUw=";
};
patches =
let
# https://salsa.debian.org/debian/mpack/-/tree/7d6514b314a7341614ec8275b03acfcb6a854a6f/debian/patches
fetchDebPatch =
{ name, hash }:
fetchpatch {
inherit name hash;
url = "https://salsa.debian.org/debian/mpack/-/raw/7d6514b314a7341614ec8275b03acfcb6a854a6f/debian/patches/${name}";
};
in
[
./sendmail-via-execvp.diff
]
++ (map fetchDebPatch [
{
name = "01_legacy.patch";
hash = "sha256-v2pZUXecgxJqoHadBhpAAoferQNSeYE+m7qzEiggeO4=";
}
{
name = "02_fix-permissions.patch";
hash = "sha256-sltnIqgv7+pwwSFQRCDeCwnjoo2OrvmGFm+SM9U/HB4=";
}
{
name = "03_specify-filename-replacement-character.patch";
hash = "sha256-vmLIGFSqKK/qSsltzhdLQGoekew3r25EwAu56umeXlU=";
}
{
name = "04_fix-return-error-code.patch";
hash = "sha256-l23D6xhkgtkEsErzUy/q6U3aPf5N7YUw2PEToU1YXKI=";
}
{
name = "06_fix-makefile.patch";
hash = "sha256-69plDqy2sLzO1O4mqjJIlTRCw5ZeVySiqwo93ZkX3Ho=";
}
{
name = "07_fix-decode-base64-attachment.patch";
hash = "sha256-hzSCrEg0j6dJNLbfwRNn+rWGRnyUBLjJUlORJS9aDD4=";
}
{
name = "08_fix-mime-version.patch";
hash = "sha256-l2rBqbyKmnz5tEPeuX6HCqw7rSV8pDb7ijpCHsdh57g=";
}
{
name = "09_remove-debugging-message.patch";
hash = "sha256-dtq6BHgH4ciho0+TNW/rU3KWoeKs/1jwJafnHTr9ebI=";
}
]);
postPatch = ''
substituteInPlace *.{c,man,pl,unix} --replace-quiet /usr/tmp /tmp
# silence a buffer overflow warning
substituteInPlace uudecode.c \
--replace-fail "char buf[1024], buf2[1024];" "char buf[1024], buf2[1066];"
'';
nativeBuildInputs = [ autoreconfHook ];
postInstall = ''
install -Dm644 -t $out/share/doc/mpack INSTALL README.*
'';
enableParallelBuilding = true;
passthru.tests = {
version = testers.testVersion {
command = ''
mpack 2>&1 || echo "mpack exited with error code $?"
'';
package = mpack;
version = "mpack version ${version}";
};
};
meta = with lib; {
description = "Utilities for encoding and decoding binary files in MIME";
license = licenses.free;
maintainers = with maintainers; [ tomodachi94 ];
};
}

View File

@@ -0,0 +1,12 @@
--- mpack-1.6/unixpk.c 2003-07-21 22:50:41.000000000 +0200
+++ mpack-1.6/unixpk.c 2018-09-16 12:57:14.104026964 +0200
@@ -254,8 +254,9 @@
#ifdef SCO
execv("/usr/lib/mail/execmail", addr+start);
#else
+ execvp("sendmail", addr+start);
execv("/usr/lib/sendmail", addr+start);
execv("/usr/sbin/sendmail", addr+start);
#endif
perror("execv");
_exit(1);

View File

@@ -0,0 +1,37 @@
{
fetchurl,
lib,
stdenv,
}:
stdenv.mkDerivation rec {
pname = "mpage";
version = "2.5.8";
src = fetchurl {
url = "https://www.mesa.nl/pub/mpage/mpage-${version}.tgz";
sha256 = "sha256-I1HpHSV5SzWN9mGPF6cBOijTUOwgQI/gb4Ej3EZz/pM=";
};
postPatch = ''
sed -i "Makefile" -e "s|^ *PREFIX *=.*$|PREFIX = $out|g"
substituteInPlace Makefile --replace 'gcc' '${stdenv.cc.targetPrefix}cc'
'';
meta = {
description = "Many-to-one page printing utility";
mainProgram = "mpage";
longDescription = ''
Mpage reads plain text files or PostScript documents and prints
them on a PostScript printer with the text reduced in size so
that several pages appear on one sheet of paper. This is useful
for viewing large printouts on a small amount of paper. It uses
ISO 8859.1 to print 8-bit characters.
'';
license = lib.licenses.gpl2Plus;
homepage = "http://www.mesa.nl/pub/mpage/";
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,73 @@
{
stdenv,
lib,
fetchFromGitHub,
autoreconfHook,
gfortran,
pkg-config,
blas,
lapack,
fftw,
hdf5,
libctl,
guile,
perl,
}:
assert !blas.isILP64;
assert !lapack.isILP64;
stdenv.mkDerivation rec {
pname = "mpb";
version = "1.12.0";
src = fetchFromGitHub {
owner = "NanoComp";
repo = "mpb";
tag = "v${version}";
hash = "sha256-naxVKD7pxefb/ht5Pa4e/T9eDzlZ0raNYPSvKNaZUn8=";
};
nativeBuildInputs = [
autoreconfHook
gfortran
pkg-config
];
buildInputs = [
blas
lapack
fftw
hdf5
libctl
guile
perl
];
# Required for build with gcc-14
env.NIX_CFLAGS_COMPILE = "-Wno-error=int-conversion";
enableParallelBuilding = true;
configureFlags = [
"--with-libctl=yes"
"--with-libctl=${libctl}"
"--enable-maintainer-mode"
"--disable-dependency-tracking"
]
++ lib.optional (!stdenv.hostPlatform.isStatic) "--enable-shared";
doCheck = true;
preCheck = "export OMP_NUM_THREADS=2";
meta = {
description = "MIT Photonic-Bands: computation of photonic band structures in periodic media";
homepage = "https://mpb.readthedocs.io/en/latest/";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
sheepforce
];
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
qt6Packages,
mpv,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mpc-qt";
version = "24.12.1-flatpak";
src = fetchFromGitHub {
owner = "mpc-qt";
repo = "mpc-qt";
tag = "v${finalAttrs.version}";
hash = "sha256-gn94kVs3Lbd+ggj4jTacHpmnVO2lH/QDhFk+hJC1N/c=";
};
nativeBuildInputs = [
pkg-config
qt6Packages.qmake
qt6Packages.qttools
qt6Packages.wrapQtAppsHook
];
buildInputs = [
mpv
];
postPatch = ''
substituteInPlace lconvert.pri --replace "qtPrepareTool(LCONVERT, lconvert)" "qtPrepareTool(LCONVERT, lconvert, , , ${qt6Packages.qttools}/bin)"
'';
postConfigure = ''
substituteInPlace Makefile --replace ${qt6Packages.qtbase}/bin/lrelease ${qt6Packages.qttools.dev}/bin/lrelease
'';
qmakeFlags = [
"MPCQT_VERSION=${finalAttrs.version}"
];
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
meta = {
description = "Media Player Classic Qute Theater";
homepage = "https://mpc-qt.github.io";
license = lib.licenses.gpl2;
platforms = lib.platforms.unix;
broken = stdenv.hostPlatform.isDarwin;
maintainers = with lib.maintainers; [ romildo ];
mainProgram = "mpc-qt";
};
})

View File

@@ -0,0 +1,57 @@
{
lib,
fetchFromGitHub,
installShellFiles,
libiconv,
libmpdclient,
meson,
ninja,
pkg-config,
python3Packages,
stdenv,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mpc";
version = "0.35";
src = fetchFromGitHub {
owner = "MusicPlayerDaemon";
repo = "mpc";
rev = "v${finalAttrs.version}";
hash = "sha256-oVdnj3nsYvOHcIOgoamLamriuWu9lucWUQtxVmXZabs=";
};
buildInputs = [
libmpdclient
]
++ lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
nativeBuildInputs = [
installShellFiles
meson
ninja
pkg-config
python3Packages.sphinx
];
env = lib.optionalAttrs stdenv.hostPlatform.isDarwin { NIX_LDFLAGS = "-liconv"; };
postInstall = ''
installShellCompletion --cmd mpc --bash $out/share/doc/mpc/contrib/mpc-completion.bash
'';
postFixup = ''
rm $out/share/doc/mpc/contrib/mpc-completion.bash
'';
meta = {
homepage = "https://www.musicpd.org/clients/mpc/";
description = "Minimalist command line interface to MPD";
changelog = "https://raw.githubusercontent.com/MusicPlayerDaemon/mpc/refs/heads/master/NEWS";
license = lib.licenses.gpl2Plus;
mainProgram = "mpc";
maintainers = [ ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,61 @@
{
lib,
stdenv,
fetchFromGitLab,
gettext,
libao,
libmpcdec,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mpc123";
version = "0.2.4";
src = fetchFromGitLab {
domain = "salsa.debian.org";
owner = "debian";
repo = "mpc123";
rev = "upstream/${finalAttrs.version}";
hash = "sha256-+/yxb19CJzyjQmT3O21pEmPR5YudmyCxWwo+W3uOB9Q=";
};
strictDeps = true;
nativeBuildInputs = [
gettext
];
buildInputs = [
gettext
libao
libmpcdec
];
makeFlags = [
"CC=${stdenv.cc.targetPrefix}cc"
];
# Workaround build failure on -fno-common toolchains like upstream
# gcc-10. Otherwise build fails as:
# ld: /build/cc566Cj9.o:(.bss+0x0): multiple definition of `mpc123_file_reader'; ao.o:(.bss+0x40): first defined here
env.NIX_CFLAGS_COMPILE = "-fcommon";
# XXX: Should install locales too (though there's only 1 available).
installPhase = ''
runHook preInstall
mkdir -p "$out/bin"
cp -v mpc123 "$out/bin"
runHook postInstall
'';
meta = {
description = "Musepack (.mpc) audio player";
homepage = "https://github.com/bucciarati/mpc123";
license = lib.licenses.gpl2Plus;
mainProgram = "mpc123";
maintainers = [ ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,38 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
openssl,
}:
rustPlatform.buildRustPackage rec {
pname = "mpd-discord-rpc";
version = "1.9.0";
src = fetchFromGitHub {
owner = "JakeStanger";
repo = "mpd-discord-rpc";
rev = "v${version}";
hash = "sha256-Aqxh6dVZI59FGFtuyC5KcuaEr2OZL/A4UHSpnthR0Uk=";
};
cargoHash = "sha256-L4hQ1NAzddiPv6DxY8mcMQ6GlRdhIr+LeY9TtFbx3Mw=";
nativeBuildInputs = [
pkg-config
];
buildInputs = [
openssl
];
meta = with lib; {
description = "Rust application which displays your currently playing song / album / artist from MPD in Discord using Rich Presence";
homepage = "https://github.com/JakeStanger/mpd-discord-rpc/";
changelog = "https://github.com/JakeStanger/mpd-discord-rpc/blob/${src.rev}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ kranzes ];
mainProgram = "mpd-discord-rpc";
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
buildGoModule,
fetchFromGitHub,
fetchpatch,
}:
buildGoModule rec {
pname = "mpd-mpris";
version = "0.4.1";
src = fetchFromGitHub {
owner = "natsukagami";
repo = "mpd-mpris";
rev = "v${version}";
sha256 = "sha256-QxPkGWpCWiyEbChH9SHeD+SiV8k0c/G7MG/azksP3xU=";
};
patches = [
# Makes Exec= path not absolute, see https://github.com/natsukagami/mpd-mpris/pull/42
(fetchpatch {
url = "https://github.com/natsukagami/mpd-mpris/commit/8a5b53b1aa3174c3ccb1db24fb4e39f90012b98f.patch";
hash = "sha256-LArPq+RRPJOs0je1olqg+pK7nvU7UIlrpGtHv2PhIY4=";
})
];
vendorHash = "sha256-HCDJrp9WFB1z+FnYpOI5e/AojtdnpN2ZNtgGVaH/v/Q=";
doCheck = false;
subPackages = [ "cmd/mpd-mpris" ];
postInstall = ''
install -Dm644 mpd-mpris.service $out/lib/systemd/user/mpd-mpris.service
install -Dm644 mpd-mpris.desktop $out/etc/xdg/autostart/mpd-mpris.desktop
'';
meta = with lib; {
description = "Implementation of the MPRIS protocol for MPD";
homepage = "https://github.com/natsukagami/mpd-mpris";
license = licenses.mit;
maintainers = with maintainers; [ doronbehar ];
mainProgram = "mpd-mpris";
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
pkg-config,
fetchFromGitHub,
file,
iniparser,
ffmpeg,
libnotify,
libmpdclient,
discount,
systemd,
}:
stdenv.mkDerivation rec {
pname = "mpd-notification";
version = "0.9.2";
src = fetchFromGitHub {
owner = "eworm-de";
repo = "mpd-notification";
rev = version;
hash = "sha256-2rnZkVKrk8jgZz/EcZGQ34tLZrVttjq3tq8k2xSl00A=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
iniparser
libnotify
file
ffmpeg
libmpdclient
discount
systemd
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv mpd-notification $out/bin
mkdir -p $out/lib/systemd/user
cp systemd/mpd-notification.service $out/lib/systemd/user
runHook postInstall
'';
postPatch = ''
substituteInPlace systemd/mpd-notification.service --replace /usr $out
'';
meta = with lib; {
description = "Notifications for mpd";
homepage = "https://github.com/eworm-de/mpd-notification";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ CaitlinDavitt ];
platforms = platforms.unix;
mainProgram = "mpd-notification";
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
mpd,
}:
mpd.override {
features = [
"webdav"
"curl"
"mms"
"bzip2"
"zzip"
"nfs"
"audiofile"
"faad"
"flac"
"gme"
"mpg123"
"opus"
"vorbis"
"vorbisenc"
"lame"
"libsamplerate"
"shout"
"libmpdclient"
"id3tag"
"expat"
"pcre"
"sqlite"
"qobuz"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
"alsa"
"systemd"
"syslog"
"io_uring"
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
"mad"
"jack"
];
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
autoreconfHook,
SDL2,
SDL2_ttf,
SDL2_image,
boost,
libmpdclient,
libwtk-sdl2,
icu,
libconfig,
dejavu_fonts,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mpd-touch-screen-gui";
version = "unstable-2022-12-30";
src = fetchFromGitHub {
owner = "muesli4";
repo = "mpd-touch-screen-gui";
rev = "156eaebede89da2b83a98d8f9dfa46af12282fb4";
sha256 = "sha256-vr/St4BghrndjUQ0nZI/uJq+F/MjEj6ulc4DYwQ/pgU=";
};
nativeBuildInputs = [
pkg-config
autoreconfHook
];
postPatch = ''
sed -i s#/usr/share/fonts/TTF#${dejavu_fonts}/share/fonts/truetype#g data/program.conf
'';
buildInputs = [
SDL2
SDL2_ttf
SDL2_image
boost
libmpdclient
libwtk-sdl2
icu
libconfig
];
# https://stackoverflow.com/questions/53089494/configure-error-could-not-find-a-version-of-the-library
configureFlags = [
"--with-boost-libdir=${boost.out}/lib"
];
doCheck = true;
meta = with lib; {
description = "Small MPD client that let's you view covers and has controls suitable for small touchscreens";
homepage = "https://github.com/muesli4/mpd-touch-screen-gui";
# See: https://github.com/muesli4/mpd-touch-screen-gui/tree/master/LICENSES
license = licenses.lgpl3Plus;
maintainers = with maintainers; [ doronbehar ];
platforms = platforms.all;
};
})

View File

@@ -0,0 +1,289 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
glib,
systemd,
fmt,
buildPackages,
# Inputs
curl,
libcdio,
libcdio-paranoia,
libmms,
libnfs,
liburing,
samba,
# Archive support
bzip2,
zziplib,
# Codecs
audiofile,
faad2,
ffmpeg,
flac,
fluidsynth,
game-music-emu,
libmad,
libmikmod,
mpg123,
libopus,
libvorbis,
lame,
# Filters
libsamplerate,
soxr,
# Outputs
alsa-lib,
libao,
libjack2,
libpulseaudio,
libshout,
pipewire,
# Misc
icu,
sqlite,
avahi,
dbus,
pcre2,
libgcrypt,
expat,
nlohmann_json,
zlib,
libupnp,
# Client support
libmpdclient,
# Tag support
libid3tag,
nixosTests,
# For documentation
doxygen,
python3Packages, # for sphinx-build
# For tests
gtest,
zip,
# Features list
features ? null,
}:
let
concatAttrVals = nameList: set: lib.concatMap (x: set.${x} or [ ]) nameList;
featureDependencies = {
# Storage plugins
udisks = [ dbus ];
webdav = [
curl
expat
];
# Input plugins
cdio_paranoia = [
libcdio
libcdio-paranoia
];
curl = [ curl ];
io_uring = [ liburing ];
mms = [ libmms ];
nfs = [ libnfs ];
smbclient = [ samba ];
# Archive support
bzip2 = [ bzip2 ];
zzip = [ zziplib ];
# Decoder plugins
audiofile = [ audiofile ];
faad = [ faad2 ];
ffmpeg = [ ffmpeg ];
flac = [ flac ];
fluidsynth = [ fluidsynth ];
gme = [ game-music-emu ];
mad = [ libmad ];
mikmod = [ libmikmod ];
mpg123 = [
libid3tag
mpg123
];
opus = [ libopus ];
vorbis = [ libvorbis ];
# Encoder plugins
vorbisenc = [ libvorbis ];
lame = [ lame ];
# Filter plugins
libsamplerate = [ libsamplerate ];
soxr = [ soxr ];
# Output plugins
alsa = [ alsa-lib ];
ao = [ libao ];
jack = [ libjack2 ];
pipewire = [ pipewire ];
pulse = [ libpulseaudio ];
shout = [ libshout ];
# Commercial services
qobuz = [
curl
libgcrypt
nlohmann_json
];
# Client support
libmpdclient = [ libmpdclient ];
# Tag support
id3tag = [
libid3tag
zlib
];
# Misc
dbus = [ dbus ];
expat = [ expat ];
icu = [ icu ];
pcre = [ pcre2 ];
sqlite = [ sqlite ];
syslog = [ ];
systemd = [ systemd ];
zeroconf = [
avahi
dbus
];
};
nativeFeatureDependencies = {
documentation = [
doxygen
python3Packages.sphinx
];
};
# Disable platform specific features if needed
# using libmad to decode mp3 files on darwin is causing a segfault -- there
# is probably a solution, but I'm disabling it for now
platformMask =
lib.optionals stdenv.hostPlatform.isDarwin [
"mad"
"pulse"
"jack"
"smbclient"
]
++ lib.optionals (!stdenv.hostPlatform.isLinux) [
"alsa"
"pipewire"
"io_uring"
"systemd"
"syslog"
];
knownFeatures =
builtins.attrNames featureDependencies ++ builtins.attrNames nativeFeatureDependencies;
platformFeatures = lib.subtractLists platformMask knownFeatures;
features_ =
if (features == null) then
platformFeatures
else
let
unknown = lib.subtractLists knownFeatures features;
in
if (unknown != [ ]) then
throw "Unknown feature(s): ${lib.concatStringsSep " " unknown}"
else
let
unsupported = lib.subtractLists platformFeatures features;
in
if (unsupported != [ ]) then
throw "Feature(s) ${lib.concatStringsSep " " unsupported} are not supported on ${stdenv.hostPlatform.system}"
else
features;
in
stdenv.mkDerivation (finalAttrs: {
pname = "mpd";
version = "0.24.5";
src = fetchFromGitHub {
owner = "MusicPlayerDaemon";
repo = "MPD";
rev = "v${finalAttrs.version}";
sha256 = "sha256-MgepOQeOl+n65+7b8zXe2u0fCHFAviSqL1aNu2iSXiM=";
};
buildInputs = [
glib
fmt
# According to the configurePhase of meson, gtest is considered a
# runtime dependency. Quoting:
#
# Run-time dependency GTest found: YES 1.10.0
gtest
libupnp
]
++ concatAttrVals features_ featureDependencies;
nativeBuildInputs = [
meson
ninja
pkg-config
]
++ concatAttrVals features_ nativeFeatureDependencies;
depsBuildBuild = [ buildPackages.stdenv.cc ];
postPatch =
lib.optionalString
(stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinSdkVersion "12.0")
''
substituteInPlace src/output/plugins/OSXOutputPlugin.cxx \
--replace kAudioObjectPropertyElement{Main,Master} \
--replace kAudioHardwareServiceDeviceProperty_Virtual{Main,Master}Volume
'';
# Otherwise, the meson log says:
#
# Program zip found: NO
nativeCheckInputs = [ zip ];
doCheck = true;
mesonAutoFeatures = "disabled";
outputs = [
"out"
"doc"
]
++ lib.optional (builtins.elem "documentation" features_) "man";
CXXFLAGS = lib.optionals stdenv.hostPlatform.isDarwin [
"-D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0"
];
mesonFlags = [
"-Dtest=true"
"-Dmanpages=true"
"-Dhtml_manual=true"
]
++ map (x: "-D${x}=enabled") features_
++ map (x: "-D${x}=disabled") (lib.subtractLists features_ knownFeatures)
++ lib.optional (builtins.elem "zeroconf" features_) (
"-Dzeroconf=" + (if stdenv.hostPlatform.isDarwin then "bonjour" else "avahi")
)
++ lib.optional (builtins.elem "systemd" features_) "-Dsystemd_system_unit_dir=etc/systemd/system"
++ lib.optional (builtins.elem "qobuz" features_) "-Dnlohmann_json=enabled";
passthru.tests.nixos = nixosTests.mpd;
meta = {
description = "Flexible, powerful daemon for playing music";
homepage = "https://www.musicpd.org/";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [
tobim
];
platforms = lib.platforms.unix;
mainProgram = "mpd";
longDescription = ''
Music Player Daemon (MPD) is a flexible, powerful daemon for playing
music. Through plugins and libraries it can play a variety of sound
files while being controlled by its network protocol.
'';
};
})

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
libmpdclient,
curl,
}:
stdenv.mkDerivation rec {
pname = "mpdas";
version = "0.4.5";
src = fetchFromGitHub {
owner = "hrkfdn";
repo = "mpdas";
rev = version;
sha256 = "0fcqc4w6iwbi1n3cllcgj0k61zffhqkbr8668myxap21m35x8y1r";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [
libmpdclient
curl
];
makeFlags = [
"CONFIG=/etc"
"DESTDIR="
"PREFIX=$(out)"
];
meta = with lib; {
description = "Music Player Daemon AudioScrobbler";
homepage = "https://50hz.ws/mpdas/";
license = licenses.bsd3;
maintainers = [ maintainers.taketwo ];
platforms = platforms.all;
mainProgram = "mpdas";
};
}

View File

@@ -0,0 +1,2 @@
source "https://rubygems.org"
gem "nokogiri"

View File

@@ -0,0 +1,17 @@
GEM
remote: https://rubygems.org/
specs:
mini_portile2 (2.8.9)
nokogiri (1.18.8)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
racc (1.8.1)
PLATFORMS
ruby
DEPENDENCIES
nokogiri
BUNDLED WITH
2.6.9

View File

@@ -0,0 +1,36 @@
{
mini_portile2 = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "12f2830x7pq3kj0v8nz0zjvaw02sv01bqs1zwdrc04704kwcgmqc";
type = "gem";
};
version = "2.8.9";
};
nokogiri = {
dependencies = [
"mini_portile2"
"racc"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0rb306hbky6cxfyc8vrwpvl40fdapjvhsk62h08gg9wwbn3n8x4c";
type = "gem";
};
version = "1.18.8";
};
racc = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa";
type = "gem";
};
version = "1.8.1";
};
}

View File

@@ -0,0 +1,71 @@
{
lib,
stdenv,
fetchFromGitHub,
autoconf,
automake,
libtool,
pkg-config,
glib,
libdaemon,
libmpdclient,
curl,
sqlite,
bundlerEnv,
libnotify,
pandoc,
autoreconfHook,
bundlerUpdateScript,
}:
let
gemEnv = bundlerEnv {
name = "mpdcron-bundle";
gemdir = ./.;
};
in
stdenv.mkDerivation {
pname = "mpdcron";
version = "20161228";
src = fetchFromGitHub {
owner = "alip";
repo = "mpdcron";
rev = "e49e6049b8693d31887c538ddc7b19f5e8ca476b";
sha256 = "0vdksf6lcgmizqr5mqp0bbci259k0dj7gpmhx32md41jlmw5skaw";
};
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
libtool
glib
libdaemon
pandoc
libmpdclient
curl
sqlite
gemEnv.wrappedRuby
libnotify
];
configureFlags = [
"--enable-gmodule"
"--with-standard-modules=all"
];
passthru.updateScript = bundlerUpdateScript "mpdcron";
meta = {
description = "Cron like daemon for mpd";
homepage = "http://alip.github.io/mpdcron/";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
lovek323
manveru
];
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
stdenv,
fetchurl,
autoreconfHook,
}:
stdenv.mkDerivation rec {
pname = "mpdecimal";
version = "4.0.1";
outputs = [
"out"
"cxx"
"doc"
"dev"
];
src = fetchurl {
url = "https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-${version}.tar.gz";
hash = "sha256-ltM6u0uwBwx74P7UJGzThBYYgyX4IEaCFEcZOFRbGsg=";
};
nativeBuildInputs = [ autoreconfHook ];
enableParallelBuilding = true;
postInstall = ''
mkdir -p $cxx/lib
mv $out/lib/*c++* $cxx/lib
mkdir -p $dev/nix-support
echo -n $cxx >> $dev/nix-support/propagated-build-inputs
'';
meta = {
description = "Library for arbitrary precision decimal floating point arithmetic";
longDescription = ''
libmpdec is a fast C/C++ library for correctly-rounded arbitrary
precision decimal floating point arithmetic. It is a complete
implementation of Mike Cowlishaw/IBM's General Decimal Arithmetic
Specification. The full specification is available here:
http://speleotrove.com/decimal/
libmpdec will - with minor restrictions - also conform to the IEEE
754-2008 Standard for Floating-Point Arithmetic, provided that the
appropriate context parameters are set.
libmpdec++ is a complete implementation of the General Decimal Arithmetic
Specification. libmpdec++ is mostly a header library around libmpdec's C
functions.
'';
homepage = "https://www.bytereef.org/mpdecimal/index.html";
downloadPage = "https://www.bytereef.org/mpdecimal/download.html";
changelog = "https://www.bytereef.org/mpdecimal/changelog.html";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ kaction ];
platforms = lib.platforms.unix ++ lib.platforms.windows;
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
rustPlatform,
fetchFromGitHub,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "mpdris2-rs";
version = "1.0.2";
src = fetchFromGitHub {
owner = "szclsya";
repo = "mpdris2-rs";
tag = "v${finalAttrs.version}";
hash = "sha256-E9H6bjmWZx35fZo/ZPvJL1w/YQ34pJ7z81YbB5fUZSU=";
};
cargoHash = "sha256-rA/za8fc2RiURaiijc49y+2QBcS6cDavZQFjVh+7Iow=";
postPatch = ''
substituteInPlace misc/mpdris2-rs.service --replace-fail "/usr/local" "$out"
'';
postInstall = ''
install -Dm644 misc/mpdris2-rs.service -t $out/lib/systemd/user
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Exposing MPRIS V2.2 D-Bus interface for MPD";
longDescription = ''
A lightweight implementation of MPD to D-Bus bridge, which exposes MPD
player and playlist information onto MPRIS2 interface so other programs
can use this generic interface to retrieve MPD's playback state.
'';
homepage = "https://github.com/szclsya/mpdris2-rs";
changelog = "https://github.com/szclsya/mpdris2-rs/blob/${finalAttrs.src.rev}/Changes.md";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
acidbong
];
mainProgram = "mpdris2-rs";
};
})

View File

@@ -0,0 +1,14 @@
diff --git i/configure.ac w/configure.ac
index dcc3c3d..888dc12 100644
--- i/configure.ac
+++ w/configure.ac
@@ -4,6 +4,9 @@ AC_INIT([mpDris2],
[mpdris2],
[https://github.com/eonpatapon/mpDris2])
AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_MACRO_DIRS([m4])
+AM_GNU_GETTEXT_VERSION([0.21])
+AM_GNU_GETTEXT([external])
AM_INIT_AUTOMAKE([1.11 tar-ustar foreign])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])

View File

@@ -0,0 +1,67 @@
{
lib,
autoreconfHook,
fetchFromGitHub,
gettext,
glib,
gobject-introspection,
intltool,
libnotify,
python3Packages,
wrapGAppsHook3,
}:
python3Packages.buildPythonApplication rec {
pname = "mpDris2";
version = "0.9.1";
format = "other";
src = fetchFromGitHub {
owner = "eonpatapon";
repo = "mpDris2";
tag = version;
hash = "sha256-1Y6K3z8afUXeKhZzeiaEF3yqU0Ef7qdAj9vAkRlD2p8=";
};
preConfigure = ''
intltoolize -f
'';
nativeBuildInputs = [
autoreconfHook
gettext
gobject-introspection
intltool
wrapGAppsHook3
];
buildInputs = [
glib
libnotify
];
dependencies = with python3Packages; [
dbus-python
mpd2
mutagen
pygobject3
];
# Python builder already uses makeWrapper, so we disable the hook
# and add its args to the existing ones for Python:
# https://nixos.org/manual/nixpkgs/stable/#ssec-gnome-common-issues-double-wrapped
dontWrapGApps = true;
makeWrapperArgs = [ "\${gappsWrapperArgs[@]}" ];
patches = [ ./fix-gettext-0.25.patch ];
meta = {
description = "MPRIS 2 support for mpd";
homepage = "https://github.com/eonpatapon/mpDris2/";
license = lib.licenses.gpl3Plus;
maintainers = [ ];
platforms = lib.platforms.unix;
mainProgram = "mpDris2";
};
}

View File

@@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
pkg-config,
meson,
ninja,
boost,
curl,
libgcrypt,
libmpdclient,
systemd,
}:
stdenv.mkDerivation rec {
pname = "mpdscribble";
version = "0.24";
src = fetchurl {
url = "https://www.musicpd.org/download/mpdscribble/${version}/mpdscribble-${version}.tar.xz";
sha256 = "sha256-9rTLp0izuH5wUnC0kjyOI+lMLgD+3VC+sUaNvi+yqOc=";
};
# Fix build issue on darwin; to be removed after the next release
patches = [
(fetchpatch {
name = "remove-empty-static-lib.patch";
url = "https://github.com/MusicPlayerDaemon/mpdscribble/commit/0dbcea25c81f3fdc608f71ef71a9784679fee17f.patch";
sha256 = "sha256-3wLfQvbwx+OFrCl5vMV7Zps4e4iEYFhqPiVCo5hDqgw=";
})
];
postPatch = ''
sed '1i#include <ctime>' -i src/Log.cxx # gcc12
'';
nativeBuildInputs = [
pkg-config
meson
ninja
];
buildInputs = [
libmpdclient
curl
boost
libgcrypt
]
++ lib.optional stdenv.hostPlatform.isLinux systemd;
meta = with lib; {
description = "MPD client which submits info about tracks being played to a scrobbler";
homepage = "https://www.musicpd.org/clients/mpdscribble/";
license = licenses.gpl2Plus;
maintainers = [ maintainers.sohalt ];
platforms = platforms.unix;
mainProgram = "mpdscribble";
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
fetchFromGitLab,
fetchpatch,
autoreconfHook,
texinfo,
mpfr,
}:
stdenv.mkDerivation rec {
pname = "mpfi";
version = "1.5.4";
src = fetchFromGitLab {
domain = "gitlab.inria.fr";
owner = "mpfi";
repo = "mpfi";
# Apparently there is an upstream off-by-one-commit error in tagging
# Conditional to allow auto-updaters to try new releases
# TODO: remove the conditional after an upstream update
# rev = version;
rev = if version == "1.5.4" then "feab26bc54529417af983950ddbffb3a4c334d4f" else version;
sha256 = "sha256-aj/QmJ38ifsW36JFQcbp55aIQRvOpiqLHwEh/aFXsgo=";
};
sourceRoot = "${src.name}/mpfi";
patches = [
(fetchpatch {
name = "incorrect-types-corrected.patch";
url = "https://gitlab.inria.fr/mpfi/mpfi/-/commit/a02e3f9cc10767cc4284a2ef6554f6df85e41982.patch";
relative = "mpfi";
hash = "sha256-ogUoZbQMkZMF8chSGdDymH/ewzjKSSc7GAMK2Wp58uo=";
})
];
nativeBuildInputs = [
autoreconfHook
texinfo
];
buildInputs = [ mpfr ];
meta = {
description = "Multiple precision interval arithmetic library based on MPFR";
homepage = "http://perso.ens-lyon.fr/nathalie.revol/software.html";
license = lib.licenses.lgpl21Plus;
maintainers = [ lib.maintainers.raskin ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,94 @@
{
lib,
stdenv,
fetchurl,
gmp,
writeScript,
updateAutotoolsGnuConfigScriptsHook,
}:
# Note: this package is used for bootstrapping fetchurl, and thus
# cannot use fetchpatch! All mutable patches (generated by GitHub or
# cgit) that are needed here should be included directly in Nixpkgs as
# files.
stdenv.mkDerivation rec {
version = "4.2.2";
pname = "mpfr";
src = fetchurl {
urls = [
"https://www.mpfr.org/${pname}-${version}/${pname}-${version}.tar.xz"
"mirror://gnu/mpfr/${pname}-${version}.tar.xz"
];
hash = "sha256-tnugOD736KhWNzTi6InvXsPDuJigHQD6CmhprYHGzgE=";
};
outputs = [
"out"
"dev"
"doc"
"info"
];
strictDeps = true;
# necessary to build on FreeBSD native pending inclusion of
# https://git.savannah.gnu.org/cgit/config.git/commit/?id=e4786449e1c26716e3f9ea182caf472e4dbc96e0
nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook ];
# mpfr.h requires gmp.h
propagatedBuildInputs = [ gmp ];
hardeningDisable = [
# causes tests tset_ld & tsprintf to fail
"trivialautovarinit"
];
configureFlags =
lib.optional stdenv.hostPlatform.isSunOS "--disable-thread-safe"
++ lib.optional stdenv.hostPlatform.is64bit "--with-pic"
++ lib.optionals stdenv.hostPlatform.isPower64 [
# Without this, the `tget_set_d128` test experiences a link
# error due to missing `__dpd_trunctdkf`.
"--disable-decimal-float"
];
doCheck = true; # not cross;
enableParallelBuilding = true;
passthru = {
updateScript = writeScript "update-mpfr" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl pcre common-updater-scripts
set -eu -o pipefail
# Expect the text in format of '<title>GNU MPFR version 4.1.1</title>'
new_version="$(curl -s https://www.mpfr.org/mpfr-current/ |
pcregrep -o1 '<title>GNU MPFR version ([0-9.]+)</title>')"
update-source-version ${pname} "$new_version"
'';
};
meta = {
homepage = "https://www.mpfr.org/";
description = "Library for multiple-precision floating-point arithmetic";
longDescription = ''
The GNU MPFR library is a C library for multiple-precision
floating-point computations with correct rounding. MPFR is
based on the GMP multiple-precision library.
The main goal of MPFR is to provide a library for
multiple-precision floating-point computation which is both
efficient and has a well-defined semantics. It copies the good
ideas from the ANSI/IEEE-754 standard for double-precision
floating-point arithmetic (53-bit mantissa).
'';
license = lib.licenses.lgpl2Plus;
maintainers = [ ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
python3Packages,
fetchFromGitHub,
}:
python3Packages.buildPythonPackage {
pname = "mpfshell";
version = "0.9.3-unstable-2025-01-09";
pyproject = true;
src = fetchFromGitHub {
owner = "wendlers";
repo = "mpfshell";
rev = "d290096ede985e8730b2ed02d130befdb65fde4e";
hash = "sha256-+AUlBHCzxDKatXrDmmBsf0g4cKZaa9Ui92M0d+49rKo=";
};
build-system = with python3Packages; [ setuptools ];
dependencies = with python3Packages; [
pyserial
colorama
websocket-client
standard-telnetlib # Python no longer provides telnetlib since python313
];
doCheck = false;
pythonImportsCheck = [ "mp.mpfshell" ];
meta = {
homepage = "https://github.com/wendlers/mpfshell";
description = "Simple shell based file explorer for ESP8266 Micropython based devices";
mainProgram = "mpfshell";
license = lib.licenses.mit;
};
}

View File

@@ -0,0 +1,21 @@
{ stdenvNoCC, fetchzip }:
stdenvNoCC.mkDerivation {
pname = "mph-2b-damase";
version = "2";
src = fetchzip {
url = "https://web.archive.org/web/20160322114946/http://www.wazu.jp/downloads/damase_v.2.zip";
hash = "sha256-4x78D+c3ZBxfhTQQ4+gyxvrsuztHF2ItXLh4uA0PxvU=";
};
installPhase = ''
runHook preInstall
install -Dm644 *.ttf -t $out/share/fonts/truetype
runHook postInstall
'';
meta = { };
}

View File

@@ -0,0 +1,79 @@
preCheckHooks+=('setupMpiCheck')
preInstallCheckHooks+=('setupMpiCheck')
setupMpiCheck() {
# Find out which MPI implementation we are using
# and set safe defaults that are guaranteed to run
# on any build machine
mpiType="NONE"
# OpenMPI signature
if command ompi_info &> /dev/null; then
mpiType="openmpi"
fi
# MPICH based implementations
if command mpichversion &> /dev/null; then
if [ "$mpiType" != "NONE" ]; then
echo "WARNING: found OpenMPI and MPICH/MVAPICH executables"
fi
version=$(mpichversion)
if [[ "$version" == *"MPICH"* ]]; then
mpiType="MPICH"
fi
if [[ "$version" == *"MVAPICH"* ]]; then
mpiType="MVAPICH"
fi
fi
echo "Found MPI implementation: $mpiType"
case $mpiType in
openmpi)
# Note, that openmpi-5 switched to using PRRTE.
# Thus we need to set PRTE_MCA_* instead of OMPI_MCA_*.
# We keep the openmpi-4 parameters for backward compatability.
# Make sure the test starts even if we have less than the requested amount of cores
export OMPI_MCA_rmaps_base_oversubscribe=1
export PRTE_MCA_rmaps_default_mapping_policy=node:oversubscribe
# Make sure we do not need openssh in the checkPhase
export OMPI_MCA_plm_ssh_agent=false
export PRRTE_MCA_plm_ssh_agent=false
# Disable CPU pinning
export OMPI_MCA_hwloc_base_binding_policy=none
export PRTE_MCA_hwloc_default_binding_policy=none
# OpenMPI get confused by the sandbox environment and spew errors like this (both to stdout and stderr):
# [hwloc/linux] failed to find sysfs cpu topology directory, aborting linux discovery.
# [1729458724.473282] [localhost:78 :0] tcp_iface.c:893 UCX ERROR scandir(/sys/class/net) failed: No such file or directory
# These messages contaminate test output, which makes the difftest to fail.
# The solution is to use a preset cpu topology file and disable ucx model.
# Disable sysfs cpu topology directory discovery.
export HWLOC_XMLFILE="@topology@"
# Use the network model ob1 instead of ucx.
export OMPI_MCA_pml=ob1
;;
MPICH)
# Fix to make mpich run in a sandbox
export HYDRA_IFACE="@iface@"
# Disable sysfs cpu topology directory discovery.
export HWLOC_XMLFILE="@topology@"
;;
MVAPICH)
# Disable CPU pinning
export MV2_ENABLE_AFFINITY=0
# Disable sysfs cpu topology directory discovery.
export HWLOC_XMLFILE="@topology@"
;;
esac
# Limit number of OpenMP threads. Default is "all cores".
export OMP_NUM_THREADS=1
}

View File

@@ -0,0 +1,14 @@
{
callPackage,
makeSetupHook,
stdenv,
}:
makeSetupHook {
name = "mpi-checkPhase-hook";
substitutions = {
iface = if stdenv.hostPlatform.isDarwin then "lo0" else "lo";
topology = ./topology.xml;
};
} ./mpi-check-hook.sh

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topology SYSTEM "hwloc2.dtd">
<topology version="2.0">
<object type="Machine" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" gp_index="1">
<object type="Core" cpuset="0x00000001" complete_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" gp_index="2">
<object type="NUMANode" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" gp_index="4"/>
<object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" gp_index="3"/>
</object>
</object>
</topology>

View File

@@ -0,0 +1,55 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
mpi,
attr,
dtcmp,
libarchive,
libcircle,
bzip2,
openssl,
}:
stdenv.mkDerivation rec {
pname = "mpifileutils";
version = "0.12";
src = fetchFromGitHub {
owner = "hpc";
repo = "mpifileutils";
rev = "v${version}";
hash = "sha256-WnjStOLWP/VsZyl2wPqR1Q+YqlJQRCQ4R50uOyqkWuM=";
};
outputs = [
"out"
"dev"
"man"
];
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
attr
dtcmp
libarchive
libcircle
bzip2
openssl
];
propagatedBuildInputs = [ mpi ];
meta = with lib; {
description = "Suite of MPI-based tools to manage large datasets";
homepage = "https://hpc.github.io/mpifileutils";
platforms = platforms.linux;
license = licenses.bsd3;
maintainers = [ maintainers.markuskowa ];
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
stdenv,
fetchurl,
m4,
which,
yasm,
autoreconfHook,
fetchpatch,
buildPackages,
}:
stdenv.mkDerivation rec {
pname = "mpir";
version = "3.0.0";
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [
m4
which
yasm
autoreconfHook
];
src = fetchurl {
url = "https://mpir.org/mpir-${version}.tar.bz2";
sha256 = "1fvmhrqdjs925hzr2i8bszm50h00gwsh17p2kn2pi51zrxck9xjj";
};
patches = [
# Fixes configure check failures with clang 16 due to implicit definitions of `exit`, which
# is an error with newer versions of clang.
(fetchpatch {
url = "https://github.com/wbhart/mpir/commit/bbc43ca6ae0bec4f64e69c9cd4c967005d6470eb.patch";
hash = "sha256-vW+cDK5Hq2hKEyprOJaNbj0bT2FJmMcyZHPE8GUNUWc=";
})
# https://github.com/wbhart/mpir/pull/299
(fetchpatch {
name = "gcc-14-fixes.patch";
url = "https://github.com/wbhart/mpir/commit/4ff3b770cbf86e29b75d12c13e8b854c74bccc5a.patch";
hash = "sha256-dCB2+1IYTGzHUQkDUF4gqvR1xoMPEYVPLGE+EP2wLL4=";
})
];
configureFlags = [ "--enable-cxx" ] ++ lib.optionals stdenv.hostPlatform.isLinux [ "--enable-fat" ];
meta = {
description = "Highly optimised library for bignum arithmetic forked from GMP";
license = lib.licenses.lgpl3Plus;
maintainers = [ lib.maintainers.raskin ];
platforms = lib.platforms.unix;
downloadPage = "https://mpir.org/downloads.html";
homepage = "https://mpir.org/";
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
versionCheckHook,
}:
buildGoModule rec {
pname = "mpls";
version = "0.15.3";
src = fetchFromGitHub {
owner = "mhersson";
repo = "mpls";
tag = "v${version}";
hash = "sha256-MGrvJOnjNNXU8Z9rqDIacb5awKxf50xYeNkY06U4cUk=";
};
vendorHash = "sha256-n3DG3sR7HOQPQJW1t1qC94EKkDBgXpdmjUWtLzAE7kY=";
ldflags = [
"-s"
"-w"
"-X github.com/mhersson/mpls/cmd.Version=${version}"
"-X github.com/mhersson/mpls/internal/mpls.Version=${version}"
];
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Live preview of markdown using Language Server Protocol";
homepage = "https://github.com/mhersson/mpls";
changelog = "https://github.com/mhersson/mpls/releases/tag/${src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ jervw ];
mainProgram = "mpls";
};
}

View File

@@ -0,0 +1,54 @@
{
lib,
stdenv,
fetchurl,
gnutls,
openssl,
gsasl,
libidn,
pkg-config,
nlsSupport ? true,
idnSupport ? true,
gsaslSupport ? true,
sslLibrary ? "gnutls",
}:
assert lib.assertOneOf "sslLibrary" sslLibrary [
"gnutls"
"openssl"
"no"
];
stdenv.mkDerivation rec {
pname = "mpop";
version = "1.4.21";
src = fetchurl {
url = "https://marlam.de/${pname}/releases/${pname}-${version}.tar.xz";
sha256 = "sha256-TKDR4NATZv4+DPSQ2I0VTfURJ4+1lWOHE748pnVmWFU=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs =
lib.optional gsaslSupport gsasl
++ lib.optional idnSupport libidn
++ lib.optional (sslLibrary == "gnutls") gnutls
++ lib.optional (sslLibrary == "openssl") openssl;
configureFlags = [
(lib.enableFeature nlsSupport "nls")
(lib.withFeature idnSupport "idn")
(lib.withFeature gsaslSupport "gsasl")
"--with-tls=${sslLibrary}"
]
++ lib.optional stdenv.hostPlatform.isDarwin "--with-macosx-keyring";
meta = with lib; {
description = "POP3 mail retrieval agent";
homepage = "https://marlam.de/mpop";
license = licenses.gpl3Plus;
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,39 @@
{
lib,
python3Packages,
fetchFromGitHub,
}:
python3Packages.buildPythonApplication rec {
pname = "mpremote";
version = "1.25.0";
src = fetchFromGitHub {
owner = "micropython";
repo = "micropython";
tag = "v${version}";
hash = "sha256-Hk/DHMb9U/mLLVRKe+K3u5snxzW5BW3+bYRPFEAmUBQ=";
};
sourceRoot = "${src.name}/tools/mpremote";
format = "pyproject";
nativeBuildInputs = with python3Packages; [
hatchling
hatch-requirements-txt
hatch-vcs
];
dependencies = with python3Packages; [
pyserial
importlib-metadata
];
pythonImportsCheck = [ "mpremote" ];
meta = {
description = "Integrated set of utilities to remotely interact with and automate a MicroPython device over a serial connection";
homepage = "https://github.com/micropython/micropython/blob/master/tools/mpremote/README.md";
platforms = lib.platforms.unix;
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ _999eagle ];
mainProgram = "mpremote";
};
}

View File

@@ -0,0 +1,93 @@
{
stdenv,
lib,
fetchurl,
unzip,
boost,
curl,
hwloc,
gmp,
}:
let
throwSystem = throw "Unsupported system: ${stdenv.hostPlatform.system}";
srcDir =
{
x86_64-linux = "linux64";
i686-linux = "linux";
x86_64-darwin = "macosx64";
}
."${stdenv.hostPlatform.system}" or throwSystem;
gwnum =
{
x86_64-linux = "make64";
i686-linux = "makefile";
x86_64-darwin = "makemac";
}
."${stdenv.hostPlatform.system}" or throwSystem;
in
stdenv.mkDerivation rec {
pname = "mprime";
version = "30.19b21";
src = fetchurl {
url = "https://download.mersenne.ca/gimps/v30/30.19/p95v${
lib.replaceStrings [ "." ] [ "" ] version
}.source.zip";
hash = "sha256-vchDpUem+R3GcASj77zZmFivfbB17Nd7cYiyPlrCzio=";
};
postPatch = ''
sed -i ${srcDir}/makefile \
-e 's/^LFLAGS =.*//'
substituteInPlace ${srcDir}/makefile \
--replace '-Wl,-Bstatic' "" \
--replace '-Wl,-Bdynamic' ""
'';
sourceRoot = ".";
nativeBuildInputs = [ unzip ];
buildInputs = [
boost
curl
hwloc
gmp
];
enableParallelBuilding = true;
buildPhase = ''
make -C gwnum -f ${gwnum}
make -C ${srcDir}
'';
installPhase = ''
install -Dm555 -t $out/bin ${srcDir}/mprime
'';
meta = with lib; {
description = "Mersenne prime search / System stability tester";
longDescription = ''
MPrime is the Linux command-line interface version of Prime95, to be run
in a text terminal or in a terminal emulator window as a remote shell
client. It is identical to Prime95 in functionality, except it lacks a
graphical user interface.
'';
homepage = "https://www.mersenne.org/";
# Unfree, because of a license requirement to share prize money if you find
# a suitable prime. http://www.mersenne.org/legal/#EULA
license = licenses.unfree;
# Untested on linux-32 and osx. Works in theory.
platforms = [
"i686-linux"
"x86_64-linux"
"x86_64-darwin"
];
maintainers = with maintainers; [ dstremur ];
mainProgram = "mprime";
};
}

View File

@@ -0,0 +1,27 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "mpris-notifier";
version = "0.2.0";
src = fetchFromGitHub {
owner = "l1na-forever";
repo = "mpris-notifier";
rev = "v${version}";
hash = "sha256-SD37JFbfg05GemtRNQKvXkXPAyszItSW9wClzudrTS8=";
};
cargoHash = "sha256-5LDhxciLpDYd4isUQNx8LF3y7m6cfcuIF2atHj/kayg=";
meta = with lib; {
description = "Dependency-light, highly-customizable, XDG desktop notification generator for MPRIS status changes";
homepage = "https://github.com/l1na-forever/mpris-notifier";
license = licenses.mit;
maintainers = with maintainers; [ leixb ];
mainProgram = "mpris-notifier";
};
}

View File

@@ -0,0 +1,86 @@
{
lib,
stdenv,
fetchFromGitHub,
nix-update-script,
curl,
dbus,
libevent,
m4,
meson,
ninja,
pkg-config,
scdoc,
json_c,
xdg-utils,
}:
stdenv.mkDerivation rec {
pname = "mpris-scrobbler";
version = "0.5.7";
src = fetchFromGitHub {
owner = "mariusor";
repo = "mpris-scrobbler";
rev = "v${version}";
sha256 = "sha256-Ro2Eop4CGvcT1hiCYxxmECFp5oefmAnBT9twnVfpsvY=";
};
postPatch = ''
substituteInPlace src/signon.c \
--replace "/usr/bin/xdg-open" "${xdg-utils}/bin/xdg-open"
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace meson.build \
--replace "-Werror=format-truncation=0" "" \
--replace "-Wno-stringop-overflow" ""
'';
nativeBuildInputs = [
m4
meson
ninja
pkg-config
scdoc
];
buildInputs = [
curl
dbus
json_c
libevent
];
mesonFlags = [
"-Dversion=${version}"
];
env.NIX_CFLAGS_COMPILE = toString (
[
# Needed with GCC 12
"-Wno-error=address"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
"-Wno-sometimes-uninitialized"
"-Wno-tautological-pointer-compare"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
"-Wno-array-bounds"
"-Wno-free-nonheap-object"
"-Wno-stringop-truncation"
]
);
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "Minimalistic scrobbler for ListenBrainz, libre.fm, & last.fm";
homepage = "https://github.com/mariusor/mpris-scrobbler";
license = licenses.mit;
maintainers = with maintainers; [ emantor ];
platforms = platforms.unix;
mainProgram = "mpris-scrobbler";
};
}

View File

@@ -0,0 +1,78 @@
{
lib,
alsa-lib,
buildGoModule,
fetchFromGitHub,
glib,
gobject-introspection,
gtk4,
libadwaita,
nix-update-script,
pkg-config,
wrapGAppsHook4,
}:
buildGoModule rec {
pname = "mpris-timer";
version = "2.1.1";
src = fetchFromGitHub {
owner = "efogdev";
repo = "mpris-timer";
tag = version;
hash = "sha256-uFQJSKQ9k0fiOhzydJ7frs2kns9pSdZGILPGCW3QA1w=";
};
vendorHash = "sha256-vCzQiQsljNyI7nBYvq+C/dv0T186Lsj7rOq5xHMs3c0=";
strictDeps = true;
nativeBuildInputs = [
pkg-config
glib
wrapGAppsHook4
];
buildInputs = [
alsa-lib
gobject-introspection
gtk4
libadwaita
];
ldflags = [
"-s"
"-w"
];
tags = [
"wayland"
];
postInstall = ''
mv $out/bin/cmd $out/bin/mpris-timer
install -Dm644 internal/ui/res/icon.svg $out/share/icons/hicolor/scalable/apps/io.github.efogdev.mpris-timer.svg
install -Dm644 misc/io.github.efogdev.mpris-timer.desktop -t $out/share/applications
install -Dm644 misc/io.github.efogdev.mpris-timer.metainfo.xml -t $out/share/metainfo
install -Dm644 misc/io.github.efogdev.mpris-timer.gschema.xml -t $out/share/glib-2.0/schemas
glib-compile-schemas $out/share/glib-2.0/schemas
'';
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Timer app with seamless GNOME integration";
homepage = "https://github.com/efogdev/mpris-timer";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
stunkymonkey
getchoo
];
mainProgram = "mpris-timer";
# Always uses ALSA
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
dbus,
openssl,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "mprisence";
version = "1.2.8";
src = fetchFromGitHub {
owner = "lazykern";
repo = "mprisence";
tag = "v${finalAttrs.version}";
hash = "sha256-d03rctXUsjU5YjEtQ79JXPXs1nM0ORiHRDHJXlTCCR8=";
};
cargoHash = "sha256-V5j2NzryAOJBZKy41ah6Hsw7LPTbxdx3b9+7p6iUHNo=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [
dbus
openssl
];
meta = with lib; {
description = "Highly customizable Discord Rich Presence for MPRIS media players on Linux";
homepage = "https://github.com/lazykern/mprisence";
license = licenses.mit;
maintainers = with maintainers; [ toasteruwu ];
sourceProvenance = with sourceTypes; [ fromSource ];
mainProgram = "mprisence";
};
})

View File

@@ -0,0 +1,44 @@
{
lib,
fetchFromGitHub,
rustPlatform,
versionCheckHook,
nix-update-script,
}:
rustPlatform.buildRustPackage rec {
pname = "mprocs";
version = "0.7.3";
src = fetchFromGitHub {
owner = "pvolok";
repo = "mprocs";
tag = "v${version}";
hash = "sha256-/FuvejcZoaHzlYh4zYDVS1WimzNMNbRZyM39OBi02VA=";
};
cargoHash = "sha256-i9oQT2vpA5nAgQgVpxxfRPvCIb4w1emt1YsjMS6UPIk=";
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "TUI tool to run multiple commands in parallel and show the output of each command separately";
homepage = "https://github.com/pvolok/mprocs";
changelog = "https://github.com/pvolok/mprocs/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
GaetanLepage
pyrox0
];
platforms = lib.platforms.unix;
mainProgram = "mprocs";
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
sqlite,
xcbuildHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mps";
version = "1.118.0";
src = fetchFromGitHub {
owner = "Ravenbrook";
repo = "mps";
tag = "release-${finalAttrs.version}";
hash = "sha256-3ql3jWLccgnQHKf23B1en+nJ9rxqmHcWd7aBr93YER0=";
};
sourceRoot = lib.optionalString stdenv.hostPlatform.isDarwin "${finalAttrs.src.name}/code";
postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
# Disable -Werror to avoid biuld failure on fresh toolchains like
# gcc-13.
substituteInPlace code/gc.gmk \
--replace-fail "-Werror " " "
substituteInPlace code/gp.gmk \
--replace-fail "-Werror " " "
substituteInPlace code/ll.gmk \
--replace-fail "-Werror " " "
'';
nativeBuildInputs =
(lib.optionals stdenv.hostPlatform.isLinux [ autoreconfHook ])
++ (lib.optionals stdenv.hostPlatform.isDarwin [ xcbuildHook ]);
buildInputs = [ sqlite ];
xcbuildFlags = lib.optionals stdenv.hostPlatform.isDarwin [
"-configuration"
"Release"
"-project"
"mps.xcodeproj"
# "-scheme"
# "mps"
"OTHER_CFLAGS='-Wno-error=unused-but-set-variable'"
];
installPhase = lib.optionalString stdenv.hostPlatform.isDarwin ''
runHook preInstall
install -Dm644 Products/Release/libmps.a $out/lib/libmps.a
mkdir $out/include
cp mps*.h $out/include/
runHook postInstall
'';
meta = {
description = "Flexible memory management and garbage collection library";
homepage = "https://www.ravenbrook.com/project/mps";
license = lib.licenses.sleepycat;
platforms = lib.platforms.linux ++ lib.platforms.darwin;
maintainers = [ lib.maintainers.thoughtpolice ];
};
})

View File

@@ -0,0 +1,79 @@
{
autoreconfHook,
autoconf-archive,
doxygen,
ell,
fetchFromGitHub,
fontconfig,
graphviz,
lib,
pandoc,
perl,
pkg-config,
stdenv,
systemd,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mptcpd";
version = "0.13";
src = fetchFromGitHub {
owner = "multipath-tcp";
repo = "mptcpd";
rev = "v${finalAttrs.version}";
hash = "sha256-gPXtYmCLJ8eL6VfCi3kpDA7lNn38WB6J4FXefdu2D7M=";
};
outputs = [
"out"
"doc"
];
nativeBuildInputs = [
autoreconfHook
autoconf-archive
doxygen
graphviz
pandoc
perl
pkg-config
];
# ref. https://github.com/multipath-tcp/mptcpd/blob/main/README.md#bootstrapping
preConfigure = "./bootstrap";
# fix: 'To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"'
postConfigure = "doxygen -u";
configureFlags = [
"--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
];
# fix: 'Fontconfig error: Cannot load default config file: No such file: (null)'
env.FONTCONFIG_FILE = "${fontconfig.out}/etc/fonts/fonts.conf";
buildInputs = [
ell
systemd
];
# fix: 'Fontconfig error: No writable cache directories'
preBuild = "export XDG_CACHE_HOME=$(mktemp -d)";
# build and install doc
postBuild = "make doxygen-doc";
postInstall = "mv doc $doc";
doCheck = true;
meta = {
description = "Daemon for Linux that performs Multipath TCP path management related operations in the user space";
homepage = "https://github.com/multipath-tcp/mptcpd";
changelog = "https://github.com/multipath-tcp/mptcpd/blob/${finalAttrs.src.rev}/NEWS";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ nim65s ];
mainProgram = "mptcpize";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,49 @@
{
lib,
rustPlatform,
fetchFromGitHub,
makeWrapper,
mpv,
yt-dlp,
nix-update-script,
}:
rustPlatform.buildRustPackage rec {
pname = "mpv-handler";
version = "0.3.16";
src = fetchFromGitHub {
owner = "akiirui";
repo = "mpv-handler";
tag = "v${version}";
hash = "sha256-RpfHUVZmhtneeu8PIfxinYG3/groJPA9QveDSvzU6Zo=";
};
cargoHash = "sha256-FrE1PSRc7GTNUum05jNgKnzpDUc3FiS5CEM18It0lYY=";
passthru.updateScript = nix-update-script { };
nativeBuildInputs = [ makeWrapper ];
postInstall = ''
install -Dm644 share/linux/mpv-handler.desktop -t $out/share/applications/
install -Dm644 share/linux/mpv-handler-debug.desktop -t $out/share/applications/
install -Dm644 share/linux/config.toml -t $out/share/doc/mpv-handler/
wrapProgram $out/bin/mpv-handler \
--prefix PATH : ${
lib.makeBinPath [
mpv
yt-dlp
]
}
'';
meta = {
description = "Play website videos and songs with mpv & yt-dlp";
homepage = "https://github.com/akiirui/mpv-handler";
mainProgram = "mpv-handler";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ lonerOrz ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
pname = "mpv-shim-default-shaders";
version = "2.1.0";
src = fetchFromGitHub {
owner = "iwalton3";
repo = "default-shader-pack";
rev = "v${version}";
sha256 = "sha256-BM2GvmUoWQUUMH464YIIqu5A1t1B+otbJxAGFbySuq8=";
};
installPhase = ''
mkdir -p $out/share/${pname}
cp -r shaders *.json $out/share/${pname}
'';
meta = with lib; {
homepage = "https://github.com/iwalton3/default-shader-pack";
description = "Preconfigured set of MPV shaders and configurations for MPV Shim media clients";
license = with licenses; [
gpl3Plus
mit
unlicense
];
maintainers = with maintainers; [ devusb ];
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
fetchFromGitHub,
rustPlatform,
wrapGAppsHook3,
pkg-config,
openssl,
}:
rustPlatform.buildRustPackage rec {
pname = "mpv-subs-popout";
version = "0.5.3";
src = fetchFromGitHub {
owner = "sdaqo";
repo = "mpv-subs-popout";
rev = "v${version}";
hash = "sha256-ELxI1pn1o+SQNtCKbZ0NFffqhJwRJzoeLSQHli9ZYwM=";
};
cargoHash = "sha256-n7e3VrnueU7Lsj/FwM0aC9ThTqUlq27SS3RKugduwEA=";
nativeBuildInputs = [
pkg-config
wrapGAppsHook3
];
buildInputs = [ openssl ];
meta = {
description = "Little application that makes it possible to display mpv's subs anywhere you want. With translation features";
homepage = "https://github.com/sdaqo/mpv-subs-popout";
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.sdaqo ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,54 @@
{
lib,
fetchFromGitHub,
makeWrapper,
socat,
stdenv,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mpvc";
version = "1.4-unstable-2024-07-09";
src = fetchFromGitHub {
owner = "gmt4";
repo = "mpvc";
rev = "966156dacd026cde220951d41c4ac5915cd6ad64";
hash = "sha256-/M3xOb0trUaxJGXmV2+sOCbrHGyP4jpyo+S/oBoDkO0=";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ socat ];
outputs = [
"out"
"doc"
];
makeFlags = [ "PREFIX=$(out)" ];
installFlags = [ "PREFIX=$(out)" ];
strictDeps = true;
postInstall = ''
wrapProgram $out/bin/mpvc --prefix PATH : "${lib.getBin socat}/"
'';
# This is not Archlinux :)
postFixup = ''
rm -r $out/share/licenses
rmdir $out/share || true
'';
meta = {
homepage = "https://github.com/gmt4/mpvc";
description = "Mpc-like control interface for mpv";
license = lib.licenses.mit;
mainProgram = "mpvc";
maintainers = [ ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,66 @@
{
stdenv,
lib,
meson,
ninja,
wayland,
wayland-protocols,
wayland-scanner,
egl-wayland,
glew,
mpv,
pkg-config,
fetchFromGitHub,
makeWrapper,
installShellFiles,
}:
stdenv.mkDerivation rec {
pname = "mpvpaper";
version = "1.8";
src = fetchFromGitHub {
owner = "GhostNaN";
repo = "mpvpaper";
rev = version;
sha256 = "sha256-JTlZSl8CZmWx7YTd0T58pwq10L1GKXNfAw0XlIsz7F8=";
};
strictDeps = true;
nativeBuildInputs = [
meson
ninja
pkg-config
makeWrapper
installShellFiles
wayland-scanner
];
buildInputs = [
wayland
wayland-protocols
egl-wayland
glew
mpv
];
preInstall = ''
mv ../mpvpaper.man ../mpvpaper.1
'';
postInstall = ''
wrapProgram $out/bin/mpvpaper \
--prefix PATH : ${lib.makeBinPath [ mpv ]}
installManPage ../mpvpaper.1
'';
meta = with lib; {
description = "Video wallpaper program for wlroots based wayland compositors";
homepage = "https://github.com/GhostNaN/mpvpaper";
license = licenses.gpl3Only;
platforms = platforms.linux;
mainProgram = "mpvpaper";
maintainers = with maintainers; [ atila ];
};
}

View File

@@ -0,0 +1,79 @@
{
lib,
stdenv,
cmake,
fetchFromGitLab,
json_c,
libsodium,
libxml2,
ncurses,
}:
let
rev = "22796663dcad81684ab24308d9db570f6781ba2c";
in
stdenv.mkDerivation rec {
name = "mpw-${version}-${builtins.substring 0 8 rev}";
version = "2.6";
src = fetchFromGitLab {
owner = "MasterPassword";
repo = "MasterPassword";
sha256 = "1f2vqacgbyam1mazawrfim8zwp38gnwf5v3xkkficsfnv789g6fw";
inherit rev;
};
sourceRoot = "${src.name}/platform-independent/c/cli";
postPatch = ''
rm build
substituteInPlace mpw-cli-tests \
--replace '/usr/bin/env bash' ${stdenv.shell} \
--replace ./mpw ./build/mpw
'';
cmakeFlags = [
"-Dmpw_version=${version}"
"-DBUILD_MPW_TESTS=ON"
];
nativeBuildInputs = [ cmake ];
buildInputs = [
json_c
libxml2
libsodium
ncurses
];
installPhase = ''
runHook preInstall
install -Dm755 mpw $out/bin/mpw
install -Dm644 ../mpw.completion.bash $out/share/bash-completion/completions/_mpw
install -Dm644 ../../../../README.md $out/share/doc/mpw/README.md
runHook postInstall
'';
# Some tests are expected to fail on ARM64
# See: https://gitlab.com/spectre.app/cli/-/issues/27#note_962950844 (mpw is a predecessor to spectre-cli and this issue is relevant to mpw as well)
doCheck = !(stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
checkPhase = ''
runHook preCheck
../mpw-cli-tests
runHook postCheck
'';
meta = with lib; {
description = "Stateless password management solution";
mainProgram = "mpw";
homepage = "https://masterpasswordapp.com/";
license = licenses.gpl3;
platforms = platforms.unix;
};
}