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,13 @@
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -32,6 +32,6 @@ endforeach(TARGET)
foreach(TARGET ${ALL_TARGETS})
target_link_libraries(${TARGET} LASlib)
set_target_properties(${TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../bin64)
- set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME ${TARGET}64)
+ set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME ${TARGET})
install(TARGETS ${TARGET} RUNTIME DESTINATION bin)
endforeach(TARGET)
--
2.28.0

View File

@@ -0,0 +1,41 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
}:
stdenv.mkDerivation rec {
pname = "LAStools";
version = "2.0.3";
src = fetchFromGitHub {
owner = "LAStools";
repo = "LAStools";
rev = "v${version}";
sha256 = "sha256-IyZjM8YvIVB0VPNuEhmHHw7EuKw5RanB2qhCnBD1fRY=";
};
patches = [
./drop-64-suffix.patch # necessary to prevent '64' from being appended to the names of the executables
];
hardeningDisable = [
"format"
];
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isAarch64 "-Wno-narrowing";
nativeBuildInputs = [
cmake
];
meta = with lib; {
description = "Software for rapid LiDAR processing";
homepage = "http://lastools.org/";
license = licenses.unfree;
maintainers = with maintainers; [ stephenwithph ];
teams = [ teams.geospatial ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
buildGoModule,
fetchFromGitHub,
makeBinaryWrapper,
xdg-utils,
installShellFiles,
git,
}:
buildGoModule rec {
pname = "lab";
version = "0.25.1";
src = fetchFromGitHub {
owner = "zaquestion";
repo = "lab";
rev = "v${version}";
sha256 = "sha256-VCvjP/bSd/0ywvNWPsseXn/SPkdp+BsXc/jTvB11EOk=";
};
subPackages = [ "." ];
vendorHash = "sha256-ChysquNuUffcM3qaWUdqu3Av33gnKkdlotEoFKoedA0=";
doCheck = false;
nativeBuildInputs = [
makeBinaryWrapper
installShellFiles
];
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
];
postInstall = ''
# create shell completions before wrapProgram so that lab detects the right path for itself
installShellCompletion --cmd lab \
--bash <($out/bin/lab completion bash) \
--fish <($out/bin/lab completion fish) \
--zsh <($out/bin/lab completion zsh)
# make xdg-open overrideable at runtime
wrapProgram $out/bin/lab \
--suffix PATH ":" "${
lib.makeBinPath [
git
xdg-utils
]
}"
'';
meta = with lib; {
description = "Wraps Git or Hub, making it simple to clone, fork, and interact with repositories on GitLab";
homepage = "https://zaquestion.github.io/lab";
license = licenses.cc0;
maintainers = [ ];
mainProgram = "lab";
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
buildGoModule,
fetchFromGitHub,
installShellFiles,
}:
buildGoModule rec {
pname = "labctl";
version = "0.0.22-unstable-2024-05-10";
src = fetchFromGitHub {
owner = "labctl";
repo = "labctl";
rev = "1a8b11402def10819d36b9f7f44e82612ef22674";
hash = "sha256-px5jrfllo6teJaNrqIQVyqMwArCw625xSVM7V/xW/IA=";
};
nativeBuildInputs = [ installShellFiles ];
vendorHash = "sha256-Ycr/IZckIFysS9Goes58hhgh96UMRHjYWfWlQU23mXk=";
ldflags = [
"-X=github.com/labctl/labctl/app.version=${version}"
"-X=github.com/labctl/labctl/app.commit=${src.rev}"
"-X=github.com/labctl/labctl/app.date=1970-01-01T00:00:00Z"
];
postInstall = ''
local INSTALL="$out/bin/labctl"
installShellCompletion --cmd labctl \
--bash <(echo "complete -C $INSTALL labctl") \
--zsh <(echo "complete -o nospace -C $INSTALL labctl")
'';
meta = with lib; {
description = "Collection of helper tools for network engineers, while configuring and experimenting with their own network labs";
homepage = "https://labctl.net";
changelog = "https://github.com/labctl/labctl/releases";
license = licenses.asl20;
maintainers = [ ];
mainProgram = "labctl";
};
}

View File

@@ -0,0 +1,68 @@
{
lib,
python3Packages,
fetchFromGitHub,
fetchpatch,
qt5,
}:
python3Packages.buildPythonApplication rec {
pname = "labelImg";
version = "1.8.6";
format = "pyproject";
src = fetchFromGitHub {
owner = "HumanSignal";
repo = "labelImg";
tag = "v${version}";
hash = "sha256-RJxCtiDOePajlrjy9cpKETSKsWlH/Dlu1iFMj2aO4XU=";
};
nativeBuildInputs = [
qt5.wrapQtAppsHook
];
patches = [
# fixes https://github.com/heartexlabs/labelImg/issues/838
# can be removed after next upstream version bump
(fetchpatch {
url = "https://github.com/heartexlabs/labelImg/commit/5c38b6bcddce895d646e944e3cddcb5b43bf8b8b.patch";
hash = "sha256-BmbnJS95RBfoNQT0E6JDJ/IZfBa+tv1C69+RVOSFdRA=";
})
];
build-system = with python3Packages; [
setuptools
pyqt5
];
dependencies = with python3Packages; [
distutils
pyqt5
lxml
];
preBuild = ''
make qt5py3
'';
postInstall = ''
install -Dm644 libs/resources.py $out/${python3Packages.python.sitePackages}/libs
'';
dontWrapQtApps = true;
preFixup = ''
makeWrapperArgs+=("''${qtWrapperArgs[@]}")
'';
pythonImportsCheck = [ "labelImg" ];
meta = {
description = "Graphical image annotation tool and label object bounding boxes in images";
mainProgram = "labelImg";
homepage = "https://github.com/HumanSignal/labelImg";
license = lib.licenses.mit;
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.cmcdragonkai ];
};
}

View File

