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,42 @@
{
lib,
fetchFromGitHub,
buildGoModule,
versionCheckHook,
nix-update-script,
}:
buildGoModule rec {
pname = "vi-mongo";
version = "0.1.30";
src = fetchFromGitHub {
owner = "kopecmaciej";
repo = "vi-mongo";
tag = "v${version}";
hash = "sha256-gNOKWgGRuWUNqBAu5gWx/HFiNfx+HOdi5tYVyXP3dcI=";
};
vendorHash = "sha256-QoYjNzWWNrEDS4Xq1NF77iqX5WTNxnVV1UJiYq2slhw=";
ldflags = [
"-s"
"-w"
"-X=github.com/kopecmaciej/vi-mongo/cmd.version=${version}"
];
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "MongoDB TUI manager designed to simplify data visualization and quick manipulation";
homepage = "https://github.com/kopecmaciej/vi-mongo";
changelog = "https://github.com/kopecmaciej/vi-mongo/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ genga898 ];
mainProgram = "vi-mongo";
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
fetchurl,
appimageTools,
}:
let
pname = "via";
version = "3.0.0";
src = fetchurl {
url = "https://github.com/the-via/releases/releases/download/v${version}/via-${version}-linux.AppImage";
name = "via-${version}-linux.AppImage";
sha256 = "sha256-+uTvmrqHK7L5VA/lUHCZZeRYPUrcVA+vjG7venxuHhs=";
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit pname version src;
profile = ''
# Skip prompt to add udev rule.
# On NixOS you can add this rule with `services.udev.packages = [ pkgs.via ];`.
export DISABLE_SUDO_PROMPT=1
'';
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/via-nativia.desktop -t $out/share/applications
substituteInPlace $out/share/applications/via-nativia.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
cp -r ${appimageContents}/usr/share/icons $out/share
mkdir -p $out/etc/udev/rules.d
echo 'KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0666", TAG+="uaccess", TAG+="udev-acl"' > $out/etc/udev/rules.d/92-viia.rules
'';
meta = with lib; {
description = "Yet another keyboard configurator";
homepage = "https://caniusevia.com/";
# Upstream claims to be GPL-3 but doesn't release source code
license = licenses.unfreeRedistributable;
maintainers = with maintainers; [ emilytrau ];
platforms = [ "x86_64-linux" ];
mainProgram = "via";
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
fetchurl,
appimageTools,
}:
let
version = "0.7.5";
pname = "Vial";
src = fetchurl {
url = "https://github.com/vial-kb/vial-gui/releases/download/v${version}/${pname}-v${version}-x86_64.AppImage";
hash = "sha256-sN8i/MOPhaLZ4iJNKz/MdpRIGTZVV/G5qD7o+ID8dAM=";
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit pname version src;
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
cp -r ${appimageContents}/usr/share/icons $out/share
mkdir -p $out/etc/udev/rules.d/ # https://get.vial.today/getting-started/linux-udev.html
echo 'KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0666", TAG+="uaccess", TAG+="udev-acl"' > $out/etc/udev/rules.d/92-viia.rules
'';
meta = {
description = "Open-source GUI and QMK fork for configuring your keyboard in real time";
homepage = "https://get.vial.today";
license = lib.licenses.gpl2Plus;
mainProgram = "Vial";
maintainers = with lib.maintainers; [ kranzes ];
platforms = [ "x86_64-linux" ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
}

View File

@@ -0,0 +1,163 @@
{
fetchurl,
lib,
stdenv,
dpkg,
makeWrapper,
alsa-lib,
brotli,
cups,
curl,
dbus,
expat,
fontconfig,
freetype,
glib,
gst_all_1,
harfbuzz,
lcms,
libcap,
libevent,
libGL,
libGLU,
libkrb5,
libopus,
libpulseaudio,
libxkbcommon,
libxkbfile,
libxml2,
libxslt,
libwebp,
libgbm,
nspr,
nss,
openssl,
snappy,
systemd,
wayland,
xorg,
zlib,
zstd,
}:
stdenv.mkDerivation {
pname = "viber";
version = "23.2.0.3";
src = fetchurl {
# Taking Internet Archive snapshot of a specific version to avoid breakage
# on new versions
url = "https://web.archive.org/web/20240824071651/https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb";
hash = "sha256-9WHiI2WlsgEhCPkrQoAunmF6lSb2n5RgQJ2+sdnSShM=";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ dpkg ];
dontUnpack = true;
libPath = lib.makeLibraryPath [
alsa-lib
brotli
cups
curl
dbus
expat
fontconfig
freetype
glib
gst_all_1.gst-plugins-base
gst_all_1.gstreamer
harfbuzz
lcms
libcap
libevent
libGLU
libGL
libkrb5
libopus
libpulseaudio
libxkbcommon
libxkbfile
libxml2
libxslt
libwebp
libgbm
nspr
nss
openssl
snappy
stdenv.cc.cc
systemd
wayland
zlib
zstd
xorg.libICE
xorg.libSM
xorg.libX11
xorg.libxcb
xorg.libXcomposite
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXi
xorg.libXrandr
xorg.libXrender
xorg.libXScrnSaver
xorg.libXtst
xorg.xcbutilimage
xorg.xcbutilkeysyms
xorg.xcbutilrenderutil
xorg.xcbutilwm
];
installPhase = ''
dpkg-deb -x $src $out
mkdir -p $out/bin
# Soothe nix-build "suspicions"
chmod -R g-w $out
for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
patchelf --set-rpath $libPath:$out/opt/viber/lib:$out/lib $file || true
done
# qt.conf is not working, so override everything using environment variables
wrapProgram $out/opt/viber/Viber \
--set QT_QPA_PLATFORM "xcb" \
--set QT_PLUGIN_PATH "$out/opt/viber/plugins" \
--set QT_XKB_CONFIG_ROOT "${xorg.xkeyboardconfig}/share/X11/xkb" \
--set QTCOMPOSE "${xorg.libX11.out}/share/X11/locale" \
--set QML2_IMPORT_PATH "$out/opt/viber/qml"
ln -s $out/opt/viber/Viber $out/bin/viber
mv $out/usr/share $out/share
rm -rf $out/usr
# Fix the desktop link
substituteInPlace $out/share/applications/viber.desktop \
--replace /opt/viber/Viber $out/opt/viber/Viber \
--replace /usr/share/ $out/share/
# Fix libxml2 breakage. See https://github.com/NixOS/nixpkgs/pull/396195#issuecomment-2881757108
mkdir -p "$out/lib"
ln -s "${lib.getLib libxml2}/lib/libxml2.so" "$out/opt/viber/lib/libxml2.so.2"
'';
dontStrip = true;
dontPatchELF = true;
meta = {
homepage = "https://www.viber.com";
description = "Instant messaging and Voice over IP (VoIP) app";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [ jagajaga ];
};
}

View File

@@ -0,0 +1,49 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
libvibrant,
libxcb,
libXrandr,
pkg-config,
qt6,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vibrantLinux";
version = "2.2.0";
src = fetchFromGitHub {
owner = "libvibrant";
repo = "vibrantLinux";
rev = "v${finalAttrs.version}";
hash = "sha256-GsGWQ6Os8GQ1XbRKrlTOpwPvwyfT/6ftjlt+fJ/YiK8=";
};
nativeBuildInputs = [
cmake
pkg-config
qt6.wrapQtAppsHook
];
buildInputs = [
libvibrant
libxcb
libXrandr
qt6.qtbase
qt6.qttools
];
meta = with lib; {
description = "Tool to automate managing your screen's saturation depending on what programs are running";
homepage = "https://github.com/libvibrant/vibrantLinux";
license = licenses.gpl3Plus;
maintainers = with maintainers; [
Scrumplex
unclamped
];
platforms = platforms.linux;
mainProgram = "vibrantLinux";
};
})

View File

@@ -0,0 +1,93 @@
{
lib,
stdenv,
fetchurl,
bison,
flex,
perl,
curl,
libpng,
giflib,
alsa-lib,
readline,
libGLU,
libGL,
pkg-config,
gtk3,
glew,
SDL,
SDL_image,
dos2unix,
runtimeShell,
xa,
file,
wrapGAppsHook3,
xdg-utils,
libevdev,
pulseaudio,
}:
stdenv.mkDerivation rec {
pname = "vice";
version = "3.9";
src = fetchurl {
url = "mirror://sourceforge/vice-emu/vice-${version}.tar.gz";
sha256 = "sha256-QCArY0VeJrh+zGPrWlIyLG+j9XyrEqzwwifPn02uw3A=";
};
nativeBuildInputs = [
bison
dos2unix
file
flex
pkg-config
wrapGAppsHook3
];
buildInputs = [
alsa-lib
curl
giflib
gtk3
glew
libGL
libGLU
libpng
perl
readline
SDL
SDL_image
xa
xdg-utils
libevdev
pulseaudio
];
dontDisableStatic = true;
configureFlags = [
"--enable-sdl2ui"
"--enable-gtk3ui"
"--enable-desktop-files"
"--disable-pdf-docs"
"--with-gif"
];
LIBS = "-lGL";
preBuild = ''
sed -i -e 's|#!/usr/bin/env bash|${runtimeShell}/bin/bash|' src/arch/gtk3/novte/box_drawing_generate.sh
'';
postInstall = ''
mkdir -p $out/share/applications
cp src/arch/gtk3/data/unix/vice-org-*.desktop $out/share/applications
'';
meta = {
description = "Emulators for a variety of 8-bit Commodore computers";
homepage = "https://vice-emu.sourceforge.io/";
license = lib.licenses.gpl2Plus;
maintainers = [ lib.maintainers.sander ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,34 @@
{
rustPlatform,
fetchFromGitHub,
lib,
}:
rustPlatform.buildRustPackage rec {
pname = "viceroy";
version = "0.14.4";
src = fetchFromGitHub {
owner = "fastly";
repo = "viceroy";
rev = "v${version}";
hash = "sha256-rK+Us4QvvWpHtMvq5s3koPyy7xKhVQsxUMQnpyfMtDU=";
};
cargoHash = "sha256-SacepQEMpDxqd7vl/sjkxyTb3R7z+Q1IQOrfZyV8nRU=";
cargoTestFlags = [
"--package viceroy-lib"
];
meta = with lib; {
description = "Provides local testing for developers working with Compute@Edge";
mainProgram = "viceroy";
homepage = "https://github.com/fastly/Viceroy";
license = licenses.asl20;
maintainers = with maintainers; [
ereslibre
];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation rec {
pname = "victor-mono";
version = "1.5.6";
# Upstream prefers we download from the website,
# but we really insist on a more versioned resource.
# Happily, tagged releases on github contain the same
# file `VictorMonoAll.zip` as from the website,
# so we extract it from the tagged release.
# Both methods produce the same file, but this way
# we can safely reason about what version it is.
src = fetchzip {
url = "https://github.com/rubjo/victor-mono/raw/v${version}/public/VictorMonoAll.zip";
stripRoot = false;
hash = "sha256-PnCCU7PO+XcxUk445sU5xVl8XqdSPJighjtDTqI6qiw=";
};
installPhase = ''
runHook preInstall
mkdir -p "$out/share/fonts/"
mv OTF $out/share/fonts/opentype
mv TTF $out/share/fonts/truetype
runHook postInstall
'';
meta = with lib; {
description = "Free programming font with cursive italics and ligatures";
homepage = "https://rubjo.github.io/victor-mono";
license = licenses.ofl;
maintainers = with maintainers; [ jpotier ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,72 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
nixosTests,
withServer ? true,
withVlAgent ? false,
}:
buildGoModule (finalAttrs: {
pname = "VictoriaLogs";
version = "1.35.0";
src = fetchFromGitHub {
owner = "VictoriaMetrics";
repo = "VictoriaLogs";
tag = "v${finalAttrs.version}";
hash = "sha256-9g23rtLi/tHIXpfZSHgaIHIGHwQ0eYW5kLtMHqrIlMk=";
};
vendorHash = null;
subPackages =
lib.optionals withServer [
"app/victoria-logs"
"app/vlinsert"
"app/vlselect"
"app/vlstorage"
"app/vlogsgenerator"
"app/vlogscli"
]
++ lib.optionals withVlAgent [ "app/vlagent" ];
postPatch = ''
# Allow older go versions
substituteInPlace go.mod \
--replace-fail "go 1.25.1" "go ${finalAttrs.passthru.go.version}"
substituteInPlace vendor/modules.txt \
--replace-fail "go 1.25.0" "go ${finalAttrs.passthru.go.version}"
'';
ldflags = [
"-s"
"-w"
"-X github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo.Version=${finalAttrs.version}"
];
__darwinAllowLocalNetworking = true;
passthru = {
tests = {
inherit (nixosTests)
victorialogs
;
};
updateScript = nix-update-script { };
};
meta = {
homepage = "https://docs.victoriametrics.com/victorialogs/";
description = "User friendly log database from VictoriaMetrics";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
marie
shawn8901
];
changelog = "https://github.com/VictoriaMetrics/VictoriaLogs/releases/tag/${finalAttrs.src.tag}";
mainProgram = "victoria-logs";
};
})

View File

@@ -0,0 +1,99 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nixosTests,
withServer ? true, # the actual metrics server
withVmAgent ? true, # Agent to collect metrics
withVmAlert ? true, # Alert Manager
withVmAuth ? true, # HTTP proxy for authentication
withBackupTools ? true, # vmbackup, vmrestore
withVmctl ? true, # vmctl is used to migrate time series
}:
buildGoModule (finalAttrs: {
pname = "VictoriaMetrics";
version = "1.127.0";
src = fetchFromGitHub {
owner = "VictoriaMetrics";
repo = "VictoriaMetrics";
tag = "v${finalAttrs.version}";
hash = "sha256-j0PikCV0VWSfp2rvwssXwvkRGQzFNd6hidZv3bufUuI=";
};
vendorHash = null;
subPackages =
lib.optionals withServer [
"app/victoria-metrics"
"app/vminsert"
"app/vmselect"
"app/vmstorage"
"app/vmui"
]
++ lib.optionals withVmAgent [ "app/vmagent" ]
++ lib.optionals withVmAlert [
"app/vmalert"
"app/vmalert-tool"
]
++ lib.optionals withVmAuth [ "app/vmauth" ]
++ lib.optionals withVmctl [ "app/vmctl" ]
++ lib.optionals withBackupTools [
"app/vmbackup"
"app/vmrestore"
];
postPatch = ''
# main module (github.com/VictoriaMetrics/VictoriaMetrics) does not contain package
# github.com/VictoriaMetrics/VictoriaMetrics/app/vmui/packages/vmui/web
#
# This appears to be some kind of test server for development purposes only.
rm -f app/vmui/packages/vmui/web/{go.mod,main.go}
# Allow older go versions
substituteInPlace go.mod \
--replace-fail "go 1.25.1" "go ${finalAttrs.passthru.go.version}"
# Increase timeouts in tests to prevent failure on heavily loaded builders
substituteInPlace lib/storage/storage_test.go \
--replace-fail "time.After(10 " "time.After(120 " \
--replace-fail "time.NewTimer(30 " "time.NewTimer(120 " \
--replace-fail "time.NewTimer(time.Second * 10)" "time.NewTimer(time.Second * 120)" \
'';
ldflags = [
"-s"
"-w"
"-X github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo.Version=${finalAttrs.version}"
];
preCheck = ''
# `lib/querytracer/tracer_test.go` expects `buildinfo.Version` to be unset
export ldflags=''${ldflags//=${finalAttrs.version}/=}
'';
__darwinAllowLocalNetworking = true;
passthru = {
tests = {
inherit (nixosTests) victoriametrics;
};
updateScript = ./update.sh;
};
meta = {
homepage = "https://victoriametrics.com/";
description = "Fast, cost-effective and scalable time series database, long-term remote storage for Prometheus";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
yorickvp
ivan
leona
shawn8901
ryan4yin
];
changelog = "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v${finalAttrs.version}";
mainProgram = "victoria-metrics";
};
})

View File

@@ -0,0 +1,13 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p curl jq nix-update
set -ex
curl_github() {
curl -L ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} "$@"
}
latestRelease=$(curl_github https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest | jq -r ".tag_name")
latestVersion="$(expr "$latestRelease" : 'v\(.*\)')"
nix-update --version "$latestVersion" victoriametrics

View File

@@ -0,0 +1,63 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
nixosTests,
withServer ? true,
withVtInsert ? false,
withVtSelect ? false,
withVtStorage ? false,
withVtGen ? false,
}:
buildGoModule (finalAttrs: {
pname = "VictoriaTraces";
version = "0.2.0";
src = fetchFromGitHub {
owner = "VictoriaMetrics";
repo = "VictoriaTraces";
tag = "v${finalAttrs.version}";
hash = "sha256-b4/ix191xtW2HpczfRbez2gibgGx7jBRm0hvuP/rTpA=";
};
vendorHash = null;
subPackages =
lib.optionals withServer [ "app/victoria-traces" ]
++ lib.optionals withVtInsert [ "app/vtinsert" ]
++ lib.optionals withVtSelect [ "app/vtselect" ]
++ lib.optionals withVtStorage [ "app/vtstorage" ]
++ lib.optionals withVtGen [ "app/vtgen" ];
postPatch = ''
# Allow older go versions
substituteInPlace go.mod \
--replace-fail "go 1.24.6" "go ${finalAttrs.passthru.go.version}"
'';
ldflags = [
"-s"
"-w"
"-X github.com/VictoriaMetrics/VictoriaTraces/lib/buildinfo.Version=${finalAttrs.version}"
];
__darwinAllowLocalNetworking = true;
passthru = {
tests = {
inherit (nixosTests) victoriatraces;
};
updateScript = nix-update-script { };
};
meta = {
homepage = "https://docs.victoriametrics.com/victoriatraces/";
description = "Fast open-source observability solution for distributed traces";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ cmacrae ];
changelog = "https://github.com/VictoriaMetrics/VictoriaTraces/releases/tag/${finalAttrs.src.tag}";
mainProgram = "victoria-traces";
};
})

View File

@@ -0,0 +1,67 @@
{
lib,
fetchFromGitHub,
ffmpeg,
mediainfo,
mpv,
python3Packages,
qt5,
}:
let
version = "6.0.5.3";
in
python3Packages.buildPythonApplication {
pname = "vidcutter";
inherit version;
src = fetchFromGitHub {
owner = "ozmartian";
repo = "vidcutter";
tag = version;
hash = "sha256-MCltdvXgsZgPh0ezGvWFEa5vZVDBc6r0WxvXSLf4x2Y=";
};
pyproject = true;
nativeBuildInputs = [ qt5.wrapQtAppsHook ];
buildInputs = [
mpv
qt5.qtwayland
];
build-system = with python3Packages; [
setuptools
];
dependencies = with python3Packages; [
pyopengl
pyqt5
simplejson
];
dontWrapQtApps = true;
makeWrapperArgs = [
"\${qtWrapperArgs[@]}"
"--prefix PATH : ${
lib.makeBinPath [
ffmpeg
mediainfo
]
}"
];
meta = {
description = "Modern yet simple multi-platform video cutter and joiner";
longDescription = ''
A modern, simple to use, constantly evolving and hella fast MEDIA CUTTER + JOINER
with frame-accurate SmartCut technology, chapter support, media stream selection for audio + subtitle channels
and blackdetect video filter support to automatically detect scene changes or skip commercials in digital TV recordings.
'';
homepage = "https://vidcutter.ozmartians.com/";
changelog = "https://github.com/ozmartian/vidcutter/blob/master/CHANGELOG";
license = lib.licenses.gpl3Plus;
maintainers = [ lib.maintainers.zi3m5f ];
mainProgram = "vidcutter";
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "viddy";
version = "1.3.0";
src = fetchFromGitHub {
owner = "sachaos";
repo = "viddy";
rev = "v${version}";
hash = "sha256-ZdDe0ymPkj0ZGiPLo1Y0qMDk2SsUcPsSStay+Tuf4p0=";
};
cargoHash = "sha256-Bp3t/fjaFeouIoKlRvQPVDlc46Ggitfx6HUXE+RZN0A=";
env.VERGEN_BUILD_DATE = "2024-11-28"; # managed via the update script
env.VERGEN_GIT_DESCRIBE = "Nixpkgs";
passthru.updateScript.command = [ ./update.sh ];
meta = {
description = "Modern `watch` command";
changelog = "https://github.com/sachaos/viddy/releases";
homepage = "https://github.com/sachaos/viddy";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
j-hui
phanirithvij
];
mainProgram = "viddy";
};
}

40
pkgs/by-name/vi/viddy/update.sh Executable file
View File

@@ -0,0 +1,40 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p bash nix-update curl coreutils jq
# shellcheck shell=bash
# adapted from pkgs/by-name/ya/yazi-unwrapped/update.sh
set -eou pipefail
NIXPKGS_DIR="$PWD"
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
# Get latest release
VIDDY_RELEASE=$(
curl --silent ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
https://api.github.com/repos/sachaos/viddy/releases/latest
)
# Get release information
latestBuildDate=$(echo "$VIDDY_RELEASE" | jq -r ".published_at")
latestVersion=$(echo "$VIDDY_RELEASE" | jq -r ".tag_name")
latestBuildDate="${latestBuildDate%T*}" # remove the timestamp and get the date
latestVersion="${latestVersion:1}" # remove first char 'v'
oldVersion=$(nix eval --raw -f "$NIXPKGS_DIR" viddy.version)
if [[ "$oldVersion" == "$latestVersion" ]]; then
echo "viddy is up-to-date: ${oldVersion}"
exit 0
fi
echo "Updating viddy $oldVersion -> $latestVersion"
# nix-prefetch broken due to ninja finalAttrs.src.rev
nix-update viddy --version "$latestVersion"
# Build date
sed -i 's#env.VERGEN_BUILD_DATE = "[^"]*"#env.VERGEN_BUILD_DATE = "'"${latestBuildDate}"'"#' "$SCRIPT_DIR/package.nix"

View File

@@ -0,0 +1,53 @@
{
lib,
stdenv,
fetchFromGitHub,
SDL2,
SDL2_ttf,
ffmpeg,
}:
stdenv.mkDerivation rec {
pname = "video-compare";
version = "20250928";
src = fetchFromGitHub {
owner = "pixop";
repo = "video-compare";
tag = version;
hash = "sha256-md+h39tMbd07pHZzQ1eae5QCkqYErMoD6oEYov9lLBU=";
};
postPatch = ''
# Fix build on Darwin by using $CXX set by setup-hook
substituteInPlace makefile \
--replace-fail 'CXX = g++' ""
'';
buildInputs = [
SDL2
SDL2_ttf
ffmpeg
];
env.NIX_CFLAGS_COMPILE = "-I${lib.getDev SDL2}/include/SDL2";
installPhase = ''
runHook preInstall
install -Dt $out/bin video-compare
runHook postInstall
'';
enableParallelBuilding = true;
meta = {
homepage = "https://github.com/pixop/video-compare";
description = "Split screen video comparison tool";
maintainers = with lib.maintainers; [ orivej ];
license = lib.licenses.gpl2Only;
mainProgram = "video-compare";
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,72 @@
{
lib,
fetchFromGitHub,
ffmpeg,
python3Packages,
meson,
yt-dlp,
wrapGAppsHook4,
desktop-file-utils,
ninja,
gobject-introspection,
glib,
pkg-config,
gtk4,
librsvg,
libadwaita,
}:
python3Packages.buildPythonApplication rec {
pname = "video-downloader";
version = "0.12.27";
pyproject = false; # Built with meson
src = fetchFromGitHub {
owner = "Unrud";
repo = "video-downloader";
tag = "v${version}";
hash = "sha256-OSu2I+c78We7C7OaPaqA09uilnIwQcNN1oNxL8v0kF0=";
};
propagatedBuildInputs = with python3Packages; [
pygobject3
yt-dlp
];
nativeBuildInputs = [
pkg-config
meson
ninja
wrapGAppsHook4
desktop-file-utils
gobject-introspection
];
buildInputs = [
glib
gtk4
librsvg
libadwaita
];
# would require network connectivity
doCheck = false;
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=(
"''${gappsWrapperArgs[@]}"
--prefix PATH : ${lib.makeBinPath [ ffmpeg ]}
)
'';
meta = {
homepage = "https://github.com/Unrud/video-downloader";
changelog = "https://github.com/Unrud/video-downloader/releases";
description = "GUI application based on yt-dlp";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ fliegendewurst ];
mainProgram = "video-downloader";
};
}

View File

@@ -0,0 +1,98 @@
{
stdenv,
lib,
fetchFromGitLab,
rustPlatform,
cargo,
pkg-config,
meson,
rustc,
wrapGAppsHook4,
desktop-file-utils,
blueprint-compiler,
ninja,
gtk4,
libadwaita,
gst_all_1,
ffmpeg-headless,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "video-trimmer";
version = "25.03";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "YaLTeR";
repo = "video-trimmer";
tag = "v${finalAttrs.version}";
hash = "sha256-pJCXL0voOoc8KpYECYRWGefYMrsApNPST4wv8SQlH34=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-3ycc4jXneGsz9Jp9Arzf224JPAKM+PxUkitWcIXre8Y=";
};
postPatch = ''
substituteInPlace build-aux/cargo.sh --replace-fail \
'cp "$CARGO_TARGET_DIR"/' \
'cp "$CARGO_TARGET_DIR"/${stdenv.hostPlatform.rust.cargoShortTarget}/'
'';
nativeBuildInputs = [
pkg-config
meson
wrapGAppsHook4
desktop-file-utils
blueprint-compiler
ninja
# Present here in addition to buildInputs, because meson runs
# `gtk4-update-icon-cache` during installPhase, thanks to:
# https://gitlab.gnome.org/YaLTeR/video-trimmer/-/merge_requests/12
gtk4
rustPlatform.cargoSetupHook
cargo
rustc
];
buildInputs = [
gtk4
libadwaita
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good # for scaletempo and webm
gst_all_1.gst-plugins-bad
];
# For https://gitlab.gnome.org/YaLTeR/video-trimmer/-/blob/cf64e8dea345bcd991db29a3f862a9277c71fe81/build-aux/cargo.sh#L19
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.rustcTargetSpec;
doCheck = true;
strictDeps = true;
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : "${lib.makeBinPath [ ffmpeg-headless ]}"
)
'';
passthru = {
updateScript = nix-update-script { };
};
meta = {
homepage = "https://gitlab.gnome.org/YaLTeR/video-trimmer";
description = "Trim videos quickly";
changelog = "https://gitlab.gnome.org/YaLTeR/video-trimmer/-/releases/v${finalAttrs.version}";
maintainers = with lib.maintainers; [
doronbehar
];
teams = [ lib.teams.gnome-circle ];
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
mainProgram = "video-trimmer";
};
})

View File

@@ -0,0 +1,93 @@
{
lib,
stdenv,
cmake,
fetchFromGitHub,
pkg-config,
versionCheckHook,
nix-update-script,
boost,
ffmpeg,
glslang,
llvmPackages,
ncnn,
spdlog,
vulkan-headers,
vulkan-loader,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "video2x";
version = "6.4.0";
src = fetchFromGitHub {
owner = "k4yt3x";
repo = "video2x";
tag = finalAttrs.version;
hash = "sha256-DSsfGAkPOtqqj0FA1N33O+OYmv+CMUsrvmh5SrnF7eA=";
fetchSubmodules = false;
leaveDotGit = true;
postFetch = ''
pushd $out
git reset --hard HEAD
# Fetch the dependencies that nixpkgs cannot provide (non-recursive)
git submodule update --init third_party/librealesrgan_ncnn_vulkan
git submodule update --init third_party/librealcugan_ncnn_vulkan
git submodule update --init third_party/librife_ncnn_vulkan
# Cleanup
rm -rf .git
popd
'';
};
postPatch = ''
substituteInPlace src/fsutils.cpp \
--replace-fail '/usr/share/video2x' '${placeholder "out"}/share/video2x'
'';
strictDeps = true;
nativeBuildInputs = [
cmake
pkg-config
glslang
];
buildInputs = [
boost
ffmpeg
ncnn
spdlog
vulkan-headers
vulkan-loader
]
++ lib.optionals stdenv.cc.isClang [
llvmPackages.openmp
];
cmakeFlags = [
# Don't build the libvideo2x shared library, we only need the CLI tool
(lib.cmakeBool "BUILD_SHARED_LIBS" false)
];
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "AI-powered video upscaling tool";
changelog = "https://github.com/k4yt3x/video2x/releases/tag/${finalAttrs.version}/CHANGELOG.md";
homepage = "https://github.com/k4yt3x/video2x";
license = lib.licenses.agpl3Plus;
platforms = [ "x86_64-linux" ];
mainProgram = "video2x";
maintainers = [ lib.maintainers.matteopacini ];
};
})