@@ -0,0 +1,82 @@
{
lib,
stdenv,
fetchzip,
cups,
autoPatchelfHook,
detox,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "labelife-label-printer";
version = "2.0.0";
arch =
{
aarch64-linux = "aarch64";
armv7l-linux = "armhf";
i686-linux = "i386";
x86_64-linux = "x86_64";
}
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
src = fetchzip {
url = "https://oss.qu-in.ltd/Labelife/Label_Printer_Driver_Linux.zip";
hash = "sha256-0ESZ0EqPh9Wz6ogQ6vTsAogujbn4zINtMh62sEpNRs4=";
};
nativeBuildInputs = [
autoPatchelfHook
detox
];
buildInputs = [ cups ];
unpackPhase = ''
runHook preUnpack
tar -xzf ${finalAttrs.src}/LabelPrinter-${finalAttrs.version}.001.tar.gz --strip-components=1
runHook postUnpack
'';
installPhase = ''
runHook preInstall
# Remove spaces from PPD filenames
detox ppds
# Install the CUPS filter with executable permissions
install -Dm755 ./${finalAttrs.arch}/rastertolabeltspl $out/lib/cups/filter/rastertolabeltspl
# Install all PPD files with read and write permissions for owner, and read for group and others
for ppd in ./ppds/*.ppd; do
install -Dm644 $ppd $out/share/cups/model/label/$(basename $ppd)
done
runHook postInstall
'';
meta = {
description = "CUPS driver for several Labelife-compatible thermal label printers";
downloadPage = "https://labelife.net/#/chart";
homepage = "https://labelife.net";
license = lib.licenses.unfree;
longDescription = ''
Supported printer models include:
- D520 & D520BT
- PM-241 & PM-241-BT
Brands using Labelife drivers include:
- Phomemo
- Itari
- Omezizy
- Aimo
'';
maintainers = with lib.maintainers; [ daniel-fahey ];
platforms = [
"aarch64-linux"
"armv7l-linux"
"i686-linux"
"x86_64-linux"
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})

View File

@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
python3Packages,
qt6,
makeDesktopItem,
copyDesktopItems,
}:
python3Packages.buildPythonApplication rec {
pname = "labelle";
version = "1.4.2";
pyproject = true;
src = fetchFromGitHub {
owner = "labelle-org";
repo = "labelle";
tag = "v${version}";
hash = "sha256-p+V6ihFDxhG7t4LiwTJVfJTk6rxJxGHqxTdplbLZR2Q=";
};
postPatch = ''
substituteInPlace pyproject.toml --replace-fail "hatch-vcs >=0.3.0,<0.4" "hatch-vcs >=0.3.0"
substituteInPlace pyproject.toml --replace-fail "Pillow>=8.1.2,<11" "Pillow>=8.1.2"
'';
buildInputs = [ qt6.qtwayland ];
nativeBuildInputs = [
qt6.wrapQtAppsHook
python3Packages.hatchling
python3Packages.hatch-fancy-pypi-readme
python3Packages.hatch-vcs
copyDesktopItems
];
propagatedBuildInputs = with python3Packages; [
darkdetect
pillow
platformdirs
pyqrcode
pyqt6
python-barcode
pyusb
rich
typer
];
desktopItems = [
(makeDesktopItem {
name = "labelle GUI";
exec = "labelle-gui";
desktopName = "labelle GUI";
})
];
meta = {
changelog = "https://github.com/labelle-org/labelle/releases/tag/${src.tag}";
description = "Print labels with LabelManager PnP from Dymo";
homepage = "https://github.com/labelle-org/labelle";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fabianrig ];
mainProgram = "labelle";
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
fetchFromGitHub,
gobject-introspection,
gtk3,
python3Packages,
wrapGAppsHook3,
unstableGitUpdater,
}:
python3Packages.buildPythonApplication {
pname = "labwc-gtktheme";
version = "0-unstable-2025-02-11";
pyproject = false;
src = fetchFromGitHub {
owner = "labwc";
repo = "labwc-gtktheme";
rev = "619fa316702a6c21a0d974d7cf3dde0b82f9f64b";
hash = "sha256-mhpN8H42dJwc+3os3I48mmAWQJQCrO4yjbuMPTmHbsI=";
};
nativeBuildInputs = [
gobject-introspection
wrapGAppsHook3
];
buildInputs = [
gtk3
];
pythonPath = with python3Packages; [
pygobject3
];
strictDeps = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp -a labwc-gtktheme.py $out/bin/labwc-gtktheme
runHook postInstall
'';
passthru.updateScript = unstableGitUpdater { };
meta = {
homepage = "https://github.com/labwc/labwc-gtktheme";
description = "Create a labwc theme based on current Gtk theme";
mainProgram = "labwc-gtktheme";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ romildo ];
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
glib,
pkg-config,
unstableGitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "labwc-menu-generator";
version = "0.2.0-unstable-2025-08-10";
src = fetchFromGitHub {
owner = "labwc";
repo = "labwc-menu-generator";
rev = "19ea2d27eaea50a8ef031bc1ea0c2ccfebb92e3c";
hash = "sha256-3ym3qauTnC7RFrni39YMSN7FYS5CvaIKb3aUXJ/Q1ko=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
];
buildInputs = [
glib
];
doCheck = true;
strictDeps = true;
passthru.updateScript = unstableGitUpdater { };
meta = {
homepage = "https://github.com/labwc/labwc-menu-generator";
description = "Menu generator for labwc";
mainProgram = "labwc-menu-generator";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ romildo ];
};
})

View File

@@ -0,0 +1,55 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
gtk3,
libxml2,
xkeyboard_config,
wrapGAppsHook3,
unstableGitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "labwc-tweaks-gtk";
version = "0-unstable-2025-06-14";
src = fetchFromGitHub {
owner = "labwc";
repo = "labwc-tweaks-gtk";
rev = "394a61ed5a546c59d4e632a5a7b184aecc79166a";
hash = "sha256-/iYe3FVIFo74XnyWeUHpWjmLCw8MsZBqXp55o0FjILA=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
wrapGAppsHook3
];
buildInputs = [
gtk3
libxml2
];
strictDeps = true;
postPatch = ''
substituteInPlace stack-lang.c --replace /usr/share/X11/xkb ${xkeyboard_config}/share/X11/xkb
substituteInPlace theme.c --replace /usr/share /run/current-system/sw/share
'';
passthru.updateScript = unstableGitUpdater { };
meta = {
homepage = "https://github.com/labwc/labwc-tweaks-gtk";
description = "Configuration gui app for labwc; gtk fork";
mainProgram = "labwc-tweaks-gtk";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ romildo ];
};
})

View File

@@ -0,0 +1,55 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
perl,
pkg-config,
qt6,
xkeyboard_config,
unstableGitUpdater,
}:
stdenv.mkDerivation {
pname = "labwc-tweaks";
version = "0-unstable-2024-04-27";
src = fetchFromGitHub {
owner = "labwc";
repo = "labwc-tweaks";
rev = "9007079640e0f38c1d69ac94899229354a5c67b2";
hash = "sha256-klKPHAhJ6fedFojXPfesjs1dG5NJhBZkzynhka5vD8M=";
};
nativeBuildInputs = [
cmake
perl
pkg-config
qt6.qttools
qt6.wrapQtAppsHook
];
buildInputs = [
qt6.qtbase
qt6.qtwayland
];
strictDeps = true;
postPatch = ''
substituteInPlace tweaks-qt/gen-layout-list --replace-fail /usr/share/X11/xkb ${xkeyboard_config}/share/X11/xkb
'';
passthru.updateScript = unstableGitUpdater { };
meta = {
homepage = "https://github.com/labwc/labwc-tweaks";
description = "Configuration gui app for labwc";
mainProgram = "labwc-tweaks";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
romildo
];
};
}

View File

@@ -0,0 +1,97 @@
{
lib,
cairo,
fetchFromGitHub,
gettext,
glib,
libdrm,
libinput,
libpng,
librsvg,
libsfdo,
libxcb,
libxkbcommon,
libxml2,
meson,
ninja,
pango,
pkg-config,
scdoc,
stdenv,
versionCheckHook,
wayland,
wayland-protocols,
wayland-scanner,
wlroots_0_19,
xcbutilwm,
xwayland,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "labwc";
version = "0.9.1";
src = fetchFromGitHub {
owner = "labwc";
repo = "labwc";
tag = finalAttrs.version;
hash = "sha256-8SKSITFwbagJhuTXVHpPmQoaooktIXc1CeO9ZOUuh1w=";
};
outputs = [
"out"
"doc"
"man"
];
nativeBuildInputs = [
gettext
meson
ninja
pkg-config
scdoc
wayland-scanner
];
buildInputs = [
cairo
glib
libdrm
libinput
libpng
librsvg
libsfdo
libxcb
libxkbcommon
libxml2
pango
wayland
wayland-protocols
wlroots_0_19
xcbutilwm
xwayland
];
nativeInstallCheckInputs = [ versionCheckHook ];
mesonFlags = [ (lib.mesonEnable "xwayland" true) ];
strictDeps = true;
doInstallCheck = true;
versionCheckProgramArg = "--version";
passthru = {
providedSessions = [ "labwc" ];
};
meta = {
homepage = "https://github.com/labwc/labwc";
description = "Wayland stacking compositor, inspired by Openbox";
changelog = "https://github.com/labwc/labwc/blob/master/NEWS.md";
license = with lib.licenses; [ gpl2Plus ];
mainProgram = "labwc";
maintainers = [ ];
inherit (wayland.meta) platforms;
};
})

View File

@@ -0,0 +1,38 @@
{
lib,
fetchurl,
appimageTools,
}:
let
pname = "labymod-launcher";
version = "2.1.12";
src = fetchurl {
name = "labymod-launcher";
url = "https://releases.r2.labymod.net/launcher/linux/x64/LabyMod%20Launcher-${version}.AppImage";
hash = "sha256-n0ipNxtmVSG/Do5UcFpWhGH+4SO3ZljsUXPW4hYzkZU=";
};
appimageContents = appimageTools.extract { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit pname version src;
extraInstallCommands = ''
install -Dm444 ${appimageContents}/labymodlauncher.desktop $out/share/applications/labymod-launcher.desktop
install -Dm444 ${appimageContents}/resources/icons/icon.png $out/share/pixmaps/labymod-launcher.png
substituteInPlace $out/share/applications/labymod-launcher.desktop \
--replace-fail 'Exec=labymodlauncher' 'Exec=labymod-launcher' \
--replace-fail 'Icon=labymodlauncher' 'Icon=labymod-launcher'
'';
meta = {
description = "Minecraft modification that enhances gameplay with features like in-game TeamSpeak integration, custom animations, and additional settings";
homepage = "https://www.labymod.net/";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ httprafa ];
mainProgram = "labymod-launcher";
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,139 @@
{
lib,
rustPlatform,
stdenv,
fetchFromGitHub,
pkg-config,
wrapGAppsHook4,
bashNonInteractive,
gdk-pixbuf,
gtk4,
libdrm,
ocl-icd,
vulkan-loader,
vulkan-tools,
coreutils,
systemdMinimal,
nix-update-script,
nixosTests,
hwdata,
fuse3,
autoAddDriverRunpath,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "lact";
version = "0.8.1";
src = fetchFromGitHub {
owner = "ilya-zlobintsev";
repo = "LACT";
tag = "v${finalAttrs.version}";
hash = "sha256-bgMQTiNeJR6zPTy/YpQ0oI1oGBzCf+VtBUn6pgADZAY=";
};
cargoHash = "sha256-VxyYnX6AW+AS4NOB1XZXi2Dyrf4rtJzKHXMYwgLY6pQ=";
nativeBuildInputs = [
pkg-config
wrapGAppsHook4
rustPlatform.bindgenHook
autoAddDriverRunpath
];
buildInputs = [
gdk-pixbuf
gtk4
libdrm
ocl-icd
vulkan-loader
vulkan-tools
hwdata
fuse3
];
# we do this here so that the binary is usable during integration tests
RUSTFLAGS = lib.optionalString stdenv.targetPlatform.isElf (
lib.concatStringsSep " " [
"-C link-arg=-Wl,-rpath,${
lib.makeLibraryPath [
vulkan-loader
libdrm
ocl-icd
]
}"
"-C link-arg=-Wl,--add-needed,${vulkan-loader}/lib/libvulkan.so"
"-C link-arg=-Wl,--add-needed,${libdrm}/lib/libdrm.so"
"-C link-arg=-Wl,--add-needed,${ocl-icd}/lib/libOpenCL.so"
]
);
postPatch = ''
substituteInPlace lact-daemon/src/system.rs \
--replace-fail 'Command::new("uname")' 'Command::new("${coreutils}/bin/uname")'
substituteInPlace lact-daemon/src/server/handler.rs \
--replace-fail 'run_command("journalctl",' 'run_command("${systemdMinimal}/bin/journalctl",'
substituteInPlace lact-daemon/src/server/handler.rs \
--replace-fail 'Command::new("sh")' 'Command::new("${bashNonInteractive}/bin/bash")'
substituteInPlace lact-daemon/src/server/vulkan.rs \
--replace-fail 'Command::new("vulkaninfo")' 'Command::new("${vulkan-tools}/bin/vulkaninfo")'
substituteInPlace lact-daemon/src/socket.rs \
--replace-fail 'run_command("chown"' 'run_command("${coreutils}/bin/chown"'
substituteInPlace res/lactd.service \
--replace-fail ExecStart={lact,$out/bin/lact}
# read() looks for the database in /usr/share so we use read_from_file() instead
substituteInPlace lact-daemon/src/server/handler.rs \
--replace-fail 'Database::read()' 'Database::read_from_file("${hwdata}/share/hwdata/pci.ids")'
'';
postInstall = ''
install -Dm444 res/lactd.service -t $out/lib/systemd/system
install -Dm444 res/io.github.ilya_zlobintsev.LACT.desktop -t $out/share/applications
install -Dm444 res/io.github.ilya_zlobintsev.LACT.svg -t $out/share/pixmaps
'';
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : "${lib.makeBinPath [ vulkan-tools ]}"
)
'';
postFixup = lib.optionalString stdenv.targetPlatform.isElf ''
patchelf $out/bin/.lact-wrapped \
--add-needed libvulkan.so \
--add-needed libdrm.so \
--add-needed libOpenCL.so \
--add-rpath ${
lib.makeLibraryPath [
vulkan-loader
libdrm
ocl-icd
]
}
'';
passthru.updateScript = nix-update-script { };
passthru.tests = {
inherit (nixosTests) lact;
};
meta = {
description = "Linux GPU Configuration Tool for AMD and NVIDIA";
homepage = "https://github.com/ilya-zlobintsev/LACT";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
figsoda
atemu
cything
johnrtitor
];
platforms = lib.platforms.linux;
mainProgram = "lact";
};
})

View File

@@ -0,0 +1,46 @@
{
lib,
fetchFromGitHub,
python3,
}:
python3.pkgs.buildPythonApplication rec {
pname = "lacus";
version = "1.14.0";
pyproject = true;
src = fetchFromGitHub {
owner = "ail-project";
repo = "lacus";
tag = "v${version}";
hash = "sha256-fk6NfBdUGGyOhVOJcGCRNldcw4JRHFr7p+tFuccYp7Y=";
};
pythonRelaxDeps = [
"gunicorn"
"psutil"
"redis"
];
build-system = with python3.pkgs; [
poetry-core
];
dependencies = with python3.pkgs; [
flask-restx
gunicorn
lacuscore
psutil
redis
rich
werkzeug
];
meta = with lib; {
description = "Capturing system using playwright";
homepage = "https://github.com/ail-project/lacus";
changelog = "https://github.com/ail-project/lacus/releases/tag/${src.tag}";
license = licenses.bsd3;
maintainers = with maintainers; [ fab ];
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
fetchFromGitHub,
rustPlatform,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "lacy";
version = "0.5.1";
src = fetchFromGitHub {
owner = "timothebot";
repo = "lacy";
tag = "v${finalAttrs.version}";
hash = "sha256-blQPIw8Ct+TGRuy+ybYr9rdlfOZdvAbhsB8sfwugS/w=";
};
passthru.updateScript = nix-update-script { };
cargoHash = "sha256-rNTRcQJptVi/ruCd56oHHN9n+Z3NhUNyrvXf27Sovtw=";
meta = {
description = "Fast magical cd alternative for lacy terminal navigators";
homepage = "https://github.com/timothebot/lacy";
platforms = lib.platforms.all;
license = lib.licenses.mit;
mainProgram = "lacy";
maintainers = with lib.maintainers; [ Srylax ];
};
})

View File

@@ -0,0 +1,165 @@
{
lib,
stdenv,
fetchFromGitHub,
unicode-emoji,
unicode-character-database,
unicode-idna,
publicsuffix-list,
cmake,
ninja,
pkg-config,
curl,
libavif,
angle, # libEGL
libjxl,
libpulseaudio,
libwebp,
libxcrypt,
openssl,
python3,
qt6Packages,
woff2,
fast-float,
ffmpeg,
fontconfig,
simdutf,
skia,
nixosTests,
unstableGitUpdater,
apple-sdk_14,
libtommath,
sdl3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "ladybird";
version = "0-unstable-2025-09-19";
src = fetchFromGitHub {
owner = "LadybirdBrowser";
repo = "ladybird";
rev = "5bd867f1dcb1f1b1c1397c4615ce7f091c8370aa";
hash = "sha256-/SPWjgHiWgrLThgAxBt9gZVELH+rrJWkfhxnuKEIxd8=";
};
postPatch = ''
sed -i '/iconutil/d' UI/CMakeLists.txt
# Don't set absolute paths in RPATH
substituteInPlace Meta/CMake/lagom_install_options.cmake \
--replace-fail "\''${CMAKE_INSTALL_BINDIR}" "bin" \
--replace-fail "\''${CMAKE_INSTALL_LIBDIR}" "lib"
'';
preConfigure = ''
# Setup caches for LibUnicode, LibTLS and LibGfx
# Note that the versions of the input data packages must match the
# expected version in the package's CMake.
mkdir -p build/Caches
cp -r ${unicode-character-database}/share/unicode build/Caches/UCD
chmod +w build/Caches/UCD
cp ${unicode-emoji}/share/unicode/emoji/emoji-test.txt build/Caches/UCD
cp ${unicode-idna}/share/unicode/idna/IdnaMappingTable.txt build/Caches/UCD
echo -n ${unicode-character-database.version} > build/Caches/UCD/version.txt
chmod -w build/Caches/UCD
mkdir build/Caches/PublicSuffix
cp ${publicsuffix-list}/share/publicsuffix/public_suffix_list.dat build/Caches/PublicSuffix
'';
nativeBuildInputs = [
cmake
ninja
pkg-config
python3
qt6Packages.wrapQtAppsHook
libtommath
];
buildInputs = [
curl
fast-float
ffmpeg
fontconfig
libavif
angle # libEGL
libjxl
libwebp
libxcrypt
openssl
qt6Packages.qtbase
qt6Packages.qtmultimedia
sdl3
simdutf
(skia.overrideAttrs (prev: {
gnFlags = prev.gnFlags ++ [
# https://github.com/LadybirdBrowser/ladybird/commit/af3d46dc06829dad65309306be5ea6fbc6a587ec
# https://github.com/LadybirdBrowser/ladybird/commit/4d7b7178f9d50fff97101ea18277ebc9b60e2c7c
# Remove when/if this gets upstreamed in skia.
"extra_cflags+=[\"-DSKCMS_API=[[gnu::visibility(\\\"default\\\")]]\"]"
];
}))
woff2
]
++ lib.optional stdenv.hostPlatform.isLinux [
libpulseaudio.dev
qt6Packages.qtwayland
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
apple-sdk_14
];
cmakeFlags = [
# Takes an enormous amount of resources, even with mold
(lib.cmakeBool "ENABLE_LTO_FOR_RELEASE" false)
# Disable network operations
"-DLADYBIRD_CACHE_DIR=Caches"
"-DENABLE_NETWORK_DOWNLOADS=OFF"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
"-DCMAKE_INSTALL_LIBEXECDIR=libexec"
];
# FIXME: Add an option to -DENABLE_QT=ON on macOS to use Qt rather than Cocoa for the GUI
# ld: [...]/OESVertexArrayObject.cpp.o: undefined reference to symbol 'glIsVertexArrayOES'
# ld: [...]/libGL.so.1: error adding symbols: DSO missing from command line
# https://github.com/LadybirdBrowser/ladybird/issues/371#issuecomment-2616415434
env.NIX_LDFLAGS = "-lGL -lfontconfig";
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/Applications $out/bin
mv $out/bundle/Ladybird.app $out/Applications
'';
# Only Ladybird and WebContent need wrapped, if Qt is enabled.
# On linux we end up wraping some non-Qt apps, like headless-browser.
dontWrapQtApps = stdenv.hostPlatform.isDarwin;
passthru.tests = {
nixosTest = nixosTests.ladybird;
};
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Browser using the SerenityOS LibWeb engine with a Qt or Cocoa GUI";
homepage = "https://ladybird.org";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [
fgaz
jk
];
platforms = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
mainProgram = "Ladybird";
broken = stdenv.hostPlatform.isDarwin;
};
})

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
boost,
immer,
zug,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lager";
version = "0.1.0";
src = fetchFromGitHub {
owner = "arximboldi";
repo = "lager";
rev = "v${finalAttrs.version}";
hash = "sha256-KTHrVV/186l4klwlcfDwFsKVoOVqWCUPzHnIbWuatbg=";
};
buildInputs = [
boost
immer
zug
];
nativeBuildInputs = [
cmake
];
cmakeFlags = [
"-Dlager_BUILD_EXAMPLES=OFF"
];
preConfigure = ''
rm BUILD
'';
meta = {
homepage = "https://github.com/arximboldi/lager";
description = "C++ library for value-oriented design using the unidirectional data-flow architecture Redux for C++";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ nek0 ];
};
})

View File

@@ -0,0 +1,84 @@
{
stdenv,
lib,
fetchFromGitHub,
nix-update-script,
cmake,
pkg-config,
fribidi,
harfbuzz,
libogg,
libwebp,
libX11,
mpg123,
opusfile,
SDL2,
the-foundation,
zip,
enableTUI ? false,
ncurses,
sealcurses,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lagrange";
version = "1.19.3";
src = fetchFromGitHub {
owner = "skyjake";
repo = "lagrange";
tag = "v${finalAttrs.version}";
hash = "sha256-GyX4LKe2SHRlHqRfh7yAkOyISo/N3rhpkARevUmuLbc=";
};
nativeBuildInputs = [
cmake
pkg-config
zip
];
buildInputs = [
the-foundation
fribidi
harfbuzz
libogg
libwebp
libX11
mpg123
opusfile
SDL2
]
++ lib.optionals enableTUI [
ncurses
sealcurses
];
cmakeFlags = [
(lib.cmakeBool "ENABLE_TUI" enableTUI)
(lib.cmakeFeature "CMAKE_INSTALL_DATAROOTDIR" "${placeholder "out"}/share")
];
installPhase =
lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/Applications
mv Lagrange.app $out/Applications
''
+ lib.optionalString (stdenv.hostPlatform.isDarwin && enableTUI) ''
# https://github.com/skyjake/lagrange/issues/610
make install
install -d $out/share/lagrange
ln -s $out/Applications/Lagrange.app/Contents/Resources/resources.lgr $out/share/lagrange/resources.lgr
'';
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Beautiful Gemini Client";
homepage = "https://gmi.skyjake.fi/lagrange/";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ sikmir ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,64 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
}:
buildGoModule (finalAttrs: {
pname = "lakectl";
version = "1.65.2";
src = fetchFromGitHub {
owner = "treeverse";
repo = "lakeFS";
tag = "v${finalAttrs.version}";
hash = "sha256-X7cjNa9PQFUuvCN8/i8p9kqsvHqc3IGFWL++Mj0KdfY=";
};
subPackages = [ "cmd/lakectl" ];
proxyVendor = true;
vendorHash = "sha256-JEAVAXWscq/u+ABvYThlWkpaVRQd2e2gtmYoLDjVx/s=";
ldflags = [
"-s"
"-w"
"-X github.com/treeverse/lakefs/pkg/version.Version=${finalAttrs.version}"
];
preBuild = ''
go generate ./pkg/api/apigen ./pkg/auth
'';
doInstallCheck = true;
# custom version test for install phase,
# versionCheckHook doesn't work as it expects only version to be returned as output, here it's a string with version
installCheckPhase = ''
runHook preInstallCheck
versionOutput=$($out/bin/lakectl --version)
echo "Version output: $versionOutput"
if [[ "$versionOutput" == *"lakectl version: ${finalAttrs.version}"* ]]; then
echo "Version check passed!"
else
echo "Version check failed!"
echo "Expected version: 'lakectl version: ${finalAttrs.version}'"
echo "Got version: $versionOutput"
exit 1
fi
runHook postInstallCheck
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Command line tool for LakeFS";
homepage = "https://docs.lakefs.io/reference/cli.html";
changelog = "https://github.com/treeverse/lakeFS/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ daspk04 ];
mainProgram = "lakectl";
};
})

View File

@@ -0,0 +1,34 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
}:
stdenvNoCC.mkDerivation {
pname = "lalezar-fonts";
version = "unstable-2017-02-28";
src = fetchFromGitHub {
owner = "BornaIz";
repo = "Lalezar";
rev = "238701c4241f207e92515f845a199be9131c1109";
hash = "sha256-95z58ABTx53aREXRpj9xgclX9kuGiQiiKBwqwnF6f8g=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts/lalezar-fonts
cp -v $( find . -name '*.ttf') $out/share/fonts/lalezar-fonts
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/BornaIz/Lalezar";
description = "Multi-script display typeface for popular culture";
license = licenses.ofl;
platforms = platforms.all;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
rustPlatform,
fetchFromGitHub,
replaceVars,
stdenv,
}:
rustPlatform.buildRustPackage rec {
pname = "lalrpop";
version = "0.22.2";
src = fetchFromGitHub {
owner = "lalrpop";
repo = "lalrpop";
rev = version;
hash = "sha256-/mk4sTgwxBrB+LEBbWv4OQEEh2P2KVSh6v5ry9/Et4s=";
};
cargoHash = "sha256-3Lm25X2QQQ4+3Spe6Nz5PkIvFcgwHQ+hqAdjsFesgro=";
patches = [
(replaceVars ./use-correct-binary-path-in-tests.patch {
target_triple = stdenv.hostPlatform.rust.rustcTarget;
})
];
buildAndTestSubdir = "lalrpop";
# there are some tests in lalrpop-test and some in lalrpop
checkPhase = ''
buildAndTestSubdir=lalrpop-test cargoCheckHook
cargoCheckHook
'';
meta = with lib; {
description = "LR(1) parser generator for Rust";
homepage = "https://github.com/lalrpop/lalrpop";
changelog = "https://github.com/lalrpop/lalrpop/blob/${src.rev}/RELEASES.md";
license = with licenses; [
asl20 # or
mit
];
mainProgram = "lalrpop";
maintainers = with maintainers; [ chayleaf ];
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/lalrpop-test/src/lib.rs b/lalrpop-test/src/lib.rs
index cb4f2b0..725b0d4 100644
--- a/lalrpop-test/src/lib.rs
+++ b/lalrpop-test/src/lib.rs
@@ -1089,7 +1089,7 @@ fn verify_lalrpop_generates_itself() {
// Don't remove the .rs file that already exist
fs::copy(&grammar_file, &copied_grammar_file).expect("no grammar file found");
- assert!(Command::new("../target/debug/lalrpop")
+ assert!(Command::new("../target/@target_triple@/release/lalrpop")
.args([
"--force",
"--no-whitespace",

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
SDL2,
}:
stdenv.mkDerivation rec {
pname = "lambda-delta";
version = "0.98.3";
src = fetchFromGitHub {
owner = "dseagrav";
repo = "ld";
rev = version;
sha256 = "02m43fj9dzc1i1jl01qwnhjiq1rh03jw1xq59sx2h3bhn7dk941x";
};
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [ SDL2 ];
env = lib.optionalAttrs stdenv.cc.isClang {
NIX_CFLAGS_COMPILE = "-std=c89";
};
configureFlags = [ "--without-SDL1" ];
meta = with lib; {
description = "LMI (Lambda Lisp Machine) emulator";
homepage = "https://github.com/dseagrav/ld";
license = licenses.gpl2;
maintainers = with maintainers; [ siraben ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,83 @@
# Lambda Lisp has several backends, here we are using
# the blc one. Ideally, this should be made into several
# packages such as lambda-lisp-blc, lambda-lisp-lazyk,
# lambda-lisp-clamb, etc.
{
lib,
gccStdenv,
fetchFromGitHub,
fetchurl,
runtimeShell,
}:
let
stdenv = gccStdenv;
s = import ./sources.nix { inherit fetchurl fetchFromGitHub; };
in
stdenv.mkDerivation {
pname = "lambda-lisp-blc";
version = s.lambdaLispVersion;
src = s.src;
flatSrc = s.flatSrc;
blcSrc = s.blcSrc;
installPhase = ''
runHook preInstall
mkdir -p ./build
cp $blcSrc ./build/Blc.S
cp $flatSrc ./build/flat.lds
cd build;
cat Blc.S | sed -e 's/#define.*TERMS.*//' > Blc.ext.S;
$CC -c -DTERMS=50000000 -o Blc.o Blc.ext.S
ld.bfd -o Blc Blc.o -T flat.lds
cd ..;
mv build/Blc ./bin
install -D -t $out/bin bin/Blc
install -D -t $out/lib bin/lambdalisp.blc
cd build;
$CC ../tools/asc2bin.c -O2 -o asc2bin;
cd ..;
mv build/asc2bin ./bin;
chmod 755 ./bin/asc2bin;
install -D -t $out/bin bin/asc2bin
echo -e "#!${runtimeShell}\n( cat $out/lib/lambdalisp.blc | $out/bin/asc2bin; cat ) | $out/bin/Blc" > lambda-lisp-blc
chmod +x lambda-lisp-blc
install -D -t $out/bin lambda-lisp-blc
runHook postInstall
'';
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
a=$(echo "(* (+ 1 2 3 4 5 6 7 8 9 10) 12020569 (- 2 5))" | $out/bin/lambda-lisp-blc | tr -d "> ");
test $a == -1983393885
runHook postInstallCheck
'';
meta = with lib; {
description = "Lisp interpreter written in untyped lambda calculus";
homepage = "https://github.com/woodrush/lambdalisp";
longDescription = ''
LambdaLisp is a Lisp interpreter written as a closed untyped lambda calculus term.
It is written as a lambda calculus term LambdaLisp = λx. ... which takes a string
x as an input and returns a string as an output. The input x is the Lisp program
and the user's standard input, and the output is the standard output. Characters
are encoded into lambda term representations of natural numbers using the Church
encoding, and strings are encoded as a list of characters with lists expressed as
lambdas in the Mogensen-Scott encoding, so the entire computation process solely
consists of the beta-reduction of lambda terms, without introducing any
non-lambda-type object.
'';
license = licenses.mit;
maintainers = with maintainers; [ cafkafk ];
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,51 @@
let
lambdaLispVersion = "2022-08-18";
blcVersion = "2";
# Archive of "https://justine.lol/lambda/";
justineLolArchive = "https://web.archive.org/web/20230614065521if_/https://justine.lol/lambda/";
in
{ fetchFromGitHub, fetchurl }:
{
inherit blcVersion;
inherit lambdaLispVersion;
src = fetchFromGitHub {
owner = "woodrush";
repo = "lambdalisp";
rev = "2119cffed1ab2005f08ab3cfca92028270f08725";
hash = "sha256-ml2xQ8s8sux+6GwTw8mID3PEOcH6hn8tyc/UI5tFaO0=";
};
uniCSrc = fetchFromGitHub {
owner = "tromp";
repo = "tromp.github.io";
rev = "b4de12e566c1fb0fa3f3babe89bac885f4c966a4";
hash = "sha256-JmbqQp2kkkkkkkkSWQmG3uBxdgyIu4r2Ch8bBGyQ4H4=";
};
# needed later
clambSrc = fetchFromGitHub {
owner = "irori";
repo = "clamb";
rev = "44c1208697f394e22857195be5ea73bfdd48ebd1";
hash = "sha256-1lGg2NBoxAKDCSnnPn19r/hwBC5paAKUnlcsUv3dpNY=";
};
# needed later
lazykSrc = fetchFromGitHub {
owner = "irori";
repo = "lazyk";
rev = "5edb0b834d0af5f7413c484eb3795d47ec2e3894";
hash = "sha256-1lGg2NBoxAKDCSnnPn19r/hwBC5paAKUnlcsUv3dpNY=";
};
blcSrc = fetchurl {
url = "${justineLolArchive}Blc.S?v=${blcVersion}";
hash = "sha256-qt7vDtn9WvDoBaLESCyyscA0u74914e8ZKhLiUAN52A=";
};
flatSrc = fetchurl {
url = "${justineLolArchive}flat.lds";
hash = "sha256-HxX+10rV86zPv+UtF+n72obtz3DosWLMIab+uskxIjA=";
};
}

View File

@@ -0,0 +1,30 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
stdenv.mkDerivation {
pname = "lambda-mod-zsh-theme-unstable";
version = "2020-10-03";
src = fetchFromGitHub {
owner = "halfo";
repo = "lambda-mod-zsh-theme";
rev = "78347ea9709935f265e558b6345919d12323fbff";
sha256 = "0fvxnvgbcvwii7ghvpj5l43frllq71wwjvfg7cqfmic727z001dh";
};
strictDeps = true;
installPhase = ''
install -Dm0644 lambda-mod.zsh-theme $out/share/zsh/themes/lambda-mod.zsh-theme
'';
meta = with lib; {
description = "ZSH theme optimized for people who use Git & Unicode-compatible fonts and terminals";
homepage = "https://github.com/halfo/lambda-mod-zsh-theme/";
license = licenses.mit;
platforms = platforms.all;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,71 @@
{
lib,
stdenv,
fetchurl,
nasmSupport ? true,
nasm, # Assembly optimizations
cpmlSupport ? true, # Compaq's fast math library
#, efenceSupport ? false, libefence # Use ElectricFence for malloc debugging
sndfileFileIOSupport ? false,
libsndfile, # Use libsndfile, instead of lame's internal routines
analyzerHooksSupport ? true, # Use analyzer hooks
decoderSupport ? true, # mpg123 decoder
frontendSupport ? true, # Build the lame executable
#, mp3xSupport ? false, gtk1 # Build GTK frame analyzer
mp3rtpSupport ? false, # Build mp3rtp
debugSupport ? false, # Debugging (disables optimizations)
}:
stdenv.mkDerivation rec {
pname = "lame";
version = "3.100";
src = fetchurl {
url = "mirror://sourceforge/lame/${pname}-${version}.tar.gz";
sha256 = "07nsn5sy3a8xbmw1bidxnsj5fj6kg9ai04icmqw40ybkp353dznx";
};
outputs = [
"out"
"lib"
"doc"
]; # a small single header
outputMan = "out";
nativeBuildInputs = [ ] ++ lib.optional nasmSupport nasm;
buildInputs =
[ ]
#++ optional efenceSupport libefence
#++ optional mp3xSupport gtk1
++ lib.optional sndfileFileIOSupport libsndfile;
configureFlags = [
(lib.enableFeature nasmSupport "nasm")
(lib.enableFeature cpmlSupport "cpml")
#(enableFeature efenceSupport "efence")
(if sndfileFileIOSupport then "--with-fileio=sndfile" else "--with-fileio=lame")
(lib.enableFeature analyzerHooksSupport "analyzer-hooks")
(lib.enableFeature decoderSupport "decoder")
(lib.enableFeature frontendSupport "frontend")
(lib.enableFeature frontendSupport "dynamic-frontends")
#(enableFeature mp3xSupport "mp3x")
(lib.enableFeature mp3rtpSupport "mp3rtp")
(lib.optionalString debugSupport "--enable-debug=alot")
];
preConfigure = ''
# Prevent a build failure for 3.100 due to using outdated symbol list
# https://hydrogenaud.io/index.php/topic,114777.msg946373.html#msg946373
sed -i '/lame_init_old/d' include/libmp3lame.sym
'';
meta = with lib; {
description = "High quality MPEG Audio Layer III (MP3) encoder";
homepage = "http://lame.sourceforge.net";
license = licenses.lgpl2;
maintainers = with maintainers; [ codyopel ];
platforms = platforms.all;
mainProgram = "lame";
};
}

View File

@@ -0,0 +1,85 @@
{
stdenv,
lib,
fetchurl,
fetchFromGitHub,
cmake,
capnproto,
sqlite,
boost,
zlib,
rapidjson,
pandoc,
}:
let
js.vue = fetchurl {
url = "https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.12/vue.min.js";
sha256 = "1hm5kci2g6n5ikrvp1kpkkdzimjgylv1xicg2vnkbvd9rb56qa99";
};
js.ansi_up = fetchurl {
url = "https://raw.githubusercontent.com/drudru/ansi_up/v4.0.4/ansi_up.js";
sha256 = "1dx8wn38ds8d01kkih26fx1yrisg3kpz61qynjr4zil03ap0hrlr";
};
js.Chart = fetchurl {
url = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js";
hash = "sha256-+8RZJua0aEWg+QVVKg4LEzEEm/8RFez5Tb4JBNiV5xA=";
};
in
stdenv.mkDerivation rec {
pname = "laminar";
version = "1.3";
outputs = [
"out"
"doc"
];
src = fetchFromGitHub {
owner = "ohwgiles";
repo = "laminar";
rev = version;
hash = "sha256-eo5WzvmjBEe0LAfZdQ/U0XepEE2kdWKKiyE4HOi3RXk=";
};
patches = [ ./patches/no-network.patch ];
# We need both binary from "capnproto" and library files.
nativeBuildInputs = [
cmake
pandoc
capnproto
];
buildInputs = [
capnproto
sqlite
boost
zlib
rapidjson
];
cmakeFlags = [ "-DLAMINAR_VERSION=${version}" ];
preBuild = ''
mkdir -p js css
cp ${js.vue} js/vue.min.js
cp ${js.ansi_up} js/ansi_up.js
cp ${js.Chart} js/Chart.min.js
'';
postInstall = ''
mv $out/usr/share/* $out/share/
rmdir $out/usr/share $out/usr
mkdir -p $out/share/doc/laminar
pandoc -s ../UserManual.md -o $out/share/doc/laminar/UserManual.html
rm -rf $out/lib # remove upstream systemd units
rm -rf $out/etc # remove upstream config file
'';
meta = with lib; {
description = "Lightweight and modular continuous integration service";
homepage = "https://laminar.ohwg.net";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [
kaction
maralorn
];
};
}

View File

@@ -0,0 +1,39 @@
Build system that downloads stuff from network is bad. Build system that
does so unconditionally is twice as bad.
Required files are downloaded as separate fixed-output derivations and
put into correct location before build phase starts.
--- laminar-1.3/CMakeLists.txt
+++ laminar-1.3-new/CMakeLists.txt
@@ -82,13 +82,6 @@
COMMAND sh -c '( echo -n "\\#define INDEX_HTML_UNCOMPRESSED_SIZE " && wc -c < "${CMAKE_SOURCE_DIR}/src/resources/index.html" ) > index_html_size.h'
DEPENDS src/resources/index.html)
-# Download 3rd-party frontend JS libs...
-file(DOWNLOAD https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.12/vue.min.js
- js/vue.min.js EXPECTED_MD5 fb192338844efe86ec759a40152fcb8e)
-file(DOWNLOAD https://raw.githubusercontent.com/drudru/ansi_up/v4.0.4/ansi_up.js
- js/ansi_up.js EXPECTED_MD5 b31968e1a8fed0fa82305e978161f7f5)
-file(DOWNLOAD https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js
- js/Chart.min.js EXPECTED_MD5 7dd5ea7d2cf22a1c42b43c40093d2669)
# ...and compile them
generate_compressed_bins(${CMAKE_BINARY_DIR} js/vue.min.js
js/ansi_up.js js/Chart.min.js)
@@ -139,12 +132,12 @@
target_link_libraries(laminar-tests ${GTEST_LIBRARIES} capnp-rpc capnp kj-http kj-async kj pthread sqlite3 z)
endif()
-set(SYSTEMD_UNITDIR /lib/systemd/system CACHE PATH "Path to systemd unit files")
-set(BASH_COMPLETIONS_DIR /usr/share/bash-completion/completions CACHE PATH "Path to bash completions directory")
-set(ZSH_COMPLETIONS_DIR /usr/share/zsh/site-functions CACHE PATH "Path to zsh completions directory")
+set(SYSTEMD_UNITDIR lib/systemd/system CACHE PATH "Path to systemd unit files")
+set(BASH_COMPLETIONS_DIR usr/share/bash-completion/completions CACHE PATH "Path to bash completions directory")
+set(ZSH_COMPLETIONS_DIR usr/share/zsh/site-functions CACHE PATH "Path to zsh completions directory")
install(TARGETS laminard RUNTIME DESTINATION sbin)
install(TARGETS laminarc RUNTIME DESTINATION bin)
-install(FILES etc/laminar.conf DESTINATION /etc)
+install(FILES etc/laminar.conf DESTINATION etc)
install(FILES etc/laminarc-completion.bash DESTINATION ${BASH_COMPLETIONS_DIR} RENAME laminarc)
install(FILES etc/laminarc-completion.zsh DESTINATION ${ZSH_COMPLETIONS_DIR} RENAME _laminarc)

View File

@@ -0,0 +1,13 @@
{
lammps,
mpi,
lowPrio,
}:
lowPrio (
lammps.override {
extraBuildInputs = [
mpi
];
}
)

View File

@@ -0,0 +1,125 @@
{
lib,
stdenv,
fetchFromGitHub,
libpng,
gzip,
fftw,
blas,
lapack,
python3,
cmake,
autoAddDriverRunpath,
pkg-config,
# Available list of packages can be found near here:
#
# - https://github.com/lammps/lammps/blob/develop/cmake/CMakeLists.txt#L222
# - https://docs.lammps.org/Build_extras.html
packages ? {
ASPHERE = true;
BODY = true;
CLASS2 = true;
COLLOID = true;
COMPRESS = true;
CORESHELL = true;
DIPOLE = true;
GRANULAR = true;
KSPACE = true;
MANYBODY = true;
MC = true;
MISC = true;
MOLECULE = true;
OPT = true;
PERI = true;
QEQ = true;
REPLICA = true;
RIGID = true;
SHOCK = true;
ML-SNAP = true;
SRD = true;
REAXFF = true;
PYTHON = true;
},
# Extra cmakeFlags to add as "-D${attr}=${value}"
extraCmakeFlags ? { },
# Extra `buildInputs` - meant for packages that require more inputs
extraBuildInputs ? [ ],
}:
stdenv.mkDerivation (finalAttrs: {
# LAMMPS has weird versioning convention. Updates should go smoothly with:
# nix-update --commit lammps --version-regex 'stable_(.*)'
version = "22Jul2025_update1";
pname = "lammps";
src = fetchFromGitHub {
owner = "lammps";
repo = "lammps";
rev = "stable_${finalAttrs.version}";
hash = "sha256-w0SQjckqtvTKDP5zRX9QJGd5vT9HamsRwwCmEMqkZEM=";
};
preConfigure = ''
cd cmake
'';
nativeBuildInputs = [
cmake
pkg-config
# Although not always needed, it is needed if cmakeFlags include
# GPU_API=cuda, and it doesn't users that don't enable the GPU package.
autoAddDriverRunpath
];
passthru = {
inherit packages;
inherit extraCmakeFlags;
inherit extraBuildInputs;
};
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" true)
]
++ (lib.mapAttrsToList (n: v: lib.cmakeBool "PKG_${n}" v) packages)
++ (lib.mapAttrsToList (n: v: "-D${n}=${v}") extraCmakeFlags);
buildInputs = [
fftw
libpng
blas
lapack
gzip
]
++ lib.optionals packages.PYTHON [ python3 ]
++ extraBuildInputs;
postInstall = ''
# For backwards compatibility
ln -s $out/bin/lmp $out/bin/lmp_serial
# Install vim and neovim plugin
install -Dm644 ../../tools/vim/lammps.vim $out/share/vim-plugins/lammps/syntax/lammps.vim
install -Dm644 ../../tools/vim/filetype.vim $out/share/vim-plugins/lammps/ftdetect/lammps.vim
mkdir -p $out/share/nvim
ln -s $out/share/vim-plugins/lammps $out/share/nvim/site
'';
meta = {
description = "Classical Molecular Dynamics simulation code";
longDescription = ''
LAMMPS is a classical molecular dynamics simulation code designed to
run efficiently on parallel computers. It was developed at Sandia
National Laboratories, a US Department of Energy facility, with
funding from the DOE. It is an open-source code, distributed freely
under the terms of the GNU Public License (GPL).
'';
homepage = "https://www.lammps.org";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
# compiling lammps with 64 bit support blas and lapack might cause runtime
# segfaults. In anycase both blas and lapack should have the same #bits
# support.
broken = (blas.isILP64 && lapack.isILP64);
maintainers = with lib.maintainers; [
costrouc
doronbehar
];
mainProgram = "lmp";
};
})

View File

@@ -0,0 +1,66 @@
{
stdenv,
rustPlatform,
fetchFromGitHub,
lib,
glib,
gtk4,
libadwaita,
libX11,
libXtst,
pkg-config,
wrapGAppsHook4,
}:
rustPlatform.buildRustPackage rec {
pname = "lan-mouse";
version = "0.10.0";
src = fetchFromGitHub {
owner = "feschber";
repo = "lan-mouse";
rev = "v${version}";
hash = "sha256-ofiNgJbmf35pfRvZB3ZmMkCJuM7yYgNL+Dd5mZZqyNk=";
};
# lan-mouse uses `git` to determine the version at build time and
# has Cargo set the `GIT_DESCRIBE` environment variable. To improve
# build reproducibility, we define the variable based on the package
# version instead.
prePatch = ''
rm build.rs
'';
env = {
GIT_DESCRIBE = "${version}-nixpkgs";
};
nativeBuildInputs = [
pkg-config
wrapGAppsHook4
];
buildInputs = [
glib
gtk4
libadwaita
libX11
libXtst
];
cargoHash = "sha256-+UXRBYfbkb114mwDGj36oG5ZT3TQtcEzsbyZvtWTMxM=";
postInstall = ''
install -Dm444 de.feschber.LanMouse.desktop -t $out/share/applications
install -Dm444 lan-mouse-gtk/resources/de.feschber.LanMouse.svg -t $out/share/icons/hicolor/scalable/apps
'';
meta = {
description = "Software KVM switch for sharing a mouse and keyboard with multiple hosts through the network";
homepage = "https://github.com/feschber/lan-mouse";
changelog = "https://github.com/feschber/lan-mouse/releases/tag/v${version}";
license = lib.licenses.gpl3Only;
mainProgram = "lan-mouse";
maintainers = with lib.maintainers; [ pedrohlc ];
platforms = lib.platforms.unix ++ lib.platforms.windows;
};
}

View File

@@ -0,0 +1,110 @@
{
stdenv,
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
which,
}:
buildGoModule (finalAttrs: {
pname = "landrun";
version = "0.1.15";
src = fetchFromGitHub {
owner = "Zouuup";
repo = "landrun";
tag = "v${finalAttrs.version}";
hash = "sha256-yfK7Q3FKXp5pXVBNV0w/vN0xuoaTxWCq19ziBQnLapg=";
};
# Test script requires lots of patching for build sandbox.
# Networking tests are disabled, since they actually access the internet.
# Two tests that specifically target /usr/bin are disabled.
postPatch = ''
patchShebangs --build test.sh
substituteInPlace test.sh \
--replace-fail 'Basic access tests' '# Basic access tests' \
--replace-fail '--rox /usr --ro /lib --ro /lib64' '--rox ${builtins.storeDir}' \
--replace-fail '--rox /usr --ro /lib,/lib64,' '--rox ${builtins.storeDir} --ro ' \
--replace-fail '--rox /usr --ro /etc -- whoami' '--help' \
--replace-fail '--rox /usr' '--rox ${builtins.storeDir}' \
--replace-fail '--ro /usr/bin' "" \
--replace-fail '#!/bin/bash' '#!${stdenv.shell}' \
--replace-fail '/usr/bin/true' '$(which true)' \
--replace-fail 'ls /usr | grep bin' '$(which ls) / | $(which grep) build' \
--replace-fail 'ls /usr' '$(which ls) /build' \
--replace-fail 'cat ' '$(which cat) ' \
--replace-fail 'grep ' '$(which grep) ' \
--replace-fail 'ls -la /usr/bin' 'ls -la /build' \
--replace-fail 'run_test "TCP connection' 'false && run_test "TCP' \
--replace-fail 'run_test "Unrestricted network access"' 'false && run_test ""' \
--replace-fail 'run_test "Restricted network access"' 'false && run_test ""' \
--replace-fail 'run_test "Execute from read-only paths regression test' 'false && run_test "' \
--replace-fail 'run_test "Root path' 'false && run_test "Root path'
'';
vendorHash = "sha256-Bs5b5w0mQj1MyT2ctJ7V38Dy60moB36+T8TFH38FA08=";
doInstallCheck = true;
nativeInstallCheckInputs = [
versionCheckHook
which
];
postInstallCheck = ''
# only check functionality if the builder supports it (Linux 5.13+)
set +e
$out/bin/landrun --best-effort --rox ${builtins.storeDir} sh -c 'exit'
[[ $? != 0 ]] && set -e && return
set -e
# only run upstream tests if the builder supports all features (Linux 6.7+)
set +e
$out/bin/landrun --rox ${builtins.storeDir} sh -c 'exit'
[[ $? == 0 ]] && set -e && export PATH=$out/bin:"$PATH" && ./test.sh --use-system
set -e
pushd $(mktemp -d)
# check directory read/write restrictions work
mkdir dir1
echo content > dir1/file1
set +e
$out/bin/landrun --best-effort --rox ${builtins.storeDir} sh -c '< dir1/file1'
[[ $? == 0 ]] && die
set -e
$out/bin/landrun --best-effort --rox ${builtins.storeDir} --ro ./dir1 --env PATH sh -c 'cat dir1/file1' \
| grep content > /dev/null
set +e
$out/bin/landrun --best-effort --rox ${builtins.storeDir} --ro ./dir1 sh -c 'echo x > dir1/file1'
[[ $? == 0 ]] && die
set -e
cat dir1/file1 | grep content > /dev/null
$out/bin/landrun --best-effort --rox ${builtins.storeDir} --rw ./dir1 sh -c 'echo x > dir1/file1'
cat dir1/file1 | grep x > /dev/null
popd
'';
meta = {
description = "Lightweight, secure sandbox for running Linux processes using Landlock LSM";
mainProgram = "landrun";
longDescription = ''
Landrun is designed to make it practical to sandbox any command with fine-grained filesystem
and network access controls, without root/containers/SELinux/AppArmor.
It's lightweight, auditable, and wraps Landlock v5 features.
Linux 5.13+ is required for file access restrictions, Linux 6.7+ for TCP restrictions.
'';
homepage = "https://github.com/Zouuup/landrun";
changelog = "https://github.com/Zouuup/landrun/releases/tag/{finalAttrs.src.tag}";
license = lib.licenses.gpl2Only;
maintainers = [ lib.maintainers.fliegendewurst ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,3 @@
{ python3Packages }:
python3Packages.toPythonApplication python3Packages.langgraph-cli

View File

@@ -0,0 +1,88 @@
{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
installShellFiles,
pkg-config,
openssl,
}:
rustPlatform.buildRustPackage rec {
pname = "languagetool-rust";
version = "2.1.5";
src = fetchFromGitHub {
owner = "jeertmans";
repo = "languagetool-rust";
rev = "v${version}";
hash = "sha256-8YgSxAF4DA1r7ylj6rx+fGubvT7MeiRQeowuiu0GWwQ=";
};
cargoHash = "sha256-MIGoGEd/N2qlcawYRLMuac4SexHEMJnOS+FbPFJIsso=";
buildFeatures = [ "full" ];
nativeBuildInputs = [
installShellFiles
pkg-config
];
buildInputs = [ openssl ];
checkFlags = [
# requires network access
"--skip=server::tests::test_server_check_data"
"--skip=server::tests::test_server_check_text"
"--skip=server::tests::test_server_languages"
"--skip=server::tests::test_server_ping"
"--skip=test_match_positions_1"
"--skip=test_match_positions_2"
"--skip=test_match_positions_3"
"--skip=test_match_positions_4"
"--skip=src/lib/lib.rs"
"--skip=test_basic_check_data"
"--skip=test_basic_check_file"
"--skip=test_basic_check_files"
"--skip=test_basic_check_piped"
"--skip=test_basic_check_text"
"--skip=test_check_with_dict"
"--skip=test_check_with_dicts"
"--skip=test_check_with_disabled_categories"
"--skip=test_check_with_disabled_category"
"--skip=test_check_with_disabled_rule"
"--skip=test_check_with_disabled_rules"
"--skip=test_check_with_enabled_categories"
"--skip=test_check_with_enabled_category"
"--skip=test_check_with_enabled_only_category"
"--skip=test_check_with_enabled_only_rule"
"--skip=test_check_with_enabled_only_without_enabled"
"--skip=test_check_with_enabled_rule"
"--skip=test_check_with_enabled_rules"
"--skip=test_check_with_language"
"--skip=test_check_with_picky_level"
"--skip=test_check_with_preferred_variant"
"--skip=test_check_with_preferred_variants"
"--skip=test_check_with_unexisting_language"
"--skip=test_check_with_username_and_key"
"--skip=test_languages"
"--skip=test_ping"
"--skip=test_words"
"--skip=test_words_add"
"--skip=test_words_delete"
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd ltrs \
--bash <($out/bin/ltrs completions bash) \
--fish <($out/bin/ltrs completions fish) \
--zsh <($out/bin/ltrs completions zsh)
'';
meta = with lib; {
description = "LanguageTool API in Rust";
homepage = "https://github.com/jeertmans/languagetool-rust";
license = licenses.mit;
maintainers = with maintainers; [ name-snrl ];
mainProgram = "ltrs";
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchzip,
jre,
makeWrapper,
nixosTests,
}:
stdenv.mkDerivation rec {
pname = "LanguageTool";
version = "6.6";
src = fetchzip {
url = "https://www.languagetool.org/download/${pname}-${version}.zip";
sha256 = "sha256-BNiUIk5h38oEM4IliHdy8rNmZY0frQ1RaFeJ7HI5nOI=";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ jre ];
installPhase = ''
runHook preInstall
mkdir -p $out/share
mv -- * $out/share/
for lt in languagetool{,-commandline,-server};do
makeWrapper ${jre}/bin/java $out/bin/$lt \
--add-flags "-cp $out/share/ -jar $out/share/$lt.jar"
done
makeWrapper ${jre}/bin/java $out/bin/languagetool-http-server \
--add-flags "-cp $out/share/languagetool-server.jar org.languagetool.server.HTTPServer"
runHook postInstall
'';
passthru.tests.languagetool = nixosTests.languagetool;
meta = with lib; {
homepage = "https://languagetool.org";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ edwtjo ];
platforms = jre.meta.platforms;
description = "Proofreading program for English, French German, Polish, and more";
};
}

View File

@@ -0,0 +1,36 @@
diff --git a/lib/LANraragi/Controller/Config.pm b/lib/LANraragi/Controller/Config.pm
index 2cd2c999..0bd8ab6e 100644
--- a/lib/LANraragi/Controller/Config.pm
+++ b/lib/LANraragi/Controller/Config.pm
@@ -50,6 +50,15 @@ sub index {
);
}
+sub make_password_hash {
+ my $ppr = Authen::Passphrase::BlowfishCrypt->new(
+ cost => 8,
+ salt_random => 1,
+ passphrase => shift,
+ );
+ return $ppr->as_rfc2307;
+}
+
# Save the given parameters to the Redis config
sub save_config {
@@ -95,14 +104,7 @@ sub save_config {
my $password = $self->req->param('newpassword');
if ( $password ne "" ) {
- my $ppr = Authen::Passphrase::BlowfishCrypt->new(
- cost => 8,
- salt_random => 1,
- passphrase => $password,
- );
-
- my $pass_hashed = $ppr->as_rfc2307;
- $confhash{password} = $pass_hashed;
+ $confhash{password} = make_password_hash($password);
}
}

View File

@@ -0,0 +1,101 @@
diff --git a/lib/LANraragi.pm b/lib/LANraragi.pm
index e6b833c4..4b90e4c5 100644
--- a/lib/LANraragi.pm
+++ b/lib/LANraragi.pm
@@ -21,6 +21,8 @@ use LANraragi::Utils::Minion;
use LANraragi::Model::Search;
use LANraragi::Model::Config;
+use FindBin;
+
# This method will run once at server start
sub startup {
my $self = shift;
@@ -30,7 +32,7 @@ sub startup {
say "キタ━━━━━━(゚∀゚)━━━━━━!!!!!";
# Load package.json to get version/vername/description
- my $packagejson = decode_json( Mojo::File->new('package.json')->slurp );
+ my $packagejson = decode_json( Mojo::File->new("$FindBin::Bin/../package.json")->slurp );
my $version = $packagejson->{version};
my $vername = $packagejson->{version_name};
diff --git a/lib/LANraragi/Model/Archive.pm b/lib/LANraragi/Model/Archive.pm
index 73e824dd..8bcea29c 100644
--- a/lib/LANraragi/Model/Archive.pm
+++ b/lib/LANraragi/Model/Archive.pm
@@ -13,6 +13,7 @@ use Time::HiRes qw(usleep);
use File::Basename;
use File::Copy "cp";
use File::Path qw(make_path);
+use FindBin;
use LANraragi::Utils::Generic qw(remove_spaces remove_newlines render_api_response);
use LANraragi::Utils::TempFolder qw(get_temp);
@@ -126,7 +127,7 @@ sub serve_thumbnail {
} else {
# If the thumbnail doesn't exist, serve the default thumbnail.
- $self->render_file( filepath => "./public/img/noThumb.png" );
+ $self->render_file( filepath => "$FindBin::Bin/../public/img/noThumb.png" );
}
return;
diff --git a/lib/LANraragi/Utils/Generic.pm b/lib/LANraragi/Utils/Generic.pm
index 14736893..4352f023 100644
--- a/lib/LANraragi/Utils/Generic.pm
+++ b/lib/LANraragi/Utils/Generic.pm
@@ -17,6 +17,8 @@ use Sys::CpuAffinity;
use LANraragi::Utils::TempFolder qw(get_temp);
use LANraragi::Utils::Logging qw(get_logger);
+use FindBin;
+
# Generic Utility Functions.
use Exporter 'import';
our @EXPORT_OK =
@@ -161,7 +163,7 @@ sub start_shinobu {
my $mojo = shift;
my $proc = Proc::Simple->new();
- $proc->start( $^X, "./lib/Shinobu.pm" );
+ $proc->start( $^X, "$FindBin::Bin/../lib/Shinobu.pm" );
$proc->kill_on_destroy(0);
$mojo->LRR_LOGGER->debug( "Shinobu Worker new PID is " . $proc->pid );
@@ -201,7 +203,7 @@ sub get_css_list {
#Get all the available CSS sheets.
my @css;
- opendir( my $dir, "./public/themes" ) or die $!;
+ opendir( my $dir, "$FindBin::Bin/../public/themes" ) or die $!;
while ( my $file = readdir($dir) ) {
if ( $file =~ /.+\.css/ ) { push( @css, $file ); }
}
diff --git a/lib/LANraragi/Utils/Logging.pm b/lib/LANraragi/Utils/Logging.pm
index ee29c507..6bdfc1bd 100644
--- a/lib/LANraragi/Utils/Logging.pm
+++ b/lib/LANraragi/Utils/Logging.pm
@@ -18,7 +18,7 @@ our @EXPORT_OK = qw(get_logger get_plugin_logger get_logdir get_lines_from_file)
# Get the Log folder.
sub get_logdir {
- my $log_folder = "$FindBin::Bin/../log";
+ my $log_folder = "./log";
# Folder location can be overriden by LRR_LOG_DIRECTORY
if ( $ENV{LRR_LOG_DIRECTORY} ) {
diff --git a/lib/LANraragi/Utils/TempFolder.pm b/lib/LANraragi/Utils/TempFolder.pm
index a5ab8a83..64a56255 100644
--- a/lib/LANraragi/Utils/TempFolder.pm
+++ b/lib/LANraragi/Utils/TempFolder.pm
@@ -13,7 +13,7 @@ our @EXPORT_OK = qw(get_temp);
#Get the current tempfolder.
#This can be called from any process safely as it uses FindBin.
sub get_temp {
- my $temp_folder = "$FindBin::Bin/../temp";
+ my $temp_folder = "./temp";
# Folder location can be overriden by LRR_TEMP_DIRECTORY
if ( $ENV{LRR_TEMP_DIRECTORY} ) {

View File

@@ -0,0 +1,104 @@
diff --git a/tools/install.pl b/tools/install.pl
index 9e155f0..a63de58 100644
--- a/tools/install.pl
+++ b/tools/install.pl
@@ -9,6 +9,7 @@ use Config;
use feature qw(say);
use File::Path qw(make_path);
+use File::Copy qw(copy);
#Vendor dependencies
my @vendor_css = (
@@ -90,33 +91,6 @@ if ( $ENV{HOMEBREW_FORMULA_PREFIX} ) {
$cpanopt = " -l " . $ENV{HOMEBREW_FORMULA_PREFIX} . "/libexec";
}
-#Load IPC::Cmd
-install_package( "IPC::Cmd", $cpanopt );
-install_package( "Config::AutoConf", $cpanopt );
-IPC::Cmd->import('can_run');
-require Config::AutoConf;
-
-
-say("\r\nWill now check if all LRR software dependencies are met. \r\n");
-
-#Check for Redis
-say("Checking for Redis...");
-can_run('redis-server')
- or die 'NOT FOUND! Please install a Redis server before proceeding.';
-say("OK!");
-
-#Check for GhostScript
-say("Checking for GhostScript...");
-can_run('gs')
- or warn 'NOT FOUND! PDF support will not work properly. Please install the "gs" tool.';
-say("OK!");
-
-#Check for libarchive
-say("Checking for libarchive...");
-Config::AutoConf->new()->check_header("archive.h")
- or die 'NOT FOUND! Please install libarchive and ensure its headers are present.';
-say("OK!");
-
#Check for PerlMagick
say("Checking for ImageMagick/PerlMagick...");
my $imgk;
@@ -136,37 +110,11 @@ if ($@) {
say("OK!");
}
-#Build & Install CPAN Dependencies
-if ( $back || $full ) {
- say("\r\nInstalling Perl modules... This might take a while.\r\n");
-
- if ( $Config{"osname"} ne "darwin" ) {
- say("Installing Linux::Inotify2 for non-macOS systems... (This will do nothing if the package is there already)");
-
- install_package( "Linux::Inotify2", $cpanopt );
- }
-
- if ( system( "cpanm --installdeps ./tools/. --notest" . $cpanopt ) != 0 ) {
- die "Something went wrong while installing Perl modules - Bailing out.";
- }
-}
-
#Clientside Dependencies with Provisioning
if ( $front || $full ) {
- say("\r\nObtaining remote Web dependencies...\r\n");
-
- my $npmcmd = $legacy ? "npm install" : "npm ci";
- if ( system($npmcmd) != 0 ) {
- die "Something went wrong while obtaining node modules - Bailing out.";
- }
-
say("\r\nProvisioning...\r\n");
- #Load File::Copy
- install_package( "File::Copy", $cpanopt );
- File::Copy->import("copy");
-
make_path getcwd . "/public/css/vendor";
make_path getcwd . "/public/css/webfonts";
make_path getcwd . "/public/js/vendor";
@@ -213,19 +161,3 @@ sub cp_node_module {
}
-sub install_package {
-
- my $package = $_[0];
- my $cpanopt = $_[1];
-
- ## no critic
- eval "require $package"; #Run-time evals are needed here to check if the package has been properly installed.
- ## use critic
-
- if ($@) {
- say("$package not installed! Trying to install now using cpanm$cpanopt");
- system("cpanm $package $cpanopt");
- } else {
- say("$package package installed, proceeding...");
- }
-}

View File

@@ -0,0 +1,137 @@
{
lib,
stdenv,
buildNpmPackage,
fetchFromGitHub,
makeBinaryWrapper,
perl,
ghostscript,
nixosTests,
}:
buildNpmPackage rec {
pname = "lanraragi";
version = "0.9.41";
src = fetchFromGitHub {
owner = "Difegue";
repo = "LANraragi";
tag = "v.${version}";
hash = "sha256-HF2g8rrcV6f6ZTKmveS/yjil/mBxpvRUFyauv5f+qQ8=";
};
patches = [
./install.patch
./fix-paths.patch
./expose-password-hashing.patch # Used by the NixOS module
];
npmDepsHash = "sha256-RAjZGuK0C6R22fVFq82GPQoD1HpRs3MYMluUAV5ZEc8=";
nativeBuildInputs = [
perl
perl.pkgs.Appcpanminus
makeBinaryWrapper
];
buildInputs =
with perl.pkgs;
[
perl
ImageMagick
locallib
Redis
Encode
ArchiveLibarchiveExtract
ArchiveLibarchivePeek
ListMoreUtils
NetDNSNative
SortNaturally
AuthenPassphrase
FileReadBackwards
URI
LogfileRotate
Mojolicious
MojoliciousPluginTemplateToolkit
MojoliciousPluginRenderFile
MojoliciousPluginStatus
IOSocketSocks
IOSocketSSL
CpanelJSONXS
Minion
MinionBackendRedis
ProcSimple
ParallelLoops
SysCpuAffinity
FileChangeNotify
ModulePluggable
TimeLocal
YAMLPP
StringSimilarity
CHI
CacheFastMmap
LocaleMaketextLexicon
]
++ lib.optionals stdenv.hostPlatform.isLinux [ LinuxInotify2 ];
buildPhase = ''
runHook preBuild
# Check if every perl dependency was installed
cpanm --installdeps ./tools --notest
perl ./tools/install.pl install-full
rm -r node_modules public/js/vendor/*.map public/css/vendor/*.map
runHook postBuild
'';
doCheck = true;
nativeCheckInputs = with perl.pkgs; [
TestMockObject
TestTrap
TestDeep
];
checkPhase = ''
runHook preCheck
rm tests/plugins.t # Uses network
prove -r -l -v tests
runHook postCheck
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/lanraragi
chmod +x script/launcher.pl
cp -r lib public script templates package.json lrr.conf $out/share/lanraragi
makeWrapper $out/share/lanraragi/script/launcher.pl $out/bin/lanraragi \
--prefix PERL5LIB : $PERL5LIB \
--prefix PATH : ${lib.makeBinPath [ ghostscript ]} \
--run "cp -n --no-preserve=all $out/share/lanraragi/lrr.conf ./lrr.conf 2>/dev/null || true" \
--add-flags "-f $out/share/lanraragi/script/lanraragi"
makeWrapper ${lib.getExe perl} $out/bin/helpers/lrr-make-password-hash \
--prefix PERL5LIB : $out/share/lanraragi/lib:$PERL5LIB \
--add-flags "-e 'use LANraragi::Controller::Config; print LANraragi::Controller::Config::make_password_hash(@ARGV[0])' 2>/dev/null"
runHook postInstall
'';
passthru.tests.module = nixosTests.lanraragi;
meta = {
changelog = "https://github.com/Difegue/LANraragi/releases/tag/${src.tag}";
description = "Web application for archival and reading of manga/doujinshi";
homepage = "https://github.com/Difegue/LANraragi";
license = lib.licenses.mit;
mainProgram = "lanraragi";
maintainers = with lib.maintainers; [ tomasajt ];
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,31 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation rec {
pname = "lao";
version = "0.0.20060226";
src = fetchurl {
url = "mirror://debian/pool/main/f/fonts-${pname}/fonts-${pname}_${version}.orig.tar.xz";
hash = "sha256-DlgdyfhxxzVkNIL+NGsQ+PRlNkCuG3v2OahkIEYx60o=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts
cp Phetsarath_OT.ttf $out/share/fonts
runHook postInstall
'';
meta = with lib; {
description = "TrueType font for Lao language";
license = licenses.gpl2Plus;
maintainers = with lib.maintainers; [ serge ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,96 @@
{
lib,
stdenv,
fetchFromGitHub,
gfortran,
cmake,
shared ? true,
# Compile with ILP64 interface
blas64 ? false,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "liblapack";
version = "3.12.1";
src = fetchFromGitHub {
owner = "Reference-LAPACK";
repo = "lapack";
rev = "v${finalAttrs.version}";
sha256 = "sha256-SfKsvZ07v87tFFd9bnkIEdervyX/ucLfs/TOsl08aKQ=";
};
nativeBuildInputs = [
gfortran
cmake
];
# Configure stage fails on aarch64-darwin otherwise, due to either clang 11 or gfortran 10.
hardeningDisable = lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
"stackprotector"
];
cmakeFlags = [
"-DCMAKE_Fortran_FLAGS=-fPIC"
"-DLAPACKE=ON"
"-DCBLAS=ON"
"-DBUILD_TESTING=ON"
]
++ lib.optional shared "-DBUILD_SHARED_LIBS=ON"
++ lib.optional blas64 "-DBUILD_INDEX64=ON"
# Tries to run host platform binaries during the build
# Will likely be disabled by default in 3.12, see:
# https://github.com/Reference-LAPACK/lapack/issues/757
++ lib.optional (
!stdenv.buildPlatform.canExecute stdenv.hostPlatform
) "-DTEST_FORTRAN_COMPILER=OFF";
passthru = { inherit blas64; };
postInstall =
let
canonicalExtension =
if stdenv.hostPlatform.isLinux then
"${stdenv.hostPlatform.extensions.sharedLibrary}.${lib.versions.major finalAttrs.version}"
else
stdenv.hostPlatform.extensions.sharedLibrary;
in
lib.optionalString blas64 ''
ln -s $out/lib/liblapack64${canonicalExtension} $out/lib/liblapack${canonicalExtension}
ln -s $out/lib/liblapacke64${canonicalExtension} $out/lib/liblapacke${canonicalExtension}
'';
doCheck = true;
# Some CBLAS related tests fail on Darwin:
# 14 - CBLAS-xscblat2 (Failed)
# 15 - CBLAS-xscblat3 (Failed)
# 17 - CBLAS-xdcblat2 (Failed)
# 18 - CBLAS-xdcblat3 (Failed)
# 20 - CBLAS-xccblat2 (Failed)
# 21 - CBLAS-xccblat3 (Failed)
# 23 - CBLAS-xzcblat2 (Failed)
# 24 - CBLAS-xzcblat3 (Failed)
#
# Upstream issue to track:
# * https://github.com/Reference-LAPACK/lapack/issues/440
ctestArgs = lib.optionalString stdenv.hostPlatform.isDarwin "-E '^(CBLAS-(x[sdcz]cblat[23]))$'";
checkPhase = ''
runHook preCheck
ctest ${finalAttrs.ctestArgs}
runHook postCheck
'';
passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
meta = with lib; {
description = "Linear Algebra PACKage";
homepage = "http://www.netlib.org/lapack/";
maintainers = with maintainers; [ markuskowa ];
license = licenses.bsd3;
pkgConfigModules = [ "lapack" ];
platforms = platforms.all;
};
})

View File

@@ -0,0 +1,136 @@
{
lib,
stdenv,
lapack-reference,
openblas,
isILP64 ? false,
lapackProvider ? openblas,
}:
let
libraryExtension = stdenv.hostPlatform.extensions.sharedLibrary or ".a";
version = "3";
canonicalExtension =
if stdenv.hostPlatform.isLinux then
if stdenv.hostPlatform.extensions ? sharedLibrary then
"${stdenv.hostPlatform.extensions.sharedLibrary}.${version}"
else
".a"
else
libraryExtension;
lapackImplementation = lib.getName lapackProvider;
lapackProvider' =
if lapackImplementation == "mkl" then
lapackProvider
else
lapackProvider.override { blas64 = isILP64; };
in
assert isILP64 -> lapackImplementation == "mkl" || lapackProvider'.blas64;
stdenv.mkDerivation {
pname = "lapack";
inherit version;
outputs = [
"out"
"dev"
];
meta = (lapackProvider'.meta or { }) // {
description = "${lib.getName lapackProvider'} with just the LAPACK C and FORTRAN ABI";
};
passthru = {
inherit isILP64;
provider = lapackProvider';
implementation = lapackImplementation;
};
# TODO: drop this forced rebuild, as it was needed just once.
rebuild_salt =
if stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64 then "J4AQ" else null;
dontBuild = true;
dontConfigure = true;
unpackPhase = "src=$PWD";
dontPatchELF = true;
installPhase = (
''
mkdir -p $out/lib $dev/include $dev/lib/pkgconfig
liblapack="${lib.getLib lapackProvider'}/lib/liblapack${canonicalExtension}"
if ! [ -e "$liblapack" ]; then
echo "$liblapack does not exist, ${lapackProvider'.name} does not provide liblapack."
exit 1
fi
cp -L "$liblapack" $out/lib/liblapack${canonicalExtension}
chmod +w $out/lib/liblapack${canonicalExtension}
''
+ (lib.optionalString (stdenv.hostPlatform.isElf && !stdenv.hostPlatform.isStatic) ''
patchelf --set-soname liblapack${canonicalExtension} $out/lib/liblapack${canonicalExtension}
patchelf --set-rpath "$(patchelf --print-rpath $out/lib/liblapack${canonicalExtension}):${lapackProvider'}/lib" $out/lib/liblapack${canonicalExtension}
'')
+ ''
if [ "$out/lib/liblapack${canonicalExtension}" != "$out/lib/liblapack${libraryExtension}" ]; then
ln -s $out/lib/liblapack${canonicalExtension} "$out/lib/liblapack${libraryExtension}"
fi
install -D ${lib.getDev lapack-reference}/include/lapack.h $dev/include/lapack.h
cat <<EOF > $dev/lib/pkgconfig/lapack.pc
Name: lapack
Version: ${version}
Description: LAPACK FORTRAN implementation
Cflags: -I$dev/include
Libs: -L$out/lib -llapack
EOF
liblapacke="${lib.getLib lapackProvider'}/lib/liblapacke${canonicalExtension}"
if ! [ -e "$liblapacke" ]; then
echo "$liblapacke does not exist, ${lapackProvider'.name} does not provide liblapacke."
exit 1
fi
cp -L "$liblapacke" $out/lib/liblapacke${canonicalExtension}
chmod +w $out/lib/liblapacke${canonicalExtension}
''
+ (lib.optionalString (stdenv.hostPlatform.isElf && !stdenv.hostPlatform.isStatic) ''
patchelf --set-soname liblapacke${canonicalExtension} $out/lib/liblapacke${canonicalExtension}
patchelf --set-rpath "$(patchelf --print-rpath $out/lib/liblapacke${canonicalExtension}):${lib.getLib lapackProvider'}/lib" $out/lib/liblapacke${canonicalExtension}
'')
+ ''
if [ -f "$out/lib/liblapacke.so.3" ]; then
ln -s $out/lib/liblapacke.so.3 $out/lib/liblapacke.so
fi
cp ${lib.getDev lapack-reference}/include/lapacke{,_mangling,_config,_utils}.h $dev/include
cat <<EOF > $dev/lib/pkgconfig/lapacke.pc
Name: lapacke
Version: ${version}
Description: LAPACK C implementation
Cflags: -I$dev/include
Libs: -L$out/lib -llapacke
EOF
''
+ lib.optionalString (lapackImplementation == "mkl") ''
mkdir -p $out/nix-support
echo 'export MKL_INTERFACE_LAYER=${lib.optionalString isILP64 "I"}LP64,GNU' > $out/nix-support/setup-hook
ln -s $out/lib/liblapack${canonicalExtension} $out/lib/libmkl_rt${libraryExtension}
ln -sf ${lapackProvider'}/include/* $dev/include
''
);
}

View File

@@ -0,0 +1,108 @@
{
lib,
stdenv,
fetchFromGitHub,
nix-update-script,
rustPlatform,
cmake,
pkg-config,
perl,
python3,
fontconfig,
glib,
gtk3,
openssl,
libGL,
libxkbcommon,
wrapGAppsHook3,
wayland,
gobject-introspection,
xorg,
}:
let
rpathLibs = lib.optionals stdenv.hostPlatform.isLinux [
libGL
libxkbcommon
xorg.libX11
xorg.libXcursor
xorg.libXi
xorg.libXrandr
xorg.libXxf86vm
xorg.libxcb
wayland
];
in
rustPlatform.buildRustPackage rec {
pname = "lapce";
version = "0.4.5";
src = fetchFromGitHub {
owner = "lapce";
repo = "lapce";
tag = "v${version}";
sha256 = "sha256-0mF8JusW/oMjkAaCtL6ySazlWoR+76vRydyVXHbxNRM=";
};
cargoHash = "sha256-Jjul26YTcMSf8szuetX3rU4b1eVsD/SBe1UanIAS1Ew=";
env = {
# Get openssl-sys to use pkg-config
OPENSSL_NO_VENDOR = 1;
# This variable is read by build script, so that Lapce editor knows its version
RELEASE_TAG_NAME = "v${version}";
};
postPatch = ''
substituteInPlace lapce-app/Cargo.toml --replace ", \"updater\"" ""
'';
nativeBuildInputs = [
cmake
pkg-config
perl
python3
wrapGAppsHook3 # FIX: No GSettings schemas are installed on the system
gobject-introspection
];
buildInputs =
rpathLibs
++ [
glib
gtk3
openssl
]
++ lib.optionals stdenv.hostPlatform.isLinux [
fontconfig
];
postInstall =
if stdenv.hostPlatform.isLinux then
''
install -Dm0644 $src/extra/images/logo.svg $out/share/icons/hicolor/scalable/apps/dev.lapce.lapce.svg
install -Dm0644 $src/extra/linux/dev.lapce.lapce.desktop $out/share/applications/lapce.desktop
$STRIP -S $out/bin/lapce
patchelf --add-rpath "${lib.makeLibraryPath rpathLibs}" $out/bin/lapce
''
else
''
mkdir $out/Applications
cp -r extra/macos/Lapce.app $out/Applications
ln -s $out/bin $out/Applications/Lapce.app/Contents/MacOS
'';
dontPatchELF = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Lightning-fast and Powerful Code Editor written in Rust";
homepage = "https://github.com/lapce/lapce";
changelog = "https://github.com/lapce/lapce/releases/tag/v${version}";
license = with lib.licenses; [ asl20 ];
mainProgram = "lapce";
};
}

3941
pkgs/by-name/la/laravel/composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,45 @@
{
lib,
fetchFromGitHub,
makeWrapper,
php,
nodejs,
}:
php.buildComposerProject2 (finalAttrs: {
pname = "laravel";
version = "5.19.0";
src = fetchFromGitHub {
owner = "laravel";
repo = "installer";
tag = "v${finalAttrs.version}";
hash = "sha256-k1A3Ro8Zeu4nzjp7rWW11R0ijfp+Wo/29CESDliimTs=";
};
nativeBuildInputs = [ makeWrapper ];
composerLock = ./composer.lock;
vendorHash = "sha256-ioYwWKRSeUixxI3Jq8XmnDOsGtvHK9ZF2qJXgL6AD2Y=";
# Adding npm (nodejs) and php composer to path
postInstall = ''
wrapProgram $out/bin/laravel \
--suffix PATH : ${
lib.makeBinPath [
php.packages.composer
nodejs
]
}
'';
passthru.updateScript = ./update.sh;
meta = {
description = "Laravel application installer";
homepage = "https://laravel.com/docs#creating-a-laravel-project";
changelog = "https://github.com/laravel/installer/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
mainProgram = "laravel";
maintainers = with lib.maintainers; [ heisfer ];
};
})

View File

@@ -0,0 +1,29 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq php.packages.composer nix-update coreutils
set -eou pipefail
PACKAGE_NAME="laravel"
PACKAGE_VERSION=$(nix eval --raw -f. $PACKAGE_NAME.version)
PACKAGE_DIR="$(dirname "${BASH_SOURCE[0]}")"
# Get latest version from git
GIT_VERSION="$(curl --silent ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} "https://api.github.com/repos/laravel/installer/releases/latest" | jq '.tag_name' --raw-output)"
NEW_VERSION="${GIT_VERSION#v}"
# Fail if package and git version are the same
if [[ "$PACKAGE_VERSION" == "$NEW_VERSION" ]]; then
echo "${PACKAGE_NAME} is up-to-date: ${PACKAGE_VERSION}"
exit 0
fi
# Generate composer.lock file
TMPDIR=$(mktemp -d)
trap 'rm -rf -- "${TMPDIR}"' EXIT
git clone --depth 1 --branch "${GIT_VERSION}" https://github.com/laravel/installer.git "${TMPDIR}/laravel"
composer -d "${TMPDIR}/laravel" install
cp "${TMPDIR}/laravel/composer.lock" "${PACKAGE_DIR}/composer.lock"
# update package.nix version, hash and vendorHash
nix-update $PACKAGE_NAME --version="${NEW_VERSION}"

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchurl,
imake,
gccmakedep,
libX11,
libXext,
libXmu,
}:
stdenv.mkDerivation rec {
pname = "larswm";
version = "7.5.3";
src = fetchurl {
url = "mirror://sourceforge/larswm/larswm-${version}.tar.gz";
sha256 = "1xmlx9g1nhklxjrg0wvsya01s4k5b9fphnpl9zdwp29mm484ni3v";
};
nativeBuildInputs = [
imake
gccmakedep
];
buildInputs = [
libX11
libXext
libXmu
];
makeFlags = [
"BINDIR=$(out)/bin"
"MANPATH=$(out)/share/man"
];
installTargets = [
"install"
"install.man"
];
meta = {
homepage = "http://www.fnurt.net/larswm";
description = "9wm-like tiling window manager";
license = lib.licenses.free;
platforms = lib.platforms.linux;
};
}

View File

@@ -0,0 +1,67 @@
{
fetchurl,
lib,
stdenv,
pkg-config,
intltool,
gobject-introspection,
glib,
gdk-pixbuf,
libxml2,
cairo,
pango,
gnome,
}:
stdenv.mkDerivation rec {
pname = "lasem";
version = "0.4.4";
outputs = [
"bin"
"out"
"dev"
"man"
"doc"
"devdoc"
];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0fds3fsx84ylsfvf55zp65y8xqjj5n8gbhcsk02vqglivk7izw4v";
};
nativeBuildInputs = [
pkg-config
intltool
gobject-introspection
];
propagatedBuildInputs = [
glib
gdk-pixbuf
libxml2
cairo
pango
];
enableParallelBuilding = true;
doCheck = true;
passthru = {
updateScript = gnome.updateScript {
packageName = pname;
versionPolicy = "odd-unstable";
};
};
meta = {
description = "SVG and MathML rendering library";
mainProgram = "lasem-render-0.4";
homepage = "https://github.com/LasemProject/lasem";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,11 @@
diff -rupN liblash/lash.c lash-0.5.4/liblash/lash.c
--- a/liblash/lash.c 2007-03-09 10:34:40.000000000 -0500
+++ b/liblash/lash.c 2012-07-22 18:17:46.003963521 -0400
@@ -22,6 +22,7 @@
#include <string.h>
#include <strings.h>
#include <pthread.h>
+#include <sys/resource.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/socket.h>

View File

@@ -0,0 +1,62 @@
{
lib,
stdenv,
fetchurl,
alsa-lib,
gtk2,
libjack2,
libuuid,
libxml2,
makeWrapper,
pkg-config,
readline,
}:
stdenv.mkDerivation rec {
pname = "lash";
version = "0.5.4";
src = fetchurl {
url = "mirror://savannah/lash/${pname}-${version}.tar.gz";
sha256 = "05kc4brcx8mncai0rj2gz4s4bsrsy9q8xlnaddf75i0m8jl7snhh";
};
# http://permalink.gmane.org/gmane.linux.redhat.fedora.extras.cvs/822346
patches = [
./socket.patch
./gcc-47.patch
];
nativeBuildInputs = [
pkg-config
makeWrapper
];
buildInputs = [
alsa-lib
gtk2
libjack2
libxml2
readline
];
propagatedBuildInputs =
assert libuuid != null;
[ libuuid ];
NIX_LDFLAGS = "-lm -lpthread -luuid";
postInstall = ''
for i in lash_control lash_panel
do wrapProgram "$out/bin/$i" --prefix LD_LIBRARY_PATH ":" "${libuuid}/lib"
done
'';
meta = with lib; {
description = "Linux Audio Session Handler";
longDescription = ''
Session management system for GNU/Linux audio applications.
'';
homepage = "https://www.nongnu.org/lash";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,16 @@
Via http://bugs.gentoo.org/show_bug.cgi?id=229603
--- lash-0.5.4/liblash/socket.c 2008-06-26 15:20:44.227064193 +0200
+++ lash-0.5.4/liblash/socket.c 2008-06-26 15:21:18.245063129 +0200
@@ -20,6 +20,11 @@
#define _POSIX_SOURCE /* addrinfo */
+#ifdef LASH_BUILD
+#define _GNU_SOURCE
+#include "config.h"
+#endif /* LASH_BUILD */
+
#include <stdint.h>
#include <sys/types.h>
#include <sys/socket.h>

View File

@@ -0,0 +1,12 @@
diff --git a/lasso/xml/tools.c b/lasso/xml/tools.c
index 385858d174..bbc87d9f1e 100644
--- a/lasso/xml/tools.c
+++ b/lasso/xml/tools.c
@@ -47,6 +47,7 @@
#include <libxml/xmlIO.h>
#include <openssl/evp.h>
+#include <openssl/pem.h>
#include <xmlsec/base64.h>
#include <xmlsec/crypto.h>

View File

@@ -0,0 +1,53 @@
From 1bf9184e1208e805f70ccb8ba06b4c3d63a1a04a Mon Sep 17 00:00:00 2001
From: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Wed, 24 Jan 2024 15:15:39 +0100
Subject: [PATCH] misc: adjust to structured error callback argument change in
libxml2 2.12 (#86080)
---
lasso/lasso.c | 8 +++++++-
lasso/xml/tools.c | 9 ++++++++-
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/lasso/lasso.c b/lasso/lasso.c
index 9902512f..7ea5df44 100644
--- a/lasso/lasso.c
+++ b/lasso/lasso.c
@@ -138,7 +138,13 @@ DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
#include "types.c"
static void
-lasso_xml_structured_error_func(G_GNUC_UNUSED void *user_data, xmlErrorPtr error)
+lasso_xml_structured_error_func(G_GNUC_UNUSED void *user_data,
+#if LIBXML_VERSION >= 21200
+ const xmlError *error
+#else
+ xmlErrorPtr error
+#endif
+ )
{
g_log("libxml2", G_LOG_LEVEL_DEBUG, "libxml2: %s", error->message);
}
diff --git a/lasso/xml/tools.c b/lasso/xml/tools.c
index 385858d1..014f4040 100644
--- a/lasso/xml/tools.c
+++ b/lasso/xml/tools.c
@@ -1449,7 +1449,14 @@ lasso_concat_url_query(const char *url, const char *query)
}
}
-static void structuredErrorFunc (void *userData, xmlErrorPtr error) {
+static void structuredErrorFunc (void *userData,
+#if LIBXML_VERSION >= 21200
+ const xmlError *error
+#else
+ xmlErrorPtr error
+#endif
+ )
+{
*(int*)userData = error->code;
}
--
2.49.0

View File

@@ -0,0 +1,81 @@
{
lib,
stdenv,
autoreconfHook,
fetchurl,
fetchpatch,
glib,
gobject-introspection,
gtk-doc,
libtool,
libxml2,
libxslt,
openssl,
pkg-config,
python3,
xmlsec,
zlib,
}:
stdenv.mkDerivation rec {
pname = "lasso";
version = "2.8.2";
src = fetchurl {
url = "https://dev.entrouvert.org/lasso/lasso-${version}.tar.gz";
hash = "sha256-ahgxv9v49CTHUIq6R7BF1RNB7A/ekSLziwuGsJbvUz4=";
};
patches = [
# Fix build with xmlsec 1.3.0
(fetchpatch {
url = "https://git.entrouvert.org/entrouvert/lasso/commit/ffaddeb015a61db3e52c391de00430107a23e2f1.patch";
hash = "sha256-D2npxpIuR/KrNYiKO3KXCvHEb/XVXUKIP0HQUd+w56k=";
})
# Fix GCC 14 implicit declaration of function
# backported patch of https://git.entrouvert.org/entrouvert/lasso/commit/9767cdf7645a146bcc596a705ce32b855855a590
./fix-gcc14-implicit-function-declaration.diff
# Fix GCC 14 incompatible pointer
# backported patch of https://git.entrouvert.org/entrouvert/lasso/commit/cbe2c45455d93ed793dc4be59e3d2d26f1bd1111
./fix-gcc14-incompatible-pointer.diff
# Fix GCC 14 int-conversion (xmlsec)
(fetchpatch {
url = "https://git.entrouvert.org/entrouvert/lasso/commit/66c9f50f1f6b00d621a9a0ca2f924875f94d14ae.patch";
hash = "sha256-UkWxznKx2xAbjY29+NQ+cjIDhWLuyoWsmBTSiLUxWgU=";
})
];
nativeBuildInputs = [
autoreconfHook
pkg-config
python3
gobject-introspection
];
buildInputs = [
glib
gtk-doc
libtool
libxml2
libxslt
openssl
python3.pkgs.six
xmlsec
zlib
];
configurePhase = ''
./configure --with-pkg-config=$PKG_CONFIG_PATH \
--disable-perl \
--prefix=$out
'';
meta = {
homepage = "https://lasso.entrouvert.org/";
description = "Liberty Alliance Single Sign-On library";
changelog = "https://git.entrouvert.org/entrouvert/lasso/raw/tag/v${version}/ChangeLog";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ womfoo ];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation rec {
pname = "last-resort";
version = "17.000";
src = fetchurl {
url = "https://github.com/unicode-org/last-resort-font/releases/download/${version}/LastResortHE-Regular.ttf";
hash = "sha256-OpNv4jeenhZKj5gZCVy/U9kwWi0IUy2b5bSW9L5FvN4=";
};
dontUnpack = true;
installPhase = ''
runHook preInstall
install -D -m 0644 $src $out/share/fonts/truetype/LastResortHE-Regular.ttf
runHook postInstall
'';
meta = with lib; {
description = "Fallback font of last resort";
homepage = "https://github.com/unicode-org/last-resort-font";
license = licenses.ofl;
maintainers = [ ];
};
}

View File

@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitLab,
unzip,
zlib,
python3,
parallel,
}:
stdenv.mkDerivation rec {
pname = "last";
version = "1648";
src = fetchFromGitLab {
owner = "mcfrith";
repo = "last";
rev = "refs/tags/${version}";
hash = "sha256-U1FGP6jzB36HLwTFKm/VMZWPPjo6mVuV/ePhGIkQgpg=";
};
nativeBuildInputs = [
unzip
];
buildInputs = [
zlib
python3
];
makeFlags = [
"prefix=${placeholder "out"}"
];
postFixup = ''
for f in $out/bin/parallel-* ; do
sed -i 's|parallel |${parallel}/bin/parallel |' $f
done
'';
meta = with lib; {
description = "Genomic sequence aligner";
homepage = "https://gitlab.com/mcfrith/last";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ jbedo ];
platforms = platforms.x86_64;
};
}

View File

@@ -0,0 +1,58 @@
{
lib,
fetchzip,
stdenvNoCC,
writeShellApplication,
curl,
xmlstarlet,
common-updater-scripts,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "lastfm";
version = "2.1.39";
src = fetchzip {
extension = "zip";
name = "Last.fm.app";
url = "https://cdn.last.fm/client/Mac/Last.fm-${finalAttrs.version}.zip";
hash = "sha256-jxFh0HbY4g5xcvAI20b92dL1FRvRqPwBBa0Cv9k63+s=";
};
dontConfigure = true;
dontBuild = true;
sourceRoot = ".";
installPhase = ''
runHook preInstall
mkdir -p "$out/Applications"
cp -r *.app "$out/Applications"
runHook postInstall
'';
passthru.updateScript = lib.getExe (writeShellApplication {
name = "lastfm-update-script";
runtimeInputs = [
curl
xmlstarlet
common-updater-scripts
];
text = ''
url=$(curl --silent "https://cdn.last.fm/client/Mac/updates.xml")
version=$(echo "$url" | xmlstarlet sel -t -v "substring-before(substring-after(//enclosure/@url, 'version='), '&')")
update-source-version lastfm "$version"
'';
});
meta = {
description = "Music services manager";
homepage = "https://www.last.fm/";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ iivusly ];
platforms = lib.platforms.darwin;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})

View File

@@ -0,0 +1,60 @@
{
stdenv,
lib,
fetchFromGitHub,
asciidoc,
cmake,
docbook_xsl,
pkg-config,
bash-completion,
openssl,
curl,
libxml2,
libxslt,
}:
stdenv.mkDerivation rec {
pname = "lastpass-cli";
version = "1.6.1";
src = fetchFromGitHub {
owner = "lastpass";
repo = "lastpass-cli";
rev = "v${version}";
sha256 = "sha256-Q0ZG5Ehg29STLeAerMoLfzjaH9JyPk7269RgiPmDJV8=";
};
nativeBuildInputs = [
asciidoc
cmake
docbook_xsl
pkg-config
];
buildInputs = [
bash-completion
curl
openssl
libxml2
libxslt
];
installTargets = [
"install"
"install-doc"
];
postInstall = ''
install -Dm644 -T ../contrib/lpass_zsh_completion $out/share/zsh/site-functions/_lpass
install -Dm644 -T ../contrib/completions-lpass.fish $out/share/fish/vendor_completions.d/lpass.fish
install -Dm755 -T ../contrib/examples/git-credential-lastpass $out/bin/git-credential-lastpass
'';
meta = with lib; {
description = "Stores, retrieves, generates, and synchronizes passwords securely";
homepage = "https://github.com/lastpass/lastpass-cli";
license = licenses.gpl2Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ vinylen ];
};
}

View File

@@ -0,0 +1,4 @@
{ python3Packages }:
with python3Packages;
toPythonApplication lastversion

View File

@@ -0,0 +1,66 @@
{
lib,
fetchFromGitHub,
stdenv,
fetchYarnDeps,
nodejs,
fixup-yarn-lock,
yarn,
yarnConfigHook,
yarnBuildHook,
makeWrapper,
}:
stdenv.mkDerivation rec {
pname = "lasuite-docs-collaboration-server";
version = "3.6.0";
src = fetchFromGitHub {
owner = "suitenumerique";
repo = "docs";
tag = "v${version}";
hash = "sha256-8bD+rBEN0GEQz3tiPEQYmf/mpijPefFmQchGhYkVBVY=";
};
sourceRoot = "source/src/frontend";
offlineCache = fetchYarnDeps {
yarnLock = "${src}/src/frontend/yarn.lock";
hash = "sha256-b4JBjJUB1i9jYSy+RFkXKmq6rzp28xHLdPNSH0QO1Ek=";
};
nativeBuildInputs = [
nodejs
fixup-yarn-lock
yarn
yarnConfigHook
yarnBuildHook
makeWrapper
];
yarnBuildScript = "COLLABORATION_SERVER";
yarnBuildFlags = "run build";
installPhase = ''
runHook preInstall
mkdir -p $out/{lib,bin}
cp -r {apps,node_modules,packages,servers} $out/lib
makeWrapper ${lib.getExe nodejs} "$out/bin/docs-collaboration-server" \
--add-flags "$out/lib/servers/y-provider/dist/start-server.js" \
--set NODE_PATH "$out/lib/node_modules"
runHook postInstall
'';
meta = {
description = "Collaborative note taking, wiki and documentation platform that scales. Built with Django and React. Opensource alternative to Notion or Outline";
homepage = "https://github.com/suitenumerique/docs";
changelog = "https://github.com/suitenumerique/docs/blob/${src.tag}/CHANGELOG.md";
mainProgram = "docs-collaboration-server";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ soyouzpanda ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,57 @@
{
lib,
fetchFromGitHub,
stdenv,
fetchYarnDeps,
nodejs,
fixup-yarn-lock,
yarn,
yarnConfigHook,
yarnBuildHook,
}:
stdenv.mkDerivation rec {
pname = "lasuite-docs-frontend";
version = "3.6.0";
src = fetchFromGitHub {
owner = "suitenumerique";
repo = "docs";
tag = "v${version}";
hash = "sha256-8bD+rBEN0GEQz3tiPEQYmf/mpijPefFmQchGhYkVBVY=";
};
sourceRoot = "source/src/frontend";
offlineCache = fetchYarnDeps {
yarnLock = "${src}/src/frontend/yarn.lock";
hash = "sha256-b4JBjJUB1i9jYSy+RFkXKmq6rzp28xHLdPNSH0QO1Ek=";
};
nativeBuildInputs = [
nodejs
fixup-yarn-lock
yarn
yarnConfigHook
yarnBuildHook
];
yarnBuildScript = "app:build";
installPhase = ''
runHook preInstall
cp -r apps/impress/out/ $out
runHook postInstall
'';
meta = {
description = "Collaborative note taking, wiki and documentation platform that scales. Built with Django and React. Opensource alternative to Notion or Outline";
homepage = "https://github.com/suitenumerique/docs";
changelog = "https://github.com/suitenumerique/docs/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ soyouzpanda ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,157 @@
{
stdenv,
lib,
python3,
fetchFromGitHub,
nixosTests,
fetchPypi,
fetchYarnDeps,
nodejs,
yarnBuildHook,
yarnConfigHook,
}:
let
python = python3.override {
self = python3;
packageOverrides = self: super: {
django = super.django_5_2;
django-csp = super.django-csp.overridePythonAttrs rec {
version = "4.0";
src = fetchPypi {
inherit version;
pname = "django_csp";
hash = "sha256-snAQu3Ausgo9rTKReN8rYaK4LTOLcPvcE8OjvShxKDM=";
};
};
};
};
version = "3.6.0";
src = fetchFromGitHub {
owner = "suitenumerique";
repo = "docs";
tag = "v${version}";
hash = "sha256-8bD+rBEN0GEQz3tiPEQYmf/mpijPefFmQchGhYkVBVY=";
};
mail-templates = stdenv.mkDerivation {
name = "lasuite-docs-${version}-mjml";
inherit src;
sourceRoot = "source/src/mail";
env.DOCS_DIR_MAILS = "${placeholder "out"}";
offlineCache = fetchYarnDeps {
yarnLock = "${src}/src/mail/yarn.lock";
hash = "sha256-oyLs7Df+KGzqCW8uF/7uzcL6ecMx8kHMzpuHSSywwfw=";
};
nativeBuildInputs = [
nodejs
yarnConfigHook
yarnBuildHook
];
dontInstall = true;
};
in
python.pkgs.buildPythonApplication rec {
pname = "lasuite-docs";
pyproject = true;
inherit version src;
sourceRoot = "source/src/backend";
patches = [
# Support configuration throught environment variables for SECURE_*
./secure_settings.patch
];
build-system = with python.pkgs; [ setuptools ];
dependencies = with python.pkgs; [
beautifulsoup4
boto3
celery
django
django-configurations
django-cors-headers
django-countries
django-csp
django-extensions
django-filter
django-lasuite
django-parler
django-redis
django-storages
django-timezone-field
django-treebeard
djangorestframework
drf-spectacular
drf-spectacular-sidecar
dockerflow
easy-thumbnails
factory-boy
gunicorn
jsonschema
lxml
markdown
mozilla-django-oidc
nested-multipart-parser
openai
psycopg
pycrdt
pyjwt
pyopenssl
python-magic
redis
requests
sentry-sdk
whitenoise
];
pythonRelaxDeps = true;
postBuild = ''
export DATA_DIR=$(pwd)/data
${python.pythonOnBuildForHost.interpreter} manage.py collectstatic --no-input --clear
'';
postInstall =
let
pythonPath = python.pkgs.makePythonPath dependencies;
in
''
mkdir -p $out/{bin,share}
cp ./manage.py $out/bin/.manage.py
cp -r data/static $out/share
chmod +x $out/bin/.manage.py
makeWrapper $out/bin/.manage.py $out/bin/docs \
--prefix PYTHONPATH : "${pythonPath}"
makeWrapper ${lib.getExe python.pkgs.celery} $out/bin/celery \
--prefix PYTHONPATH : "${pythonPath}:$out/${python.sitePackages}"
makeWrapper ${lib.getExe python.pkgs.gunicorn} $out/bin/gunicorn \
--prefix PYTHONPATH : "${pythonPath}:$out/${python.sitePackages}"
mkdir -p $out/${python.sitePackages}/core/templates
ln -sv ${mail-templates}/ $out/${python.sitePackages}/core/templates/mail
'';
passthru.tests = {
login-and-create-doc = nixosTests.lasuite-docs;
};
meta = {
description = "Collaborative note taking, wiki and documentation platform that scales. Built with Django and React. Opensource alternative to Notion or Outline";
homepage = "https://github.com/suitenumerique/docs";
changelog = "https://github.com/suitenumerique/docs/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ soyouzpanda ];
mainProgram = "docs";
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,36 @@
diff --git a/impress/settings.py b/impress/settings.py
index 9d825095..518aca7f 100755
--- a/impress/settings.py
+++ b/impress/settings.py
@@ -822,19 +822,24 @@ class Production(Base):
#
# In other cases, you should comment the following line to avoid security issues.
# SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
- SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
- SECURE_HSTS_SECONDS = 60
- SECURE_HSTS_PRELOAD = True
- SECURE_HSTS_INCLUDE_SUBDOMAINS = True
- SECURE_SSL_REDIRECT = True
+ SECURE_PROXY_SSL_HEADER = values.TupleValue(("HTTP_X_FORWARDED_PROTO", "https"),
+ environ_name="SECURE_PROXY_SSL_HEADER")
+ SECURE_HSTS_SECONDS = values.IntegerValue(
+ 60, environ_name="SECURE_HSTS_SECONDS")
+ SECURE_HSTS_PRELOAD = values.BooleanValue(
+ True, environ_name="SECURE_HSTS_PRELOAD")
+ SECURE_HSTS_INCLUDE_SUBDOMAINS = values.BooleanValue(
+ True, environ_name="SECURE_HSTS_INCLUDE_SUBDOMAINS")
+ SECURE_SSL_REDIRECT = values.BooleanValue(
+ True, environ_name="SECURE_SSL_REDIRECT")
SECURE_REDIRECT_EXEMPT = [
"^__lbheartbeat__",
"^__heartbeat__",
]
# Modern browsers require to have the `secure` attribute on cookies with `Samesite=none`
- CSRF_COOKIE_SECURE = True
- SESSION_COOKIE_SECURE = True
+ CSRF_COOKIE_SECURE = values.BooleanValue(True, environ_name="CSRF_COOKIE_SECURE")
+ SESSION_COOKIE_SECURE = values.BooleanValue(True, environ_name="SESSION_COOKIE_SECURE")
# Privacy
SECURE_REFERRER_POLICY = "same-origin"

View File

@@ -0,0 +1,51 @@
{
lib,
fetchFromGitHub,
fetchNpmDeps,
buildNpmPackage,
}:
buildNpmPackage rec {
pname = "lasuite-meet-frontend";
version = "0.1.36";
src = fetchFromGitHub {
owner = "suitenumerique";
repo = "meet";
tag = "v${version}";
hash = "sha256-0GfbB1Kk2AdqQtwIiAdyfDS/V7le6DhmBugp1ukWRLc=";
};
sourceRoot = "source/src/frontend";
npmDeps = fetchNpmDeps {
inherit version src;
sourceRoot = "source/src/frontend";
hash = "sha256-EHBfmP94hGx4gpvVZi4hHpJc7edq+cybkum3foL+dAk=";
};
buildPhase = ''
runHook preBuild
npm run build
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -r dist $out
runHook postInstall
'';
meta = {
description = "Open source alternative to Google Meet and Zoom powered by LiveKit: HD video calls, screen sharing, and chat features. Built with Django and React";
homepage = "https://github.com/suitenumerique/meet";
changelog = "https://github.com/suitenumerique/meet/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ soyouzpanda ];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,113 @@
{
lib,
python3,
fetchFromGitHub,
nixosTests,
}:
let
python = python3.override {
self = python3;
packageOverrides = (self: super: { django = super.django_5_2; });
};
in
python.pkgs.buildPythonApplication rec {
pname = "lasuite-meet";
version = "0.1.36";
pyproject = true;
src = fetchFromGitHub {
owner = "suitenumerique";
repo = "meet";
tag = "v${version}";
hash = "sha256-0GfbB1Kk2AdqQtwIiAdyfDS/V7le6DhmBugp1ukWRLc=";
};
sourceRoot = "source/src/backend";
patches = [
# Support configuration throught environment variables for SECURE_*
./secure_settings.patch
];
build-system = with python.pkgs; [ setuptools ];
dependencies = with python.pkgs; [
aiohttp
boto3
brevo-python
brotli
celery
django
django-configurations
django-cors-headers
django-countries
django-extensions
django-lasuite
django-parler
django-redis
django-storages
django-timezone-field
djangorestframework
dockerflow
drf-spectacular
drf-spectacular-sidecar
easy-thumbnails
factory-boy
gunicorn
jsonschema
june-analytics-python
livekit-api
markdown
mozilla-django-oidc
nested-multipart-parser
psycopg
pyjwt
pyopenssl
python-frontmatter
redis
requests
sentry-sdk
whitenoise
];
pythonRelaxDeps = true;
postBuild = ''
export DJANGO_DATA_DIR=$(pwd)/data
${python.pythonOnBuildForHost.interpreter} manage.py collectstatic --noinput --clear
'';
postInstall =
let
pythonPath = python.pkgs.makePythonPath dependencies;
in
''
mkdir -p $out/{bin,share}
cp ./manage.py $out/bin/.manage.py
cp -r data/static $out/share
chmod +x $out/bin/.manage.py
makeWrapper $out/bin/.manage.py $out/bin/meet \
--prefix PYTHONPATH : "${pythonPath}"
makeWrapper ${lib.getExe python.pkgs.celery} $out/bin/celery \
--prefix PYTHONPATH : "${pythonPath}:$out/${python.sitePackages}"
makeWrapper ${lib.getExe python.pkgs.gunicorn} $out/bin/gunicorn \
--prefix PYTHONPATH : "${pythonPath}:$out/${python.sitePackages}"
'';
passthru.tests = {
login-and-create-room = nixosTests.lasuite-meet;
};
meta = {
description = "Open source alternative to Google Meet and Zoom powered by LiveKit: HD video calls, screen sharing, and chat features. Built with Django and React";
homepage = "https://github.com/suitenumerique/meet";
changelog = "https://github.com/suitenumerique/meet/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ soyouzpanda ];
mainProgram = "meet";
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,52 @@
From d7bbf24df5eecb61caebdf55b0d26da60a9d9609 Mon Sep 17 00:00:00 2001
From: soyouzpanda <soyouzpanda@soyouzpanda.fr>
Date: Fri, 16 May 2025 23:41:12 +0200
Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=94=A7(backend)=20allow=20SECURE=20en?=
=?UTF-8?q?vironment=20variables=20to=20be=20configured?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
meet/settings.py | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/meet/settings.py b/meet/settings.py
index ebb0837..9c67986 100755
--- a/meet/settings.py
+++ b/meet/settings.py
@@ -755,19 +755,24 @@ class Production(Base):
# - Your proxy sets the X-Forwarded-Proto header and sends it to Django
#
# In other cases, you should comment the following line to avoid security issues.
- SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
- SECURE_HSTS_SECONDS = 60
- SECURE_HSTS_PRELOAD = True
- SECURE_HSTS_INCLUDE_SUBDOMAINS = True
- SECURE_SSL_REDIRECT = True
+ SECURE_PROXY_SSL_HEADER = values.TupleValue(("HTTP_X_FORWARDED_PROTO", "https"),
+ environ_name="SECURE_PROXY_SSL_HEADER")
+ SECURE_HSTS_SECONDS = values.IntegerValue(
+ 60, environ_name="SECURE_HSTS_SECONDS")
+ SECURE_HSTS_PRELOAD = values.BooleanValue(
+ True, environ_name="SECURE_HSTS_PRELOAD")
+ SECURE_HSTS_INCLUDE_SUBDOMAINS = values.BooleanValue(
+ True, environ_name="SECURE_HSTS_INCLUDE_SUBDOMAINS")
+ SECURE_SSL_REDIRECT = values.BooleanValue(
+ True, environ_name="SECURE_SSL_REDIRECT")
SECURE_REDIRECT_EXEMPT = [
"^__lbheartbeat__",
"^__heartbeat__",
]
# Modern browsers require to have the `secure` attribute on cookies with `Samesite=none`
- CSRF_COOKIE_SECURE = True
- SESSION_COOKIE_SECURE = True
+ CSRF_COOKIE_SECURE = values.BooleanValue(True, environ_name="CSRF_COOKIE_SECURE")
+ SESSION_COOKIE_SECURE = values.BooleanValue(True, environ_name="SESSION_COOKIE_SECURE")
# Privacy
SECURE_REFERRER_POLICY = "same-origin"
--
2.47.2

View File

@@ -0,0 +1,37 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
fixDarwinDylibNames,
}:
stdenv.mkDerivation (finalAttrs: {
version = "3.4.4";
pname = "laszip";
src = fetchFromGitHub {
owner = "LASzip";
repo = "LASzip";
rev = finalAttrs.version;
hash = "sha256-v/oLU69zqDW1o1HTlay7GDh1Kbmv1rarII2Fz5HWCqg=";
};
hardeningDisable = [ "format" ]; # -Werror=format-security
nativeBuildInputs = [
cmake
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
fixDarwinDylibNames
];
meta = {
description = "Turn quickly bulky LAS files into compact LAZ files without information loss";
homepage = "https://laszip.org";
changelog = "https://github.com/LASzip/LASzip/releases/tag/${finalAttrs.src.rev}";
license = lib.licenses.lgpl2;
maintainers = [ lib.maintainers.michelk ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
}:
stdenv.mkDerivation (finalAttrs: {
version = "2.2.0";
pname = "laszip";
src = fetchFromGitHub {
owner = "LASzip";
repo = "LASzip";
rev = "v${finalAttrs.version}";
hash = "sha256-TXzse4oLjNX5R2xDR721iV+gW/rP5z3Zciv4OgxfeqA=";
};
# fix build with cmake v4
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail 'cmake_minimum_required(VERSION 2.6.0)' 'cmake_minimum_required(VERSION 3.10)'
'';
nativeBuildInputs = [ cmake ];
meta = {
description = "Turn quickly bulky LAS files into compact LAZ files without information loss";
homepage = "https://laszip.org";
license = lib.licenses.lgpl2;
maintainers = with lib.maintainers; [ michelk ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,66 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
ghostscript,
netpbm,
perl,
}:
# TODO: withTex
stdenv.mkDerivation rec {
pname = "latex2html";
version = "2025";
src = fetchFromGitHub {
owner = "latex2html";
repo = "latex2html";
rev = "v${version}";
sha256 = "sha256-xylIU2GY/1t9mA8zJzEjHwAIlvVxZmUAUdQ/IXEy+Wg=";
};
buildInputs = [
ghostscript
netpbm
perl
];
nativeBuildInputs = [ makeWrapper ];
configurePhase = ''
runHook preConfigure
./configure \
--prefix="$out" \
--without-mktexlsr \
--with-texpath=$out/share/texmf/tex/latex/html
runHook postConfigure
'';
postInstall = ''
for p in $out/bin/{latex2html,pstoimg}; do \
wrapProgram $p --add-flags '--tmp="''${TMPDIR:-/tmp}"'
done
'';
meta = with lib; {
description = "LaTeX-to-HTML translator";
longDescription = ''
A Perl program that translates LaTeX into HTML (HyperText Markup
Language), optionally creating separate HTML files corresponding to each
unit (e.g., section) of the document. LaTeX2HTML proceeds by interpreting
LaTeX (to the best of its abilities). It contains definitions from a wide
variety of classes and packages, and users may add further definitions by
writing Perl scripts that provide information about class/package
commands.
'';
homepage = "https://www.ctan.org/pkg/latex2html";
license = licenses.gpl2Only;
platforms = with platforms; linux ++ darwin;
maintainers = with maintainers; [ yurrriq ];
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
fetchPypi,
python3Packages,
latexminted,
testers,
}:
python3Packages.buildPythonApplication rec {
pname = "latexminted";
version = "0.6.0";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-WpYo9Ci3rshuVdsbAv4Hjx8vT2FLRinhNsVrcGoPXyU=";
};
build-system = with python3Packages; [
setuptools
];
dependencies = with python3Packages; [
pygments
latex2pydata
latexrestricted
];
passthru = {
tests.version = testers.testVersion { package = latexminted; };
};
meta = {
description = "Python executable for LaTeX minted package";
homepage = "https://pypi.org/project/latexminted";
license = lib.licenses.lppl13c;
mainProgram = "latexminted";
maintainers = with lib.maintainers; [ romildo ];
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
python3,
}:
stdenvNoCC.mkDerivation {
pname = "latexrun";
version = "0-unstable-2015-11-18";
src = fetchFromGitHub {
owner = "aclements";
repo = "latexrun";
rev = "38ff6ec2815654513c91f64bdf2a5760c85da26e";
sha256 = "0xdl94kn0dbp6r7jk82cwxybglm9wp5qwrjqjxmvadrqix11a48w";
};
buildInputs = [ python3 ];
dontBuild = true;
installPhase = ''
mkdir -p $out/bin
cp latexrun $out/bin/latexrun
chmod +x $out/bin/latexrun
'';
meta = with lib; {
description = "21st century LaTeX wrapper";
mainProgram = "latexrun";
homepage = "https://github.com/aclements/latexrun";
license = licenses.mit;
maintainers = [ maintainers.lucus16 ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,49 @@
{
lib,
stdenvNoCC,
fetchzip,
}:
stdenvNoCC.mkDerivation {
pname = "lato";
version = "2.0";
src = fetchzip {
url = "https://www.latofonts.com/download/Lato2OFL.zip";
stripRoot = false;
hash = "sha256-n1TsqigCQIGqyGLGTjLtjHuBf/iCwRlnqh21IHfAuXI=";
};
installPhase = ''
runHook preInstall
install -Dm644 Lato2OFL/*.ttf -t $out/share/fonts/lato
runHook postInstall
'';
meta = with lib; {
homepage = "https://www.latofonts.com/";
description = ''
Sans-serif typeface family designed in Summer 2010 by Łukasz Dziedzic
'';
longDescription = ''
Lato is a sans-serif typeface family designed in the Summer 2010 by
Warsaw-based designer Łukasz Dziedzic ("Lato" means "Summer" in Polish).
In December 2010 the Lato family was published under the open-source Open
Font License by his foundry tyPoland, with support from Google.
In 2013-2014, the family was greatly extended to cover 3000+ glyphs per
style. The Lato 2.010 family now supports 100+ Latin-based languages, 50+
Cyrillic-based languages as well as Greek and IPA phonetics. In the
process, the metrics and kerning of the family have been revised and four
additional weights were created.
'';
license = licenses.ofl;
platforms = platforms.all;
maintainers = with maintainers; [ chris-martin ];
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
stdenv,
fetchurl,
fetchpatch,
gmp,
ntl,
cddlib,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "latte-integrale";
version = "1.7.6";
src = fetchurl {
url = "https://github.com/latte-int/latte/releases/download/version_${
lib.replaceStrings [ "." ] [ "_" ] finalAttrs.version
}/latte-int-${finalAttrs.version}.tar.gz";
hash = "sha256-AGwQ6+XVv9ybFZy6YmSkQyhh/nY84F/oIWJKt9P8IXA=";
};
patches = [
# C++17 compat
(fetchpatch {
url = "https://github.com/latte-int/latte/commit/6dbf7f07d5c9e1f3afe793f782d191d4465088ae.patch";
excludes = [ "code/latte/sqlite/IntegrationDB.h" ];
hash = "sha256-i7c11y54OLuJ0m7PBnhEoAzJzxC842JU7A6TOtTz06k=";
})
];
buildInputs = [
gmp
ntl
cddlib
];
meta = {
description = "Software for counting lattice points and integration over convex polytopes";
homepage = "https://www.math.ucdavis.edu/~latte/";
license = lib.licenses.gpl2;
maintainers = with lib.maintainers; [ amesgen ];
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,147 @@
{
lib,
stdenv,
rpmextract,
patchelf,
makeWrapper,
file,
requireFile,
glib,
zlib,
freetype,
fontconfig,
xorg,
libusb-compat-0_1,
coreutils,
}:
stdenv.mkDerivation {
pname = "diamond";
version = "3.10";
nativeBuildInputs = [
rpmextract
patchelf
makeWrapper
file
];
src = requireFile {
name = "diamond_3_10-base_x64-111-2-x86_64-linux.rpm";
url = "http://www.latticesemi.com/view_document?document_id=52180";
sha256 = "ec0b370cf8bd55831eeed7c5eadcabacbd6e63ac657c20209d672119a07a5c0f";
};
buildCommand = ''
origprefix=usr/local/diamond/3.10_x64
prefix=diamond
echo "Unpacking $src..."
rpmextract $src
# Move $pwd/usr/local/diamond/VERS to $out/diamond, cd.
mkdir -p $out/$prefix
rmdir $out/$prefix
mv $origprefix $out/$prefix
cd $out
# Extract all tarballs.
for tb in \
cae_library/cae_library.tar.gz \
embedded_source/embedded_source.tar.gz \
ispfpga/ispfpga.tar.gz \
synpbase/synpbase.tar.gz \
tcltk/tcltk.tar.gz \
bin/bin.tar.gz \
examples/examples.tar.gz \
data/data.tar.gz ; do
echo "Extracting tarball $prefix/$tb"
cd $out/$prefix/$(dirname $tb)
tar xf $(basename $tb)
rm $(basename $tb)
done
# Patch shebangs in start scripts .
cd $out/$prefix/bin/lin64
for tool in \
programmer \
pgrcmd \
diamond_env \
powercal \
model300 \
update \
diamond \
debugger \
ddtcmd \
cableserver \
revealrva \
ipexpress \
fileutility \
diamond ; do
echo "Patching script $prefix/bin/lin64/$tool..."
patchShebangs $tool
done
# Patch executable ELFs.
for path in bin/lin64 ispfpga/bin/lin64 synpbase/linux_a_64 synpbase/linux_a_64/mbin; do
cd $out/$prefix/$path
for f in *; do
if ! file $f | grep -q "ELF 64-bit LSB executable" ; then
continue
fi
echo "Patching ELF $prefix/$path/$f..."
# We force RPATH otherwise libraries from LD_LIBRARY_PATH (which the
# tools mangle by themselves) will not be able to find their
# dependencies from nix.
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "$libPath:$out/$prefix/bin/lin64:$out/$prefix/ispfpga/bin/lin64" \
--force-rpath \
$f
done
done
# Patch absolute /usr/bin/id path in script
sed -i -e "s#/usr/bin/id#${coreutils}/bin/id#" $out/$prefix/synpbase/bin/config/platform_set
# Remove 32-bit libz.
rm $out/$prefix/bin/lin64/libz.{so,so.1}
# Make wrappers. The purpose of these is just to call the target program
# using its absolute path - otherwise, it will crash.
mkdir -p bin
for tool in diamond pnmainc ddtcmd ; do
makeWrapper $out/$prefix/bin/lin64/$tool $out/bin/$tool
done
'';
libPath = lib.makeLibraryPath [
glib
zlib
freetype
fontconfig
xorg.libSM
xorg.libICE
xorg.libXrender
xorg.libXext
xorg.libX11
xorg.libXt
libusb-compat-0_1
];
meta = {
description = "Vendor development tools for Lattice FPGA devices";
longDescription = ''
Lattice Diamond software is the leading-edge software design environment
for cost- sensitive, low-power Lattice FPGA architectures. It is the
next-generation replacement for ispLEVER.
'';
homepage = "https://www.latticesemi.com/latticediamond";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ q3k ];
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,32 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
}:
stdenvNoCC.mkDerivation {
pname = "laudanum";
version = "1.0-unstable-2017-12-15";
src = fetchFromGitHub {
owner = "junk13";
repo = "laudanum";
rev = "50e1c09d5f23b446c20ecec652c64f9622348364";
hash = "sha256-Od/ciCQ5QM4b/u9nizHosj/zte2pdifO8IDZkrcmIeI=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/share/laudanum
cp -a * $out/share/laudanum/
runHook postInstall
'';
meta = with lib; {
description = "Collection of injectable files, designed to be used in a pentest when SQL injection flaws are found and are in multiple languages for different environments";
homepage = "https://github.com/junk13/laudanum";
maintainers = with maintainers; [ d3vil0p3r ];
platforms = platforms.all;
license = licenses.gpl2Plus;
};
}

View File

@@ -0,0 +1,47 @@
{
acl,
fetchFromGitHub,
lib,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "laurel";
version = "0.7.3";
src = fetchFromGitHub {
owner = "threathunters-io";
repo = "laurel";
tag = "v${version}";
hash = "sha256-4LIv9rdYTPPERgMT8mF6Ymdur9f4tzNkkkMHBePtAH0=";
};
cargoHash = "sha256-AgyCiCsP3iuk0mRXkFAPDbXG12jE7uXfcGblpALbpMA=";
postPatch = ''
# Upstream started to redirect aarch64-unknown-linux-gnu to aarch64-linux-gnu-gcc
# for their CI which breaks compiling on aarch64 in nixpkgs:
# error: linker `aarch64-linux-gnu-gcc` not found
rm .cargo/config.toml
'';
nativeBuildInputs = [ rustPlatform.bindgenHook ];
buildInputs = [ acl ];
checkFlags = [
# Nix' build sandbox does not allow setting ACLs:
# https://github.com/NixOS/nix/blob/2.28.3/src/libstore/unix/build/local-derivation-goal.cc#L1760-L1769
# Skip the tests that are failing with "Operation not supported (os error 95)" because of this:
"--skip=rotate::test::existing"
"--skip=rotate::test::fresh_file"
];
meta = with lib; {
description = "Transform Linux Audit logs for SIEM usage";
homepage = "https://github.com/threathunters-io/laurel";
changelog = "https://github.com/threathunters-io/laurel/releases/tag/${src.tag}";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ emilylange ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,51 @@
{
stdenv,
fetchYarnDeps,
src,
version,
nodejs,
lauti,
yarnConfigHook,
yarnBuildHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lauti";
inherit version src;
offlineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-8+bAqWg6sqWQcjEdhS/tDZ1farY6VQ++lvbAfpwOeRE=";
};
nativeBuildInputs = [
yarnConfigHook
yarnBuildHook
# Needed for executing package.json scripts
nodejs
];
preBuild = ''
cd backstage
'';
installPhase = ''
runHook preInstall
yarn --offline --production install
mkdir -p "$out"
cp -r . $out/
runHook postInstall
'';
meta = {
inherit (lauti.meta)
homepage
description
license
maintainers
;
};
})

View File

@@ -0,0 +1,56 @@
{
lib,
buildGoModule,
fetchFromGitea,
callPackage,
nixosTests,
}:
let
version = "1.1.0";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "Klasse-Methode";
repo = "lauti";
tag = "v${version}";
hash = "sha256-eYIKVQG+Vj2qld/xKbxx0JpNqKhnGSjIOXXc7400BYo=";
};
frontend = callPackage ./frontend.nix { inherit src version; };
in
buildGoModule rec {
pname = "lauti";
inherit version src;
vendorHash = "sha256-4LQ3PvwWAg+/KBQHroj2ZVQZst7jPq99XwLTHClDPCU=";
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
"-X main.revision=${src.rev}"
];
preConfigure = ''
cp -R ${frontend}/. backstage/
'';
preCheck = ''
# Disable test, requires running Docker daemon
rm cmd/lauti/main_test.go
rm service/email/email_test.go
'';
passthru.tests = {
inherit (nixosTests) lauti;
};
meta = {
description = "Open source calendar for events, groups and places";
homepage = "https://lauti.org";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ onny ];
platforms = lib.platforms.unix;
mainProgram = "lauti";
};
}

View File

@@ -0,0 +1,44 @@
{
lib,
fetchFromGitLab,
python3,
}:
python3.pkgs.buildPythonApplication rec {
pname = "lavacli";
version = "2.4";
pyproject = true;
src = fetchFromGitLab {
owner = "lava";
repo = "lavacli";
tag = "v${version}";
hash = "sha256-KNq+UNOC3N+p0HOed2Mdh9EIXLQccH+aepdfJ59Z2oM=";
};
build-system = with python3.pkgs; [
setuptools
];
dependencies = with python3.pkgs; [
aiohttp
jinja2
requests
ruamel-yaml
voluptuous
];
nativeCheckInputs = with python3.pkgs; [
pytestCheckHook
pyzmq
];
meta = {
description = "Command line tool to interact with one or many LAVA instances using XML-RPC";
homepage = "https://lava.gitlab.io/lavacli/";
changelog = "https://gitlab.com/lava/lavacli/-/commits/v${version}?ref_type=tags";
license = lib.licenses.agpl3Only;
teams = [ lib.teams.cyberus ];
mainProgram = "lavacli";
};
}

View File

@@ -0,0 +1,78 @@
{
lib,
cairo,
fetchFromSourcehut,
librsvg,
libxkbcommon,
meson,
ninja,
pkg-config,
scdoc,
stdenv,
wayland,
wayland-protocols,
wayland-scanner,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lavalauncher";
version = "2.1.1";
src = fetchFromSourcehut {
pname = "lavalauncher-source";
inherit (finalAttrs) version;
owner = "~leon_plickat";
repo = "lavalauncher";
rev = "v${finalAttrs.version}";
hash = "sha256-hobhZ6s9m2xCdAurdj0EF1BeS88j96133zu+2jb1FMM=";
};
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [
meson
ninja
pkg-config
scdoc
wayland-scanner
];
buildInputs = [
cairo
librsvg
libxkbcommon
wayland
wayland-protocols
];
strictDeps = true;
meta = {
homepage = "https://git.sr.ht/~leon_plickat/lavalauncher";
description = "Simple launcher panel for Wayland desktops";
longDescription = ''
LavaLauncher is a simple launcher panel for Wayland desktops.
It displays a dynamically sized bar with user defined buttons. Buttons
consist of an image, which is displayed as the button icon on the bar, and
at least one shell command, which is executed when the user activates the
button.
Buttons can be activated with pointer and touch events.
A single LavaLauncher instance can provide multiple such bars, across
multiple outputs.
The Wayland compositor must implement the Layer-Shell and XDG-Output for
LavaLauncher to work.
'';
changelog = "https://git.sr.ht/~leon_plickat/lavalauncher/refs/${finalAttrs.src.rev}";
license = lib.licenses.gpl3Plus;
mainProgram = "lavalauncher";
maintainers = [ ];
inherit (wayland.meta) platforms;
# meson.build:52:23: ERROR: C shared or static library 'rt' not found
# https://logs.ofborg.org/?key=nixos/nixpkgs.340239&attempt_id=1f05cada-67d2-4cfe-b6a8-4bf4571b9375
broken = stdenv.hostPlatform.isDarwin;
};
})

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
makeWrapper,
jdk21,
jdk ? jdk21,
fetchurl,
nixosTests,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lavalink";
version = "4.1.1";
src = fetchurl {
url = "https://github.com/lavalink-devs/Lavalink/releases/download/${finalAttrs.version}/Lavalink.jar";
hash = "sha256-ZR/5YDgbziAqOR8fex3aMzybPmLy/KOGtNM12Zj/ttg=";
};
nativeBuildInputs = [
makeWrapper
];
dontUnpack = true;
installPhase = ''
runHook preInstall
makeWrapper ${lib.getExe jdk} $out/bin/lavalink \
--add-flags "-jar $src"
runHook postInstall
'';
passthru.tests = { inherit (nixosTests) lavalink; };
meta = {
description = "Standalone audio sending node based on Lavaplayer and Koe";
longDescription = ''
A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.
Being used in production by FredBoat, Dyno, LewdBot, and more.
'';
homepage = "https://lavalink.dev/";
changelog = "https://github.com/lavalink-devs/Lavalink/releases/tag/${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ nanoyaki ];
sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
mainProgram = "lavalink";
inherit (jdk.meta) platforms;
};
})

View File

@@ -0,0 +1,52 @@
{
fetchFromGitHub,
gnome-themes-extra,
gtk-engine-murrine,
jdupes,
lib,
sassc,
stdenvNoCC,
}:
stdenvNoCC.mkDerivation rec {
pname = "lavanda-gtk-theme";
version = "2024-04-28";
src = fetchFromGitHub {
owner = "vinceliuice";
repo = "Lavanda-gtk-theme";
rev = version;
hash = "sha256-2ryhdgLHSNXdV9QesdB0rpXkr3i2vVqXWDDC5fNuL1c=";
};
nativeBuildInputs = [
jdupes
sassc
];
buildInputs = [ gnome-themes-extra ];
propagatedUserEnvPkgs = [ gtk-engine-murrine ];
preInstall = ''
mkdir -p $out/share/themes
'';
installPhase = ''
runHook preInstall
bash install.sh -d $out/share/themes
jdupes --quiet --link-soft --recurse $out/share
runHook postInstall
'';
meta = with lib; {
description = "Lavanda gtk theme for linux desktops";
homepage = "https://github.com/vinceliuice/Lavanda-gtk-theme";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ dretyuiop ];
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchFromGitHub,
}:
let
version = "2.2.0";
in
stdenv.mkDerivation {
pname = "lavat";
inherit version;
src = fetchFromGitHub {
owner = "AngelJumbo";
repo = "lavat";
rev = "v${version}";
hash = "sha256-SNRhel2RmaAPqoYpcq7F9e/FcbCJ0E3VJN/G9Ya4TeY=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp lavat $out/bin
runHook postInstall
'';
meta = with lib; {
description = "Lava lamp simulation in the terminal";
longDescription = ''
Lavat puts ascii metaballs in your terminal to make it look a bit like a
lava lamp.
Lavat contains various options, including those to change the color and
speed of the metaballs. For a full list, run `lavat -h`
'';
maintainers = [ maintainers.minion3665 ];
license = licenses.mit;
homepage = "https://github.com/AngelJumbo/lavat";
platforms = platforms.all;
mainProgram = "lavat";
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
nix-update-script,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "layan-cursors";
version = "2021-08-01";
src = fetchFromGitHub {
owner = "vinceliuice";
repo = "Layan-cursors";
tag = finalAttrs.version;
hash = "sha256-Izc5Q3IuM0ryTIdL+GjhRT7JKbznyxS2Fc4pY5dksq4=";
};
installPhase = ''
runHook preInstall
install -dm 0755 $out/share/icons
cp -R dist $out/share/icons/layan-cursors
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Cursor theme inspired by layan gtk theme and based on capitaine-cursors";
changelog = "https://github.com/vinceliuice/Layan-cursors/releases/tag/${finalAttrs.version}/CHANGELOG.md";
homepage = "https://github.com/vinceliuice/Layan-cursors/";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ idlip ];
};
})

View File

@@ -0,0 +1,39 @@
{
stdenv,
fetchFromGitHub,
lib,
gtk-engine-murrine,
}:
stdenv.mkDerivation rec {
pname = "layan-gtk-theme";
version = "2023-05-23";
src = fetchFromGitHub {
owner = "vinceliuice";
repo = "layan-gtk-theme";
rev = version;
sha256 = "sha256-R8QxDMOXzDIfioAvvescLAu6NjJQ9zhf/niQTXZr+yA=";
};
propagatedUserEnvPkgs = [ gtk-engine-murrine ];
postPatch = ''
patchShebangs install.sh
'';
installPhase = ''
runHook preInstall
mkdir -p $out/share/themes
unset name && ./install.sh -d $out/share/themes
runHook postInstall
'';
meta = with lib; {
description = "Flat Material Design theme for GTK 3, GTK 2 and Gnome-Shell";
homepage = "https://github.com/vinceliuice/Layan-gtk-theme";
license = licenses.gpl3Only;
platforms = platforms.linux;
maintainers = [ maintainers.vanilla ];
};
}

View File

@@ -0,0 +1,60 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
nix-update-script,
makeWrapper,
installShellFiles,
writableTmpDirAsHomeHook,
ninja,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "laze";
version = "0.1.38";
src = fetchFromGitHub {
owner = "kaspar030";
repo = "laze";
tag = finalAttrs.version;
hash = "sha256-8n22euQquEuMDcF7TN7rJkBK6jrZuYlRWegiXccWXFY=";
};
cargoHash = "sha256-M0RrtEAs7nYNr3nnISGX+/49PLdxNU0CkIhZn9wRJjU=";
passthru.updateScript = nix-update-script { };
nativeBuildInputs = [
makeWrapper
installShellFiles
writableTmpDirAsHomeHook
];
postInstall = ''
wrapProgram "$out/bin/laze" \
--suffix PATH : ${lib.makeBinPath [ ninja ]}
''
+ lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd laze \
--bash <($out/bin/laze completion --generate bash) \
--fish <($out/bin/laze completion --generate fish) \
--zsh <($out/bin/laze completion --generate zsh)
'';
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "--version";
doInstallCheck = true;
meta = {
description = "Fast, declarative meta build system for C/C++/Rust projects, based on Ninja";
mainProgram = "laze";
homepage = "https://github.com/kaspar030/laze";
changelog = "https://github.com/kaspar030/laze/blob/${finalAttrs.version}/CHANGELOG.md";
license = with lib.licenses; [ asl20 ];
maintainers = with lib.maintainers; [ dannixon ];
};
})

View File

@@ -0,0 +1,87 @@
{
lib,
stdenv,
fetchFromGitHub,
lazarus-qt5,
fpc,
autoPatchelfHook,
libsForQt5,
xorg,
python3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "lazpaint";
version = "7.3";
src = fetchFromGitHub {
owner = "bgrabitmap";
repo = "lazpaint";
tag = "v${finalAttrs.version}";
hash = "sha256-yT1HyvJcYEJgMkQxzCSD8s7/ttemxZaur9T+As8WdIo=";
};
bgrabitmap = fetchFromGitHub {
owner = "bgrabitmap";
repo = "bgrabitmap";
tag = "v11.6.6";
hash = "sha256-bA8tvo7Srm5kIZTVWEA2+gjqHab7LByyL/zqdQxeFlA=";
};
bgracontrols = fetchFromGitHub {
owner = "bgrabitmap";
repo = "bgracontrols";
tag = "v9.0.2";
hash = "sha256-HqX9n4VpOyMwTz3fTweTTqzW+jA2BU62mm/X7Iwjd/8=";
};
nativeBuildInputs = [
lazarus-qt5
fpc
libsForQt5.wrapQtAppsHook
autoPatchelfHook
];
buildInputs = with libsForQt5; [
qtbase
libqtpas
];
runtimeDependencies = [
xorg.libX11
];
preConfigure = ''
patchShebangs --build configure
'';
buildPhase = ''
runHook preBuild
export HOME=$(mktemp -d)
cp -r --no-preserve=mode ${finalAttrs.bgrabitmap} bgrabitmap
cp -r --no-preserve=mode ${finalAttrs.bgracontrols} bgracontrols
lazbuild --lazarusdir=${lazarus-qt5}/share/lazarus \
--build-mode=ReleaseQt5 \
bgrabitmap/bgrabitmap/bgrabitmappack.lpk \
bgracontrols/bgracontrols.lpk \
lazpaintcontrols/lazpaintcontrols.lpk \
lazpaint/lazpaint.lpi
runHook postBuild
'';
# Python is needed for scripts
preFixup = ''
qtWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ python3 ]})
'';
meta = {
description = "Image editor like PaintBrush or Paint.Net";
homepage = "https://lazpaint.github.io";
downloadPage = "https://github.com/bgrabitmap/lazpaint/";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ aleksana ];
mainProgram = "lazpaint";
};
})

View File

@@ -0,0 +1,32 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "lazycli";
version = "0.1.15";
src = fetchFromGitHub {
owner = "jesseduffield";
repo = "lazycli";
rev = "v${version}";
sha256 = "1qq167hc7pp9l0m40ysphfljakmm8hjjnhpldvb0kbc825h0z8z5";
};
cargoHash = "sha256-L6qY1yu+8L7DajX//Yov0KgI2bR8yipSzbZC2c+LZZs=";
checkFlags = [
# currently broken: https://github.com/jesseduffield/lazycli/pull/20
"--skip=command::test_run_command_fail"
];
meta = with lib; {
description = "Tool to static turn CLI commands into TUIs";
homepage = "https://github.com/jesseduffield/lazycli";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
mainProgram = "lazycli";
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
buildGoModule,
fetchFromGitHub,
lazydocker,
testers,
}:
buildGoModule rec {
pname = "lazydocker";
version = "0.24.1";
src = fetchFromGitHub {
owner = "jesseduffield";
repo = "lazydocker";
rev = "v${version}";
sha256 = "sha256-cVjDdrxmGt+hj/WWP9B3BT739k9SSr4ryye5qWb3XNM=";
};
vendorHash = null;
postPatch = ''
rm -f pkg/config/app_config_test.go
'';
excludedPackages = [
"scripts"
"test/printrandom"
];
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
];
passthru.tests.version = testers.testVersion {
package = lazydocker;
};
meta = with lib; {
description = "Simple terminal UI for both docker and docker-compose";
homepage = "https://github.com/jesseduffield/lazydocker";
license = licenses.mit;
maintainers = with maintainers; [
das-g
Br1ght0ne
];
mainProgram = "lazydocker";
};
}

View File

@@ -0,0 +1,53 @@
{
lib,
buildGoModule,
fetchFromGitHub,
lazygit,
testers,
nix-update-script,
}:
buildGoModule rec {
pname = "lazygit";
version = "0.55.1";
src = fetchFromGitHub {
owner = "jesseduffield";
repo = "lazygit";
tag = "v${version}";
hash = "sha256-UofhgILZhVXnYiGpb25m4Ct4sbu5pRmjVgj3oEf5Uyk=";
};
vendorHash = null;
subPackages = [ "." ];
ldflags = [
"-X main.version=${version}"
"-X main.buildSource=nix"
];
passthru = {
tests.version = testers.testVersion { package = lazygit; };
updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"^v([0-9.]+)$"
];
};
};
meta = {
description = "Simple terminal UI for git commands";
homepage = "https://github.com/jesseduffield/lazygit";
changelog = "https://github.com/jesseduffield/lazygit/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
Br1ght0ne
equirosa
khaneliman
starsep
sigmasquadron
];
mainProgram = "lazygit";
};
}

View File

@@ -0,0 +1,55 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
nix-update-script,
}:
buildGoModule (finalAttrs: {
pname = "lazyhetzner";
version = "0.0.6";
src = fetchFromGitHub {
owner = "grammeaway";
repo = "lazyhetzner";
tag = "v${finalAttrs.version}";
hash = "sha256-Hk1ZJ1DMotPVoR77dMb9deVbO/YUjORC+KVYBRIuLH0=";
leaveDotGit = true;
postFetch = ''
cd "$out"
git rev-parse HEAD > $out/COMMIT
date -u -d "@$(git log -1 --pretty=%ct)" "+%Y-%m-%dT%H:%M:%SZ" > $out/SOURCE_DATE_EPOCH
find "$out" -name .git -print0 | xargs -0 rm -rf
'';
};
vendorHash = "sha256-g+HWDhMNrPUsszmosClthEHS60Cp7zjt+50Jt9zqfTE=";
ldflags = [
"-s"
"-w"
"-X github.com/grammeaway/lazyhetzner/cmd.version=v${finalAttrs.version}"
];
preBuild = ''
ldflags+=" -X github.com/grammeaway/lazyhetzner/cmd.commit=$(cat COMMIT)"
ldflags+=" -X github.com/grammeaway/lazyhetzner/cmd.date=$(cat SOURCE_DATE_EPOCH)"
'';
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "version";
passthru.updateScript = nix-update-script { };
meta = {
description = "TUI for managing Hetzner Cloud resources";
homepage = "https://github.com/grammeaway/lazyhetzner";
changelog = "https://github.com/grammeaway/lazyhetzner/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ ryand56 ];
mainProgram = "lazyhetzner";
};
})

View File

@@ -0,0 +1,50 @@
{
lib,
rustPlatform,
fetchFromGitHub,
makeWrapper,
jujutsu,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "lazyjj";
version = "0.6.1";
src = fetchFromGitHub {
owner = "Cretezy";
repo = "lazyjj";
tag = "v${finalAttrs.version}";
hash = "sha256-xpRuXefP2agcZojvAUvODDOFJoEyTiMztJM3VNCeryA=";
};
cargoHash = "sha256-LLbMR3FT5Ci7A9TlhRtU0rpMilXZXb4DH85/R776OQY=";
nativeBuildInputs = [ makeWrapper ];
nativeCheckInputs = [
jujutsu
];
postInstall = ''
wrapProgram $out/bin/lazyjj \
--prefix PATH : ${lib.makeBinPath [ jujutsu ]}
'';
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "--version";
doInstallCheck = true;
meta = {
description = "TUI for Jujutsu/jj";
homepage = "https://github.com/Cretezy/lazyjj";
changelog = "https://github.com/Cretezy/lazyjj/releases/tag/v${finalAttrs.version}";
mainProgram = "lazyjj";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
colemickens
GaetanLepage
];
};
})

View File

@@ -0,0 +1,42 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
}:
let
version = "0.8.1";
in
buildGoModule {
pname = "lazyjournal";
inherit version;
src = fetchFromGitHub {
owner = "Lifailon";
repo = "lazyjournal";
tag = version;
hash = "sha256-QHVwEesJZiySwEPeDZaU56uY+PJEJXCybvAezhwa59g=";
};
vendorHash = "sha256-Wl8DmEBt1YtTk9QEvWybSWRQm0Lnfd5q3C/wg+gP33g=";
ldflags = [
"-s"
"-w"
];
# All checks expect a FHS environment with e.g. log files present,
# which is evidently not possible in a build environment
doCheck = false;
passthru.updateScript = nix-update-script { };
meta = {
description = "TUI for journalctl, file system logs, as well as Docker and Podman containers";
homepage = "https://github.com/Lifailon/lazyjournal";
license = with lib.licenses; [ mit ];
platforms = with lib.platforms; unix ++ windows;
maintainers = with lib.maintainers; [ pluiedev ];
mainProgram = "lazyjournal";
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
rustPlatform,
fetchFromGitHub,
nix-update-script,
}:
rustPlatform.buildRustPackage rec {
pname = "lazymc";
version = "0.2.11";
src = fetchFromGitHub {
owner = "timvisee";
repo = "lazymc";
rev = "v${version}";
hash = "sha256-uMjM3w78qWnB/sNXRcxl30KJRm0I3BPEOr5IRU8FI0s=";
};
cargoHash = "sha256-jqqqWZKO1HgwxLBGMz9rlFQ5xmZTycfUZjqHf+uVTBQ=";
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Remote wake-up daemon for minecraft servers";
homepage = "https://github.com/timvisee/lazymc";
license = licenses.gpl3Only;
maintainers = with maintainers; [
h7x4
dandellion
];
platforms = platforms.unix;
mainProgram = "lazymc";
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule (finalAttrs: {
pname = "lazynpm";
version = "0.1.4";
src = fetchFromGitHub {
owner = "jesseduffield";
repo = "lazynpm";
tag = "v${finalAttrs.version}";
hash = "sha256-tMUM9GzzTwp/C9hET301LrdWJzVSMYabSQxM78WdE9M=";
};
vendorHash = null;
ldflags = [
"-s"
"-w"
"-X=main.version=${finalAttrs.version}"
"-X=main.commit=${finalAttrs.src.rev}"
"-X=main.date=1970-01-01T00:00:00Z"
"-X=main.buildSource=nixpkgs"
];
meta = {
description = "Terminal UI for npm";
homepage = "https://github.com/jesseduffield/lazynpm";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ airrnot ];
mainProgram = "lazynpm";
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
testers,
lazysql,
xorg ? null,
darwin ? null,
}:
buildGoModule rec {
pname = "lazysql";
version = "0.4.2";
src = fetchFromGitHub {
owner = "jorgerojas26";
repo = "lazysql";
rev = "v${version}";
hash = "sha256-6tPSr28Ja7LuwWrcqSYLxxQj8e9XCgTWxzudjXOriBg=";
};
vendorHash = "sha256-NGwCTEh1/5dJWOCSe18FZYYu8v7Mj6MWVEWyNNA1T68=";
ldflags = [
"-X main.version=${version}"
];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ xorg.libX11 ];
passthru.tests.version = testers.testVersion {
package = lazysql;
command = "lazysql --version";
};
meta = with lib; {
description = "Cross-platform TUI database management tool written in Go";
homepage = "https://github.com/jorgerojas26/lazysql";
license = licenses.mit;
maintainers = [ ];
mainProgram = "lazysql";
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
buildGoModule,
fetchFromGitHub,
nix-update-script,
}:
buildGoModule (finalAttrs: {
pname = "lazyssh";
version = "0.2.1";
src = fetchFromGitHub {
owner = "Adembc";
repo = "lazyssh";
tag = "v${finalAttrs.version}";
hash = "sha256-g+arg/fB8YUmMtgVv5dmaYvj0uI1OeFngrHJAcKJkLU=";
};
vendorHash = "sha256-OMlpqe7FJDqgppxt4t8lJ1KnXICOh6MXVXoKkYJ74Ks=";
ldflags = [
"-X=main.version=${finalAttrs.version}"
"-X=main.gitCommit=v${finalAttrs.version}"
];
postInstall = ''
mv $out/bin/cmd $out/bin/lazyssh
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Terminal-based SSH manager";
homepage = "https://github.com/Adembc/lazyssh";
changelog = "https://github.com/Adembc/lazyssh/releases/tag/v${finalAttrs.version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ kpbaks ];
mainProgram = "lazyssh";
};
})