2337
pkgs/by-name/vi/vidmerger/Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,47 @@
{
lib,
ffmpeg,
rustPlatform,
fetchFromGitHub,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "vidmerger";
version = "0.4.0";
src = fetchFromGitHub {
owner = "TGotwig";
repo = "vidmerger";
tag = finalAttrs.version;
hash = "sha256-N/iX0EN5R4oG4XHhpd/VaihrEHv5uT+grAJ6/KfSORE=";
};
cargoLock.lockFile = ./Cargo.lock;
postPatch = ''
cp ${./Cargo.lock} Cargo.lock
'';
# Running cargo test -- . fails because it expects to have two mp4 files so that it can test the video merging functionalities
doCheck = false;
buildInputs = [
ffmpeg
];
passthru.updateScript = nix-update-script {
extraArgs = [ "--generate-lockfile" ];
};
meta = {
description = "Merge video & audio files via CLI";
homepage = "https://github.com/TGotwig/vidmerger";
license = with lib.licenses; [
mit
commons-clause
];
maintainers = with lib.maintainers; [ ByteSudoer ];
mainProgram = "vidmerger";
};
})

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchurl,
dlib,
gsl,
mpfr,
perl,
python3,
}:
stdenv.mkDerivation rec {
pname = "viennarna";
version = "2.7.0";
src = fetchurl {
url = "https://www.tbi.univie.ac.at/RNA/download/sourcecode/2_7_x/ViennaRNA-${version}.tar.gz";
hash = "sha256-mpn9aO04CJTe+01eaooocWKScAKM338W8KBdpujHFHM=";
};
# use nixpkgs dlib sources instead of bundled ones
# using dlib-19.24.8 fixes the build with modern compilers (such as clang-19)
postPatch = ''
rm -rf ./src/dlib-19.24
cp -a ${dlib.src} ./src/dlib-19.24
find ./src/dlib-19.24 -type d -exec chmod +w {} \;
'';
buildInputs = [
gsl
mpfr
perl
python3
];
configureFlags = [
"--with-cluster"
"--with-kinwalker"
];
meta = {
description = "Prediction and comparison of RNA secondary structures";
homepage = "https://www.tbi.univie.ac.at/RNA/";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ prusnak ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,95 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
desktop-file-utils,
gtk3,
libpng,
exiv2,
lcms,
intltool,
gettext,
shared-mime-info,
glib,
gdk-pixbuf,
perl,
wrapGAppsHook3,
webp-pixbuf-loader,
gnome,
librsvg,
}:
stdenv.mkDerivation {
pname = "viewnior-gtk3";
version = "1.8-unstable-2023-11-23";
src = fetchFromGitHub {
#owner = "hellosiyan";
#repo = "Viewnior";
owner = "Artturin";
repo = "Viewnior";
# https://github.com/hellosiyan/Viewnior/pull/142
rev = "23ce6e5630b24509d8009f17a833ad9e59b85fab";
hash = "sha256-+/f0+og1Dd7eJK7P83+q4lf4SjzW2g6qNk8ZTxNAuDA=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
desktop-file-utils
intltool
gettext
wrapGAppsHook3
];
buildInputs = [
gtk3
libpng
exiv2
lcms
shared-mime-info
glib
gdk-pixbuf
perl
];
postInstall = ''
export GDK_PIXBUF_MODULE_FILE="${
gnome._gdkPixbufCacheBuilder_DO_NOT_USE {
extraLoaders = [
webp-pixbuf-loader
librsvg
];
}
}"
# gtk3 viewnior can be launched in wayland mode and does so by default
# but moving around in a zoomed in image doesn't work
gappsWrapperArgs+=(
--set-default GDK_BACKEND x11
)
'';
meta = with lib; {
description = "Fast and simple image viewer";
longDescription = ''
Viewnior is insipred by big projects like Eye of Gnome, because of it's
usability and richness,and by GPicView, because of it's lightweight design and
minimal interface. So here comes Viewnior - small and light, with no compromise
with the quality of it's functions. The program is made with better integration
in mind (follows Gnome HIG2).
'';
license = licenses.gpl3;
homepage = "https://siyanpanayotov.com/project/viewnior/";
maintainers = with maintainers; [
smironov
artturin
];
platforms = platforms.gnu ++ platforms.linux;
mainProgram = "viewnior";
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
xorgproto,
libxaw,
libxmu,
libxt,
wrapWithXFileSearchPathHook,
writeScript,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "viewres";
version = "1.0.8";
src = fetchurl {
url = "mirror://xorg/individual/app/viewres-${finalAttrs.version}.tar.xz";
hash = "sha256-SyIcKxAzkLFmYzYSuav4A2y76QYF29ijfPKjd/orbNI=";
};
strictDeps = true;
nativeBuildInputs = [
pkg-config
wrapWithXFileSearchPathHook
];
buildInputs = [
xorgproto
libxaw
libxmu
libxt
];
installFlags = [ "appdefaultdir=$(out)/share/X11/app-defaults" ];
passthru = {
updateScript = writeScript "update-${finalAttrs.pname}" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p common-updater-scripts
version="$(list-directory-versions --pname ${finalAttrs.pname} \
--url https://xorg.freedesktop.org/releases/individual/app/ \
| sort -V | tail -n1)"
update-source-version ${finalAttrs.pname} "$version"
'';
};
meta = {
description = "Displays a tree showing the widget class hierarchy of the Athena Widget Set (libxaw)";
homepage = "https://gitlab.freedesktop.org/xorg/app/viewres";
license = lib.licenses.x11;
mainProgram = "viewres";
maintainers = [ ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,82 @@
{
stdenv,
fetchurl,
makeWrapper,
perl, # used to generate help tags
pkg-config,
ncurses,
libX11,
file,
which,
groff,
# adds support for handling removable media (vifm-media). Linux only!
mediaSupport ? false,
python3 ? null,
udisks2 ? null,
lib ? null,
gitUpdater,
}:
let
isFullPackage = mediaSupport;
in
stdenv.mkDerivation rec {
pname = if isFullPackage then "vifm-full" else "vifm";
version = "0.14.3";
src = fetchurl {
url = "https://github.com/vifm/vifm/releases/download/v${version}/vifm-${version}.tar.bz2";
hash = "sha256-Fqm+EQjWpaCen5R/clY3XlGbpB6+lHNlmyBzn9vzRA4=";
};
nativeBuildInputs = [
perl
pkg-config
makeWrapper
];
buildInputs = [
ncurses
libX11
file
which
groff
];
postPatch = ''
# Avoid '#!/usr/bin/env perl' references to build help.
patchShebangs --build src/helpztags
'';
enableParallelBuilding = true;
postFixup =
let
path = lib.makeBinPath [
udisks2
(python3.withPackages (p: [ p.dbus-python ]))
];
wrapVifmMedia = "wrapProgram $out/share/vifm/vifm-media --prefix PATH : ${path}";
in
''
${lib.optionalString mediaSupport wrapVifmMedia}
'';
passthru.updateScript = gitUpdater {
url = "https://github.com/vifm/vifm.git";
rev-prefix = "v";
ignoredVersions = "beta";
};
meta = {
description = "Vi-like file manager${lib.optionalString isFullPackage "; Includes support for optional features"}";
mainProgram = "vifm";
maintainers = with lib.maintainers; [ raskin ];
platforms = if mediaSupport then lib.platforms.linux else lib.platforms.unix;
license = lib.licenses.gpl2;
downloadPage = "https://vifm.info/downloads.shtml";
homepage = "https://vifm.info/";
changelog = "https://github.com/vifm/vifm/blob/v${version}/ChangeLog";
};
}

View File

@@ -0,0 +1,123 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
desktopToDarwinBundle,
docbook_xml_dtd_45,
docbook_xsl,
intltool,
itstool,
libxslt,
pkg-config,
wrapGAppsHook3,
yelp-tools,
curl,
gdk-pixbuf,
gtk3,
json-glib,
libxml2,
gpsbabel,
withGeoClue ? true,
geoclue2,
withGeoTag ? true,
gexiv2,
withMagic ? true,
file,
withMapnik ? false,
mapnik,
withMBTiles ? true,
sqlite,
withMd5Hash ? true,
nettle,
withOAuth ? true,
liboauth,
withRealtimeGPSTracking ? (!stdenv.hostPlatform.isDarwin),
gpsd,
}:
stdenv.mkDerivation rec {
pname = "viking";
version = "1.10";
src = fetchurl {
url = "mirror://sourceforge/viking/viking-${version}.tar.bz2";
sha256 = "sha256-lFXIlfmLwT3iS9ayNM0PHV7NwbBotMvG62ZE9hJuRaw=";
};
patches = [
# Fix check_md5_hash.sh on macOS
(fetchpatch {
url = "https://github.com/viking-gps/viking/pull/184/commits/b0e110a3cfefea0f1874669525eb3a220dd29f9f.patch";
hash = "sha256-HdkcZMV570SXOQMIZZAti2HT0gIdF/EwQCVXBaOwpqs=";
})
];
nativeBuildInputs = [
docbook_xml_dtd_45
docbook_xsl
intltool
itstool
libxslt
pkg-config
wrapGAppsHook3
yelp-tools
]
++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;
buildInputs = [
curl
gdk-pixbuf
gtk3
json-glib
libxml2
]
++ lib.optional withGeoClue geoclue2
++ lib.optional withGeoTag gexiv2
++ lib.optional withMagic file
++ lib.optional withMapnik mapnik
++ lib.optional withMBTiles sqlite
++ lib.optional withMd5Hash nettle
++ lib.optional withOAuth liboauth
++ lib.optional withRealtimeGPSTracking gpsd;
configureFlags = [
(lib.enableFeature withGeoClue "geoclue")
(lib.enableFeature withGeoTag "geotag")
(lib.enableFeature withMagic "magic")
(lib.enableFeature withMapnik "mapnik")
(lib.enableFeature withMBTiles "mbtiles")
(lib.enableFeature withMd5Hash "nettle")
(lib.enableFeature withOAuth "oauth")
(lib.enableFeature withRealtimeGPSTracking "realtime-gps-tracking")
];
hardeningDisable = [ "format" ];
doCheck = true;
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : ${lib.makeBinPath [ gpsbabel ]}
)
'';
meta = with lib; {
description = "GPS data editor and analyzer";
mainProgram = "viking";
longDescription = ''
Viking is a free/open source program to manage GPS data. You
can import and plot tracks and waypoints, show Openstreetmaps
and/or Terraserver maps under it, download geocaches for an area
on the map, make new tracks and waypoints, see real-time GPS
position, etc.
'';
homepage = "https://sourceforge.net/projects/viking/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [
pSub
sikmir
];
platforms = with platforms; unix;
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,141 @@
{
lib,
fetchFromGitHub,
stdenv,
nodejs,
pnpm,
buildGoModule,
mage,
writeShellScriptBin,
nixosTests,
}:
let
version = "0.24.6";
src = fetchFromGitHub {
owner = "go-vikunja";
repo = "vikunja";
rev = "v${version}";
hash = "sha256-yUUZ6gPI2Bte36HzfUE6z8B/I1NlwWDSJA2pwkuzd34=";
};
frontend = stdenv.mkDerivation (finalAttrs: {
pname = "vikunja-frontend";
inherit version src;
patches = [
./nodejs-22.12-tailwindcss-update.patch
];
sourceRoot = "${finalAttrs.src.name}/frontend";
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs)
pname
version
patches
src
sourceRoot
;
fetcherVersion = 1;
hash = "sha256-94ZlywOZYmW/NsvE0dtEA81MeBWGUrJsBXTUauuOmZM=";
};
nativeBuildInputs = [
nodejs
pnpm.configHook
];
doCheck = true;
postBuild = ''
pnpm run build
'';
checkPhase = ''
pnpm run test:unit --run
'';
installPhase = ''
cp -r dist/ $out
'';
});
# Injects a `t.Skip()` into a given test since there's apparently no other way to skip tests here.
skipTest =
lineOffset: testCase: file:
let
jumpAndAppend = lib.concatStringsSep ";" (lib.replicate (lineOffset - 1) "n" ++ [ "a" ]);
in
''
sed -i -e '/${testCase}/{
${jumpAndAppend} t.Skip();
}' ${file}
'';
in
buildGoModule {
inherit src version;
pname = "vikunja";
nativeBuildInputs =
let
fakeGit = writeShellScriptBin "git" ''
if [[ $@ = "describe --tags --always --abbrev=10" ]]; then
echo "${version}"
else
>&2 echo "Unknown command: $@"
exit 1
fi
'';
in
[
fakeGit
mage
];
vendorHash = "sha256-OsKejno8QGg7HzRsrftngiWGiWHFc1jDLi5mQ9/NjI4=";
inherit frontend;
prePatch = ''
cp -r ${frontend} frontend/dist
'';
postConfigure = ''
# These tests need internet, so we skip them.
${skipTest 1 "TestConvertTrelloToVikunja" "pkg/modules/migration/trello/trello_test.go"}
${skipTest 1 "TestConvertTodoistToVikunja" "pkg/modules/migration/todoist/todoist_test.go"}
'';
buildPhase = ''
runHook preBuild
# Fixes "mkdir /homeless-shelter: permission denied" - "Error: error compiling magefiles" during build
export HOME=$(mktemp -d)
mage build:build
runHook postBuild
'';
checkPhase = ''
mage test:unit
mage test:integration
'';
installPhase = ''
runHook preInstall
install -Dt $out/bin vikunja
runHook postInstall
'';
passthru.tests.vikunja = nixosTests.vikunja;
meta = {
changelog = "https://kolaente.dev/vikunja/api/src/tag/v${version}/CHANGELOG.md";
description = "Todo-app to organize your life";
homepage = "https://vikunja.io/";
license = lib.licenses.agpl3Plus;
maintainers = with lib.maintainers; [ leona ];
mainProgram = "vikunja";
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,50 @@
{
lib,
fetchFromGitHub,
python3,
python3Packages,
makeWrapper,
}:
python3Packages.buildPythonApplication rec {
pname = "villain";
version = "2.2.1";
pyproject = false;
src = fetchFromGitHub {
owner = "t3l3machus";
repo = "Villain";
tag = "V${version}";
hash = "sha256-eIPxidBBVmjt/E1F8G3zPwteB1qsk3a5LD69CiNVApY=";
};
nativeBuildInputs = [ makeWrapper ];
dependencies = with python3Packages; [
gnureadline
netifaces
pycryptodomex
pyperclip
requests
];
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,share/villain}
rm README.md requirements.txt LICENSE.md
cp -a * $out/share/villain/
makeWrapper ${python3}/bin/python $out/bin/villain \
--add-flags "$out/share/villain/Villain.py" \
--prefix PYTHONPATH : ${python3Packages.makePythonPath dependencies}
runHook postInstall
'';
meta = {
description = "High level stage 0/1 C2 framework that can handle multiple TCP socket & HoaxShell-based reverse shells";
homepage = "https://github.com/t3l3machus/Villain";
license = lib.licenses.cc-by-nc-nd-40;
mainProgram = "villain";
maintainers = with lib.maintainers; [ d3vil0p3r ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchYarnDeps,
yarnConfigHook,
yarnBuildHook,
nodejs,
npmHooks,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vim-language-server";
version = "2.3.1";
src = fetchFromGitHub {
owner = "iamcco";
repo = "vim-language-server";
rev = "v${finalAttrs.version}";
hash = "sha256-NfBKNCTvCMIJrSiTlCG+LtVoMBMdCc3rzpDb9Vp2CGM=";
};
offlineCache = fetchYarnDeps {
yarnLock = finalAttrs.src + "/yarn.lock";
hash = "sha256-mo8urQaWIHu33+r0Y7mL9mJ/aSe/5CihuIetTeDHEUQ=";
};
nativeBuildInputs = [
yarnConfigHook
yarnBuildHook
# Needed for executing package.json scripts
nodejs
npmHooks.npmInstallHook
];
# https://stackoverflow.com/a/69699772/4935114
preBuild = ''
export NODE_OPTIONS=--openssl-legacy-provider
'';
# Needed ever since noBrokenSymlinks was introduced
postInstall = ''
rm $out/lib/node_modules/vim-language-server/node_modules/.bin/node-which
'';
meta = {
description = "VImScript language server, LSP for vim script";
homepage = "https://github.com/iamcco/vim-language-server";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ doronbehar ];
mainProgram = "vim-language-server";
};
})

View File

@@ -0,0 +1,39 @@
{
pkgs,
lib,
buildGoModule,
fetchFromGitHub,
}:
let
pname = "vim-startuptime";
version = "1.3.2";
in
buildGoModule {
inherit pname version;
ldflags = [
"-s"
"-w"
];
src = fetchFromGitHub {
owner = "rhysd";
repo = "vim-startuptime";
rev = "v${version}";
hash = "sha256-d6AXTWTUawkBCXCvMs3C937qoRUZmy0qCFdSLcWh0BE=";
};
nativeCheckInputs = with pkgs; [
vim
neovim
];
vendorHash = null;
meta = with lib; {
homepage = "https://github.com/rhysd/vim-startuptime";
description = "Small Go program for better `vim --startuptime` alternative";
maintainers = with maintainers; [ _9yokuro ];
license = licenses.mit;
mainProgram = "vim-startuptime";
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
python3Packages,
fetchFromGitHub,
replaceVars,
versionCheckHook,
}:
python3Packages.buildPythonApplication rec {
pname = "vim-vint";
version = "0.3.21";
pyproject = true;
src = fetchFromGitHub {
owner = "Vimjas";
repo = "vint";
tag = "v${version}";
hash = "sha256-A0yXDkB/b9kEEXSoLeqVdmdm4p2PYL2QHqbF4FgAn30=";
};
patches = [
# Otherwise, the following warning appears each time the binary is run:
# UserWarning: pkg_resources is deprecated as an API.
# This leads the `test/acceptance/test_cli.py::TestCLI::*` tests to fail
(replaceVars ./remove-pkg-resources.patch {
inherit version;
})
];
postPatch = ''
substituteInPlace \
test/acceptance/test_cli.py \
test/acceptance/test_cli_vital.py \
--replace-fail \
"cmd = ['bin/vint'" \
"cmd = ['$out/bin/vint'"
'';
build-system = with python3Packages; [ setuptools ];
dependencies = with python3Packages; [
ansicolor
chardet
pyyaml
];
nativeCheckInputs = [
versionCheckHook
]
++ (with python3Packages; [
pytestCheckHook
pytest-cov-stub
]);
versionCheckProgramArg = "--version";
meta = {
description = "Fast and Highly Extensible Vim script Language Lint implemented by Python";
homepage = "https://github.com/Kuniwak/vint";
license = lib.licenses.mit;
mainProgram = "vint";
maintainers = [ ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,28 @@
diff --git a/vint/linting/cli.py b/vint/linting/cli.py
index 55db52e..97f33e1 100644
--- a/vint/linting/cli.py
+++ b/vint/linting/cli.py
@@ -1,7 +1,6 @@
import sys
from argparse import ArgumentParser
from pathlib import PosixPath
-import pkg_resources
import logging
from vint.linting.linter import Linter
@@ -150,14 +149,7 @@ class CLI(object):
def _get_version(self):
- # In unit tests, pkg_resources cannot find vim-vint.
- # So, I decided to return dummy version
- try:
- version = pkg_resources.require('vim-vint')[0].version
- except pkg_resources.DistributionNotFound:
- version = 'test_mode'
-
- return version
+ return "@version@"
def _adjust_log_level(self, env):

View File

@@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
libsoup_3,
webkitgtk_4_1,
gtk3,
glib-networking,
gsettings-desktop-schemas,
wrapGAppsHook3,
}:
stdenv.mkDerivation rec {
pname = "vimb";
version = "3.7.0";
src = fetchFromGitHub {
owner = "fanglingsu";
repo = "vimb";
tag = version;
hash = "sha256-NW9B/hybSOaojKIubaxiQ+Nd5f/D4XKxPl9vUyFoX/k=";
};
nativeBuildInputs = [
wrapGAppsHook3
pkg-config
];
buildInputs = [
gtk3
libsoup_3
webkitgtk_4_1
glib-networking
gsettings-desktop-schemas
];
passthru = {
inherit gtk3;
applicationName = "Vimb";
};
makeFlags = [ "PREFIX=${placeholder "out"}" ];
meta = {
description = "Vim-like browser";
mainProgram = "vimb";
longDescription = ''
A fast and lightweight vim like web browser based on the webkit web
browser engine and the GTK toolkit. Vimb is modal like the great vim
editor and also easily configurable during runtime. Vimb is mostly
keyboard driven and does not detract you from your daily work.
'';
homepage = "https://fanglingsu.github.io/vimb/";
license = lib.licenses.gpl3;
maintainers = [ ];
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
fetchFromGitHub,
rustPlatform,
testers,
vimcats,
}:
rustPlatform.buildRustPackage rec {
pname = "vimcats";
version = "1.1.1";
src = fetchFromGitHub {
owner = "mrcjkb";
repo = "vimcats";
rev = "v${version}";
hash = "sha256-BW1pU7NnW8yWePV0IQOUmcNa13NvV9lOZhfnEdQFBQQ=";
};
buildFeatures = [ "cli" ];
cargoHash = "sha256-OGU7jwXOUf+tVECsyKwJQ9vRqTDoV8m/WOlAqTFdfUM=";
passthru.tests.version = testers.testVersion { package = vimcats; };
meta = with lib; {
description = "CLI to generate vim/nvim help doc from LuaCATS. Forked from lemmy-help";
longDescription = ''
`vimcats` is a LuaCATS parser as well as a CLI which takes that parsed tree and converts it into vim help docs.
It is a fork of lemmy-help that aims to support more recent LuaCATS features.
'';
homepage = "https://github.com/mrcjkb/vimcats";
changelog = "https://github.com/mrcjkb/vimcats/CHANGELOG.md";
license = with licenses; [ gpl2Plus ];
maintainers = with maintainers; [ mrcjkb ];
mainProgram = "vimcats";
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation rec {
version = "0.2.0";
pname = "vimer";
src = fetchFromGitHub {
owner = "susam";
repo = "vimer";
rev = version;
sha256 = "01qhr3i7wasbaxvms39c81infpry2vk0nzh7r5m5b9p713p0phsi";
};
installPhase = ''
mkdir $out/bin/ -p
cp vimer $out/bin/
chmod +x $out/bin/vimer
'';
meta = with lib; {
homepage = "https://github.com/susam/vimer";
description = ''
A convenience wrapper for gvim/mvim --remote(-tab)-silent to open files
in an existing instance of GVim or MacVim.
'';
license = licenses.mit;
maintainers = [ maintainers.matthiasbeyer ];
platforms = platforms.all;
mainProgram = "vimer";
};
}

View File

@@ -0,0 +1,4 @@
source 'https://rubygems.org'
gem 'vimgolf'
gem "abbrev", "~> 0.1.2"

View File

@@ -0,0 +1,21 @@
GEM
remote: https://rubygems.org/
specs:
abbrev (0.1.2)
highline (2.1.0)
json_pure (2.8.1)
thor (1.3.2)
vimgolf (0.5.0)
highline (~> 2.0, >= 2.0.3)
json_pure (~> 2.3, >= 2.3.1)
thor (~> 1.0, >= 1.0.1)
PLATFORMS
ruby
DEPENDENCIES
abbrev (~> 0.1.2)
vimgolf
BUNDLED WITH
2.6.6

View File

@@ -0,0 +1,57 @@
{
abbrev = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0hj2qyx7rzpc7awhvqlm597x7qdxwi4kkml4aqnp5jylmsm4w6xd";
type = "gem";
};
version = "0.1.2";
};
highline = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1f8cr014j7mdqpdb9q17fp5vb5b8n1pswqaif91s3ylg5x3pygfn";
type = "gem";
};
version = "2.1.0";
};
json_pure = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1kks889ymaq5xqvj18qamar3il8m3dnnaf6cij0a0kwxp8lpk1va";
type = "gem";
};
version = "2.8.1";
};
thor = {
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1nmymd86a0vb39pzj2cwv57avdrl6pl3lf5bsz58q594kqxjkw7f";
type = "gem";
};
version = "1.3.2";
};
vimgolf = {
dependencies = [
"highline"
"json_pure"
"thor"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "190dzqkvshd4i6jf30xnpm4sczraw6rdh4wvfh6qnmg0czmj0sny";
type = "gem";
};
version = "0.5.0";
};
}

View File

@@ -0,0 +1,21 @@
{
lib,
bundlerApp,
bundlerUpdateScript,
}:
bundlerApp {
pname = "vimgolf";
gemdir = ./.;
exes = [ "vimgolf" ];
passthru.updateScript = bundlerUpdateScript "vimgolf";
meta = with lib; {
description = "Game that tests Vim efficiency";
homepage = "https://vimgolf.com";
license = licenses.mit;
maintainers = with maintainers; [ leungbk ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
python3,
qt5,
stdenv,
installShellFiles,
}:
python3.pkgs.buildPythonApplication rec {
pname = "vimiv-qt";
version = "0.9.0";
pyproject = true;
src = fetchFromGitHub {
owner = "karlch";
repo = "vimiv-qt";
rev = "v${version}";
sha256 = "sha256-28sk5qDVmrgXYX2wm5G8zv564vG6GwxNp+gjrFHCRfU=";
};
build-system = with python3.pkgs; [ setuptools ];
nativeBuildInputs = [
installShellFiles
qt5.wrapQtAppsHook
];
dependencies = with python3.pkgs; [
pyqt5
py3exiv2
];
buildInputs = [ qt5.qtsvg ] ++ lib.optionals stdenv.hostPlatform.isLinux [ qt5.qtwayland ];
postInstall = ''
install -Dm644 misc/vimiv.desktop $out/share/applications/vimiv.desktop
install -Dm644 misc/org.karlch.vimiv.qt.metainfo.xml $out/metainfo/org.karlch.vimiv.qt.metainfo.xml
install -Dm644 LICENSE $out/licenses/vimiv/LICENSE
install -Dm644 icons/vimiv.svg $out/icons/hicolor/scalable/apps/vimiv.svg
installManPage misc/vimiv.1
for i in 16 32 64 128 256 512; do
install -Dm644 icons/vimiv_''${i}x''${i}.png $out/icons/hicolor/''${i}x''${i}/apps/vimiv.png
done
'';
pythonImportsCheck = [ "vimiv" ];
# Vimiv has to be wrapped manually because it is a non-ELF executable.
dontWrapQtApps = true;
preFixup = ''
wrapQtApp $out/bin/vimiv
'';
meta = with lib; {
description = "Image viewer with Vim-like keybindings (Qt port)";
license = licenses.gpl3Plus;
homepage = "https://github.com/karlch/vimiv-qt";
maintainers = with maintainers; [ dschrempf ];
mainProgram = "vimiv";
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,56 @@
{
lib,
fetchFromGitHub,
stdenvNoCC,
cairosvg,
inkscape,
xcursorgen,
}:
stdenvNoCC.mkDerivation {
pname = "vimix-cursors";
version = "2020-02-24-unstable-2021-09-18";
src = fetchFromGitHub {
owner = "vinceliuice";
repo = "vimix-cursors";
rev = "9bc292f40904e0a33780eda5c5d92eb9a1154e9c";
hash = "sha256-zW7nJjmB3e+tjEwgiCrdEe5yzJuGBNdefDdyWvgYIUU=";
};
nativeBuildInputs = [
cairosvg
inkscape
xcursorgen
];
postPatch = ''
patchShebangs .
'';
buildPhase = ''
runHook preBuild
HOME="$NIX_BUILD_ROOT" ./build.sh
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -dm 755 $out/share/icons
for color in "" "-white"; do
cp -pr "dist$color/" "$out/share/icons/Vimix$color-cursors"
done
runHook postInstall
'';
meta = with lib; {
description = "X cursor theme inspired by Materia design";
homepage = "https://github.com/vinceliuice/Vimix-cursors";
license = licenses.gpl3Only;
maintainers = with maintainers; [ ambroisie ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,98 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
gnome-shell,
gtk-engine-murrine,
gtk_engines,
jdupes,
sassc,
gitUpdater,
themeVariants ? [ ], # default: doder (blue)
colorVariants ? [ ], # default: all
sizeVariants ? [ ], # default: standard
tweaks ? [ ],
}:
let
pname = "vimix-gtk-themes";
in
lib.checkListOfEnum "${pname}: theme variants"
[
"doder"
"beryl"
"ruby"
"amethyst"
"jade"
"grey"
"all"
]
themeVariants
lib.checkListOfEnum
"${pname}: color variants"
[ "standard" "light" "dark" ]
colorVariants
lib.checkListOfEnum
"${pname}: size variants"
[ "standard" "compact" "all" ]
sizeVariants
lib.checkListOfEnum
"${pname}: tweaks"
[ "flat" "grey" "mix" "translucent" ]
tweaks
stdenvNoCC.mkDerivation
rec {
inherit pname;
version = "2025-06-20";
src = fetchFromGitHub {
owner = "vinceliuice";
repo = "vimix-gtk-themes";
rev = version;
sha256 = "uRm6v+Zag4FO7nFVcHhZjVhOfdOeYBZYQym0IBR8+HU=";
};
nativeBuildInputs = [
gnome-shell # needed to determine the gnome-shell version
jdupes
sassc
];
buildInputs = [
gtk_engines
];
propagatedUserEnvPkgs = [
gtk-engine-murrine
];
postPatch = ''
patchShebangs install.sh
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/themes
name= HOME="$TMPDIR" ./install.sh \
${lib.optionalString (themeVariants != [ ]) "--theme " + toString themeVariants} \
${lib.optionalString (colorVariants != [ ]) "--color " + toString colorVariants} \
${lib.optionalString (sizeVariants != [ ]) "--size " + toString sizeVariants} \
${lib.optionalString (tweaks != [ ]) "--tweaks " + toString tweaks} \
--dest $out/share/themes
rm $out/share/themes/*/{AUTHORS,LICENSE}
jdupes --quiet --link-soft --recurse $out/share
runHook postInstall
'';
passthru.updateScript = gitUpdater { };
meta = with lib; {
description = "Flat Material Design theme for GTK based desktop environments";
homepage = "https://github.com/vinceliuice/vimix-gtk-themes";
license = licenses.gpl3Only;
platforms = platforms.unix;
maintainers = [ maintainers.romildo ];
};
}

View File

@@ -0,0 +1,82 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
gitUpdater,
gtk3,
hicolor-icon-theme,
jdupes,
colorVariants ? [ ], # default: all
}:
let
pname = "vimix-icon-theme";
in
lib.checkListOfEnum "${pname}: color variants"
[
"standard"
"Amethyst"
"Beryl"
"Doder"
"Ruby"
"Jade"
"Black"
"White"
]
colorVariants
stdenvNoCC.mkDerivation
rec {
inherit pname;
version = "2025.02.10";
src = fetchFromGitHub {
owner = "vinceliuice";
repo = "vimix-icon-theme";
rev = version;
hash = "sha256-HNwEqp6G9nZDIJo9b6FD4d5NSXUx523enENM0NVwviA=";
};
nativeBuildInputs = [
gtk3
jdupes
];
propagatedBuildInputs = [
hicolor-icon-theme
];
dontDropIconThemeCache = true;
# These fixup steps are slow and unnecessary for this package
dontPatchELF = true;
dontRewriteSymlinks = true;
postPatch = ''
patchShebangs install.sh
'';
installPhase = ''
runHook preInstall
./install.sh \
${if colorVariants != [ ] then toString colorVariants else "-a"} \
-d $out/share/icons
# replace duplicate files with symlinks
jdupes --quiet --link-soft --recurse $out/share
runHook postInstall
'';
passthru.updateScript = gitUpdater { };
meta = with lib; {
description = "Material Design icon theme based on Paper icon theme";
homepage = "https://github.com/vinceliuice/vimix-icon-theme";
license = with licenses; [ cc-by-sa-40 ];
platforms = platforms.linux;
maintainers = with maintainers; [ romildo ];
};
}

View File

@@ -0,0 +1,61 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
autoreconfHook,
libmpdclient,
ncurses,
pcre,
pkg-config,
taglib,
curl,
}:
stdenv.mkDerivation rec {
version = "0.09.2";
pname = "vimpc";
src = fetchFromGitHub {
owner = "boysetsfrog";
repo = "vimpc";
rev = "v${version}";
sha256 = "0lswzkap2nm7v5h7ppb6a64cb35rajysd09nb204rxgrkij4m6nx";
};
patches = [
# Pull fix pending upstream inclusion for ncurses-6.3:
# https://github.com/boysetsfrog/vimpc/pull/100
(fetchpatch {
name = "ncurses-6.3.patch";
url = "https://github.com/boysetsfrog/vimpc/commit/055ecdce0720fdfc9ec2528c520b6c33da36271b.patch";
sha256 = "01p858jjxm0bf8hnk1z8h45j8c1y9i995mafa6ff3vg9vlak61pv";
})
];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
libmpdclient
ncurses
pcre
taglib
curl
];
postInstall = ''
mkdir -p $out/etc
cp doc/vimpcrc.example $out/etc
'';
meta = with lib; {
description = "Vi/vim inspired client for the Music Player Daemon (mpd)";
homepage = "https://github.com/boysetsfrog/vimpc";
license = licenses.gpl3;
platforms = platforms.unix;
maintainers = with maintainers; [ pSub ];
mainProgram = "vimpc";
};
}

View File

@@ -0,0 +1,26 @@
{
lib,
rustPlatform,
fetchCrate,
}:
rustPlatform.buildRustPackage rec {
pname = "vimv-rs";
version = "3.1.0";
src = fetchCrate {
inherit version;
crateName = "vimv";
hash = "sha256-jbRsgEsRYF5hlvo0jEB4jhy5jzCAXNzOsNWWyh4XULQ=";
};
cargoHash = "sha256-A+Ba3OWQDAramwin1Yc1YDOyabuEEaZGhE1gel2tFoM=";
meta = with lib; {
description = "Command line utility for batch-renaming files";
homepage = "https://www.dmulholl.com/dev/vimv.html";
license = licenses.bsd0;
mainProgram = "vimv";
maintainers = with maintainers; [ zowoq ];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
}:
stdenvNoCC.mkDerivation {
pname = "vimv";
version = "0-unstable-2019-10-31";
src = fetchFromGitHub {
owner = "thameera";
repo = "vimv";
rev = "4152496c1946f68a13c648fb7e583ef23dac4eb8";
sha256 = "1fsrfx2gs6bqx7wk7pgcji2i2x4alqpsi66aif4kqvnpqfhcfzjd";
};
installPhase = ''
install -d $out/bin
install $src/vimv $out/bin/vimv
patchShebangs $out/bin/vimv
'';
meta = with lib; {
homepage = "https://github.com/thameera/vimv";
description = "Batch-rename files using Vim";
license = licenses.mit;
platforms = platforms.all;
maintainers = with maintainers; [ kmein ];
mainProgram = "vimv";
};
}

View File

@@ -0,0 +1,171 @@
{
lib,
buildGoModule,
wine64Packages,
fetchpatch,
fetchFromGitHub,
glib,
makeBinaryWrapper,
pkg-config,
cairo,
gdk-pixbuf,
graphene,
gtk4,
libadwaita,
libGL,
libxkbcommon,
pango,
vulkan-headers,
vulkan-loader,
wayland,
winetricks,
xorg,
symlinkJoin,
nix-update-script,
}:
let
wine =
(wine64Packages.staging.override {
dbusSupport = true;
embedInstallers = true;
pulseaudioSupport = true;
x11Support = true;
waylandSupport = true;
}).overrideAttrs
(oldAttrs: {
# https://github.com/flathub/org.vinegarhq.Vinegar/blob/a3c2f1249dec9548bd870027f55edcc58343b685/wine.yml#L31-L38
# --with-wayland is added by waylandSupport = true;
configureFlags = oldAttrs.configureFlags or [ ] ++ [
"--disable-tests"
"--disable-win16"
"--with-dbus"
"--with-pulse"
"--with-x"
"--without-oss"
];
patches = oldAttrs.patches or [ ] ++ [
(fetchpatch {
name = "loader-prefer-winedllpath.patch";
url = "https://raw.githubusercontent.com/flathub/org.vinegarhq.Vinegar/3e07606350d803fa386eb4c358836a230819380d/patches/wine/loader-prefer-winedllpath.patch";
hash = "sha256-89wnr2rIbyw490hHwckB9g1GKCXm6BERnplfwEUlNOg=";
})
];
postInstall = ''
cp $out/bin/wine $out/bin/wine64
'';
});
in
buildGoModule (finalAttrs: {
pname = "vinegar";
version = "1.8.1";
src = fetchFromGitHub {
owner = "vinegarhq";
repo = "vinegar";
tag = "v${finalAttrs.version}";
hash = "sha256-7rc6LKZx0OOZDedtTpHIQT4grx1FejRiVnJnVDUddy4=";
};
vendorHash = "sha256-TZhdwHom4DTgLs4z/eADeoKakMtyFrvVljDg4JJp7dc=";
nativeBuildInputs = [
glib
makeBinaryWrapper
pkg-config
];
buildInputs = [
cairo
gdk-pixbuf
glib.out
graphene
gtk4
libadwaita
libGL
libxkbcommon
pango.out
vulkan-headers
vulkan-loader
wayland
wine
winetricks
xorg.libX11
xorg.libXcursor
xorg.libXfixes
];
postPatch = ''
substituteInPlace Makefile --replace-fail 'gtk-update-icon-cache' '${lib.getExe' gtk4 "gtk4-update-icon-cache"}'
'';
buildPhase = ''
runHook preBuild
make PREFIX=$out
runHook postBuild
'';
# Add getGoDirs to checkPhase since it is not being provided by the buildPhase
preCheck = ''
getGoDirs() {
local type;
type="$1"
if [ -n "$subPackages" ]; then
echo "$subPackages" | sed "s,\(^\| \),\1./,g"
else
find . -type f -name \*$type.go -exec dirname {} \; | grep -v "/vendor/" | sort --unique | grep -v "$exclude"
fi
}
'';
installPhase = ''
runHook preInstall
make PREFIX=$out install
runHook postInstall
'';
postInstall = ''
wrapProgram $out/bin/vinegar \
--prefix PATH : ${
lib.makeBinPath [
wine
winetricks
]
} \
--set-default PUREGOTK_LIB_FOLDER ${finalAttrs.passthru.libraryPath}/lib
'';
passthru = {
libraryPath = symlinkJoin {
name = "vinegar-puregotk-lib-folder";
paths = [
cairo
gdk-pixbuf
glib.out
graphene
gtk4
libadwaita
pango.out
vulkan-loader
];
};
updateScript = nix-update-script { };
};
meta = {
changelog = "https://github.com/vinegarhq/vinegar/releases/tag/v${finalAttrs.version}";
description = "Open-source, minimal, configurable, fast bootstrapper for running Roblox Studio on Linux";
homepage = "https://github.com/vinegarhq/vinegar";
license = lib.licenses.gpl3Only;
mainProgram = "vinegar";
maintainers = with lib.maintainers; [ HeitorAugustoLN ];
platforms = [ "x86_64-linux" ];
sourceProvenance = [ lib.sourceTypes.fromSource ];
};
})

View File

@@ -0,0 +1,119 @@
{
lib,
stdenv,
fetchurl,
makeWrapper,
makeDesktopItem,
copyDesktopItems,
xorg,
gtk2,
sqlite,
openal,
cairo,
libGLU,
SDL2,
freealut,
libglvnd,
pipewire,
libpulseaudio,
dotnet-runtime_8,
}:
stdenv.mkDerivation rec {
pname = "vintagestory";
version = "1.21.4";
src = fetchurl {
url = "https://cdn.vintagestory.at/gamefiles/stable/vs_client_linux-x64_${version}.tar.gz";
hash = "sha256-npffJgxgUMefX9OiveNk1r4kVqsMaVCC1jcWaibz9l8=";
};
nativeBuildInputs = [
makeWrapper
copyDesktopItems
];
runtimeLibs = lib.makeLibraryPath (
[
gtk2
sqlite
openal
cairo
libGLU
SDL2
freealut
libglvnd
pipewire
libpulseaudio
]
++ (with xorg; [
libX11
libXi
libXcursor
])
);
desktopItems = [
(makeDesktopItem {
name = "vintagestory";
desktopName = "Vintage Story";
exec = "vintagestory";
icon = "vintagestory";
comment = "Innovate and explore in a sandbox world";
categories = [ "Game" ];
})
(makeDesktopItem {
name = "vsmodinstall-handler";
desktopName = "Vintage Story 1-click Mod Install Handler";
comment = "Handler for vintagestorymodinstall:// URI scheme";
exec = "vintagestory -i %u";
mimeTypes = [ "x-scheme-handler/vintagestorymodinstall" ];
noDisplay = true;
terminal = false;
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/vintagestory $out/bin $out/share/pixmaps $out/share/fonts/truetype
cp -r * $out/share/vintagestory
cp $out/share/vintagestory/assets/gameicon.xpm $out/share/pixmaps/vintagestory.xpm
cp $out/share/vintagestory/assets/game/fonts/*.ttf $out/share/fonts/truetype
runHook postInstall
'';
preFixup = ''
makeWrapper ${dotnet-runtime_8}/bin/dotnet $out/bin/vintagestory \
--prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
--set-default mesa_glthread true \
--add-flags $out/share/vintagestory/Vintagestory.dll
makeWrapper ${dotnet-runtime_8}/bin/dotnet $out/bin/vintagestory-server \
--prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
--set-default mesa_glthread true \
--add-flags $out/share/vintagestory/VintagestoryServer.dll
find "$out/share/vintagestory/assets/" -not -path "*/fonts/*" -regex ".*/.*[A-Z].*" | while read -r file; do
local filename="$(basename -- "$file")"
ln -sf "$filename" "''${file%/*}"/"''${filename,,}"
done
'';
meta = {
description = "In-development indie sandbox game about innovation and exploration";
homepage = "https://www.vintagestory.at/";
license = lib.licenses.unfree;
sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
artturin
gigglesquid
niraethm
dtomvan
];
mainProgram = "vintagestory";
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
cmake,
fetchFromGitHub,
nix-update-script,
stdenv,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "violet";
version = "0.5.4";
src = fetchFromGitHub {
owner = "paullouisageneau";
repo = "violet";
tag = "v${finalAttrs.version}";
hash = "sha256-OBrEydVqhbxJZED8mUjV605kvtbXPqb35X1XeNBNvjg=";
fetchSubmodules = true;
};
nativeBuildInputs = [ cmake ];
passthru = {
updateScript = nix-update-script { };
tests = testers.testVersion { package = finalAttrs.finalPackage; };
};
meta = {
description = "Lightweight STUN/TURN server";
homepage = "https://github.com/paullouisageneau/violet";
license = lib.licenses.gpl2Only;
mainProgram = "violet";
maintainers = with lib.maintainers; [ oluceps ];
platforms = lib.platforms.all;
};
})

View File

@@ -0,0 +1,177 @@
{
lib,
stdenv,
fetchFromGitHub,
# Native build inputs
docbook-xsl-nons,
gi-docgen,
gobject-introspection,
meson,
ninja,
pkg-config,
buildPackages,
# Build inputs
expat,
glib,
libxml2,
python3,
# Optional dependencies
cfitsio,
cgif,
fftw,
imagemagick,
lcms2,
libarchive,
libexif,
libheif,
libhwy,
libimagequant,
libjpeg,
libjxl,
librsvg,
libpng,
libtiff,
libwebp,
matio,
openexr,
openjpeg,
openslide,
pango,
poppler,
withIntrospection ?
lib.meta.availableOn stdenv.hostPlatform gobject-introspection
&& stdenv.hostPlatform.emulatorAvailable buildPackages,
# passthru
testers,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vips";
version = "8.17.2";
outputs = [
"bin"
"out"
"man"
"dev"
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isFreeBSD) [ "devdoc" ];
src = fetchFromGitHub {
owner = "libvips";
repo = "libvips";
tag = "v${finalAttrs.version}";
hash = "sha256-Jwb1bH0y3lmv/IU5JqcnAxiMK4gj+aTBj5nLKZ+XnKY=";
# Remove unicode file names which leads to different checksums on HFS+
# vs. other filesystems because of unicode normalisation.
postFetch = ''
rm -r $out/test/test-suite/images/
'';
};
postPatch = ''
patchShebangs .
'';
nativeBuildInputs = [
docbook-xsl-nons
gobject-introspection
meson
ninja
pkg-config
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isFreeBSD) [
gi-docgen
];
buildInputs = [
glib
libxml2
expat
(python3.withPackages (p: [ p.pycairo ]))
# Optional dependencies
cfitsio
cgif
fftw
imagemagick
lcms2
libarchive
libexif
libheif
libhwy
libimagequant
libjpeg
libjxl
librsvg
libpng
libtiff
libwebp
matio
openexr
openjpeg
openslide
pango
poppler
];
# Required by .pc file
propagatedBuildInputs = [
glib
];
mesonFlags = [
(lib.mesonEnable "pdfium" false)
(lib.mesonEnable "nifti" false)
(lib.mesonEnable "spng" false) # we want to use libpng
(lib.mesonEnable "introspection" withIntrospection)
]
++ lib.optional (!stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isFreeBSD) (
lib.mesonBool "docs" true
)
++ lib.optional (imagemagick == null) (lib.mesonEnable "magick" false);
postFixup = ''
moveToOutput "share/doc" "$devdoc"
'';
passthru = {
tests = {
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
};
version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "vips --version";
};
};
updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"^v([0-9.]+)$"
];
};
};
meta = {
changelog = "https://github.com/libvips/libvips/blob/${finalAttrs.src.rev}/ChangeLog";
homepage = "https://www.libvips.org/";
description = "Image processing system for large images";
license = lib.licenses.lgpl2Plus;
maintainers = with lib.maintainers; [
kovirobi
anthonyroussel
];
pkgConfigModules = [
"vips"
"vips-cpp"
];
platforms = lib.platforms.unix;
mainProgram = "vips";
};
})

View File

@@ -0,0 +1,55 @@
{
stdenv,
lib,
fetchFromGitHub,
fetchpatch2,
meson,
ninja,
pkg-config,
wrapGAppsHook4,
vips,
gtk4,
python3,
}:
stdenv.mkDerivation rec {
pname = "vipsdisp";
version = "4.1.2";
src = fetchFromGitHub {
owner = "jcupitt";
repo = "vipsdisp";
tag = "v${version}";
hash = "sha256-9L8l/afD6phq8T3ReYqQQgD1CztW5gw0MME23Ut/lEE=";
};
postPatch = ''
chmod +x ./meson_post_install.py
patchShebangs ./meson_post_install.py
'';
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook4
];
buildInputs = [
vips
gtk4
python3
];
# No tests implemented.
doCheck = false;
meta = {
homepage = "https://github.com/jcupitt/vipsdisp";
description = "Tiny image viewer with libvips";
license = lib.licenses.mit;
mainProgram = "vipsdisp";
maintainers = with lib.maintainers; [ foo-dogsquared ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,91 @@
{
lib,
stdenv,
fetchFromGitLab,
meson,
ninja,
pkg-config,
buildPackages,
libGLU,
libepoxy,
libX11,
libdrm,
libgbm,
libva,
vulkan-headers,
vulkan-loader,
nix-update-script,
vulkanSupport ? stdenv.hostPlatform.isLinux,
nativeContextSupport ? stdenv.hostPlatform.isLinux,
vaapiSupport ? !stdenv.hostPlatform.isDarwin,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "virglrenderer";
version = "1.2.0";
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "virgl";
repo = "virglrenderer";
tag = finalAttrs.version;
hash = "sha256-5Ok5ctJ3kcBH05URctvZ0hCZA/o59r2KsAOJYoiWMHs=";
};
separateDebugInfo = true;
nativeBuildInputs = [
meson
ninja
pkg-config
(buildPackages.python3.withPackages (ps: [
ps.pyyaml
]))
];
buildInputs = [
libepoxy
]
++ lib.optionals stdenv.hostPlatform.isLinux [
libGLU
libX11
libdrm
libgbm
]
++ lib.optionals vaapiSupport [
libva
]
++ lib.optionals vulkanSupport [
vulkan-headers
vulkan-loader
];
mesonFlags = [
(lib.mesonBool "video" vaapiSupport)
(lib.mesonBool "venus" vulkanSupport)
(lib.mesonOption "drm-renderers" (
lib.optionalString nativeContextSupport (
lib.concatStringsSep "," [
"amdgpu-experimental"
"asahi"
"msm"
]
)
))
];
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Virtual 3D GPU for use inside QEMU virtual machines";
homepage = "https://docs.mesa3d.org/drivers/virgl";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
normalcea
];
mainProgram = "virgl_test_server";
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,114 @@
{
stdenv,
lib,
fetchFromGitHub,
python3,
meson,
ninja,
pkg-config,
wrapGAppsHook4,
docutils,
desktopToDarwinBundle,
gtk-vnc,
vte,
dconf,
gobject-introspection,
libvirt-glib,
gsettings-desktop-schemas,
libosinfo,
adwaita-icon-theme,
gtksourceview4,
xorriso,
spiceSupport ? true,
spice-gtk ? null,
gst_all_1 ? null,
}:
let
pythonDependencies = with python3.pkgs; [
pygobject3
libvirt
libxml2
requests
];
in
stdenv.mkDerivation rec {
pname = "virt-manager";
version = "5.1.0";
src = fetchFromGitHub {
owner = "virt-manager";
repo = "virt-manager";
rev = "v${version}";
hash = "sha256-nMWLDo2pfWcqsVuEk0JbzLZ1a0lViTohsZ8gEXGhBuI=";
};
strictDeps = true;
mesonFlags = [
(lib.mesonBool "compile-schemas" false)
(lib.mesonEnable "tests" false)
];
nativeBuildInputs = [
meson
ninja
gobject-introspection # for setup hook populating GI_TYPELIB_PATH
docutils
wrapGAppsHook4
pkg-config
]
++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;
buildInputs = [
python3
libvirt-glib
vte
dconf
gtk-vnc
adwaita-icon-theme
gsettings-desktop-schemas
libosinfo
gtksourceview4
]
++ lib.optionals spiceSupport [
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
spice-gtk
];
postInstall = ''
if ! grep -q StartupWMClass= "$out/share/applications/virt-manager.desktop"; then
echo "StartupWMClass=.virt-manager-wrapped" >> "$out/share/applications/virt-manager.desktop"
else
echo "error: upstream desktop file already contains StartupWMClass=, please update Nix expr" >&2
exit 1
fi
'';
preFixup = ''
glib-compile-schemas $out/share/gsettings-schemas/virt-manager-${version}/glib-2.0/schemas
gappsWrapperArgs+=(--set PYTHONPATH "${python3.pkgs.makePythonPath pythonDependencies}")
# these are called from virt-install in installerinject.py
gappsWrapperArgs+=(--prefix PATH : "${lib.makeBinPath [ xorriso ]}")
patchShebangs $out/bin
'';
meta = with lib; {
homepage = "https://virt-manager.org";
description = "Desktop user interface for managing virtual machines";
longDescription = ''
The virt-manager application is a desktop user interface for managing
virtual machines through libvirt. It primarily targets KVM VMs, but also
manages Xen and LXC (linux containers).
'';
license = licenses.gpl2;
platforms = platforms.unix;
mainProgram = "virt-manager";
maintainers = with maintainers; [
fpletz
globin
];
};
}

View File

@@ -0,0 +1,112 @@
{
stdenv,
lib,
testers,
fetchurl,
pkg-config,
makeWrapper,
autoreconfHook,
bash-completion,
OVMF,
qemu,
ocamlPackages,
perl,
cpio,
getopt,
libosinfo,
pcre2,
libxml2,
json_c,
glib,
libguestfs-with-appliance,
cdrkit,
nbdkit,
withWindowsGuestSupport ? true,
pkgsCross, # for rsrvany
virtio-win,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "virt-v2v";
version = "2.8.1";
src = fetchurl {
url = "https://download.libguestfs.org/virt-v2v/${lib.versions.majorMinor finalAttrs.version}-stable/virt-v2v-${finalAttrs.version}.tar.gz";
sha256 = "sha256-RJPwtI6GHN+W+Pw8jdEAgQMbR42aGqTYW2rPtAYBPYM=";
};
postPatch = ''
# TODO: allow guest != host CPU ISA
substituteInPlace output/output_qemu.ml \
--replace-fail '/usr/share/OVMF' ""${OVMF.fd}/FV/" \
--replace-fail '/usr/share/AAVMF' ""${OVMF.fd}/FV/"
patchShebangs .
'';
nativeBuildInputs = [
pkg-config
autoreconfHook
makeWrapper
bash-completion
perl
libguestfs-with-appliance
qemu
cpio
cdrkit
getopt
]
++ (with ocamlPackages; [
ocaml
findlib
]);
buildInputs = [
json_c
libosinfo
pcre2
libxml2
glib
]
++ (with ocamlPackages; [
ocaml_libvirt
nbd
]);
postInstall = ''
for bin in $out/bin/*; do
wrapProgram "$bin" \
--prefix PATH : "$out/bin:${
lib.makeBinPath [
nbdkit
ocamlPackages.nbd
qemu
]
}"
done
''
+ lib.optionalString withWindowsGuestSupport ''
ln -s "${virtio-win}" $out/share/virtio-win
ln -s "${pkgsCross.mingwW64.rhsrvany}/bin/" $out/share/virt-tools
'';
PKG_CONFIG_BASH_COMPLETION_COMPLETIONSDIR = "${placeholder "out"}/share/bash-completion/completions";
passthru.tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
passthru.updateScript = gitUpdater {
url = "https://github.com/libguestfs/guestfs-tools";
rev-prefix = "v";
odd-unstable = true;
};
meta = {
homepage = "https://github.com/libguestfs/virt-v2v";
description = "Convert guests from foreign hypervisors to run on KVM";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ lukts30 ];
platforms = lib.platforms.linux;
mainProgram = "virt-v2v";
};
})

View File

@@ -0,0 +1,120 @@
{
lib,
stdenv,
bash-completion,
fetchurl,
fetchpatch,
gdbm,
glib,
gst_all_1,
gsettings-desktop-schemas,
gtk-vnc,
gtk3,
intltool,
libcap,
libgovirt,
# Currently unsupported. According to upstream, libgovirt is for a very narrow
# use-case and we don't currently cover it in Nixpkgs. It's safe to disable.
# https://gitlab.com/virt-viewer/virt-viewer/-/issues/100#note_1265011223
# Can be enabled again once this is merged:
# https://gitlab.com/virt-viewer/virt-viewer/-/merge_requests/129
ovirtSupport ? false,
libvirt,
libvirt-glib,
libxml2,
meson,
ninja,
pkg-config,
python3,
shared-mime-info,
spice-gtk,
spice-protocol,
spiceSupport ? true,
vte,
wrapGAppsHook3,
}:
stdenv.mkDerivation rec {
pname = "virt-viewer";
version = "11.0";
src = fetchurl {
url = "https://releases.pagure.org/virt-viewer/virt-viewer-${version}.tar.xz";
sha256 = "sha256-pD+iMlxMHHelyMmAZaww7wURohrJjlkPIjQIabrZq9A=";
};
patches = [
# Fix build with meson 0.61. Should be fixed in the next release.
# https://gitlab.com/virt-viewer/virt-viewer/-/merge_requests/120
(fetchpatch {
url = "https://gitlab.com/virt-viewer/virt-viewer/-/commit/98d9f202ef768f22ae21b5c43a080a1aa64a7107.patch";
sha256 = "sha256-3AbnkbhWOh0aNjUkmVoSV/9jFQtvTllOr7plnkntb2o=";
})
];
nativeBuildInputs = [
glib
intltool
meson
ninja
pkg-config
python3
shared-mime-info
wrapGAppsHook3
];
buildInputs = [
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
bash-completion
glib
gsettings-desktop-schemas
gtk-vnc
gtk3
libvirt
libvirt-glib
libxml2
vte
]
++ lib.optionals ovirtSupport [
libgovirt
]
++ lib.optionals spiceSupport (
[
gdbm
spice-gtk
spice-protocol
]
++ lib.optionals stdenv.hostPlatform.isLinux [
libcap
]
);
# Required for USB redirection PolicyKit rules file
propagatedUserEnvPkgs = lib.optional spiceSupport spice-gtk;
mesonFlags = [
(lib.mesonEnable "ovirt" ovirtSupport)
];
strictDeps = true;
postPatch = ''
patchShebangs build-aux/post_install.py
'';
meta = with lib; {
description = "Viewer for remote virtual machines";
maintainers = with maintainers; [
raskin
atemu
];
platforms = with platforms; linux ++ darwin;
license = licenses.gpl2;
mainProgram = "virt-viewer";
};
passthru = {
updateInfo = {
downloadPage = "https://virt-manager.org/download.html";
};
};
}

View File

@@ -0,0 +1,24 @@
{
stdenv,
lib,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "virt-what";
version = "1.27";
src = fetchurl {
url = "https://people.redhat.com/~rjones/virt-what/files/${pname}-${version}.tar.gz";
sha256 = "sha256-1Nm9nUrlkJVZdEP6xmNJUxXH60MwuHKqXwYt84rGm/E=";
};
meta = with lib; {
description = "Detect if running in a virtual machine and prints its type";
homepage = "https://people.redhat.com/~rjones/virt-what/";
maintainers = with maintainers; [ fpletz ];
license = licenses.gpl2Plus;
platforms = platforms.linux;
mainProgram = "virt-what";
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "virter";
version = "0.29.0";
src = fetchFromGitHub {
owner = "LINBIT";
repo = "virter";
rev = "v${version}";
hash = "sha256-zEdG1n+tsDzyMTHBCikZaMalEhqdQiQvcsbElrbd1H4=";
};
vendorHash = "sha256-67eFCrAs8oQ+PPEAB+hl5bipH0TpHvW07aqC0ljAlBM=";
ldflags = [
"-s"
"-w"
"-X github.com/LINBIT/virter/cmd.version=${version}"
"-X github.com/LINBIT/virter/cmd.builddate=builtByNix"
"-X github.com/LINBIT/virter/cmd.githash=builtByNix"
];
# requires network access
doCheck = false;
meta = {
description = "Command line tool for simple creation and cloning of virtual machines based on libvirt";
homepage = "https://github.com/LINBIT/virter";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ dit7ya ];
mainProgram = "virter";
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchurl,
libarchive,
}:
stdenv.mkDerivation rec {
pname = "virtio-win";
version = "0.1.285-1";
src = fetchurl {
url = "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-${version}/virtio-win.iso";
hash = "sha256-4UzyuUSSw+kl8AcLp/3+3rIEjJHuqcWlr7MCMqOXYzE=";
};
nativeBuildInputs = [
libarchive
];
unpackCmd = "mkdir source; bsdtar -xf $curSrc -C source";
installPhase = ''
runHook preInstall
mkdir -p $out
cp -R ./. $out/
runHook postInstall
'';
passthru.updateScript = ./update.sh;
meta = with lib; {
description = "Windows VirtIO Drivers";
homepage = "https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html";
changelog = "https://fedorapeople.org/groups/virt/virtio-win/CHANGELOG";
license = [ licenses.bsd3 ];
maintainers = with maintainers; [ anthonyroussel ];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,12 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl pup common-updater-scripts
set -eu -o pipefail
version="$(curl -Ls https://fedorapeople.org/groups/virt/virtio-win/repo/latest/ | \
pup 'a[href*="virtio-win-"] text{}' | \
sed -E 's/virtio-win-(.*)\.noarch\.rpm/\1/' | \
sort -Vu | \
tail -n1)"
update-source-version virtio-win "$version"

View File

@@ -0,0 +1,55 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitLab,
libcap_ng,
libseccomp,
}:
rustPlatform.buildRustPackage rec {
pname = "virtiofsd";
version = "1.13.2";
src = fetchFromGitLab {
owner = "virtio-fs";
repo = "virtiofsd";
rev = "v${version}";
hash = "sha256-7ShmdwJaMjaUDSFnzHnsTQ/CmAQ0qpZnX5D7cFYHNmo=";
};
separateDebugInfo = true;
cargoHash = "sha256-Y07SJ54sw4CPCPq/LoueGBfHuZXu9F32yqMR6LBJ09I=";
LIBCAPNG_LIB_PATH = "${lib.getLib libcap_ng}/lib";
LIBCAPNG_LINK_TYPE = if stdenv.hostPlatform.isStatic then "static" else "dylib";
buildInputs = [
libcap_ng
libseccomp
];
postConfigure = ''
sed -i "s|/usr/libexec|$out/bin|g" 50-virtiofsd.json
'';
postInstall = ''
install -Dm644 50-virtiofsd.json "$out/share/qemu/vhost-user/50-virtiofsd.json"
'';
meta = with lib; {
homepage = "https://gitlab.com/virtio-fs/virtiofsd";
description = "vhost-user virtio-fs device backend written in Rust";
maintainers = with maintainers; [
qyliss
astro
];
mainProgram = "virtiofsd";
platforms = platforms.linux;
license = with licenses; [
asl20 # and
bsd3
];
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
fetchFromGitHub,
python3Packages,
versionCheckHook,
}:
python3Packages.buildPythonApplication rec {
pname = "virtnbdbackup";
version = "2.37";
pyproject = true;
src = fetchFromGitHub {
owner = "abbbi";
repo = "virtnbdbackup";
tag = "v${version}";
hash = "sha256-G3nDaAIWxSA6EsqiVpdouBRWprSbogcMTTroquK8Big=";
};
build-system = with python3Packages; [
setuptools
];
dependencies = with python3Packages; [
libvirt
tqdm
libnbd
lz4
lxml
paramiko
typing-extensions
colorlog
];
nativeCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "-V";
pythonImportsCheck = [ "libvirtnbdbackup" ];
meta = {
description = "Backup utility for Libvirt/qemu/kvm";
homepage = "https://github.com/abbbi/virtnbdbackup";
changelog = "https://github.com/abbbi/virtnbdbackup/releases/tag/${src.tag}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ genga898 ];
mainProgram = "virtnbdbackup";
};
}

View File

@@ -0,0 +1,103 @@
{
lib,
stdenv,
fetchzip,
libX11,
libXi,
libGL,
alsa-lib,
SDL2,
autoPatchelfHook,
}:
stdenv.mkDerivation rec {
pname = "virtual-ans";
version = "3.0.3";
src = fetchzip {
url = "https://warmplace.ru/soft/ans/virtual_ans-${version}.zip";
hash = "sha256-QrYWTRYCh1YYJFtBukC2kUNoiRlsAJOD1NdB9rcx7yM=";
};
nativeBuildInputs = [
autoPatchelfHook
];
buildInputs = [
(lib.getLib stdenv.cc.cc)
libX11
libXi
libGL
alsa-lib
SDL2
];
installPhase = ''
mkdir -p $out
cp -R ./* $out/
# Remove all executables except for current architecture
ls -1d $out/START* | grep -v ${startScript} | xargs rm -rf
ls -1d $out/bin/pixilang_linux* | grep -v ${linuxExecutable} | xargs rm -rf
# Start script performs relative search for resources, so it cannot be moved
# to bin directory
ln -s $out/${startScript} $out/bin/virtual-ans
'';
startScript =
if stdenv.hostPlatform.isx86_32 then
"START_LINUX_X86"
else if stdenv.hostPlatform.isx86_64 then
"START_LINUX_X86_64"
#else if stdenv.hostPlatform.isDarwin then "START_MACOS.app" # disabled because I cannot test on Darwin
else
throw "Unsupported platform: ${stdenv.hostPlatform.linuxArch}.";
linuxExecutable =
if stdenv.hostPlatform.isx86_32 then
"pixilang_linux_x86"
else if stdenv.hostPlatform.isx86_64 then
"pixilang_linux_x86_64"
else
"";
meta = with lib; {
description = "Photoelectronic microtonal/spectral musical instrument";
longDescription = ''
Virtual ANS is a software simulator of the unique Russian synthesizer ANS
- photoelectronic musical instrument created by Evgeny Murzin from 1938 to
1958. The ANS made it possible to draw music in the form of a spectrogram
(sonogram), without live instruments and performers. It was used by
Stanislav Kreichi, Alfred Schnittke, Edward Artemiev and other Soviet
composers in their experimental works. You can also hear the sound of the
ANS in Andrei Tarkovsky's movies Solaris, The Mirror, Stalker.
The simulator extends the capabilities of the original instrument. Now
it's a full-featured graphics editor where you can convert sound into an
image, load and play pictures, draw microtonal/spectral music and create
some unusual deep atmospheric sounds. This app is for everyone who loves
experiments and is looking for something new.
Key features:
+ unlimited number of pure tone generators;
+ powerful sonogram editor - you can draw the spectrum and play it at the same time;
+ any sound (from a WAV file or a Microphone/Line-in) can be converted to image (sonogram) and vice versa;
+ support for MIDI devices;
+ polyphonic synth mode with MIDI mapping;
+ supported file formats: WAV, AIFF, PNG, JPEG, GIF;
+ supported sound systems: ASIO, DirectSound, MME, ALSA, OSS, JACK, Audiobus, IAA.
'';
homepage = "https://warmplace.ru/soft/ans/";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfreeRedistributable;
# I cannot test the Darwin version, so I'll leave it disabled
platforms = [
"x86_64-linux"
"i686-linux"
];
maintainers = with maintainers; [ jacg ];
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchurl,
validatePkgConfig,
libpq,
sqlite,
}:
stdenv.mkDerivation rec {
pname = "virtualpg";
version = "2.0.1";
src = fetchurl {
url = "https://www.gaia-gis.it/gaia-sins/virtualpg-${version}.tar.gz";
hash = "sha256-virr64yf8nQ4IIX1HUIugjhYvKT2vC+pCYFkZMah4Is=";
};
nativeBuildInputs = [
validatePkgConfig
libpq.pg_config
];
buildInputs = [
libpq
sqlite
];
meta = with lib; {
description = "Loadable dynamic extension to both SQLite and SpatiaLite";
homepage = "https://www.gaia-gis.it/fossil/virtualpg";
license = with licenses; [
mpl11
gpl2Plus
lgpl21Plus
];
platforms = platforms.unix;
maintainers = with maintainers; [ sikmir ];
};
}

View File

@@ -0,0 +1,85 @@
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
makeWrapper,
copyDesktopItems,
makeDesktopItem,
ncurses,
libtermkey,
lua,
tre,
acl,
libselinux,
}:
let
luaEnv = lua.withPackages (ps: [ ps.lpeg ]);
in
stdenv.mkDerivation rec {
pname = "vis";
version = "0.9";
src = fetchFromGitHub {
rev = "v${version}";
hash = "sha256-SYM3zlzhp3NdyOjtXc+pOiWY4/WA/Ax+qAWe18ggq3g=";
repo = "vis";
owner = "martanne";
};
nativeBuildInputs = [
pkg-config
makeWrapper
copyDesktopItems
];
buildInputs = [
ncurses
libtermkey
luaEnv
tre
]
++ lib.optionals stdenv.hostPlatform.isLinux [
acl
libselinux
];
postInstall = ''
wrapProgram $out/bin/vis \
--prefix LUA_CPATH ';' "${luaEnv}/lib/lua/${lua.luaversion}/?.so" \
--prefix LUA_PATH ';' "${luaEnv}/share/lua/${lua.luaversion}/?.lua" \
--prefix VIS_PATH : "\$HOME/.config:$out/share/vis"
'';
desktopItems = [
(makeDesktopItem {
name = "vis";
exec = "vis %U";
type = "Application";
icon = "accessories-text-editor";
comment = meta.description;
desktopName = "vis";
genericName = "Text editor";
categories = [
"Application"
"Development"
"IDE"
];
mimeTypes = [
"text/plain"
"application/octet-stream"
];
startupNotify = false;
terminal = true;
})
];
meta = with lib; {
description = "Vim like editor";
homepage = "https://github.com/martanne/vis";
license = licenses.isc;
maintainers = with maintainers; [ ramkromberg ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,144 @@
{
lib,
python3Packages,
fetchFromGitHub,
# other
gitMinimal,
withPcap ? true,
withXclip ? stdenv.hostPlatform.isLinux,
xclip,
testers,
visidata,
stdenv,
}:
python3Packages.buildPythonApplication rec {
pname = "visidata";
version = "3.3";
format = "setuptools";
src = fetchFromGitHub {
owner = "saulpw";
repo = "visidata";
rev = "v${version}";
hash = "sha256-y+HqRww/Fm+YeiNYH0a2TcUYOc72qL+9tC0PRudptrA=";
};
propagatedBuildInputs =
with python3Packages;
[
# from visidata/requirements.txt
# packages not (yet) present in nixpkgs are commented
python-dateutil
pandas
requests
lxml
openpyxl
xlrd
xlwt
h5py
psycopg2
boto3
pyshp
#mapbox-vector-tile
pypng
#pyconll
msgpack
brotli
#fecfile
fonttools
#sas7bdat
#xport
#savReaderWriter
pyyaml
#namestand
#datapackage
pdfminer-six
#tabula
vobject
tabulate
wcwidth
zstandard
odfpy
urllib3
pyarrow
seaborn
matplotlib
sh
psutil
numpy
#requests_cache
beautifulsoup4
faker
praw
zulip
#pyairtable
setuptools
importlib-metadata
]
++ lib.optionals withPcap (
with python3Packages;
[
dpkt
dnslib
]
)
++ lib.optional withXclip xclip;
nativeCheckInputs = [
gitMinimal
];
# check phase uses the output bin, which is not possible when cross-compiling
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
checkPhase = ''
runHook preCheck
# disable some tests which require access to the network
rm -f tests/load-http.vd # http
rm -f tests/graph-cursor-nosave.vd # http
rm -f tests/messenger-nosave.vd # dns
# tests to disable because we don't have a package to load such files
rm -f tests/load-conllu.vdj # no 'pyconll'
rm -f tests/load-sav.vd # no 'savReaderWriter'
rm -f tests/load-fec.vdj # no 'fecfile'
# tests use git to compare outputs to references
git init -b "test-reference"
git config user.name "nobody"
git config user.email "no@where"
git add .
git commit -m "test reference"
substituteInPlace dev/test.sh --replace "bin/vd" "$out/bin/vd"
bash dev/test.sh
runHook postCheck
'';
postInstall = ''
python dev/zsh-completion.py
install -Dm644 _visidata -t $out/share/zsh/site-functions
'';
pythonImportsCheck = [ "visidata" ];
passthru.tests.version = testers.testVersion {
package = visidata;
version = "v${version}";
};
meta = {
description = "Interactive terminal multitool for tabular data";
mainProgram = "visidata";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [
raskin
markus1189
];
homepage = "https://visidata.org/";
changelog = "https://github.com/saulpw/visidata/blob/v${version}/CHANGELOG.md";
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch2,
cmake,
ninja,
llvmPackages,
onetbb,
mpi,
mpiSupport ? true,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "viskores";
version = "1.0.0";
src = fetchFromGitHub {
owner = "viskores";
repo = "viskores";
tag = "v${finalAttrs.version}";
hash = "sha256-jKuDM/NPfbMIfNpDNsDpmXdKuVobsr3s9+iht1zBLvI=";
};
patches = [
# https://github.com/Viskores/viskores/pull/137
(fetchpatch2 {
url = "https://github.com/Viskores/viskores/commit/36bf609511adb5530e6952bc14daefeafdf4ab11.patch?full_index=1";
hash = "sha256-SKmgVZhkCk1/X17dLXZ8ceF9Pq1Kkc2sXuFdrvotsdo=";
})
];
nativeBuildInputs = [
cmake
ninja
];
propagatedBuildInputs = [
onetbb
]
++ lib.optional mpiSupport mpi
++ lib.optional stdenv.cc.isClang llvmPackages.openmp;
cmakeFlags = [
(lib.cmakeBool "Viskores_ENABLE_OPENMP" true)
(lib.cmakeBool "Viskores_ENABLE_TBB" true)
(lib.cmakeBool "Viskores_ENABLE_MPI" mpiSupport)
(lib.cmakeBool "Viskores_USE_DEFAULT_TYPES_FOR_VTK" true)
(lib.cmakeFeature "Viskores_INSTALL_INCLUDE_DIR" "include")
(lib.cmakeFeature "Viskores_INSTALL_CONFIG_DIR" "lib/cmake/viskores")
(lib.cmakeFeature "Viskores_INSTALL_SHARE_DIR" "share/viskores")
];
passthru.tests.cmake-config = testers.hasCmakeConfigModules {
moduleNames = [ "Viskores" ];
package = finalAttrs.finalPackage;
};
meta = {
description = "Visualization library for many-threaded devices";
homepage = "https://github.com/Viskores/viskores";
changelog = "https://github.com/Viskores/viskores/releases/tag/${finalAttrs.src.tag}";
license = with lib.licenses; [ bsd3 ];
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ qbisi ];
};
})

View File

@@ -0,0 +1,110 @@
{
cmake,
coin3d,
doxygen,
eigen,
fetchFromGitHub,
fetchpatch,
lapack,
lib,
libdc1394,
libdmtx,
libglvnd,
libjpeg, # this is libjpeg-turbo
libpng,
librealsense,
libxml2,
libX11,
nlohmann_json,
#ogre,
openblas,
opencv,
pkg-config,
python3Packages,
stdenv,
texliveSmall,
v4l-utils,
xorg,
zbar,
zlib,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "visp";
version = "3.6.0";
src = fetchFromGitHub {
owner = "lagadic";
repo = "visp";
tag = "v${finalAttrs.version}";
hash = "sha256-m5Tmr+cZab7eSjmbXb8HpJpFHb0UYFTyimY+CkfBIAo=";
};
patches = [
# fix for absolute install paths
# this was merged upstream, and can be removed on next release
(fetchpatch {
url = "https://github.com/lagadic/visp/pull/1416/commits/fdda5620389badee998fe1926ddd3b46f7a6bcd8.patch";
hash = "sha256-W3vvBdQdp59WAMjuucNoWI0eCyPHjWerl7VCNcPVvzI=";
})
# fix for opencv new Universal Intrinsic API
# this was merged upstream, and can be removed on next release
(fetchpatch {
url = "https://github.com/lagadic/visp/pull/1310/commits/9ed0300507e13dddd83fd62a799f5039025ea44e.patch";
hash = "sha256-xrJ7B/8mEfi9dM/ToMr6vCAwX/FMw+GA/W0zFYgT32s=";
})
# fix error: unsupported option '-mfpu=' on darwin
# this was merged upstream, and can be removed on next release
(fetchpatch {
url = "https://github.com/lagadic/visp/commit/8c1461661f99a5db31c89ede9946d2b0244f8123.patch";
hash = "sha256-MER5KDrFxKs+Y5G9UcEIAh95Zilmv1Vp4xq+isRMM/U=";
})
];
nativeBuildInputs = [
cmake
doxygen
pkg-config
texliveSmall
];
buildInputs = [
eigen
lapack
libdc1394
libdmtx
libglvnd
libjpeg
libpng
librealsense
libX11
libxml2
nlohmann_json
#ogre
openblas
opencv
python3Packages.numpy
xorg.libpthreadstubs
zbar
zlib
]
++ lib.optionals stdenv.hostPlatform.isLinux [
coin3d
v4l-utils
];
doCheck = true;
meta = {
description = "Open Source Visual Servoing Platform";
# ref. https://github.com/lagadic/visp/pull/1658
broken = stdenv.hostPlatform.system == "x86_64-darwin";
homepage = "https://visp.inria.fr";
changelog = "https://github.com/lagadic/visp/blob/v${finalAttrs.version}/ChangeLog.txt";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ nim65s ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<!-- This configuation is intentionally left empty in order to
override any other font package that may wish to set up an
alias for the @fontname@ font. If you actually do
want to have the alias then please change the priority of that
package; see the Nix manual page for nix-env for details. -->
</fontconfig>

View File

@@ -0,0 +1,55 @@
{
lib,
stdenvNoCC,
fetchurl,
cabextract,
}:
stdenvNoCC.mkDerivation {
pname = "vista-fonts-chs";
version = "1";
src = fetchurl {
url = "https://web.archive.org/web/20161221192937if_/http://download.microsoft.com/download/d/6/e/d6e2ff26-5821-4f35-a18b-78c963b1535d/VistaFont_CHS.EXE";
# Alternative mirror:
# http://www.eeo.cn/download/font/VistaFont_CHS.EXE
hash = "sha256-saMIBEDTt9Ijv8g1nQHRNTG1ykIbHrCxjzdhhRYYleM=";
};
nativeBuildInputs = [ cabextract ];
unpackPhase = ''
runHook preUnpack
cabextract --lowercase --filter '*.TTF' $src
runHook postUnpack
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/truetype
cp *.ttf $out/share/fonts/truetype
# Set up no-op font configs to override any aliases set up by
# other packages.
mkdir -p $out/etc/fonts/conf.d
substitute ${./no-op.conf} $out/etc/fonts/conf.d/30-msyahei.conf \
--subst-var-by fontname "Microsoft YaHei"
runHook postInstall
'';
meta = {
description = "TrueType fonts from Microsoft Windows Vista For Simplified Chinese (Microsoft YaHei)";
homepage = "https://www.microsoft.com/typography/fonts/family.aspx?FID=350";
license = lib.licenses.unfree;
maintainers = [ lib.maintainers.ChengCat ];
# Set a non-zero priority to allow easy overriding of the
# fontconfig configuration files.
priority = 5;
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<!-- This configuation is intentionally left empty in order to
override any other font package that may wish to set up an
alias for the Microsoft @fontname@ font. If you actually do
want to have the alias then please change the priority of that
package; see the Nix manual page for nix-env for details. -->
</fontconfig>

View File

@@ -0,0 +1,53 @@
{
lib,
stdenvNoCC,
fetchurl,
cabextract,
}:
stdenvNoCC.mkDerivation {
pname = "vista-fonts-cht";
version = "1";
src = fetchurl {
url = "https://download.microsoft.com/download/7/6/b/76bd7a77-be02-47f3-8472-fa1de7eda62f/VistaFont_CHT.EXE";
hash = "sha256-fSnbbxlMPzbhFSQyKxQaS5paiWji8njK7tS8Eppsj6g=";
};
nativeBuildInputs = [ cabextract ];
unpackPhase = ''
runHook preUnpack
cabextract --lowercase --filter '*.TTF' $src
runHook postUnpack
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/truetype
cp *.ttf $out/share/fonts/truetype
# Set up no-op font configs to override any aliases set up by
# other packages.
mkdir -p $out/etc/fonts/conf.d
substitute ${./no-op.conf} $out/etc/fonts/conf.d/30-msjhenghei.conf \
--subst-var-by fontname "Microsoft JhengHei"
runHook postInstall
'';
meta = {
description = "TrueType fonts from Microsoft Windows Vista For Traditional Chinese (Microsoft JhengHei)";
homepage = "https://www.microsoft.com/typography/fonts/family.aspx";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ atkinschang ];
# Set a non-zero priority to allow easy overriding of the
# fontconfig configuration files.
priority = 5;
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<!-- This configuation is intentionally left empty in order to
override any other font package that may wish to set up an
alias for the Microsoft @fontname@ font. If you actually do
want to have the alias then please change the priority of that
package; see the Nix manual page for nix-env for details. -->
</fontconfig>

View File

@@ -0,0 +1,78 @@
{
lib,
stdenvNoCC,
fetchurl,
cabextract,
fontforge,
}:
stdenvNoCC.mkDerivation {
pname = "vista-fonts";
version = "1";
src = fetchurl {
url = "mirror://sourceforge/mscorefonts2/cabs/PowerPointViewer.exe";
hash = "sha256-xOdTVI0wkv/X3ThJEF4KJtm1oa/kbm5mf+fGiHiTcB8=";
};
nativeBuildInputs = [
cabextract
fontforge
];
unpackPhase = ''
runHook preUnpack
cabextract --lowercase --filter ppviewer.cab $src
cabextract --lowercase --filter '*.TTF' ppviewer.cab
cabextract --lowercase --filter '*.TTC' ppviewer.cab
runHook postUnpack
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/truetype
# Remove the embedded bitmaps from Calibri and Cambria because they have very low resolutions.
fontforge -c "
import fontforge
import sys
def removeBitmaps(font):
for table in ('EBDT', 'EBLC', 'EBSC'):
font.setTableData(table, None)
for path in sys.argv[1:]:
fonts = [fontforge.open(f'{path}({font})') for font in fontforge.fontsInFile(path)]
for font in fonts:
removeBitmaps(font)
if len(fonts) > 1:
fonts[0].generateTtc(f'$out/share/fonts/truetype/{path}', fonts[1:], layer=fonts[0].activeLayer)
else:
fonts[0].generate(f'$out/share/fonts/truetype/{path}')
" calibri* cambria*
cp -n *.ttf *.ttc $out/share/fonts/truetype
# Set up no-op font configs to override any aliases set up by other packages.
mkdir -p $out/etc/fonts/conf.d
for name in Calibri Cambria Candara Consolas Constantia Corbel ; do
substitute ${./no-op.conf} $out/etc/fonts/conf.d/30-''${name,,}.conf \
--subst-var-by fontname $name
done
runHook postInstall
'';
meta = {
description = "Some TrueType fonts from Microsoft Windows Vista (Calibri, Cambria, Candara, Consolas, Constantia, Corbel)";
homepage = "http://www.microsoft.com/typography/ClearTypeFonts.mspx";
license = lib.licenses.unfree; # haven't read the EULA, but we probably can't redistribute these files, so...
# Set a non-zero priority to allow easy overriding of the
# fontconfig configuration files.
priority = 5;
};
}

View File

@@ -0,0 +1,56 @@
{
stdenv,
lib,
fetchurl,
fetchpatch,
ncurses,
}:
stdenv.mkDerivation {
pname = "visual-hexdiff";
version = "0.0.53";
src = fetchurl {
url = "mirror://ubuntu/pool/universe/h/hexdiff/hexdiff_0.0.53.orig.tar.gz";
hash = "sha256-M1bmkW63pHlfl9zNWEq0EGN1rpVGo+BTUKM9ot4HWqo=";
};
patches = [
# Some changes the debian/ubuntu developers made over the original source code
# See https://changelogs.ubuntu.com/changelogs/pool/universe/h/hexdiff/hexdiff_0.0.53-0ubuntu4/changelog
(fetchpatch {
url = "mirror://ubuntu/pool/universe/h/hexdiff/hexdiff_0.0.53-0ubuntu4.diff.gz";
sha256 = "sha256-X5ONNp9jeACxsulyowDQJ6REX6bty6L4in0/+rq8Wz4=";
decode = "gunzip --stdout";
name = "hexdiff_0.0.53-0ubuntu4.diff";
stripLen = 1;
})
];
postPatch = ''
# Fix compiler error that wants a string literal as format string for `wprintw`
substituteInPlace sel_file.c \
--replace-fail 'wprintw(win, txt_aide_fs[foo]);' 'wprintw(win, "%s", txt_aide_fs[foo]);'
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
# Fix compiler error on Darwin: conflicting types for 'strdup'
substituteInPlace sel_file.c \
--replace-fail 'char *strdup(char *);' ' '
'';
buildInputs = [ ncurses ];
preInstall = ''
mkdir -p $out/bin/
'';
makeFlags = [ "PREFIX=$(out)" ];
meta = with lib; {
description = "Visual hexadecimal difference editor";
homepage = "http://tboudet.free.fr/hexdiff/";
license = licenses.wtfpl;
maintainers = with maintainers; [ erictapen ];
mainProgram = "hexdiff";
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,83 @@
{
lib,
stdenv,
fetchurl,
copyDesktopItems,
makeDesktopItem,
openjdk,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "visual-paradigm-ce";
version = "17.3.20250906";
src =
let
splitted = lib.versions.splitVersion finalAttrs.version;
majorMinor = builtins.concatStringsSep "." (lib.dropEnd 1 splitted);
suffix = lib.last splitted;
in
fetchurl {
url = "https://eu8.dl.visual-paradigm.com/visual-paradigm/vpce${majorMinor}/${suffix}/Visual_Paradigm_CE_${
builtins.replaceStrings [ "." ] [ "_" ] majorMinor
}_${suffix}_Linux64_InstallFree.tar.gz";
hash = "sha256-9BaAJKzK8jjQ1W+eSyJFI2NfizNCwY7PpSZoje2Zd38=";
};
nativeBuildInputs = [
copyDesktopItems
];
desktopItems = [
(makeDesktopItem {
name = "visualparadigm";
desktopName = "Visual Paradigm";
exec = "Visual_Paradigm %f";
icon = "vpuml";
})
(makeDesktopItem {
name = "visualparadigmproductselector";
desktopName = "Visual Paradigm Product Selector";
exec = "Visual_Paradigm_Product_Selector";
icon = "ProductSelector";
})
(makeDesktopItem {
name = "visualparadigmshapeeditor";
desktopName = "Visual Paradigm Shape Editor";
exec = "Visual_Paradigm_Shape_Editor";
icon = "vpuml";
})
];
installPhase = ''
runHook preInstall
install -D Application/resources/vpuml.png $out/share/icons/hicolor/512x512/apps/vpuml.png
install -D Application/resources/ProductSelector.png $out/share/icons/hicolor/512x512/apps/ProductSelector.png
mkdir -p $out/{bin,share/visual-paradigm-ce}
mv {Application,.install4j} $out/share/visual-paradigm-ce/
for bin in Visual_Paradigm Visual_Paradigm_Product_Selector Visual_Paradigm_Shape_Editor; do
substituteInPlace $out/share/visual-paradigm-ce/Application/bin/$bin \
--replace-fail '# INSTALL4J_JAVA_HOME_OVERRIDE=' "INSTALL4J_JAVA_HOME_OVERRIDE=${openjdk}" \
--replace-fail 'app_home=../../' "app_home=${placeholder "out"}/share/visual-paradigm-ce"
ln -s $out/share/visual-paradigm-ce/Application/bin/$bin $out/bin/
done
runHook postInstall
'';
meta = {
description = "All-in-one UML CASE tool for software development";
homepage = "https://www.visual-paradigm.com/";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ drupol ];
platforms = lib.platforms.linux;
sourceProvenance = with lib.sourceTypes; [
binaryBytecode
binaryNativeCode
];
mainProgram = "Visual_Paradigm";
};
})

View File

@@ -0,0 +1,63 @@
{
stdenv,
fetchzip,
lib,
makeWrapper,
makeDesktopItem,
jdk,
}:
stdenv.mkDerivation rec {
version = "2.2";
pname = "visualvm";
src = fetchzip {
url = "https://github.com/visualvm/visualvm.src/releases/download/${version}/visualvm_${
builtins.replaceStrings [ "." ] [ "" ] version
}.zip";
sha256 = "sha256-xEqzSNM5Mkt9SQ+23Edb2NMN/o8koBjhQWTGuyZ/0m4=";
};
desktopItem = makeDesktopItem {
name = "visualvm";
exec = "visualvm";
comment = "Java Troubleshooting Tool";
desktopName = "VisualVM";
genericName = "Java Troubleshooting Tool";
categories = [ "Development" ];
};
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
find . -type f -name "*.dll" -o -name "*.exe" -delete;
substituteInPlace etc/visualvm.conf \
--replace "#visualvm_jdkhome=" "visualvm_jdkhome=" \
--replace "/path/to/jdk" "${jdk.home}" \
cp -r . $out
'';
meta = with lib; {
description = "Visual interface for viewing information about Java applications";
mainProgram = "visualvm";
longDescription = ''
VisualVM is a visual tool integrating several commandline JDK
tools and lightweight profiling capabilities. Designed for both
production and development time use, it further enhances the
capability of monitoring and performance analysis for the Java
SE platform.
'';
homepage = "https://visualvm.github.io";
license = with licenses; [
gpl2Plus
classpathException20
];
platforms = platforms.all;
maintainers = with maintainers; [
michalrus
moaxcp
];
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
python3Packages,
fetchPypi,
taskwarrior2,
glibcLocales,
}:
with python3Packages;
buildPythonApplication rec {
pname = "vit";
version = "2.3.3";
pyproject = true;
disabled = lib.versionOlder python.version "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-+lrXGfhoB4z5IWkJTXMIm3GGVPfNGO9lUB3uFTx8hDY=";
};
build-system = with python3Packages; [ setuptools ];
dependencies = [
tasklib
urwid
];
nativeCheckInputs = [ glibcLocales ];
makeWrapperArgs = [
"--suffix"
"PATH"
":"
"${taskwarrior2}/bin"
];
preCheck = ''
export TERM=''${TERM-linux}
'';
pythonImportsCheck = [ "vit" ];
meta = with lib; {
homepage = "https://github.com/scottkosty/vit";
description = "Visual Interactive Taskwarrior";
mainProgram = "vit";
maintainers = with maintainers; [ arcnmx ];
platforms = platforms.all;
license = licenses.mit;
};
}

View File

@@ -0,0 +1,82 @@
{
lib,
stdenv,
fetchzip,
autoPatchelfHook,
makeBinaryWrapper,
alsa-lib,
libjack2,
curl,
xorg,
libGL,
freetype,
zenity,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vital";
version = "1.5.5";
src = fetchzip {
url = "https://builds.vital.audio/VitalAudio/vital/${
builtins.replaceStrings [ "." ] [ "_" ] finalAttrs.version
}/VitalInstaller.zip";
hash = "sha256-hCwXSUiBB0YpQ1oN6adLprwAoel6f72tBG5fEb61OCI=";
};
nativeBuildInputs = [
autoPatchelfHook
makeBinaryWrapper
];
buildInputs = [
alsa-lib
(lib.getLib stdenv.cc.cc)
libGL
xorg.libSM
xorg.libICE
xorg.libX11
freetype
libjack2
];
dontBuild = true;
installPhase = ''
runHook preInstall
# copy each output to its destination (individually)
mkdir -p $out/{bin,lib/{clap,vst,vst3}}
for f in bin/Vital lib/{clap/Vital.clap,vst/Vital.so,vst3/Vital.vst3}; do
cp -r $f $out/$f
done
wrapProgram $out/bin/Vital \
--prefix LD_LIBRARY_PATH : "${
lib.makeLibraryPath [
curl
libjack2
]
}" \
--prefix PATH : "${
lib.makeBinPath [
zenity
]
}"
runHook postInstall
'';
meta = with lib; {
description = "Spectral warping wavetable synth";
homepage = "https://vital.audio/";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = with licenses; [
unfree # https://vital.audio/eula/
];
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ PowerUser64 ];
mainProgram = "Vital";
};
})

View File

@@ -0,0 +1,35 @@
{
lib,
buildGoModule,
fetchFromGitHub,
sqlite,
}:
buildGoModule rec {
pname = "vitess";
version = "22.0.1";
src = fetchFromGitHub {
owner = "vitessio";
repo = "vitess";
rev = "v${version}";
hash = "sha256-VZ5i6ovvgPEASS2SMuSiht7OJXBxgXp/6Zw1dvO5lpk=";
};
vendorHash = "sha256-0rgosDZn/DZcEK8f1JE2ICiOQX1GU2H93EEAlvesNE8=";
buildInputs = [ sqlite ];
subPackages = [ "go/cmd/..." ];
# integration tests require access to syslog and root
doCheck = false;
meta = {
homepage = "https://vitess.io/";
changelog = "https://github.com/vitessio/vitess/releases/tag/v${version}";
description = "Database clustering system for horizontal scaling of MySQL";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ urandom ];
};
}

View File

@@ -0,0 +1,41 @@
{
stdenv,
fetchFromGitHub,
lib,
}:
stdenv.mkDerivation rec {
pname = "vitetris";
version = "0.59.1";
src = fetchFromGitHub {
owner = "vicgeralds";
repo = "vitetris";
rev = "v${version}";
sha256 = "sha256-Rbfa2hD67RGmInfWwYD4SthL8lm5bGSBi3oudV5hAao=";
};
hardeningDisable = [ "format" ];
makeFlags = [
"INSTALL=install"
"CPPFLAGS=-Wno-implicit-int"
];
meta = {
description = "Terminal-based Tetris clone by Victor Nilsson";
homepage = "http://www.victornils.net/tetris/";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ siers ];
mainProgram = "tetris";
platforms = lib.platforms.unix;
longDescription = ''
vitetris is a terminal-based Tetris clone by Victor Nilsson. Gameplay is much
like the early Tetris games by Nintendo.
Features include: configurable keys, highscore table, two-player mode with
garbage, network play, joystick (gamepad) support on Linux or with Allegro.
'';
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
rustPlatform,
fetchFromGitHub,
libsixel,
withSixel ? false,
}:
rustPlatform.buildRustPackage rec {
pname = "viu";
version = "1.5.1";
src = fetchFromGitHub {
owner = "atanunq";
repo = "viu";
rev = "v${version}";
sha256 = "sha256-sx8BH01vTFsAEnMKTcVZTDMHiVi230BVVGRexoBNxeo=";
};
# tests need an interactive terminal
doCheck = false;
cargoHash = "sha256-a9Z6/+/fMyJ2pFiKPexuiM5DAbk+Tcq3D9rDAyUwC84=";
buildFeatures = lib.optional withSixel "sixel";
buildInputs = lib.optional withSixel libsixel;
meta = with lib; {
description = "Command-line application to view images from the terminal written in Rust";
homepage = "https://github.com/atanunq/viu";
license = licenses.mit;
maintainers = with maintainers; [
chuangzhu
sigmanificient
];
mainProgram = "viu";
};
}

View File

@@ -0,0 +1,61 @@
{
fetchurl,
lib,
squashfsTools,
stdenv,
}:
# This derivation roughly follows the update-ffmpeg script that ships with the official Vivaldi
# downloads at https://vivaldi.com/download/
let
sources = {
x86_64-linux = fetchurl {
url = "https://api.snapcraft.io/api/v1/snaps/download/XXzVIXswXKHqlUATPqGCj2w2l7BxosS8_85.snap";
hash = "sha256-77lcQFFP0eXuaxN2UdsEjFXJt22L6Mp6Fe3ZYPpKVwM=";
};
aarch64-linux = fetchurl {
url = "https://api.snapcraft.io/api/v1/snaps/download/XXzVIXswXKHqlUATPqGCj2w2l7BxosS8_85.snap";
hash = "sha256-77lcQFFP0eXuaxN2UdsEjFXJt22L6Mp6Fe3ZYPpKVwM=";
};
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "chromium-codecs-ffmpeg-extra";
version = "120726";
src = sources."${stdenv.hostPlatform.system}";
buildInputs = [ squashfsTools ];
unpackPhase = ''
unsquashfs -dest . $src
'';
installPhase = ''
install -vD chromium-ffmpeg-${finalAttrs.version}/chromium-ffmpeg/libffmpeg.so $out/lib/libffmpeg.so
'';
passthru = {
inherit sources;
updateScript = ./update.sh;
};
meta = with lib; {
description = "Additional support for proprietary codecs for Vivaldi and other chromium based tools";
homepage = "https://ffmpeg.org/";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.lgpl21;
maintainers = with maintainers; [
betaboon
cawilliamson
fptje
sarahec
];
platforms = [
"x86_64-linux"
"aarch64-linux"
];
};
})

View File

@@ -0,0 +1,44 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p common-updater-scripts coreutils gnugrep jq squashfsTools
set -eu -o pipefail
RELEASES=$(curl -H 'Snap-Device-Series: 16' http://api.snapcraft.io/v2/snaps/info/chromium-ffmpeg)
STABLE_RELEASES=$(echo $RELEASES | jq '."channel-map" | .[] | select(.channel.risk=="stable")')
function max_version() {
local versions=$(echo $1 | jq -r '.version')
echo "$(echo $versions | grep -E -o '^[0-9]+')"
}
function update_source() {
local platform=$1
local selectedRelease=$2
local version=$3
local url=$(echo $selectedRelease | jq -r '.download.url')
source="$(nix-prefetch-url "$url")"
hash=$(nix-hash --to-sri --type sha256 "$source")
update-source-version vivaldi-ffmpeg-codecs "$version" "$hash" "$url" --ignore-same-version --system=$platform --source-key="sources.$platform" --file "package.nix"
}
x86Release="$(echo $STABLE_RELEASES | jq 'select(.channel.architecture=="amd64")')"
x86CodecVersion=$(max_version "$x86Release")
arm64Release="$(echo $STABLE_RELEASES | jq -r 'select(.channel.architecture=="arm64")')"
arm64CodecVersion=$(max_version "$arm64Release")
currentVersion=$(grep 'version =' ./package.nix | cut -d '"' -f 2)
if [[ "$currentVersion" == "$x86CodecVersion" ]]; then
exit 0
fi
# If this fails too often, consider finding the max common version between the two architectures
if [[ "$x86CodecVersion" != "$arm64CodecVersion" ]]; then
>&2 echo "Multiple chromium versions found: $x86CodecVersion (intel) and $arm64CodecVersion (arm); no update"
exit 1
fi
update_source "x86_64-linux" "$x86Release" "$x86CodecVersion"
update_source "aarch64-linux" "$arm64Release" "$arm64CodecVersion"

View File

@@ -0,0 +1,243 @@
{
lib,
stdenv,
coreutils,
fetchurl,
zlib,
libX11,
libXext,
libSM,
libICE,
libxkbcommon,
libxshmfence,
libXfixes,
libXt,
libXi,
libXcursor,
libXScrnSaver,
libXcomposite,
libXdamage,
libXtst,
libXrandr,
alsa-lib,
dbus,
cups,
libexif,
ffmpeg,
systemd,
libva,
libGL,
freetype,
fontconfig,
libXft,
libXrender,
libxcb,
expat,
libuuid,
libxml2,
glib,
gtk3,
pango,
gdk-pixbuf,
cairo,
atk,
at-spi2-atk,
at-spi2-core,
qt6,
libdrm,
libgbm,
vulkan-loader,
nss,
nspr,
patchelf,
makeWrapper,
wayland,
pipewire,
proprietaryCodecs ? false,
vivaldi-ffmpeg-codecs ? null,
enableWidevine ? false,
widevine-cdm ? null,
commandLineArgs ? "",
pulseSupport ? stdenv.hostPlatform.isLinux,
libpulseaudio,
kerberosSupport ? true,
libkrb5,
}:
stdenv.mkDerivation rec {
pname = "vivaldi";
version = "7.6.3797.58";
suffix =
{
aarch64-linux = "arm64";
x86_64-linux = "amd64";
}
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
src = fetchurl {
url = "https://downloads.vivaldi.com/stable/vivaldi-stable_${version}-1_${suffix}.deb";
hash =
{
aarch64-linux = "sha256-oTJJqyMiNY7IetW8Hoh42VKW0CJGXsk6nWTV9KdF9DE=";
x86_64-linux = "sha256-01uehYMyDSvCNPM73BOc8EPiyCk0OEUhbGMoyrLoGkg=";
}
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
};
unpackPhase = ''
runHook preUnpack
ar vx $src
tar -xvf data.tar.xz
runHook postUnpack
'';
nativeBuildInputs = [
patchelf
makeWrapper
qt6.wrapQtAppsHook
];
dontWrapQtApps = true;
buildInputs = [
stdenv.cc.cc
stdenv.cc.libc
zlib
libX11
libXt
libXext
libSM
libICE
libxcb
libxkbcommon
libxshmfence
libXi
libXft
libXcursor
libXfixes
libXScrnSaver
libXcomposite
libXdamage
libXtst
libXrandr
atk
at-spi2-atk
at-spi2-core
alsa-lib
dbus
cups
gtk3
gdk-pixbuf
libexif
ffmpeg
systemd
libva
qt6.qtbase
qt6.qtwayland
freetype
fontconfig
libXrender
libuuid
expat
glib
nss
nspr
libGL
libxml2
pango
cairo
libdrm
libgbm
vulkan-loader
wayland
pipewire
]
++ lib.optional proprietaryCodecs vivaldi-ffmpeg-codecs
++ lib.optional pulseSupport libpulseaudio
++ lib.optional kerberosSupport libkrb5;
libPath =
lib.makeLibraryPath buildInputs
+ lib.optionalString (stdenv.hostPlatform.is64bit) (
":" + lib.makeSearchPathOutput "lib" "lib64" buildInputs
)
+ ":$out/opt/vivaldi/lib";
buildPhase = ''
runHook preBuild
echo "Patching Vivaldi binaries"
for f in chrome_crashpad_handler vivaldi-bin vivaldi-sandbox ; do
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${libPath}" \
opt/vivaldi/$f
done
for f in libGLESv2.so libqt5_shim.so libqt6_shim.so; do
patchelf --set-rpath "${libPath}" opt/vivaldi/$f
done
''
+ lib.optionalString proprietaryCodecs ''
ln -s ${vivaldi-ffmpeg-codecs}/lib/libffmpeg.so opt/vivaldi/libffmpeg.so.''${version%\.*\.*}
''
+ ''
echo "Finished patching Vivaldi binaries"
runHook postBuild
'';
dontPatchELF = true;
dontStrip = true;
installPhase = ''
runHook preInstall
mkdir -p "$out"
cp -r opt "$out"
mkdir "$out/bin"
ln -s "$out/opt/vivaldi/vivaldi" "$out/bin/vivaldi"
mkdir -p "$out/share"
cp -r usr/share/{applications,xfce4} "$out"/share
substituteInPlace "$out"/share/applications/*.desktop \
--replace-fail /usr/bin/vivaldi "$out"/bin/vivaldi
substituteInPlace "$out"/share/applications/*.desktop \
--replace-fail vivaldi-stable vivaldi
local d
for d in 16 22 24 32 48 64 128 256; do
mkdir -p "$out"/share/icons/hicolor/''${d}x''${d}/apps
ln -s \
"$out"/opt/vivaldi/product_logo_''${d}.png \
"$out"/share/icons/hicolor/''${d}x''${d}/apps/vivaldi.png
done
wrapProgram "$out/bin/vivaldi" \
--add-flags ${lib.escapeShellArg commandLineArgs} \
--prefix XDG_DATA_DIRS : ${gtk3}/share/gsettings-schemas/${gtk3.name}/ \
--prefix LD_LIBRARY_PATH : ${libPath} \
--prefix PATH : ${coreutils}/bin \
''${qtWrapperArgs[@]}
''
+ lib.optionalString enableWidevine ''
ln -sf ${widevine-cdm}/share/google/chrome/WidevineCdm $out/opt/vivaldi/WidevineCdm
''
+ ''
runHook postInstall
'';
passthru.updateScript = ./update-vivaldi.sh;
meta = {
description = "Browser for our Friends, powerful and personal";
homepage = "https://vivaldi.com";
license = lib.licenses.unfree;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
mainProgram = "vivaldi";
maintainers = with lib.maintainers; [
marcusramberg
max06
wineee
];
platforms = [
"x86_64-linux"
"aarch64-linux"
];
};
}

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl common-updater-scripts
set -eu -o pipefail
version=$(curl -sS https://vivaldi.com/download/ | sed -rne 's/.*vivaldi-stable_([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)-1_amd64\.deb.*/\1/p')
update_hash() {
url="https://downloads.vivaldi.com/stable/vivaldi-stable_$version-1_$2.deb"
hash=$(nix --extra-experimental-features nix-command hash to-sri --type sha256 $(nix-prefetch-url --type sha256 "$url"))
update-source-version vivaldi "$version" "$hash" --system=$1 --ignore-same-version
}
update_hash aarch64-linux arm64
update_hash x86_64-linux amd64

View File

@@ -0,0 +1,98 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
cmake,
ninja,
pkg-config,
python3,
git,
SDL2,
SDL2_ttf,
libX11,
freetype,
harfbuzz,
ffmpeg,
cacert,
zlib,
writeShellScript,
nix-update,
}:
let
version = "1.3.0";
withSubprojects = stdenv.mkDerivation {
pname = "sources-with-subprojects";
inherit version;
src = fetchFromGitHub {
owner = "vivictorg";
repo = "vivictpp";
tag = "v${version}";
fetchSubmodules = true;
hash = "sha256-yzUgLZbqEzyJINWQUTC/j33XbjSXP1vpDlgiKv6Jx9Q=";
};
nativeBuildInputs = [
meson
cacert
git
];
buildCommand = ''
cp -r --no-preserve=mode $src $out
cd $out
meson subprojects download
find subprojects -type d -name .git -prune -execdir rm -r {} +
'';
outputHashMode = "recursive";
outputHash = "sha256-PtOb47QOffGje1U8Tle9AQon7ZCgMp/lITPAfM9/wr4=";
};
in
stdenv.mkDerivation {
pname = "vivictpp";
inherit version;
src = withSubprojects;
nativeBuildInputs = [
meson
cmake
ninja
pkg-config
python3
git
];
buildInputs = [
SDL2
libX11
SDL2_ttf
freetype
harfbuzz
ffmpeg
zlib
];
preConfigure = ''
patchShebangs .
'';
passthru.updateScript = writeShellScript "update-vivictpp" ''
${lib.getExe nix-update} vivictpp.src
${lib.getExe nix-update} vivictpp --version skip
'';
meta = {
description = "Easy to use tool for subjective comparison of the visual quality of different encodings of the same video source";
homepage = "https://github.com/vivictorg/vivictpp";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ tilpner ];
mainProgram = "vivictpp";
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "vivid";
version = "0.10.1";
src = fetchFromGitHub {
owner = "sharkdp";
repo = "vivid";
rev = "v${version}";
hash = "sha256-mxBBfezaMM2dfiXK/s+Htr+i5GJP1xVSXzkmYxEuwNs=";
};
cargoHash = "sha256-oP5/G/PSkwn4JruLQOGtM8M2uPt4Q88bU3kNmXUK4JE=";
meta = with lib; {
description = "Generator for LS_COLORS with support for multiple color themes";
homepage = "https://github.com/sharkdp/vivid";
license = with licenses; [
asl20 # or
mit
];
maintainers = [ maintainers.dtzWill ];
platforms = platforms.unix;
mainProgram = "vivid";
};
}

View File

@@ -0,0 +1,85 @@
{
lib,
stdenv,
fetchYarnDeps,
fetchFromGitHub,
yarnConfigHook,
npmHooks,
nodejs,
zip,
file,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vivify";
version = "0.8.2";
src = fetchFromGitHub {
owner = "jannis-baum";
repo = "Vivify";
tag = "v${finalAttrs.version}";
hash = "sha256-2lxf21T9y4GMFlk0+qbaJJ/twRffYEBoBXZXe/NRDQk=";
};
yarnOfflineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-mOgfwetiLMTDquw3f3+U1iEhBbvf0OC5lkNJHdrRSK0=";
};
installPhase = ''
runHook preInstall
yarn install
substituteInPlace node_modules/.bin/tsc \
--replace-fail '/usr/bin/env node' '${lib.getExe nodejs}'
substituteInPlace node_modules/.bin/webpack \
--replace-fail '/usr/bin/env node' '${lib.getExe nodejs}'
substituteInPlace node_modules/.bin/postject \
--replace-fail '/usr/bin/env node' '${lib.getExe nodejs}'
make linux
mkdir -p $out/bin
install -Dm755 ./build/linux/viv $out/bin/viv
install -Dm755 ./build/linux/vivify-server $out/bin/vivify-server
wrapProgram $out/bin/viv \
--prefix PATH : ${
lib.makeBinPath [
nodejs
file
]
}
'';
nativeBuildInputs = [
yarnConfigHook
npmHooks.npmInstallHook
zip
nodejs
file
];
# Stripping 'unneeded symbols' causes vivify-server executable to break
# (segmentation fault)
dontStrip = true;
meta = {
description = "Live Markdown viewer";
longDescription = ''
Vivify brings your files to life in the browser!
Vivify is primarily made to render Markdown and Jupyter Notebooks, but will also
serve as a directory browser and let you view code files with syntax highlighting.
'';
homepage = "https://github.com/jannis-baum/Vivify";
changelog = "https://github.com/jannis-baum/Vivify/releases/tag/v${finalAttrs.src.tag}";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ skohtv ];
platforms = lib.platforms.linux;
mainProgram = "viv";
};
})

View File

@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchFromGitHub,
ncurses,
}:
stdenv.mkDerivation {
pname = "viw";
version = "0-unstable-2017-10-29";
src = fetchFromGitHub {
owner = "lpan";
repo = "viw";
rev = "2cf317f6d82a6fa58f284074400297b6dc0f44c2";
sha256 = "0bnkh57v01zay6ggk0rbddaf75i48h8z06xsv33wfbjldclaljp1";
};
buildInputs = [ ncurses ];
makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
checkFlags = [
"test-command"
"test-buffer"
"test-state"
];
installPhase = ''
install -Dm 755 -t $out/bin viw
install -Dm 644 -t $out/share/doc/viw README.md
'';
meta = with lib; {
description = "VI Worsened, a fun and light clone of VI";
homepage = "https://github.com/lpan/viw";
license = licenses.gpl3Only;
maintainers = [ ];
mainProgram = "viw";
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
SDL,
}:
stdenv.mkDerivation {
pname = "vix";
version = "0.1.2";
src = fetchFromGitHub {
owner = "BatchDrake";
repo = "vix";
rev = "824b6755157a0f7430a0be0af454487d1492204d";
sha256 = "1y0a2sajkrsg36px21b8lgx1irf0pyj7hccyd6k806bm4zhgxw1z";
};
nativeBuildInputs = [ autoreconfHook ];
configureFlags = [
(lib.enableFeature (!stdenv.hostPlatform.isDarwin) "sdltest")
];
buildInputs = [ SDL ];
meta = with lib; {
description = "Visual Interface heXadecimal dump";
homepage = "http://actinid.org/vix/";
license = licenses.gpl3;
mainProgram = "vix";
# sys/io.h missing on other platforms
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,445 @@
From 7c6adc3fbb3624261b9c4d4e0702018697486e3b Mon Sep 17 00:00:00 2001
From: Andrea Pappacoda <andrea@pappacoda.it>
Date: Wed, 7 Aug 2024 00:11:15 +0200
Subject: [PATCH] build: add Meson support
I was trying to package Vixl, but the SCons build system does not
provide an install target, so I would've had to add it. It seemed too
difficult, so I directly created a quite basic Meson build script.
It provides most features of the SCons script, except for tests and
benchmarks, while adding a rich install target, with library soname
versioning and a pkg-config file.
Meson is a simple yet powerful build system, and you're interested in
using it as your main build system I could add tests and benchmarks :)
Origin: upstream, https://github.com/Linaro/vixl/pull/7
Last-Update: 2025-03-22
---
AUTHORS | 1 +
doc/aarch32/meson.build | 12 +++
doc/aarch64/meson.build | 21 +++++
doc/aarch64/topics/meson.build | 21 +++++
doc/meson.build | 21 +++++
meson.build | 158 +++++++++++++++++++++++++++++++++
meson_options.txt | 40 +++++++++
src/aarch32/meson.build | 30 +++++++
src/aarch64/meson.build | 47 ++++++++++
9 files changed, 351 insertions(+)
create mode 100644 doc/aarch32/meson.build
create mode 100644 doc/aarch64/meson.build
create mode 100644 doc/aarch64/topics/meson.build
create mode 100644 doc/meson.build
create mode 100644 meson.build
create mode 100644 meson_options.txt
create mode 100644 src/aarch32/meson.build
create mode 100644 src/aarch64/meson.build
diff --git a/AUTHORS b/AUTHORS
index 257ec9d3..13809d26 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -6,3 +6,4 @@
ARM Ltd. <*@arm.com>
Google Inc. <*@google.com>
Linaro <*@linaro.org>
+Andrea Pappacoda <andrea@pappacoda.it>
diff --git a/doc/aarch32/meson.build b/doc/aarch32/meson.build
new file mode 100644
index 00000000..e07fc46d
--- /dev/null
+++ b/doc/aarch32/meson.build
@@ -0,0 +1,12 @@
+# SPDX-FileCopyrightText: 2021 VIXL authors
+# SPDX-License-Identifier: BSD-3-Clause
+
+custom_target(
+ 'doc_aarch32',
+ command: [markdown, '@INPUT@'],
+ input: 'getting-started-aarch32.md',
+ output: '@BASENAME@.html',
+ capture: true,
+ install: true,
+ install_dir: doc_dir/'aarch32'
+)
diff --git a/doc/aarch64/meson.build b/doc/aarch64/meson.build
new file mode 100644
index 00000000..d25f8bfa
--- /dev/null
+++ b/doc/aarch64/meson.build
@@ -0,0 +1,21 @@
+# SPDX-FileCopyrightText: 2021 VIXL authors
+# SPDX-License-Identifier: BSD-3-Clause
+
+doc_aarch64_files = [
+ 'getting-started-aarch64',
+ 'supported-instructions-aarch64'
+]
+
+foreach file : doc_aarch64_files
+ custom_target(
+ 'doc_aarch64_' + file,
+ command: [markdown, '@INPUT@'],
+ input: file + '.md',
+ output: file + '.html',
+ capture: true,
+ install: true,
+ install_dir: doc_dir/'aarch64'
+ )
+endforeach
+
+subdir('topics')
diff --git a/doc/aarch64/topics/meson.build b/doc/aarch64/topics/meson.build
new file mode 100644
index 00000000..c6e8542b
--- /dev/null
+++ b/doc/aarch64/topics/meson.build
@@ -0,0 +1,21 @@
+# SPDX-FileCopyrightText: 2021 VIXL authors
+# SPDX-License-Identifier: BSD-3-Clause
+
+doc_aarch64_topics_files = [
+ 'extending-the-disassembler',
+ 'index',
+ 'state-trace',
+ 'ycm'
+]
+
+foreach file : doc_aarch64_topics_files
+ custom_target(
+ 'doc_aarch64_topics_' + file,
+ command: [markdown, '@INPUT@'],
+ input: file + '.md',
+ output: file + '.html',
+ capture: true,
+ install: true,
+ install_dir: doc_dir/'aarch64'/'topics'
+ )
+endforeach
diff --git a/doc/meson.build b/doc/meson.build
new file mode 100644
index 00000000..cbfe193d
--- /dev/null
+++ b/doc/meson.build
@@ -0,0 +1,21 @@
+# SPDX-FileCopyrightText: 2021 VIXL authors
+# SPDX-License-Identifier: BSD-3-Clause
+
+doc_dir = get_option('datadir')/'doc'/meson.project_name()
+
+custom_target(
+ 'doc',
+ command: [markdown, '@INPUT@'],
+ input: '..'/'README.md',
+ output: '@BASENAME@.html',
+ capture: true,
+ install: true,
+ install_dir: doc_dir
+)
+
+if build_a32 or build_t32
+ subdir('aarch32')
+endif
+if build_a64
+ subdir('aarch64')
+endif
diff --git a/meson.build b/meson.build
new file mode 100644
index 00000000..e0f8f79a
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,158 @@
+# SPDX-FileCopyrightText: 2021 VIXL authors
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(
+ 'vixl',
+ 'cpp',
+ default_options: [
+ 'cpp_std=c++17',
+ 'buildtype=release',
+ 'warning_level=3',
+ 'werror=true',
+ 'd_ndebug=if-release',
+ 'b_lto=true'
+ ],
+ license: 'BSD-3-Clause',
+ meson_version: '>=0.50.0',
+ version: '8.0.0',
+)
+
+deps = []
+extra_args = []
+
+if get_option('debug')
+ extra_args += '-DVIXL_DEBUG'
+endif
+
+hosts_32bit = ['arc', 'arm', 'c2000', 'csky', 'mips', 'ppc', 'riscv32', 'rx', 'sparc', 'wasm32', 'x86']
+can_target_aarch64 = not (host_machine.cpu_family() in hosts_32bit)
+
+build_a32 = false
+build_t32 = false
+build_a64 = false
+
+targets = get_option('target')
+if 'auto' in targets or 'all' in targets
+ if can_target_aarch64 or 'all' in targets
+ extra_args += [
+ '-DVIXL_INCLUDE_TARGET_A32',
+ '-DVIXL_INCLUDE_TARGET_T32',
+ '-DVIXL_INCLUDE_TARGET_A64'
+ ]
+ build_a32 = true
+ build_t32 = true
+ build_a64 = true
+ else
+ extra_args += [
+ '-DVIXL_INCLUDE_TARGET_A32',
+ '-DVIXL_INCLUDE_TARGET_T32'
+ ]
+ build_a32 = true
+ build_t32 = true
+ endif
+else
+ if 'a32' in targets or 'aarch32' in targets
+ extra_args += [
+ '-DVIXL_INCLUDE_TARGET_A32'
+ ]
+ build_a32 = true
+ endif
+ if 't32' in targets or 'aarch32' in targets
+ extra_args += [
+ '-DVIXL_INCLUDE_TARGET_T32'
+ ]
+ build_t32 = true
+ endif
+ if 'a64' in targets or 'aarch64' in targets
+ extra_args += [
+ '-DVIXL_INCLUDE_TARGET_A64'
+ ]
+ build_a64 = true
+ endif
+endif
+
+target_sources = []
+if build_a32 or build_t32
+ subdir('src'/'aarch32')
+endif
+if build_a64
+ subdir('src'/'aarch64')
+endif
+
+if get_option('simulator') == 'auto'
+ if not (host_machine.cpu_family() == 'aarch64') and can_target_aarch64
+ extra_args += '-DVIXL_INCLUDE_SIMULATOR_AARCH64'
+ deps += dependency('threads')
+ endif
+elif get_option('simulator') == 'aarch64'
+ if can_target_aarch64 and build_a64
+ extra_args += '-DVIXL_INCLUDE_SIMULATOR_AARCH64'
+ deps += dependency('threads')
+ else
+ error('Building an AArch64 simulator implies that VIXL targets AArch64. Set `target` to include `aarch64` or `a64`.')
+ endif
+endif
+
+allocator = get_option('code_buffer_allocator')
+if (allocator == 'auto' and host_machine.system() == 'linux') or allocator == 'mmap'
+ extra_args += '-DVIXL_CODE_BUFFER_MMAP'
+else
+ extra_args += '-DVIXL_CODE_BUFFER_MALLOC'
+endif
+
+if get_option('implicit_checks')
+ extra_args += '-DVIXL_ENABLE_IMPLICIT_CHECKS'
+endif
+
+markdown = find_program('markdown', required: get_option('doc'))
+if markdown.found()
+ subdir('doc')
+endif
+
+libvixl = library(
+ 'vixl',
+ 'src'/'code-buffer-vixl.cc',
+ 'src'/'compiler-intrinsics-vixl.cc',
+ 'src'/'cpu-features.cc',
+ 'src'/'utils-vixl.cc',
+ cpp_args: extra_args,
+ include_directories: 'src',
+ dependencies: deps,
+ install: true,
+ sources: target_sources,
+ version: meson.project_version()
+)
+
+vixl_dep = declare_dependency(
+ compile_args: extra_args,
+ include_directories: 'src',
+ link_with: libvixl
+)
+
+if meson.version().version_compare('>=0.54.0')
+ meson.override_dependency('vixl', vixl_dep)
+endif
+
+install_headers(
+ 'src'/'assembler-base-vixl.h',
+ 'src'/'code-buffer-vixl.h',
+ 'src'/'code-generation-scopes-vixl.h',
+ 'src'/'compiler-intrinsics-vixl.h',
+ 'src'/'cpu-features.h',
+ 'src'/'globals-vixl.h',
+ 'src'/'invalset-vixl.h',
+ 'src'/'macro-assembler-interface.h',
+ 'src'/'platform-vixl.h',
+ 'src'/'pool-manager-impl.h',
+ 'src'/'pool-manager.h',
+ 'src'/'utils-vixl.h',
+ subdir: 'vixl'
+)
+
+import('pkgconfig').generate(
+ libvixl,
+ description: 'ARMv8 Runtime Code Generation Library',
+ extra_cflags: extra_args,
+ subdirs: 'vixl',
+ url: 'https://github.com/Linaro/vixl'
+)
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 00000000..b7b5428d
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,40 @@
+# SPDX-FileCopyrightText: 2021 VIXL authors
+# SPDX-License-Identifier: BSD-3-Clause
+
+option(
+ 'target',
+ type: 'array',
+ choices: ['auto', 'all', 'aarch32', 'a32', 't32', 'aarch64', 'a64'],
+ value: ['auto'],
+ description: 'Target ISA/Architecture'
+)
+
+option(
+ 'simulator',
+ type: 'combo',
+ choices: ['auto', 'aarch64', 'none'],
+ value: 'auto',
+ description: 'Simulators to include'
+)
+
+option(
+ 'code_buffer_allocator',
+ type: 'combo',
+ choices: ['auto', 'malloc', 'mmap'],
+ value: 'auto',
+ description: 'Configure the allocation mechanism in the CodeBuffer'
+)
+
+option(
+ 'implicit_checks',
+ type: 'boolean',
+ value: false,
+ description: 'Allow signals raised from simulated invalid (e.g: out of bounds) memory reads to be handled by the host.'
+)
+
+option(
+ 'doc',
+ type: 'feature',
+ value: 'auto',
+ description: 'Convert documentation to HTML (requires the `markdown` program)'
+)
diff --git a/src/aarch32/meson.build b/src/aarch32/meson.build
new file mode 100644
index 00000000..0b22336f
--- /dev/null
+++ b/src/aarch32/meson.build
@@ -0,0 +1,30 @@
+# SPDX-FileCopyrightText: 2021 VIXL authors
+# SPDX-License-Identifier: BSD-3-Clause
+
+# Need to wrap the filenames in files() otherwise this array would be treated
+# as a simple array of strings, and when used in the master meson.build they
+# would refer to nonexistent paths. Wrapping in files() ensures that the
+# filenames will be always relative to this directory, even if referenced in
+# a different one. As a general rule, when I need to refer to a file from a
+# different build directory I should wrap it in files().
+
+target_sources += files(
+ 'assembler-aarch32.cc',
+ 'constants-aarch32.cc',
+ 'disasm-aarch32.cc',
+ 'instructions-aarch32.cc',
+ 'location-aarch32.cc',
+ 'macro-assembler-aarch32.cc',
+ 'operands-aarch32.cc'
+)
+
+install_headers(
+ 'assembler-aarch32.h',
+ 'constants-aarch32.h',
+ 'disasm-aarch32.h',
+ 'instructions-aarch32.h',
+ 'location-aarch32.h',
+ 'macro-assembler-aarch32.h',
+ 'operands-aarch32.h',
+ subdir: 'vixl'/'aarch32'
+)
diff --git a/src/aarch64/meson.build b/src/aarch64/meson.build
new file mode 100644
index 00000000..2898c8f6
--- /dev/null
+++ b/src/aarch64/meson.build
@@ -0,0 +1,47 @@
+# SPDX-FileCopyrightText: 2021 VIXL authors
+# SPDX-License-Identifier: BSD-3-Clause
+
+# Need to wrap the filenames in files() otherwise this array would be treated
+# as a simple array of strings, and when used in the master meson.build they
+# would refer to nonexistent paths. Wrapping in files() ensures that the
+# filenames will be always relative to this directory, even if referenced in
+# a different one. As a general rule, when I need to refer to a file from a
+# different build directory I should wrap it in files().
+
+target_sources += files(
+ 'assembler-aarch64.cc',
+ 'assembler-sve-aarch64.cc',
+ 'cpu-aarch64.cc',
+ 'cpu-features-auditor-aarch64.cc',
+ 'debugger-aarch64.cc',
+ 'decoder-aarch64.cc',
+ 'disasm-aarch64.cc',
+ 'instructions-aarch64.cc',
+ 'logic-aarch64.cc',
+ 'macro-assembler-aarch64.cc',
+ 'macro-assembler-sve-aarch64.cc',
+ 'operands-aarch64.cc',
+ 'pointer-auth-aarch64.cc',
+ 'registers-aarch64.cc',
+ 'simulator-aarch64.cc'
+)
+
+install_headers(
+ 'abi-aarch64.h',
+ 'assembler-aarch64.h',
+ 'constants-aarch64.h',
+ 'cpu-aarch64.h',
+ 'cpu-features-auditor-aarch64.h',
+ 'debugger-aarch64.h',
+ 'decoder-aarch64.h',
+ 'decoder-constants-aarch64.h',
+ 'decoder-visitor-map-aarch64.h',
+ 'disasm-aarch64.h',
+ 'instructions-aarch64.h',
+ 'macro-assembler-aarch64.h',
+ 'operands-aarch64.h',
+ 'registers-aarch64.h',
+ 'simulator-aarch64.h',
+ 'simulator-constants-aarch64.h',
+ subdir: 'vixl'/'aarch64'
+)

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
fetchpatch,
multimarkdown,
ninja,
pkg-config,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vixl";
version = "8.0.0";
src = fetchFromGitHub {
owner = "Linaro";
repo = "vixl";
tag = finalAttrs.version;
hash = "sha256-VW4Zoh4L8AXoL2kgthAtHkrTnoKpSa9MsBTEGROUrj4=";
};
# Add missing meson build support
# See: https://github.com/Linaro/vixl/pull/7
patches = [ ./add_missing_meson_support.patch ];
nativeBuildInputs = [
meson
multimarkdown
ninja
pkg-config
];
strictDeps = true;
meta = {
description = "AArch32 and AArch64 runtime code generation library";
homepage = "https://github.com/Linaro/vixl";
license = lib.licenses.bsd3;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ onny ];
};
})